pageflow 17.1.0 → 17.2.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 (302) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +319 -345
  3. data/README.md +3 -4
  4. data/admins/pageflow/accounts.rb +6 -6
  5. data/admins/pageflow/entry.rb +10 -8
  6. data/admins/pageflow/membership.rb +11 -11
  7. data/admins/pageflow/translations.rb +5 -5
  8. data/app/assets/images/pageflow/admin/icons/comment.svg +1 -0
  9. data/app/assets/javascripts/pageflow/dist/ui.js +1350 -630
  10. data/app/assets/javascripts/pageflow/editor/vendor.js +0 -1
  11. data/app/assets/javascripts/pageflow/ui.js +0 -1
  12. data/app/assets/stylesheets/pageflow/admin/entry_comments_indicator.scss +45 -0
  13. data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +8 -1
  14. data/app/assets/stylesheets/pageflow/admin.scss +1 -0
  15. data/app/assets/stylesheets/pageflow/animations/spin.scss +9 -0
  16. data/app/assets/stylesheets/pageflow/animations.scss +1 -0
  17. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +21 -5
  18. data/app/assets/stylesheets/pageflow/editor/base.scss +9 -1
  19. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +13 -1
  20. data/app/assets/stylesheets/pageflow/editor/edit_configuration_view.scss +5 -0
  21. data/app/assets/stylesheets/pageflow/editor/file_folders.scss +127 -0
  22. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +0 -1
  23. data/app/assets/stylesheets/pageflow/editor/file_meta_data_overlay.scss +45 -0
  24. data/app/assets/stylesheets/pageflow/editor/file_preview.scss +138 -0
  25. data/app/assets/stylesheets/pageflow/editor/file_references.scss +68 -0
  26. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +1 -1
  27. data/app/assets/stylesheets/pageflow/editor/file_stage_icons.scss +17 -0
  28. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +25 -32
  29. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +31 -48
  30. data/app/assets/stylesheets/pageflow/editor/file_type_pills.scss +73 -0
  31. data/app/assets/stylesheets/pageflow/editor/files.scss +230 -50
  32. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +142 -14
  33. data/app/assets/stylesheets/pageflow/editor/folder_breadcrumb.scss +40 -0
  34. data/app/assets/stylesheets/pageflow/editor/info_box.scss +12 -0
  35. data/app/assets/stylesheets/pageflow/editor/inputs/edit_defaults_button.scss +15 -0
  36. data/app/assets/stylesheets/pageflow/editor/inputs.scss +1 -0
  37. data/app/assets/stylesheets/pageflow/editor/list.scss +88 -38
  38. data/app/assets/stylesheets/pageflow/editor/manage_files.scss +9 -0
  39. data/app/assets/stylesheets/pageflow/editor/menu.scss +14 -0
  40. data/app/assets/stylesheets/pageflow/editor/move_to_folder_dialog.scss +83 -0
  41. data/app/assets/stylesheets/pageflow/mixins/pageflow.scss +9 -5
  42. data/app/assets/stylesheets/pageflow/ui/color_picker.scss +230 -0
  43. data/app/assets/stylesheets/pageflow/ui/forms.scss +34 -4
  44. data/app/assets/stylesheets/pageflow/ui/functions.scss +12 -2
  45. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +9 -16
  46. data/app/assets/stylesheets/pageflow/ui/input/text_area_input.scss +15 -0
  47. data/app/assets/stylesheets/pageflow/ui/overrides.scss +8 -0
  48. data/app/assets/stylesheets/pageflow/ui/properties.scss +29 -0
  49. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -3
  50. data/app/assets/stylesheets/pageflow/ui.scss +4 -2
  51. data/app/controllers/pageflow/editor/entries_controller.rb +1 -0
  52. data/app/controllers/pageflow/editor/file_folders_controller.rb +80 -0
  53. data/app/controllers/pageflow/editor/file_import_controller.rb +1 -0
  54. data/app/controllers/pageflow/editor/files_controller.rb +15 -6
  55. data/app/controllers/pageflow/editor/oembeds_controller.rb +21 -0
  56. data/app/controllers/pageflow/entries_controller.rb +17 -13
  57. data/app/controllers/pageflow/review/comment_thread_reads_controller.rb +30 -0
  58. data/app/controllers/pageflow/review/comment_threads_controller.rb +60 -0
  59. data/app/controllers/pageflow/review/comments_controller.rb +53 -0
  60. data/app/controllers/pageflow/revisions_controller.rb +4 -1
  61. data/app/helpers/pageflow/admin/entries_helper.rb +40 -0
  62. data/app/helpers/pageflow/admin/widgets_helper.rb +2 -2
  63. data/app/helpers/pageflow/common_entry_seed_helper.rb +5 -3
  64. data/app/helpers/pageflow/editor/config_helper.rb +3 -1
  65. data/app/helpers/pageflow/entries_helper.rb +24 -42
  66. data/app/helpers/pageflow/entry_json_seed_helper.rb +4 -4
  67. data/app/helpers/pageflow/public_i18n_helper.rb +9 -8
  68. data/app/helpers/pageflow/structured_data_helper.rb +4 -1
  69. data/app/helpers/pageflow/themes_helper.rb +1 -3
  70. data/app/helpers/pageflow/widgets_helper.rb +2 -1
  71. data/app/inputs/pageflow_permalink_input.rb +6 -2
  72. data/app/models/concerns/pageflow/auto_generated_perma_id.rb +11 -4
  73. data/app/models/concerns/pageflow/reusable_file.rb +1 -1
  74. data/app/models/concerns/pageflow/serialization_blacklist.rb +2 -4
  75. data/app/models/concerns/pageflow/translated_attributes.rb +101 -0
  76. data/app/models/concerns/pageflow/uploadable_file.rb +1 -1
  77. data/app/models/pageflow/comment.rb +30 -0
  78. data/app/models/pageflow/comment_thread.rb +65 -0
  79. data/app/models/pageflow/comment_thread_read.rb +22 -0
  80. data/app/models/pageflow/customized_theme.rb +3 -2
  81. data/app/models/pageflow/draft_entry.rb +20 -8
  82. data/app/models/pageflow/entry.rb +2 -0
  83. data/app/models/pageflow/entry_at_revision.rb +9 -1
  84. data/app/models/pageflow/entry_comment_summary.rb +114 -0
  85. data/app/models/pageflow/file_folder.rb +74 -0
  86. data/app/models/pageflow/file_reuse.rb +3 -2
  87. data/app/models/pageflow/file_usage.rb +8 -0
  88. data/app/models/pageflow/image_file.rb +24 -20
  89. data/app/models/pageflow/image_file_url_templates.rb +3 -3
  90. data/app/models/pageflow/legal_info.rb +38 -0
  91. data/app/models/pageflow/nested_revision_component_copy.rb +1 -1
  92. data/app/models/pageflow/permalink.rb +1 -0
  93. data/app/models/pageflow/revision.rb +6 -2
  94. data/app/models/pageflow/site.rb +10 -0
  95. data/app/models/pageflow/used_file.rb +8 -2
  96. data/app/models/pageflow/widget.rb +2 -2
  97. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +0 -1
  98. data/app/views/pageflow/editor/config/_seeds.json.jbuilder +4 -2
  99. data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -1
  100. data/app/views/pageflow/editor/entries/seed.json.erb +1 -0
  101. data/app/views/pageflow/editor/file_folders/_file_folder.json.jbuilder +5 -0
  102. data/app/views/pageflow/editor/file_folders/create.json.jbuilder +1 -0
  103. data/app/views/pageflow/editor/file_folders/index.json.jbuilder +3 -0
  104. data/app/views/pageflow/editor/files/_file.json.jbuilder +2 -1
  105. data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +3 -0
  106. data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +3 -0
  107. data/app/views/pageflow/files/_file.json.jbuilder +2 -0
  108. data/app/views/pageflow/image_files/_image_file.json.jbuilder +0 -1
  109. data/app/views/pageflow/review/comment_threads/_comment_thread.json.jbuilder +20 -0
  110. data/app/views/pageflow/review/comment_threads/create.json.jbuilder +2 -0
  111. data/app/views/pageflow/review/comment_threads/index.json.jbuilder +13 -0
  112. data/app/views/pageflow/review/comments/_comment.json.jbuilder +13 -0
  113. data/app/views/pageflow/review/comments/create.json.jbuilder +1 -0
  114. data/app/views/pageflow/structured_data/_entry.json.jbuilder +2 -3
  115. data/app/views/pageflow/video_files/_video_file.json.jbuilder +0 -1
  116. data/config/locales/de.yml +152 -14
  117. data/config/locales/en.yml +150 -14
  118. data/config/routes.rb +14 -0
  119. data/db/migrate/20140418225525_setup_schema.rb +2 -2
  120. data/db/migrate/20251015000000_add_structured_data_type_name_to_revisions.rb +5 -0
  121. data/db/migrate/20251029142849_convert_legacy_social_embeds_to_unified_social_embed.rb +38 -0
  122. data/db/migrate/20251119083347_fix_main_storyline_positions.rb +16 -0
  123. data/db/migrate/20251119083348_ensure_scrolled_entries_have_excursion_storyline.rb +15 -0
  124. data/db/migrate/20260303000000_add_layout_version_to_revisions.rb +6 -0
  125. data/db/migrate/20260323000000_create_comment_threads_and_comments.rb +30 -0
  126. data/db/migrate/20260414000000_add_subject_range_to_comment_threads.rb +5 -0
  127. data/db/migrate/20260415000000_add_section_perma_id_to_comment_threads.rb +5 -0
  128. data/db/migrate/20260727000000_add_quote_to_comments.rb +5 -0
  129. data/db/migrate/20260728000000_create_file_folders.rb +17 -0
  130. data/db/migrate/20260805000000_add_attribute_translations_to_sites.rb +5 -0
  131. data/db/migrate/20260806000000_add_edited_at_to_comments.rb +5 -0
  132. data/db/migrate/20260810000000_create_pageflow_scrolled_lottie_files.rb +24 -0
  133. data/db/migrate/20260817000000_create_comment_thread_reads.rb +16 -0
  134. data/db/migrate/20260819000000_add_unread_comments_since_at_to_users.rb +18 -0
  135. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +8665 -3890
  136. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +979 -3571
  137. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +20199 -28120
  138. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +18652 -26584
  139. data/entry_types/scrolled/app/assets/stylesheets/pageflow_scrolled/ui.scss +2 -0
  140. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +33 -3
  141. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +2 -3
  142. data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +21 -1
  143. data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +3 -3
  144. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +7 -5
  145. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +5 -2
  146. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +13 -5
  147. data/entry_types/scrolled/app/helpers/pageflow_scrolled/i18n_helper.rb +28 -13
  148. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +26 -11
  149. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +2 -2
  150. data/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb +16 -0
  151. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +174 -3
  152. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +49 -7
  153. data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file.rb +6 -0
  154. data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file_url_templates.rb +16 -0
  155. data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +1 -0
  156. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +13 -12
  157. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +30 -10
  158. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +9 -0
  159. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +1 -1
  160. data/entry_types/scrolled/config/configuration_schemas/pageflow-scrolled.json +414 -0
  161. data/entry_types/scrolled/config/locales/de.yml +512 -65
  162. data/entry_types/scrolled/config/locales/en.yml +518 -52
  163. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +2 -2
  164. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +51 -6
  165. data/entry_types/scrolled/lib/pageflow_scrolled/configuration_schemas.rb +91 -0
  166. data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +2 -1
  167. data/entry_types/scrolled/lib/pageflow_scrolled/entry_file_reference_locations.rb +71 -0
  168. data/entry_types/scrolled/lib/pageflow_scrolled/entry_structured_data_types/faq_page.rb +58 -0
  169. data/entry_types/scrolled/lib/pageflow_scrolled/file_reference_locations.rb +69 -0
  170. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +205 -22
  171. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +2 -4
  172. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +56 -36
  173. data/entry_types/scrolled/lib/pageflow_scrolled/theme_options_default_scale.rb +35 -0
  174. data/entry_types/scrolled/lib/pageflow_scrolled.rb +13 -0
  175. data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +19 -1
  176. data/entry_types/scrolled/package/config/configurationSchemas.js +70 -0
  177. data/entry_types/scrolled/package/config/rollup/configurationSchemas.js +19 -0
  178. data/entry_types/scrolled/package/config/webpack.js +72 -0
  179. data/entry_types/scrolled/package/contentElements/hotspots-frontend.css +1 -1
  180. data/entry_types/scrolled/package/contentElements/hotspots-frontend.js +1181 -915
  181. data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.css +1 -0
  182. data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.js +219 -0
  183. data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.css +1 -0
  184. data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.js +244 -0
  185. data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.css +1 -0
  186. data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.js +823 -0
  187. data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.js +71 -21
  188. data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.css +1 -0
  189. data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.js +277 -0
  190. data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.css +1 -0
  191. data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.js +244 -0
  192. data/entry_types/scrolled/package/contentElements-editor.js +1915 -1097
  193. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  194. data/entry_types/scrolled/package/contentElements-frontend.js +3093 -1679
  195. data/entry_types/scrolled/package/editor.css +1 -0
  196. data/entry_types/scrolled/package/editor.js +8667 -4077
  197. data/entry_types/scrolled/package/entryState.js +1600 -0
  198. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-20c600de.js +1979 -0
  199. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-58189220.js +2538 -0
  200. data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9f76033e.js → PhonePlatformContext-035a99fa.js} +7 -12
  201. data/entry_types/scrolled/package/frontend/PhonePlatformContext-9da43797.js +33 -0
  202. data/entry_types/scrolled/package/frontend/Placeholder.module-bf0966b4.js +5267 -0
  203. data/entry_types/scrolled/package/frontend/Placeholder.module-d22a9335.js +4180 -0
  204. data/entry_types/scrolled/package/frontend/ThemeIcon-ab834849.js +754 -0
  205. data/entry_types/scrolled/package/frontend/ThemeIcon-f6cb3a8f.js +773 -0
  206. data/entry_types/scrolled/package/frontend/{ToggleFullscreenCornerButton-788e9cdb.js → ToggleFullscreenCornerButton-30fd1124.js} +6 -6
  207. data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-61c25224.js +72 -0
  208. data/entry_types/scrolled/package/frontend/Viewer-1074fd59.js +147 -0
  209. data/entry_types/scrolled/package/frontend/Viewer-1482ca34.js +480 -0
  210. data/entry_types/scrolled/package/frontend/Viewer-70504231.js +210 -0
  211. data/entry_types/scrolled/package/frontend/{Viewer-0345ce57.js → Viewer-cc8d4072.js} +84 -92
  212. data/entry_types/scrolled/package/frontend/Wavesurfer-656e3c36.js +302 -0
  213. data/entry_types/scrolled/package/frontend/Wavesurfer-b753b838.js +385 -0
  214. data/entry_types/scrolled/package/frontend/commenting.css +1 -0
  215. data/entry_types/scrolled/package/frontend/extensions-167ae143.js +1455 -0
  216. data/entry_types/scrolled/package/frontend/extensions-2318f92b.js +5918 -0
  217. data/entry_types/scrolled/package/frontend/extensions-a461fd13.js +4890 -0
  218. data/entry_types/scrolled/package/frontend/extensions-c98269fd.js +1982 -0
  219. data/entry_types/scrolled/package/frontend/i18n-493cd2a6.js +93 -0
  220. data/entry_types/scrolled/package/frontend/i18n-e06cac14.js +100 -0
  221. data/entry_types/scrolled/package/frontend/{index-eb670c2f.js → index-2e5546f7.js} +36 -44
  222. data/entry_types/scrolled/package/frontend/index-de2b418d.js +130 -0
  223. data/entry_types/scrolled/package/frontend/index.css +1 -1
  224. data/entry_types/scrolled/package/frontend/index.js +1870 -875
  225. data/entry_types/scrolled/package/frontend/inlineEditing.css +1 -0
  226. data/entry_types/scrolled/package/frontend/useContentElementEditorState-a084912e.js +25 -0
  227. data/entry_types/scrolled/package/frontend/useDelayedBoolean-a387d85b.js +24 -0
  228. data/entry_types/scrolled/package/frontend/{usePhonePlatform-c2ba875d.js → usePhonePlatform-4ecb96d4.js} +1 -1
  229. data/entry_types/scrolled/package/frontend/usePhonePlatform-ce9ff08d.js +8 -0
  230. data/entry_types/scrolled/package/frontend-server.js +20 -209
  231. data/entry_types/scrolled/package/package.json +5 -3
  232. data/entry_types/scrolled/package/review.css +1 -0
  233. data/entry_types/scrolled/package/review.js +3306 -0
  234. data/entry_types/scrolled/package/testHelpers.js +836 -359
  235. data/entry_types/scrolled/package/widgets/consentBar.css +1 -1
  236. data/entry_types/scrolled/package/widgets/consentBar.js +269 -290
  237. data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
  238. data/entry_types/scrolled/package/widgets/defaultNavigation.js +911 -352
  239. data/entry_types/scrolled/package/widgets/excursionSheet.css +1 -1
  240. data/entry_types/scrolled/package/widgets/excursionSheet.js +87 -124
  241. data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -1
  242. data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +62 -29
  243. data/entry_types/scrolled/package/widgets/iconScrollIndicator.js +32 -13
  244. data/entry_types/scrolled/package/widgets/mainStorylineSheet.css +1 -1
  245. data/entry_types/scrolled/package/widgets/mainStorylineSheet.js +56 -100
  246. data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -1
  247. data/entry_types/scrolled/package/widgets/textInlineFileRights.js +33 -28
  248. data/entry_types/scrolled/package/widgets-server.js +1 -0
  249. data/entry_types/scrolled/spec/factories/lottie_files.rb +29 -0
  250. data/entry_types/scrolled/spec/fixtures/animation.lottie +0 -0
  251. data/entry_types/scrolled/spec/fixtures/font.woff +0 -0
  252. data/entry_types/scrolled/spec/fixtures/font.woff2 +0 -0
  253. data/lib/generators/pageflow/resque/resque_generator.rb +0 -2
  254. data/lib/pageflow/configuration.rb +49 -7
  255. data/lib/pageflow/deprecation.rb +19 -0
  256. data/lib/pageflow/engine.rb +1 -1
  257. data/lib/pageflow/entries_controller_env_helper.rb +32 -2
  258. data/lib/pageflow/entry_export_import/entry_serialization.rb +4 -4
  259. data/lib/pageflow/entry_export_import/page_type_versions.rb +2 -2
  260. data/lib/pageflow/entry_export_import/revision_serialization/import.rb +10 -0
  261. data/lib/pageflow/entry_export_import/revision_serialization.rb +3 -0
  262. data/lib/pageflow/entry_structured_data_types.rb +43 -0
  263. data/lib/pageflow/entry_type_configuration.rb +1 -0
  264. data/lib/pageflow/file_type.rb +2 -2
  265. data/lib/pageflow/file_types.rb +1 -1
  266. data/lib/pageflow/oembed_providers.rb +42 -0
  267. data/lib/pageflow/primary_domain_entry_redirect.rb +6 -0
  268. data/lib/pageflow/rails_version.rb +13 -2
  269. data/lib/pageflow/themes.rb +41 -0
  270. data/lib/pageflow/user_mixin.rb +12 -0
  271. data/lib/pageflow/version.rb +1 -1
  272. data/lib/pageflow.rb +1 -0
  273. data/package/config/eslint-rules/documented-in-toc.js +125 -0
  274. data/package/config/jest/index.js +0 -1
  275. data/package/config/webpack.js +0 -1
  276. data/package/config/webpack5.js +0 -1
  277. data/package/editor.js +4378 -1897
  278. data/package/frontend.js +647 -886
  279. data/package/package.json +2 -1
  280. data/package/review.js +384 -0
  281. data/package/testHelpers.js +248 -188
  282. data/package/ui.js +1346 -630
  283. data/package/vendor/stubs/wysihtml5.js +2 -0
  284. data/spec/factories/comment_thread_reads.rb +10 -0
  285. data/spec/factories/comment_threads.rb +10 -0
  286. data/spec/factories/comments.rb +9 -0
  287. data/spec/factories/file_folders.rb +8 -0
  288. data/spec/factories/published_entries.rb +2 -0
  289. metadata +188 -67
  290. data/app/assets/stylesheets/pageflow/editor/select_button.scss +0 -51
  291. data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +0 -55
  292. data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-51914be7.js +0 -5439
  293. data/entry_types/scrolled/package/frontend/ThemeIcon-81f2f066.js +0 -1932
  294. data/entry_types/scrolled/package/frontend/Viewer-cdc549cc.js +0 -147
  295. data/entry_types/scrolled/package/frontend/Wavesurfer-1cdc3925.js +0 -313
  296. data/entry_types/scrolled/package/frontend/components-96660ffd.js +0 -3803
  297. data/entry_types/scrolled/package/frontend/inherits-539844a6.js +0 -99
  298. data/entry_types/scrolled/package/frontend/useContentElementEditorState-77fe6c79.js +0 -51
  299. data/entry_types/scrolled/package/widgets/excursionDialog.css +0 -1
  300. data/entry_types/scrolled/package/widgets/excursionDialog.js +0 -109
  301. data/lib/generators/pageflow/resque/templates/resque_enqueue_after_commit_patch.rb +0 -25
  302. data/package/vendor/jquery.minicolors.js +0 -1108
@@ -1,239 +1,361 @@
1
- import { useTheme, useI18n, ThemeIcon, utils, Tooltip, useFileRights, useLegalInfo, useCredits, Widget, useEntryMetadata, useEntryTranslations, useShareUrl, useMediaMuted, useOnUnmuteMedia, useDarkWidgets, useMainChapters, useCurrentChapter, usePhonePlatform, useShareProviders, useScrollPosition, paletteColor, WidgetSelectionRect, SelectableWidget, frontend } from 'pageflow-scrolled/frontend';
2
- import React, { useRef, useEffect, useCallback, useState } from 'react';
1
+ import { useTheme, useI18n, ThemeIcon, Tooltip, utils, useFileRights, useLegalInfo, usePrivacyLink, useCredits, Widget, useEntryMetadata, useEntryTranslations, useShareUrl, useMediaMuted, useOnUnmuteMedia, useDarkWidgets, usePhonePlatform, useScrollPosition, useMainChapters, useCurrentChapter, useShareProviders, paletteColor, WidgetSelectionRect, SelectableWidget, frontend } from 'pageflow-scrolled/frontend';
2
+ import React, { useRef, useEffect, useCallback, createContext, useState, useMemo, useContext } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { media } from 'pageflow/frontend';
5
5
  import Measure from 'react-measure';
6
6
 
7
- function _defineProperty(obj, key, value) {
8
- if (key in obj) {
9
- Object.defineProperty(obj, key, {
10
- value: value,
11
- enumerable: true,
12
- configurable: true,
13
- writable: true
14
- });
15
- } else {
16
- obj[key] = value;
17
- }
18
-
19
- return obj;
20
- }
21
-
22
- function _arrayWithHoles(arr) {
23
- if (Array.isArray(arr)) return arr;
24
- }
25
-
26
- function _iterableToArrayLimit(arr, i) {
27
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
28
- var _arr = [];
29
- var _n = true;
30
- var _d = false;
31
- var _e = undefined;
32
-
33
- try {
34
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
35
- _arr.push(_s.value);
7
+ var styles = {"breakpoint-below-md":"(max-width: 767px)","navigationBar":"DefaultNavigation-module_navigationBar__2RK0h scope-defaultNavigation","contextIcons":"DefaultNavigation-module_contextIcons__2e65s","navigationBarExpanded":"DefaultNavigation-module_navigationBarExpanded__C3sLq","navigationBarContentWrapper":"DefaultNavigation-module_navigationBarContentWrapper__3narH","translucentSurface":"DefaultNavigation-module_translucentSurface__3HK6B widgets-module_translucentWidgetSurface__kYVg7","opaqueSurface":"DefaultNavigation-module_opaqueSurface__24o-m","button":"DefaultNavigation-module_button__3QCuK utils-module_unstyledButton__3rgne","menuIcon":"DefaultNavigation-module_menuIcon__2bb8s DefaultNavigation-module_button__3QCuK utils-module_unstyledButton__3rgne","contextIcon":"DefaultNavigation-module_contextIcon__ELsqa DefaultNavigation-module_button__3QCuK utils-module_unstyledButton__3rgne","logo":"DefaultNavigation-module_logo__3gUbx","hasDesktopMenu":"DefaultNavigation-module_hasDesktopMenu__195sb","chapterList":"DefaultNavigation-module_chapterList__3VoXX scope-defaultNavigationChapterList","chapterListItem":"DefaultNavigation-module_chapterListItem__1YF5e","navigationTooltip":"DefaultNavigation-module_navigationTooltip__26Fvn","progressBar":"DefaultNavigation-module_progressBar__1jvov","progressIndicator":"DefaultNavigation-module_progressIndicator__2d_e3","hasChapters":"DefaultNavigation-module_hasChapters__3ab-r","centerMobileLogo":"DefaultNavigation-module_centerMobileLogo__3jtk3","navigationChapters":"DefaultNavigation-module_navigationChapters__3M6zh","hiddenOnMobile":"DefaultNavigation-module_hiddenOnMobile__2c5WI"};
36
8
 
37
- if (i && _arr.length === i) break;
38
- }
39
- } catch (err) {
40
- _d = true;
41
- _e = err;
42
- } finally {
43
- try {
44
- if (!_n && _i["return"] != null) _i["return"]();
45
- } finally {
46
- if (_d) throw _e;
47
- }
48
- }
49
-
50
- return _arr;
51
- }
52
-
53
- function _arrayLikeToArray(arr, len) {
54
- if (len == null || len > arr.length) len = arr.length;
55
-
56
- for (var i = 0, arr2 = new Array(len); i < len; i++) {
57
- arr2[i] = arr[i];
58
- }
59
-
60
- return arr2;
61
- }
62
-
63
- function _unsupportedIterableToArray(o, minLen) {
64
- if (!o) return;
65
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
66
- var n = Object.prototype.toString.call(o).slice(8, -1);
67
- if (n === "Object" && o.constructor) n = o.constructor.name;
68
- if (n === "Map" || n === "Set") return Array.from(n);
69
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
70
- }
71
-
72
- function _nonIterableRest() {
73
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
74
- }
75
-
76
- function _slicedToArray(arr, i) {
77
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
78
- }
79
-
80
- var styles = {"breakpoint-below-md":"(max-width: 767px)","navigationBar":"DefaultNavigation-module_navigationBar__2RK0h scope-defaultNavigation","contextIcons":"DefaultNavigation-module_contextIcons__2e65s","navigationBarExpanded":"DefaultNavigation-module_navigationBarExpanded__C3sLq","navigationBarContentWrapper":"DefaultNavigation-module_navigationBarContentWrapper__3narH widgets-module_translucentWidgetSurface__kYVg7","button":"DefaultNavigation-module_button__3QCuK utils-module_unstyledButton__3rgne","menuIcon":"DefaultNavigation-module_menuIcon__2bb8s DefaultNavigation-module_button__3QCuK utils-module_unstyledButton__3rgne","contextIcon":"DefaultNavigation-module_contextIcon__ELsqa DefaultNavigation-module_button__3QCuK utils-module_unstyledButton__3rgne","logo":"DefaultNavigation-module_logo__3gUbx","chapterList":"DefaultNavigation-module_chapterList__3VoXX scope-defaultNavigationChapterList","chapterListItem":"DefaultNavigation-module_chapterListItem__1YF5e","navigationTooltip":"DefaultNavigation-module_navigationTooltip__26Fvn","progressBar":"DefaultNavigation-module_progressBar__1jvov","progressIndicator":"DefaultNavigation-module_progressIndicator__2d_e3","hasChapters":"DefaultNavigation-module_hasChapters__3ab-r","centerMobileLogo":"DefaultNavigation-module_centerMobileLogo__3jtk3","navigationChapters":"DefaultNavigation-module_navigationChapters__3M6zh","navigationChaptersHidden":"DefaultNavigation-module_navigationChaptersHidden__2TrUo"};
81
-
82
- var styles$1 = {"breakpoint-md":"(min-width: 768px)","burgerMenuIconContainer":"HamburgerIcon-module_burgerMenuIconContainer__3aBkk","small":"HamburgerIcon-module_small__asAkY"};
9
+ var styles$1 = {"breakpoint-md":"(min-width: 768px)","burgerMenuIconContainer":"HamburgerIcon-module_burgerMenuIconContainer__3aBkk","visibleOnDesktop":"HamburgerIcon-module_visibleOnDesktop__2HgR0","small":"HamburgerIcon-module_small__asAkY"};
83
10
 
84
11
  var hamburgerIconStyles = {"hamburger":"HamburgerIcons-module_hamburger__SOreS","is-active":"HamburgerIcons-module_is-active__2jpzX","hamburger-inner":"HamburgerIcons-module_hamburger-inner__Wv7Dn","hamburger-box":"HamburgerIcons-module_hamburger-box__10MR1","hamburger--collapse":"HamburgerIcons-module_hamburger--collapse__1xOkf"};
85
12
 
86
- function HamburgerIcon(_ref) {
87
- var mobileNavHidden = _ref.mobileNavHidden,
88
- onClick = _ref.onClick;
89
- var theme = useTheme();
90
- var _useI18n = useI18n(),
91
- t = _useI18n.t;
13
+ var _jsxFileName = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/HamburgerIcon.js";
14
+ function HamburgerIcon({
15
+ menuOpen,
16
+ onClick,
17
+ visibleOnDesktop
18
+ }) {
19
+ const theme = useTheme();
20
+ const {
21
+ t
22
+ } = useI18n();
92
23
  return /*#__PURE__*/React.createElement("div", {
93
- className: styles$1.burgerMenuIconContainer
24
+ className: classNames(styles$1.burgerMenuIconContainer, {
25
+ [styles$1.visibleOnDesktop]: visibleOnDesktop
26
+ }),
27
+ __self: this,
28
+ __source: {
29
+ fileName: _jsxFileName,
30
+ lineNumber: 13,
31
+ columnNumber: 5
32
+ }
94
33
  }, /*#__PURE__*/React.createElement("button", {
95
34
  className: styles.menuIcon,
96
- title: mobileNavHidden ? t('pageflow_scrolled.public.navigation.open_mobile_menu') : t('pageflow_scrolled.public.navigation.close_mobile_menu'),
35
+ title: menuOpen ? t('pageflow_scrolled.public.navigation.close_mobile_menu') : t('pageflow_scrolled.public.navigation.open_mobile_menu'),
97
36
  type: "button",
98
- onClick: onClick
37
+ onClick: onClick,
38
+ __self: this,
39
+ __source: {
40
+ fileName: _jsxFileName,
41
+ lineNumber: 16,
42
+ columnNumber: 7
43
+ }
99
44
  }, /*#__PURE__*/React.createElement(ThemeIcon, {
100
45
  name: "menu",
101
- renderFallback: function renderFallback() {
102
- return /*#__PURE__*/React.createElement("span", {
103
- className: classNames(hamburgerIconStyles.hamburger, hamburgerIconStyles['hamburger--collapse'], _defineProperty({}, styles$1.small, theme.options.defaultNavigationMenuIconVariant === 'small'), _defineProperty({}, hamburgerIconStyles['is-active'], !mobileNavHidden))
104
- }, /*#__PURE__*/React.createElement("span", {
105
- className: hamburgerIconStyles['hamburger-box']
106
- }, /*#__PURE__*/React.createElement("span", {
107
- className: hamburgerIconStyles['hamburger-inner']
108
- })));
46
+ renderFallback: () => /*#__PURE__*/React.createElement("span", {
47
+ className: classNames(hamburgerIconStyles.hamburger, hamburgerIconStyles['hamburger--collapse'], {
48
+ [styles$1.small]: theme.options.defaultNavigationMenuIconVariant === 'small'
49
+ }, {
50
+ [hamburgerIconStyles['is-active']]: menuOpen
51
+ }),
52
+ __self: this,
53
+ __source: {
54
+ fileName: _jsxFileName,
55
+ lineNumber: 24,
56
+ columnNumber: 22
57
+ }
58
+ }, /*#__PURE__*/React.createElement("span", {
59
+ className: hamburgerIconStyles['hamburger-box'],
60
+ __self: this,
61
+ __source: {
62
+ fileName: _jsxFileName,
63
+ lineNumber: 29,
64
+ columnNumber: 24
65
+ }
66
+ }, /*#__PURE__*/React.createElement("span", {
67
+ className: hamburgerIconStyles['hamburger-inner'],
68
+ __self: this,
69
+ __source: {
70
+ fileName: _jsxFileName,
71
+ lineNumber: 30,
72
+ columnNumber: 26
73
+ }
74
+ }))),
75
+ __self: this,
76
+ __source: {
77
+ fileName: _jsxFileName,
78
+ lineNumber: 22,
79
+ columnNumber: 9
109
80
  }
110
81
  })));
111
82
  }
112
83
 
113
84
  var styles$2 = {"breakpoint-md":"(min-width: 768px)","chapterLink":"ChapterLink-module_chapterLink__3YspQ typography-defaultNavigationChapterLink","chapterLinkActive":"ChapterLink-module_chapterLinkActive__9i8SL typography-defaultNavigationActiveChapterLink","summary":"ChapterLink-module_summary__2ZfRU typography-defaultNavigationChapterSummary","inlineSummary":"ChapterLink-module_inlineSummary__2Mhk-","tooltipBubble":"ChapterLink-module_tooltipBubble__3VRUO"};
114
85
 
115
- var isBlank = utils.isBlank,
116
- presence = utils.presence;
86
+ var _jsxFileName$1 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/ChapterLink.js";
87
+ const {
88
+ isBlank,
89
+ presence
90
+ } = utils;
117
91
  function ChapterLink(props) {
118
- var _useI18n = useI18n(),
119
- t = _useI18n.t;
120
- var item = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("a", {
121
- className: classNames(styles$2.chapterLink, _defineProperty({}, styles$2.chapterLinkActive, props.active)),
122
- href: "#".concat(props.chapterSlug),
123
- onClick: function onClick() {
124
- return props.handleMenuClick(props.chapterLinkId);
125
- }
126
- }, presence(props.title) || t('pageflow_scrolled.public.navigation.chapter', {
92
+ const {
93
+ t
94
+ } = useI18n();
95
+ const renderLink = (triggerProps = {}) => /*#__PURE__*/React.createElement("div", {
96
+ __self: this,
97
+ __source: {
98
+ fileName: _jsxFileName$1,
99
+ lineNumber: 17,
100
+ columnNumber: 5
101
+ }
102
+ }, /*#__PURE__*/React.createElement("a", Object.assign({}, triggerProps, {
103
+ className: classNames(styles$2.chapterLink, {
104
+ [styles$2.chapterLinkActive]: props.active
105
+ }),
106
+ href: `#${props.chapterSlug}`,
107
+ onClick: () => props.handleMenuClick(props.chapterLinkId),
108
+ "aria-current": props.active ? 'location' : undefined,
109
+ __self: this,
110
+ __source: {
111
+ fileName: _jsxFileName$1,
112
+ lineNumber: 18,
113
+ columnNumber: 7
114
+ }
115
+ }), presence(props.title) || t('pageflow_scrolled.public.navigation.chapter', {
127
116
  number: props.chapterIndex
128
117
  })), !isBlank(props.summary) && /*#__PURE__*/React.createElement("p", {
129
118
  className: classNames(styles$2.summary, styles$2.inlineSummary),
130
119
  dangerouslySetInnerHTML: {
131
120
  __html: props.summary
121
+ },
122
+ __self: this,
123
+ __source: {
124
+ fileName: _jsxFileName$1,
125
+ lineNumber: 25,
126
+ columnNumber: 35
132
127
  }
133
128
  }));
134
129
  if (isBlank(props.summary)) {
135
- return item;
130
+ return renderLink();
136
131
  }
137
- var content = /*#__PURE__*/React.createElement("p", {
132
+ const content = /*#__PURE__*/React.createElement("p", {
138
133
  className: styles$2.summary,
139
134
  dangerouslySetInnerHTML: {
140
135
  __html: props.summary
136
+ },
137
+ __self: this,
138
+ __source: {
139
+ fileName: _jsxFileName$1,
140
+ lineNumber: 35,
141
+ columnNumber: 5
141
142
  }
142
143
  });
143
144
  return /*#__PURE__*/React.createElement(Tooltip, {
145
+ name: `chapter-${props.chapterLinkId}`,
144
146
  content: content,
145
147
  openOnHover: true,
146
148
  highlight: true,
147
- bubbleClassName: styles$2.tooltipBubble
148
- }, item);
149
+ bubbleClassName: styles$2.tooltipBubble,
150
+ __self: this,
151
+ __source: {
152
+ fileName: _jsxFileName$1,
153
+ lineNumber: 39,
154
+ columnNumber: 5
155
+ }
156
+ }, renderLink);
149
157
  }
150
158
 
151
159
  var styles$3 = {"legalInfoTooltip":"LegalInfoMenu-module_legalInfoTooltip__Qmf8u","scroller":"LegalInfoMenu-module_scroller__3NPW_","links":"LegalInfoMenu-module_links__1kpsd","separator":"LegalInfoMenu-module_separator__3mmjA","section":"LegalInfoMenu-module_section__1bLWD","legalInfoLink":"LegalInfoMenu-module_legalInfoLink__gkXaF","rights":"LegalInfoMenu-module_rights__-XGYO"};
152
160
 
153
- function LegalInfoLink(props) {
154
- // eslint-disable-next-line no-script-url
155
- if (props.url === 'javascript:pageflowDisplayPrivacySettings()' && props.label) {
156
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("a", {
157
- href: "#privacySettings",
158
- onClick: function onClick(event) {
159
- window.pageflowDisplayPrivacySettings();
160
- event.preventDefault();
161
- },
162
- className: styles$3.legalInfoLink,
163
- dangerouslySetInnerHTML: {
164
- __html: props.label
165
- }
166
- }));
167
- }
168
- return /*#__PURE__*/React.createElement("div", null, props.label && props.url && /*#__PURE__*/React.createElement("a", {
169
- target: "_blank",
170
- rel: "noreferrer noopener",
171
- href: props.url,
161
+ var _jsxFileName$2 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/LegalInfoLink.js";
162
+ const defaultProps = {
163
+ target: '_blank',
164
+ rel: 'noreferrer noopener'
165
+ };
166
+ function LegalInfoLink({
167
+ label,
168
+ url,
169
+ props
170
+ }) {
171
+ return /*#__PURE__*/React.createElement("div", {
172
+ __self: this,
173
+ __source: {
174
+ fileName: _jsxFileName$2,
175
+ lineNumber: 9,
176
+ columnNumber: 5
177
+ }
178
+ }, label && url && /*#__PURE__*/React.createElement("a", Object.assign({
179
+ href: url
180
+ }, props || defaultProps, {
172
181
  className: styles$3.legalInfoLink,
173
182
  dangerouslySetInnerHTML: {
174
- __html: props.label
183
+ __html: label
184
+ },
185
+ __self: this,
186
+ __source: {
187
+ fileName: _jsxFileName$2,
188
+ lineNumber: 11,
189
+ columnNumber: 8
175
190
  }
176
- }));
191
+ })));
177
192
  }
178
193
 
194
+ var _jsxFileName$3 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/LegalInfoMenu.js";
179
195
  function LegalInfoMenu(props) {
180
- var fileRights = useFileRights();
181
- var legalInfo = useLegalInfo();
182
- var credits = useCredits();
183
- var _useI18n = useI18n(),
184
- t = _useI18n.t;
185
- var content = /*#__PURE__*/React.createElement("div", {
186
- className: styles$3.legalInfoTooltip
196
+ const fileRights = useFileRights();
197
+ const legalInfo = useLegalInfo();
198
+ const privacyLink = usePrivacyLink();
199
+ const credits = useCredits();
200
+ const {
201
+ t
202
+ } = useI18n();
203
+ const content = /*#__PURE__*/React.createElement("div", {
204
+ className: styles$3.legalInfoTooltip,
205
+ __self: this,
206
+ __source: {
207
+ fileName: _jsxFileName$3,
208
+ lineNumber: 26,
209
+ columnNumber: 5
210
+ }
187
211
  }, /*#__PURE__*/React.createElement("div", {
188
- className: styles$3.scroller
212
+ className: styles$3.scroller,
213
+ __self: this,
214
+ __source: {
215
+ fileName: _jsxFileName$3,
216
+ lineNumber: 27,
217
+ columnNumber: 7
218
+ }
189
219
  }, credits && /*#__PURE__*/React.createElement("p", {
190
220
  className: styles$3.section,
191
221
  dangerouslySetInnerHTML: {
192
222
  __html: credits
223
+ },
224
+ __self: this,
225
+ __source: {
226
+ fileName: _jsxFileName$3,
227
+ lineNumber: 29,
228
+ columnNumber: 10
193
229
  }
194
230
  }), fileRights.length > 0 && /*#__PURE__*/React.createElement("div", {
195
- className: styles$3.section
196
- }, /*#__PURE__*/React.createElement("strong", null, t('pageflow_scrolled.public.media')), " ", renderFileRights(fileRights))), /*#__PURE__*/React.createElement("div", {
197
- className: classNames(styles$3.links, _defineProperty({}, styles$3.separator, credits || fileRights.length > 0))
198
- }, /*#__PURE__*/React.createElement(LegalInfoLink, legalInfo.imprint), /*#__PURE__*/React.createElement(LegalInfoLink, legalInfo.copyright), /*#__PURE__*/React.createElement(LegalInfoLink, legalInfo.privacy)), /*#__PURE__*/React.createElement(Widget, {
199
- role: "creditsBoxFooter"
231
+ className: styles$3.section,
232
+ __self: this,
233
+ __source: {
234
+ fileName: _jsxFileName$3,
235
+ lineNumber: 34,
236
+ columnNumber: 10
237
+ }
238
+ }, /*#__PURE__*/React.createElement("strong", {
239
+ __self: this,
240
+ __source: {
241
+ fileName: _jsxFileName$3,
242
+ lineNumber: 35,
243
+ columnNumber: 12
244
+ }
245
+ }, t('pageflow_scrolled.public.media')), " ", renderFileRights(fileRights))), /*#__PURE__*/React.createElement("div", {
246
+ className: classNames(styles$3.links, {
247
+ [styles$3.separator]: credits || fileRights.length > 0
248
+ }),
249
+ __self: this,
250
+ __source: {
251
+ fileName: _jsxFileName$3,
252
+ lineNumber: 40,
253
+ columnNumber: 7
254
+ }
255
+ }, /*#__PURE__*/React.createElement(LegalInfoLink, Object.assign({}, legalInfo.imprint, {
256
+ __self: this,
257
+ __source: {
258
+ fileName: _jsxFileName$3,
259
+ lineNumber: 41,
260
+ columnNumber: 9
261
+ }
262
+ })), /*#__PURE__*/React.createElement(LegalInfoLink, Object.assign({}, legalInfo.copyright, {
263
+ __self: this,
264
+ __source: {
265
+ fileName: _jsxFileName$3,
266
+ lineNumber: 42,
267
+ columnNumber: 9
268
+ }
269
+ })), /*#__PURE__*/React.createElement(LegalInfoLink, Object.assign({}, privacyLink, {
270
+ __self: this,
271
+ __source: {
272
+ fileName: _jsxFileName$3,
273
+ lineNumber: 43,
274
+ columnNumber: 9
275
+ }
276
+ }))), /*#__PURE__*/React.createElement(Widget, {
277
+ role: "creditsBoxFooter",
278
+ __self: this,
279
+ __source: {
280
+ fileName: _jsxFileName$3,
281
+ lineNumber: 46,
282
+ columnNumber: 7
283
+ }
200
284
  }));
201
285
  return /*#__PURE__*/React.createElement(Tooltip, {
286
+ name: "legalInfo",
202
287
  horizontalOffset: props.tooltipOffset - 30,
203
288
  arrowPos: 120 - props.tooltipOffset,
204
- content: content
205
- }, /*#__PURE__*/React.createElement("button", {
289
+ content: content,
290
+ __self: this,
291
+ __source: {
292
+ fileName: _jsxFileName$3,
293
+ lineNumber: 51,
294
+ columnNumber: 5
295
+ }
296
+ }, triggerProps => /*#__PURE__*/React.createElement("button", Object.assign({}, triggerProps, {
206
297
  className: classNames(styles.contextIcon),
207
- "aria-haspopup": "true",
208
- title: t('pageflow_scrolled.public.navigation.legal_info')
209
- }, /*#__PURE__*/React.createElement(ThemeIcon, {
210
- name: "information"
298
+ title: t('pageflow_scrolled.public.navigation.legal_info'),
299
+ __self: this,
300
+ __source: {
301
+ fileName: _jsxFileName$3,
302
+ lineNumber: 56,
303
+ columnNumber: 9
304
+ }
305
+ }), /*#__PURE__*/React.createElement(ThemeIcon, {
306
+ name: "information",
307
+ __self: this,
308
+ __source: {
309
+ fileName: _jsxFileName$3,
310
+ lineNumber: 59,
311
+ columnNumber: 11
312
+ }
211
313
  })));
212
314
  }
213
315
  function renderFileRights(items) {
214
316
  return /*#__PURE__*/React.createElement("ul", {
215
- className: styles$3.rights
216
- }, items.map(function (item, index) {
217
- return /*#__PURE__*/React.createElement("li", {
218
- key: index
219
- }, index > 0 && /*#__PURE__*/React.createElement(React.Fragment, null, "\xA0| "), renderFileRightsText(item));
220
- }));
317
+ className: styles$3.rights,
318
+ __self: this,
319
+ __source: {
320
+ fileName: _jsxFileName$3,
321
+ lineNumber: 68,
322
+ columnNumber: 5
323
+ }
324
+ }, items.map((item, index) => /*#__PURE__*/React.createElement("li", {
325
+ key: index,
326
+ __self: this,
327
+ __source: {
328
+ fileName: _jsxFileName$3,
329
+ lineNumber: 70,
330
+ columnNumber: 9
331
+ }
332
+ }, index > 0 && /*#__PURE__*/React.createElement(React.Fragment, null, "\xA0| "), renderFileRightsText(item))));
221
333
  }
222
334
  function renderFileRightsText(item) {
223
335
  if (item.urls.length > 1) {
224
- return /*#__PURE__*/React.createElement(React.Fragment, null, item.text, " (", item.urls.flatMap(function (url, index) {
225
- return [index > 0 && ', ', /*#__PURE__*/React.createElement("a", {
226
- href: url,
227
- target: "_blank",
228
- rel: "noopener noreferrer",
229
- key: index
230
- }, index + 1)];
231
- }), ")");
336
+ return /*#__PURE__*/React.createElement(React.Fragment, null, item.text, " (", item.urls.flatMap((url, index) => [index > 0 && ', ', /*#__PURE__*/React.createElement("a", {
337
+ href: url,
338
+ target: "_blank",
339
+ rel: "noopener noreferrer",
340
+ key: index,
341
+ __self: this,
342
+ __source: {
343
+ fileName: _jsxFileName$3,
344
+ lineNumber: 84,
345
+ columnNumber: 13
346
+ }
347
+ }, index + 1)]), ")");
232
348
  } else if (item.urls.length === 1) {
233
349
  return /*#__PURE__*/React.createElement("a", {
234
350
  href: item.urls[0],
235
351
  target: "_blank",
236
- rel: "noopener noreferrer"
352
+ rel: "noopener noreferrer",
353
+ __self: this,
354
+ __source: {
355
+ fileName: _jsxFileName$3,
356
+ lineNumber: 92,
357
+ columnNumber: 7
358
+ }
237
359
  }, item.text);
238
360
  } else {
239
361
  return item.text;
@@ -242,180 +364,382 @@ function renderFileRightsText(item) {
242
364
 
243
365
  var styles$4 = {"tooltip":"TranslationsMenu-module_tooltip__g1k9g","list":"TranslationsMenu-module_list__2zLEz","tag":"TranslationsMenu-module_tag__xRYH9"};
244
366
 
245
- function TranslationsMenu(_ref) {
246
- var _ref$tooltipOffset = _ref.tooltipOffset,
247
- tooltipOffset = _ref$tooltipOffset === void 0 ? 0 : _ref$tooltipOffset;
248
- var _useI18n = useI18n(),
249
- t = _useI18n.t;
250
- var entry = useEntryMetadata();
251
- var translations = useEntryTranslations();
367
+ var _jsxFileName$4 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/TranslationsMenu.js";
368
+ function TranslationsMenu({
369
+ tooltipOffset = 0
370
+ }) {
371
+ const {
372
+ t
373
+ } = useI18n();
374
+ const entry = useEntryMetadata();
375
+ const translations = useEntryTranslations();
252
376
  if (translations.length < 2) {
253
377
  return null;
254
378
  }
255
- var content = /*#__PURE__*/React.createElement("div", {
256
- className: styles$4.tooltip
379
+ const content = /*#__PURE__*/React.createElement("div", {
380
+ className: styles$4.tooltip,
381
+ __self: this,
382
+ __source: {
383
+ fileName: _jsxFileName$4,
384
+ lineNumber: 24,
385
+ columnNumber: 5
386
+ }
257
387
  }, /*#__PURE__*/React.createElement("ul", {
258
- className: styles$4.list
259
- }, translations.map(function (_ref2) {
260
- var id = _ref2.id,
261
- url = _ref2.url,
262
- displayLocale = _ref2.displayLocale;
388
+ className: styles$4.list,
389
+ __self: this,
390
+ __source: {
391
+ fileName: _jsxFileName$4,
392
+ lineNumber: 25,
393
+ columnNumber: 7
394
+ }
395
+ }, translations.map(({
396
+ id,
397
+ url,
398
+ displayLocale
399
+ }) => {
263
400
  if (entry.id === id) {
264
401
  return /*#__PURE__*/React.createElement("li", {
265
402
  key: id,
266
- "aria-current": "page"
267
- }, /*#__PURE__*/React.createElement("strong", null, displayLocale));
403
+ "aria-current": "page",
404
+ __self: this,
405
+ __source: {
406
+ fileName: _jsxFileName$4,
407
+ lineNumber: 29,
408
+ columnNumber: 15
409
+ }
410
+ }, /*#__PURE__*/React.createElement("strong", {
411
+ __self: this,
412
+ __source: {
413
+ fileName: _jsxFileName$4,
414
+ lineNumber: 30,
415
+ columnNumber: 17
416
+ }
417
+ }, displayLocale));
268
418
  } else {
269
419
  return /*#__PURE__*/React.createElement("li", {
270
- key: id
420
+ key: id,
421
+ __self: this,
422
+ __source: {
423
+ fileName: _jsxFileName$4,
424
+ lineNumber: 36,
425
+ columnNumber: 15
426
+ }
271
427
  }, /*#__PURE__*/React.createElement("a", {
272
428
  target: "_top",
273
- href: url
429
+ href: url,
430
+ __self: this,
431
+ __source: {
432
+ fileName: _jsxFileName$4,
433
+ lineNumber: 37,
434
+ columnNumber: 17
435
+ }
274
436
  }, displayLocale));
275
437
  }
276
438
  })));
277
439
  return /*#__PURE__*/React.createElement(Tooltip, {
440
+ name: "translations",
278
441
  horizontalOffset: tooltipOffset - 30,
279
442
  arrowPos: 120 - tooltipOffset,
280
- content: content
281
- }, /*#__PURE__*/React.createElement("button", {
443
+ content: content,
444
+ __self: this,
445
+ __source: {
446
+ fileName: _jsxFileName$4,
447
+ lineNumber: 47,
448
+ columnNumber: 5
449
+ }
450
+ }, triggerProps => /*#__PURE__*/React.createElement("button", Object.assign({}, triggerProps, {
282
451
  className: classNames(styles.contextIcon),
283
- "aria-haspopup": "true",
284
- title: t('pageflow_scrolled.public.navigation.language')
285
- }, /*#__PURE__*/React.createElement(ThemeIcon, {
286
- name: "world"
452
+ title: t('pageflow_scrolled.public.navigation.language'),
453
+ __self: this,
454
+ __source: {
455
+ fileName: _jsxFileName$4,
456
+ lineNumber: 52,
457
+ columnNumber: 9
458
+ }
459
+ }), /*#__PURE__*/React.createElement(ThemeIcon, {
460
+ name: "world",
461
+ __self: this,
462
+ __source: {
463
+ fileName: _jsxFileName$4,
464
+ lineNumber: 55,
465
+ columnNumber: 11
466
+ }
287
467
  }), /*#__PURE__*/React.createElement("div", {
288
- className: styles$4.tag
289
- }, /*#__PURE__*/React.createElement("span", null, entry.locale.substring(0, 2).toUpperCase()))));
468
+ className: styles$4.tag,
469
+ __self: this,
470
+ __source: {
471
+ fileName: _jsxFileName$4,
472
+ lineNumber: 56,
473
+ columnNumber: 11
474
+ }
475
+ }, /*#__PURE__*/React.createElement("span", {
476
+ __self: this,
477
+ __source: {
478
+ fileName: _jsxFileName$4,
479
+ lineNumber: 57,
480
+ columnNumber: 13
481
+ }
482
+ }, entry.locale.substring(0, 2).toUpperCase()))));
290
483
  }
291
484
 
292
485
  var styles$5 = {"sharingTooltip":"SharingMenu-module_sharingTooltip__2Tyev","shareLinkContainer":"SharingMenu-module_shareLinkContainer__3-3W6","shareLink":"SharingMenu-module_shareLink__3PdRE"};
293
486
 
294
- function SharingMenu(_ref) {
295
- var shareProviders = _ref.shareProviders;
296
- var shareUrl = useShareUrl();
297
- var _useI18n = useI18n(),
298
- t = _useI18n.t;
487
+ var _jsxFileName$5 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/SharingMenu.js";
488
+ function SharingMenu({
489
+ shareProviders
490
+ }) {
491
+ const shareUrl = useShareUrl();
492
+ const {
493
+ t
494
+ } = useI18n();
299
495
  function renderShareLinks(shareProviders) {
300
- return shareProviders.map(function (shareProvider) {
496
+ return shareProviders.map(shareProvider => {
301
497
  return /*#__PURE__*/React.createElement("div", {
302
498
  key: shareProvider.name,
303
- className: styles$5.shareLinkContainer
499
+ className: styles$5.shareLinkContainer,
500
+ __self: this,
501
+ __source: {
502
+ fileName: _jsxFileName$5,
503
+ lineNumber: 20,
504
+ columnNumber: 9
505
+ }
304
506
  }, /*#__PURE__*/React.createElement("a", {
305
507
  className: classNames('share', styles$5.shareLink),
306
508
  href: shareProvider.url.replace('%<url>s', shareUrl),
307
509
  target: '_blank',
308
- rel: "noopener noreferrer"
510
+ rel: "noopener noreferrer",
511
+ __self: this,
512
+ __source: {
513
+ fileName: _jsxFileName$5,
514
+ lineNumber: 22,
515
+ columnNumber: 11
516
+ }
309
517
  }, /*#__PURE__*/React.createElement(ThemeIcon, {
310
- name: shareProvider.iconName
518
+ name: shareProvider.iconName,
519
+ __self: this,
520
+ __source: {
521
+ fileName: _jsxFileName$5,
522
+ lineNumber: 26,
523
+ columnNumber: 13
524
+ }
311
525
  }), shareProvider.name));
312
526
  });
313
527
  }
314
528
  return /*#__PURE__*/React.createElement(Tooltip, {
529
+ name: "sharing",
315
530
  horizontalOffset: -70,
316
531
  arrowPos: 160,
317
- content: renderShareLinks(shareProviders)
318
- }, /*#__PURE__*/React.createElement("button", {
532
+ content: renderShareLinks(shareProviders),
533
+ __self: this,
534
+ __source: {
535
+ fileName: _jsxFileName$5,
536
+ lineNumber: 35,
537
+ columnNumber: 5
538
+ }
539
+ }, triggerProps => /*#__PURE__*/React.createElement("button", Object.assign({}, triggerProps, {
319
540
  className: classNames(styles.contextIcon),
320
- title: t('pageflow_scrolled.public.navigation.share')
321
- }, /*#__PURE__*/React.createElement(ThemeIcon, {
322
- name: "share"
541
+ title: t('pageflow_scrolled.public.navigation.share'),
542
+ __self: this,
543
+ __source: {
544
+ fileName: _jsxFileName$5,
545
+ lineNumber: 40,
546
+ columnNumber: 9
547
+ }
548
+ }), /*#__PURE__*/React.createElement(ThemeIcon, {
549
+ name: "share",
550
+ __self: this,
551
+ __source: {
552
+ fileName: _jsxFileName$5,
553
+ lineNumber: 43,
554
+ columnNumber: 11
555
+ }
323
556
  })));
324
557
  }
325
558
 
326
559
  var styles$6 = {"button":"ToggleMuteButton-module_button__1ACmo","animate":"ToggleMuteButton-module_animate__pd1yK","pulse":"ToggleMuteButton-module_pulse__2UN7Q"};
327
560
 
561
+ var _jsxFileName$6 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/ToggleMuteButton.js";
328
562
  function ToggleMuteButton() {
329
- var muted = useMediaMuted();
330
- var _useI18n = useI18n(),
331
- t = _useI18n.t;
563
+ const muted = useMediaMuted();
564
+ const {
565
+ t
566
+ } = useI18n();
332
567
  useUnmuteSound();
333
568
  return /*#__PURE__*/React.createElement("div", {
334
- className: classNames(_defineProperty({}, styles$6.animate, !muted))
569
+ className: classNames({
570
+ [styles$6.animate]: !muted
571
+ }),
572
+ __self: this,
573
+ __source: {
574
+ fileName: _jsxFileName$6,
575
+ lineNumber: 23,
576
+ columnNumber: 5
577
+ }
335
578
  }, /*#__PURE__*/React.createElement("button", {
336
579
  className: classNames(styles.contextIcon, styles$6.button),
337
580
  title: muted ? t('pageflow_scrolled.public.navigation.unmute') : t('pageflow_scrolled.public.navigation.mute'),
338
- onClick: function onClick() {
339
- return media.mute(!muted);
581
+ onClick: () => media.mute(!muted),
582
+ __self: this,
583
+ __source: {
584
+ fileName: _jsxFileName$6,
585
+ lineNumber: 24,
586
+ columnNumber: 7
340
587
  }
341
588
  }, muted ? /*#__PURE__*/React.createElement(ThemeIcon, {
342
- name: "muted"
589
+ name: "muted",
590
+ __self: this,
591
+ __source: {
592
+ fileName: _jsxFileName$6,
593
+ lineNumber: 29,
594
+ columnNumber: 18
595
+ }
343
596
  }) : /*#__PURE__*/React.createElement(ThemeIcon, {
344
- name: "unmuted"
597
+ name: "unmuted",
598
+ __self: this,
599
+ __source: {
600
+ fileName: _jsxFileName$6,
601
+ lineNumber: 29,
602
+ columnNumber: 47
603
+ }
345
604
  })));
346
605
  }
347
606
  function useUnmuteSound() {
348
- var theme = useTheme();
349
- var audio = useRef();
350
- useEffect(function () {
607
+ const theme = useTheme();
608
+ const audio = useRef();
609
+ useEffect(() => {
351
610
  audio.current = new Audio(theme.assets.unmute);
352
611
  }, [theme.assets.unmute]);
353
- useOnUnmuteMedia(useCallback(function () {
354
- return audio.current.play();
355
- }, []));
612
+ useOnUnmuteMedia(useCallback(() => audio.current.play(), []));
356
613
  }
357
614
 
358
- function Logo(_ref) {
359
- var srcMobile = _ref.srcMobile,
360
- srcDesktop = _ref.srcDesktop,
361
- url = _ref.url,
362
- altText = _ref.altText;
363
- var theme = useTheme();
364
- var darkWidgets = useDarkWidgets();
615
+ var _jsxFileName$7 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/Logo.js";
616
+ function Logo({
617
+ srcMobile,
618
+ srcDesktop,
619
+ url,
620
+ altText
621
+ }) {
622
+ const theme = useTheme();
623
+ const darkWidgets = useDarkWidgets();
365
624
  srcDesktop = srcDesktop || (darkWidgets ? theme.assets.logoDarkVariantDesktop : theme.assets.logoDesktop);
366
625
  srcMobile = srcMobile || (darkWidgets ? theme.assets.logoDarkVariantMobile : theme.assets.logoMobile);
367
- var inIframe = typeof window !== 'undefined' && window.parent !== window;
626
+ const inIframe = typeof window !== 'undefined' && window.parent !== window;
368
627
  return /*#__PURE__*/React.createElement("a", {
369
628
  target: inIframe || !theme.options.logoOpenInSameTab ? "_blank" : null,
370
629
  rel: "noopener noreferrer",
371
630
  href: url || theme.options.logoUrl,
372
- className: classNames(styles.logo, _defineProperty({}, styles.centerMobileLogo, theme.options.defaultNavigationMobileLogoPosition === 'center'))
373
- }, /*#__PURE__*/React.createElement("picture", null, /*#__PURE__*/React.createElement("source", {
631
+ className: classNames(styles.logo, {
632
+ [styles.centerMobileLogo]: theme.options.defaultNavigationMobileLogoPosition === 'center'
633
+ }),
634
+ __self: this,
635
+ __source: {
636
+ fileName: _jsxFileName$7,
637
+ lineNumber: 23,
638
+ columnNumber: 5
639
+ }
640
+ }, /*#__PURE__*/React.createElement("picture", {
641
+ __self: this,
642
+ __source: {
643
+ fileName: _jsxFileName$7,
644
+ lineNumber: 31,
645
+ columnNumber: 7
646
+ }
647
+ }, /*#__PURE__*/React.createElement("source", {
374
648
  media: "(max-width: 780px)",
375
- srcSet: srcMobile
649
+ srcSet: srcMobile,
650
+ __self: this,
651
+ __source: {
652
+ fileName: _jsxFileName$7,
653
+ lineNumber: 32,
654
+ columnNumber: 9
655
+ }
376
656
  }), /*#__PURE__*/React.createElement("source", {
377
657
  media: "(min-width: 781px)",
378
- srcSet: srcDesktop
658
+ srcSet: srcDesktop,
659
+ __self: this,
660
+ __source: {
661
+ fileName: _jsxFileName$7,
662
+ lineNumber: 33,
663
+ columnNumber: 9
664
+ }
379
665
  }), /*#__PURE__*/React.createElement("img", {
380
666
  src: srcDesktop,
381
- alt: altText || theme.options.logoAltText
667
+ alt: altText || theme.options.logoAltText,
668
+ __self: this,
669
+ __source: {
670
+ fileName: _jsxFileName$7,
671
+ lineNumber: 34,
672
+ columnNumber: 9
673
+ }
382
674
  })));
383
675
  }
384
676
 
385
677
  var styles$7 = {"link":"SkipLinks-module_link__HMj9l"};
386
678
 
679
+ var _jsxFileName$8 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/SkipLinks.js";
387
680
  function SkipLinks() {
388
- var _useI18n = useI18n(),
389
- t = _useI18n.t;
681
+ const {
682
+ t
683
+ } = useI18n();
390
684
  function scrollDown() {
391
- setTimeout(function () {
685
+ setTimeout(() => {
392
686
  window.scrollTo(0, 50);
393
687
  }, 50);
394
688
  }
395
689
  return /*#__PURE__*/React.createElement("div", {
396
- id: "skipLinks"
690
+ id: "skipLinks",
691
+ __self: this,
692
+ __source: {
693
+ fileName: _jsxFileName$8,
694
+ lineNumber: 17,
695
+ columnNumber: 5
696
+ }
397
697
  }, /*#__PURE__*/React.createElement("a", {
398
698
  href: "#goToContent",
399
699
  className: styles$7.link,
400
- onClick: scrollDown
700
+ onClick: scrollDown,
701
+ __self: this,
702
+ __source: {
703
+ fileName: _jsxFileName$8,
704
+ lineNumber: 18,
705
+ columnNumber: 7
706
+ }
401
707
  }, t('pageflow_scrolled.public.navigation_skip_links.content')));
402
708
  }
403
709
 
404
710
  var styles$8 = {"button":"ScrollButton-module_button__1GKRF utils-module_unstyledButton__3rgne","visible":"ScrollButton-module_visible__29yco","start":"ScrollButton-module_start__1XPra ScrollButton-module_button__1GKRF utils-module_unstyledButton__3rgne","end":"ScrollButton-module_end__3PxQt ScrollButton-module_button__1GKRF utils-module_unstyledButton__3rgne"};
405
711
 
406
- function ScrollButton(_ref) {
407
- var type = _ref.type,
408
- contentRect = _ref.contentRect,
409
- onStep = _ref.onStep;
410
- var visible = type === 'start' ? contentRect.scroll.left > 0 : contentRect.scroll.width > contentRect.client.width && contentRect.scroll.left < contentRect.scroll.width - contentRect.client.width;
411
- var step = type === 'start' ? -100 : 100;
412
- var interval = useRef();
712
+ var _jsxFileName$9 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/ScrollButton.js";
713
+ function ScrollButton({
714
+ type,
715
+ contentRect,
716
+ onStep
717
+ }) {
718
+ const visible = type === 'start' ? contentRect.scroll.left > 0 : contentRect.scroll.width > contentRect.client.width && contentRect.scroll.left < contentRect.scroll.width - contentRect.client.width;
719
+ const step = type === 'start' ? -100 : 100;
720
+ const interval = useRef();
413
721
  return /*#__PURE__*/React.createElement("button", {
414
- className: classNames(_defineProperty(_defineProperty(_defineProperty({}, styles$8.start, type === 'start'), styles$8.end, type === 'end'), styles$8.visible, visible)),
722
+ className: classNames({
723
+ [styles$8.start]: type === 'start',
724
+ [styles$8.end]: type === 'end',
725
+ [styles$8.visible]: visible
726
+ }),
415
727
  onMouseDown: handleMouseDown,
416
- onKeyPress: handleKeyPress
728
+ onKeyPress: handleKeyPress,
729
+ __self: this,
730
+ __source: {
731
+ fileName: _jsxFileName$9,
732
+ lineNumber: 16,
733
+ columnNumber: 5
734
+ }
417
735
  }, /*#__PURE__*/React.createElement(ThemeIcon, {
418
- name: type === 'start' ? 'arrowLeft' : 'arrowRight'
736
+ name: type === 'start' ? 'arrowLeft' : 'arrowRight',
737
+ __self: this,
738
+ __source: {
739
+ fileName: _jsxFileName$9,
740
+ lineNumber: 21,
741
+ columnNumber: 7
742
+ }
419
743
  }));
420
744
  function handleMouseDown(event) {
421
745
  if (event.button === 0) {
@@ -425,9 +749,7 @@ function ScrollButton(_ref) {
425
749
  function scrollUntilMouseUp() {
426
750
  scrollStep();
427
751
  clearInterval(interval.current);
428
- interval.current = setInterval(function () {
429
- return scrollStep();
430
- }, 400);
752
+ interval.current = setInterval(() => scrollStep(), 400);
431
753
  document.addEventListener('mouseup', stopScrolling);
432
754
  function stopScrolling() {
433
755
  document.removeEventListener('mouseup', stopScrolling);
@@ -446,44 +768,73 @@ function ScrollButton(_ref) {
446
768
 
447
769
  var styles$9 = {"breakpoint-md":"(min-width: 768px)","scroller":"Scroller-module_scroller__139cK","inner":"Scroller-module_inner__3dhuM"};
448
770
 
449
- function Scroller(_ref) {
450
- var children = _ref.children;
451
- var ref = useRef();
771
+ var _jsxFileName$a = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/Scroller.js";
772
+ function Scroller({
773
+ children
774
+ }) {
775
+ const ref = useRef();
452
776
  return /*#__PURE__*/React.createElement(Measure, {
453
777
  scroll: true,
454
778
  client: true,
455
- innerRef: ref
456
- }, function (_ref2) {
457
- var contentRect = _ref2.contentRect,
458
- measureRef = _ref2.measureRef,
459
- measure = _ref2.measure;
460
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ScrollButton, {
461
- type: "start",
462
- contentRect: contentRect,
463
- onStep: scrollBy
464
- }), /*#__PURE__*/React.createElement(ScrollButton, {
465
- type: "end",
466
- contentRect: contentRect,
467
- onStep: scrollBy
468
- }), /*#__PURE__*/React.createElement("div", {
469
- className: styles$9.scroller,
470
- ref: measureRef,
471
- onFocus: scrollTargetIntoView,
472
- onScroll: function onScroll() {
473
- return measure();
474
- }
475
- }, /*#__PURE__*/React.createElement("div", {
476
- className: styles$9.inner
477
- }, children)));
478
- });
779
+ innerRef: ref,
780
+ __self: this,
781
+ __source: {
782
+ fileName: _jsxFileName$a,
783
+ lineNumber: 12,
784
+ columnNumber: 5
785
+ }
786
+ }, ({
787
+ contentRect,
788
+ measureRef,
789
+ measure
790
+ }) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ScrollButton, {
791
+ type: "start",
792
+ contentRect: contentRect,
793
+ onStep: scrollBy,
794
+ __self: this,
795
+ __source: {
796
+ fileName: _jsxFileName$a,
797
+ lineNumber: 15,
798
+ columnNumber: 12
799
+ }
800
+ }), /*#__PURE__*/React.createElement(ScrollButton, {
801
+ type: "end",
802
+ contentRect: contentRect,
803
+ onStep: scrollBy,
804
+ __self: this,
805
+ __source: {
806
+ fileName: _jsxFileName$a,
807
+ lineNumber: 18,
808
+ columnNumber: 12
809
+ }
810
+ }), /*#__PURE__*/React.createElement("div", {
811
+ className: styles$9.scroller,
812
+ ref: measureRef,
813
+ onFocus: scrollTargetIntoView,
814
+ onScroll: () => measure(),
815
+ __self: this,
816
+ __source: {
817
+ fileName: _jsxFileName$a,
818
+ lineNumber: 21,
819
+ columnNumber: 12
820
+ }
821
+ }, /*#__PURE__*/React.createElement("div", {
822
+ className: styles$9.inner,
823
+ __self: this,
824
+ __source: {
825
+ fileName: _jsxFileName$a,
826
+ lineNumber: 25,
827
+ columnNumber: 14
828
+ }
829
+ }, children))));
479
830
  function scrollBy(x) {
480
831
  // IE11 does not support scrollBy
481
832
  ref.current.scrollLeft = ref.current.scrollLeft + x;
482
833
  }
483
834
  function scrollTargetIntoView(event) {
484
- var targetBounds = event.target.getBoundingClientRect();
485
- var scrollerClipRight = ref.current.clientWidth * 0.75;
486
- var scrollerClipLeft = ref.current.clientWidth * 0.25;
835
+ const targetBounds = event.target.getBoundingClientRect();
836
+ const scrollerClipRight = ref.current.clientWidth * 0.75;
837
+ const scrollerClipLeft = ref.current.clientWidth * 0.25;
487
838
  if (targetBounds.left < scrollerClipLeft) {
488
839
  scrollBy(targetBounds.left - scrollerClipLeft);
489
840
  } else if (targetBounds.right > scrollerClipRight) {
@@ -492,37 +843,49 @@ function Scroller(_ref) {
492
843
  }
493
844
  }
494
845
 
495
- function DefaultNavigation(_ref) {
496
- var _chapters$, _chapters$2;
497
- var configuration = _ref.configuration,
498
- ExtraButtons = _ref.ExtraButtons,
499
- MobileMenu = _ref.MobileMenu,
500
- logo = _ref.logo;
501
- var _useState = useState(true),
502
- _useState2 = _slicedToArray(_useState, 2),
503
- navExpanded = _useState2[0],
504
- setNavExpanded = _useState2[1];
505
- var _useState3 = useState(!configuration.defaultMobileNavVisible),
506
- _useState4 = _slicedToArray(_useState3, 2),
507
- mobileNavHidden = _useState4[0],
508
- setMobileNavHidden = _useState4[1];
509
- var _useState5 = useState(0),
510
- _useState6 = _slicedToArray(_useState5, 2),
511
- readingProgress = _useState6[0],
512
- setReadingProgress = _useState6[1];
513
- var chapters = useMainChapters().filter(function (chapter) {
514
- return !chapter.hideInNavigation;
515
- });
516
- var currentChapter = useCurrentChapter();
517
- var isPhonePlatform = usePhonePlatform();
518
- var shareProviders = useShareProviders({
519
- isPhonePlatform: isPhonePlatform
520
- });
521
- var theme = useTheme();
522
- useScrollPosition(function (_ref2) {
523
- var prevPos = _ref2.prevPos,
524
- currPos = _ref2.currPos;
525
- var expand = currPos.y > prevPos.y ||
846
+ function useTimeoutFlag(duration) {
847
+ const flagRef = useRef(false);
848
+ const timeoutRef = useRef(null);
849
+ const activate = useCallback(() => {
850
+ flagRef.current = true;
851
+ clearTimeout(timeoutRef.current);
852
+ timeoutRef.current = setTimeout(() => {
853
+ flagRef.current = false;
854
+ }, duration);
855
+ }, [duration]);
856
+ useEffect(() => {
857
+ return () => clearTimeout(timeoutRef.current);
858
+ }, []);
859
+ return [flagRef, activate];
860
+ }
861
+
862
+ var styles$a = {"widgetMarginMax":"presenceClassNames-module_widgetMarginMax__24HYl","expanded":"presenceClassNames-module_expanded__mPGsi","widgetMarginMin":"presenceClassNames-module_widgetMarginMin__2D3cx"};
863
+
864
+ var _jsxFileName$b = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/DefaultNavigationPresenceProvider.js";
865
+ const DefaultNavigationContext = createContext({
866
+ navExpanded: true,
867
+ setNavExpanded: () => {}
868
+ });
869
+ function useDefaultNavigationState() {
870
+ return useContext(DefaultNavigationContext);
871
+ }
872
+ function DefaultNavigationPresenceProvider({
873
+ configuration,
874
+ children
875
+ }) {
876
+ const [navExpanded, setNavExpanded] = useState(true);
877
+ const isPhonePlatform = usePhonePlatform();
878
+ const [scrollLockRef, activateScrollLock] = useTimeoutFlag(200);
879
+ const lockNavExpanded = useCallback(() => {
880
+ activateScrollLock();
881
+ setNavExpanded(true);
882
+ }, [activateScrollLock]);
883
+ useScrollPosition(({
884
+ prevPos,
885
+ currPos
886
+ }) => {
887
+ if (scrollLockRef.current) return;
888
+ const expand = currPos.y > prevPos.y ||
526
889
  // Mobile Safari reports positive scroll position
527
890
  // during scroll bounce animation when scrolling
528
891
  // back to the top. Make sure navigation bar
@@ -530,41 +893,110 @@ function DefaultNavigation(_ref) {
530
893
  currPos.y >= 0;
531
894
  if (expand !== navExpanded) setNavExpanded(expand);
532
895
  }, [navExpanded]);
533
- useScrollPosition(function (_ref3) {
534
- var prevPos = _ref3.prevPos,
535
- currPos = _ref3.currPos;
536
- var current = currPos.y * -1;
896
+ useOnUnmuteMedia(useCallback(() => setNavExpanded(true), []));
897
+ const alwaysExpanded = !isPhonePlatform && configuration.fixedOnDesktop;
898
+ const expanded = navExpanded || alwaysExpanded;
899
+ const className = classNames(styles$a.widgetMarginMax, {
900
+ [styles$a.widgetMarginMin]: configuration.firstBackdropBelowNavigation && configuration.fixedOnDesktop && !isPhonePlatform,
901
+ [styles$a.expanded]: expanded
902
+ });
903
+ const contextValue = useMemo(() => ({
904
+ navExpanded,
905
+ setNavExpanded,
906
+ lockNavExpanded
907
+ }), [navExpanded, lockNavExpanded]);
908
+ return /*#__PURE__*/React.createElement(DefaultNavigationContext.Provider, {
909
+ value: contextValue,
910
+ __self: this,
911
+ __source: {
912
+ fileName: _jsxFileName$b,
913
+ lineNumber: 68,
914
+ columnNumber: 5
915
+ }
916
+ }, /*#__PURE__*/React.createElement("div", {
917
+ className: className,
918
+ __self: this,
919
+ __source: {
920
+ fileName: _jsxFileName$b,
921
+ lineNumber: 69,
922
+ columnNumber: 7
923
+ }
924
+ }, children));
925
+ }
926
+
927
+ var _jsxFileName$c = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/widgets/defaultNavigation/DefaultNavigation.js";
928
+ function DefaultNavigation({
929
+ configuration,
930
+ ExtraButtons,
931
+ Menu,
932
+ MobileMenu,
933
+ logo,
934
+ omitChapterNavigation
935
+ }) {
936
+ var _chapters$, _chapters$2;
937
+ const {
938
+ navExpanded,
939
+ setNavExpanded,
940
+ lockNavExpanded
941
+ } = useDefaultNavigationState();
942
+ const [menuOpen, setMenuOpen] = useState(!!configuration.defaultMobileNavVisible);
943
+ const [readingProgress, setReadingProgress] = useState(0);
944
+ const chapters = useMainChapters().filter(chapter => !chapter.hideInNavigation);
945
+ const currentChapter = useCurrentChapter();
946
+ const isPhonePlatform = usePhonePlatform();
947
+ const shareProviders = useShareProviders({
948
+ isPhonePlatform
949
+ });
950
+ const theme = useTheme();
951
+ const CustomMenu = Menu || MobileMenu;
952
+ const hasMenu = !!CustomMenu;
953
+ const hasDesktopMenu = !!Menu;
954
+ useScrollPosition(({
955
+ prevPos,
956
+ currPos
957
+ }) => {
958
+ const current = currPos.y * -1;
537
959
  // Todo: Memoize and update on window resize
538
- var total = document.body.clientHeight - window.innerHeight;
539
- var progress = Math.min(100, Math.abs(current / total) * 100);
960
+ const total = document.body.clientHeight - window.innerHeight;
961
+ const progress = Math.min(100, Math.abs(current / total) * 100);
540
962
  setReadingProgress(progress);
541
963
  }, [readingProgress], null, false, 1);
542
- useOnUnmuteMedia(useCallback(function () {
543
- return setNavExpanded(true);
544
- }, []));
545
- var darkWidgets = useDarkWidgets();
546
- var hasChapters = chapters.length > 1 || !utils.isBlank((_chapters$ = chapters[0]) === null || _chapters$ === void 0 ? void 0 : _chapters$.title) || !utils.isBlank((_chapters$2 = chapters[0]) === null || _chapters$2 === void 0 ? void 0 : _chapters$2.summary);
964
+ const darkWidgets = useDarkWidgets();
965
+ const hasChapters = (chapters.length > 1 || !utils.isBlank((_chapters$ = chapters[0]) === null || _chapters$ === void 0 ? void 0 : _chapters$.title) || !utils.isBlank((_chapters$2 = chapters[0]) === null || _chapters$2 === void 0 ? void 0 : _chapters$2.summary)) && !omitChapterNavigation;
547
966
  function handleProgressBarMouseEnter() {
548
967
  setNavExpanded(true);
549
968
  }
550
969
  function handleBurgerMenuClick() {
551
- setMobileNavHidden(!mobileNavHidden);
970
+ setMenuOpen(!menuOpen);
552
971
  }
553
972
  function handleMenuClick(chapterLinkId) {
554
- setMobileNavHidden(true);
973
+ lockNavExpanded();
974
+ setMenuOpen(false);
555
975
  }
556
976
  function renderChapterLinks(chapters) {
557
- return chapters.map(function (chapter, index) {
558
- var chapterIndex = index + 1;
559
- var chapterLinkId = "chapterLink".concat(chapterIndex);
977
+ return chapters.map((chapter, index) => {
978
+ const chapterIndex = index + 1;
979
+ const chapterLinkId = `chapterLink${chapterIndex}`;
560
980
  return /*#__PURE__*/React.createElement("li", {
561
981
  key: index,
562
- className: styles.chapterListItem
982
+ className: styles.chapterListItem,
983
+ __self: this,
984
+ __source: {
985
+ fileName: _jsxFileName$c,
986
+ lineNumber: 90,
987
+ columnNumber: 9
988
+ }
563
989
  }, /*#__PURE__*/React.createElement(ChapterLink, Object.assign({}, chapter, {
564
990
  chapterIndex: chapterIndex,
565
991
  chapterLinkId: chapterLinkId,
566
992
  active: (currentChapter === null || currentChapter === void 0 ? void 0 : currentChapter.id) === chapter.id,
567
- handleMenuClick: handleMenuClick
993
+ handleMenuClick: handleMenuClick,
994
+ __self: this,
995
+ __source: {
996
+ fileName: _jsxFileName$c,
997
+ lineNumber: 91,
998
+ columnNumber: 11
999
+ }
568
1000
  })));
569
1001
  });
570
1002
  }
@@ -572,56 +1004,183 @@ function DefaultNavigation(_ref) {
572
1004
  if (!hasChapters) {
573
1005
  return null;
574
1006
  }
575
- return /*#__PURE__*/React.createElement(Scroller, null, /*#__PURE__*/React.createElement("nav", {
576
- className: classNames(styles.navigationChapters, _defineProperty({}, styles.navigationChaptersHidden, mobileNavHidden || MobileMenu))
1007
+ return /*#__PURE__*/React.createElement(Scroller, {
1008
+ __self: this,
1009
+ __source: {
1010
+ fileName: _jsxFileName$c,
1011
+ lineNumber: 107,
1012
+ columnNumber: 7
1013
+ }
1014
+ }, /*#__PURE__*/React.createElement("nav", {
1015
+ className: classNames(styles.navigationChapters, {
1016
+ [styles.hiddenOnMobile]: !menuOpen || hasMenu
1017
+ }),
1018
+ __self: this,
1019
+ __source: {
1020
+ fileName: _jsxFileName$c,
1021
+ lineNumber: 108,
1022
+ columnNumber: 9
1023
+ }
577
1024
  }, /*#__PURE__*/React.createElement("ul", {
578
- className: styles.chapterList
1025
+ className: styles.chapterList,
1026
+ __self: this,
1027
+ __source: {
1028
+ fileName: _jsxFileName$c,
1029
+ lineNumber: 110,
1030
+ columnNumber: 11
1031
+ }
579
1032
  }, renderChapterLinks(chapters))));
580
1033
  }
581
- var hideSharingButton = configuration.hideSharingButton || !shareProviders.length;
1034
+ const hideSharingButton = configuration.hideSharingButton || !shareProviders.length;
582
1035
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("header", {
583
- className: classNames(styles.navigationBar, _defineProperty(_defineProperty({
584
- 'scope-dark': darkWidgets
585
- }, styles.navigationBarExpanded, navExpanded || !isPhonePlatform && configuration.fixedOnDesktop || !mobileNavHidden), styles.hasChapters, hasChapters)),
1036
+ className: classNames(styles.navigationBar, {
1037
+ 'scope-dark': darkWidgets,
1038
+ [styles.navigationBarExpanded]: navExpanded || !isPhonePlatform && configuration.fixedOnDesktop || menuOpen,
1039
+ [styles.hasChapters]: hasChapters,
1040
+ [styles.hasDesktopMenu]: hasDesktopMenu
1041
+ }),
586
1042
  style: {
587
1043
  '--theme-accent-color': paletteColor(configuration.accentColor)
1044
+ },
1045
+ onFocus: () => setNavExpanded(true),
1046
+ __self: this,
1047
+ __source: {
1048
+ fileName: _jsxFileName$c,
1049
+ lineNumber: 123,
1050
+ columnNumber: 7
1051
+ }
1052
+ }, /*#__PURE__*/React.createElement(WidgetSelectionRect, {
1053
+ __self: this,
1054
+ __source: {
1055
+ fileName: _jsxFileName$c,
1056
+ lineNumber: 134,
1057
+ columnNumber: 9
588
1058
  }
589
- }, /*#__PURE__*/React.createElement(WidgetSelectionRect, null, /*#__PURE__*/React.createElement("div", {
590
- className: styles.navigationBarContentWrapper
591
- }, (hasChapters || MobileMenu) && /*#__PURE__*/React.createElement(HamburgerIcon, {
1059
+ }, /*#__PURE__*/React.createElement("div", {
1060
+ className: classNames(styles.navigationBarContentWrapper, configuration.firstBackdropBelowNavigation ? styles.opaqueSurface : styles.translucentSurface),
1061
+ __self: this,
1062
+ __source: {
1063
+ fileName: _jsxFileName$c,
1064
+ lineNumber: 135,
1065
+ columnNumber: 11
1066
+ }
1067
+ }, /*#__PURE__*/React.createElement(SkipLinks, {
1068
+ __self: this,
1069
+ __source: {
1070
+ fileName: _jsxFileName$c,
1071
+ lineNumber: 139,
1072
+ columnNumber: 13
1073
+ }
1074
+ }), (hasChapters || hasMenu) && /*#__PURE__*/React.createElement(HamburgerIcon, {
592
1075
  onClick: handleBurgerMenuClick,
593
- mobileNavHidden: mobileNavHidden
594
- }), /*#__PURE__*/React.createElement(SkipLinks, null), /*#__PURE__*/React.createElement(Logo, logo), renderNav(), MobileMenu && /*#__PURE__*/React.createElement(MobileMenu, {
1076
+ menuOpen: menuOpen,
1077
+ visibleOnDesktop: hasDesktopMenu,
1078
+ __self: this,
1079
+ __source: {
1080
+ fileName: _jsxFileName$c,
1081
+ lineNumber: 141,
1082
+ columnNumber: 42
1083
+ }
1084
+ }), /*#__PURE__*/React.createElement(Logo, Object.assign({}, logo, {
1085
+ __self: this,
1086
+ __source: {
1087
+ fileName: _jsxFileName$c,
1088
+ lineNumber: 145,
1089
+ columnNumber: 13
1090
+ }
1091
+ })), renderNav(), CustomMenu && /*#__PURE__*/React.createElement(CustomMenu, {
595
1092
  configuration: configuration,
596
- open: !mobileNavHidden,
597
- close: function close() {
598
- return setMobileNavHidden(true);
1093
+ open: menuOpen,
1094
+ close: () => setMenuOpen(false),
1095
+ __self: this,
1096
+ __source: {
1097
+ fileName: _jsxFileName$c,
1098
+ lineNumber: 148,
1099
+ columnNumber: 28
599
1100
  }
600
1101
  }), /*#__PURE__*/React.createElement("div", {
601
- className: classNames(styles.contextIcons)
602
- }, !configuration.hideToggleMuteButton && /*#__PURE__*/React.createElement(ToggleMuteButton, null), /*#__PURE__*/React.createElement(TranslationsMenu, null), !theme.options.hideLegalInfoButton && /*#__PURE__*/React.createElement(LegalInfoMenu, {
603
- tooltipOffset: hideSharingButton ? -40 : 0
1102
+ className: classNames(styles.contextIcons),
1103
+ __self: this,
1104
+ __source: {
1105
+ fileName: _jsxFileName$c,
1106
+ lineNumber: 152,
1107
+ columnNumber: 13
1108
+ }
1109
+ }, !configuration.hideToggleMuteButton && /*#__PURE__*/React.createElement(ToggleMuteButton, {
1110
+ __self: this,
1111
+ __source: {
1112
+ fileName: _jsxFileName$c,
1113
+ lineNumber: 153,
1114
+ columnNumber: 55
1115
+ }
1116
+ }), /*#__PURE__*/React.createElement(TranslationsMenu, {
1117
+ __self: this,
1118
+ __source: {
1119
+ fileName: _jsxFileName$c,
1120
+ lineNumber: 154,
1121
+ columnNumber: 15
1122
+ }
1123
+ }), !theme.options.hideLegalInfoButton && /*#__PURE__*/React.createElement(LegalInfoMenu, {
1124
+ tooltipOffset: hideSharingButton ? -40 : 0,
1125
+ __self: this,
1126
+ __source: {
1127
+ fileName: _jsxFileName$c,
1128
+ lineNumber: 155,
1129
+ columnNumber: 53
1130
+ }
604
1131
  }), !hideSharingButton && /*#__PURE__*/React.createElement(SharingMenu, {
605
- shareProviders: shareProviders
606
- }), ExtraButtons && /*#__PURE__*/React.createElement(ExtraButtons, null))), /*#__PURE__*/React.createElement("div", {
1132
+ shareProviders: shareProviders,
1133
+ __self: this,
1134
+ __source: {
1135
+ fileName: _jsxFileName$c,
1136
+ lineNumber: 156,
1137
+ columnNumber: 38
1138
+ }
1139
+ }), ExtraButtons && /*#__PURE__*/React.createElement(ExtraButtons, {
1140
+ __self: this,
1141
+ __source: {
1142
+ fileName: _jsxFileName$c,
1143
+ lineNumber: 157,
1144
+ columnNumber: 32
1145
+ }
1146
+ }))), /*#__PURE__*/React.createElement("div", {
607
1147
  className: styles.progressBar,
608
- onMouseEnter: handleProgressBarMouseEnter
1148
+ onMouseEnter: handleProgressBarMouseEnter,
1149
+ __self: this,
1150
+ __source: {
1151
+ fileName: _jsxFileName$c,
1152
+ lineNumber: 161,
1153
+ columnNumber: 11
1154
+ }
609
1155
  }, /*#__PURE__*/React.createElement("span", {
610
1156
  className: styles.progressIndicator,
611
1157
  style: {
612
1158
  width: readingProgress + '%'
1159
+ },
1160
+ __self: this,
1161
+ __source: {
1162
+ fileName: _jsxFileName$c,
1163
+ lineNumber: 162,
1164
+ columnNumber: 13
613
1165
  }
614
1166
  })))), /*#__PURE__*/React.createElement(SelectableWidget, {
615
1167
  role: "defaultNavigationExtra",
616
1168
  props: {
617
1169
  navigationExpanded: navExpanded,
618
- mobileNavigationVisible: !mobileNavHidden
1170
+ mobileNavigationVisible: menuOpen
1171
+ },
1172
+ __self: this,
1173
+ __source: {
1174
+ fileName: _jsxFileName$c,
1175
+ lineNumber: 166,
1176
+ columnNumber: 7
619
1177
  }
620
1178
  }));
621
1179
  }
622
1180
 
623
1181
  frontend.widgetTypes.register('defaultNavigation', {
624
- component: DefaultNavigation
1182
+ component: DefaultNavigation,
1183
+ presenceProvider: DefaultNavigationPresenceProvider
625
1184
  });
626
1185
 
627
- export { DefaultNavigation };
1186
+ export { DefaultNavigation, DefaultNavigationPresenceProvider };