@salla.sa/twilight-components-react 3.0.0-beta.1
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/LICENSE.md +674 -0
- package/README.md +300 -0
- package/dist/__mocks__/salla-components.js +5 -0
- package/dist/__mocks__/salla-components.js.map +1 -0
- package/dist/components/__mocks__/salla-button.js +3 -0
- package/dist/components/__mocks__/salla-button.js.map +1 -0
- package/dist/components/__mocks__/salla-loading.js +3 -0
- package/dist/components/__mocks__/salla-loading.js.map +1 -0
- package/dist/components/__mocks__/salla-placeholder.js +3 -0
- package/dist/components/__mocks__/salla-placeholder.js.map +1 -0
- package/dist/components/components.js +132 -0
- package/dist/components/components.js.map +1 -0
- package/dist/components/salla-accordion-body.js +16 -0
- package/dist/components/salla-accordion-body.js.map +1 -0
- package/dist/components/salla-accordion-head.js +19 -0
- package/dist/components/salla-accordion-head.js.map +1 -0
- package/dist/components/salla-accordion.js +22 -0
- package/dist/components/salla-accordion.js.map +1 -0
- package/dist/components/salla-add-product-button.js +41 -0
- package/dist/components/salla-add-product-button.js.map +1 -0
- package/dist/components/salla-advertisement.js +19 -0
- package/dist/components/salla-advertisement.js.map +1 -0
- package/dist/components/salla-alert.js +20 -0
- package/dist/components/salla-alert.js.map +1 -0
- package/dist/components/salla-app-install-alert.js +19 -0
- package/dist/components/salla-app-install-alert.js.map +1 -0
- package/dist/components/salla-apps-icons.js +22 -0
- package/dist/components/salla-apps-icons.js.map +1 -0
- package/dist/components/salla-badge.js +20 -0
- package/dist/components/salla-badge.js.map +1 -0
- package/dist/components/salla-booking-field.js +22 -0
- package/dist/components/salla-booking-field.js.map +1 -0
- package/dist/components/salla-bottom-alert.js +25 -0
- package/dist/components/salla-bottom-alert.js.map +1 -0
- package/dist/components/salla-bought-together.js +18 -0
- package/dist/components/salla-bought-together.js.map +1 -0
- package/dist/components/salla-breadcrumb.js +19 -0
- package/dist/components/salla-breadcrumb.js.map +1 -0
- package/dist/components/salla-bullet-delivery.js +27 -0
- package/dist/components/salla-bullet-delivery.js.map +1 -0
- package/dist/components/salla-cart-coupons.js +18 -0
- package/dist/components/salla-cart-coupons.js.map +1 -0
- package/dist/components/salla-cart-item-offers.js +24 -0
- package/dist/components/salla-cart-item-offers.js.map +1 -0
- package/dist/components/salla-cart-summary-card.js +18 -0
- package/dist/components/salla-cart-summary-card.js.map +1 -0
- package/dist/components/salla-cart-summary.js +22 -0
- package/dist/components/salla-cart-summary.js.map +1 -0
- package/dist/components/salla-cashback-banner.js +16 -0
- package/dist/components/salla-cashback-banner.js.map +1 -0
- package/dist/components/salla-color-picker.js +36 -0
- package/dist/components/salla-color-picker.js.map +1 -0
- package/dist/components/salla-comment-factors.js +18 -0
- package/dist/components/salla-comment-factors.js.map +1 -0
- package/dist/components/salla-comment-form.js +23 -0
- package/dist/components/salla-comment-form.js.map +1 -0
- package/dist/components/salla-comment-item.js +19 -0
- package/dist/components/salla-comment-item.js.map +1 -0
- package/dist/components/salla-comments.js +31 -0
- package/dist/components/salla-comments.js.map +1 -0
- package/dist/components/salla-conditional-fields.js +19 -0
- package/dist/components/salla-conditional-fields.js.map +1 -0
- package/dist/components/salla-conditional-offer.js +19 -0
- package/dist/components/salla-conditional-offer.js.map +1 -0
- package/dist/components/salla-contacts.js +24 -0
- package/dist/components/salla-contacts.js.map +1 -0
- package/dist/components/salla-cookies-bar.js +23 -0
- package/dist/components/salla-cookies-bar.js.map +1 -0
- package/dist/components/salla-count-down.js +40 -0
- package/dist/components/salla-count-down.js.map +1 -0
- package/dist/components/salla-custom-fields.js +29 -0
- package/dist/components/salla-custom-fields.js.map +1 -0
- package/dist/components/salla-datetime-picker.js +72 -0
- package/dist/components/salla-datetime-picker.js.map +1 -0
- package/dist/components/salla-delivery-promise.js +16 -0
- package/dist/components/salla-delivery-promise.js.map +1 -0
- package/dist/components/salla-drawer.js +33 -0
- package/dist/components/salla-drawer.js.map +1 -0
- package/dist/components/salla-edit-order-button.js +18 -0
- package/dist/components/salla-edit-order-button.js.map +1 -0
- package/dist/components/salla-file-upload.js +66 -0
- package/dist/components/salla-file-upload.js.map +1 -0
- package/dist/components/salla-filters-widget.js +27 -0
- package/dist/components/salla-filters-widget.js.map +1 -0
- package/dist/components/salla-filters.js +24 -0
- package/dist/components/salla-filters.js.map +1 -0
- package/dist/components/salla-fulfillment-methods.js +16 -0
- package/dist/components/salla-fulfillment-methods.js.map +1 -0
- package/dist/components/salla-gifting.js +30 -0
- package/dist/components/salla-gifting.js.map +1 -0
- package/dist/components/salla-hook.js +22 -0
- package/dist/components/salla-hook.js.map +1 -0
- package/dist/components/salla-infinite-scroll.js +25 -0
- package/dist/components/salla-infinite-scroll.js.map +1 -0
- package/dist/components/salla-installment.js +24 -0
- package/dist/components/salla-installment.js.map +1 -0
- package/dist/components/salla-list-tile.js +19 -0
- package/dist/components/salla-list-tile.js.map +1 -0
- package/dist/components/salla-loading.js +21 -0
- package/dist/components/salla-loading.js.map +1 -0
- package/dist/components/salla-localization-modal.js +26 -0
- package/dist/components/salla-localization-modal.js.map +1 -0
- package/dist/components/salla-login-modal.js +30 -0
- package/dist/components/salla-login-modal.js.map +1 -0
- package/dist/components/salla-loyalty-banner.js +16 -0
- package/dist/components/salla-loyalty-banner.js.map +1 -0
- package/dist/components/salla-loyalty-hero.js +20 -0
- package/dist/components/salla-loyalty-hero.js.map +1 -0
- package/dist/components/salla-loyalty-panel.js +20 -0
- package/dist/components/salla-loyalty-panel.js.map +1 -0
- package/dist/components/salla-loyalty-point.js +18 -0
- package/dist/components/salla-loyalty-point.js.map +1 -0
- package/dist/components/salla-loyalty-points-banner.js +16 -0
- package/dist/components/salla-loyalty-points-banner.js.map +1 -0
- package/dist/components/salla-loyalty-points-history.js +16 -0
- package/dist/components/salla-loyalty-points-history.js.map +1 -0
- package/dist/components/salla-loyalty-prize-item.js +18 -0
- package/dist/components/salla-loyalty-prize-item.js.map +1 -0
- package/dist/components/salla-loyalty-program.js +19 -0
- package/dist/components/salla-loyalty-program.js.map +1 -0
- package/dist/components/salla-loyalty-reward.js +23 -0
- package/dist/components/salla-loyalty-reward.js.map +1 -0
- package/dist/components/salla-loyalty.js +31 -0
- package/dist/components/salla-loyalty.js.map +1 -0
- package/dist/components/salla-maintenance-alert.js +19 -0
- package/dist/components/salla-maintenance-alert.js.map +1 -0
- package/dist/components/salla-map.js +36 -0
- package/dist/components/salla-map.js.map +1 -0
- package/dist/components/salla-menu.js +26 -0
- package/dist/components/salla-menu.js.map +1 -0
- package/dist/components/salla-metadata.js +22 -0
- package/dist/components/salla-metadata.js.map +1 -0
- package/dist/components/salla-modal.js +33 -0
- package/dist/components/salla-modal.js.map +1 -0
- package/dist/components/salla-multiple-bundle-product-cart.js +21 -0
- package/dist/components/salla-multiple-bundle-product-cart.js.map +1 -0
- package/dist/components/salla-multiple-bundle-product-details.js +22 -0
- package/dist/components/salla-multiple-bundle-product-details.js.map +1 -0
- package/dist/components/salla-multiple-bundle-product-options-modal.js +26 -0
- package/dist/components/salla-multiple-bundle-product-options-modal.js.map +1 -0
- package/dist/components/salla-multiple-bundle-product-slider.js +28 -0
- package/dist/components/salla-multiple-bundle-product-slider.js.map +1 -0
- package/dist/components/salla-multiple-bundle-product.js +21 -0
- package/dist/components/salla-multiple-bundle-product.js.map +1 -0
- package/dist/components/salla-next-order-coupon.js +16 -0
- package/dist/components/salla-next-order-coupon.js.map +1 -0
- package/dist/components/salla-notification-item.js +18 -0
- package/dist/components/salla-notification-item.js.map +1 -0
- package/dist/components/salla-notifications.js +22 -0
- package/dist/components/salla-notifications.js.map +1 -0
- package/dist/components/salla-offer-modal.js +22 -0
- package/dist/components/salla-offer-modal.js.map +1 -0
- package/dist/components/salla-offer.js +21 -0
- package/dist/components/salla-offer.js.map +1 -0
- package/dist/components/salla-order-branch.js +18 -0
- package/dist/components/salla-order-branch.js.map +1 -0
- package/dist/components/salla-order-cancel.js +19 -0
- package/dist/components/salla-order-cancel.js.map +1 -0
- package/dist/components/salla-order-details-multiple-bundle-product.js +23 -0
- package/dist/components/salla-order-details-multiple-bundle-product.js.map +1 -0
- package/dist/components/salla-order-details-options.js +23 -0
- package/dist/components/salla-order-details-options.js.map +1 -0
- package/dist/components/salla-order-details.js +21 -0
- package/dist/components/salla-order-details.js.map +1 -0
- package/dist/components/salla-order-edit-item.js +22 -0
- package/dist/components/salla-order-edit-item.js.map +1 -0
- package/dist/components/salla-order-edit-product-card.js +18 -0
- package/dist/components/salla-order-edit-product-card.js.map +1 -0
- package/dist/components/salla-order-edit.js +20 -0
- package/dist/components/salla-order-edit.js.map +1 -0
- package/dist/components/salla-order-options-modal.js +19 -0
- package/dist/components/salla-order-options-modal.js.map +1 -0
- package/dist/components/salla-order-summary.js +21 -0
- package/dist/components/salla-order-summary.js.map +1 -0
- package/dist/components/salla-order-totals-card.js +22 -0
- package/dist/components/salla-order-totals-card.js.map +1 -0
- package/dist/components/salla-orders.js +22 -0
- package/dist/components/salla-orders.js.map +1 -0
- package/dist/components/salla-payments.js +21 -0
- package/dist/components/salla-payments.js.map +1 -0
- package/dist/components/salla-placeholder.js +23 -0
- package/dist/components/salla-placeholder.js.map +1 -0
- package/dist/components/salla-price-range.js +25 -0
- package/dist/components/salla-price-range.js.map +1 -0
- package/dist/components/salla-product-availability.js +24 -0
- package/dist/components/salla-product-availability.js.map +1 -0
- package/dist/components/salla-product-card-embed.js +20 -0
- package/dist/components/salla-product-card-embed.js.map +1 -0
- package/dist/components/salla-product-card.js +29 -0
- package/dist/components/salla-product-card.js.map +1 -0
- package/dist/components/salla-product-options.js +40 -0
- package/dist/components/salla-product-options.js.map +1 -0
- package/dist/components/salla-product-size-guide.js +22 -0
- package/dist/components/salla-product-size-guide.js.map +1 -0
- package/dist/components/salla-progress-bar.js +33 -0
- package/dist/components/salla-progress-bar.js.map +1 -0
- package/dist/components/salla-quantity-input.js +31 -0
- package/dist/components/salla-quantity-input.js.map +1 -0
- package/dist/components/salla-quick-buy.js +33 -0
- package/dist/components/salla-quick-buy.js.map +1 -0
- package/dist/components/salla-quick-order.js +29 -0
- package/dist/components/salla-quick-order.js.map +1 -0
- package/dist/components/salla-rating-modal-v2.js +22 -0
- package/dist/components/salla-rating-modal-v2.js.map +1 -0
- package/dist/components/salla-rating-modal.js +23 -0
- package/dist/components/salla-rating-modal.js.map +1 -0
- package/dist/components/salla-rating-stars.js +28 -0
- package/dist/components/salla-rating-stars.js.map +1 -0
- package/dist/components/salla-review-card.js +18 -0
- package/dist/components/salla-review-card.js.map +1 -0
- package/dist/components/salla-review-factors-tags.js +21 -0
- package/dist/components/salla-review-factors-tags.js.map +1 -0
- package/dist/components/salla-reviews-page.js +19 -0
- package/dist/components/salla-reviews-page.js.map +1 -0
- package/dist/components/salla-reviews-summary.js +21 -0
- package/dist/components/salla-reviews-summary.js.map +1 -0
- package/dist/components/salla-reviews.js +33 -0
- package/dist/components/salla-reviews.js.map +1 -0
- package/dist/components/salla-reward-action.js +18 -0
- package/dist/components/salla-reward-action.js.map +1 -0
- package/dist/components/salla-reward-card.js +21 -0
- package/dist/components/salla-reward-card.js.map +1 -0
- package/dist/components/salla-reward-details.js +18 -0
- package/dist/components/salla-reward-details.js.map +1 -0
- package/dist/components/salla-reward-exchange.js +19 -0
- package/dist/components/salla-reward-exchange.js.map +1 -0
- package/dist/components/salla-scopes.js +25 -0
- package/dist/components/salla-scopes.js.map +1 -0
- package/dist/components/salla-search.js +26 -0
- package/dist/components/salla-search.js.map +1 -0
- package/dist/components/salla-searchable-dropdown.js +37 -0
- package/dist/components/salla-searchable-dropdown.js.map +1 -0
- package/dist/components/salla-skeleton.js +20 -0
- package/dist/components/salla-skeleton.js.map +1 -0
- package/dist/components/salla-slider.js +84 -0
- package/dist/components/salla-slider.js.map +1 -0
- package/dist/components/salla-social-share.js +28 -0
- package/dist/components/salla-social-share.js.map +1 -0
- package/dist/components/salla-social.js +19 -0
- package/dist/components/salla-social.js.map +1 -0
- package/dist/components/salla-tab-content.js +19 -0
- package/dist/components/salla-tab-content.js.map +1 -0
- package/dist/components/salla-tab-header.js +22 -0
- package/dist/components/salla-tab-header.js.map +1 -0
- package/dist/components/salla-tabs.js +20 -0
- package/dist/components/salla-tabs.js.map +1 -0
- package/dist/components/salla-tel-input.js +27 -0
- package/dist/components/salla-tel-input.js.map +1 -0
- package/dist/components/salla-tiered-offer.js +19 -0
- package/dist/components/salla-tiered-offer.js.map +1 -0
- package/dist/components/salla-tooltip.js +20 -0
- package/dist/components/salla-tooltip.js.map +1 -0
- package/dist/components/salla-trust-badges.js +21 -0
- package/dist/components/salla-trust-badges.js.map +1 -0
- package/dist/components/salla-user-menu.js +25 -0
- package/dist/components/salla-user-menu.js.map +1 -0
- package/dist/components/salla-user-profile.js +21 -0
- package/dist/components/salla-user-profile.js.map +1 -0
- package/dist/components/salla-user-settings.js +19 -0
- package/dist/components/salla-user-settings.js.map +1 -0
- package/dist/components/salla-verify.js +26 -0
- package/dist/components/salla-verify.js.map +1 -0
- package/dist/components/salla-wallet.js +19 -0
- package/dist/components/salla-wallet.js.map +1 -0
- package/dist/components/salla-wishlist-actions.js +21 -0
- package/dist/components/salla-wishlist-actions.js.map +1 -0
- package/dist/hydration/HydrationBoundary.js +64 -0
- package/dist/hydration/HydrationBoundary.js.map +1 -0
- package/dist/hydration/index.js +3 -0
- package/dist/hydration/index.js.map +1 -0
- package/dist/hydration/withDeferredHydration.js +149 -0
- package/dist/hydration/withDeferredHydration.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/native/hooks/index.js +6 -0
- package/dist/native/hooks/index.js.map +1 -0
- package/dist/native/hooks/useInfiniteScroll.js +99 -0
- package/dist/native/hooks/useInfiniteScroll.js.map +1 -0
- package/dist/native/hooks/useLoadMore.js +95 -0
- package/dist/native/hooks/useLoadMore.js.map +1 -0
- package/dist/native/hooks/useScrollVisibility.js +84 -0
- package/dist/native/hooks/useScrollVisibility.js.map +1 -0
- package/dist/native/hooks/useVirtualizer.js +74 -0
- package/dist/native/hooks/useVirtualizer.js.map +1 -0
- package/dist/native/items-list/ItemsList.js +367 -0
- package/dist/native/items-list/ItemsList.js.map +1 -0
- package/dist/native/items-list/index.js +3 -0
- package/dist/native/items-list/index.js.map +1 -0
- package/dist/native/items-list/lazy.js +22 -0
- package/dist/native/items-list/lazy.js.map +1 -0
- package/dist/native/salla-button/SallaButton.js +96 -0
- package/dist/native/salla-button/SallaButton.js.map +1 -0
- package/dist/native/salla-button/index.js +2 -0
- package/dist/native/salla-button/index.js.map +1 -0
- package/dist/native/salla-button/types.js +2 -0
- package/dist/native/salla-button/types.js.map +1 -0
- package/dist/native/salla-products-list/SallaProductsList.js +14 -0
- package/dist/native/salla-products-list/SallaProductsList.js.map +1 -0
- package/dist/native/salla-products-list/SallaProductsListLazy.js +6 -0
- package/dist/native/salla-products-list/SallaProductsListLazy.js.map +1 -0
- package/dist/native/salla-products-list/index.js +3 -0
- package/dist/native/salla-products-list/index.js.map +1 -0
- package/dist/native/salla-products-list/types.js +2 -0
- package/dist/native/salla-products-list/types.js.map +1 -0
- package/dist/native/salla-products-slider/SallaProductsSlider.js +40 -0
- package/dist/native/salla-products-slider/SallaProductsSlider.js.map +1 -0
- package/dist/native/salla-products-slider/SallaProductsSliderLazy.js +6 -0
- package/dist/native/salla-products-slider/SallaProductsSliderLazy.js.map +1 -0
- package/dist/native/salla-products-slider/index.js +3 -0
- package/dist/native/salla-products-slider/index.js.map +1 -0
- package/dist/native/salla-products-slider/types.js +2 -0
- package/dist/native/salla-products-slider/types.js.map +1 -0
- package/dist/native/salla-slider/SallaSlider.js +55 -0
- package/dist/native/salla-slider/SallaSlider.js.map +1 -0
- package/dist/native/salla-slider/SliderArrows.js +8 -0
- package/dist/native/salla-slider/SliderArrows.js.map +1 -0
- package/dist/native/salla-slider/index.js +2 -0
- package/dist/native/salla-slider/index.js.map +1 -0
- package/dist/native/salla-slider/types.js +2 -0
- package/dist/native/salla-slider/types.js.map +1 -0
- package/dist/native/shared/index.js +2 -0
- package/dist/native/shared/index.js.map +1 -0
- package/dist/native/shared/types.js +2 -0
- package/dist/native/shared/types.js.map +1 -0
- package/dist/skeletons/index.js +113 -0
- package/dist/skeletons/index.js.map +1 -0
- package/dist/types/__mocks__/salla-components.d.ts +5 -0
- package/dist/types/__mocks__/salla-components.d.ts.map +1 -0
- package/dist/types/components/__mocks__/salla-button.d.ts +3 -0
- package/dist/types/components/__mocks__/salla-button.d.ts.map +1 -0
- package/dist/types/components/__mocks__/salla-loading.d.ts +3 -0
- package/dist/types/components/__mocks__/salla-loading.d.ts.map +1 -0
- package/dist/types/components/__mocks__/salla-placeholder.d.ts +3 -0
- package/dist/types/components/__mocks__/salla-placeholder.d.ts.map +1 -0
- package/dist/types/components/components.d.ts +131 -0
- package/dist/types/components/components.d.ts.map +1 -0
- package/dist/types/components/salla-accordion-body.d.ts +10 -0
- package/dist/types/components/salla-accordion-body.d.ts.map +1 -0
- package/dist/types/components/salla-accordion-head.d.ts +13 -0
- package/dist/types/components/salla-accordion-head.d.ts.map +1 -0
- package/dist/types/components/salla-accordion.d.ts +10 -0
- package/dist/types/components/salla-accordion.d.ts.map +1 -0
- package/dist/types/components/salla-add-product-button.d.ts +20 -0
- package/dist/types/components/salla-add-product-button.d.ts.map +1 -0
- package/dist/types/components/salla-advertisement.d.ts +13 -0
- package/dist/types/components/salla-advertisement.d.ts.map +1 -0
- package/dist/types/components/salla-alert.d.ts +10 -0
- package/dist/types/components/salla-alert.d.ts.map +1 -0
- package/dist/types/components/salla-app-install-alert.d.ts +13 -0
- package/dist/types/components/salla-app-install-alert.d.ts.map +1 -0
- package/dist/types/components/salla-apps-icons.d.ts +10 -0
- package/dist/types/components/salla-apps-icons.d.ts.map +1 -0
- package/dist/types/components/salla-badge.d.ts +10 -0
- package/dist/types/components/salla-badge.d.ts.map +1 -0
- package/dist/types/components/salla-booking-field.d.ts +18 -0
- package/dist/types/components/salla-booking-field.d.ts.map +1 -0
- package/dist/types/components/salla-bottom-alert.d.ts +13 -0
- package/dist/types/components/salla-bottom-alert.d.ts.map +1 -0
- package/dist/types/components/salla-bought-together.d.ts +10 -0
- package/dist/types/components/salla-bought-together.d.ts.map +1 -0
- package/dist/types/components/salla-breadcrumb.d.ts +12 -0
- package/dist/types/components/salla-breadcrumb.d.ts.map +1 -0
- package/dist/types/components/salla-bullet-delivery.d.ts +24 -0
- package/dist/types/components/salla-bullet-delivery.d.ts.map +1 -0
- package/dist/types/components/salla-cart-coupons.d.ts +10 -0
- package/dist/types/components/salla-cart-coupons.d.ts.map +1 -0
- package/dist/types/components/salla-cart-item-offers.d.ts +13 -0
- package/dist/types/components/salla-cart-item-offers.d.ts.map +1 -0
- package/dist/types/components/salla-cart-summary-card.d.ts +10 -0
- package/dist/types/components/salla-cart-summary-card.d.ts.map +1 -0
- package/dist/types/components/salla-cart-summary.d.ts +13 -0
- package/dist/types/components/salla-cart-summary.d.ts.map +1 -0
- package/dist/types/components/salla-cashback-banner.d.ts +10 -0
- package/dist/types/components/salla-cashback-banner.d.ts.map +1 -0
- package/dist/types/components/salla-color-picker.d.ts +17 -0
- package/dist/types/components/salla-color-picker.d.ts.map +1 -0
- package/dist/types/components/salla-comment-factors.d.ts +10 -0
- package/dist/types/components/salla-comment-factors.d.ts.map +1 -0
- package/dist/types/components/salla-comment-form.d.ts +38 -0
- package/dist/types/components/salla-comment-form.d.ts.map +1 -0
- package/dist/types/components/salla-comment-item.d.ts +10 -0
- package/dist/types/components/salla-comment-item.d.ts.map +1 -0
- package/dist/types/components/salla-comments.d.ts +13 -0
- package/dist/types/components/salla-comments.d.ts.map +1 -0
- package/dist/types/components/salla-conditional-fields.d.ts +13 -0
- package/dist/types/components/salla-conditional-fields.d.ts.map +1 -0
- package/dist/types/components/salla-conditional-offer.d.ts +13 -0
- package/dist/types/components/salla-conditional-offer.d.ts.map +1 -0
- package/dist/types/components/salla-contacts.d.ts +10 -0
- package/dist/types/components/salla-contacts.d.ts.map +1 -0
- package/dist/types/components/salla-cookies-bar.d.ts +13 -0
- package/dist/types/components/salla-cookies-bar.d.ts.map +1 -0
- package/dist/types/components/salla-count-down.d.ts +13 -0
- package/dist/types/components/salla-count-down.d.ts.map +1 -0
- package/dist/types/components/salla-custom-fields.d.ts +36 -0
- package/dist/types/components/salla-custom-fields.d.ts.map +1 -0
- package/dist/types/components/salla-datetime-picker.d.ts +20 -0
- package/dist/types/components/salla-datetime-picker.d.ts.map +1 -0
- package/dist/types/components/salla-delivery-promise.d.ts +10 -0
- package/dist/types/components/salla-delivery-promise.d.ts.map +1 -0
- package/dist/types/components/salla-drawer.d.ts +13 -0
- package/dist/types/components/salla-drawer.d.ts.map +1 -0
- package/dist/types/components/salla-edit-order-button.d.ts +10 -0
- package/dist/types/components/salla-edit-order-button.d.ts.map +1 -0
- package/dist/types/components/salla-file-upload.d.ts +24 -0
- package/dist/types/components/salla-file-upload.d.ts.map +1 -0
- package/dist/types/components/salla-filters-widget.d.ts +18 -0
- package/dist/types/components/salla-filters-widget.d.ts.map +1 -0
- package/dist/types/components/salla-filters.d.ts +18 -0
- package/dist/types/components/salla-filters.d.ts.map +1 -0
- package/dist/types/components/salla-fulfillment-methods.d.ts +10 -0
- package/dist/types/components/salla-fulfillment-methods.d.ts.map +1 -0
- package/dist/types/components/salla-gifting.d.ts +13 -0
- package/dist/types/components/salla-gifting.d.ts.map +1 -0
- package/dist/types/components/salla-hook.d.ts +13 -0
- package/dist/types/components/salla-hook.d.ts.map +1 -0
- package/dist/types/components/salla-infinite-scroll.d.ts +13 -0
- package/dist/types/components/salla-infinite-scroll.d.ts.map +1 -0
- package/dist/types/components/salla-installment.d.ts +13 -0
- package/dist/types/components/salla-installment.d.ts.map +1 -0
- package/dist/types/components/salla-list-tile.d.ts +10 -0
- package/dist/types/components/salla-list-tile.d.ts.map +1 -0
- package/dist/types/components/salla-loading.d.ts +10 -0
- package/dist/types/components/salla-loading.d.ts.map +1 -0
- package/dist/types/components/salla-localization-modal.d.ts +13 -0
- package/dist/types/components/salla-localization-modal.d.ts.map +1 -0
- package/dist/types/components/salla-login-modal.d.ts +13 -0
- package/dist/types/components/salla-login-modal.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-banner.d.ts +10 -0
- package/dist/types/components/salla-loyalty-banner.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-hero.d.ts +10 -0
- package/dist/types/components/salla-loyalty-hero.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-panel.d.ts +10 -0
- package/dist/types/components/salla-loyalty-panel.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-point.d.ts +10 -0
- package/dist/types/components/salla-loyalty-point.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-points-banner.d.ts +10 -0
- package/dist/types/components/salla-loyalty-points-banner.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-points-history.d.ts +10 -0
- package/dist/types/components/salla-loyalty-points-history.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-prize-item.d.ts +13 -0
- package/dist/types/components/salla-loyalty-prize-item.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-program.d.ts +13 -0
- package/dist/types/components/salla-loyalty-program.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty-reward.d.ts +14 -0
- package/dist/types/components/salla-loyalty-reward.d.ts.map +1 -0
- package/dist/types/components/salla-loyalty.d.ts +13 -0
- package/dist/types/components/salla-loyalty.d.ts.map +1 -0
- package/dist/types/components/salla-maintenance-alert.d.ts +13 -0
- package/dist/types/components/salla-maintenance-alert.d.ts.map +1 -0
- package/dist/types/components/salla-map.d.ts +24 -0
- package/dist/types/components/salla-map.d.ts.map +1 -0
- package/dist/types/components/salla-menu.d.ts +13 -0
- package/dist/types/components/salla-menu.d.ts.map +1 -0
- package/dist/types/components/salla-metadata.d.ts +13 -0
- package/dist/types/components/salla-metadata.d.ts.map +1 -0
- package/dist/types/components/salla-modal.d.ts +13 -0
- package/dist/types/components/salla-modal.d.ts.map +1 -0
- package/dist/types/components/salla-multiple-bundle-product-cart.d.ts +13 -0
- package/dist/types/components/salla-multiple-bundle-product-cart.d.ts.map +1 -0
- package/dist/types/components/salla-multiple-bundle-product-details.d.ts +13 -0
- package/dist/types/components/salla-multiple-bundle-product-details.d.ts.map +1 -0
- package/dist/types/components/salla-multiple-bundle-product-options-modal.d.ts +40 -0
- package/dist/types/components/salla-multiple-bundle-product-options-modal.d.ts.map +1 -0
- package/dist/types/components/salla-multiple-bundle-product-slider.d.ts +32 -0
- package/dist/types/components/salla-multiple-bundle-product-slider.d.ts.map +1 -0
- package/dist/types/components/salla-multiple-bundle-product.d.ts +13 -0
- package/dist/types/components/salla-multiple-bundle-product.d.ts.map +1 -0
- package/dist/types/components/salla-next-order-coupon.d.ts +10 -0
- package/dist/types/components/salla-next-order-coupon.d.ts.map +1 -0
- package/dist/types/components/salla-notification-item.d.ts +10 -0
- package/dist/types/components/salla-notification-item.d.ts.map +1 -0
- package/dist/types/components/salla-notifications.d.ts +13 -0
- package/dist/types/components/salla-notifications.d.ts.map +1 -0
- package/dist/types/components/salla-offer-modal.d.ts +13 -0
- package/dist/types/components/salla-offer-modal.d.ts.map +1 -0
- package/dist/types/components/salla-offer.d.ts +13 -0
- package/dist/types/components/salla-offer.d.ts.map +1 -0
- package/dist/types/components/salla-order-branch.d.ts +10 -0
- package/dist/types/components/salla-order-branch.d.ts.map +1 -0
- package/dist/types/components/salla-order-cancel.d.ts +10 -0
- package/dist/types/components/salla-order-cancel.d.ts.map +1 -0
- package/dist/types/components/salla-order-details-multiple-bundle-product.d.ts +13 -0
- package/dist/types/components/salla-order-details-multiple-bundle-product.d.ts.map +1 -0
- package/dist/types/components/salla-order-details-options.d.ts +13 -0
- package/dist/types/components/salla-order-details-options.d.ts.map +1 -0
- package/dist/types/components/salla-order-details.d.ts +13 -0
- package/dist/types/components/salla-order-details.d.ts.map +1 -0
- package/dist/types/components/salla-order-edit-item.d.ts +21 -0
- package/dist/types/components/salla-order-edit-item.d.ts.map +1 -0
- package/dist/types/components/salla-order-edit-product-card.d.ts +15 -0
- package/dist/types/components/salla-order-edit-product-card.d.ts.map +1 -0
- package/dist/types/components/salla-order-edit.d.ts +10 -0
- package/dist/types/components/salla-order-edit.d.ts.map +1 -0
- package/dist/types/components/salla-order-options-modal.d.ts +10 -0
- package/dist/types/components/salla-order-options-modal.d.ts.map +1 -0
- package/dist/types/components/salla-order-summary.d.ts +13 -0
- package/dist/types/components/salla-order-summary.d.ts.map +1 -0
- package/dist/types/components/salla-order-totals-card.d.ts +13 -0
- package/dist/types/components/salla-order-totals-card.d.ts.map +1 -0
- package/dist/types/components/salla-orders.d.ts +13 -0
- package/dist/types/components/salla-orders.d.ts.map +1 -0
- package/dist/types/components/salla-payments.d.ts +13 -0
- package/dist/types/components/salla-payments.d.ts.map +1 -0
- package/dist/types/components/salla-placeholder.d.ts +10 -0
- package/dist/types/components/salla-placeholder.d.ts.map +1 -0
- package/dist/types/components/salla-price-range.d.ts +18 -0
- package/dist/types/components/salla-price-range.d.ts.map +1 -0
- package/dist/types/components/salla-product-availability.d.ts +13 -0
- package/dist/types/components/salla-product-availability.d.ts.map +1 -0
- package/dist/types/components/salla-product-card-embed.d.ts +10 -0
- package/dist/types/components/salla-product-card-embed.d.ts.map +1 -0
- package/dist/types/components/salla-product-card.d.ts +13 -0
- package/dist/types/components/salla-product-card.d.ts.map +1 -0
- package/dist/types/components/salla-product-options.d.ts +18 -0
- package/dist/types/components/salla-product-options.d.ts.map +1 -0
- package/dist/types/components/salla-product-size-guide.d.ts +13 -0
- package/dist/types/components/salla-product-size-guide.d.ts.map +1 -0
- package/dist/types/components/salla-progress-bar.d.ts +10 -0
- package/dist/types/components/salla-progress-bar.d.ts.map +1 -0
- package/dist/types/components/salla-quantity-input.d.ts +13 -0
- package/dist/types/components/salla-quantity-input.d.ts.map +1 -0
- package/dist/types/components/salla-quick-buy.d.ts +28 -0
- package/dist/types/components/salla-quick-buy.d.ts.map +1 -0
- package/dist/types/components/salla-quick-order.d.ts +18 -0
- package/dist/types/components/salla-quick-order.d.ts.map +1 -0
- package/dist/types/components/salla-rating-modal-v2.d.ts +10 -0
- package/dist/types/components/salla-rating-modal-v2.d.ts.map +1 -0
- package/dist/types/components/salla-rating-modal.d.ts +13 -0
- package/dist/types/components/salla-rating-modal.d.ts.map +1 -0
- package/dist/types/components/salla-rating-stars.d.ts +13 -0
- package/dist/types/components/salla-rating-stars.d.ts.map +1 -0
- package/dist/types/components/salla-review-card.d.ts +10 -0
- package/dist/types/components/salla-review-card.d.ts.map +1 -0
- package/dist/types/components/salla-review-factors-tags.d.ts +10 -0
- package/dist/types/components/salla-review-factors-tags.d.ts.map +1 -0
- package/dist/types/components/salla-reviews-page.d.ts +13 -0
- package/dist/types/components/salla-reviews-page.d.ts.map +1 -0
- package/dist/types/components/salla-reviews-summary.d.ts +13 -0
- package/dist/types/components/salla-reviews-summary.d.ts.map +1 -0
- package/dist/types/components/salla-reviews.d.ts +13 -0
- package/dist/types/components/salla-reviews.d.ts.map +1 -0
- package/dist/types/components/salla-reward-action.d.ts +13 -0
- package/dist/types/components/salla-reward-action.d.ts.map +1 -0
- package/dist/types/components/salla-reward-card.d.ts +14 -0
- package/dist/types/components/salla-reward-card.d.ts.map +1 -0
- package/dist/types/components/salla-reward-details.d.ts +13 -0
- package/dist/types/components/salla-reward-details.d.ts.map +1 -0
- package/dist/types/components/salla-reward-exchange.d.ts +10 -0
- package/dist/types/components/salla-reward-exchange.d.ts.map +1 -0
- package/dist/types/components/salla-scopes.d.ts +13 -0
- package/dist/types/components/salla-scopes.d.ts.map +1 -0
- package/dist/types/components/salla-search.d.ts +13 -0
- package/dist/types/components/salla-search.d.ts.map +1 -0
- package/dist/types/components/salla-searchable-dropdown.d.ts +16 -0
- package/dist/types/components/salla-searchable-dropdown.d.ts.map +1 -0
- package/dist/types/components/salla-skeleton.d.ts +10 -0
- package/dist/types/components/salla-skeleton.d.ts.map +1 -0
- package/dist/types/components/salla-slider.d.ts +48 -0
- package/dist/types/components/salla-slider.d.ts.map +1 -0
- package/dist/types/components/salla-social-share.d.ts +13 -0
- package/dist/types/components/salla-social-share.d.ts.map +1 -0
- package/dist/types/components/salla-social.d.ts +13 -0
- package/dist/types/components/salla-social.d.ts.map +1 -0
- package/dist/types/components/salla-tab-content.d.ts +10 -0
- package/dist/types/components/salla-tab-content.d.ts.map +1 -0
- package/dist/types/components/salla-tab-header.d.ts +13 -0
- package/dist/types/components/salla-tab-header.d.ts.map +1 -0
- package/dist/types/components/salla-tabs.d.ts +10 -0
- package/dist/types/components/salla-tabs.d.ts.map +1 -0
- package/dist/types/components/salla-tel-input.d.ts +18 -0
- package/dist/types/components/salla-tel-input.d.ts.map +1 -0
- package/dist/types/components/salla-tiered-offer.d.ts +13 -0
- package/dist/types/components/salla-tiered-offer.d.ts.map +1 -0
- package/dist/types/components/salla-tooltip.d.ts +10 -0
- package/dist/types/components/salla-tooltip.d.ts.map +1 -0
- package/dist/types/components/salla-trust-badges.d.ts +13 -0
- package/dist/types/components/salla-trust-badges.d.ts.map +1 -0
- package/dist/types/components/salla-user-menu.d.ts +13 -0
- package/dist/types/components/salla-user-menu.d.ts.map +1 -0
- package/dist/types/components/salla-user-profile.d.ts +13 -0
- package/dist/types/components/salla-user-profile.d.ts.map +1 -0
- package/dist/types/components/salla-user-settings.d.ts +13 -0
- package/dist/types/components/salla-user-settings.d.ts.map +1 -0
- package/dist/types/components/salla-verify.d.ts +18 -0
- package/dist/types/components/salla-verify.d.ts.map +1 -0
- package/dist/types/components/salla-wallet.d.ts +13 -0
- package/dist/types/components/salla-wallet.d.ts.map +1 -0
- package/dist/types/components/salla-wishlist-actions.d.ts +10 -0
- package/dist/types/components/salla-wishlist-actions.d.ts.map +1 -0
- package/dist/types/hydration/HydrationBoundary.d.ts +12 -0
- package/dist/types/hydration/HydrationBoundary.d.ts.map +1 -0
- package/dist/types/hydration/index.d.ts +4 -0
- package/dist/types/hydration/index.d.ts.map +1 -0
- package/dist/types/hydration/withDeferredHydration.d.ts +14 -0
- package/dist/types/hydration/withDeferredHydration.d.ts.map +1 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/native/hooks/index.d.ts +9 -0
- package/dist/types/native/hooks/index.d.ts.map +1 -0
- package/dist/types/native/hooks/useInfiniteScroll.d.ts +61 -0
- package/dist/types/native/hooks/useInfiniteScroll.d.ts.map +1 -0
- package/dist/types/native/hooks/useLoadMore.d.ts +52 -0
- package/dist/types/native/hooks/useLoadMore.d.ts.map +1 -0
- package/dist/types/native/hooks/useScrollVisibility.d.ts +49 -0
- package/dist/types/native/hooks/useScrollVisibility.d.ts.map +1 -0
- package/dist/types/native/hooks/useVirtualizer.d.ts +86 -0
- package/dist/types/native/hooks/useVirtualizer.d.ts.map +1 -0
- package/dist/types/native/items-list/ItemsList.d.ts +94 -0
- package/dist/types/native/items-list/ItemsList.d.ts.map +1 -0
- package/dist/types/native/items-list/index.d.ts +3 -0
- package/dist/types/native/items-list/index.d.ts.map +1 -0
- package/dist/types/native/items-list/lazy.d.ts +21 -0
- package/dist/types/native/items-list/lazy.d.ts.map +1 -0
- package/dist/types/native/salla-button/SallaButton.d.ts +4 -0
- package/dist/types/native/salla-button/SallaButton.d.ts.map +1 -0
- package/dist/types/native/salla-button/index.d.ts +3 -0
- package/dist/types/native/salla-button/index.d.ts.map +1 -0
- package/dist/types/native/salla-button/types.d.ts +43 -0
- package/dist/types/native/salla-button/types.d.ts.map +1 -0
- package/dist/types/native/salla-products-list/SallaProductsList.d.ts +4 -0
- package/dist/types/native/salla-products-list/SallaProductsList.d.ts.map +1 -0
- package/dist/types/native/salla-products-list/SallaProductsListLazy.d.ts +5 -0
- package/dist/types/native/salla-products-list/SallaProductsListLazy.d.ts.map +1 -0
- package/dist/types/native/salla-products-list/index.d.ts +4 -0
- package/dist/types/native/salla-products-list/index.d.ts.map +1 -0
- package/dist/types/native/salla-products-list/types.d.ts +7 -0
- package/dist/types/native/salla-products-list/types.d.ts.map +1 -0
- package/dist/types/native/salla-products-slider/SallaProductsSlider.d.ts +4 -0
- package/dist/types/native/salla-products-slider/SallaProductsSlider.d.ts.map +1 -0
- package/dist/types/native/salla-products-slider/SallaProductsSliderLazy.d.ts +5 -0
- package/dist/types/native/salla-products-slider/SallaProductsSliderLazy.d.ts.map +1 -0
- package/dist/types/native/salla-products-slider/index.d.ts +4 -0
- package/dist/types/native/salla-products-slider/index.d.ts.map +1 -0
- package/dist/types/native/salla-products-slider/types.d.ts +19 -0
- package/dist/types/native/salla-products-slider/types.d.ts.map +1 -0
- package/dist/types/native/salla-slider/SallaSlider.d.ts +7 -0
- package/dist/types/native/salla-slider/SallaSlider.d.ts.map +1 -0
- package/dist/types/native/salla-slider/SliderArrows.d.ts +8 -0
- package/dist/types/native/salla-slider/SliderArrows.d.ts.map +1 -0
- package/dist/types/native/salla-slider/index.d.ts +3 -0
- package/dist/types/native/salla-slider/index.d.ts.map +1 -0
- package/dist/types/native/salla-slider/types.d.ts +35 -0
- package/dist/types/native/salla-slider/types.d.ts.map +1 -0
- package/dist/types/native/shared/index.d.ts +2 -0
- package/dist/types/native/shared/index.d.ts.map +1 -0
- package/dist/types/native/shared/types.d.ts +34 -0
- package/dist/types/native/shared/types.d.ts.map +1 -0
- package/dist/types/skeletons/index.d.ts +57 -0
- package/dist/types/skeletons/index.d.ts.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Component, Suspense, useState, useEffect, useRef, useCallback } from 'react';
|
|
4
|
+
import { useInView } from 'react-intersection-observer';
|
|
5
|
+
class HydrationErrorBoundary extends Component {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super(props);
|
|
8
|
+
this.state = { hasError: false };
|
|
9
|
+
}
|
|
10
|
+
static getDerivedStateFromError() {
|
|
11
|
+
return { hasError: true };
|
|
12
|
+
}
|
|
13
|
+
componentDidCatch(error, info) {
|
|
14
|
+
console.warn(`[HydrationBoundary:${this.props.name}]`, error.message, info.componentStack);
|
|
15
|
+
}
|
|
16
|
+
render() {
|
|
17
|
+
if (this.state.hasError) {
|
|
18
|
+
return this.props.fallback;
|
|
19
|
+
}
|
|
20
|
+
return this.props.children;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
let hbInstanceId = 0;
|
|
24
|
+
export function HydrationBoundary({ children, fallback = null, eventTriggered = false, forceHydrate = false, rootMargin = '200px', _debugName = 'unknown', }) {
|
|
25
|
+
const [instanceId] = useState(() => ++hbInstanceId);
|
|
26
|
+
const [shouldHydrate, setShouldHydrate] = useState(forceHydrate);
|
|
27
|
+
const [isClient, setIsClient] = useState(false);
|
|
28
|
+
const wrapperRef = useRef(null);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
setIsClient(true);
|
|
31
|
+
}, []);
|
|
32
|
+
const { ref: inViewRef, inView } = useInView({
|
|
33
|
+
rootMargin,
|
|
34
|
+
triggerOnce: true,
|
|
35
|
+
skip: eventTriggered || shouldHydrate,
|
|
36
|
+
});
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (eventTriggered || forceHydrate) {
|
|
39
|
+
setShouldHydrate(true);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!fallback) {
|
|
43
|
+
setShouldHydrate(true);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (inView) {
|
|
47
|
+
setShouldHydrate(true);
|
|
48
|
+
}
|
|
49
|
+
}, [inView, forceHydrate, eventTriggered, fallback]);
|
|
50
|
+
const setRefs = useCallback((node) => {
|
|
51
|
+
wrapperRef.current = node;
|
|
52
|
+
if (!shouldHydrate) {
|
|
53
|
+
inViewRef(node);
|
|
54
|
+
}
|
|
55
|
+
}, [inViewRef, shouldHydrate]);
|
|
56
|
+
if (eventTriggered) {
|
|
57
|
+
if (!isClient) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return (_jsx(HydrationErrorBoundary, { fallback: null, name: _debugName, children: children }));
|
|
61
|
+
}
|
|
62
|
+
return (_jsx("div", { ref: setRefs, suppressHydrationWarning: true, style: !shouldHydrate ? { width: '100%' } : undefined, children: shouldHydrate ? (_jsx(HydrationErrorBoundary, { fallback: fallback, name: _debugName, children: _jsx(Suspense, { fallback: fallback, children: children }) })) : (fallback) }));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=HydrationBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydrationBoundary.js","sourceRoot":"","sources":["../../src/hydration/HydrationBoundary.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hydration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React, { Component } from 'react';
|
|
4
|
+
import { HydrationBoundary } from './HydrationBoundary';
|
|
5
|
+
import { SliderSkeleton, ProductsSliderSkeleton, ProductCardSkeleton, MenuSkeleton, MenuColumnSkeleton, PaymentSkeleton, ProductsListSkeleton, BulletDeliverySkeleton, CardSkeleton, CircleSkeleton, ListSkeleton, FormSkeleton, SearchSkeleton, FiltersSkeleton, ButtonSkeleton, BackgroundSliderSkeleton, ReviewItemSkeleton, InputSkeleton, MenuIconSkeleton, } from '../skeletons';
|
|
6
|
+
const skeletonMap = {
|
|
7
|
+
SliderSkeleton,
|
|
8
|
+
ProductsSliderSkeleton,
|
|
9
|
+
ProductCardSkeleton,
|
|
10
|
+
MenuSkeleton,
|
|
11
|
+
MenuColumnSkeleton,
|
|
12
|
+
PaymentSkeleton,
|
|
13
|
+
ProductsListSkeleton,
|
|
14
|
+
BulletDeliverySkeleton,
|
|
15
|
+
BackgroundSliderSkeleton,
|
|
16
|
+
CardSkeleton,
|
|
17
|
+
CircleSkeleton,
|
|
18
|
+
ListSkeleton,
|
|
19
|
+
FormSkeleton,
|
|
20
|
+
SearchSkeleton,
|
|
21
|
+
FiltersSkeleton,
|
|
22
|
+
ButtonSkeleton,
|
|
23
|
+
ReviewItemSkeleton,
|
|
24
|
+
InputSkeleton,
|
|
25
|
+
MenuIconSkeleton,
|
|
26
|
+
};
|
|
27
|
+
export const clientOnlyComponents = {
|
|
28
|
+
'SallaLoginModal': { skeleton: null, eventTriggered: true },
|
|
29
|
+
'SallaLocalizationModal': { skeleton: null, eventTriggered: true },
|
|
30
|
+
'SallaOfferModal': { skeleton: null, eventTriggered: true },
|
|
31
|
+
'SallaRatingModal': { skeleton: null, eventTriggered: true },
|
|
32
|
+
'SallaMultipleBundleProductOptionsModal': { skeleton: null, eventTriggered: true },
|
|
33
|
+
'SallaScopes': { skeleton: null, eventTriggered: true },
|
|
34
|
+
'SallaGifting': { skeleton: null, eventTriggered: true },
|
|
35
|
+
'SallaSlider': { skeleton: 'BackgroundSliderSkeleton' },
|
|
36
|
+
'SallaProductCard': { skeleton: 'ProductCardSkeleton' },
|
|
37
|
+
'SallaProductsSlider': { skeleton: 'ProductsSliderSkeleton' },
|
|
38
|
+
'SallaProductsList': { skeleton: 'ProductsListSkeleton' },
|
|
39
|
+
'SallaMenu': { skeleton: 'MenuColumnSkeleton' },
|
|
40
|
+
'SallaBulletDelivery': { skeleton: 'BulletDeliverySkeleton' },
|
|
41
|
+
'SallaSearch': { skeleton: 'SearchSkeleton' },
|
|
42
|
+
'SallaFilters': { skeleton: 'FiltersSkeleton' },
|
|
43
|
+
'SallaCartSummary': { skeleton: 'CircleSkeleton' },
|
|
44
|
+
'SallaCartItemOffers': { skeleton: 'CardSkeleton' },
|
|
45
|
+
'SallaOrderSummary': { skeleton: 'CardSkeleton' },
|
|
46
|
+
'SallaOrders': { skeleton: 'ListSkeleton' },
|
|
47
|
+
'SallaReviews': { skeleton: null },
|
|
48
|
+
'SallaComments': { skeleton: 'ReviewItemSkeleton' },
|
|
49
|
+
'SallaNotifications': { skeleton: 'ListSkeleton' },
|
|
50
|
+
'SallaUserProfile': { skeleton: 'CardSkeleton' },
|
|
51
|
+
'SallaUserMenu': { skeleton: (props) => (props.avatarOnly ? 'CircleSkeleton' : 'MenuIconSkeleton') },
|
|
52
|
+
'SallaBreadcrumb': { skeleton: 'MenuSkeleton' },
|
|
53
|
+
'SallaProductOptions': { skeleton: 'ProductCardSkeleton' },
|
|
54
|
+
'SallaProductAvailability': { skeleton: 'ProductCardSkeleton' },
|
|
55
|
+
'SallaAddProductButton': { skeleton: 'ButtonSkeleton' },
|
|
56
|
+
'SallaQuickBuy': { skeleton: 'ProductCardSkeleton' },
|
|
57
|
+
'SallaOffer': { skeleton: 'CardSkeleton' },
|
|
58
|
+
'SallaTieredOffer': { skeleton: 'CardSkeleton' },
|
|
59
|
+
'SallaConditionalOffer': { skeleton: 'CardSkeleton' },
|
|
60
|
+
'SallaBookingField': { skeleton: 'InputSkeleton' },
|
|
61
|
+
'SallaCustomFields': { skeleton: 'InputSkeleton' },
|
|
62
|
+
'SallaFileUpload': { skeleton: 'InputSkeleton' },
|
|
63
|
+
'SallaDatetimePicker': { skeleton: 'InputSkeleton' },
|
|
64
|
+
'SallaTelInput': { skeleton: 'InputSkeleton' },
|
|
65
|
+
'SallaMetadata': { skeleton: null },
|
|
66
|
+
'SallaAdvertisement': { skeleton: null },
|
|
67
|
+
'SallaMap': { skeleton: null },
|
|
68
|
+
'SallaBottomAlert': { skeleton: null },
|
|
69
|
+
'SallaMaintenanceAlert': { skeleton: null },
|
|
70
|
+
'SallaAppInstallAlert': { skeleton: null },
|
|
71
|
+
'SallaCookiesBar': { skeleton: null },
|
|
72
|
+
'SallaUserSettings': { skeleton: 'FormSkeleton' },
|
|
73
|
+
'SallaVerify': { skeleton: 'FormSkeleton' },
|
|
74
|
+
'SallaWallet': { skeleton: 'CardSkeleton' },
|
|
75
|
+
'SallaLoyalty': { skeleton: 'CardSkeleton' },
|
|
76
|
+
'SallaLoyaltyProgram': { skeleton: 'CardSkeleton' },
|
|
77
|
+
'SallaReviewsPage': { skeleton: 'ReviewItemSkeleton' },
|
|
78
|
+
'SallaReviewsSummary': { skeleton: 'CardSkeleton' },
|
|
79
|
+
'SallaCommentForm': { skeleton: 'FormSkeleton' },
|
|
80
|
+
'SallaPriceRange': { skeleton: 'FormSkeleton' },
|
|
81
|
+
'SallaFiltersWidget': { skeleton: 'FormSkeleton' },
|
|
82
|
+
'SallaInfiniteScroll': { skeleton: null },
|
|
83
|
+
'SallaRatingStars': { skeleton: 'CardSkeleton' },
|
|
84
|
+
'SallaProductSizeGuide': { skeleton: null },
|
|
85
|
+
'SallaMultipleBundleProduct': { skeleton: 'CardSkeleton' },
|
|
86
|
+
'SallaMultipleBundleProductCart': { skeleton: 'CardSkeleton' },
|
|
87
|
+
'SallaMultipleBundleProductDetails': { skeleton: 'CardSkeleton' },
|
|
88
|
+
'SallaMultipleBundleProductSlider': { skeleton: 'ProductsSliderSkeleton' },
|
|
89
|
+
'SallaOrderDetails': { skeleton: 'CardSkeleton' },
|
|
90
|
+
'SallaOrderDetailsMultipleBundleProduct': { skeleton: 'CardSkeleton' },
|
|
91
|
+
'SallaOrderDetailsOptions': { skeleton: 'CardSkeleton' },
|
|
92
|
+
'SallaOrderTotalsCard': { skeleton: 'CardSkeleton' },
|
|
93
|
+
'SallaPayments': { skeleton: 'PaymentSkeleton' },
|
|
94
|
+
'SallaInstallment': { skeleton: 'CardSkeleton' },
|
|
95
|
+
'SallaQuickOrder': { skeleton: 'FormSkeleton' },
|
|
96
|
+
'SallaCountDown': { skeleton: 'CardSkeleton' },
|
|
97
|
+
'SallaSocialShare': { skeleton: 'CircleSkeleton' },
|
|
98
|
+
'SallaSocial': { skeleton: 'CircleSkeleton' },
|
|
99
|
+
'SallaTrustBadges': { skeleton: null },
|
|
100
|
+
'SallaConditionalFields': { skeleton: 'FormSkeleton' },
|
|
101
|
+
'SallaQuantityInput': { skeleton: 'InputSkeleton' },
|
|
102
|
+
// 'SallaHook': { skeleton: null },
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Error boundary that catches errors from Stencil web components during
|
|
106
|
+
* render and lifecycle (including disconnectedCallback errors on unmount).
|
|
107
|
+
* Prevents SDK errors from bubbling up to the router's CatchBoundaryImpl
|
|
108
|
+
* which would recreate the entire page tree.
|
|
109
|
+
*/
|
|
110
|
+
class WebComponentErrorBoundary extends Component {
|
|
111
|
+
constructor(props) {
|
|
112
|
+
super(props);
|
|
113
|
+
this.state = { hasError: false };
|
|
114
|
+
}
|
|
115
|
+
static getDerivedStateFromError() {
|
|
116
|
+
return { hasError: true };
|
|
117
|
+
}
|
|
118
|
+
componentDidCatch(error, info) {
|
|
119
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
120
|
+
console.warn(`[${this.props.name}] Caught error (prevented tree remount):`, error.message, info.componentStack);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
render() {
|
|
124
|
+
if (this.state.hasError) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return this.props.children;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export function withDeferredHydration(Component, componentName, options) {
|
|
131
|
+
const config = clientOnlyComponents[componentName];
|
|
132
|
+
if (!config) {
|
|
133
|
+
return Component;
|
|
134
|
+
}
|
|
135
|
+
const WrappedComponent = (props) => {
|
|
136
|
+
const skeletonName = typeof config.skeleton === 'function' ? config.skeleton(props) : config.skeleton;
|
|
137
|
+
const SkeletonComponent = skeletonName ? skeletonMap[skeletonName] : null;
|
|
138
|
+
const fallback = SkeletonComponent ? React.createElement(SkeletonComponent, config.skeletonProps) : null;
|
|
139
|
+
return (_jsx(HydrationBoundary, { fallback: fallback, eventTriggered: config.eventTriggered, rootMargin: options?.rootMargin, _debugName: componentName, children: _jsx(WebComponentErrorBoundary, { name: componentName, children: _jsx(Component, { ...props }) }) }));
|
|
140
|
+
};
|
|
141
|
+
WrappedComponent.displayName = `withDeferredHydration(${componentName})`;
|
|
142
|
+
return WrappedComponent;
|
|
143
|
+
}
|
|
144
|
+
export function createCoreExport(Component, componentName) {
|
|
145
|
+
const CoreComponent = Component;
|
|
146
|
+
CoreComponent.displayName = `${componentName}Core`;
|
|
147
|
+
return CoreComponent;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=withDeferredHydration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withDeferredHydration.js","sourceRoot":"","sources":["../../src/hydration/withDeferredHydration.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./components/components";
|
|
2
|
+
export { SallaButton } from "./native/salla-button";
|
|
3
|
+
export { SallaProductsList } from "./native/salla-products-list";
|
|
4
|
+
export { SallaProductsSlider } from "./native/salla-products-slider";
|
|
5
|
+
export { SallaSlider } from "./native/salla-slider";
|
|
6
|
+
export { ItemsList } from "./native/items-list";
|
|
7
|
+
export * from "./native/hooks";
|
|
8
|
+
export { HydrationBoundary, withDeferredHydration, createCoreExport, clientOnlyComponents, } from "./hydration";
|
|
9
|
+
export { Pulse, SkeletonPulse, ButtonSkeleton, ProductsSliderSkeleton, ProductCardSkeleton, MenuSkeleton, MenuColumnSkeleton, PaymentSkeleton, ProductsListSkeleton, ProductGridSkeleton, FixedProductsSkeleton, BulletDeliverySkeleton, CardSkeleton, ListSkeleton, FormSkeleton, SearchSkeleton, FiltersSkeleton, CircleSkeleton, SliderSkeleton, BackgroundSliderSkeleton, ReviewItemSkeleton, InputSkeleton, BreadcrumbSkeleton, PageSkeleton, ProductDetailSkeleton, BlogSkeleton, CartSkeleton, CustomerPageSkeleton, CustomerLayoutSkeleton, } from "./skeletons";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAcpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAehD,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Hooks barrel export
|
|
2
|
+
export { useInfiniteScroll } from './useInfiniteScroll';
|
|
3
|
+
export { useLoadMore } from './useLoadMore';
|
|
4
|
+
export { useScrollVisibility } from './useScrollVisibility';
|
|
5
|
+
export { useVirtualizer } from './useVirtualizer';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/native/hooks/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useInView } from 'react-intersection-observer';
|
|
4
|
+
/**
|
|
5
|
+
* useInfiniteScroll - Hook for managing infinite scroll pagination.
|
|
6
|
+
*
|
|
7
|
+
* Uses react-intersection-observer for efficient scroll detection.
|
|
8
|
+
* Automatically calls the loader function when the sentinel element enters the viewport.
|
|
9
|
+
*
|
|
10
|
+
* @param loader - Function that returns a promise resolving to { items, next }
|
|
11
|
+
* @param options - Configuration options
|
|
12
|
+
* @returns Object with refs, state, and control functions
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const { items, sentinelRef, isLoading, hasReachedEnd } = useInfiniteScroll(
|
|
17
|
+
* async () => fetchProducts(page),
|
|
18
|
+
* { rootMargin: '200px' }
|
|
19
|
+
* );
|
|
20
|
+
*
|
|
21
|
+
* return (
|
|
22
|
+
* <div>
|
|
23
|
+
* {items.map(item => <Item key={item.id} {...item} />)}
|
|
24
|
+
* <div ref={sentinelRef}>{isLoading ? 'Loading...' : hasReachedEnd ? 'End' : 'Loading more...'}</div>
|
|
25
|
+
* </div>
|
|
26
|
+
* );
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function useInfiniteScroll(loader, options = {}) {
|
|
30
|
+
const { rootMargin = '200px', skip = false } = options;
|
|
31
|
+
// State
|
|
32
|
+
const [items, setItems] = useState([]);
|
|
33
|
+
const [nextCursor, setNextCursor] = useState(null);
|
|
34
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
35
|
+
const [error, setError] = useState(null);
|
|
36
|
+
const [hasLoadedOnce, setHasLoadedOnce] = useState(false);
|
|
37
|
+
// Refs
|
|
38
|
+
const loadingRef = useRef(false);
|
|
39
|
+
// Intersection Observer
|
|
40
|
+
const { ref: sentinelRef, inView } = useInView({
|
|
41
|
+
rootMargin,
|
|
42
|
+
triggerOnce: false,
|
|
43
|
+
skip,
|
|
44
|
+
});
|
|
45
|
+
// Load more handler
|
|
46
|
+
const loadMore = useCallback(async () => {
|
|
47
|
+
// Allow initial load when nextCursor is null and hasn't loaded yet
|
|
48
|
+
const isInitialLoad = nextCursor === null && !hasLoadedOnce;
|
|
49
|
+
if (loadingRef.current || (!nextCursor && !isInitialLoad))
|
|
50
|
+
return;
|
|
51
|
+
loadingRef.current = true;
|
|
52
|
+
setIsLoading(true);
|
|
53
|
+
setError(null);
|
|
54
|
+
try {
|
|
55
|
+
const result = await loader();
|
|
56
|
+
setItems(prev => [...prev, ...result.items]);
|
|
57
|
+
setNextCursor(result.next);
|
|
58
|
+
setHasLoadedOnce(true);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
setError(err instanceof Error ? err.message : 'Failed to load items');
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
loadingRef.current = false;
|
|
65
|
+
setIsLoading(false);
|
|
66
|
+
}
|
|
67
|
+
}, [loader, nextCursor, hasLoadedOnce]);
|
|
68
|
+
// Initial load
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (!skip && nextCursor === null && !loadingRef.current) {
|
|
71
|
+
loadMore();
|
|
72
|
+
}
|
|
73
|
+
}, [skip, loadMore, nextCursor]);
|
|
74
|
+
// Handle scroll trigger
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (inView && !skip && nextCursor && !isLoading) {
|
|
77
|
+
loadMore();
|
|
78
|
+
}
|
|
79
|
+
}, [inView, skip, nextCursor, isLoading, loadMore]);
|
|
80
|
+
// Retry handler
|
|
81
|
+
const retry = useCallback(async () => {
|
|
82
|
+
setError(null);
|
|
83
|
+
await loadMore();
|
|
84
|
+
}, [loadMore]);
|
|
85
|
+
// Determine if we've reached the end
|
|
86
|
+
const hasReachedEnd = !nextCursor && hasLoadedOnce;
|
|
87
|
+
return {
|
|
88
|
+
items,
|
|
89
|
+
sentinelRef,
|
|
90
|
+
inView,
|
|
91
|
+
isLoading,
|
|
92
|
+
hasReachedEnd,
|
|
93
|
+
error,
|
|
94
|
+
loadMore,
|
|
95
|
+
retry,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export default useInfiniteScroll;
|
|
99
|
+
//# sourceMappingURL=useInfiniteScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInfiniteScroll.js","sourceRoot":"","sources":["../../../src/native/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* useLoadMore - Hook for managing manual load-more pagination.
|
|
5
|
+
*
|
|
6
|
+
* Provides a simple API for button-based pagination.
|
|
7
|
+
* Call the `load` function to fetch more items.
|
|
8
|
+
*
|
|
9
|
+
* @param loader - Function that returns a promise resolving to { items, next }
|
|
10
|
+
* @returns Object with items, state, and control functions
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* const { items, isLoading, load, hasReachedEnd } = useLoadMore(
|
|
15
|
+
* async () => fetchProducts(page)
|
|
16
|
+
* );
|
|
17
|
+
*
|
|
18
|
+
* return (
|
|
19
|
+
* <div>
|
|
20
|
+
* {items.map(item => <Item key={item.id} {...item} />)}
|
|
21
|
+
* {!hasReachedEnd && (
|
|
22
|
+
* <button onClick={load} disabled={isLoading}>
|
|
23
|
+
* {isLoading ? 'Loading...' : 'Load More'}
|
|
24
|
+
* </button>
|
|
25
|
+
* )}
|
|
26
|
+
* </div>
|
|
27
|
+
* );
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function useLoadMore(loader) {
|
|
31
|
+
// State
|
|
32
|
+
const [items, setItems] = useState([]);
|
|
33
|
+
const [nextCursor, setNextCursor] = useState(null);
|
|
34
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
35
|
+
const [error, setError] = useState(null);
|
|
36
|
+
const [hasLoadedOnce, setHasLoadedOnce] = useState(false);
|
|
37
|
+
// Refs
|
|
38
|
+
const loadingRef = useRef(false);
|
|
39
|
+
// Load handler
|
|
40
|
+
const load = useCallback(async () => {
|
|
41
|
+
// Allow initial load when nextCursor is null and hasn't loaded yet
|
|
42
|
+
const isInitialLoad = nextCursor === null && !hasLoadedOnce;
|
|
43
|
+
if (loadingRef.current || (!nextCursor && !isInitialLoad))
|
|
44
|
+
return;
|
|
45
|
+
loadingRef.current = true;
|
|
46
|
+
setIsLoading(true);
|
|
47
|
+
setError(null);
|
|
48
|
+
try {
|
|
49
|
+
const result = await loader();
|
|
50
|
+
setItems(prev => [...prev, ...result.items]);
|
|
51
|
+
setNextCursor(result.next);
|
|
52
|
+
setHasLoadedOnce(true);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
setError(err instanceof Error ? err.message : 'Failed to load items');
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
loadingRef.current = false;
|
|
59
|
+
setIsLoading(false);
|
|
60
|
+
}
|
|
61
|
+
}, [loader, nextCursor, hasLoadedOnce]);
|
|
62
|
+
// Initial load - triggered via useEffect, not during render
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (!hasLoadedOnce && !loadingRef.current && nextCursor === null) {
|
|
65
|
+
load();
|
|
66
|
+
}
|
|
67
|
+
}, [hasLoadedOnce, nextCursor, load]);
|
|
68
|
+
// Retry handler
|
|
69
|
+
const retry = useCallback(async () => {
|
|
70
|
+
setError(null);
|
|
71
|
+
await load();
|
|
72
|
+
}, [load]);
|
|
73
|
+
// Reset handler
|
|
74
|
+
const reset = useCallback(() => {
|
|
75
|
+
setItems([]);
|
|
76
|
+
setNextCursor(null);
|
|
77
|
+
setIsLoading(false);
|
|
78
|
+
setError(null);
|
|
79
|
+
setHasLoadedOnce(false);
|
|
80
|
+
loadingRef.current = false;
|
|
81
|
+
}, []);
|
|
82
|
+
// Determine if we've reached the end
|
|
83
|
+
const hasReachedEnd = !nextCursor && hasLoadedOnce;
|
|
84
|
+
return {
|
|
85
|
+
items,
|
|
86
|
+
isLoading,
|
|
87
|
+
error,
|
|
88
|
+
hasReachedEnd,
|
|
89
|
+
load,
|
|
90
|
+
retry,
|
|
91
|
+
reset,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export default useLoadMore;
|
|
95
|
+
//# sourceMappingURL=useLoadMore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLoadMore.js","sourceRoot":"","sources":["../../../src/native/hooks/useLoadMore.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAsBjE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,WAAW,CACzB,MAA0D;IAE1D,QAAQ;IACR,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,OAAO;IACP,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,eAAe;IACf,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,mEAAmE;QACnE,MAAM,aAAa,GAAG,UAAU,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC;QAC5D,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,aAAa,CAAC;YAAE,OAAO;QAElE,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAExC,4DAA4D;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACjE,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAEtC,gBAAgB;IAChB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACnC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,gBAAgB;IAChB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qCAAqC;IACrC,MAAM,aAAa,GAAG,CAAC,UAAU,IAAI,aAAa,CAAC;IAEnD,OAAO;QACL,KAAK;QACL,SAAS;QACT,KAAK;QACL,aAAa;QACb,IAAI;QACJ,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useState, useRef } from 'react';
|
|
3
|
+
import { useInView } from 'react-intersection-observer';
|
|
4
|
+
/**
|
|
5
|
+
* useScrollVisibility - Hook for detecting when a scroll container is visible in the viewport.
|
|
6
|
+
*
|
|
7
|
+
* Useful for:
|
|
8
|
+
* - Pausing scroll detection when component is off-screen
|
|
9
|
+
* - Preventing unnecessary API calls when content isn't visible
|
|
10
|
+
* - Tracking user engagement with list content
|
|
11
|
+
*
|
|
12
|
+
* @param options - Configuration options
|
|
13
|
+
* @returns Object with refs and visibility state
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* const { containerRef, isVisible } = useScrollVisibility({ threshold: 0.1 });
|
|
18
|
+
*
|
|
19
|
+
* return (
|
|
20
|
+
* <div ref={containerRef}>
|
|
21
|
+
* {isVisible ? <InfiniteScrollList /> : <Placeholder />}
|
|
22
|
+
* </div>
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function useScrollVisibility(options = {}) {
|
|
27
|
+
const { threshold = 0.1, rootMargin = '0px', debounceMs = 500, hiddenDelayMs = 5000, } = options;
|
|
28
|
+
// State
|
|
29
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
30
|
+
const [hasBeenVisible, setHasBeenVisible] = useState(false);
|
|
31
|
+
// Refs
|
|
32
|
+
const debounceTimerRef = useRef(null);
|
|
33
|
+
const hiddenTimerRef = useRef(null);
|
|
34
|
+
// Intersection Observer
|
|
35
|
+
const { ref: containerRef, inView } = useInView({
|
|
36
|
+
threshold,
|
|
37
|
+
rootMargin,
|
|
38
|
+
triggerOnce: false,
|
|
39
|
+
});
|
|
40
|
+
// Handle visibility changes with debouncing
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
// Clear existing timers
|
|
43
|
+
if (debounceTimerRef.current) {
|
|
44
|
+
clearTimeout(debounceTimerRef.current);
|
|
45
|
+
}
|
|
46
|
+
if (hiddenTimerRef.current) {
|
|
47
|
+
clearTimeout(hiddenTimerRef.current);
|
|
48
|
+
}
|
|
49
|
+
if (inView) {
|
|
50
|
+
// Element entered viewport - debounce the visibility change
|
|
51
|
+
debounceTimerRef.current = setTimeout(() => {
|
|
52
|
+
setIsVisible(true);
|
|
53
|
+
setHasBeenVisible(true);
|
|
54
|
+
// Clear hidden timer if it was running
|
|
55
|
+
if (hiddenTimerRef.current) {
|
|
56
|
+
clearTimeout(hiddenTimerRef.current);
|
|
57
|
+
hiddenTimerRef.current = null;
|
|
58
|
+
}
|
|
59
|
+
}, debounceMs);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Element left viewport - delay before marking as hidden
|
|
63
|
+
hiddenTimerRef.current = setTimeout(() => {
|
|
64
|
+
setIsVisible(false);
|
|
65
|
+
}, hiddenDelayMs);
|
|
66
|
+
}
|
|
67
|
+
// Cleanup
|
|
68
|
+
return () => {
|
|
69
|
+
if (debounceTimerRef.current) {
|
|
70
|
+
clearTimeout(debounceTimerRef.current);
|
|
71
|
+
}
|
|
72
|
+
if (hiddenTimerRef.current) {
|
|
73
|
+
clearTimeout(hiddenTimerRef.current);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}, [inView, debounceMs, hiddenDelayMs]);
|
|
77
|
+
return {
|
|
78
|
+
containerRef,
|
|
79
|
+
isVisible,
|
|
80
|
+
hasBeenVisible,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export default useScrollVisibility;
|
|
84
|
+
//# sourceMappingURL=useScrollVisibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollVisibility.js","sourceRoot":"","sources":["../../../src/native/hooks/useScrollVisibility.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AA4BxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAsC,EAAE;IAExC,MAAM,EACJ,SAAS,GAAG,GAAG,EACf,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,GAAG,EAChB,aAAa,GAAG,IAAI,GACrB,GAAG,OAAO,CAAC;IAEZ,QAAQ;IACR,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,OAAO;IACP,MAAM,gBAAgB,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAE1E,wBAAwB;IACxB,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC9C,SAAS;QACT,UAAU;QACV,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB;QACxB,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,4DAA4D;YAC5D,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAExB,uCAAuC;gBACvC,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC3B,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACrC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;gBAChC,CAAC;YACH,CAAC,EAAE,UAAU,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACvC,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,EAAE,aAAa,CAAC,CAAC;QACpB,CAAC;QAED,UAAU;QACV,OAAO,GAAG,EAAE;YACV,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7B,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAExC,OAAO;QACL,YAAY;QACZ,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { useVirtualizer as useTanstackVirtualizer } from '@tanstack/react-virtual';
|
|
4
|
+
/**
|
|
5
|
+
* useVirtualizer - Hook for virtual scrolling large lists.
|
|
6
|
+
*
|
|
7
|
+
* Wrapper around @tanstack/react-virtual with simplified API.
|
|
8
|
+
* Supports both fixed and dynamic item heights.
|
|
9
|
+
*
|
|
10
|
+
* @param items - Array of items to virtualize
|
|
11
|
+
* @param options - Configuration options
|
|
12
|
+
* @returns Object with virtual items and control functions
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const { virtualItems, totalSize, measureElement } = useVirtualizer(items, {
|
|
17
|
+
* estimateSize: 100,
|
|
18
|
+
* overscan: 5,
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* return (
|
|
22
|
+
* <div ref={scrollRef} style={{ height: '400px', overflow: 'auto' }}>
|
|
23
|
+
* <div style={{ height: `${totalSize}px`, position: 'relative' }}>
|
|
24
|
+
* {virtualItems.map(virtualItem => (
|
|
25
|
+
* <div
|
|
26
|
+
* key={virtualItem.key}
|
|
27
|
+
* ref={measureElement}
|
|
28
|
+
* style={{
|
|
29
|
+
* position: 'absolute',
|
|
30
|
+
* top: 0,
|
|
31
|
+
* left: 0,
|
|
32
|
+
* width: '100%',
|
|
33
|
+
* transform: `translateY(${virtualItem.start}px)`,
|
|
34
|
+
* }}
|
|
35
|
+
* >
|
|
36
|
+
* {items[virtualItem.index]}
|
|
37
|
+
* </div>
|
|
38
|
+
* ))}
|
|
39
|
+
* </div>
|
|
40
|
+
* </div>
|
|
41
|
+
* );
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function useVirtualizer(items, options = {}) {
|
|
45
|
+
const { estimateSize = 100, overscan = 5, } = options;
|
|
46
|
+
// Ref for scroll element
|
|
47
|
+
const scrollRef = useRef(null);
|
|
48
|
+
// Create virtualizer directly without useMemo for options
|
|
49
|
+
const virtualizer = useTanstackVirtualizer({
|
|
50
|
+
count: items.length,
|
|
51
|
+
getScrollElement: () => scrollRef.current,
|
|
52
|
+
estimateSize: () => estimateSize,
|
|
53
|
+
overscan,
|
|
54
|
+
});
|
|
55
|
+
// Get virtual items
|
|
56
|
+
const virtualItems = virtualizer.getVirtualItems();
|
|
57
|
+
return {
|
|
58
|
+
virtualItems: virtualItems.map(item => ({
|
|
59
|
+
key: Number(item.key),
|
|
60
|
+
index: item.index,
|
|
61
|
+
start: item.start,
|
|
62
|
+
end: item.end,
|
|
63
|
+
size: item.size,
|
|
64
|
+
measureElement: virtualizer.measureElement,
|
|
65
|
+
})),
|
|
66
|
+
totalSize: virtualizer.getTotalSize(),
|
|
67
|
+
scrollToIndex: virtualizer.scrollToIndex,
|
|
68
|
+
scrollToOffset: virtualizer.scrollToOffset,
|
|
69
|
+
scrollOffset: virtualizer.scrollOffset ?? 0,
|
|
70
|
+
measureElement: virtualizer.measureElement,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export default useVirtualizer;
|
|
74
|
+
//# sourceMappingURL=useVirtualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualizer.js","sourceRoot":"","sources":["../../../src/native/hooks/useVirtualizer.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,MAAM,EAAW,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AA0CnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAU,EACV,UAAiC,EAAE;IAEnC,MAAM,EACJ,YAAY,GAAG,GAAG,EAClB,QAAQ,GAAG,CAAC,GACb,GAAG,OAAO,CAAC;IAEZ,yBAAyB;IACzB,MAAM,SAAS,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE5C,0DAA0D;IAC1D,MAAM,WAAW,GAAG,sBAAsB,CAAC;QACzC,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;QACzC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY;QAChC,QAAQ;KACT,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IAEnD,OAAO;QACL,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,WAAW,CAAC,cAAc;SAC3C,CAAC,CAAC;QACH,SAAS,EAAE,WAAW,CAAC,YAAY,EAAE;QACrC,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,CAAC;QAC3C,cAAc,EAAE,WAAW,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
|