@reuters-graphics/graphics-components 2.0.2 → 3.0.0

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 (547) hide show
  1. package/dist/actions/cssVariables/cssVariables.mdx +4 -5
  2. package/dist/actions/cssVariables/index.d.ts +2 -2
  3. package/dist/actions/cssVariables/index.js +14 -16
  4. package/dist/actions/resizeObserver/index.d.ts +1 -1
  5. package/dist/actions/resizeObserver/index.js +18 -20
  6. package/dist/actions/resizeObserver/resizeObserver.mdx +1 -1
  7. package/dist/app.html +11 -0
  8. package/dist/components/@types/global.d.ts +9 -7
  9. package/dist/components/AdSlot/AdScripts.svelte +15 -12
  10. package/dist/components/AdSlot/AdScripts.svelte.d.ts +16 -14
  11. package/dist/components/AdSlot/AdSlot.svelte +53 -31
  12. package/dist/components/AdSlot/AdSlot.svelte.d.ts +10 -21
  13. package/dist/components/AdSlot/{stories/docs/inline.md → InlineAd.mdx} +14 -4
  14. package/dist/components/AdSlot/InlineAd.stories.svelte +11 -14
  15. package/dist/components/AdSlot/InlineAd.stories.svelte.d.ts +17 -21
  16. package/dist/components/AdSlot/InlineAd.svelte +18 -7
  17. package/dist/components/AdSlot/InlineAd.svelte.d.ts +12 -20
  18. package/dist/components/AdSlot/{stories/docs/leaderboard.md → LeaderboardAd.mdx} +10 -0
  19. package/dist/components/AdSlot/LeaderboardAd.stories.svelte +13 -16
  20. package/dist/components/AdSlot/LeaderboardAd.stories.svelte.d.ts +17 -21
  21. package/dist/components/AdSlot/LeaderboardAd.svelte +45 -29
  22. package/dist/components/AdSlot/LeaderboardAd.svelte.d.ts +10 -19
  23. package/dist/components/AdSlot/OneTrust.svelte +39 -34
  24. package/dist/components/AdSlot/OneTrust.svelte.d.ts +16 -14
  25. package/dist/components/AdSlot/ResponsiveAd.svelte +69 -45
  26. package/dist/components/AdSlot/ResponsiveAd.svelte.d.ts +6 -18
  27. package/dist/components/AdSlot/{stories/docs/sponsorship.md → SponsorshipAd.mdx} +11 -1
  28. package/dist/components/AdSlot/SponsorshipAd.stories.svelte +11 -15
  29. package/dist/components/AdSlot/SponsorshipAd.stories.svelte.d.ts +17 -21
  30. package/dist/components/AdSlot/SponsorshipAd.svelte +21 -7
  31. package/dist/components/AdSlot/SponsorshipAd.svelte.d.ts +14 -22
  32. package/dist/components/Analytics/Analytics.mdx +73 -0
  33. package/dist/components/Analytics/Analytics.stories.svelte +11 -31
  34. package/dist/components/Analytics/Analytics.stories.svelte.d.ts +17 -21
  35. package/dist/components/Analytics/Analytics.svelte +27 -11
  36. package/dist/components/Analytics/Analytics.svelte.d.ts +14 -23
  37. package/dist/components/Article/Article.mdx +117 -0
  38. package/dist/components/Article/Article.stories.svelte +39 -40
  39. package/dist/components/Article/Article.stories.svelte.d.ts +17 -21
  40. package/dist/components/Article/Article.svelte +50 -20
  41. package/dist/components/Article/Article.svelte.d.ts +26 -34
  42. package/dist/components/BeforeAfter/BeforeAfter.mdx +111 -0
  43. package/dist/components/BeforeAfter/BeforeAfter.stories.svelte +38 -80
  44. package/dist/components/BeforeAfter/BeforeAfter.stories.svelte.d.ts +17 -30
  45. package/dist/components/BeforeAfter/BeforeAfter.svelte +240 -141
  46. package/dist/components/BeforeAfter/BeforeAfter.svelte.d.ts +60 -62
  47. package/dist/components/Block/Block.mdx +99 -0
  48. package/dist/components/Block/Block.stories.svelte +82 -72
  49. package/dist/components/Block/Block.stories.svelte.d.ts +17 -30
  50. package/dist/components/Block/Block.svelte +33 -11
  51. package/dist/components/Block/Block.svelte.d.ts +20 -25
  52. package/dist/components/BodyText/BodyText.mdx +115 -0
  53. package/dist/components/BodyText/BodyText.stories.svelte +28 -194
  54. package/dist/components/BodyText/BodyText.stories.svelte.d.ts +17 -21
  55. package/dist/components/BodyText/BodyText.svelte +14 -7
  56. package/dist/components/BodyText/BodyText.svelte.d.ts +11 -24
  57. package/dist/components/Byline/Byline.mdx +110 -0
  58. package/dist/components/Byline/Byline.stories.svelte +50 -26
  59. package/dist/components/Byline/Byline.stories.svelte.d.ts +17 -27
  60. package/dist/components/Byline/Byline.svelte +109 -43
  61. package/dist/components/Byline/Byline.svelte.d.ts +48 -48
  62. package/dist/components/DatawrapperChart/{stories/docs/component.md → DatawrapperChart.mdx} +20 -0
  63. package/dist/components/DatawrapperChart/DatawrapperChart.stories.svelte +31 -39
  64. package/dist/components/DatawrapperChart/DatawrapperChart.stories.svelte.d.ts +17 -27
  65. package/dist/components/DatawrapperChart/DatawrapperChart.svelte +94 -40
  66. package/dist/components/DatawrapperChart/DatawrapperChart.svelte.d.ts +42 -53
  67. package/dist/components/DocumentCloud/DocumentCloud.mdx +26 -0
  68. package/dist/components/DocumentCloud/DocumentCloud.stories.svelte +16 -25
  69. package/dist/components/DocumentCloud/DocumentCloud.stories.svelte.d.ts +17 -27
  70. package/dist/components/DocumentCloud/DocumentCloud.svelte +31 -10
  71. package/dist/components/DocumentCloud/DocumentCloud.svelte.d.ts +21 -30
  72. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.mdx +19 -0
  73. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.stories.svelte +11 -18
  74. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.stories.svelte.d.ts +17 -21
  75. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.svelte +9 -4
  76. package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.svelte.d.ts +5 -17
  77. package/dist/components/EndNotes/EndNotes.mdx +67 -0
  78. package/dist/components/EndNotes/EndNotes.stories.svelte +10 -15
  79. package/dist/components/EndNotes/EndNotes.stories.svelte.d.ts +17 -21
  80. package/dist/components/EndNotes/EndNotes.svelte +30 -14
  81. package/dist/components/EndNotes/EndNotes.svelte.d.ts +19 -31
  82. package/dist/components/FeaturePhoto/FeaturePhoto.mdx +72 -0
  83. package/dist/components/FeaturePhoto/FeaturePhoto.stories.svelte +24 -49
  84. package/dist/components/FeaturePhoto/FeaturePhoto.stories.svelte.d.ts +17 -31
  85. package/dist/components/FeaturePhoto/FeaturePhoto.svelte +108 -43
  86. package/dist/components/FeaturePhoto/FeaturePhoto.svelte.d.ts +57 -58
  87. package/dist/components/Framer/Framer.mdx +19 -0
  88. package/dist/components/Framer/Framer.stories.svelte +11 -18
  89. package/dist/components/Framer/Framer.stories.svelte.d.ts +17 -21
  90. package/dist/components/Framer/Framer.svelte +97 -69
  91. package/dist/components/Framer/Framer.svelte.d.ts +8 -30
  92. package/dist/components/Framer/Resizer/index.svelte +54 -41
  93. package/dist/components/Framer/Resizer/index.svelte.d.ts +7 -28
  94. package/dist/components/Framer/Typeahead/Search.svelte +101 -0
  95. package/dist/components/Framer/Typeahead/Search.svelte.d.ts +18 -0
  96. package/dist/components/Framer/Typeahead/fuzzy.d.ts +22 -9
  97. package/dist/components/Framer/Typeahead/fuzzy.js +70 -129
  98. package/dist/components/Framer/Typeahead/index.svelte +133 -121
  99. package/dist/components/Framer/Typeahead/index.svelte.d.ts +31 -138
  100. package/dist/components/Framer/stores.d.ts +1 -1
  101. package/dist/components/Framer/stores.js +0 -1
  102. package/dist/components/Framer/stories/docs/component.md +1 -1
  103. package/dist/components/Framer/uniqNames.d.ts +1 -1
  104. package/dist/components/Framer/uniqNames.js +45 -49
  105. package/dist/components/GraphicBlock/GraphicBlock.mdx +215 -0
  106. package/dist/components/GraphicBlock/GraphicBlock.stories.svelte +80 -60
  107. package/dist/components/GraphicBlock/GraphicBlock.stories.svelte.d.ts +17 -31
  108. package/dist/components/GraphicBlock/GraphicBlock.svelte +130 -69
  109. package/dist/components/GraphicBlock/GraphicBlock.svelte.d.ts +50 -65
  110. package/dist/components/GraphicBlock/components/AriaHidden.svelte +22 -0
  111. package/dist/components/GraphicBlock/components/AriaHidden.svelte.d.ts +12 -0
  112. package/dist/components/GraphicBlock/components/TextBlock.svelte +23 -0
  113. package/dist/components/GraphicBlock/components/TextBlock.svelte.d.ts +11 -0
  114. package/dist/components/GraphicBlock/{stories → demo}/ai2svelte/ai-chart.svelte +7 -11
  115. package/dist/components/GraphicBlock/demo/ai2svelte/ai-chart.svelte.d.ts +3 -0
  116. package/dist/components/Headline/Headline.mdx +150 -0
  117. package/dist/components/Headline/Headline.stories.svelte +78 -92
  118. package/dist/components/Headline/Headline.stories.svelte.d.ts +17 -31
  119. package/dist/components/Headline/Headline.svelte +108 -49
  120. package/dist/components/Headline/Headline.svelte.d.ts +42 -53
  121. package/dist/components/Headline/{stories → demo}/graphic.svelte +8 -9
  122. package/dist/components/Headline/demo/graphic.svelte.d.ts +6 -0
  123. package/dist/components/HeroHeadline/HeroHeadline.mdx +329 -0
  124. package/dist/components/HeroHeadline/HeroHeadline.stories.svelte +264 -0
  125. package/dist/components/HeroHeadline/HeroHeadline.stories.svelte.d.ts +19 -0
  126. package/dist/components/HeroHeadline/HeroHeadline.svelte +277 -0
  127. package/dist/components/HeroHeadline/HeroHeadline.svelte.d.ts +84 -0
  128. package/dist/components/HeroHeadline/{stories → demo}/graphics/crash.svelte +8 -15
  129. package/dist/components/HeroHeadline/demo/graphics/crash.svelte.d.ts +6 -0
  130. package/dist/components/HeroHeadline/{stories → demo}/graphics/quakemap.svelte +7 -7
  131. package/dist/components/HeroHeadline/demo/graphics/quakemap.svelte.d.ts +6 -0
  132. package/dist/components/InfoBox/InfoBox.mdx +122 -0
  133. package/dist/components/InfoBox/InfoBox.stories.svelte +86 -38
  134. package/dist/components/InfoBox/InfoBox.stories.svelte.d.ts +17 -31
  135. package/dist/components/InfoBox/InfoBox.svelte +69 -21
  136. package/dist/components/InfoBox/InfoBox.svelte.d.ts +41 -45
  137. package/dist/components/PaddingReset/PaddingReset.mdx +53 -0
  138. package/dist/components/PaddingReset/PaddingReset.stories.svelte +33 -33
  139. package/dist/components/PaddingReset/PaddingReset.stories.svelte.d.ts +17 -21
  140. package/dist/components/PaddingReset/PaddingReset.svelte +17 -7
  141. package/dist/components/PaddingReset/PaddingReset.svelte.d.ts +14 -29
  142. package/dist/components/PaddingReset/shark.jpg +0 -0
  143. package/dist/components/PhotoPack/PhotoPack.mdx +125 -0
  144. package/dist/components/PhotoPack/PhotoPack.stories.svelte +69 -108
  145. package/dist/components/PhotoPack/PhotoPack.stories.svelte.d.ts +17 -31
  146. package/dist/components/PhotoPack/PhotoPack.svelte +85 -43
  147. package/dist/components/PhotoPack/PhotoPack.svelte.d.ts +32 -52
  148. package/dist/components/PhotoPack/utils.d.ts +2 -0
  149. package/dist/components/PhotoPack/utils.js +17 -0
  150. package/dist/components/PymChild/PymChild.mdx +33 -0
  151. package/dist/components/PymChild/PymChild.stories.svelte +8 -17
  152. package/dist/components/PymChild/PymChild.stories.svelte.d.ts +17 -21
  153. package/dist/components/PymChild/PymChild.svelte +16 -9
  154. package/dist/components/PymChild/PymChild.svelte.d.ts +7 -18
  155. package/dist/components/PymChild/state.svelte.d.ts +6 -0
  156. package/dist/components/PymChild/state.svelte.js +1 -0
  157. package/dist/components/ReferralBlock/ReferralBlock.mdx +44 -0
  158. package/dist/components/ReferralBlock/ReferralBlock.stories.svelte +35 -45
  159. package/dist/components/ReferralBlock/ReferralBlock.stories.svelte.d.ts +17 -35
  160. package/dist/components/ReferralBlock/ReferralBlock.svelte +113 -66
  161. package/dist/components/ReferralBlock/ReferralBlock.svelte.d.ts +36 -41
  162. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.mdx +21 -0
  163. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.stories.svelte +12 -17
  164. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.stories.svelte.d.ts +17 -21
  165. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.svelte +15 -3
  166. package/dist/components/ReutersGraphicsLogo/ReutersGraphicsLogo.svelte.d.ts +11 -20
  167. package/dist/components/ReutersLogo/ReutersLogo.mdx +19 -0
  168. package/dist/components/ReutersLogo/ReutersLogo.stories.svelte +12 -20
  169. package/dist/components/ReutersLogo/ReutersLogo.stories.svelte.d.ts +17 -29
  170. package/dist/components/ReutersLogo/ReutersLogo.svelte +30 -19
  171. package/dist/components/ReutersLogo/ReutersLogo.svelte.d.ts +11 -20
  172. package/dist/components/SEO/SEO.mdx +80 -0
  173. package/dist/components/SEO/SEO.stories.svelte +18 -36
  174. package/dist/components/SEO/SEO.stories.svelte.d.ts +16 -22
  175. package/dist/components/SEO/SEO.svelte +151 -91
  176. package/dist/components/SEO/SEO.svelte.d.ts +53 -71
  177. package/dist/components/Scroller/Background.svelte +14 -10
  178. package/dist/components/Scroller/Background.svelte.d.ts +8 -20
  179. package/dist/components/Scroller/Embedded/Background.svelte +13 -9
  180. package/dist/components/Scroller/Embedded/Background.svelte.d.ts +7 -19
  181. package/dist/components/Scroller/Embedded/Foreground.svelte +16 -11
  182. package/dist/components/Scroller/Embedded/Foreground.svelte.d.ts +6 -18
  183. package/dist/components/Scroller/Embedded/index.svelte +18 -5
  184. package/dist/components/Scroller/Embedded/index.svelte.d.ts +8 -19
  185. package/dist/components/Scroller/Foreground.svelte +14 -9
  186. package/dist/components/Scroller/Foreground.svelte.d.ts +5 -17
  187. package/dist/components/Scroller/Scroller.mdx +279 -0
  188. package/dist/components/Scroller/Scroller.stories.svelte +107 -100
  189. package/dist/components/Scroller/Scroller.stories.svelte.d.ts +17 -38
  190. package/dist/components/Scroller/Scroller.svelte +121 -44
  191. package/dist/components/Scroller/Scroller.svelte.d.ts +66 -83
  192. package/dist/components/Scroller/ScrollerBase/index.svelte +267 -0
  193. package/dist/components/Scroller/ScrollerBase/index.svelte.d.ts +32 -0
  194. package/dist/components/Scroller/demo/components/ai2svelte/ai-foreground.svelte +118 -0
  195. package/dist/components/Scroller/demo/components/ai2svelte/ai-foreground.svelte.d.ts +6 -0
  196. package/dist/components/Scroller/{stories → demo}/components/ai2svelte/ai-scroller-1.svelte +4 -14
  197. package/dist/components/Scroller/demo/components/ai2svelte/ai-scroller-1.svelte.d.ts +3 -0
  198. package/dist/components/Scroller/{stories → demo}/components/ai2svelte/ai-scroller-2.svelte +3 -3
  199. package/dist/components/Scroller/demo/components/ai2svelte/ai-scroller-2.svelte.d.ts +3 -0
  200. package/dist/components/Scroller/{stories → demo}/components/ai2svelte/ai-scroller-3.svelte +3 -3
  201. package/dist/components/Scroller/demo/components/ai2svelte/ai-scroller-3.svelte.d.ts +3 -0
  202. package/dist/components/Scroller/demo/components/ai2svelte/images/Body-issues-key-xs.png +0 -0
  203. package/dist/components/Scroller/demo/components/basic/InteractiveForeground.svelte +17 -0
  204. package/dist/components/Scroller/demo/components/basic/InteractiveForeground.svelte.d.ts +6 -0
  205. package/dist/components/Scroller/demo/components/basic/Step.svelte +16 -0
  206. package/dist/components/Scroller/demo/components/basic/Step.svelte.d.ts +6 -0
  207. package/dist/components/SearchInput/SearchInput.mdx +29 -0
  208. package/dist/components/SearchInput/SearchInput.stories.svelte +20 -15
  209. package/dist/components/SearchInput/SearchInput.stories.svelte.d.ts +17 -21
  210. package/dist/components/SearchInput/SearchInput.svelte +31 -20
  211. package/dist/components/SearchInput/SearchInput.svelte.d.ts +9 -23
  212. package/dist/components/SearchInput/components/MagnifyingGlass.svelte.d.ts +26 -0
  213. package/dist/components/SearchInput/components/X.svelte.d.ts +26 -0
  214. package/dist/components/SimpleTimeline/SimpleTimeline.mdx +119 -0
  215. package/dist/components/SimpleTimeline/SimpleTimeline.stories.svelte +28 -36
  216. package/dist/components/SimpleTimeline/SimpleTimeline.stories.svelte.d.ts +17 -29
  217. package/dist/components/SimpleTimeline/SimpleTimeline.svelte +51 -15
  218. package/dist/components/SimpleTimeline/SimpleTimeline.svelte.d.ts +34 -44
  219. package/dist/components/SiteFooter/CompanyLinks.svelte +34 -6
  220. package/dist/components/SiteFooter/CompanyLinks.svelte.d.ts +11 -24
  221. package/dist/components/SiteFooter/LegalLinks.svelte +42 -9
  222. package/dist/components/SiteFooter/LegalLinks.svelte.d.ts +18 -24
  223. package/dist/components/SiteFooter/QuickLinks.svelte +60 -15
  224. package/dist/components/SiteFooter/QuickLinks.svelte.d.ts +27 -24
  225. package/dist/components/SiteFooter/SiteFooter.mdx +45 -0
  226. package/dist/components/SiteFooter/SiteFooter.stories.svelte +11 -31
  227. package/dist/components/SiteFooter/SiteFooter.stories.svelte.d.ts +17 -21
  228. package/dist/components/SiteFooter/SiteFooter.svelte +45 -31
  229. package/dist/components/SiteFooter/SiteFooter.svelte.d.ts +9 -20
  230. package/dist/components/SiteFooter/data.json +2 -2
  231. package/dist/components/SiteFooter/svgs/Facebook.svelte +6 -2
  232. package/dist/components/SiteFooter/svgs/Facebook.svelte.d.ts +5 -24
  233. package/dist/components/SiteFooter/svgs/Graphics.svelte.d.ts +22 -21
  234. package/dist/components/SiteFooter/svgs/Instagram.svelte +6 -2
  235. package/dist/components/SiteFooter/svgs/Instagram.svelte.d.ts +5 -24
  236. package/dist/components/SiteFooter/svgs/LinkedIn.svelte +6 -2
  237. package/dist/components/SiteFooter/svgs/LinkedIn.svelte.d.ts +5 -24
  238. package/dist/components/SiteFooter/svgs/Pictures.svelte.d.ts +22 -21
  239. package/dist/components/SiteFooter/svgs/Twitter.svelte +6 -2
  240. package/dist/components/SiteFooter/svgs/Twitter.svelte.d.ts +5 -24
  241. package/dist/components/SiteFooter/svgs/Videos.svelte.d.ts +22 -21
  242. package/dist/components/SiteFooter/svgs/YouTube.svelte +6 -2
  243. package/dist/components/SiteFooter/svgs/YouTube.svelte.d.ts +5 -24
  244. package/dist/components/SiteHeader/MobileMenu/index.svelte +45 -12
  245. package/dist/components/SiteHeader/MobileMenu/index.svelte.d.ts +7 -28
  246. package/dist/components/SiteHeader/NavBar/DownArrow.svelte +7 -3
  247. package/dist/components/SiteHeader/NavBar/DownArrow.svelte.d.ts +5 -24
  248. package/dist/components/SiteHeader/NavBar/NavDropdown/MoreDropdown.svelte +11 -7
  249. package/dist/components/SiteHeader/NavBar/NavDropdown/MoreDropdown.svelte.d.ts +5 -25
  250. package/dist/components/SiteHeader/NavBar/NavDropdown/SectionDropdown.svelte +13 -9
  251. package/dist/components/SiteHeader/NavBar/NavDropdown/SectionDropdown.svelte.d.ts +5 -26
  252. package/dist/components/SiteHeader/NavBar/NavDropdown/Spinner/index.svelte +1 -0
  253. package/dist/components/SiteHeader/NavBar/NavDropdown/Spinner/index.svelte.d.ts +22 -21
  254. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte +10 -20
  255. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte.d.ts +4 -24
  256. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.d.ts +2 -1
  257. package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.js +36 -45
  258. package/dist/components/SiteHeader/NavBar/NavDropdown/index.svelte +65 -22
  259. package/dist/components/SiteHeader/NavBar/NavDropdown/index.svelte.d.ts +7 -28
  260. package/dist/components/SiteHeader/NavBar/index.svelte +46 -40
  261. package/dist/components/SiteHeader/NavBar/index.svelte.d.ts +5 -25
  262. package/dist/components/SiteHeader/NavBar/utils/index.d.ts +1 -1
  263. package/dist/components/SiteHeader/NavBar/utils/index.js +1 -2
  264. package/dist/components/SiteHeader/SiteHeader.mdx +33 -0
  265. package/dist/components/SiteHeader/SiteHeader.stories.svelte +27 -26
  266. package/dist/components/SiteHeader/SiteHeader.stories.svelte.d.ts +17 -28
  267. package/dist/components/SiteHeader/SiteHeader.svelte +64 -39
  268. package/dist/components/SiteHeader/SiteHeader.svelte.d.ts +3 -16
  269. package/dist/components/SiteHeader/scss/_grids.scss +49 -17
  270. package/dist/components/SiteHeader/svgs/Close.svelte.d.ts +22 -21
  271. package/dist/components/SiteHeader/svgs/Menu.svelte +6 -2
  272. package/dist/components/SiteHeader/svgs/Menu.svelte.d.ts +5 -24
  273. package/dist/components/SiteHeadline/SiteHeadline.mdx +66 -0
  274. package/dist/components/SiteHeadline/SiteHeadline.stories.svelte +17 -35
  275. package/dist/components/SiteHeadline/SiteHeadline.stories.svelte.d.ts +17 -36
  276. package/dist/components/SiteHeadline/SiteHeadline.svelte +59 -26
  277. package/dist/components/SiteHeadline/SiteHeadline.svelte.d.ts +31 -54
  278. package/dist/components/Spinner/Spinner.mdx +25 -0
  279. package/dist/components/Spinner/Spinner.stories.svelte +17 -25
  280. package/dist/components/Spinner/Spinner.stories.svelte.d.ts +17 -58
  281. package/dist/components/Spinner/Spinner.svelte +30 -6
  282. package/dist/components/Spinner/Spinner.svelte.d.ts +23 -30
  283. package/dist/components/Table/Table.mdx +177 -0
  284. package/dist/components/Table/Table.stories.svelte +56 -79
  285. package/dist/components/Table/Table.stories.svelte.d.ts +17 -27
  286. package/dist/components/Table/Table.svelte +201 -134
  287. package/dist/components/Table/Table.svelte.d.ts +50 -94
  288. package/dist/components/Table/components/LeftArrow.svelte.d.ts +26 -0
  289. package/dist/components/Table/{Pagination.svelte → components/Pagination.svelte} +48 -21
  290. package/dist/components/Table/components/Pagination.svelte.d.ts +21 -0
  291. package/dist/components/Table/components/RightArrow.svelte.d.ts +26 -0
  292. package/dist/components/Table/{Select.svelte → components/Select.svelte} +25 -13
  293. package/dist/components/Table/components/Select.svelte.d.ts +16 -0
  294. package/dist/components/Table/{SortArrow.svelte → components/SortArrow.svelte} +19 -4
  295. package/dist/components/Table/components/SortArrow.svelte.d.ts +16 -0
  296. package/dist/components/Table/utils.d.ts +39 -3
  297. package/dist/components/Table/utils.js +80 -26
  298. package/dist/components/Theme/@types/component.d.ts +5 -6
  299. package/dist/components/Theme/Theme.mdx +164 -0
  300. package/dist/components/Theme/Theme.stories.svelte +55 -57
  301. package/dist/components/Theme/Theme.stories.svelte.d.ts +17 -30
  302. package/dist/components/Theme/Theme.svelte +45 -11
  303. package/dist/components/Theme/Theme.svelte.d.ts +19 -28
  304. package/dist/components/Theme/demo/ThemedPage.svelte +36 -0
  305. package/dist/components/Theme/demo/ThemedPage.svelte.d.ts +26 -0
  306. package/dist/components/Theme/themes/common.d.ts +26 -1
  307. package/dist/components/Theme/themes/dark.d.ts +12 -1
  308. package/dist/components/Theme/themes/light.d.ts +12 -1
  309. package/dist/components/Theme/utils/flatten.d.ts +1 -1
  310. package/dist/components/Theme/utils/flatten.js +27 -33
  311. package/dist/components/Theme/utils/merge.d.ts +2 -1
  312. package/dist/components/Theme/utils/merge.js +16 -15
  313. package/dist/components/ToolsHeader/ToolsHeader.mdx +23 -0
  314. package/dist/components/ToolsHeader/ToolsHeader.stories.svelte +10 -16
  315. package/dist/components/ToolsHeader/ToolsHeader.stories.svelte.d.ts +17 -21
  316. package/dist/components/ToolsHeader/ToolsHeader.svelte +57 -16
  317. package/dist/components/ToolsHeader/ToolsHeader.svelte.d.ts +34 -38
  318. package/dist/components/Video/Video.mdx +155 -0
  319. package/dist/components/Video/Video.stories.svelte +72 -56
  320. package/dist/components/Video/Video.stories.svelte.d.ts +17 -21
  321. package/dist/components/Video/Video.svelte +277 -192
  322. package/dist/components/Video/Video.svelte.d.ts +53 -77
  323. package/dist/components/Video/types.d.ts +1 -0
  324. package/dist/components/Video/types.js +1 -0
  325. package/dist/components/Video/utils.d.ts +3 -0
  326. package/dist/components/Video/utils.js +13 -0
  327. package/dist/components/Visible/Visible.mdx +33 -0
  328. package/dist/components/Visible/Visible.stories.svelte +18 -22
  329. package/dist/components/Visible/Visible.stories.svelte.d.ts +17 -21
  330. package/dist/components/Visible/Visible.svelte +74 -37
  331. package/dist/components/Visible/Visible.svelte.d.ts +23 -31
  332. package/dist/docs/contributing/component-guidelines.mdx +19 -48
  333. package/dist/docs/contributing/quickstart.mdx +2 -12
  334. package/dist/docs/contributing/writing-component-stories.mdx +5 -6
  335. package/dist/docs/docs-components/ThemeBuilder/Customiser/Value.jsx +2 -1
  336. package/dist/docs/docs-components/ThemeBuilder/ThemeBuilder.jsx +1 -1
  337. package/dist/docs/guides/archieml.mdx +18 -18
  338. package/dist/docs/guides/graphics-kit.mdx +5 -5
  339. package/dist/docs/guides/svelte-components.mdx +9 -9
  340. package/dist/docs/intro.mdx +2 -2
  341. package/dist/docs/styles/intro.mdx +1 -1
  342. package/dist/docs/theming/css-variables.mdx +7 -7
  343. package/dist/docs/utils/css-to-js/index.d.ts +2 -0
  344. package/dist/docs/utils/css-to-js/index.js +388 -0
  345. package/dist/docs/utils/parseCss.d.ts +3 -3
  346. package/dist/docs/utils/parseCss.js +37 -43
  347. package/dist/index.d.ts +43 -45
  348. package/dist/index.js +5 -12
  349. package/dist/journalize.d.ts +19 -0
  350. package/dist/scss/tokens/text/mixins/_font-family.scss +2 -1
  351. package/dist/utils/index.d.ts +6 -0
  352. package/dist/utils/index.js +12 -0
  353. package/package.json +59 -77
  354. package/dist/components/Analytics/stories/docs/component.md +0 -11
  355. package/dist/components/Analytics/stories/docs/environments.md +0 -17
  356. package/dist/components/Analytics/stories/docs/multipage.md +0 -31
  357. package/dist/components/Article/stories/docs/component.md +0 -13
  358. package/dist/components/Article/stories/docs/customWellWidths.md +0 -87
  359. package/dist/components/BeforeAfter/stories/docs/ariaDescriptions.md +0 -35
  360. package/dist/components/BeforeAfter/stories/docs/component.md +0 -15
  361. package/dist/components/BeforeAfter/stories/docs/withOverlays.md +0 -33
  362. package/dist/components/Block/stories/docs/component.md +0 -15
  363. package/dist/components/Block/stories/docs/customLayouts.md +0 -13
  364. package/dist/components/Block/stories/docs/snapWidths.md +0 -50
  365. package/dist/components/BodyText/stories/docs/component.md +0 -46
  366. package/dist/components/Byline/stories/docs/component.md +0 -19
  367. package/dist/components/DatawrapperChart/stories/docs/withChatter.md +0 -5
  368. package/dist/components/DocumentCloud/stories/docs/component.md +0 -17
  369. package/dist/components/EmbedPreviewerLink/stories/docs/component.md +0 -11
  370. package/dist/components/EndNotes/stories/docs/component.md +0 -24
  371. package/dist/components/FeaturePhoto/stories/docs/archieML.md +0 -37
  372. package/dist/components/FeaturePhoto/stories/docs/component.md +0 -16
  373. package/dist/components/FeaturePhoto/stories/docs/missingAltText.md +0 -1
  374. package/dist/components/GraphicBlock/AriaHidden.svelte +0 -10
  375. package/dist/components/GraphicBlock/AriaHidden.svelte.d.ts +0 -22
  376. package/dist/components/GraphicBlock/TextBlock.svelte +0 -11
  377. package/dist/components/GraphicBlock/TextBlock.svelte.d.ts +0 -21
  378. package/dist/components/GraphicBlock/stories/ai2svelte/ai-chart.svelte.d.ts +0 -25
  379. package/dist/components/GraphicBlock/stories/docs/ai2svelte.md +0 -19
  380. package/dist/components/GraphicBlock/stories/docs/archieML.md +0 -40
  381. package/dist/components/GraphicBlock/stories/docs/aria.md +0 -56
  382. package/dist/components/GraphicBlock/stories/docs/component.md +0 -20
  383. package/dist/components/GraphicBlock/stories/docs/customText.md +0 -14
  384. package/dist/components/Headline/stories/docs/component.md +0 -13
  385. package/dist/components/Headline/stories/docs/customHed.md +0 -31
  386. package/dist/components/Headline/stories/docs/withByline.md +0 -13
  387. package/dist/components/Headline/stories/docs/withCrownGraphic.md +0 -24
  388. package/dist/components/Headline/stories/docs/withCrownImage.md +0 -21
  389. package/dist/components/Headline/stories/docs/withDek.md +0 -11
  390. package/dist/components/Headline/stories/graphic.svelte.d.ts +0 -25
  391. package/dist/components/HeroHeadline/Hero.stories.svelte +0 -322
  392. package/dist/components/HeroHeadline/Hero.stories.svelte.d.ts +0 -42
  393. package/dist/components/HeroHeadline/Hero.svelte +0 -193
  394. package/dist/components/HeroHeadline/Hero.svelte.d.ts +0 -75
  395. package/dist/components/HeroHeadline/stories/docs/backgroundGraphic.md +0 -84
  396. package/dist/components/HeroHeadline/stories/docs/backgroundVideo.md +0 -51
  397. package/dist/components/HeroHeadline/stories/docs/component.md +0 -20
  398. package/dist/components/HeroHeadline/stories/docs/customHed.md +0 -43
  399. package/dist/components/HeroHeadline/stories/docs/inlineGraphic.md +0 -38
  400. package/dist/components/HeroHeadline/stories/docs/inlinePhoto.md +0 -34
  401. package/dist/components/HeroHeadline/stories/docs/inlineVideo.md +0 -34
  402. package/dist/components/HeroHeadline/stories/docs/transparentHeader.md +0 -17
  403. package/dist/components/HeroHeadline/stories/graphics/crash.svelte.d.ts +0 -25
  404. package/dist/components/HeroHeadline/stories/graphics/quakemap.svelte.d.ts +0 -25
  405. package/dist/components/InfoBox/stories/docs/component.md +0 -17
  406. package/dist/components/Markdown/Markdown.stories.svelte +0 -28
  407. package/dist/components/Markdown/Markdown.stories.svelte.d.ts +0 -23
  408. package/dist/components/Markdown/Markdown.svelte +0 -34
  409. package/dist/components/Markdown/Markdown.svelte.d.ts +0 -20
  410. package/dist/components/Markdown/stores.d.ts +0 -23
  411. package/dist/components/Markdown/stores.js +0 -24
  412. package/dist/components/Markdown/stories/docs/component.md +0 -39
  413. package/dist/components/PaddingReset/stories/docs/component.md +0 -35
  414. package/dist/components/PhotoCarousel/PhotoCarousel.stories.svelte +0 -72
  415. package/dist/components/PhotoCarousel/PhotoCarousel.stories.svelte.d.ts +0 -29
  416. package/dist/components/PhotoCarousel/PhotoCarousel.svelte +0 -202
  417. package/dist/components/PhotoCarousel/PhotoCarousel.svelte.d.ts +0 -78
  418. package/dist/components/PhotoCarousel/stories/docs/component.md +0 -21
  419. package/dist/components/PhotoCarousel/stories/docs/withCustom.md +0 -27
  420. package/dist/components/PhotoCarousel/stories/photos.json +0 -72
  421. package/dist/components/PhotoPack/stories/docs/archieML.md +0 -63
  422. package/dist/components/PhotoPack/stories/docs/component.md +0 -45
  423. package/dist/components/PhotoPack/stories/docs/missingAltText.md +0 -1
  424. package/dist/components/PymChild/stores.d.ts +0 -1
  425. package/dist/components/PymChild/stores.js +0 -3
  426. package/dist/components/PymChild/stories/docs/component.md +0 -28
  427. package/dist/components/ReferralBlock/stories/docs/collection.md +0 -7
  428. package/dist/components/ReferralBlock/stories/docs/component.md +0 -15
  429. package/dist/components/ReutersGraphicsLogo/stories/docs/component.md +0 -11
  430. package/dist/components/ReutersLogo/stories/docs/component.md +0 -9
  431. package/dist/components/SEO/stories/docs/archieML.md +0 -36
  432. package/dist/components/SEO/stories/docs/component.md +0 -26
  433. package/dist/components/Scroller/stories/components/ai2svelte/ai-scroller-1.svelte.d.ts +0 -25
  434. package/dist/components/Scroller/stories/components/ai2svelte/ai-scroller-2.svelte.d.ts +0 -25
  435. package/dist/components/Scroller/stories/components/ai2svelte/ai-scroller-3.svelte.d.ts +0 -25
  436. package/dist/components/Scroller/stories/components/basic/InteractiveForeground.svelte +0 -13
  437. package/dist/components/Scroller/stories/components/basic/InteractiveForeground.svelte.d.ts +0 -25
  438. package/dist/components/Scroller/stories/components/basic/Step.svelte +0 -12
  439. package/dist/components/Scroller/stories/components/basic/Step.svelte.d.ts +0 -25
  440. package/dist/components/Scroller/stories/docs/ai2svelte.md +0 -42
  441. package/dist/components/Scroller/stories/docs/archieML.md +0 -87
  442. package/dist/components/Scroller/stories/docs/component.md +0 -39
  443. package/dist/components/Scroller/stories/docs/interactive.md +0 -36
  444. package/dist/components/SearchInput/MagnifyingGlass.svelte.d.ts +0 -25
  445. package/dist/components/SearchInput/X.svelte.d.ts +0 -25
  446. package/dist/components/SearchInput/stories/docs/component.md +0 -17
  447. package/dist/components/SimpleTimeline/stories/docs/component.md +0 -24
  448. package/dist/components/SiteFooter/stories/docs/component.md +0 -11
  449. package/dist/components/SiteFooter/stories/docs/darkTheme.md +0 -11
  450. package/dist/components/SiteFooter/stories/docs/removeReferrals.md +0 -9
  451. package/dist/components/SiteHeader/stories/docs/component.md +0 -11
  452. package/dist/components/SiteHeader/stories/docs/darkTheme.md +0 -11
  453. package/dist/components/SiteHeadline/stories/docs/archieML.md +0 -26
  454. package/dist/components/SiteHeadline/stories/docs/component.md +0 -21
  455. package/dist/components/Spinner/stories/docs/component.md +0 -15
  456. package/dist/components/Table/LeftArrow.svelte.d.ts +0 -25
  457. package/dist/components/Table/Pagination.svelte.d.ts +0 -33
  458. package/dist/components/Table/RightArrow.svelte.d.ts +0 -25
  459. package/dist/components/Table/Select.svelte.d.ts +0 -28
  460. package/dist/components/Table/SortArrow.svelte.d.ts +0 -22
  461. package/dist/components/Table/stories/docs/both.md +0 -13
  462. package/dist/components/Table/stories/docs/component.md +0 -14
  463. package/dist/components/Table/stories/docs/filter.md +0 -11
  464. package/dist/components/Table/stories/docs/format.md +0 -21
  465. package/dist/components/Table/stories/docs/metadata.md +0 -14
  466. package/dist/components/Table/stories/docs/paginate.md +0 -14
  467. package/dist/components/Table/stories/docs/search.md +0 -11
  468. package/dist/components/Table/stories/docs/sort.md +0 -14
  469. package/dist/components/Table/stories/docs/style.md +0 -23
  470. package/dist/components/Table/stories/docs/truncate.md +0 -11
  471. package/dist/components/Theme/stories/ThemedPage.svelte +0 -43
  472. package/dist/components/Theme/stories/ThemedPage.svelte.d.ts +0 -25
  473. package/dist/components/Theme/stories/docs/component.md +0 -15
  474. package/dist/components/Theme/stories/docs/customise-font.md +0 -52
  475. package/dist/components/Theme/stories/docs/customise.md +0 -28
  476. package/dist/components/Theme/stories/docs/gfonts.png +0 -0
  477. package/dist/components/Theme/stories/docs/inheritance.md +0 -17
  478. package/dist/components/Theme/stories/docs/pattern.md +0 -40
  479. package/dist/components/ToolsHeader/stories/docs/component.md +0 -13
  480. package/dist/components/Video/Controls.svelte +0 -75
  481. package/dist/components/Video/Controls.svelte.d.ts +0 -47
  482. package/dist/components/Video/docs.svx +0 -275
  483. package/dist/components/Video/stories/docs/component.md +0 -15
  484. package/dist/components/Video/stories/docs/controls.md +0 -38
  485. package/dist/components/Video/stories/docs/playAndLoop.md +0 -28
  486. package/dist/components/Video/stories/docs/withSound.md +0 -36
  487. package/dist/components/Visible/stories/docs/component.md +0 -19
  488. package/dist/components/Visible/stories/snippets/default.svelte +0 -11
  489. package/dist/components/Visible/stories/snippets/default.svelte.d.ts +0 -25
  490. package/dist/docs/contributing/story-recipes/basic-story.mdx +0 -77
  491. package/dist/docs/contributing/story-recipes/source-code.png +0 -0
  492. package/dist/docs/contributing/story-recipes/story-with-custom-controls.mdx +0 -46
  493. package/dist/docs/contributing/story-recipes/story-with-custom-docs.mdx +0 -130
  494. package/dist/docs/contributing/story-recipes/story-with-media.mdx +0 -50
  495. package/dist/docs/contributing/writing-docs-stories.mdx +0 -35
  496. package/dist/docs/utils/withParams.d.ts +0 -15
  497. package/dist/docs/utils/withParams.js +0 -46
  498. /package/dist/components/BeforeAfter/{stories → images}/myrne-after.jpg +0 -0
  499. /package/dist/components/BeforeAfter/{stories → images}/myrne-before.jpg +0 -0
  500. /package/dist/components/FeaturePhoto/{stories → images}/shark.jpg +0 -0
  501. /package/dist/components/GraphicBlock/{stories → demo}/imgs/ai-chart-md.png +0 -0
  502. /package/dist/components/GraphicBlock/{stories → demo}/imgs/ai-chart-sm.png +0 -0
  503. /package/dist/components/GraphicBlock/{stories → demo}/imgs/ai-chart-xs.png +0 -0
  504. /package/dist/components/GraphicBlock/{stories → demo}/placeholder.png +0 -0
  505. /package/dist/components/Headline/{stories → demo}/crown.png +0 -0
  506. /package/dist/components/Headline/{stories → demo}/graphic-lg.png +0 -0
  507. /package/dist/components/Headline/{stories → demo}/graphic-md.png +0 -0
  508. /package/dist/components/Headline/{stories → demo}/graphic-sm.png +0 -0
  509. /package/dist/components/Headline/{stories → demo}/graphic-xl.png +0 -0
  510. /package/dist/components/Headline/{stories → demo}/graphic-xs.png +0 -0
  511. /package/dist/components/HeroHeadline/{stories → demo}/eurovis.jpeg +0 -0
  512. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-lg.jpeg +0 -0
  513. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-md.jpeg +0 -0
  514. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-sm.jpeg +0 -0
  515. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-xl.jpeg +0 -0
  516. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-xl_copy.jpeg +0 -0
  517. /package/dist/components/HeroHeadline/{stories → demo}/graphics/CRASH_1-xs.jpeg +0 -0
  518. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-lg.jpeg +0 -0
  519. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-md.jpeg +0 -0
  520. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-sm.jpeg +0 -0
  521. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-xl.jpeg +0 -0
  522. /package/dist/components/HeroHeadline/{stories → demo}/graphics/quake-map-top-xs.jpeg +0 -0
  523. /package/dist/components/HeroHeadline/{stories → demo}/polar.jpg +0 -0
  524. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-lg.png +0 -0
  525. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-md.png +0 -0
  526. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-sm.png +0 -0
  527. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-xl.png +0 -0
  528. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-1-xs.png +0 -0
  529. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-lg.png +0 -0
  530. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-md.png +0 -0
  531. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-sm.png +0 -0
  532. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-xl.png +0 -0
  533. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-2-xs.png +0 -0
  534. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-lg.png +0 -0
  535. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-md.png +0 -0
  536. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-sm.png +0 -0
  537. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-xl.png +0 -0
  538. /package/dist/components/Scroller/{stories → demo}/components/ai2svelte/images/step-3-xs.png +0 -0
  539. /package/dist/components/SearchInput/{MagnifyingGlass.svelte → components/MagnifyingGlass.svelte} +0 -0
  540. /package/dist/components/SearchInput/{X.svelte → components/X.svelte} +0 -0
  541. /package/dist/components/Table/{LeftArrow.svelte → components/LeftArrow.svelte} +0 -0
  542. /package/dist/components/Table/{RightArrow.svelte → components/RightArrow.svelte} +0 -0
  543. /package/dist/components/Table/{stories → demo}/homeRuns.json +0 -0
  544. /package/dist/components/Table/{stories → demo}/pressFreedom.json +0 -0
  545. /package/dist/components/Table/{stories → demo}/richestWomen.json +0 -0
  546. /package/dist/components/Video/{stories/videos → demo}/silent-video.mp4 +0 -0
  547. /package/dist/components/Video/{stories/videos → demo}/sound-video.mp4 +0 -0
@@ -1,175 +1,274 @@
1
1
  <!-- @component `BeforeAfter` [Read the docs.](https://reuters-graphics.github.io/graphics-components/?path=/docs/components-graphics-beforeafter--docs) -->
2
- <script>import { throttle } from "lodash-es";
3
- import { onMount } from "svelte";
4
- import Block from "../Block/Block.svelte";
5
- import PaddingReset from "../PaddingReset/PaddingReset.svelte";
6
- export let width = "normal";
7
- export let height = 600;
8
- export let heightRatio = null;
9
- export let beforeSrc = null;
10
- export let beforeAlt = null;
11
- export let afterSrc = null;
12
- export let afterAlt = null;
13
- let cls = "";
14
- export { cls as class };
15
- export let handleColour = "white";
16
- export let handleInactiveOpacity = 0.9;
17
- export let handleMargin = 20;
18
- export let keyPressStep = 0.05;
19
- export let offset = 0.5;
20
- const random4 = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);
21
- export let id = "before-after-" + random4() + random4();
22
- let img;
23
- let imgOffset = null;
24
- let sliding = false;
25
- let figure;
26
- let beforeOverlayWidth = 0;
27
- let isFocused = false;
28
- let containerWidth;
29
- $: containerHeight = containerWidth && heightRatio ? containerWidth * heightRatio : height;
30
- $: w = imgOffset && imgOffset.width || 0;
31
- $: x = w * offset;
32
- $: figStyle = `width:100%;height:${containerHeight}px;`;
33
- $: imgStyle = "width:100%;height:100%;";
34
- $: beforeOverlayClip = x < beforeOverlayWidth ? Math.abs(x - beforeOverlayWidth) : 0;
35
- const onFocus = () => isFocused = true;
36
- const onBlur = () => isFocused = false;
37
- const handleKeyDown = (e) => {
38
- if (!isFocused) return;
39
- const { keyCode } = e;
40
- const margin = handleMargin / w;
41
- if (keyCode === 39) {
42
- offset = Math.min(1 - margin, offset + keyPressStep);
43
- } else if (keyCode === 37) {
44
- offset = Math.max(0 + margin, offset - keyPressStep);
45
- }
46
- };
47
- const measureImage = () => {
48
- if (img && img.complete) imgOffset = img.getBoundingClientRect();
49
- };
50
- const resize = () => {
51
- measureImage();
52
- };
53
- const measureLoadedImage = (e) => {
54
- if (e.type === "load") {
55
- imgOffset = e.target.getBoundingClientRect();
2
+ <script lang="ts">
3
+ import { type Snippet } from 'svelte';
4
+ import { throttle } from 'es-toolkit';
5
+
6
+ import Block from '../Block/Block.svelte';
7
+ import PaddingReset from '../PaddingReset/PaddingReset.svelte';
8
+ import type { ContainerWidth } from '../@types/global';
9
+ import { random4 } from '../../utils/';
10
+
11
+ interface Props {
12
+ /** Width of the chart within the text well. Options: wide, wider, widest, fluid */
13
+ width?: ContainerWidth;
14
+ /** Height of the component */
15
+ height?: number;
16
+ /**
17
+ * If set, makes the height a ratio of the component's width.
18
+ */
19
+ heightRatio?: number;
20
+ /**
21
+ * Before image source
22
+ */
23
+ beforeSrc: string;
24
+ /**
25
+ * Before image altText
26
+ */
27
+ beforeAlt: string;
28
+ /**
29
+ * After image source
30
+ */
31
+ afterSrc: string;
32
+ /**
33
+ * After image altText
34
+ */
35
+ afterAlt: string;
36
+ /**
37
+ * Class to target with SCSS.
38
+ */
39
+ class?: string;
40
+ /** Drag handle colour */
41
+ handleColour?: string;
42
+ /** Drag handle opacity */
43
+ handleInactiveOpacity?: number;
44
+ /** Margin at the edge of the image to stop dragging */
45
+ handleMargin?: number;
46
+ /** Percentage of the component width the handle will travel ona key press */
47
+ keyPressStep?: number;
48
+ /** Initial offset of the handle, between 0 and 1. */
49
+ offset?: number;
50
+ /** ID to target with SCSS. */
51
+ id?: string;
52
+ /**
53
+ * Optional snippet for a custom overlay for the before image.
54
+ */
55
+ beforeOverlay?: Snippet;
56
+ /**
57
+ * Optional snippet for a custom overlay for the after image.
58
+ */
59
+ afterOverlay?: Snippet;
60
+ /**
61
+ * Optional snippet for a custom caption.
62
+ */
63
+ caption?: Snippet;
64
+ /** Custom ARIA label language to label the component. */
65
+ ariaLabel?: string;
56
66
  }
57
- };
58
- const move = (e) => {
59
- if (sliding && imgOffset) {
60
- const el = e instanceof TouchEvent && e.touches ? e.touches[0] : e;
61
- const figureOffset = figure ? parseInt(window.getComputedStyle(figure).marginLeft.slice(0, -2)) : 0;
62
- let x2 = el.pageX - figureOffset - imgOffset.left;
63
- x2 = x2 < handleMargin ? handleMargin : x2 > w - handleMargin ? w - handleMargin : x2;
64
- offset = x2 / w;
67
+
68
+ let {
69
+ width = 'normal',
70
+ height = 600,
71
+ heightRatio,
72
+ beforeSrc,
73
+ beforeAlt,
74
+ afterSrc,
75
+ afterAlt,
76
+ class: cls = '',
77
+ handleColour = 'white',
78
+ handleInactiveOpacity = 0.9,
79
+ handleMargin = 20,
80
+ keyPressStep = 0.05,
81
+ offset = 0.5,
82
+ id = 'before-after-' + random4() + random4(),
83
+ beforeOverlay,
84
+ afterOverlay,
85
+ caption,
86
+ ariaLabel = 'Stacked before and after images with an adjustable slider',
87
+ }: Props = $props();
88
+
89
+ /** DOM nodes are undefined until the component is mounted — in other words, you should read it inside an effect or an event handler, but not during component initialisation.
90
+ */
91
+ let img: HTMLImageElement | undefined = $state(undefined);
92
+
93
+ /** Defaults with an empty DOMRect with all values set to 0 */
94
+ let imgOffset: DOMRect = $state(new DOMRect());
95
+ let sliding = false;
96
+ let figure: HTMLElement | undefined = $state(undefined);
97
+ let beforeOverlayWidth = $state(0);
98
+ let isFocused = false;
99
+ let containerWidth: number = $state(0); // Defaults to 0
100
+
101
+ let containerHeight = $derived(
102
+ containerWidth && heightRatio ? containerWidth * heightRatio : height
103
+ );
104
+
105
+ let w = $derived(imgOffset.width);
106
+ let x = $derived(w * offset);
107
+ let figStyle = $derived(`width:100%;height:${containerHeight}px;`);
108
+ const imgStyle = 'width:100%;height:100%;';
109
+ let beforeOverlayClip = $derived(
110
+ x < beforeOverlayWidth ? Math.abs(x - beforeOverlayWidth) : 0
111
+ );
112
+
113
+ /** Toggle `isFocused` */
114
+ const onfocus = () => (isFocused = true);
115
+ const onblur = () => (isFocused = false);
116
+
117
+ /** Handle left or right arrows being pressed */
118
+ const handleKeyDown = (e: KeyboardEvent) => {
119
+ if (!isFocused) return;
120
+ const { code, key } = e;
121
+ const margin = handleMargin / w;
122
+ if (code === 'ArrowRight' || key === 'ArrowRight') {
123
+ offset = Math.min(1 - margin, offset + keyPressStep);
124
+ } else if (code === 'ArrowLeft' || key === 'ArrowLeft') {
125
+ offset = Math.max(0 + margin, offset - keyPressStep);
126
+ }
127
+ };
128
+
129
+ /** Measure image and set image offset */
130
+ const measureImage = () => {
131
+ if (img && img.complete) imgOffset = img.getBoundingClientRect();
132
+ };
133
+
134
+ /** Reset image offset on resize */
135
+ const resize = () => {
136
+ measureImage();
137
+ };
138
+
139
+ /** Measure image and set image offset on load */
140
+ const measureLoadedImage = (e: Event) => {
141
+ if (e.type === 'load') {
142
+ imgOffset = (e.target as HTMLImageElement).getBoundingClientRect();
143
+ }
144
+ };
145
+
146
+ /** Move the slider */
147
+ const move = (e: MouseEvent | TouchEvent) => {
148
+ if (sliding && imgOffset) {
149
+ const el =
150
+ e instanceof TouchEvent && e.touches ? e.touches[0] : (e as MouseEvent);
151
+ const figureOffset =
152
+ figure ?
153
+ parseInt(window.getComputedStyle(figure).marginLeft.slice(0, -2))
154
+ : 0;
155
+ let x = el.pageX - figureOffset - imgOffset.left;
156
+ x =
157
+ x < handleMargin ? handleMargin
158
+ : x > w - handleMargin ? w - handleMargin
159
+ : x;
160
+ offset = x / w;
161
+ }
162
+ };
163
+
164
+ /** Starts the slider */
165
+ const start = (e: MouseEvent | TouchEvent) => {
166
+ sliding = true;
167
+ move(e);
168
+ };
169
+
170
+ /** Sets `sliding` to `false`*/
171
+ const end = () => {
172
+ sliding = false;
173
+ };
174
+
175
+ /** Keep this warning since these values are often read from an ArchieML doc, which will not trigger typescript errors even if required values don't exist */
176
+ if (!(beforeSrc && beforeAlt && afterSrc && afterAlt)) {
177
+ console.warn('Missing required src or alt props for BeforeAfter component');
65
178
  }
66
- };
67
- const start = (e) => {
68
- sliding = true;
69
- move(e);
70
- };
71
- const end = () => {
72
- sliding = false;
73
- };
74
- if (!(beforeSrc && beforeAlt && afterSrc && afterAlt)) {
75
- console.warn("Missing required src or alt props for BeforeAfter component");
76
- }
77
- onMount(() => {
78
- const interval = setInterval(() => {
79
- if (imgOffset) clearInterval(interval);
80
- if (img && img.complete && !imgOffset) measureImage();
81
- }, 50);
82
- });
179
+
180
+ /** @TODO - Double check if this onMount is still necessary */
181
+ // onMount(() => {
182
+ // // This is necessary b/c on:load doesn't reliably fire on the image...
183
+ // const interval = setInterval(() => {
184
+ // if (imgOffset) clearInterval(interval);
185
+ // if (img && img.complete && !imgOffset) measureImage();
186
+ // }, 50);
187
+ // });
83
188
  </script>
84
189
 
85
190
  <svelte:window
86
- on:touchmove="{move}"
87
- on:touchend="{end}"
88
- on:mousemove="{move}"
89
- on:mouseup="{end}"
90
- on:resize="{throttle(resize, 100)}"
91
- on:keydown="{handleKeyDown}"
191
+ ontouchmove={move}
192
+ ontouchend={end}
193
+ onmousemove={move}
194
+ onmouseup={end}
195
+ onresize={throttle(resize, 100)}
196
+ onkeydown={handleKeyDown}
92
197
  />
93
198
 
199
+ <!-- Since we usually read these values from ArchieML, check that they exist -->
94
200
  {#if beforeSrc && beforeAlt && afterSrc && afterAlt}
95
201
  <Block {width} {id} class="photo before-after fmy-6 {cls}">
96
- <div
97
- style="height: {containerHeight}px;"
98
- bind:clientWidth="{containerWidth}"
99
- >
100
- <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
101
- <figure
102
- style="{figStyle}"
202
+ <div style="height: {containerHeight}px;" bind:clientWidth={containerWidth}>
203
+ <button
204
+ style={figStyle}
103
205
  class="before-after-container relative overflow-hidden my-0 mx-auto"
104
- on:touchstart="{start}"
105
- on:mousedown="{start}"
106
- bind:this="{figure}"
107
- aria-labelledby="{($$slots.caption && `${id}-caption`) || undefined}"
206
+ ontouchstart={start}
207
+ onmousedown={start}
208
+ bind:this={figure}
209
+ aria-label={ariaLabel}
108
210
  >
109
211
  <img
110
- bind:this="{img}"
111
- src="{afterSrc}"
112
- alt="{afterAlt}"
113
- on:load="{measureLoadedImage}"
114
- on:mousedown|preventDefault
115
- style="{imgStyle}"
212
+ bind:this={img}
213
+ src={afterSrc}
214
+ alt={afterAlt}
215
+ onload={measureLoadedImage}
216
+ style={imgStyle}
116
217
  class="after absolute block m-0 max-w-full object-cover"
117
- aria-describedby="{($$slots.beforeOverlay && `${id}-before`) ||
118
- undefined}"
218
+ aria-describedby={beforeOverlay ?
219
+ `${id}-before-description`
220
+ : undefined}
119
221
  />
120
222
 
121
223
  <img
122
- src="{beforeSrc}"
123
- alt="{beforeAlt}"
124
- on:mousedown|preventDefault
224
+ src={beforeSrc}
225
+ alt={beforeAlt}
125
226
  style="clip: rect(0 {x}px {containerHeight}px 0);{imgStyle}"
126
227
  class="before absolute block m-0 max-w-full object-cover"
127
- aria-describedby="{($$slots.afterOverlay && `${id}-after`) ||
128
- undefined}"
228
+ aria-describedby={afterOverlay ?
229
+ `${id}-after-description`
230
+ : undefined}
129
231
  />
130
- {#if $$slots.beforeOverlay}
232
+ {#if beforeOverlay}
131
233
  <div
132
- id="image-before-label"
234
+ id="{id}-before-description"
133
235
  class="overlay-container before absolute"
134
- bind:clientWidth="{beforeOverlayWidth}"
236
+ bind:clientWidth={beforeOverlayWidth}
135
237
  style="clip-path: inset(0 {beforeOverlayClip}px 0 0);"
136
238
  >
137
239
  <!-- Overlay for before image -->
138
- <slot
139
- name="beforeOverlay"
140
- description="{`${id}-before-description`}"
141
- />
240
+ {@render beforeOverlay()}
142
241
  </div>
143
242
  {/if}
144
- {#if $$slots.afterOverlay}
145
- <div id="image-after-label" class="overlay-container after absolute">
243
+ {#if afterOverlay}
244
+ <div
245
+ id="{id}-after-description"
246
+ class="overlay-container after absolute"
247
+ >
146
248
  <!-- Overlay for after image -->
147
- <slot
148
- name="afterOverlay"
149
- description="{`${id}-after-description`}"
150
- />
249
+ {@render afterOverlay()}
151
250
  </div>
152
251
  {/if}
153
252
  <div
154
253
  tabindex="0"
155
254
  role="slider"
156
- aria-valuenow="{Math.round(offset * 100)}"
255
+ aria-valuenow={Math.round(offset * 100)}
157
256
  class="handle"
158
257
  style="left: calc({offset *
159
258
  100}% - 20px); --before-after-handle-colour: {handleColour}; --before-after-handle-inactive-opacity: {handleInactiveOpacity};"
160
- on:focus="{onFocus}"
161
- on:blur="{onBlur}"
259
+ {onfocus}
260
+ {onblur}
162
261
  >
163
262
  <div class="arrow-left"></div>
164
263
  <div class="arrow-right"></div>
165
264
  </div>
166
- </figure>
265
+ </button>
167
266
  </div>
168
- {#if $$slots.caption}
169
- <PaddingReset containerIsFluid="{width === 'fluid'}">
170
- <aside class="before-after-caption mx-auto" id="{`${id}-caption`}">
267
+ {#if caption}
268
+ <PaddingReset containerIsFluid={width === 'fluid'}>
269
+ <aside class="before-after-caption mx-auto" id={`${id}-caption`}>
171
270
  <!-- Caption for image credits -->
172
- <slot name="caption" />
271
+ {@render caption()}
173
272
  </aside>
174
273
  </PaddingReset>
175
274
  {/if}
@@ -183,35 +282,35 @@ https://utopia.fyi/space/calculator/?c=320,18,1.125,1280,21,1.25,7,3,&s=0.75|0.5
183
282
  https://utopia.fyi/space/calculator/?c=320,18,1.125,1280,21,1.25,7,3,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12
184
283
  */
185
284
  /* Scales by 1.125 */
186
- figure.before-after-container {
285
+ button.before-after-container {
187
286
  box-sizing: content-box;
188
287
  }
189
- figure.before-after-container img {
288
+ button.before-after-container img {
190
289
  top: 0;
191
290
  left: 0;
192
291
  z-index: 20;
193
292
  user-select: none;
194
293
  }
195
- figure.before-after-container img.after {
294
+ button.before-after-container img.after {
196
295
  z-index: 21;
197
296
  }
198
- figure.before-after-container img.before {
297
+ button.before-after-container img.before {
199
298
  z-index: 22;
200
299
  }
201
- figure.before-after-container .overlay-container {
202
- position: absolute;
300
+ button.before-after-container .overlay-container {
301
+ top: 0;
203
302
  }
204
- figure.before-after-container .overlay-container :global(:first-child) {
303
+ button.before-after-container .overlay-container :global(:first-child) {
205
304
  margin-top: 0;
206
305
  }
207
- figure.before-after-container .overlay-container :global(:last-child) {
306
+ button.before-after-container .overlay-container :global(:last-child) {
208
307
  margin-bottom: 0;
209
308
  }
210
- figure.before-after-container .overlay-container.before {
309
+ button.before-after-container .overlay-container.before {
211
310
  left: 0;
212
311
  z-index: 23;
213
312
  }
214
- figure.before-after-container .overlay-container.after {
313
+ button.before-after-container .overlay-container.after {
215
314
  right: 0;
216
315
  z-index: 21;
217
316
  }
@@ -267,7 +366,7 @@ figure.before-after-container .overlay-container.after {
267
366
  border-right: 10px solid var(--before-after-handle-colour);
268
367
  }
269
368
 
270
- aside.before-after-caption :global(p) {
369
+ .before-after-caption :global(p) {
271
370
  font-family: var(--theme-font-family-note);
272
371
  color: var(--theme-colour-text-secondary);
273
372
  font-size: var(--theme-font-size-xs);
@@ -1,64 +1,62 @@
1
- import { SvelteComponent } from "svelte";
1
+ import { type Snippet } from 'svelte';
2
2
  import type { ContainerWidth } from '../@types/global';
3
- declare const __propDef: {
4
- props: {
5
- /** Width of the chart within the text well. */ width?: ContainerWidth;
6
- /** Height of the component */ height?: number;
7
- /**
8
- * If set, makes the height a ratio of the component's width.
9
- * @type {number}
10
- */ heightRatio?: number | null;
11
- /**
12
- * Before image src
13
- * @required
14
- */ beforeSrc?: string | null;
15
- /**
16
- * Before image altText
17
- * @required
18
- */ beforeAlt?: string | null;
19
- /**
20
- * After image src
21
- * @required
22
- */ afterSrc?: string | null;
23
- /**
24
- * After image altText
25
- * @required
26
- */ afterAlt?: string | null;
27
- /**
28
- * Set a class to target with SCSS.
29
- * @type {string}
30
- */ class?: string;
31
- /** Drag handle colour */ handleColour?: string;
32
- /** Drag handle opacity */ handleInactiveOpacity?: number;
33
- /** Margin at the edge of the image to stop dragging */ handleMargin?: number;
34
- /** Percentage of the component width the handle will travel ona key press */ keyPressStep?: number;
35
- /** Initial offset of the handle, between 0 and 1. */ offset?: number;
36
- /**
37
- * Add an ID to target with SCSS.
38
- * @type {string}
39
- */ id?: string;
40
- };
41
- events: {
42
- mousedown: MouseEvent;
43
- } & {
44
- [evt: string]: CustomEvent<any>;
45
- };
46
- slots: {
47
- beforeOverlay: {
48
- description: string;
49
- };
50
- afterOverlay: {
51
- description: string;
52
- };
53
- caption: {};
54
- };
55
- exports?: {} | undefined;
56
- bindings?: string | undefined;
57
- };
58
- export type BeforeAfterProps = typeof __propDef.props;
59
- export type BeforeAfterEvents = typeof __propDef.events;
60
- export type BeforeAfterSlots = typeof __propDef.slots;
61
- /** `BeforeAfter` [Read the docs.](https://reuters-graphics.github.io/graphics-components/?path=/docs/components-graphics-beforeafter--docs) */
62
- export default class BeforeAfter extends SvelteComponent<BeforeAfterProps, BeforeAfterEvents, BeforeAfterSlots> {
3
+ interface Props {
4
+ /** Width of the chart within the text well. Options: wide, wider, widest, fluid */
5
+ width?: ContainerWidth;
6
+ /** Height of the component */
7
+ height?: number;
8
+ /**
9
+ * If set, makes the height a ratio of the component's width.
10
+ */
11
+ heightRatio?: number;
12
+ /**
13
+ * Before image source
14
+ */
15
+ beforeSrc: string;
16
+ /**
17
+ * Before image altText
18
+ */
19
+ beforeAlt: string;
20
+ /**
21
+ * After image source
22
+ */
23
+ afterSrc: string;
24
+ /**
25
+ * After image altText
26
+ */
27
+ afterAlt: string;
28
+ /**
29
+ * Class to target with SCSS.
30
+ */
31
+ class?: string;
32
+ /** Drag handle colour */
33
+ handleColour?: string;
34
+ /** Drag handle opacity */
35
+ handleInactiveOpacity?: number;
36
+ /** Margin at the edge of the image to stop dragging */
37
+ handleMargin?: number;
38
+ /** Percentage of the component width the handle will travel ona key press */
39
+ keyPressStep?: number;
40
+ /** Initial offset of the handle, between 0 and 1. */
41
+ offset?: number;
42
+ /** ID to target with SCSS. */
43
+ id?: string;
44
+ /**
45
+ * Optional snippet for a custom overlay for the before image.
46
+ */
47
+ beforeOverlay?: Snippet;
48
+ /**
49
+ * Optional snippet for a custom overlay for the after image.
50
+ */
51
+ afterOverlay?: Snippet;
52
+ /**
53
+ * Optional snippet for a custom caption.
54
+ */
55
+ caption?: Snippet;
56
+ /** Custom ARIA label language to label the component. */
57
+ ariaLabel?: string;
63
58
  }
64
- export {};
59
+ /** `BeforeAfter` [Read the docs.](https://reuters-graphics.github.io/graphics-components/?path=/docs/components-graphics-beforeafter--docs) */
60
+ declare const BeforeAfter: import("svelte").Component<Props, {}, "">;
61
+ type BeforeAfter = ReturnType<typeof BeforeAfter>;
62
+ export default BeforeAfter;