@nascentdigital/funnel-ui 4.4.18
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/dist/Tailwind.d.ts +201 -0
- package/dist/Tailwind.js +282 -0
- package/dist/client/app/AppContainer.d.ts +10 -0
- package/dist/client/app/AppContainer.js +22 -0
- package/dist/client/app/AppContext.d.ts +11 -0
- package/dist/client/app/AppContext.js +6 -0
- package/dist/client/app/AppPreview.d.ts +7 -0
- package/dist/client/app/AppPreview.js +51 -0
- package/dist/client/app/PageContainer.d.ts +8 -0
- package/dist/client/app/PageContainer.js +22 -0
- package/dist/client/app/index.d.ts +9 -0
- package/dist/client/app/index.js +25 -0
- package/dist/client/app/useAppConfig.d.ts +2 -0
- package/dist/client/app/useAppConfig.js +9 -0
- package/dist/client/app/useBrand.d.ts +9 -0
- package/dist/client/app/useBrand.js +17 -0
- package/dist/client/app/useLanguage.d.ts +2 -0
- package/dist/client/app/useLanguage.js +11 -0
- package/dist/client/app/usePageData.d.ts +2 -0
- package/dist/client/app/usePageData.js +25 -0
- package/dist/client/app/usePageUrl.d.ts +1 -0
- package/dist/client/app/usePageUrl.js +12 -0
- package/dist/client/app/useRegion.d.ts +1 -0
- package/dist/client/app/useRegion.js +10 -0
- package/dist/client/app/useSite.d.ts +2 -0
- package/dist/client/app/useSite.js +13 -0
- package/dist/client/atomic/AnimatedText.d.ts +12 -0
- package/dist/client/atomic/AnimatedText.js +90 -0
- package/dist/client/atomic/MaskedInput.d.ts +20 -0
- package/dist/client/atomic/MaskedInput.js +63 -0
- package/dist/client/atomic/index.d.ts +2 -0
- package/dist/client/atomic/index.js +18 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedPlayer.d.ts +36 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedPlayer.js +2 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedVideo.d.ts +13 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedVideo.js +22 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContainer.d.ts +7 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContainer.js +24 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContext.d.ts +8 -0
- package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContext.js +11 -0
- package/dist/client/fields/EmbeddedVideo/index.d.ts +4 -0
- package/dist/client/fields/EmbeddedVideo/index.js +20 -0
- package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerProgress.d.ts +10 -0
- package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerProgress.js +66 -0
- package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerRef.d.ts +9 -0
- package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerRef.js +29 -0
- package/dist/client/fields/EmbeddedVideo/vimeo/VimeoPlayer.d.ts +63 -0
- package/dist/client/fields/EmbeddedVideo/vimeo/VimeoPlayer.js +326 -0
- package/dist/client/fields/EmbeddedVideo/vimeo/VimeoVideo.d.ts +13 -0
- package/dist/client/fields/EmbeddedVideo/vimeo/VimeoVideo.js +60 -0
- package/dist/client/fields/EmbeddedVideo/vimeo/index.d.ts +1 -0
- package/dist/client/fields/EmbeddedVideo/vimeo/index.js +17 -0
- package/dist/client/fields/EmbeddedVideo/youtube/YTApi.d.ts +92 -0
- package/dist/client/fields/EmbeddedVideo/youtube/YTApi.js +24 -0
- package/dist/client/fields/EmbeddedVideo/youtube/YoutubePlayer.d.ts +56 -0
- package/dist/client/fields/EmbeddedVideo/youtube/YoutubePlayer.js +288 -0
- package/dist/client/fields/EmbeddedVideo/youtube/YoutubeVideo.d.ts +13 -0
- package/dist/client/fields/EmbeddedVideo/youtube/YoutubeVideo.js +71 -0
- package/dist/client/fields/EmbeddedVideo/youtube/index.d.ts +3 -0
- package/dist/client/fields/EmbeddedVideo/youtube/index.js +19 -0
- package/dist/client/fields/LazyVideo.d.ts +8 -0
- package/dist/client/fields/LazyVideo.js +100 -0
- package/dist/client/fields/index.d.ts +2 -0
- package/dist/client/fields/index.js +18 -0
- package/dist/client/forms/Form.d.ts +13 -0
- package/dist/client/forms/Form.js +68 -0
- package/dist/client/forms/FormContext.d.ts +5 -0
- package/dist/client/forms/FormContext.js +6 -0
- package/dist/client/forms/fields/BooleanField.d.ts +16 -0
- package/dist/client/forms/fields/BooleanField.js +47 -0
- package/dist/client/forms/fields/EnumField.d.ts +20 -0
- package/dist/client/forms/fields/EnumField.js +65 -0
- package/dist/client/forms/fields/Field.d.ts +15 -0
- package/dist/client/forms/fields/Field.js +39 -0
- package/dist/client/forms/fields/FieldErrorController.d.ts +12 -0
- package/dist/client/forms/fields/FieldErrorController.js +13 -0
- package/dist/client/forms/fields/FieldLayout.d.ts +16 -0
- package/dist/client/forms/fields/FieldLayout.js +32 -0
- package/dist/client/forms/fields/TextField.d.ts +25 -0
- package/dist/client/forms/fields/TextField.js +178 -0
- package/dist/client/forms/fields/index.d.ts +2 -0
- package/dist/client/forms/fields/index.js +18 -0
- package/dist/client/forms/fields/useField.d.ts +2 -0
- package/dist/client/forms/fields/useField.js +26 -0
- package/dist/client/forms/index.d.ts +4 -0
- package/dist/client/forms/index.js +20 -0
- package/dist/client/forms/interactive/CheckboxField.d.ts +14 -0
- package/dist/client/forms/interactive/CheckboxField.js +19 -0
- package/dist/client/forms/interactive/RadioField.d.ts +12 -0
- package/dist/client/forms/interactive/RadioField.js +16 -0
- package/dist/client/forms/interactive/RadioGroupField.d.ts +12 -0
- package/dist/client/forms/interactive/RadioGroupField.js +10 -0
- package/dist/client/forms/interactive/SelectField.d.ts +17 -0
- package/dist/client/forms/interactive/SelectField.js +16 -0
- package/dist/client/forms/interactive/index.d.ts +4 -0
- package/dist/client/forms/interactive/index.js +20 -0
- package/dist/client/forms/useForm.d.ts +2 -0
- package/dist/client/forms/useForm.js +17 -0
- package/dist/client/forms/useTempFields.d.ts +7 -0
- package/dist/client/forms/useTempFields.js +54 -0
- package/dist/client/hooks/assets/index.d.ts +2 -0
- package/dist/client/hooks/assets/index.js +18 -0
- package/dist/client/hooks/assets/useImageProxy.d.ts +2 -0
- package/dist/client/hooks/assets/useImageProxy.js +43 -0
- package/dist/client/hooks/assets/useVideoProxy.d.ts +2 -0
- package/dist/client/hooks/assets/useVideoProxy.js +43 -0
- package/dist/client/hooks/breakpoint/BreakpointContainer.d.ts +9 -0
- package/dist/client/hooks/breakpoint/BreakpointContainer.js +39 -0
- package/dist/client/hooks/breakpoint/BreakpointContext.d.ts +7 -0
- package/dist/client/hooks/breakpoint/BreakpointContext.js +9 -0
- package/dist/client/hooks/breakpoint/index.d.ts +3 -0
- package/dist/client/hooks/breakpoint/index.js +19 -0
- package/dist/client/hooks/breakpoint/useCurrentBreakpoint.d.ts +2 -0
- package/dist/client/hooks/breakpoint/useCurrentBreakpoint.js +10 -0
- package/dist/client/hooks/index.d.ts +26 -0
- package/dist/client/hooks/index.js +42 -0
- package/dist/client/hooks/ui-lock/UILockContainer.d.ts +5 -0
- package/dist/client/hooks/ui-lock/UILockContainer.js +57 -0
- package/dist/client/hooks/ui-lock/UILockContext.d.ts +9 -0
- package/dist/client/hooks/ui-lock/UILockContext.js +6 -0
- package/dist/client/hooks/ui-lock/UILockRef.d.ts +36 -0
- package/dist/client/hooks/ui-lock/UILockRef.js +32 -0
- package/dist/client/hooks/ui-lock/index.d.ts +3 -0
- package/dist/client/hooks/ui-lock/index.js +19 -0
- package/dist/client/hooks/ui-lock/useUILock.d.ts +16 -0
- package/dist/client/hooks/ui-lock/useUILock.js +121 -0
- package/dist/client/hooks/useCounter.d.ts +11 -0
- package/dist/client/hooks/useCounter.js +57 -0
- package/dist/client/hooks/useCycle.d.ts +5 -0
- package/dist/client/hooks/useCycle.js +15 -0
- package/dist/client/hooks/useElementRect.d.ts +2 -0
- package/dist/client/hooks/useElementRect.js +63 -0
- package/dist/client/hooks/useElementScrolled.d.ts +17 -0
- package/dist/client/hooks/useElementScrolled.js +51 -0
- package/dist/client/hooks/useElementSelector.d.ts +2 -0
- package/dist/client/hooks/useElementSelector.js +160 -0
- package/dist/client/hooks/useElementSize.d.ts +2 -0
- package/dist/client/hooks/useElementSize.js +64 -0
- package/dist/client/hooks/useFindElements.d.ts +9 -0
- package/dist/client/hooks/useFindElements.js +147 -0
- package/dist/client/hooks/useInViewport.d.ts +16 -0
- package/dist/client/hooks/useInViewport.js +46 -0
- package/dist/client/hooks/useIsDesktop.d.ts +1 -0
- package/dist/client/hooks/useIsDesktop.js +22 -0
- package/dist/client/hooks/useKeyboardFocus.d.ts +7 -0
- package/dist/client/hooks/useKeyboardFocus.js +40 -0
- package/dist/client/hooks/useLatestValue.d.ts +1 -0
- package/dist/client/hooks/useLatestValue.js +21 -0
- package/dist/client/hooks/useLock.d.ts +13 -0
- package/dist/client/hooks/useLock.js +161 -0
- package/dist/client/hooks/useMixedResponsiveValue.d.ts +2 -0
- package/dist/client/hooks/useMixedResponsiveValue.js +20 -0
- package/dist/client/hooks/usePathname.d.ts +9 -0
- package/dist/client/hooks/usePathname.js +25 -0
- package/dist/client/hooks/useRefElement.d.ts +8 -0
- package/dist/client/hooks/useRefElement.js +34 -0
- package/dist/client/hooks/useRefresh.d.ts +2 -0
- package/dist/client/hooks/useRefresh.js +25 -0
- package/dist/client/hooks/useResizeObserver.d.ts +5 -0
- package/dist/client/hooks/useResizeObserver.js +179 -0
- package/dist/client/hooks/useResponsiveValue.d.ts +2 -0
- package/dist/client/hooks/useResponsiveValue.js +16 -0
- package/dist/client/hooks/useRouter.d.ts +20 -0
- package/dist/client/hooks/useRouter.js +49 -0
- package/dist/client/hooks/useSafeLayoutEffect.d.ts +2 -0
- package/dist/client/hooks/useSafeLayoutEffect.js +9 -0
- package/dist/client/hooks/useTouch.d.ts +2 -0
- package/dist/client/hooks/useTouch.js +10 -0
- package/dist/client/hooks/useViewportSize.d.ts +7 -0
- package/dist/client/hooks/useViewportSize.js +66 -0
- package/dist/client/hooks/useWindowScrolled.d.ts +8 -0
- package/dist/client/hooks/useWindowScrolled.js +52 -0
- package/dist/client/index.d.ts +9 -0
- package/dist/client/index.js +25 -0
- package/dist/client/interaction/Carousel.d.ts +48 -0
- package/dist/client/interaction/Carousel.js +498 -0
- package/dist/client/interaction/ClickObserver.d.ts +19 -0
- package/dist/client/interaction/ClickObserver.js +76 -0
- package/dist/client/interaction/InfiniteScroller.d.ts +9 -0
- package/dist/client/interaction/InfiniteScroller.js +47 -0
- package/dist/client/interaction/Loader.d.ts +14 -0
- package/dist/client/interaction/Loader.js +74 -0
- package/dist/client/interaction/Marquee.d.ts +5 -0
- package/dist/client/interaction/Marquee.js +26 -0
- package/dist/client/interaction/Popup.d.ts +36 -0
- package/dist/client/interaction/Popup.js +244 -0
- package/dist/client/interaction/Tooltip.d.ts +16 -0
- package/dist/client/interaction/Tooltip.js +122 -0
- package/dist/client/interaction/UILevel.d.ts +1 -0
- package/dist/client/interaction/UILevel.js +2 -0
- package/dist/client/interaction/backdrop/BackdropContainer.d.ts +5 -0
- package/dist/client/interaction/backdrop/BackdropContainer.js +114 -0
- package/dist/client/interaction/backdrop/BackdropContext.d.ts +8 -0
- package/dist/client/interaction/backdrop/BackdropContext.js +6 -0
- package/dist/client/interaction/backdrop/BackdropEvent.d.ts +64 -0
- package/dist/client/interaction/backdrop/BackdropEvent.js +92 -0
- package/dist/client/interaction/backdrop/index.d.ts +4 -0
- package/dist/client/interaction/backdrop/index.js +20 -0
- package/dist/client/interaction/backdrop/useBackdrop.d.ts +13 -0
- package/dist/client/interaction/backdrop/useBackdrop.js +58 -0
- package/dist/client/interaction/backdrop/useBackdropClick.d.ts +2 -0
- package/dist/client/interaction/backdrop/useBackdropClick.js +21 -0
- package/dist/client/interaction/backdrop/useBackdropVisible.d.ts +1 -0
- package/dist/client/interaction/backdrop/useBackdropVisible.js +30 -0
- package/dist/client/interaction/focus/FocusArea.d.ts +10 -0
- package/dist/client/interaction/focus/FocusArea.js +38 -0
- package/dist/client/interaction/focus/FocusContext.d.ts +7 -0
- package/dist/client/interaction/focus/FocusContext.js +7 -0
- package/dist/client/interaction/focus/FocusController.d.ts +9 -0
- package/dist/client/interaction/focus/FocusController.js +40 -0
- package/dist/client/interaction/focus/FocusService.d.ts +20 -0
- package/dist/client/interaction/focus/FocusService.js +204 -0
- package/dist/client/interaction/focus/LinkedList.d.ts +18 -0
- package/dist/client/interaction/focus/LinkedList.js +122 -0
- package/dist/client/interaction/focus/index.d.ts +2 -0
- package/dist/client/interaction/focus/index.js +18 -0
- package/dist/client/interaction/focus/useFocusService.d.ts +2 -0
- package/dist/client/interaction/focus/useFocusService.js +14 -0
- package/dist/client/interaction/index.d.ts +12 -0
- package/dist/client/interaction/index.js +28 -0
- package/dist/client/interaction/modal/Modal.d.ts +29 -0
- package/dist/client/interaction/modal/Modal.js +136 -0
- package/dist/client/interaction/modal/ModalContainer.d.ts +5 -0
- package/dist/client/interaction/modal/ModalContainer.js +104 -0
- package/dist/client/interaction/modal/ModalContext.d.ts +8 -0
- package/dist/client/interaction/modal/ModalContext.js +6 -0
- package/dist/client/interaction/modal/ModalEvent.d.ts +39 -0
- package/dist/client/interaction/modal/ModalEvent.js +53 -0
- package/dist/client/interaction/modal/index.d.ts +2 -0
- package/dist/client/interaction/modal/index.js +18 -0
- package/dist/client/interaction/paginator/Paginator.d.ts +33 -0
- package/dist/client/interaction/paginator/Paginator.js +67 -0
- package/dist/client/interaction/paginator/index.d.ts +1 -0
- package/dist/client/interaction/paginator/index.js +17 -0
- package/dist/client/layouts/MasonaryLayout.d.ts +7 -0
- package/dist/client/layouts/MasonaryLayout.js +53 -0
- package/dist/client/layouts/index.d.ts +1 -0
- package/dist/client/layouts/index.js +17 -0
- package/dist/client/refs.d.ts +2 -0
- package/dist/client/refs.js +13 -0
- package/dist/client/transitions/Revelator.d.ts +42 -0
- package/dist/client/transitions/Revelator.js +60 -0
- package/dist/client/transitions/SideScroll.d.ts +14 -0
- package/dist/client/transitions/SideScroll.js +51 -0
- package/dist/client/transitions/StyleInViewport.d.ts +20 -0
- package/dist/client/transitions/StyleInViewport.js +66 -0
- package/dist/client/transitions/StyleSwitch.d.ts +297 -0
- package/dist/client/transitions/StyleSwitch.js +78 -0
- package/dist/client/transitions/index.d.ts +6 -0
- package/dist/client/transitions/index.js +22 -0
- package/dist/client/transitions/parallax/Parallax.d.ts +20 -0
- package/dist/client/transitions/parallax/Parallax.js +72 -0
- package/dist/client/transitions/parallax/ParallaxContext.d.ts +11 -0
- package/dist/client/transitions/parallax/ParallaxContext.js +6 -0
- package/dist/client/transitions/parallax/ParallaxItem.d.ts +14 -0
- package/dist/client/transitions/parallax/ParallaxItem.js +37 -0
- package/dist/client/transitions/parallax/ParallaxRemote.d.ts +29 -0
- package/dist/client/transitions/parallax/ParallaxRemote.js +136 -0
- package/dist/client/transitions/parallax/ParallaxUtils.d.ts +5 -0
- package/dist/client/transitions/parallax/ParallaxUtils.js +19 -0
- package/dist/client/transitions/parallax/index.d.ts +2 -0
- package/dist/client/transitions/parallax/index.js +18 -0
- package/dist/client/transitions/parallax/useDisableParallax.d.ts +4 -0
- package/dist/client/transitions/parallax/useDisableParallax.js +13 -0
- package/dist/client/transitions/parallax/useParallax.d.ts +2 -0
- package/dist/client/transitions/parallax/useParallax.js +18 -0
- package/dist/client/transitions/parallax/useTransforms.d.ts +34 -0
- package/dist/client/transitions/parallax/useTransforms.js +176 -0
- package/dist/client/transitions/reveal/Reveal.d.ts +14 -0
- package/dist/client/transitions/reveal/Reveal.js +75 -0
- package/dist/client/transitions/reveal/RevealAnimation.d.ts +17 -0
- package/dist/client/transitions/reveal/RevealAnimation.js +2 -0
- package/dist/client/transitions/reveal/RevealAnimator.d.ts +13 -0
- package/dist/client/transitions/reveal/RevealAnimator.js +41 -0
- package/dist/client/transitions/reveal/RevealController.d.ts +13 -0
- package/dist/client/transitions/reveal/RevealController.js +114 -0
- package/dist/client/transitions/reveal/RevealElementAnimator.d.ts +13 -0
- package/dist/client/transitions/reveal/RevealElementAnimator.js +65 -0
- package/dist/client/transitions/reveal/index.d.ts +2 -0
- package/dist/client/transitions/reveal/index.js +18 -0
- package/dist/client/utils/OnKey.d.ts +20 -0
- package/dist/client/utils/OnKey.js +33 -0
- package/dist/client/utils/SharedMutationObserver.d.ts +20 -0
- package/dist/client/utils/SharedMutationObserver.js +202 -0
- package/dist/client/utils/index.d.ts +2 -0
- package/dist/client/utils/index.js +18 -0
- package/dist/server/atomic/Markup.d.ts +14 -0
- package/dist/server/atomic/Markup.js +34 -0
- package/dist/server/atomic/NascentLogo.d.ts +6 -0
- package/dist/server/atomic/NascentLogo.js +9 -0
- package/dist/server/atomic/index.d.ts +2 -0
- package/dist/server/atomic/index.js +18 -0
- package/dist/server/blocks/Block.d.ts +16 -0
- package/dist/server/blocks/Block.js +92 -0
- package/dist/server/blocks/Clients.d.ts +33 -0
- package/dist/server/blocks/Clients.js +82 -0
- package/dist/server/blocks/Editorial.d.ts +33 -0
- package/dist/server/blocks/Editorial.js +80 -0
- package/dist/server/blocks/Form.d.ts +46 -0
- package/dist/server/blocks/Form.js +74 -0
- package/dist/server/blocks/FormMessage.d.ts +15 -0
- package/dist/server/blocks/FormMessage.js +37 -0
- package/dist/server/blocks/MediaLayout.d.ts +309 -0
- package/dist/server/blocks/MediaLayout.js +105 -0
- package/dist/server/blocks/Message.d.ts +76 -0
- package/dist/server/blocks/Message.js +352 -0
- package/dist/server/blocks/Outcome.d.ts +84 -0
- package/dist/server/blocks/Outcome.js +489 -0
- package/dist/server/blocks/OutcomeDetail.d.ts +303 -0
- package/dist/server/blocks/OutcomeDetail.js +63 -0
- package/dist/server/blocks/Projects.d.ts +43 -0
- package/dist/server/blocks/Projects.js +109 -0
- package/dist/server/blocks/Stat.d.ts +325 -0
- package/dist/server/blocks/Stat.js +107 -0
- package/dist/server/blocks/Stats.d.ts +36 -0
- package/dist/server/blocks/Stats.js +79 -0
- package/dist/server/blocks/Testimonial.d.ts +30 -0
- package/dist/server/blocks/Testimonial.js +68 -0
- package/dist/server/blocks/ValueProp.d.ts +43 -0
- package/dist/server/blocks/ValueProp.js +125 -0
- package/dist/server/blocks/index.d.ts +13 -0
- package/dist/server/blocks/index.js +29 -0
- package/dist/server/data/PrePaginator.d.ts +8 -0
- package/dist/server/data/PrePaginator.js +30 -0
- package/dist/server/data/index.d.ts +1 -0
- package/dist/server/data/index.js +17 -0
- package/dist/server/entities/Client.d.ts +327 -0
- package/dist/server/entities/Client.js +118 -0
- package/dist/server/entities/ClientBadge.d.ts +293 -0
- package/dist/server/entities/ClientBadge.js +37 -0
- package/dist/server/entities/Person.d.ts +314 -0
- package/dist/server/entities/Person.js +98 -0
- package/dist/server/entities/Project.d.ts +329 -0
- package/dist/server/entities/Project.js +112 -0
- package/dist/server/entities/UniqueSellingPoint.d.ts +327 -0
- package/dist/server/entities/UniqueSellingPoint.js +119 -0
- package/dist/server/entities/index.d.ts +6 -0
- package/dist/server/entities/index.js +22 -0
- package/dist/server/entities/previews/MessagePreview.d.ts +299 -0
- package/dist/server/entities/previews/MessagePreview.js +41 -0
- package/dist/server/entities/previews/PagePreview.d.ts +10 -0
- package/dist/server/entities/previews/PagePreview.js +42 -0
- package/dist/server/entities/previews/index.d.ts +2 -0
- package/dist/server/entities/previews/index.js +18 -0
- package/dist/server/fields/Caption.d.ts +13 -0
- package/dist/server/fields/Caption.js +45 -0
- package/dist/server/fields/Description.d.ts +13 -0
- package/dist/server/fields/Description.js +46 -0
- package/dist/server/fields/FreeFormContent.d.ts +17 -0
- package/dist/server/fields/FreeFormContent.js +43 -0
- package/dist/server/fields/Headline.d.ts +13 -0
- package/dist/server/fields/Headline.js +46 -0
- package/dist/server/fields/Icon.d.ts +10 -0
- package/dist/server/fields/Icon.js +39 -0
- package/dist/server/fields/Link.d.ts +16 -0
- package/dist/server/fields/Link.js +61 -0
- package/dist/server/fields/Quote.d.ts +13 -0
- package/dist/server/fields/Quote.js +46 -0
- package/dist/server/fields/RichText.d.ts +296 -0
- package/dist/server/fields/RichText.js +217 -0
- package/dist/server/fields/Title.d.ts +292 -0
- package/dist/server/fields/Title.js +38 -0
- package/dist/server/fields/Visual.d.ts +12 -0
- package/dist/server/fields/Visual.js +66 -0
- package/dist/server/fields/index.d.ts +10 -0
- package/dist/server/fields/index.js +26 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +25 -0
- package/dist/server/panels/BlockPanel.d.ts +14 -0
- package/dist/server/panels/BlockPanel.js +56 -0
- package/dist/server/panels/MessagePanel.d.ts +31 -0
- package/dist/server/panels/MessagePanel.js +81 -0
- package/dist/server/panels/VisualPanel.d.ts +36 -0
- package/dist/server/panels/VisualPanel.js +143 -0
- package/dist/server/panels/index.d.ts +3 -0
- package/dist/server/panels/index.js +19 -0
- package/dist/server/schema/Anchor.d.ts +7 -0
- package/dist/server/schema/Anchor.js +24 -0
- package/dist/server/schema/AspectRatio.d.ts +9 -0
- package/dist/server/schema/AspectRatio.js +43 -0
- package/dist/server/schema/BlockConfig.d.ts +56 -0
- package/dist/server/schema/BlockConfig.js +192 -0
- package/dist/server/schema/CollectionSchema.d.ts +4 -0
- package/dist/server/schema/CollectionSchema.js +15 -0
- package/dist/server/schema/ItemAlignment.d.ts +12 -0
- package/dist/server/schema/ItemAlignment.js +42 -0
- package/dist/server/schema/ItemPosition.d.ts +6 -0
- package/dist/server/schema/ItemPosition.js +25 -0
- package/dist/server/schema/ItemSize.d.ts +6 -0
- package/dist/server/schema/ItemSize.js +24 -0
- package/dist/server/schema/TextAlignment.d.ts +6 -0
- package/dist/server/schema/TextAlignment.js +22 -0
- package/dist/server/schema/index.d.ts +8 -0
- package/dist/server/schema/index.js +24 -0
- package/dist/server/sections/index.d.ts +1 -0
- package/dist/server/sections/index.js +17 -0
- package/dist/server/sections/renderSection.d.ts +6 -0
- package/dist/server/sections/renderSection.js +19 -0
- package/dist/server/transitions/Slide.d.ts +293 -0
- package/dist/server/transitions/Slide.js +31 -0
- package/dist/server/transitions/index.d.ts +3 -0
- package/dist/server/transitions/index.js +19 -0
- package/dist/styles/app/AppPreview.css +49 -0
- package/dist/styles/app/_index.css +1 -0
- package/dist/styles/base/_index.css +2 -0
- package/dist/styles/base/global.css +9 -0
- package/dist/styles/base/tailwind.css +3 -0
- package/dist/styles/blocks/Block-layout.css +244 -0
- package/dist/styles/blocks/Block-spacing.css +150 -0
- package/dist/styles/blocks/Block-theming.css +14 -0
- package/dist/styles/blocks/Clients.css +10 -0
- package/dist/styles/blocks/Editorial.css +133 -0
- package/dist/styles/blocks/Form.css +13 -0
- package/dist/styles/blocks/MediaLayout.css +215 -0
- package/dist/styles/blocks/Message.css +353 -0
- package/dist/styles/blocks/Outcome.css +83 -0
- package/dist/styles/blocks/Projects.css +18 -0
- package/dist/styles/blocks/Stat.css +45 -0
- package/dist/styles/blocks/Stats.css +38 -0
- package/dist/styles/blocks/Testimonial.css +323 -0
- package/dist/styles/blocks/ValueProp.css +135 -0
- package/dist/styles/blocks/_index.css +14 -0
- package/dist/styles/components/_index.css +3 -0
- package/dist/styles/components/container.css +58 -0
- package/dist/styles/components/divider.css +6 -0
- package/dist/styles/components/embed/VimeoPlayer.css +49 -0
- package/dist/styles/components/embed/YoutubePlayer.css +72 -0
- package/dist/styles/components/embed/_index.css +2 -0
- package/dist/styles/entities/Client.css +5 -0
- package/dist/styles/entities/ClientBadge.css +14 -0
- package/dist/styles/entities/Person.css +76 -0
- package/dist/styles/entities/Project.css +44 -0
- package/dist/styles/entities/UniqueSellingPoint.css +54 -0
- package/dist/styles/entities/_index.css +5 -0
- package/dist/styles/fields/Caption.css +23 -0
- package/dist/styles/fields/Description.css +23 -0
- package/dist/styles/fields/FreeFormContent.css +24 -0
- package/dist/styles/fields/Headline.css +38 -0
- package/dist/styles/fields/Icon.css +20 -0
- package/dist/styles/fields/LazyVideo.css +12 -0
- package/dist/styles/fields/Link.css +16 -0
- package/dist/styles/fields/Quote.css +48 -0
- package/dist/styles/fields/RichText.css +243 -0
- package/dist/styles/fields/Title.css +17 -0
- package/dist/styles/fields/Visual.css +27 -0
- package/dist/styles/fields/_index.css +11 -0
- package/dist/styles/index.css +9 -0
- package/dist/styles/layouts/MasonryLayout.css +24 -0
- package/dist/styles/layouts/_index.css +1 -0
- package/dist/styles/panels/MessagePanel.css +56 -0
- package/dist/styles/panels/VisualPanel.css +58 -0
- package/dist/styles/panels/_index.css +2 -0
- package/dist/styles/utilities/_index.css +7 -0
- package/dist/styles/utilities/ellipsis.css +7 -0
- package/dist/styles/utilities/fade.css +16 -0
- package/dist/styles/utilities/glass.css +8 -0
- package/dist/styles/utilities/interpolate.css +22 -0
- package/dist/styles/utilities/masks.css +18 -0
- package/dist/styles/utilities/stacked.css +24 -0
- package/dist/styles/utilities/text-gradient.css +37 -0
- package/dist/types/HTMLBlockElement.d.ts +6 -0
- package/dist/types/HTMLBlockElement.js +2 -0
- package/dist/types/HTMLElements.d.ts +129 -0
- package/dist/types/HTMLElements.js +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +18 -0
- package/package.json +73 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { UILockRef } from './UILockRef';
|
|
3
|
+
export declare function useUILock(element?: HTMLElement | null | undefined): UILock;
|
|
4
|
+
export declare class UILock {
|
|
5
|
+
private readonly eventBus;
|
|
6
|
+
private readonly refs;
|
|
7
|
+
private readonly element;
|
|
8
|
+
constructor(eventBus: Subject<UILockRef.Event>, refs: Array<UILockRef>, element: HTMLElement | null | undefined);
|
|
9
|
+
get isLocked(): boolean;
|
|
10
|
+
get canLock(): boolean;
|
|
11
|
+
lock({ lockChildren, delegationRule }: UILock.LockArgs): void;
|
|
12
|
+
unlock(): void;
|
|
13
|
+
}
|
|
14
|
+
export declare namespace UILock {
|
|
15
|
+
type LockArgs = UILockRef.Config;
|
|
16
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UILock = void 0;
|
|
4
|
+
exports.useUILock = useUILock;
|
|
5
|
+
const funnel_core_1 = require("@nascentdigital/funnel-core");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const UILockContext_1 = require("./UILockContext");
|
|
8
|
+
const UILockRef_1 = require("./UILockRef");
|
|
9
|
+
// hook
|
|
10
|
+
function useUILock(element) {
|
|
11
|
+
// state
|
|
12
|
+
const { eventBus, refs } = (0, react_1.useContext)(UILockContext_1.UILockContext);
|
|
13
|
+
// return
|
|
14
|
+
return (0, react_1.useMemo)(() => {
|
|
15
|
+
return new UILock(eventBus, refs, element);
|
|
16
|
+
}, [eventBus, refs, element]);
|
|
17
|
+
}
|
|
18
|
+
// ui lock
|
|
19
|
+
class UILock {
|
|
20
|
+
constructor(eventBus, refs, element) {
|
|
21
|
+
this.eventBus = eventBus;
|
|
22
|
+
this.refs = refs;
|
|
23
|
+
this.element = element;
|
|
24
|
+
}
|
|
25
|
+
get isLocked() {
|
|
26
|
+
// check if any other items are locked if client is an observer (element === undefined instead of NULL)
|
|
27
|
+
const { refs, element } = this;
|
|
28
|
+
if (element === undefined) {
|
|
29
|
+
return refs.length > 0;
|
|
30
|
+
}
|
|
31
|
+
// or skip if we don't have an element bounded yet
|
|
32
|
+
else if (element === null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
// return if there is no lock yet
|
|
36
|
+
const lock = funnel_core_1.ArrayUtils.last(refs);
|
|
37
|
+
if (!lock) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
// return if the given element is the latest lock holder
|
|
41
|
+
else if (element === lock.lockHolder) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// otherwise if the element is a child of the lock holder
|
|
45
|
+
else if (lock.lockHolder.contains(element)) {
|
|
46
|
+
// determine based on the lock holder's `lockChildren` config
|
|
47
|
+
return lock.config.lockChildren;
|
|
48
|
+
}
|
|
49
|
+
// otherwise the element is locked
|
|
50
|
+
else {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
get canLock() {
|
|
55
|
+
// skip if we don't have an element bounded yet
|
|
56
|
+
const { refs, element } = this;
|
|
57
|
+
if (!element) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// return if there is no lock yet
|
|
61
|
+
const lock = funnel_core_1.ArrayUtils.last(refs);
|
|
62
|
+
if (!lock) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
// return if the given element is the latest lock holder
|
|
66
|
+
else if (element === lock.lockHolder) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// determine based on the lock holder's config
|
|
70
|
+
else {
|
|
71
|
+
switch (lock.config.delegationRule) {
|
|
72
|
+
// return false if no one can lock
|
|
73
|
+
case 'none':
|
|
74
|
+
return false;
|
|
75
|
+
// if the element is a child of the lock holder return true otherwise false
|
|
76
|
+
case 'children':
|
|
77
|
+
return lock.lockHolder.contains(element);
|
|
78
|
+
// otherwise everyone can lock
|
|
79
|
+
default:
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
lock({ lockChildren, delegationRule }) {
|
|
85
|
+
// throw if we don't have an element bounded yet
|
|
86
|
+
if (!this.element) {
|
|
87
|
+
throw new funnel_core_1.InvalidOperationError(`Cannot lock unless an element is provided`);
|
|
88
|
+
}
|
|
89
|
+
// throw if element is not allowed to lock
|
|
90
|
+
else if (!this.canLock) {
|
|
91
|
+
throw new funnel_core_1.InvalidOperationError(`${this.element} is not allowed to lock the UI`);
|
|
92
|
+
}
|
|
93
|
+
// create and send a lock event
|
|
94
|
+
this.eventBus.next(UILockRef_1.UILockRef.Event.create({
|
|
95
|
+
action: 'lock',
|
|
96
|
+
lock: {
|
|
97
|
+
lockHolder: this.element,
|
|
98
|
+
config: {
|
|
99
|
+
lockChildren,
|
|
100
|
+
delegationRule
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
unlock() {
|
|
106
|
+
// throw if we don't have an element bounded yet
|
|
107
|
+
if (!this.element) {
|
|
108
|
+
throw new funnel_core_1.InvalidOperationError(`Cannot unlock unless an element is provided`);
|
|
109
|
+
}
|
|
110
|
+
// throw if the element hasn't requested a lock before
|
|
111
|
+
else if (!this.refs.some(({ lockHolder }) => this.element === lockHolder)) {
|
|
112
|
+
throw new funnel_core_1.InvalidOperationError(`Attempt to unlock without issuing a lock by element ${this.element}`);
|
|
113
|
+
}
|
|
114
|
+
// create and send an unlock event
|
|
115
|
+
this.eventBus.next(UILockRef_1.UILockRef.Event.create({
|
|
116
|
+
action: 'unlock',
|
|
117
|
+
lockHolder: this.element
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.UILock = UILock;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function useCounter(initial?: number): Counter;
|
|
2
|
+
export declare class Counter {
|
|
3
|
+
private _count$;
|
|
4
|
+
constructor(count?: number);
|
|
5
|
+
get count(): number;
|
|
6
|
+
get count$(): import("rxjs").Observable<number>;
|
|
7
|
+
set(count: number): void;
|
|
8
|
+
up(): void;
|
|
9
|
+
down(): void;
|
|
10
|
+
change(delta: number): number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Counter = void 0;
|
|
4
|
+
exports.useCounter = useCounter;
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const useTouch_1 = require("./useTouch");
|
|
8
|
+
// hook
|
|
9
|
+
function useCounter(initial = 0) {
|
|
10
|
+
// memoize counter
|
|
11
|
+
const counter = (0, react_1.useMemo)(() => new Counter(initial), [initial]);
|
|
12
|
+
const touch = (0, useTouch_1.useTouch)();
|
|
13
|
+
// refresh on count changes
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
// touch when counter changes
|
|
16
|
+
const subscription = counter.count$
|
|
17
|
+
.pipe((0, rxjs_1.distinctUntilChanged)())
|
|
18
|
+
.subscribe(() => touch());
|
|
19
|
+
// unsubscribe on unmount
|
|
20
|
+
return () => subscription.unsubscribe();
|
|
21
|
+
}, [counter, touch]);
|
|
22
|
+
// return counter
|
|
23
|
+
return counter;
|
|
24
|
+
}
|
|
25
|
+
// counter
|
|
26
|
+
class Counter {
|
|
27
|
+
constructor(count = 0) {
|
|
28
|
+
// initialize instance variables
|
|
29
|
+
this._count$ = new rxjs_1.BehaviorSubject(count);
|
|
30
|
+
}
|
|
31
|
+
get count() {
|
|
32
|
+
return this._count$.getValue();
|
|
33
|
+
}
|
|
34
|
+
get count$() {
|
|
35
|
+
return this._count$.asObservable();
|
|
36
|
+
}
|
|
37
|
+
set(count) {
|
|
38
|
+
// update count
|
|
39
|
+
this._count$.next(count);
|
|
40
|
+
}
|
|
41
|
+
up() {
|
|
42
|
+
this.change(1);
|
|
43
|
+
}
|
|
44
|
+
down() {
|
|
45
|
+
this.change(-1);
|
|
46
|
+
}
|
|
47
|
+
change(delta) {
|
|
48
|
+
// determine new value
|
|
49
|
+
const { count, _count$ } = this;
|
|
50
|
+
const newCount = count + delta;
|
|
51
|
+
// update count
|
|
52
|
+
_count$.next(newCount);
|
|
53
|
+
// return it
|
|
54
|
+
return newCount;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Counter = Counter;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.useCycle = useCycle;
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
// hook
|
|
7
|
+
function useCycle(options) {
|
|
8
|
+
// bind state
|
|
9
|
+
const [optionIndex, setOptionIndex] = (0, react_1.useState)(0);
|
|
10
|
+
const option = options[optionIndex];
|
|
11
|
+
// next method
|
|
12
|
+
const next = () => setOptionIndex((optionIndex + 1) % options.length);
|
|
13
|
+
// return hook
|
|
14
|
+
return [option, next];
|
|
15
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.useElementRect = useElementRect;
|
|
38
|
+
const funnel_core_1 = require("@nascentdigital/funnel-core");
|
|
39
|
+
const useResizeObserver_1 = require("./useResizeObserver");
|
|
40
|
+
const react_1 = __importStar(require("react"));
|
|
41
|
+
// hook
|
|
42
|
+
function useElementRect(element) {
|
|
43
|
+
// bind hooks
|
|
44
|
+
const [rect, setRect] = react_1.default.useState();
|
|
45
|
+
// bind initial size
|
|
46
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
47
|
+
if (element) {
|
|
48
|
+
setRect(funnel_core_1.Rect.fromRect(element.getBoundingClientRect()));
|
|
49
|
+
}
|
|
50
|
+
}, [element]);
|
|
51
|
+
// bind resize on any additional change
|
|
52
|
+
(0, useResizeObserver_1.useResizeObserver)(element, () => {
|
|
53
|
+
// skip if there's no element
|
|
54
|
+
if (!element) {
|
|
55
|
+
setRect(new funnel_core_1.Rect(0, 0, 0, 0));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// or use client rect
|
|
59
|
+
setRect(funnel_core_1.Rect.fromRect(element.getBoundingClientRect()));
|
|
60
|
+
});
|
|
61
|
+
// return size changes
|
|
62
|
+
return rect;
|
|
63
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export declare function useElementScrolled<TElement extends HTMLElement = HTMLElement>(container: RefObject<TElement | null> | undefined, { direction }?: useElementScrolled.Options): useElementScrolled.Result;
|
|
3
|
+
export declare namespace useElementScrolled {
|
|
4
|
+
type Options = {
|
|
5
|
+
direction?: ScrollDirection;
|
|
6
|
+
};
|
|
7
|
+
type Result = {
|
|
8
|
+
scrollX?: ScrollState;
|
|
9
|
+
scrollY?: ScrollState;
|
|
10
|
+
};
|
|
11
|
+
type ScrollDirection = 'x' | 'y' | 'xy';
|
|
12
|
+
type ScrollPosition = 'start' | 'between' | 'end';
|
|
13
|
+
type ScrollState = {
|
|
14
|
+
position: ScrollPosition;
|
|
15
|
+
offset: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useElementScrolled = useElementScrolled;
|
|
4
|
+
const funnel_core_1 = require("@nascentdigital/funnel-core");
|
|
5
|
+
const react_1 = require("motion/react");
|
|
6
|
+
const react_2 = require("react");
|
|
7
|
+
// component
|
|
8
|
+
function useElementScrolled(container, { direction = 'y' } = {}) {
|
|
9
|
+
// bind hooks + props
|
|
10
|
+
const [scrollX, setScrollX] = (0, react_2.useState)();
|
|
11
|
+
const [scrollY, setScrollY] = (0, react_2.useState)();
|
|
12
|
+
const { scrollXProgress, scrollYProgress } = (0, react_1.useScroll)({ container });
|
|
13
|
+
// x-scroll
|
|
14
|
+
(0, react_1.useMotionValueEvent)(scrollXProgress, "change", direction === 'x'
|
|
15
|
+
? offset => setScrollX({
|
|
16
|
+
position: getPosition(container, offset),
|
|
17
|
+
offset
|
|
18
|
+
})
|
|
19
|
+
: funnel_core_1.Fn.Identity);
|
|
20
|
+
// y-scroll
|
|
21
|
+
(0, react_1.useMotionValueEvent)(scrollYProgress, "change", direction === 'y'
|
|
22
|
+
? offset => setScrollY({
|
|
23
|
+
position: getPosition(container, offset),
|
|
24
|
+
offset,
|
|
25
|
+
})
|
|
26
|
+
: funnel_core_1.Fn.Identity);
|
|
27
|
+
// return scrolled
|
|
28
|
+
return {
|
|
29
|
+
scrollX,
|
|
30
|
+
scrollY
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// helpers
|
|
34
|
+
function getPosition(containerRef, offset) {
|
|
35
|
+
var _a;
|
|
36
|
+
// handle top
|
|
37
|
+
if (offset === 0) {
|
|
38
|
+
return 'start';
|
|
39
|
+
}
|
|
40
|
+
// handle bottom (might be top if it can't scroll)
|
|
41
|
+
else if (offset === 1) {
|
|
42
|
+
// determine if scrolled at all
|
|
43
|
+
return ((_a = containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTop) === 0
|
|
44
|
+
? 'start'
|
|
45
|
+
: 'end';
|
|
46
|
+
}
|
|
47
|
+
// or in between
|
|
48
|
+
else {
|
|
49
|
+
return 'between';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.useElementSelector = useElementSelector;
|
|
5
|
+
const funnel_core_1 = require("@nascentdigital/funnel-core");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
// hook
|
|
8
|
+
function useElementSelector(selectorOrRef) {
|
|
9
|
+
// bind hooks
|
|
10
|
+
const [, setUpdatedAt] = (0, react_1.useState)(0);
|
|
11
|
+
const observer = SharedElementObserver.instance;
|
|
12
|
+
const selector = typeof selectorOrRef === 'string'
|
|
13
|
+
? selectorOrRef
|
|
14
|
+
: undefined;
|
|
15
|
+
const elementRef = (0, react_1.useRef)(selector && typeof window !== 'undefined'
|
|
16
|
+
? document.querySelector(selector)
|
|
17
|
+
: null);
|
|
18
|
+
// monitor for element changes
|
|
19
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
20
|
+
// skip if selector isn't defined
|
|
21
|
+
if (!selector) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// bind selector
|
|
25
|
+
observer.subscribe(selector, elementRef);
|
|
26
|
+
// mark updated
|
|
27
|
+
setUpdatedAt(Date.now());
|
|
28
|
+
// unbind on unmount
|
|
29
|
+
return () => observer.unsubscribe(selector, elementRef);
|
|
30
|
+
}, [observer, selector]);
|
|
31
|
+
// return element
|
|
32
|
+
return typeof selectorOrRef === 'string'
|
|
33
|
+
? elementRef
|
|
34
|
+
: selectorOrRef !== null && selectorOrRef !== void 0 ? selectorOrRef : elementRef;
|
|
35
|
+
}
|
|
36
|
+
// helper
|
|
37
|
+
class SharedElementObserver {
|
|
38
|
+
static get instance() {
|
|
39
|
+
// create if required
|
|
40
|
+
if (!SharedElementObserver._instance) {
|
|
41
|
+
SharedElementObserver._instance = new SharedElementObserver();
|
|
42
|
+
}
|
|
43
|
+
// throw if we don't have the instance
|
|
44
|
+
const instance = SharedElementObserver._instance;
|
|
45
|
+
if (!instance) {
|
|
46
|
+
throw new funnel_core_1.IllegalStateError('Unable to instantiate SharedElementObserver');
|
|
47
|
+
}
|
|
48
|
+
// return instance
|
|
49
|
+
return instance;
|
|
50
|
+
}
|
|
51
|
+
constructor() {
|
|
52
|
+
// bind callback
|
|
53
|
+
this.onMutate = this.onMutate.bind(this);
|
|
54
|
+
// initialize instance
|
|
55
|
+
this._observer = typeof window === 'undefined'
|
|
56
|
+
? undefined
|
|
57
|
+
: new MutationObserver(this.onMutate);
|
|
58
|
+
this._selectorRefs = new Map();
|
|
59
|
+
this._liveSelectors = new Set();
|
|
60
|
+
}
|
|
61
|
+
subscribe(selector, ref) {
|
|
62
|
+
// skip if there's no observer
|
|
63
|
+
const { _observer, _selectorRefs, _liveSelectors } = this;
|
|
64
|
+
if (!_observer) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// start observing if there are no active callbacks
|
|
68
|
+
if (_selectorRefs.size === 0) {
|
|
69
|
+
_observer.observe(document, { attributes: false, childList: true, subtree: true });
|
|
70
|
+
}
|
|
71
|
+
// get refs (or create it)
|
|
72
|
+
let refs = _selectorRefs.get(selector);
|
|
73
|
+
if (!refs) {
|
|
74
|
+
refs = [];
|
|
75
|
+
_selectorRefs.set(selector, refs);
|
|
76
|
+
}
|
|
77
|
+
// add ref to list
|
|
78
|
+
refs.push(ref);
|
|
79
|
+
// sync element refs
|
|
80
|
+
const element = document.querySelector(selector);
|
|
81
|
+
refs.forEach(ref => ref.current = element);
|
|
82
|
+
// sync live tracker
|
|
83
|
+
if (element) {
|
|
84
|
+
_liveSelectors.add(selector);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
_liveSelectors.delete(selector);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
unsubscribe(selector, ref) {
|
|
91
|
+
// skip if there's no observer
|
|
92
|
+
const { _observer, _selectorRefs, _liveSelectors } = this;
|
|
93
|
+
if (!_observer) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// skip if it's not bound
|
|
97
|
+
const refs = _selectorRefs.get(selector);
|
|
98
|
+
if (!refs) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// or remove list if it's the last one
|
|
102
|
+
else if (refs.length === 1) {
|
|
103
|
+
// prune entry
|
|
104
|
+
_selectorRefs.delete(selector);
|
|
105
|
+
_liveSelectors.delete(selector);
|
|
106
|
+
// stop observer if there are no more entries
|
|
107
|
+
if (_selectorRefs.size === 0) {
|
|
108
|
+
_observer.disconnect();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// or just remove one
|
|
112
|
+
else {
|
|
113
|
+
// find index of callback (remove it found
|
|
114
|
+
const refIndex = refs.indexOf(ref);
|
|
115
|
+
if (refIndex >= 0) {
|
|
116
|
+
refs.splice(refIndex, 1);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
onMutate(mutations) {
|
|
121
|
+
// look for removed matches
|
|
122
|
+
const { _selectorRefs, _liveSelectors } = this;
|
|
123
|
+
const liveSelectors = Array.from(_liveSelectors);
|
|
124
|
+
if (liveSelectors.length > 0) {
|
|
125
|
+
// check all live selectors
|
|
126
|
+
liveSelectors.forEach(selector => {
|
|
127
|
+
// skip if there's no refs
|
|
128
|
+
const refs = _selectorRefs.get(selector);
|
|
129
|
+
if (!refs || refs.length === 0) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// clear element if it's missing or if the node was in the removed set
|
|
133
|
+
const element = refs[0].current;
|
|
134
|
+
if (!element || mutations.flatMap(mutation => Array.from(mutation.removedNodes)).includes(element)) {
|
|
135
|
+
// clear refs
|
|
136
|
+
refs.forEach(ref => ref.current = null);
|
|
137
|
+
// remove from live selectors
|
|
138
|
+
_liveSelectors.delete(selector);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// sync any refs that aren't live (only if there were added refs)
|
|
143
|
+
const deadSelectors = Array.from(_selectorRefs.keys())
|
|
144
|
+
.filter(selector => !liveSelectors.includes(selector));
|
|
145
|
+
if (deadSelectors.length > 0
|
|
146
|
+
&& mutations.flatMap(mutation => Array.from(mutation.addedNodes)).length > 0) {
|
|
147
|
+
deadSelectors.forEach(selector => {
|
|
148
|
+
var _a;
|
|
149
|
+
const element = document.querySelector(selector);
|
|
150
|
+
if (element) {
|
|
151
|
+
// update refs
|
|
152
|
+
const refs = (_a = _selectorRefs.get(selector)) !== null && _a !== void 0 ? _a : [];
|
|
153
|
+
refs.forEach(ref => ref.current = element);
|
|
154
|
+
// update live selectors
|
|
155
|
+
_liveSelectors.add(selector);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.useElementSize = useElementSize;
|
|
38
|
+
const useResizeObserver_1 = require("./useResizeObserver");
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
// hook
|
|
41
|
+
function useElementSize(element) {
|
|
42
|
+
// bind hooks
|
|
43
|
+
const [size, setSize] = react_1.default.useState();
|
|
44
|
+
// bind initial size
|
|
45
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
46
|
+
if (element) {
|
|
47
|
+
const { width, height } = element.getBoundingClientRect();
|
|
48
|
+
setSize({ width, height });
|
|
49
|
+
}
|
|
50
|
+
}, [element]);
|
|
51
|
+
// bind resize on any additional change
|
|
52
|
+
(0, useResizeObserver_1.useResizeObserver)(element, () => {
|
|
53
|
+
// skip if there's no element
|
|
54
|
+
if (!element) {
|
|
55
|
+
setSize({ width: 0, height: 0 });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// or use client rect
|
|
59
|
+
const clientRect = element.getBoundingClientRect();
|
|
60
|
+
setSize({ width: clientRect.width, height: clientRect.height });
|
|
61
|
+
});
|
|
62
|
+
// return size changes
|
|
63
|
+
return size;
|
|
64
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Tagged } from 'type-fest';
|
|
2
|
+
export declare function useFindElements<TElement extends HTMLElement = HTMLElement>(selector: string): useFindElements.Match<TElement>[];
|
|
3
|
+
export declare namespace useFindElements {
|
|
4
|
+
type ElementIdentifier = Tagged<string, 'useFindElements.ElementIdentifier'>;
|
|
5
|
+
type Match<TElement extends HTMLElement = HTMLElement> = {
|
|
6
|
+
id: ElementIdentifier;
|
|
7
|
+
element: TElement;
|
|
8
|
+
};
|
|
9
|
+
}
|