@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.
Files changed (467) hide show
  1. package/dist/Tailwind.d.ts +201 -0
  2. package/dist/Tailwind.js +282 -0
  3. package/dist/client/app/AppContainer.d.ts +10 -0
  4. package/dist/client/app/AppContainer.js +22 -0
  5. package/dist/client/app/AppContext.d.ts +11 -0
  6. package/dist/client/app/AppContext.js +6 -0
  7. package/dist/client/app/AppPreview.d.ts +7 -0
  8. package/dist/client/app/AppPreview.js +51 -0
  9. package/dist/client/app/PageContainer.d.ts +8 -0
  10. package/dist/client/app/PageContainer.js +22 -0
  11. package/dist/client/app/index.d.ts +9 -0
  12. package/dist/client/app/index.js +25 -0
  13. package/dist/client/app/useAppConfig.d.ts +2 -0
  14. package/dist/client/app/useAppConfig.js +9 -0
  15. package/dist/client/app/useBrand.d.ts +9 -0
  16. package/dist/client/app/useBrand.js +17 -0
  17. package/dist/client/app/useLanguage.d.ts +2 -0
  18. package/dist/client/app/useLanguage.js +11 -0
  19. package/dist/client/app/usePageData.d.ts +2 -0
  20. package/dist/client/app/usePageData.js +25 -0
  21. package/dist/client/app/usePageUrl.d.ts +1 -0
  22. package/dist/client/app/usePageUrl.js +12 -0
  23. package/dist/client/app/useRegion.d.ts +1 -0
  24. package/dist/client/app/useRegion.js +10 -0
  25. package/dist/client/app/useSite.d.ts +2 -0
  26. package/dist/client/app/useSite.js +13 -0
  27. package/dist/client/atomic/AnimatedText.d.ts +12 -0
  28. package/dist/client/atomic/AnimatedText.js +90 -0
  29. package/dist/client/atomic/MaskedInput.d.ts +20 -0
  30. package/dist/client/atomic/MaskedInput.js +63 -0
  31. package/dist/client/atomic/index.d.ts +2 -0
  32. package/dist/client/atomic/index.js +18 -0
  33. package/dist/client/fields/EmbeddedVideo/EmbeddedPlayer.d.ts +36 -0
  34. package/dist/client/fields/EmbeddedVideo/EmbeddedPlayer.js +2 -0
  35. package/dist/client/fields/EmbeddedVideo/EmbeddedVideo.d.ts +13 -0
  36. package/dist/client/fields/EmbeddedVideo/EmbeddedVideo.js +22 -0
  37. package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContainer.d.ts +7 -0
  38. package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContainer.js +24 -0
  39. package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContext.d.ts +8 -0
  40. package/dist/client/fields/EmbeddedVideo/EmbeddedVideoContext.js +11 -0
  41. package/dist/client/fields/EmbeddedVideo/index.d.ts +4 -0
  42. package/dist/client/fields/EmbeddedVideo/index.js +20 -0
  43. package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerProgress.d.ts +10 -0
  44. package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerProgress.js +66 -0
  45. package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerRef.d.ts +9 -0
  46. package/dist/client/fields/EmbeddedVideo/useEmbeddedPlayerRef.js +29 -0
  47. package/dist/client/fields/EmbeddedVideo/vimeo/VimeoPlayer.d.ts +63 -0
  48. package/dist/client/fields/EmbeddedVideo/vimeo/VimeoPlayer.js +326 -0
  49. package/dist/client/fields/EmbeddedVideo/vimeo/VimeoVideo.d.ts +13 -0
  50. package/dist/client/fields/EmbeddedVideo/vimeo/VimeoVideo.js +60 -0
  51. package/dist/client/fields/EmbeddedVideo/vimeo/index.d.ts +1 -0
  52. package/dist/client/fields/EmbeddedVideo/vimeo/index.js +17 -0
  53. package/dist/client/fields/EmbeddedVideo/youtube/YTApi.d.ts +92 -0
  54. package/dist/client/fields/EmbeddedVideo/youtube/YTApi.js +24 -0
  55. package/dist/client/fields/EmbeddedVideo/youtube/YoutubePlayer.d.ts +56 -0
  56. package/dist/client/fields/EmbeddedVideo/youtube/YoutubePlayer.js +288 -0
  57. package/dist/client/fields/EmbeddedVideo/youtube/YoutubeVideo.d.ts +13 -0
  58. package/dist/client/fields/EmbeddedVideo/youtube/YoutubeVideo.js +71 -0
  59. package/dist/client/fields/EmbeddedVideo/youtube/index.d.ts +3 -0
  60. package/dist/client/fields/EmbeddedVideo/youtube/index.js +19 -0
  61. package/dist/client/fields/LazyVideo.d.ts +8 -0
  62. package/dist/client/fields/LazyVideo.js +100 -0
  63. package/dist/client/fields/index.d.ts +2 -0
  64. package/dist/client/fields/index.js +18 -0
  65. package/dist/client/forms/Form.d.ts +13 -0
  66. package/dist/client/forms/Form.js +68 -0
  67. package/dist/client/forms/FormContext.d.ts +5 -0
  68. package/dist/client/forms/FormContext.js +6 -0
  69. package/dist/client/forms/fields/BooleanField.d.ts +16 -0
  70. package/dist/client/forms/fields/BooleanField.js +47 -0
  71. package/dist/client/forms/fields/EnumField.d.ts +20 -0
  72. package/dist/client/forms/fields/EnumField.js +65 -0
  73. package/dist/client/forms/fields/Field.d.ts +15 -0
  74. package/dist/client/forms/fields/Field.js +39 -0
  75. package/dist/client/forms/fields/FieldErrorController.d.ts +12 -0
  76. package/dist/client/forms/fields/FieldErrorController.js +13 -0
  77. package/dist/client/forms/fields/FieldLayout.d.ts +16 -0
  78. package/dist/client/forms/fields/FieldLayout.js +32 -0
  79. package/dist/client/forms/fields/TextField.d.ts +25 -0
  80. package/dist/client/forms/fields/TextField.js +178 -0
  81. package/dist/client/forms/fields/index.d.ts +2 -0
  82. package/dist/client/forms/fields/index.js +18 -0
  83. package/dist/client/forms/fields/useField.d.ts +2 -0
  84. package/dist/client/forms/fields/useField.js +26 -0
  85. package/dist/client/forms/index.d.ts +4 -0
  86. package/dist/client/forms/index.js +20 -0
  87. package/dist/client/forms/interactive/CheckboxField.d.ts +14 -0
  88. package/dist/client/forms/interactive/CheckboxField.js +19 -0
  89. package/dist/client/forms/interactive/RadioField.d.ts +12 -0
  90. package/dist/client/forms/interactive/RadioField.js +16 -0
  91. package/dist/client/forms/interactive/RadioGroupField.d.ts +12 -0
  92. package/dist/client/forms/interactive/RadioGroupField.js +10 -0
  93. package/dist/client/forms/interactive/SelectField.d.ts +17 -0
  94. package/dist/client/forms/interactive/SelectField.js +16 -0
  95. package/dist/client/forms/interactive/index.d.ts +4 -0
  96. package/dist/client/forms/interactive/index.js +20 -0
  97. package/dist/client/forms/useForm.d.ts +2 -0
  98. package/dist/client/forms/useForm.js +17 -0
  99. package/dist/client/forms/useTempFields.d.ts +7 -0
  100. package/dist/client/forms/useTempFields.js +54 -0
  101. package/dist/client/hooks/assets/index.d.ts +2 -0
  102. package/dist/client/hooks/assets/index.js +18 -0
  103. package/dist/client/hooks/assets/useImageProxy.d.ts +2 -0
  104. package/dist/client/hooks/assets/useImageProxy.js +43 -0
  105. package/dist/client/hooks/assets/useVideoProxy.d.ts +2 -0
  106. package/dist/client/hooks/assets/useVideoProxy.js +43 -0
  107. package/dist/client/hooks/breakpoint/BreakpointContainer.d.ts +9 -0
  108. package/dist/client/hooks/breakpoint/BreakpointContainer.js +39 -0
  109. package/dist/client/hooks/breakpoint/BreakpointContext.d.ts +7 -0
  110. package/dist/client/hooks/breakpoint/BreakpointContext.js +9 -0
  111. package/dist/client/hooks/breakpoint/index.d.ts +3 -0
  112. package/dist/client/hooks/breakpoint/index.js +19 -0
  113. package/dist/client/hooks/breakpoint/useCurrentBreakpoint.d.ts +2 -0
  114. package/dist/client/hooks/breakpoint/useCurrentBreakpoint.js +10 -0
  115. package/dist/client/hooks/index.d.ts +26 -0
  116. package/dist/client/hooks/index.js +42 -0
  117. package/dist/client/hooks/ui-lock/UILockContainer.d.ts +5 -0
  118. package/dist/client/hooks/ui-lock/UILockContainer.js +57 -0
  119. package/dist/client/hooks/ui-lock/UILockContext.d.ts +9 -0
  120. package/dist/client/hooks/ui-lock/UILockContext.js +6 -0
  121. package/dist/client/hooks/ui-lock/UILockRef.d.ts +36 -0
  122. package/dist/client/hooks/ui-lock/UILockRef.js +32 -0
  123. package/dist/client/hooks/ui-lock/index.d.ts +3 -0
  124. package/dist/client/hooks/ui-lock/index.js +19 -0
  125. package/dist/client/hooks/ui-lock/useUILock.d.ts +16 -0
  126. package/dist/client/hooks/ui-lock/useUILock.js +121 -0
  127. package/dist/client/hooks/useCounter.d.ts +11 -0
  128. package/dist/client/hooks/useCounter.js +57 -0
  129. package/dist/client/hooks/useCycle.d.ts +5 -0
  130. package/dist/client/hooks/useCycle.js +15 -0
  131. package/dist/client/hooks/useElementRect.d.ts +2 -0
  132. package/dist/client/hooks/useElementRect.js +63 -0
  133. package/dist/client/hooks/useElementScrolled.d.ts +17 -0
  134. package/dist/client/hooks/useElementScrolled.js +51 -0
  135. package/dist/client/hooks/useElementSelector.d.ts +2 -0
  136. package/dist/client/hooks/useElementSelector.js +160 -0
  137. package/dist/client/hooks/useElementSize.d.ts +2 -0
  138. package/dist/client/hooks/useElementSize.js +64 -0
  139. package/dist/client/hooks/useFindElements.d.ts +9 -0
  140. package/dist/client/hooks/useFindElements.js +147 -0
  141. package/dist/client/hooks/useInViewport.d.ts +16 -0
  142. package/dist/client/hooks/useInViewport.js +46 -0
  143. package/dist/client/hooks/useIsDesktop.d.ts +1 -0
  144. package/dist/client/hooks/useIsDesktop.js +22 -0
  145. package/dist/client/hooks/useKeyboardFocus.d.ts +7 -0
  146. package/dist/client/hooks/useKeyboardFocus.js +40 -0
  147. package/dist/client/hooks/useLatestValue.d.ts +1 -0
  148. package/dist/client/hooks/useLatestValue.js +21 -0
  149. package/dist/client/hooks/useLock.d.ts +13 -0
  150. package/dist/client/hooks/useLock.js +161 -0
  151. package/dist/client/hooks/useMixedResponsiveValue.d.ts +2 -0
  152. package/dist/client/hooks/useMixedResponsiveValue.js +20 -0
  153. package/dist/client/hooks/usePathname.d.ts +9 -0
  154. package/dist/client/hooks/usePathname.js +25 -0
  155. package/dist/client/hooks/useRefElement.d.ts +8 -0
  156. package/dist/client/hooks/useRefElement.js +34 -0
  157. package/dist/client/hooks/useRefresh.d.ts +2 -0
  158. package/dist/client/hooks/useRefresh.js +25 -0
  159. package/dist/client/hooks/useResizeObserver.d.ts +5 -0
  160. package/dist/client/hooks/useResizeObserver.js +179 -0
  161. package/dist/client/hooks/useResponsiveValue.d.ts +2 -0
  162. package/dist/client/hooks/useResponsiveValue.js +16 -0
  163. package/dist/client/hooks/useRouter.d.ts +20 -0
  164. package/dist/client/hooks/useRouter.js +49 -0
  165. package/dist/client/hooks/useSafeLayoutEffect.d.ts +2 -0
  166. package/dist/client/hooks/useSafeLayoutEffect.js +9 -0
  167. package/dist/client/hooks/useTouch.d.ts +2 -0
  168. package/dist/client/hooks/useTouch.js +10 -0
  169. package/dist/client/hooks/useViewportSize.d.ts +7 -0
  170. package/dist/client/hooks/useViewportSize.js +66 -0
  171. package/dist/client/hooks/useWindowScrolled.d.ts +8 -0
  172. package/dist/client/hooks/useWindowScrolled.js +52 -0
  173. package/dist/client/index.d.ts +9 -0
  174. package/dist/client/index.js +25 -0
  175. package/dist/client/interaction/Carousel.d.ts +48 -0
  176. package/dist/client/interaction/Carousel.js +498 -0
  177. package/dist/client/interaction/ClickObserver.d.ts +19 -0
  178. package/dist/client/interaction/ClickObserver.js +76 -0
  179. package/dist/client/interaction/InfiniteScroller.d.ts +9 -0
  180. package/dist/client/interaction/InfiniteScroller.js +47 -0
  181. package/dist/client/interaction/Loader.d.ts +14 -0
  182. package/dist/client/interaction/Loader.js +74 -0
  183. package/dist/client/interaction/Marquee.d.ts +5 -0
  184. package/dist/client/interaction/Marquee.js +26 -0
  185. package/dist/client/interaction/Popup.d.ts +36 -0
  186. package/dist/client/interaction/Popup.js +244 -0
  187. package/dist/client/interaction/Tooltip.d.ts +16 -0
  188. package/dist/client/interaction/Tooltip.js +122 -0
  189. package/dist/client/interaction/UILevel.d.ts +1 -0
  190. package/dist/client/interaction/UILevel.js +2 -0
  191. package/dist/client/interaction/backdrop/BackdropContainer.d.ts +5 -0
  192. package/dist/client/interaction/backdrop/BackdropContainer.js +114 -0
  193. package/dist/client/interaction/backdrop/BackdropContext.d.ts +8 -0
  194. package/dist/client/interaction/backdrop/BackdropContext.js +6 -0
  195. package/dist/client/interaction/backdrop/BackdropEvent.d.ts +64 -0
  196. package/dist/client/interaction/backdrop/BackdropEvent.js +92 -0
  197. package/dist/client/interaction/backdrop/index.d.ts +4 -0
  198. package/dist/client/interaction/backdrop/index.js +20 -0
  199. package/dist/client/interaction/backdrop/useBackdrop.d.ts +13 -0
  200. package/dist/client/interaction/backdrop/useBackdrop.js +58 -0
  201. package/dist/client/interaction/backdrop/useBackdropClick.d.ts +2 -0
  202. package/dist/client/interaction/backdrop/useBackdropClick.js +21 -0
  203. package/dist/client/interaction/backdrop/useBackdropVisible.d.ts +1 -0
  204. package/dist/client/interaction/backdrop/useBackdropVisible.js +30 -0
  205. package/dist/client/interaction/focus/FocusArea.d.ts +10 -0
  206. package/dist/client/interaction/focus/FocusArea.js +38 -0
  207. package/dist/client/interaction/focus/FocusContext.d.ts +7 -0
  208. package/dist/client/interaction/focus/FocusContext.js +7 -0
  209. package/dist/client/interaction/focus/FocusController.d.ts +9 -0
  210. package/dist/client/interaction/focus/FocusController.js +40 -0
  211. package/dist/client/interaction/focus/FocusService.d.ts +20 -0
  212. package/dist/client/interaction/focus/FocusService.js +204 -0
  213. package/dist/client/interaction/focus/LinkedList.d.ts +18 -0
  214. package/dist/client/interaction/focus/LinkedList.js +122 -0
  215. package/dist/client/interaction/focus/index.d.ts +2 -0
  216. package/dist/client/interaction/focus/index.js +18 -0
  217. package/dist/client/interaction/focus/useFocusService.d.ts +2 -0
  218. package/dist/client/interaction/focus/useFocusService.js +14 -0
  219. package/dist/client/interaction/index.d.ts +12 -0
  220. package/dist/client/interaction/index.js +28 -0
  221. package/dist/client/interaction/modal/Modal.d.ts +29 -0
  222. package/dist/client/interaction/modal/Modal.js +136 -0
  223. package/dist/client/interaction/modal/ModalContainer.d.ts +5 -0
  224. package/dist/client/interaction/modal/ModalContainer.js +104 -0
  225. package/dist/client/interaction/modal/ModalContext.d.ts +8 -0
  226. package/dist/client/interaction/modal/ModalContext.js +6 -0
  227. package/dist/client/interaction/modal/ModalEvent.d.ts +39 -0
  228. package/dist/client/interaction/modal/ModalEvent.js +53 -0
  229. package/dist/client/interaction/modal/index.d.ts +2 -0
  230. package/dist/client/interaction/modal/index.js +18 -0
  231. package/dist/client/interaction/paginator/Paginator.d.ts +33 -0
  232. package/dist/client/interaction/paginator/Paginator.js +67 -0
  233. package/dist/client/interaction/paginator/index.d.ts +1 -0
  234. package/dist/client/interaction/paginator/index.js +17 -0
  235. package/dist/client/layouts/MasonaryLayout.d.ts +7 -0
  236. package/dist/client/layouts/MasonaryLayout.js +53 -0
  237. package/dist/client/layouts/index.d.ts +1 -0
  238. package/dist/client/layouts/index.js +17 -0
  239. package/dist/client/refs.d.ts +2 -0
  240. package/dist/client/refs.js +13 -0
  241. package/dist/client/transitions/Revelator.d.ts +42 -0
  242. package/dist/client/transitions/Revelator.js +60 -0
  243. package/dist/client/transitions/SideScroll.d.ts +14 -0
  244. package/dist/client/transitions/SideScroll.js +51 -0
  245. package/dist/client/transitions/StyleInViewport.d.ts +20 -0
  246. package/dist/client/transitions/StyleInViewport.js +66 -0
  247. package/dist/client/transitions/StyleSwitch.d.ts +297 -0
  248. package/dist/client/transitions/StyleSwitch.js +78 -0
  249. package/dist/client/transitions/index.d.ts +6 -0
  250. package/dist/client/transitions/index.js +22 -0
  251. package/dist/client/transitions/parallax/Parallax.d.ts +20 -0
  252. package/dist/client/transitions/parallax/Parallax.js +72 -0
  253. package/dist/client/transitions/parallax/ParallaxContext.d.ts +11 -0
  254. package/dist/client/transitions/parallax/ParallaxContext.js +6 -0
  255. package/dist/client/transitions/parallax/ParallaxItem.d.ts +14 -0
  256. package/dist/client/transitions/parallax/ParallaxItem.js +37 -0
  257. package/dist/client/transitions/parallax/ParallaxRemote.d.ts +29 -0
  258. package/dist/client/transitions/parallax/ParallaxRemote.js +136 -0
  259. package/dist/client/transitions/parallax/ParallaxUtils.d.ts +5 -0
  260. package/dist/client/transitions/parallax/ParallaxUtils.js +19 -0
  261. package/dist/client/transitions/parallax/index.d.ts +2 -0
  262. package/dist/client/transitions/parallax/index.js +18 -0
  263. package/dist/client/transitions/parallax/useDisableParallax.d.ts +4 -0
  264. package/dist/client/transitions/parallax/useDisableParallax.js +13 -0
  265. package/dist/client/transitions/parallax/useParallax.d.ts +2 -0
  266. package/dist/client/transitions/parallax/useParallax.js +18 -0
  267. package/dist/client/transitions/parallax/useTransforms.d.ts +34 -0
  268. package/dist/client/transitions/parallax/useTransforms.js +176 -0
  269. package/dist/client/transitions/reveal/Reveal.d.ts +14 -0
  270. package/dist/client/transitions/reveal/Reveal.js +75 -0
  271. package/dist/client/transitions/reveal/RevealAnimation.d.ts +17 -0
  272. package/dist/client/transitions/reveal/RevealAnimation.js +2 -0
  273. package/dist/client/transitions/reveal/RevealAnimator.d.ts +13 -0
  274. package/dist/client/transitions/reveal/RevealAnimator.js +41 -0
  275. package/dist/client/transitions/reveal/RevealController.d.ts +13 -0
  276. package/dist/client/transitions/reveal/RevealController.js +114 -0
  277. package/dist/client/transitions/reveal/RevealElementAnimator.d.ts +13 -0
  278. package/dist/client/transitions/reveal/RevealElementAnimator.js +65 -0
  279. package/dist/client/transitions/reveal/index.d.ts +2 -0
  280. package/dist/client/transitions/reveal/index.js +18 -0
  281. package/dist/client/utils/OnKey.d.ts +20 -0
  282. package/dist/client/utils/OnKey.js +33 -0
  283. package/dist/client/utils/SharedMutationObserver.d.ts +20 -0
  284. package/dist/client/utils/SharedMutationObserver.js +202 -0
  285. package/dist/client/utils/index.d.ts +2 -0
  286. package/dist/client/utils/index.js +18 -0
  287. package/dist/server/atomic/Markup.d.ts +14 -0
  288. package/dist/server/atomic/Markup.js +34 -0
  289. package/dist/server/atomic/NascentLogo.d.ts +6 -0
  290. package/dist/server/atomic/NascentLogo.js +9 -0
  291. package/dist/server/atomic/index.d.ts +2 -0
  292. package/dist/server/atomic/index.js +18 -0
  293. package/dist/server/blocks/Block.d.ts +16 -0
  294. package/dist/server/blocks/Block.js +92 -0
  295. package/dist/server/blocks/Clients.d.ts +33 -0
  296. package/dist/server/blocks/Clients.js +82 -0
  297. package/dist/server/blocks/Editorial.d.ts +33 -0
  298. package/dist/server/blocks/Editorial.js +80 -0
  299. package/dist/server/blocks/Form.d.ts +46 -0
  300. package/dist/server/blocks/Form.js +74 -0
  301. package/dist/server/blocks/FormMessage.d.ts +15 -0
  302. package/dist/server/blocks/FormMessage.js +37 -0
  303. package/dist/server/blocks/MediaLayout.d.ts +309 -0
  304. package/dist/server/blocks/MediaLayout.js +105 -0
  305. package/dist/server/blocks/Message.d.ts +76 -0
  306. package/dist/server/blocks/Message.js +352 -0
  307. package/dist/server/blocks/Outcome.d.ts +84 -0
  308. package/dist/server/blocks/Outcome.js +489 -0
  309. package/dist/server/blocks/OutcomeDetail.d.ts +303 -0
  310. package/dist/server/blocks/OutcomeDetail.js +63 -0
  311. package/dist/server/blocks/Projects.d.ts +43 -0
  312. package/dist/server/blocks/Projects.js +109 -0
  313. package/dist/server/blocks/Stat.d.ts +325 -0
  314. package/dist/server/blocks/Stat.js +107 -0
  315. package/dist/server/blocks/Stats.d.ts +36 -0
  316. package/dist/server/blocks/Stats.js +79 -0
  317. package/dist/server/blocks/Testimonial.d.ts +30 -0
  318. package/dist/server/blocks/Testimonial.js +68 -0
  319. package/dist/server/blocks/ValueProp.d.ts +43 -0
  320. package/dist/server/blocks/ValueProp.js +125 -0
  321. package/dist/server/blocks/index.d.ts +13 -0
  322. package/dist/server/blocks/index.js +29 -0
  323. package/dist/server/data/PrePaginator.d.ts +8 -0
  324. package/dist/server/data/PrePaginator.js +30 -0
  325. package/dist/server/data/index.d.ts +1 -0
  326. package/dist/server/data/index.js +17 -0
  327. package/dist/server/entities/Client.d.ts +327 -0
  328. package/dist/server/entities/Client.js +118 -0
  329. package/dist/server/entities/ClientBadge.d.ts +293 -0
  330. package/dist/server/entities/ClientBadge.js +37 -0
  331. package/dist/server/entities/Person.d.ts +314 -0
  332. package/dist/server/entities/Person.js +98 -0
  333. package/dist/server/entities/Project.d.ts +329 -0
  334. package/dist/server/entities/Project.js +112 -0
  335. package/dist/server/entities/UniqueSellingPoint.d.ts +327 -0
  336. package/dist/server/entities/UniqueSellingPoint.js +119 -0
  337. package/dist/server/entities/index.d.ts +6 -0
  338. package/dist/server/entities/index.js +22 -0
  339. package/dist/server/entities/previews/MessagePreview.d.ts +299 -0
  340. package/dist/server/entities/previews/MessagePreview.js +41 -0
  341. package/dist/server/entities/previews/PagePreview.d.ts +10 -0
  342. package/dist/server/entities/previews/PagePreview.js +42 -0
  343. package/dist/server/entities/previews/index.d.ts +2 -0
  344. package/dist/server/entities/previews/index.js +18 -0
  345. package/dist/server/fields/Caption.d.ts +13 -0
  346. package/dist/server/fields/Caption.js +45 -0
  347. package/dist/server/fields/Description.d.ts +13 -0
  348. package/dist/server/fields/Description.js +46 -0
  349. package/dist/server/fields/FreeFormContent.d.ts +17 -0
  350. package/dist/server/fields/FreeFormContent.js +43 -0
  351. package/dist/server/fields/Headline.d.ts +13 -0
  352. package/dist/server/fields/Headline.js +46 -0
  353. package/dist/server/fields/Icon.d.ts +10 -0
  354. package/dist/server/fields/Icon.js +39 -0
  355. package/dist/server/fields/Link.d.ts +16 -0
  356. package/dist/server/fields/Link.js +61 -0
  357. package/dist/server/fields/Quote.d.ts +13 -0
  358. package/dist/server/fields/Quote.js +46 -0
  359. package/dist/server/fields/RichText.d.ts +296 -0
  360. package/dist/server/fields/RichText.js +217 -0
  361. package/dist/server/fields/Title.d.ts +292 -0
  362. package/dist/server/fields/Title.js +38 -0
  363. package/dist/server/fields/Visual.d.ts +12 -0
  364. package/dist/server/fields/Visual.js +66 -0
  365. package/dist/server/fields/index.d.ts +10 -0
  366. package/dist/server/fields/index.js +26 -0
  367. package/dist/server/index.d.ts +9 -0
  368. package/dist/server/index.js +25 -0
  369. package/dist/server/panels/BlockPanel.d.ts +14 -0
  370. package/dist/server/panels/BlockPanel.js +56 -0
  371. package/dist/server/panels/MessagePanel.d.ts +31 -0
  372. package/dist/server/panels/MessagePanel.js +81 -0
  373. package/dist/server/panels/VisualPanel.d.ts +36 -0
  374. package/dist/server/panels/VisualPanel.js +143 -0
  375. package/dist/server/panels/index.d.ts +3 -0
  376. package/dist/server/panels/index.js +19 -0
  377. package/dist/server/schema/Anchor.d.ts +7 -0
  378. package/dist/server/schema/Anchor.js +24 -0
  379. package/dist/server/schema/AspectRatio.d.ts +9 -0
  380. package/dist/server/schema/AspectRatio.js +43 -0
  381. package/dist/server/schema/BlockConfig.d.ts +56 -0
  382. package/dist/server/schema/BlockConfig.js +192 -0
  383. package/dist/server/schema/CollectionSchema.d.ts +4 -0
  384. package/dist/server/schema/CollectionSchema.js +15 -0
  385. package/dist/server/schema/ItemAlignment.d.ts +12 -0
  386. package/dist/server/schema/ItemAlignment.js +42 -0
  387. package/dist/server/schema/ItemPosition.d.ts +6 -0
  388. package/dist/server/schema/ItemPosition.js +25 -0
  389. package/dist/server/schema/ItemSize.d.ts +6 -0
  390. package/dist/server/schema/ItemSize.js +24 -0
  391. package/dist/server/schema/TextAlignment.d.ts +6 -0
  392. package/dist/server/schema/TextAlignment.js +22 -0
  393. package/dist/server/schema/index.d.ts +8 -0
  394. package/dist/server/schema/index.js +24 -0
  395. package/dist/server/sections/index.d.ts +1 -0
  396. package/dist/server/sections/index.js +17 -0
  397. package/dist/server/sections/renderSection.d.ts +6 -0
  398. package/dist/server/sections/renderSection.js +19 -0
  399. package/dist/server/transitions/Slide.d.ts +293 -0
  400. package/dist/server/transitions/Slide.js +31 -0
  401. package/dist/server/transitions/index.d.ts +3 -0
  402. package/dist/server/transitions/index.js +19 -0
  403. package/dist/styles/app/AppPreview.css +49 -0
  404. package/dist/styles/app/_index.css +1 -0
  405. package/dist/styles/base/_index.css +2 -0
  406. package/dist/styles/base/global.css +9 -0
  407. package/dist/styles/base/tailwind.css +3 -0
  408. package/dist/styles/blocks/Block-layout.css +244 -0
  409. package/dist/styles/blocks/Block-spacing.css +150 -0
  410. package/dist/styles/blocks/Block-theming.css +14 -0
  411. package/dist/styles/blocks/Clients.css +10 -0
  412. package/dist/styles/blocks/Editorial.css +133 -0
  413. package/dist/styles/blocks/Form.css +13 -0
  414. package/dist/styles/blocks/MediaLayout.css +215 -0
  415. package/dist/styles/blocks/Message.css +353 -0
  416. package/dist/styles/blocks/Outcome.css +83 -0
  417. package/dist/styles/blocks/Projects.css +18 -0
  418. package/dist/styles/blocks/Stat.css +45 -0
  419. package/dist/styles/blocks/Stats.css +38 -0
  420. package/dist/styles/blocks/Testimonial.css +323 -0
  421. package/dist/styles/blocks/ValueProp.css +135 -0
  422. package/dist/styles/blocks/_index.css +14 -0
  423. package/dist/styles/components/_index.css +3 -0
  424. package/dist/styles/components/container.css +58 -0
  425. package/dist/styles/components/divider.css +6 -0
  426. package/dist/styles/components/embed/VimeoPlayer.css +49 -0
  427. package/dist/styles/components/embed/YoutubePlayer.css +72 -0
  428. package/dist/styles/components/embed/_index.css +2 -0
  429. package/dist/styles/entities/Client.css +5 -0
  430. package/dist/styles/entities/ClientBadge.css +14 -0
  431. package/dist/styles/entities/Person.css +76 -0
  432. package/dist/styles/entities/Project.css +44 -0
  433. package/dist/styles/entities/UniqueSellingPoint.css +54 -0
  434. package/dist/styles/entities/_index.css +5 -0
  435. package/dist/styles/fields/Caption.css +23 -0
  436. package/dist/styles/fields/Description.css +23 -0
  437. package/dist/styles/fields/FreeFormContent.css +24 -0
  438. package/dist/styles/fields/Headline.css +38 -0
  439. package/dist/styles/fields/Icon.css +20 -0
  440. package/dist/styles/fields/LazyVideo.css +12 -0
  441. package/dist/styles/fields/Link.css +16 -0
  442. package/dist/styles/fields/Quote.css +48 -0
  443. package/dist/styles/fields/RichText.css +243 -0
  444. package/dist/styles/fields/Title.css +17 -0
  445. package/dist/styles/fields/Visual.css +27 -0
  446. package/dist/styles/fields/_index.css +11 -0
  447. package/dist/styles/index.css +9 -0
  448. package/dist/styles/layouts/MasonryLayout.css +24 -0
  449. package/dist/styles/layouts/_index.css +1 -0
  450. package/dist/styles/panels/MessagePanel.css +56 -0
  451. package/dist/styles/panels/VisualPanel.css +58 -0
  452. package/dist/styles/panels/_index.css +2 -0
  453. package/dist/styles/utilities/_index.css +7 -0
  454. package/dist/styles/utilities/ellipsis.css +7 -0
  455. package/dist/styles/utilities/fade.css +16 -0
  456. package/dist/styles/utilities/glass.css +8 -0
  457. package/dist/styles/utilities/interpolate.css +22 -0
  458. package/dist/styles/utilities/masks.css +18 -0
  459. package/dist/styles/utilities/stacked.css +24 -0
  460. package/dist/styles/utilities/text-gradient.css +37 -0
  461. package/dist/types/HTMLBlockElement.d.ts +6 -0
  462. package/dist/types/HTMLBlockElement.js +2 -0
  463. package/dist/types/HTMLElements.d.ts +129 -0
  464. package/dist/types/HTMLElements.js +2 -0
  465. package/dist/types/index.d.ts +2 -0
  466. package/dist/types/index.js +18 -0
  467. 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,5 @@
1
+ export declare function useCycle<T>(options: T[]): useCycle.Hook<T>;
2
+ export declare namespace useCycle {
3
+ type Hook<T> = [T, NextMethod];
4
+ type NextMethod = () => void;
5
+ }
@@ -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,2 @@
1
+ import { Rect } from '@nascentdigital/funnel-core';
2
+ export declare function useElementRect(element: HTMLElement | null): Rect | undefined;
@@ -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,2 @@
1
+ import { RefObject } from 'react';
2
+ export declare function useElementSelector<TElement extends HTMLElement = HTMLElement>(selectorOrRef: string | RefObject<TElement | null> | undefined): RefObject<TElement | null>;
@@ -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,2 @@
1
+ import { Size } from '@nascentdigital/funnel-core';
2
+ export declare function useElementSize(element: HTMLElement | null): Size | undefined;
@@ -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
+ }