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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +319 -345
- data/README.md +3 -4
- data/admins/pageflow/accounts.rb +6 -6
- data/admins/pageflow/entry.rb +10 -8
- data/admins/pageflow/membership.rb +11 -11
- data/admins/pageflow/translations.rb +5 -5
- data/app/assets/images/pageflow/admin/icons/comment.svg +1 -0
- data/app/assets/javascripts/pageflow/dist/ui.js +1350 -630
- data/app/assets/javascripts/pageflow/editor/vendor.js +0 -1
- data/app/assets/javascripts/pageflow/ui.js +0 -1
- data/app/assets/stylesheets/pageflow/admin/entry_comments_indicator.scss +45 -0
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +8 -1
- data/app/assets/stylesheets/pageflow/admin.scss +1 -0
- data/app/assets/stylesheets/pageflow/animations/spin.scss +9 -0
- data/app/assets/stylesheets/pageflow/animations.scss +1 -0
- data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +21 -5
- data/app/assets/stylesheets/pageflow/editor/base.scss +9 -1
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +13 -1
- data/app/assets/stylesheets/pageflow/editor/edit_configuration_view.scss +5 -0
- data/app/assets/stylesheets/pageflow/editor/file_folders.scss +127 -0
- data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +0 -1
- data/app/assets/stylesheets/pageflow/editor/file_meta_data_overlay.scss +45 -0
- data/app/assets/stylesheets/pageflow/editor/file_preview.scss +138 -0
- data/app/assets/stylesheets/pageflow/editor/file_references.scss +68 -0
- data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +1 -1
- data/app/assets/stylesheets/pageflow/editor/file_stage_icons.scss +17 -0
- data/app/assets/stylesheets/pageflow/editor/file_stages.scss +25 -32
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +31 -48
- data/app/assets/stylesheets/pageflow/editor/file_type_pills.scss +73 -0
- data/app/assets/stylesheets/pageflow/editor/files.scss +230 -50
- data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +142 -14
- data/app/assets/stylesheets/pageflow/editor/folder_breadcrumb.scss +40 -0
- data/app/assets/stylesheets/pageflow/editor/info_box.scss +12 -0
- data/app/assets/stylesheets/pageflow/editor/inputs/edit_defaults_button.scss +15 -0
- data/app/assets/stylesheets/pageflow/editor/inputs.scss +1 -0
- data/app/assets/stylesheets/pageflow/editor/list.scss +88 -38
- data/app/assets/stylesheets/pageflow/editor/manage_files.scss +9 -0
- data/app/assets/stylesheets/pageflow/editor/menu.scss +14 -0
- data/app/assets/stylesheets/pageflow/editor/move_to_folder_dialog.scss +83 -0
- data/app/assets/stylesheets/pageflow/mixins/pageflow.scss +9 -5
- data/app/assets/stylesheets/pageflow/ui/color_picker.scss +230 -0
- data/app/assets/stylesheets/pageflow/ui/forms.scss +34 -4
- data/app/assets/stylesheets/pageflow/ui/functions.scss +12 -2
- data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +9 -16
- data/app/assets/stylesheets/pageflow/ui/input/text_area_input.scss +15 -0
- data/app/assets/stylesheets/pageflow/ui/overrides.scss +8 -0
- data/app/assets/stylesheets/pageflow/ui/properties.scss +29 -0
- data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -3
- data/app/assets/stylesheets/pageflow/ui.scss +4 -2
- data/app/controllers/pageflow/editor/entries_controller.rb +1 -0
- data/app/controllers/pageflow/editor/file_folders_controller.rb +80 -0
- data/app/controllers/pageflow/editor/file_import_controller.rb +1 -0
- data/app/controllers/pageflow/editor/files_controller.rb +15 -6
- data/app/controllers/pageflow/editor/oembeds_controller.rb +21 -0
- data/app/controllers/pageflow/entries_controller.rb +17 -13
- data/app/controllers/pageflow/review/comment_thread_reads_controller.rb +30 -0
- data/app/controllers/pageflow/review/comment_threads_controller.rb +60 -0
- data/app/controllers/pageflow/review/comments_controller.rb +53 -0
- data/app/controllers/pageflow/revisions_controller.rb +4 -1
- data/app/helpers/pageflow/admin/entries_helper.rb +40 -0
- data/app/helpers/pageflow/admin/widgets_helper.rb +2 -2
- data/app/helpers/pageflow/common_entry_seed_helper.rb +5 -3
- data/app/helpers/pageflow/editor/config_helper.rb +3 -1
- data/app/helpers/pageflow/entries_helper.rb +24 -42
- data/app/helpers/pageflow/entry_json_seed_helper.rb +4 -4
- data/app/helpers/pageflow/public_i18n_helper.rb +9 -8
- data/app/helpers/pageflow/structured_data_helper.rb +4 -1
- data/app/helpers/pageflow/themes_helper.rb +1 -3
- data/app/helpers/pageflow/widgets_helper.rb +2 -1
- data/app/inputs/pageflow_permalink_input.rb +6 -2
- data/app/models/concerns/pageflow/auto_generated_perma_id.rb +11 -4
- data/app/models/concerns/pageflow/reusable_file.rb +1 -1
- data/app/models/concerns/pageflow/serialization_blacklist.rb +2 -4
- data/app/models/concerns/pageflow/translated_attributes.rb +101 -0
- data/app/models/concerns/pageflow/uploadable_file.rb +1 -1
- data/app/models/pageflow/comment.rb +30 -0
- data/app/models/pageflow/comment_thread.rb +65 -0
- data/app/models/pageflow/comment_thread_read.rb +22 -0
- data/app/models/pageflow/customized_theme.rb +3 -2
- data/app/models/pageflow/draft_entry.rb +20 -8
- data/app/models/pageflow/entry.rb +2 -0
- data/app/models/pageflow/entry_at_revision.rb +9 -1
- data/app/models/pageflow/entry_comment_summary.rb +114 -0
- data/app/models/pageflow/file_folder.rb +74 -0
- data/app/models/pageflow/file_reuse.rb +3 -2
- data/app/models/pageflow/file_usage.rb +8 -0
- data/app/models/pageflow/image_file.rb +24 -20
- data/app/models/pageflow/image_file_url_templates.rb +3 -3
- data/app/models/pageflow/legal_info.rb +38 -0
- data/app/models/pageflow/nested_revision_component_copy.rb +1 -1
- data/app/models/pageflow/permalink.rb +1 -0
- data/app/models/pageflow/revision.rb +6 -2
- data/app/models/pageflow/site.rb +10 -0
- data/app/models/pageflow/used_file.rb +8 -2
- data/app/models/pageflow/widget.rb +2 -2
- data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +0 -1
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +4 -2
- data/app/views/pageflow/editor/entries/_entry.json.jbuilder +2 -1
- data/app/views/pageflow/editor/entries/seed.json.erb +1 -0
- data/app/views/pageflow/editor/file_folders/_file_folder.json.jbuilder +5 -0
- data/app/views/pageflow/editor/file_folders/create.json.jbuilder +1 -0
- data/app/views/pageflow/editor/file_folders/index.json.jbuilder +3 -0
- data/app/views/pageflow/editor/files/_file.json.jbuilder +2 -1
- data/app/views/pageflow/editor/image_files/_image_file.json.jbuilder +3 -0
- data/app/views/pageflow/editor/video_files/_video_file.json.jbuilder +3 -0
- data/app/views/pageflow/files/_file.json.jbuilder +2 -0
- data/app/views/pageflow/image_files/_image_file.json.jbuilder +0 -1
- data/app/views/pageflow/review/comment_threads/_comment_thread.json.jbuilder +20 -0
- data/app/views/pageflow/review/comment_threads/create.json.jbuilder +2 -0
- data/app/views/pageflow/review/comment_threads/index.json.jbuilder +13 -0
- data/app/views/pageflow/review/comments/_comment.json.jbuilder +13 -0
- data/app/views/pageflow/review/comments/create.json.jbuilder +1 -0
- data/app/views/pageflow/structured_data/_entry.json.jbuilder +2 -3
- data/app/views/pageflow/video_files/_video_file.json.jbuilder +0 -1
- data/config/locales/de.yml +152 -14
- data/config/locales/en.yml +150 -14
- data/config/routes.rb +14 -0
- data/db/migrate/20140418225525_setup_schema.rb +2 -2
- data/db/migrate/20251015000000_add_structured_data_type_name_to_revisions.rb +5 -0
- data/db/migrate/20251029142849_convert_legacy_social_embeds_to_unified_social_embed.rb +38 -0
- data/db/migrate/20251119083347_fix_main_storyline_positions.rb +16 -0
- data/db/migrate/20251119083348_ensure_scrolled_entries_have_excursion_storyline.rb +15 -0
- data/db/migrate/20260303000000_add_layout_version_to_revisions.rb +6 -0
- data/db/migrate/20260323000000_create_comment_threads_and_comments.rb +30 -0
- data/db/migrate/20260414000000_add_subject_range_to_comment_threads.rb +5 -0
- data/db/migrate/20260415000000_add_section_perma_id_to_comment_threads.rb +5 -0
- data/db/migrate/20260727000000_add_quote_to_comments.rb +5 -0
- data/db/migrate/20260728000000_create_file_folders.rb +17 -0
- data/db/migrate/20260805000000_add_attribute_translations_to_sites.rb +5 -0
- data/db/migrate/20260806000000_add_edited_at_to_comments.rb +5 -0
- data/db/migrate/20260810000000_create_pageflow_scrolled_lottie_files.rb +24 -0
- data/db/migrate/20260817000000_create_comment_thread_reads.rb +16 -0
- data/db/migrate/20260819000000_add_unread_comments_since_at_to_users.rb +18 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +8665 -3890
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +979 -3571
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +20199 -28120
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +18652 -26584
- data/entry_types/scrolled/app/assets/stylesheets/pageflow_scrolled/ui.scss +2 -0
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +33 -3
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +2 -3
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +21 -1
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +3 -3
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +7 -5
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +5 -2
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +13 -5
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/i18n_helper.rb +28 -13
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +26 -11
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +2 -2
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/sprockets_helper.rb +16 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +174 -3
- data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +49 -7
- data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file.rb +6 -0
- data/entry_types/scrolled/app/models/pageflow_scrolled/lottie_file_url_templates.rb +16 -0
- data/entry_types/scrolled/app/models/pageflow_scrolled/storyline.rb +1 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +13 -12
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +30 -10
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +9 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +1 -1
- data/entry_types/scrolled/config/configuration_schemas/pageflow-scrolled.json +414 -0
- data/entry_types/scrolled/config/locales/de.yml +512 -65
- data/entry_types/scrolled/config/locales/en.yml +518 -52
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +2 -2
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +51 -6
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration_schemas.rb +91 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +2 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/entry_file_reference_locations.rb +71 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/entry_structured_data_types/faq_page.rb +58 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/file_reference_locations.rb +69 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +205 -22
- data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +2 -4
- data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +56 -36
- data/entry_types/scrolled/lib/pageflow_scrolled/theme_options_default_scale.rb +35 -0
- data/entry_types/scrolled/lib/pageflow_scrolled.rb +13 -0
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +19 -1
- data/entry_types/scrolled/package/config/configurationSchemas.js +70 -0
- data/entry_types/scrolled/package/config/rollup/configurationSchemas.js +19 -0
- data/entry_types/scrolled/package/config/webpack.js +72 -0
- data/entry_types/scrolled/package/contentElements/hotspots-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements/hotspots-frontend.js +1181 -915
- data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/inlineBeforeAfter-frontend.js +219 -0
- data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/lottieAnimation-frontend.js +244 -0
- data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/socialEmbed-frontend.js +823 -0
- data/entry_types/scrolled/package/contentElements/tikTokEmbed-frontend.js +71 -21
- data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/twitterEmbed-frontend.js +277 -0
- data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.css +1 -0
- data/entry_types/scrolled/package/contentElements/videoEmbed-frontend.js +244 -0
- data/entry_types/scrolled/package/contentElements-editor.js +1915 -1097
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +3093 -1679
- data/entry_types/scrolled/package/editor.css +1 -0
- data/entry_types/scrolled/package/editor.js +8667 -4077
- data/entry_types/scrolled/package/entryState.js +1600 -0
- data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-20c600de.js +1979 -0
- data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-58189220.js +2538 -0
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-9f76033e.js → PhonePlatformContext-035a99fa.js} +7 -12
- data/entry_types/scrolled/package/frontend/PhonePlatformContext-9da43797.js +33 -0
- data/entry_types/scrolled/package/frontend/Placeholder.module-bf0966b4.js +5267 -0
- data/entry_types/scrolled/package/frontend/Placeholder.module-d22a9335.js +4180 -0
- data/entry_types/scrolled/package/frontend/ThemeIcon-ab834849.js +754 -0
- data/entry_types/scrolled/package/frontend/ThemeIcon-f6cb3a8f.js +773 -0
- data/entry_types/scrolled/package/frontend/{ToggleFullscreenCornerButton-788e9cdb.js → ToggleFullscreenCornerButton-30fd1124.js} +6 -6
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-61c25224.js +72 -0
- data/entry_types/scrolled/package/frontend/Viewer-1074fd59.js +147 -0
- data/entry_types/scrolled/package/frontend/Viewer-1482ca34.js +480 -0
- data/entry_types/scrolled/package/frontend/Viewer-70504231.js +210 -0
- data/entry_types/scrolled/package/frontend/{Viewer-0345ce57.js → Viewer-cc8d4072.js} +84 -92
- data/entry_types/scrolled/package/frontend/Wavesurfer-656e3c36.js +302 -0
- data/entry_types/scrolled/package/frontend/Wavesurfer-b753b838.js +385 -0
- data/entry_types/scrolled/package/frontend/commenting.css +1 -0
- data/entry_types/scrolled/package/frontend/extensions-167ae143.js +1455 -0
- data/entry_types/scrolled/package/frontend/extensions-2318f92b.js +5918 -0
- data/entry_types/scrolled/package/frontend/extensions-a461fd13.js +4890 -0
- data/entry_types/scrolled/package/frontend/extensions-c98269fd.js +1982 -0
- data/entry_types/scrolled/package/frontend/i18n-493cd2a6.js +93 -0
- data/entry_types/scrolled/package/frontend/i18n-e06cac14.js +100 -0
- data/entry_types/scrolled/package/frontend/{index-eb670c2f.js → index-2e5546f7.js} +36 -44
- data/entry_types/scrolled/package/frontend/index-de2b418d.js +130 -0
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +1870 -875
- data/entry_types/scrolled/package/frontend/inlineEditing.css +1 -0
- data/entry_types/scrolled/package/frontend/useContentElementEditorState-a084912e.js +25 -0
- data/entry_types/scrolled/package/frontend/useDelayedBoolean-a387d85b.js +24 -0
- data/entry_types/scrolled/package/frontend/{usePhonePlatform-c2ba875d.js → usePhonePlatform-4ecb96d4.js} +1 -1
- data/entry_types/scrolled/package/frontend/usePhonePlatform-ce9ff08d.js +8 -0
- data/entry_types/scrolled/package/frontend-server.js +20 -209
- data/entry_types/scrolled/package/package.json +5 -3
- data/entry_types/scrolled/package/review.css +1 -0
- data/entry_types/scrolled/package/review.js +3306 -0
- data/entry_types/scrolled/package/testHelpers.js +836 -359
- data/entry_types/scrolled/package/widgets/consentBar.css +1 -1
- data/entry_types/scrolled/package/widgets/consentBar.js +269 -290
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +2 -2
- data/entry_types/scrolled/package/widgets/defaultNavigation.js +911 -352
- data/entry_types/scrolled/package/widgets/excursionSheet.css +1 -1
- data/entry_types/scrolled/package/widgets/excursionSheet.js +87 -124
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.css +1 -1
- data/entry_types/scrolled/package/widgets/iconInlineFileRights.js +62 -29
- data/entry_types/scrolled/package/widgets/iconScrollIndicator.js +32 -13
- data/entry_types/scrolled/package/widgets/mainStorylineSheet.css +1 -1
- data/entry_types/scrolled/package/widgets/mainStorylineSheet.js +56 -100
- data/entry_types/scrolled/package/widgets/textInlineFileRights.css +1 -1
- data/entry_types/scrolled/package/widgets/textInlineFileRights.js +33 -28
- data/entry_types/scrolled/package/widgets-server.js +1 -0
- data/entry_types/scrolled/spec/factories/lottie_files.rb +29 -0
- data/entry_types/scrolled/spec/fixtures/animation.lottie +0 -0
- data/entry_types/scrolled/spec/fixtures/font.woff +0 -0
- data/entry_types/scrolled/spec/fixtures/font.woff2 +0 -0
- data/lib/generators/pageflow/resque/resque_generator.rb +0 -2
- data/lib/pageflow/configuration.rb +49 -7
- data/lib/pageflow/deprecation.rb +19 -0
- data/lib/pageflow/engine.rb +1 -1
- data/lib/pageflow/entries_controller_env_helper.rb +32 -2
- data/lib/pageflow/entry_export_import/entry_serialization.rb +4 -4
- data/lib/pageflow/entry_export_import/page_type_versions.rb +2 -2
- data/lib/pageflow/entry_export_import/revision_serialization/import.rb +10 -0
- data/lib/pageflow/entry_export_import/revision_serialization.rb +3 -0
- data/lib/pageflow/entry_structured_data_types.rb +43 -0
- data/lib/pageflow/entry_type_configuration.rb +1 -0
- data/lib/pageflow/file_type.rb +2 -2
- data/lib/pageflow/file_types.rb +1 -1
- data/lib/pageflow/oembed_providers.rb +42 -0
- data/lib/pageflow/primary_domain_entry_redirect.rb +6 -0
- data/lib/pageflow/rails_version.rb +13 -2
- data/lib/pageflow/themes.rb +41 -0
- data/lib/pageflow/user_mixin.rb +12 -0
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow.rb +1 -0
- data/package/config/eslint-rules/documented-in-toc.js +125 -0
- data/package/config/jest/index.js +0 -1
- data/package/config/webpack.js +0 -1
- data/package/config/webpack5.js +0 -1
- data/package/editor.js +4378 -1897
- data/package/frontend.js +647 -886
- data/package/package.json +2 -1
- data/package/review.js +384 -0
- data/package/testHelpers.js +248 -188
- data/package/ui.js +1346 -630
- data/package/vendor/stubs/wysihtml5.js +2 -0
- data/spec/factories/comment_thread_reads.rb +10 -0
- data/spec/factories/comment_threads.rb +10 -0
- data/spec/factories/comments.rb +9 -0
- data/spec/factories/file_folders.rb +8 -0
- data/spec/factories/published_entries.rb +2 -0
- metadata +188 -67
- data/app/assets/stylesheets/pageflow/editor/select_button.scss +0 -51
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/generated_media_queries_helper.rb +0 -55
- data/entry_types/scrolled/package/frontend/FloatingPortalRootProvider-51914be7.js +0 -5439
- data/entry_types/scrolled/package/frontend/ThemeIcon-81f2f066.js +0 -1932
- data/entry_types/scrolled/package/frontend/Viewer-cdc549cc.js +0 -147
- data/entry_types/scrolled/package/frontend/Wavesurfer-1cdc3925.js +0 -313
- data/entry_types/scrolled/package/frontend/components-96660ffd.js +0 -3803
- data/entry_types/scrolled/package/frontend/inherits-539844a6.js +0 -99
- data/entry_types/scrolled/package/frontend/useContentElementEditorState-77fe6c79.js +0 -51
- data/entry_types/scrolled/package/widgets/excursionDialog.css +0 -1
- data/entry_types/scrolled/package/widgets/excursionDialog.js +0 -109
- data/lib/generators/pageflow/resque/templates/resque_enqueue_after_commit_patch.rb +0 -25
- data/package/vendor/jquery.minicolors.js +0 -1108
|
@@ -1,100 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { ac as Atmo, ad as AtmoContext, A as AtmoProvider, aa as AudioPlayer, D as ContentElementAttributesProvider, H as ContentElementEditorCommandEmitterContext, K as ContentElementLifecycleContext, U as EditableTable, h as EditableText, $ as FloatingPortalRootProvider, a4 as Image, I as InlineFileRights, a5 as MediaPlayer, af as OnScreenObserverRootProvider, P as PlayerEventContextDataProvider, R as RootProviders, ai as SectionThumbnail, S as SelectableWidget, ah as StandaloneSectionThumbnail, T as Text, V as ThirdPartyOptIn, X as ThirdPartyOptOutInfo, a9 as VideoPlayer, W as Widget, a3 as contentElementWidthName, k as contentElementWidths, x as frontend, a1 as getAvailableTransitionNames, a6 as getInitialPlayerState, a0 as getTransitionNames, a2 as paletteColor, a7 as playerStateReducer, ab as processSources, v as registerConsentVendors, ae as useAtmo, z as useAudioFocus, B as useBackgroundFile, Y as useConsentRequested, l as useContentElementConfigurationUpdate, G as useContentElementEditorCommandSubscription, J as useContentElementLifecycle, M as useCurrentChapter, f as useDarkBackground, Z as useFloatingPortalRoot, N as useIsStaticPreview, q as useIsomorphicLayoutEffect, n as useMediaMuted, ag as useOnScreen, O as useOnUnmuteMedia, a8 as usePlayerState, Q as usePortraitOrientation, s as utils } from './FloatingPortalRootProvider-51914be7.js';
|
|
3
|
-
import 'core-js/modules/es.symbol';
|
|
4
|
-
import 'core-js/modules/es.symbol.description';
|
|
5
|
-
import 'core-js/modules/es.symbol.async-iterator';
|
|
6
|
-
import 'core-js/modules/es.symbol.has-instance';
|
|
7
|
-
import 'core-js/modules/es.symbol.is-concat-spreadable';
|
|
8
|
-
import 'core-js/modules/es.symbol.iterator';
|
|
9
|
-
import 'core-js/modules/es.symbol.match';
|
|
10
|
-
import 'core-js/modules/es.symbol.replace';
|
|
11
|
-
import 'core-js/modules/es.symbol.search';
|
|
12
|
-
import 'core-js/modules/es.symbol.species';
|
|
13
|
-
import 'core-js/modules/es.symbol.split';
|
|
14
|
-
import 'core-js/modules/es.symbol.to-primitive';
|
|
15
|
-
import 'core-js/modules/es.symbol.to-string-tag';
|
|
16
|
-
import 'core-js/modules/es.symbol.unscopables';
|
|
17
|
-
import 'core-js/modules/es.array.concat';
|
|
18
|
-
import 'core-js/modules/es.array.fill';
|
|
19
|
-
import 'core-js/modules/es.array.find';
|
|
20
|
-
import 'core-js/modules/es.array.from';
|
|
21
|
-
import 'core-js/modules/es.array.iterator';
|
|
22
|
-
import 'core-js/modules/es.json.to-string-tag';
|
|
23
|
-
import 'core-js/modules/es.map';
|
|
24
|
-
import 'core-js/modules/es.math.to-string-tag';
|
|
25
|
-
import 'core-js/modules/es.object.assign';
|
|
26
|
-
import 'core-js/modules/es.object.to-string';
|
|
27
|
-
import 'core-js/modules/es.promise';
|
|
28
|
-
import 'core-js/modules/es.promise.finally';
|
|
29
|
-
import 'core-js/modules/es.set';
|
|
30
|
-
import 'core-js/modules/es.string.iterator';
|
|
31
|
-
import 'core-js/modules/es.string.starts-with';
|
|
32
|
-
import 'core-js/modules/esnext.aggregate-error';
|
|
33
|
-
import 'core-js/modules/esnext.map.delete-all';
|
|
34
|
-
import 'core-js/modules/esnext.map.every';
|
|
35
|
-
import 'core-js/modules/esnext.map.filter';
|
|
36
|
-
import 'core-js/modules/esnext.map.find';
|
|
37
|
-
import 'core-js/modules/esnext.map.find-key';
|
|
38
|
-
import 'core-js/modules/esnext.map.from';
|
|
39
|
-
import 'core-js/modules/esnext.map.group-by';
|
|
40
|
-
import 'core-js/modules/esnext.map.includes';
|
|
41
|
-
import 'core-js/modules/esnext.map.key-by';
|
|
42
|
-
import 'core-js/modules/esnext.map.key-of';
|
|
43
|
-
import 'core-js/modules/esnext.map.map-keys';
|
|
44
|
-
import 'core-js/modules/esnext.map.map-values';
|
|
45
|
-
import 'core-js/modules/esnext.map.merge';
|
|
46
|
-
import 'core-js/modules/esnext.map.of';
|
|
47
|
-
import 'core-js/modules/esnext.map.reduce';
|
|
48
|
-
import 'core-js/modules/esnext.map.some';
|
|
49
|
-
import 'core-js/modules/esnext.map.update';
|
|
50
|
-
import 'core-js/modules/esnext.promise.all-settled';
|
|
51
|
-
import 'core-js/modules/esnext.promise.any';
|
|
52
|
-
import 'core-js/modules/esnext.promise.try';
|
|
53
|
-
import 'core-js/modules/esnext.set.add-all';
|
|
54
|
-
import 'core-js/modules/esnext.set.delete-all';
|
|
55
|
-
import 'core-js/modules/esnext.set.difference';
|
|
56
|
-
import 'core-js/modules/esnext.set.every';
|
|
57
|
-
import 'core-js/modules/esnext.set.filter';
|
|
58
|
-
import 'core-js/modules/esnext.set.find';
|
|
59
|
-
import 'core-js/modules/esnext.set.from';
|
|
60
|
-
import 'core-js/modules/esnext.set.intersection';
|
|
61
|
-
import 'core-js/modules/esnext.set.is-disjoint-from';
|
|
62
|
-
import 'core-js/modules/esnext.set.is-subset-of';
|
|
63
|
-
import 'core-js/modules/esnext.set.is-superset-of';
|
|
64
|
-
import 'core-js/modules/esnext.set.join';
|
|
65
|
-
import 'core-js/modules/esnext.set.map';
|
|
66
|
-
import 'core-js/modules/esnext.set.of';
|
|
67
|
-
import 'core-js/modules/esnext.set.reduce';
|
|
68
|
-
import 'core-js/modules/esnext.set.some';
|
|
69
|
-
import 'core-js/modules/esnext.set.symmetric-difference';
|
|
70
|
-
import 'core-js/modules/esnext.set.union';
|
|
71
|
-
import 'core-js/modules/esnext.symbol.dispose';
|
|
72
|
-
import 'core-js/modules/esnext.symbol.observable';
|
|
73
|
-
import 'core-js/modules/esnext.symbol.pattern-match';
|
|
74
|
-
import 'core-js/modules/web.dom-collections.iterator';
|
|
75
|
-
import 'regenerator-runtime/runtime.js';
|
|
76
|
-
import { browser, events, consent, features } from 'pageflow/frontend';
|
|
1
|
+
import { browser, events, features, consent } from 'pageflow/frontend';
|
|
77
2
|
import React, { useRef, useState, useEffect, useCallback, useMemo, Suspense, useContext } from 'react';
|
|
78
3
|
import ReactDOM from 'react-dom';
|
|
79
|
-
import { _ as _slicedToArray, m as useSectionsWithChapter, t as useEntryStructure, v as getFileUrlTemplateHost, u as useI18n, g as useTheme, b as _defineProperty, a as _objectSpread2, T as ThemeIcon, o as _toConsumableArray, e as _objectWithoutProperties, w as useAvailableQualities, x as setupI18n } from './ThemeIcon-81f2f066.js';
|
|
80
|
-
export { L as LocaleProvider, T as ThemeIcon, x as setupI18n, l as useAdditionalSeedData, y as useChapters, z as useCredits, A as useCutOff, B as useDarkWidgets, c as useEntryMetadata, r as useEntryStateDispatch, C as useEntryTranslations, j as useFile, D as useFileRights, i as useFileWithInlineRights, u as useI18n, F as useLegalInfo, J as useLocale, G as useMainChapters, H as useShareProviders, I as useShareUrl, g as useTheme } from './ThemeIcon-81f2f066.js';
|
|
81
4
|
import classNames from 'classnames';
|
|
82
|
-
import { a as
|
|
83
|
-
export { C as
|
|
84
|
-
|
|
5
|
+
import { e as extensible, u as useScrollToTarget, a as useActiveExcursion, M as MainStorylineCoverageProvider, b as MainStorylineActivity, c as useMainStorylineCoverage, d as api, p as provideExtensions, f as useDarkBackground, E as EditableText, g as useContentElementAttributes, w as widths, L as Link, T as Text } from './FloatingPortalRootProvider-58189220.js';
|
|
6
|
+
export { C as ContentElementAttributesProvider, i as ContentElementLifecycleContext, k as ContentElementViewTimelineContext, E as EditableText, F as FloatingPortalRootProvider, L as Link, b as MainStorylineActivity, O as OnScreenObserverRootProvider, T as Text, r as contentElementWidthName, w as contentElementWidths, d as frontend, l as getViewTimelineProgress, q as paletteColor, h as useContentElementLifecycle, j as useContentElementViewTimelineProgress, f as useDarkBackground, o as useFloatingPortalRoot, m as useIsStaticPreview, s as useOnScreen, n as useStorylineActivity } from './FloatingPortalRootProvider-58189220.js';
|
|
7
|
+
export { u as useDelayedBoolean } from './useDelayedBoolean-a387d85b.js';
|
|
8
|
+
import { E as EventContextDataProvider, C as ConnectedSection, g as getEventObject, u as useCurrentSectionIndexState, a as usePostMessageListener, c as contentStyles, A as AtmoProvider, W as Widget, S as SelectableWidget, i as isBlankEditableTextValue, b as useContentElementConfigurationUpdate, d as usePrevious, I as InlineFileRights, e as useFocusOutlineVisible, f as useTextTracks, h as useMediaMuted, j as useVideoQualitySetting, k as useIsomorphicLayoutEffect, l as frontendStyles, s as styles$e, F as Fullscreen, m as utils, n as styles$f, r as registerVendors, R as RootProviders } from './Placeholder.module-bf0966b4.js';
|
|
9
|
+
export { G as AiIndicatorIcon, $ as Atmo, a0 as AtmoContext, A as AtmoProvider, Z as AudioPlayer, v as ContentElementEditorCommandEmitterContext, z as EditableTable, Q as Image, I as InlineFileRights, T as MediaPlayer, P as PlayerEventContextDataProvider, R as RootProviders, J as SectionIntersectionObserver, a3 as SectionThumbnail, S as SelectableWidget, a2 as StandaloneSectionThumbnail, O as ThirdPartyOptIn, B as ThirdPartyOptOutInfo, Y as VideoPlayer, W as Widget, N as getAppearanceSectionScopeName, M as getAvailableTransitionNames, U as getInitialPlayerState, L as getTransitionNames, V as playerStateReducer, _ as processSources, r as registerConsentVendors, H as useAiIndicatorLabel, a1 as useAtmo, o as useAudioFocus, p as useBackgroundFile, D as useConsentRequested, b as useContentElementConfigurationUpdate, t as useContentElementEditorCommandSubscription, w as useCurrentChapter, k as useIsomorphicLayoutEffect, h as useMediaMuted, x as useOnUnmuteMedia, X as usePlayerState, y as usePortraitOrientation, K as usePrivacyLink, q as useWidgetConfigurationUpdate, m as utils } from './Placeholder.module-bf0966b4.js';
|
|
85
10
|
import 'backbone-events-standalone';
|
|
86
|
-
import '
|
|
87
|
-
|
|
88
|
-
import 'slugify';
|
|
11
|
+
import { useEntryStructure, useActiveWidgets, getFileUrlTemplateHost, useTheme, useAvailableQualities } from 'pageflow-scrolled/entryState';
|
|
12
|
+
export { useAdditionalSeedData, useChapters, useCredits, useCutOff, useDarkWidgets, useEntryMetadata, useEntryStateDispatch, useEntryTranslations, useFile, useFileRights, useFileWithInlineRights, useLegalInfo, useMainChapters, useShareProviders, useShareUrl, useTheme } from 'pageflow-scrolled/entryState';
|
|
89
13
|
import 'i18n-js';
|
|
14
|
+
import { u as useI18n, s as setupI18n } from './i18n-e06cac14.js';
|
|
15
|
+
export { L as LocaleProvider, s as setupI18n, u as useI18n, a as useLocale } from './i18n-e06cac14.js';
|
|
90
16
|
import 'striptags';
|
|
91
17
|
import Measure from 'react-measure';
|
|
92
|
-
export { P as PhonePlatformContext } from './PhonePlatformContext-
|
|
18
|
+
export { P as PhonePlatformContext } from './PhonePlatformContext-9da43797.js';
|
|
19
|
+
import { u as useContentElementEditorState } from './useContentElementEditorState-a084912e.js';
|
|
20
|
+
export { C as ContentElementEditorStateContext, u as useContentElementEditorState } from './useContentElementEditorState-a084912e.js';
|
|
21
|
+
import { T as ThemeIcon } from './ThemeIcon-f6cb3a8f.js';
|
|
22
|
+
export { T as ThemeIcon } from './ThemeIcon-f6cb3a8f.js';
|
|
23
|
+
import PropTypes from 'prop-types';
|
|
93
24
|
import { DraggableCore } from 'react-draggable';
|
|
94
|
-
export { T as ToggleFullscreenCornerButton } from './ToggleFullscreenCornerButton-
|
|
95
|
-
export { F as FullscreenViewer } from './index-
|
|
25
|
+
export { T as ToggleFullscreenCornerButton } from './ToggleFullscreenCornerButton-61c25224.js';
|
|
26
|
+
export { F as FullscreenViewer } from './index-de2b418d.js';
|
|
96
27
|
import { useI18n as useI18n$1, useTheme as useTheme$1 } from 'pageflow-scrolled/frontend';
|
|
97
|
-
export { u as usePhonePlatform } from './usePhonePlatform-
|
|
28
|
+
export { u as usePhonePlatform } from './usePhonePlatform-4ecb96d4.js';
|
|
98
29
|
import invert from 'invert-color';
|
|
99
30
|
|
|
100
31
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
@@ -115,37 +46,59 @@ if (browser.agent.matchesSafari() && window.parent !== window) {
|
|
|
115
46
|
}
|
|
116
47
|
require('intersection-observer');
|
|
117
48
|
|
|
118
|
-
// Make sure we're in a Browser-like environment before importing
|
|
119
|
-
// This prevents
|
|
49
|
+
// Make sure we're in a Browser-like environment before importing the
|
|
50
|
+
// polyfill. This prevents it from being imported in a Node test
|
|
51
|
+
// environment.
|
|
120
52
|
if (typeof window !== 'undefined') {
|
|
121
|
-
require('whatwg-fetch');
|
|
122
53
|
require('scroll-timeline');
|
|
123
54
|
}
|
|
124
55
|
|
|
56
|
+
var styles = {"wrapper":"Chapter-module_wrapper__3Pdly"};
|
|
57
|
+
|
|
58
|
+
var _jsxFileName = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Chapter.js";
|
|
125
59
|
function Chapter(props) {
|
|
126
60
|
return /*#__PURE__*/React.createElement("div", {
|
|
127
|
-
id: props.chapterSlug
|
|
61
|
+
id: props.chapterSlug,
|
|
62
|
+
className: styles.wrapper,
|
|
63
|
+
__self: this,
|
|
64
|
+
__source: {
|
|
65
|
+
fileName: _jsxFileName,
|
|
66
|
+
lineNumber: 10,
|
|
67
|
+
columnNumber: 5
|
|
68
|
+
}
|
|
128
69
|
}, renderSections(props.sections, props.currentSectionIndex, props.setCurrentSection));
|
|
129
70
|
}
|
|
130
71
|
function renderSections(sections, currentSectionIndex, setCurrentSection) {
|
|
131
|
-
function
|
|
72
|
+
function onActivate(section) {
|
|
132
73
|
setCurrentSection(section);
|
|
133
74
|
}
|
|
134
|
-
return sections.map(
|
|
75
|
+
return sections.map(section => {
|
|
135
76
|
return /*#__PURE__*/React.createElement(EventContextDataProvider, {
|
|
136
77
|
key: section.permaId,
|
|
137
78
|
section: section,
|
|
138
|
-
sectionsCount: sections.length
|
|
79
|
+
sectionsCount: sections.length,
|
|
80
|
+
__self: this,
|
|
81
|
+
__source: {
|
|
82
|
+
fileName: _jsxFileName,
|
|
83
|
+
lineNumber: 27,
|
|
84
|
+
columnNumber: 7
|
|
85
|
+
}
|
|
139
86
|
}, /*#__PURE__*/React.createElement(ConnectedSection, {
|
|
140
87
|
state: section.sectionIndex > currentSectionIndex ? 'below' : section.sectionIndex < currentSectionIndex ? 'above' : 'active',
|
|
141
|
-
onActivate:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
88
|
+
onActivate: () => onActivate(section),
|
|
89
|
+
section: section,
|
|
90
|
+
__self: this,
|
|
91
|
+
__source: {
|
|
92
|
+
fileName: _jsxFileName,
|
|
93
|
+
lineNumber: 28,
|
|
94
|
+
columnNumber: 9
|
|
95
|
+
}
|
|
145
96
|
}));
|
|
146
97
|
});
|
|
147
98
|
}
|
|
148
99
|
|
|
100
|
+
var _jsxFileName$1 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/VhFix.js";
|
|
101
|
+
|
|
149
102
|
// InApp browsers on iOS (e.g. Twitter) report the height of the
|
|
150
103
|
// initial viewport as 100vh. Once the page is scrolled, browser
|
|
151
104
|
// toolbars are hidden, the viewport becomes larger and elements with
|
|
@@ -164,47 +117,54 @@ function renderSections(sections, currentSectionIndex, setCurrentSection) {
|
|
|
164
117
|
// On orientation change, we do want to update `--vh`, though. We
|
|
165
118
|
// therefore do update it when the inner height of the window
|
|
166
119
|
// decreases by more than 30%.
|
|
167
|
-
function VhFix(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
setHeight = _useState2[1];
|
|
174
|
-
useEffect(function () {
|
|
120
|
+
function VhFix({
|
|
121
|
+
children
|
|
122
|
+
}) {
|
|
123
|
+
const probeRef = useRef();
|
|
124
|
+
const [height, setHeight] = useState();
|
|
125
|
+
useEffect(() => {
|
|
175
126
|
if (!browser.has('ios platform')) {
|
|
176
127
|
return;
|
|
177
128
|
}
|
|
178
129
|
window.addEventListener('resize', update);
|
|
179
|
-
return
|
|
180
|
-
return window.removeEventListener('resize', update);
|
|
181
|
-
};
|
|
130
|
+
return () => window.removeEventListener('resize', update);
|
|
182
131
|
function update() {
|
|
183
|
-
setHeight(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
});
|
|
189
|
-
});
|
|
132
|
+
setHeight(previousHeight => getHeight({
|
|
133
|
+
windowHeight: window.innerHeight,
|
|
134
|
+
probeHeight: probeRef.current.clientHeight,
|
|
135
|
+
previousHeight
|
|
136
|
+
}));
|
|
190
137
|
}
|
|
191
138
|
}, []);
|
|
192
139
|
return /*#__PURE__*/React.createElement("div", {
|
|
193
140
|
style: height && {
|
|
194
|
-
'--vh':
|
|
141
|
+
'--vh': `${height / 100}px`
|
|
142
|
+
},
|
|
143
|
+
__self: this,
|
|
144
|
+
__source: {
|
|
145
|
+
fileName: _jsxFileName$1,
|
|
146
|
+
lineNumber: 44,
|
|
147
|
+
columnNumber: 5
|
|
195
148
|
}
|
|
196
149
|
}, /*#__PURE__*/React.createElement("div", {
|
|
197
150
|
style: {
|
|
198
151
|
height: '100vh',
|
|
199
152
|
position: 'absolute'
|
|
200
153
|
},
|
|
201
|
-
ref: probeRef
|
|
154
|
+
ref: probeRef,
|
|
155
|
+
__self: this,
|
|
156
|
+
__source: {
|
|
157
|
+
fileName: _jsxFileName$1,
|
|
158
|
+
lineNumber: 45,
|
|
159
|
+
columnNumber: 7
|
|
160
|
+
}
|
|
202
161
|
}), children);
|
|
203
162
|
}
|
|
204
|
-
function getHeight(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
163
|
+
function getHeight({
|
|
164
|
+
windowHeight,
|
|
165
|
+
probeHeight,
|
|
166
|
+
previousHeight
|
|
167
|
+
}) {
|
|
208
168
|
if (probeHeight < windowHeight || previousHeight) {
|
|
209
169
|
if (!previousHeight || windowHeight > previousHeight || windowHeight < previousHeight * 0.7) {
|
|
210
170
|
return windowHeight;
|
|
@@ -214,211 +174,369 @@ function getHeight(_ref2) {
|
|
|
214
174
|
}
|
|
215
175
|
}
|
|
216
176
|
|
|
217
|
-
function
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
setActiveExcursionId = _useState2[1];
|
|
222
|
-
useEffect(function () {
|
|
223
|
-
function handleHashChange(event) {
|
|
224
|
-
var _window$history$state;
|
|
225
|
-
var slug = window.location.hash.slice(1);
|
|
226
|
-
var excursion = entryStructure.excursions.find(function (chapter) {
|
|
227
|
-
return chapter.chapterSlug === slug;
|
|
228
|
-
});
|
|
229
|
-
if (excursion && !((_window$history$state = window.history.state) === null || _window$history$state === void 0 ? void 0 : _window$history$state.excursionReturnHash)) {
|
|
230
|
-
window.history.replaceState({
|
|
231
|
-
excursionReturnHash: '#' + event.oldURL.split('#')[1]
|
|
232
|
-
}, null);
|
|
233
|
-
}
|
|
234
|
-
setActiveExcursionId(excursion === null || excursion === void 0 ? void 0 : excursion.id);
|
|
235
|
-
}
|
|
236
|
-
window.addEventListener('hashchange', handleHashChange);
|
|
237
|
-
return function () {
|
|
238
|
-
return window.removeEventListener('hashchange', handleHashChange);
|
|
239
|
-
};
|
|
240
|
-
}, [entryStructure]);
|
|
241
|
-
var activateExcursionOfSection = useCallback(function (_ref) {
|
|
242
|
-
var id = _ref.id;
|
|
243
|
-
var excursion = entryStructure.excursions.find(function (chapter) {
|
|
244
|
-
return chapter.sections.find(function (section) {
|
|
245
|
-
return section.id === id;
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
if (excursion) {
|
|
249
|
-
var _window$history$state2;
|
|
250
|
-
window.history.replaceState({
|
|
251
|
-
excursionReturnHash: ((_window$history$state2 = window.history.state) === null || _window$history$state2 === void 0 ? void 0 : _window$history$state2.excursionReturnHash) || window.location.hash
|
|
252
|
-
}, null, '#' + excursion.chapterSlug);
|
|
253
|
-
}
|
|
254
|
-
setActiveExcursionId(excursion === null || excursion === void 0 ? void 0 : excursion.id);
|
|
255
|
-
}, [entryStructure]);
|
|
256
|
-
var returnFromExcursion = useCallback(function () {
|
|
257
|
-
var _window$history$state3;
|
|
258
|
-
setActiveExcursionId(undefined);
|
|
259
|
-
if ((_window$history$state3 = window.history.state) === null || _window$history$state3 === void 0 ? void 0 : _window$history$state3.excursionReturnHash) {
|
|
260
|
-
var _window$history$state4;
|
|
261
|
-
window.history.replaceState(null, null, (_window$history$state4 = window.history.state) === null || _window$history$state4 === void 0 ? void 0 : _window$history$state4.excursionReturnHash);
|
|
262
|
-
}
|
|
263
|
-
}, []);
|
|
264
|
-
var activeExcursion = useMemo(function () {
|
|
265
|
-
return entryStructure.excursions.find(function (excursion) {
|
|
266
|
-
return excursion.id === activeExcursionId;
|
|
267
|
-
});
|
|
268
|
-
}, [entryStructure, activeExcursionId]);
|
|
269
|
-
return {
|
|
270
|
-
activeExcursion: activeExcursion,
|
|
271
|
-
activateExcursionOfSection: activateExcursionOfSection,
|
|
272
|
-
returnFromExcursion: returnFromExcursion
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
function useSectionChangeEvents(currentSectionIndex) {
|
|
277
|
-
var previousSectionIndex = usePrevious(currentSectionIndex);
|
|
278
|
-
var sections = useSectionsWithChapter();
|
|
279
|
-
useEffect(function () {
|
|
280
|
-
if (previousSectionIndex !== currentSectionIndex) {
|
|
177
|
+
function useSectionChangeEvents(events) {
|
|
178
|
+
const previousSectionPermaIdRef = useRef();
|
|
179
|
+
return useCallback((section, sectionsCount) => {
|
|
180
|
+
if (previousSectionPermaIdRef.current !== (section === null || section === void 0 ? void 0 : section.permaId)) {
|
|
281
181
|
events.trigger('page:change', getEventObject({
|
|
282
|
-
section
|
|
283
|
-
sectionsCount
|
|
182
|
+
section,
|
|
183
|
+
sectionsCount
|
|
284
184
|
}));
|
|
185
|
+
previousSectionPermaIdRef.current = section === null || section === void 0 ? void 0 : section.permaId;
|
|
285
186
|
}
|
|
286
|
-
});
|
|
187
|
+
}, [events]);
|
|
287
188
|
}
|
|
288
189
|
|
|
289
|
-
|
|
190
|
+
const sectionChangeMessagePoster = (sectionIndex, excursionId) => {
|
|
290
191
|
if (window.parent !== window) {
|
|
291
192
|
window.parent.postMessage({
|
|
292
193
|
type: 'CHANGE_SECTION',
|
|
293
194
|
payload: {
|
|
294
|
-
|
|
195
|
+
sectionIndex,
|
|
196
|
+
excursionId
|
|
295
197
|
}
|
|
296
198
|
}, window.location.origin);
|
|
297
199
|
}
|
|
298
200
|
};
|
|
299
201
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
window.history.replaceState(null, null, window.location.href.split('#')[0]);
|
|
317
|
-
}
|
|
202
|
+
function useChapterSlugUpdater() {
|
|
203
|
+
const windowLoadedRef = useRef(false);
|
|
204
|
+
useWindowLoadTracking(windowLoadedRef);
|
|
205
|
+
const updateChapterSlug = useCallback(section => {
|
|
206
|
+
if (!windowLoadedRef.current) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (section.sectionIndex > 0) {
|
|
210
|
+
window.history.replaceState(null, null, '#' + section.chapter.chapterSlug);
|
|
211
|
+
} else {
|
|
212
|
+
window.history.replaceState(null, null, window.location.href.split('#')[0]);
|
|
213
|
+
}
|
|
214
|
+
}, []);
|
|
215
|
+
const updateExcursionChapterSlug = useCallback(section => {
|
|
216
|
+
if (!windowLoadedRef.current) {
|
|
217
|
+
return;
|
|
318
218
|
}
|
|
219
|
+
window.history.replaceState(null, null, '#' + section.chapter.chapterSlug);
|
|
220
|
+
}, []);
|
|
221
|
+
return {
|
|
222
|
+
updateChapterSlug,
|
|
223
|
+
updateExcursionChapterSlug
|
|
319
224
|
};
|
|
320
|
-
|
|
225
|
+
}
|
|
226
|
+
function useWindowLoadTracking(windowLoadedRef) {
|
|
227
|
+
useEffect(() => {
|
|
228
|
+
if (document.readyState === 'complete') {
|
|
229
|
+
windowLoadedRef.current = true;
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const handleLoad = () => {
|
|
233
|
+
windowLoadedRef.current = true;
|
|
234
|
+
};
|
|
235
|
+
window.addEventListener('load', handleLoad);
|
|
236
|
+
return () => window.removeEventListener('load', handleLoad);
|
|
237
|
+
}, [windowLoadedRef]);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
var _jsxFileName$2 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Content.js";
|
|
241
|
+
const Content = extensible('Content', function Content(props) {
|
|
242
|
+
const entryStructure = useEntryStructure();
|
|
243
|
+
const scrollToTarget = useScrollToTarget();
|
|
244
|
+
const {
|
|
245
|
+
activeExcursion,
|
|
246
|
+
activateExcursionOfSection,
|
|
247
|
+
returnFromExcursion
|
|
248
|
+
} = useActiveExcursion();
|
|
249
|
+
const [currentSectionIndex, setCurrentSectionIndexState] = useCurrentSectionIndexState();
|
|
250
|
+
const [currentExcursionSectionIndex, setCurrentExcursionSectionIndex] = useState(0);
|
|
251
|
+
const {
|
|
252
|
+
updateChapterSlug,
|
|
253
|
+
updateExcursionChapterSlug
|
|
254
|
+
} = useChapterSlugUpdater();
|
|
255
|
+
const triggerSectionChange = useSectionChangeEvents(events);
|
|
256
|
+
const setCurrentSection = useCallback(section => {
|
|
321
257
|
sectionChangeMessagePoster(section.sectionIndex);
|
|
322
258
|
setCurrentSectionIndexState(section.sectionIndex);
|
|
323
259
|
updateChapterSlug(section);
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
260
|
+
triggerSectionChange(section, entryStructure.mainSectionsCount);
|
|
261
|
+
}, [setCurrentSectionIndexState, updateChapterSlug, triggerSectionChange, entryStructure.mainSectionsCount]);
|
|
262
|
+
const setCurrentExcursionSection = useCallback(section => {
|
|
263
|
+
sectionChangeMessagePoster(section.sectionIndex, section.chapter.id);
|
|
264
|
+
setCurrentExcursionSectionIndex(section.sectionIndex);
|
|
265
|
+
updateExcursionChapterSlug(section);
|
|
266
|
+
triggerSectionChange(section, activeExcursion.sections.length);
|
|
267
|
+
}, [updateExcursionChapterSlug, triggerSectionChange, activeExcursion]);
|
|
268
|
+
const receiveMessage = useCallback(data => {
|
|
327
269
|
if (data.type === 'SCROLL_TO_SECTION') {
|
|
328
270
|
activateExcursionOfSection({
|
|
329
271
|
id: data.payload.id
|
|
330
272
|
});
|
|
331
273
|
scrollToTarget({
|
|
332
274
|
id: data.payload.id,
|
|
333
|
-
align: data.payload.align
|
|
275
|
+
align: data.payload.align,
|
|
276
|
+
ifNeeded: data.payload.ifNeeded,
|
|
277
|
+
behavior: data.payload.behavior
|
|
334
278
|
});
|
|
335
279
|
}
|
|
336
280
|
}, [scrollToTarget, activateExcursionOfSection]);
|
|
337
281
|
usePostMessageListener(receiveMessage);
|
|
338
282
|
return /*#__PURE__*/React.createElement("div", {
|
|
339
283
|
className: contentStyles.Content,
|
|
340
|
-
id: "goToContent"
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
284
|
+
id: "goToContent",
|
|
285
|
+
__self: this,
|
|
286
|
+
__source: {
|
|
287
|
+
fileName: _jsxFileName$2,
|
|
288
|
+
lineNumber: 67,
|
|
289
|
+
columnNumber: 5
|
|
290
|
+
}
|
|
291
|
+
}, /*#__PURE__*/React.createElement(VhFix, {
|
|
292
|
+
__self: this,
|
|
293
|
+
__source: {
|
|
294
|
+
fileName: _jsxFileName$2,
|
|
295
|
+
lineNumber: 68,
|
|
296
|
+
columnNumber: 7
|
|
297
|
+
}
|
|
298
|
+
}, /*#__PURE__*/React.createElement(MainStorylineCoverageProvider, {
|
|
299
|
+
__self: this,
|
|
300
|
+
__source: {
|
|
301
|
+
fileName: _jsxFileName$2,
|
|
302
|
+
lineNumber: 69,
|
|
303
|
+
columnNumber: 9
|
|
344
304
|
}
|
|
345
|
-
}
|
|
305
|
+
}, /*#__PURE__*/React.createElement(AtmoProvider, {
|
|
306
|
+
__self: this,
|
|
307
|
+
__source: {
|
|
308
|
+
fileName: _jsxFileName$2,
|
|
309
|
+
lineNumber: 70,
|
|
310
|
+
columnNumber: 11
|
|
311
|
+
}
|
|
312
|
+
}, renderMainStoryline(entryStructure.main, activeExcursion, currentSectionIndex, setCurrentSection), /*#__PURE__*/React.createElement(ActiveExcursion, {
|
|
313
|
+
excursion: activeExcursion,
|
|
314
|
+
currentExcursionSectionIndex: currentExcursionSectionIndex,
|
|
315
|
+
setCurrentExcursionSection: setCurrentExcursionSection,
|
|
316
|
+
onClose: () => {
|
|
317
|
+
returnFromExcursion();
|
|
318
|
+
sectionChangeMessagePoster(currentSectionIndex);
|
|
319
|
+
},
|
|
320
|
+
__self: this,
|
|
321
|
+
__source: {
|
|
322
|
+
fileName: _jsxFileName$2,
|
|
323
|
+
lineNumber: 75,
|
|
324
|
+
columnNumber: 13
|
|
325
|
+
}
|
|
326
|
+
})))));
|
|
346
327
|
});
|
|
347
|
-
function
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
328
|
+
function renderMainStoryline(chapters, activeExcursion, currentSectionIndex, setCurrentSection) {
|
|
329
|
+
return /*#__PURE__*/React.createElement(Widget, {
|
|
330
|
+
role: "mainStoryline",
|
|
331
|
+
props: {
|
|
332
|
+
activeExcursion
|
|
333
|
+
},
|
|
334
|
+
renderFallback: ({
|
|
335
|
+
children
|
|
336
|
+
}) => children,
|
|
337
|
+
__self: this,
|
|
338
|
+
__source: {
|
|
339
|
+
fileName: _jsxFileName$2,
|
|
340
|
+
lineNumber: 93,
|
|
341
|
+
columnNumber: 5
|
|
342
|
+
}
|
|
343
|
+
}, /*#__PURE__*/React.createElement(MainStorylineActivity, {
|
|
344
|
+
activeExcursion: activeExcursion,
|
|
345
|
+
__self: this,
|
|
346
|
+
__source: {
|
|
347
|
+
fileName: _jsxFileName$2,
|
|
348
|
+
lineNumber: 96,
|
|
349
|
+
columnNumber: 7
|
|
350
|
+
}
|
|
351
|
+
}, renderChapters(chapters, currentSectionIndex, setCurrentSection)), /*#__PURE__*/React.createElement(Widget, {
|
|
352
|
+
role: "footer",
|
|
353
|
+
__self: this,
|
|
354
|
+
__source: {
|
|
355
|
+
fileName: _jsxFileName$2,
|
|
356
|
+
lineNumber: 99,
|
|
357
|
+
columnNumber: 7
|
|
358
|
+
}
|
|
359
|
+
}));
|
|
360
|
+
}
|
|
361
|
+
function ActiveExcursion({
|
|
362
|
+
excursion,
|
|
363
|
+
currentExcursionSectionIndex,
|
|
364
|
+
setCurrentExcursionSection,
|
|
365
|
+
onClose
|
|
366
|
+
}) {
|
|
367
|
+
const {
|
|
368
|
+
setMainStorylineCovered
|
|
369
|
+
} = useMainStorylineCoverage();
|
|
370
|
+
if (!excursion) {
|
|
371
|
+
return null;
|
|
357
372
|
}
|
|
373
|
+
return /*#__PURE__*/React.createElement(Widget, {
|
|
374
|
+
role: "excursion",
|
|
375
|
+
props: {
|
|
376
|
+
excursion,
|
|
377
|
+
onClose: () => {
|
|
378
|
+
onClose();
|
|
379
|
+
setMainStorylineCovered(false);
|
|
380
|
+
},
|
|
381
|
+
setIsCoveringBackground: setMainStorylineCovered
|
|
382
|
+
},
|
|
383
|
+
__self: this,
|
|
384
|
+
__source: {
|
|
385
|
+
fileName: _jsxFileName$2,
|
|
386
|
+
lineNumber: 117,
|
|
387
|
+
columnNumber: 5
|
|
388
|
+
}
|
|
389
|
+
}, renderChapters([excursion], currentExcursionSectionIndex, setCurrentExcursionSection));
|
|
358
390
|
}
|
|
359
391
|
function renderChapters(chapters, currentSectionIndex, setCurrentSection) {
|
|
360
|
-
return chapters.map(
|
|
392
|
+
return chapters.map((chapter, index) => {
|
|
361
393
|
return /*#__PURE__*/React.createElement(Chapter, {
|
|
362
394
|
key: index,
|
|
363
395
|
chapterSlug: chapter.chapterSlug,
|
|
364
396
|
permaId: chapter.permaId,
|
|
365
397
|
sections: chapter.sections,
|
|
366
398
|
currentSectionIndex: currentSectionIndex,
|
|
367
|
-
setCurrentSection: setCurrentSection
|
|
399
|
+
setCurrentSection: setCurrentSection,
|
|
400
|
+
__self: this,
|
|
401
|
+
__source: {
|
|
402
|
+
fileName: _jsxFileName$2,
|
|
403
|
+
lineNumber: 138,
|
|
404
|
+
columnNumber: 7
|
|
405
|
+
}
|
|
368
406
|
});
|
|
369
407
|
});
|
|
370
408
|
}
|
|
371
409
|
|
|
372
|
-
var
|
|
373
|
-
|
|
374
|
-
|
|
410
|
+
var _jsxFileName$3 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/WidgetPresenceWrapper.js";
|
|
411
|
+
function WidgetPresenceWrapper({
|
|
412
|
+
children
|
|
413
|
+
}) {
|
|
414
|
+
const widgets = useActiveWidgets();
|
|
415
|
+
return /*#__PURE__*/React.createElement(PresenceProviders, {
|
|
416
|
+
widgets: widgets,
|
|
417
|
+
__self: this,
|
|
418
|
+
__source: {
|
|
419
|
+
fileName: _jsxFileName$3,
|
|
420
|
+
lineNumber: 9,
|
|
421
|
+
columnNumber: 5
|
|
422
|
+
}
|
|
423
|
+
}, children);
|
|
424
|
+
}
|
|
425
|
+
function PresenceProviders({
|
|
426
|
+
widgets,
|
|
427
|
+
children
|
|
428
|
+
}) {
|
|
429
|
+
if (widgets.length === 0) {
|
|
430
|
+
return children;
|
|
431
|
+
}
|
|
432
|
+
const [first, ...rest] = widgets;
|
|
433
|
+
const Provider = api.widgetTypes.getPresenceProvider(first.typeName);
|
|
434
|
+
if (Provider) {
|
|
435
|
+
return /*#__PURE__*/React.createElement(Provider, {
|
|
436
|
+
configuration: first.configuration,
|
|
437
|
+
__self: this,
|
|
438
|
+
__source: {
|
|
439
|
+
fileName: _jsxFileName$3,
|
|
440
|
+
lineNumber: 25,
|
|
441
|
+
columnNumber: 7
|
|
442
|
+
}
|
|
443
|
+
}, /*#__PURE__*/React.createElement(PresenceProviders, {
|
|
444
|
+
widgets: rest,
|
|
445
|
+
__self: this,
|
|
446
|
+
__source: {
|
|
447
|
+
fileName: _jsxFileName$3,
|
|
448
|
+
lineNumber: 26,
|
|
449
|
+
columnNumber: 9
|
|
450
|
+
}
|
|
451
|
+
}, children));
|
|
452
|
+
}
|
|
453
|
+
return /*#__PURE__*/React.createElement(PresenceProviders, {
|
|
454
|
+
widgets: rest,
|
|
455
|
+
__self: this,
|
|
456
|
+
__source: {
|
|
457
|
+
fileName: _jsxFileName$3,
|
|
458
|
+
lineNumber: 34,
|
|
459
|
+
columnNumber: 5
|
|
460
|
+
}
|
|
461
|
+
}, children);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
var _jsxFileName$4 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Entry.js";
|
|
465
|
+
const Entry = extensible('Entry', function Entry() {
|
|
466
|
+
return /*#__PURE__*/React.createElement(WidgetPresenceWrapper, {
|
|
467
|
+
__self: this,
|
|
468
|
+
__source: {
|
|
469
|
+
fileName: _jsxFileName$4,
|
|
470
|
+
lineNumber: 12,
|
|
471
|
+
columnNumber: 5
|
|
472
|
+
}
|
|
473
|
+
}, /*#__PURE__*/React.createElement(Widget, {
|
|
474
|
+
role: "consent",
|
|
475
|
+
__self: this,
|
|
476
|
+
__source: {
|
|
477
|
+
fileName: _jsxFileName$4,
|
|
478
|
+
lineNumber: 13,
|
|
479
|
+
columnNumber: 7
|
|
480
|
+
}
|
|
375
481
|
}), /*#__PURE__*/React.createElement(SelectableWidget, {
|
|
376
|
-
role: "header"
|
|
377
|
-
|
|
378
|
-
|
|
482
|
+
role: "header",
|
|
483
|
+
__self: this,
|
|
484
|
+
__source: {
|
|
485
|
+
fileName: _jsxFileName$4,
|
|
486
|
+
lineNumber: 14,
|
|
487
|
+
columnNumber: 7
|
|
488
|
+
}
|
|
489
|
+
}), /*#__PURE__*/React.createElement(Content, {
|
|
490
|
+
__self: this,
|
|
491
|
+
__source: {
|
|
492
|
+
fileName: _jsxFileName$4,
|
|
493
|
+
lineNumber: 15,
|
|
494
|
+
columnNumber: 7
|
|
495
|
+
}
|
|
379
496
|
}));
|
|
380
497
|
});
|
|
381
498
|
|
|
382
|
-
function
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
break;
|
|
397
|
-
}
|
|
398
|
-
_context.next = 3;
|
|
399
|
-
return import('@videojs/http-streaming');
|
|
400
|
-
case 3:
|
|
401
|
-
case "end":
|
|
402
|
-
return _context.stop();
|
|
403
|
-
}
|
|
404
|
-
}, _callee);
|
|
405
|
-
}));
|
|
406
|
-
return _loadDashUnlessHlsSupported.apply(this, arguments);
|
|
499
|
+
function loadInlineEditingExtensions() {
|
|
500
|
+
return import('./extensions-2318f92b.js').then(({
|
|
501
|
+
extensions
|
|
502
|
+
}) => {
|
|
503
|
+
provideExtensions(extensions);
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
function loadCommentingExtensions() {
|
|
508
|
+
return import( /* webpackPreload: true */'./extensions-c98269fd.js').then(({
|
|
509
|
+
extensions
|
|
510
|
+
}) => {
|
|
511
|
+
provideExtensions(extensions);
|
|
512
|
+
});
|
|
407
513
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
514
|
+
|
|
515
|
+
async function loadDashUnlessHlsSupported(seed) {
|
|
516
|
+
if (!hasHlsSupport({
|
|
517
|
+
seed,
|
|
518
|
+
agent: browser.agent
|
|
519
|
+
})) {
|
|
520
|
+
await import('@videojs/http-streaming');
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
function hasHlsSupport({
|
|
524
|
+
agent,
|
|
525
|
+
seed
|
|
526
|
+
}) {
|
|
411
527
|
return agent.matchesSafari() || agent.matchesMobilePlatform() && (!agent.matchesAndroid() || hlsHostSupportedByAndroid(seed));
|
|
412
528
|
}
|
|
413
529
|
function hlsHostSupportedByAndroid(seed) {
|
|
414
530
|
return getFileUrlTemplateHost(seed, 'videoFiles', 'hls-playlist').indexOf('_') < 0;
|
|
415
531
|
}
|
|
416
532
|
|
|
417
|
-
|
|
533
|
+
const ActionButton = extensible('ActionButton', function ActionButton() {
|
|
418
534
|
return null;
|
|
419
535
|
});
|
|
420
536
|
|
|
421
|
-
var styles = {"darkContentSurfaceColor":"var(--theme-dark-content-surface-color, #101010)","lightContentSurfaceColor":"var(--theme-light-content-surface-color, #fff)","darkContentTextColor":"var(--theme-dark-content-text-color, #222)","lightContentTextColor":"var(--theme-light-content-text-color, #fff)","contentColorScope":"colors-module_contentColorScope__2Zizr","root":"Figure-module_root__3FC-x colors-module_contentColorScope__2Zizr","invert":"Figure-module_invert___0BJP"};
|
|
537
|
+
var styles$1 = {"darkContentSurfaceColor":"var(--theme-dark-content-surface-color, #101010)","lightContentSurfaceColor":"var(--theme-light-content-surface-color, #fff)","darkContentTextColor":"var(--theme-dark-content-text-color, #222)","lightContentTextColor":"var(--theme-light-content-text-color, #fff)","contentColorScope":"colors-module_contentColorScope__2Zizr","root":"Figure-module_root__3FC-x colors-module_contentColorScope__2Zizr","invert":"Figure-module_invert___0BJP"};
|
|
538
|
+
|
|
539
|
+
var _jsxFileName$5 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Figure.js";
|
|
422
540
|
|
|
423
541
|
/**
|
|
424
542
|
* Render a figure with a caption text attached.
|
|
@@ -431,52 +549,64 @@ var styles = {"darkContentSurfaceColor":"var(--theme-dark-content-surface-color,
|
|
|
431
549
|
* @param {boolean} [props.addCaptionButtonVisible=true] - Control visiblility of action button.
|
|
432
550
|
* @param {string} [props.captionButtonPosition='outside'] - Position of action button.
|
|
433
551
|
*/
|
|
434
|
-
function Figure(
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
text: caption
|
|
463
|
-
}]
|
|
464
|
-
}] : caption;
|
|
465
|
-
}, [caption]);
|
|
552
|
+
function Figure({
|
|
553
|
+
children,
|
|
554
|
+
variant,
|
|
555
|
+
caption,
|
|
556
|
+
onCaptionChange,
|
|
557
|
+
addCaptionButtonVisible = true,
|
|
558
|
+
addCaptionButtonPosition = 'outside',
|
|
559
|
+
renderInsideCaption
|
|
560
|
+
}) {
|
|
561
|
+
const darkBackground = useDarkBackground();
|
|
562
|
+
const {
|
|
563
|
+
isSelected,
|
|
564
|
+
isEditable
|
|
565
|
+
} = useContentElementEditorState();
|
|
566
|
+
const [isEditingCaption, setIsEditingCaption] = useState(false);
|
|
567
|
+
const {
|
|
568
|
+
t
|
|
569
|
+
} = useI18n({
|
|
570
|
+
locale: 'ui'
|
|
571
|
+
});
|
|
572
|
+
const theme = useTheme();
|
|
573
|
+
const captionAbove = theme.options.figureCaptionPosition === 'above';
|
|
574
|
+
caption = useMemo(() => typeof caption === 'string' ? [{
|
|
575
|
+
type: 'paragraph',
|
|
576
|
+
children: [{
|
|
577
|
+
text: caption
|
|
578
|
+
}]
|
|
579
|
+
}] : caption, [caption]);
|
|
466
580
|
if (!isBlankEditableTextValue(caption) || isEditable) {
|
|
467
581
|
return /*#__PURE__*/React.createElement("figure", {
|
|
468
|
-
className: classNames(styles.root,
|
|
582
|
+
className: classNames(styles$1.root, {
|
|
583
|
+
[styles$1.invert]: !darkBackground
|
|
584
|
+
}),
|
|
585
|
+
__self: this,
|
|
586
|
+
__source: {
|
|
587
|
+
fileName: _jsxFileName$5,
|
|
588
|
+
lineNumber: 49,
|
|
589
|
+
columnNumber: 7
|
|
590
|
+
}
|
|
469
591
|
}, !captionAbove && children, isBlankEditableTextValue(caption) && isSelected && !isEditingCaption && addCaptionButtonVisible && /*#__PURE__*/React.createElement(ActionButton, {
|
|
470
592
|
position: addCaptionButtonPosition,
|
|
471
593
|
icon: "pencil",
|
|
472
594
|
text: t('pageflow_scrolled.inline_editing.add_caption'),
|
|
473
|
-
onClick:
|
|
474
|
-
|
|
595
|
+
onClick: () => setIsEditingCaption(true),
|
|
596
|
+
__self: this,
|
|
597
|
+
__source: {
|
|
598
|
+
fileName: _jsxFileName$5,
|
|
599
|
+
lineNumber: 53,
|
|
600
|
+
columnNumber: 10
|
|
475
601
|
}
|
|
476
602
|
}), (!isBlankEditableTextValue(caption) || isEditingCaption) && /*#__PURE__*/React.createElement("figcaption", {
|
|
477
|
-
className: classNames(variant &&
|
|
478
|
-
onBlur:
|
|
479
|
-
|
|
603
|
+
className: classNames(variant && `scope-figureCaption-${variant}`),
|
|
604
|
+
onBlur: () => setIsEditingCaption(false),
|
|
605
|
+
__self: this,
|
|
606
|
+
__source: {
|
|
607
|
+
fileName: _jsxFileName$5,
|
|
608
|
+
lineNumber: 59,
|
|
609
|
+
columnNumber: 10
|
|
480
610
|
}
|
|
481
611
|
}, renderInsideCaption === null || renderInsideCaption === void 0 ? void 0 : renderInsideCaption(), /*#__PURE__*/React.createElement(EditableText, {
|
|
482
612
|
autoFocus: isEditingCaption,
|
|
@@ -485,14 +615,41 @@ function Figure(_ref) {
|
|
|
485
615
|
onChange: onCaptionChange,
|
|
486
616
|
onlyParagraphs: true,
|
|
487
617
|
hyphens: "none",
|
|
488
|
-
placeholder: t('pageflow_scrolled.inline_editing.type_text')
|
|
618
|
+
placeholder: t('pageflow_scrolled.inline_editing.type_text'),
|
|
619
|
+
__self: this,
|
|
620
|
+
__source: {
|
|
621
|
+
fileName: _jsxFileName$5,
|
|
622
|
+
lineNumber: 62,
|
|
623
|
+
columnNumber: 12
|
|
624
|
+
}
|
|
489
625
|
})), captionAbove && children);
|
|
490
626
|
} else {
|
|
491
627
|
return children;
|
|
492
628
|
}
|
|
493
629
|
}
|
|
494
630
|
|
|
495
|
-
var styles$
|
|
631
|
+
var styles$2 = {"properties":"ContentElementBox-module_properties__1ljc9","wrapper":"ContentElementBox-module_wrapper__3wZgP","full":"ContentElementBox-module_full__AfWPr","positioned":"ContentElementBox-module_positioned__3R1dq"};
|
|
632
|
+
|
|
633
|
+
function contentElementBoxProps(configuration, {
|
|
634
|
+
borderRadius
|
|
635
|
+
} = {}) {
|
|
636
|
+
return {
|
|
637
|
+
className: styles$2.properties,
|
|
638
|
+
style: {
|
|
639
|
+
...(borderRadius && borderRadius !== 'none' && {
|
|
640
|
+
'--content-element-box-border-radius': `var(--theme-content-element-box-border-radius-${borderRadius})`
|
|
641
|
+
}),
|
|
642
|
+
...((configuration === null || configuration === void 0 ? void 0 : configuration.boxShadow) && {
|
|
643
|
+
'--content-element-box-shadow': `var(--theme-content-element-box-shadow-${configuration.boxShadow})`
|
|
644
|
+
}),
|
|
645
|
+
...((configuration === null || configuration === void 0 ? void 0 : configuration.outlineColor) && {
|
|
646
|
+
'--content-element-box-outline-color': configuration.outlineColor
|
|
647
|
+
})
|
|
648
|
+
}
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
var _jsxFileName$6 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/ContentElementBox.js";
|
|
496
653
|
|
|
497
654
|
/**
|
|
498
655
|
* Wrap content element that render a visible box in this component to
|
|
@@ -500,97 +657,148 @@ var styles$1 = {"wrapper":"ContentElementBox-module_wrapper__3wZgP","full":"Cont
|
|
|
500
657
|
*
|
|
501
658
|
* @param {Object} props
|
|
502
659
|
* @param {string} props.children - Content of box.
|
|
503
|
-
* @param {
|
|
660
|
+
* @param {Object} [props.configuration] - Content element configuration. Used to read box shadow and outline styles.
|
|
661
|
+
* @param {string} [props.borderRadius] - Border radius value from theme scale, or "none" to render no wrapper.
|
|
504
662
|
*/
|
|
505
|
-
function ContentElementBox(
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
663
|
+
function ContentElementBox({
|
|
664
|
+
children,
|
|
665
|
+
configuration,
|
|
666
|
+
borderRadius,
|
|
667
|
+
positioned
|
|
668
|
+
}) {
|
|
669
|
+
const {
|
|
670
|
+
position,
|
|
671
|
+
width
|
|
672
|
+
} = useContentElementAttributes();
|
|
673
|
+
const {
|
|
674
|
+
style
|
|
675
|
+
} = contentElementBoxProps(configuration, {
|
|
676
|
+
borderRadius
|
|
677
|
+
});
|
|
678
|
+
if (position === 'backdrop') {
|
|
679
|
+
return children;
|
|
680
|
+
}
|
|
681
|
+
if (borderRadius === 'none' && !Object.keys(style).length) {
|
|
513
682
|
return children;
|
|
514
683
|
}
|
|
515
|
-
var style = borderRadius ? {
|
|
516
|
-
'--content-element-box-border-radius': "var(--theme-content-element-box-border-radius-".concat(borderRadius, ")")
|
|
517
|
-
} : {};
|
|
518
684
|
return /*#__PURE__*/React.createElement("div", {
|
|
519
|
-
className: classNames(styles$
|
|
520
|
-
|
|
685
|
+
className: classNames(styles$2.properties, styles$2.wrapper, {
|
|
686
|
+
[styles$2.full]: width === widths.full,
|
|
687
|
+
[styles$2.positioned]: positioned
|
|
688
|
+
}),
|
|
689
|
+
style: style,
|
|
690
|
+
__self: this,
|
|
691
|
+
__source: {
|
|
692
|
+
fileName: _jsxFileName$6,
|
|
693
|
+
lineNumber: 33,
|
|
694
|
+
columnNumber: 5
|
|
695
|
+
}
|
|
521
696
|
}, children);
|
|
522
697
|
}
|
|
523
698
|
|
|
699
|
+
var _jsxFileName$7 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/ContentElementFigure.js";
|
|
700
|
+
|
|
524
701
|
/**
|
|
525
702
|
* @param {Object} props
|
|
526
703
|
* @param {Object} props.configuration - Configuration of the content element.
|
|
527
704
|
* @param {string} props.children - Content of box.
|
|
528
705
|
*/
|
|
529
|
-
function ContentElementFigure(
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
706
|
+
function ContentElementFigure({
|
|
707
|
+
configuration,
|
|
708
|
+
children
|
|
709
|
+
}) {
|
|
710
|
+
const updateConfiguration = useContentElementConfigurationUpdate();
|
|
711
|
+
const {
|
|
712
|
+
width,
|
|
713
|
+
position
|
|
714
|
+
} = useContentElementAttributes();
|
|
715
|
+
const {
|
|
716
|
+
isEditable
|
|
717
|
+
} = useContentElementEditorState();
|
|
538
718
|
if (position === 'backdrop') {
|
|
539
719
|
return children;
|
|
540
720
|
}
|
|
541
721
|
return /*#__PURE__*/React.createElement(Figure, {
|
|
542
722
|
caption: configuration.caption,
|
|
543
723
|
variant: configuration.captionVariant,
|
|
544
|
-
renderInsideCaption:
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
}
|
|
551
|
-
},
|
|
552
|
-
|
|
724
|
+
renderInsideCaption: () => isEditable && /*#__PURE__*/React.createElement(HasCaptionTransientState, {
|
|
725
|
+
__self: this,
|
|
726
|
+
__source: {
|
|
727
|
+
fileName: _jsxFileName$7,
|
|
728
|
+
lineNumber: 26,
|
|
729
|
+
columnNumber: 54
|
|
730
|
+
}
|
|
731
|
+
}),
|
|
732
|
+
onCaptionChange: caption => updateConfiguration({
|
|
733
|
+
caption
|
|
734
|
+
}),
|
|
735
|
+
addCaptionButtonPosition: width === widths.full ? 'outsideIndented' : 'outside',
|
|
736
|
+
__self: this,
|
|
737
|
+
__source: {
|
|
738
|
+
fileName: _jsxFileName$7,
|
|
739
|
+
lineNumber: 24,
|
|
740
|
+
columnNumber: 5
|
|
741
|
+
}
|
|
553
742
|
}, children);
|
|
554
743
|
}
|
|
555
744
|
function HasCaptionTransientState() {
|
|
556
|
-
|
|
557
|
-
setTransientState
|
|
558
|
-
|
|
745
|
+
const {
|
|
746
|
+
setTransientState
|
|
747
|
+
} = useContentElementEditorState();
|
|
748
|
+
useEffect(() => {
|
|
559
749
|
setTransientState({
|
|
560
750
|
hasCaption: true
|
|
561
751
|
});
|
|
562
|
-
return
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
});
|
|
566
|
-
};
|
|
752
|
+
return () => setTransientState({
|
|
753
|
+
hasCaption: false
|
|
754
|
+
});
|
|
567
755
|
}, [setTransientState]);
|
|
568
756
|
return null;
|
|
569
757
|
}
|
|
570
758
|
|
|
571
|
-
function
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
759
|
+
function processImageModifiers(imageModifiers) {
|
|
760
|
+
const cropValue = getModifierValue(imageModifiers, 'crop');
|
|
761
|
+
const isCircleCrop = cropValue === 'circle';
|
|
762
|
+
return {
|
|
763
|
+
aspectRatio: isCircleCrop ? 'square' : cropValue,
|
|
764
|
+
rounded: isCircleCrop ? 'circle' : getModifierValue(imageModifiers, 'rounded')
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
function getModifierValue(imageModifiers, name) {
|
|
768
|
+
var _find;
|
|
769
|
+
return (_find = (imageModifiers || []).find(imageModifier => imageModifier.name === name)) === null || _find === void 0 ? void 0 : _find.value;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
function useFileWithCropPosition(file, cropPosition) {
|
|
773
|
+
return file && {
|
|
774
|
+
...file,
|
|
775
|
+
cropPosition
|
|
776
|
+
};
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
var _jsxFileName$8 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/MediaInteractionTracking.js";
|
|
780
|
+
function MediaInteractionTracking({
|
|
781
|
+
playerState,
|
|
782
|
+
playerActions,
|
|
783
|
+
idleDelay,
|
|
784
|
+
children
|
|
785
|
+
}) {
|
|
786
|
+
const hideControlsTimeout = useRef();
|
|
787
|
+
const wasPlaying = usePrevious(playerState.isPlaying);
|
|
788
|
+
const focusWasInside = usePrevious(playerState.focusInsideControls);
|
|
789
|
+
const setHideControlsTimeout = useCallback(() => {
|
|
580
790
|
clearTimeout(hideControlsTimeout.current);
|
|
581
791
|
hideControlsTimeout.current = setTimeout(playerActions.userIdle, idleDelay);
|
|
582
792
|
}, [playerActions.userIdle, idleDelay]);
|
|
583
|
-
useEffect(
|
|
793
|
+
useEffect(() => {
|
|
584
794
|
if (!wasPlaying && playerState.isPlaying || focusWasInside !== playerState.focusInsideControls) {
|
|
585
795
|
setHideControlsTimeout();
|
|
586
796
|
}
|
|
587
797
|
}, [wasPlaying, playerState.isPlaying, setHideControlsTimeout, playerState.focusInsideControls, focusWasInside]);
|
|
588
|
-
useEffect(
|
|
589
|
-
return
|
|
590
|
-
return clearTimeout(hideControlsTimeout.current);
|
|
591
|
-
};
|
|
798
|
+
useEffect(() => {
|
|
799
|
+
return () => clearTimeout(hideControlsTimeout.current);
|
|
592
800
|
}, []);
|
|
593
|
-
|
|
801
|
+
const handleInteraction = function () {
|
|
594
802
|
playerActions.userInteraction();
|
|
595
803
|
setHideControlsTimeout();
|
|
596
804
|
};
|
|
@@ -598,29 +806,33 @@ function MediaInteractionTracking(_ref) {
|
|
|
598
806
|
onClick: handleInteraction,
|
|
599
807
|
onMouseMove: handleInteraction,
|
|
600
808
|
onMouseEnter: playerActions.mouseEntered,
|
|
601
|
-
onMouseLeave: playerActions.mouseLeft
|
|
809
|
+
onMouseLeave: playerActions.mouseLeft,
|
|
810
|
+
__self: this,
|
|
811
|
+
__source: {
|
|
812
|
+
fileName: _jsxFileName$8,
|
|
813
|
+
lineNumber: 32,
|
|
814
|
+
columnNumber: 5
|
|
815
|
+
}
|
|
602
816
|
}, children);
|
|
603
817
|
}
|
|
604
818
|
MediaInteractionTracking.defaultProps = {
|
|
605
819
|
idleDelay: 2000
|
|
606
820
|
};
|
|
607
821
|
|
|
608
|
-
function RemotePeakData(
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
setPeakData = _useState2[1];
|
|
616
|
-
useEffect(function () {
|
|
822
|
+
function RemotePeakData({
|
|
823
|
+
audioFile,
|
|
824
|
+
children
|
|
825
|
+
}) {
|
|
826
|
+
const peakDataUrl = audioFile === null || audioFile === void 0 ? void 0 : audioFile.urls.peakData;
|
|
827
|
+
const [peakData, setPeakData] = useState('pending');
|
|
828
|
+
useEffect(() => {
|
|
617
829
|
if (peakDataUrl) {
|
|
618
|
-
fetch(peakDataUrl).then(
|
|
830
|
+
fetch(peakDataUrl).then(response => {
|
|
619
831
|
if (!response.ok) {
|
|
620
|
-
throw new Error(
|
|
832
|
+
throw new Error(`HTTP error ${response.status} while loading peaks.`);
|
|
621
833
|
}
|
|
622
834
|
return response.json();
|
|
623
|
-
}).then(
|
|
835
|
+
}).then(peaks => {
|
|
624
836
|
setPeakData(peaks.data);
|
|
625
837
|
});
|
|
626
838
|
} else {
|
|
@@ -634,16 +846,16 @@ function RemotePeakData(_ref) {
|
|
|
634
846
|
}
|
|
635
847
|
}
|
|
636
848
|
|
|
637
|
-
|
|
849
|
+
const defaultRemainingWaveformColor = '#828282ed';
|
|
850
|
+
const defaultRemainingWaveformColorInverted = 'rgba(0, 0, 0, 0.5)';
|
|
851
|
+
const defaultWaveformCursorColor = '#fff';
|
|
852
|
+
const defaultWaveformCursorColorInverted = '#888';
|
|
638
853
|
|
|
639
|
-
var
|
|
640
|
-
|
|
641
|
-
var
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
return import('./Wavesurfer-1cdc3925.js');
|
|
645
|
-
});
|
|
646
|
-
var waveformStyles = {
|
|
854
|
+
var styles$3 = {"container":"Waveform-module_container__1Dxdv","clickMask":"Waveform-module_clickMask__3LYAT","menuBar":"Waveform-module_menuBar__342n-","menuBarInner":"Waveform-module_menuBarInner__3wjQs","timeDisplay":"Waveform-module_timeDisplay__1v4Tl","playControl":"Waveform-module_playControl__QWTsJ","invertPlayButton":"Waveform-module_invertPlayButton__kfCbL","waveWrapper":"Waveform-module_waveWrapper__3gamc"};
|
|
855
|
+
|
|
856
|
+
var _jsxFileName$9 = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/WaveformPlayerControls/Waveform.js";
|
|
857
|
+
const Wavesurfer = React.lazy(() => import('./Wavesurfer-b753b838.js'));
|
|
858
|
+
const waveformStyles = {
|
|
647
859
|
waveformLines: {
|
|
648
860
|
barWidth: 1,
|
|
649
861
|
barGap: 2
|
|
@@ -655,171 +867,282 @@ var waveformStyles = {
|
|
|
655
867
|
}
|
|
656
868
|
};
|
|
657
869
|
function Waveform(props) {
|
|
658
|
-
|
|
659
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
660
|
-
height = _useState2[0],
|
|
661
|
-
setHeight = _useState2[1];
|
|
870
|
+
const [height, setHeight] = useState(90);
|
|
662
871
|
if (props.mediaElementId) {
|
|
663
872
|
return /*#__PURE__*/React.createElement(Suspense, {
|
|
664
|
-
fallback: /*#__PURE__*/React.createElement("div",
|
|
873
|
+
fallback: /*#__PURE__*/React.createElement("div", {
|
|
874
|
+
__self: this,
|
|
875
|
+
__source: {
|
|
876
|
+
fileName: _jsxFileName$9,
|
|
877
|
+
lineNumber: 34,
|
|
878
|
+
columnNumber: 27
|
|
879
|
+
}
|
|
880
|
+
}),
|
|
881
|
+
__self: this,
|
|
882
|
+
__source: {
|
|
883
|
+
fileName: _jsxFileName$9,
|
|
884
|
+
lineNumber: 34,
|
|
885
|
+
columnNumber: 7
|
|
886
|
+
}
|
|
665
887
|
}, /*#__PURE__*/React.createElement(Measure, {
|
|
666
888
|
client: true,
|
|
667
|
-
onResize:
|
|
668
|
-
|
|
889
|
+
onResize: contentRect => setHeight(contentRect.client.height),
|
|
890
|
+
__self: this,
|
|
891
|
+
__source: {
|
|
892
|
+
fileName: _jsxFileName$9,
|
|
893
|
+
lineNumber: 35,
|
|
894
|
+
columnNumber: 9
|
|
669
895
|
}
|
|
670
|
-
},
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
896
|
+
}, ({
|
|
897
|
+
measureRef
|
|
898
|
+
}) => /*#__PURE__*/React.createElement("div", {
|
|
899
|
+
ref: measureRef,
|
|
900
|
+
className: styles$3.waveWrapper,
|
|
901
|
+
__self: this,
|
|
902
|
+
__source: {
|
|
903
|
+
fileName: _jsxFileName$9,
|
|
904
|
+
lineNumber: 37,
|
|
905
|
+
columnNumber: 13
|
|
906
|
+
}
|
|
907
|
+
}, /*#__PURE__*/React.createElement(RemotePeakData, {
|
|
908
|
+
audioFile: props.audioFile,
|
|
909
|
+
__self: this,
|
|
910
|
+
__source: {
|
|
911
|
+
fileName: _jsxFileName$9,
|
|
912
|
+
lineNumber: 38,
|
|
913
|
+
columnNumber: 15
|
|
914
|
+
}
|
|
915
|
+
}, peakData => /*#__PURE__*/React.createElement(Wavesurfer, {
|
|
916
|
+
key: props.variant,
|
|
917
|
+
mediaElt: `#${props.mediaElementId}`,
|
|
918
|
+
audioPeaks: peakData,
|
|
919
|
+
options: {
|
|
920
|
+
...waveformStyles[props.variant],
|
|
921
|
+
normalize: true,
|
|
922
|
+
removeMediaElementOnDestroy: false,
|
|
923
|
+
hideScrollbar: true,
|
|
924
|
+
progressColor: props.progressWaveformColor || props.mainColor,
|
|
925
|
+
waveColor: props.remainingWaveformColor || (props.inverted ? defaultRemainingWaveformColorInverted : defaultRemainingWaveformColor),
|
|
926
|
+
cursorColor: props.waveformCursorColor || (props.inverted ? defaultWaveformCursorColorInverted : defaultWaveformCursorColor),
|
|
927
|
+
height
|
|
928
|
+
},
|
|
929
|
+
__self: this,
|
|
930
|
+
__source: {
|
|
931
|
+
fileName: _jsxFileName$9,
|
|
932
|
+
lineNumber: 40,
|
|
933
|
+
columnNumber: 19
|
|
934
|
+
}
|
|
935
|
+
})))));
|
|
694
936
|
} else {
|
|
695
937
|
return null;
|
|
696
938
|
}
|
|
697
939
|
}
|
|
698
940
|
|
|
699
|
-
var styles$
|
|
941
|
+
var styles$4 = {"timeDisplay":"TimeDisplay-module_timeDisplay__2UwqM","time":"TimeDisplay-module_time__li1ZU"};
|
|
700
942
|
|
|
701
|
-
|
|
943
|
+
const unknownTimePlaceholder = '-:--';
|
|
702
944
|
function formatTime(value) {
|
|
703
945
|
if (isNaN(value)) {
|
|
704
946
|
return unknownTimePlaceholder;
|
|
705
947
|
}
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
948
|
+
const seconds = Math.floor(value) % 60;
|
|
949
|
+
const minutes = Math.floor(value / 60) % 60;
|
|
950
|
+
const hours = Math.floor(value / 60 / 60);
|
|
709
951
|
if (hours > 0) {
|
|
710
|
-
return
|
|
952
|
+
return `${hours}:${pad(minutes)}:${pad(seconds)}`;
|
|
711
953
|
} else {
|
|
712
|
-
return
|
|
954
|
+
return `${minutes}:${pad(seconds)}`;
|
|
713
955
|
}
|
|
714
956
|
}
|
|
715
957
|
function pad(value) {
|
|
716
958
|
return value < 10 ? '0' + value : value;
|
|
717
959
|
}
|
|
718
960
|
|
|
961
|
+
var _jsxFileName$a = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/TimeDisplay.js";
|
|
719
962
|
function TimeDisplay(props) {
|
|
720
963
|
return /*#__PURE__*/React.createElement("div", {
|
|
721
964
|
"data-testid": 'time-display',
|
|
722
|
-
className: styles$
|
|
965
|
+
className: styles$4.timeDisplay,
|
|
966
|
+
__self: this,
|
|
967
|
+
__source: {
|
|
968
|
+
fileName: _jsxFileName$a,
|
|
969
|
+
lineNumber: 8,
|
|
970
|
+
columnNumber: 5
|
|
971
|
+
}
|
|
723
972
|
}, /*#__PURE__*/React.createElement("span", {
|
|
724
|
-
className: styles$
|
|
973
|
+
className: styles$4.time,
|
|
974
|
+
__self: this,
|
|
975
|
+
__source: {
|
|
976
|
+
fileName: _jsxFileName$a,
|
|
977
|
+
lineNumber: 9,
|
|
978
|
+
columnNumber: 7
|
|
979
|
+
}
|
|
725
980
|
}, formatTime(props.currentTime)), "/", /*#__PURE__*/React.createElement("span", {
|
|
726
|
-
className: styles$
|
|
981
|
+
className: styles$4.time,
|
|
982
|
+
__self: this,
|
|
983
|
+
__source: {
|
|
984
|
+
fileName: _jsxFileName$a,
|
|
985
|
+
lineNumber: 11,
|
|
986
|
+
columnNumber: 7
|
|
987
|
+
}
|
|
727
988
|
}, formatTime(props.duration)));
|
|
728
989
|
}
|
|
729
990
|
|
|
730
|
-
var styles$
|
|
991
|
+
var styles$5 = {"wrapper":"MenuBarButton-module_wrapper__2lFoI","button":"MenuBarButton-module_button__2sY0F ControlBar-module_button___4aXE utils-module_unstyledButton__3rgne","subMenuItemAnnotation":"MenuBarButton-module_subMenuItemAnnotation__32Quc","subMenu":"MenuBarButton-module_subMenu__f-E-X","subMenuExpanded":"MenuBarButton-module_subMenuExpanded__2UvkJ","subMenuItem":"MenuBarButton-module_subMenuItem__1pyn_","subMenuItemButton":"MenuBarButton-module_subMenuItemButton__2QnUz utils-module_unstyledButton__3rgne"};
|
|
731
992
|
|
|
993
|
+
var _jsxFileName$b = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/MenuBarButton.js";
|
|
732
994
|
function MenuBarButton(props) {
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
var openMenu = useCallback(function () {
|
|
995
|
+
const {
|
|
996
|
+
subMenuItems,
|
|
997
|
+
onClick
|
|
998
|
+
} = props;
|
|
999
|
+
const [subMenuExpanded, setSubMenuExpanded] = useState(props.subMenuExpanded);
|
|
1000
|
+
const closeMenuTimeout = useRef();
|
|
1001
|
+
const openMenu = useCallback(() => {
|
|
741
1002
|
if (subMenuItems.length > 0) {
|
|
742
1003
|
setSubMenuExpanded(true);
|
|
743
1004
|
}
|
|
744
1005
|
}, [subMenuItems.length]);
|
|
745
|
-
|
|
1006
|
+
const closeMenu = useCallback(() => {
|
|
746
1007
|
setSubMenuExpanded(false);
|
|
747
1008
|
}, []);
|
|
748
|
-
|
|
1009
|
+
const onButtonClick = useCallback(event => {
|
|
749
1010
|
openMenu();
|
|
750
1011
|
if (onClick) {
|
|
751
1012
|
onClick();
|
|
752
1013
|
}
|
|
753
1014
|
}, [onClick, openMenu]);
|
|
754
|
-
|
|
1015
|
+
const onFocus = useCallback(() => {
|
|
755
1016
|
clearTimeout(closeMenuTimeout.current);
|
|
756
1017
|
}, []);
|
|
757
|
-
|
|
1018
|
+
const onBlur = useCallback(() => {
|
|
758
1019
|
clearTimeout(closeMenuTimeout.current);
|
|
759
|
-
closeMenuTimeout.current = setTimeout(
|
|
1020
|
+
closeMenuTimeout.current = setTimeout(() => {
|
|
760
1021
|
setSubMenuExpanded(false);
|
|
761
1022
|
}, 100);
|
|
762
1023
|
}, []);
|
|
763
|
-
|
|
1024
|
+
const onKeyDown = useCallback(event => {
|
|
764
1025
|
if (event.key === 'Escape') {
|
|
765
1026
|
setSubMenuExpanded(false);
|
|
766
1027
|
}
|
|
767
1028
|
}, []);
|
|
768
1029
|
return /*#__PURE__*/React.createElement("div", {
|
|
769
|
-
className: classNames(
|
|
1030
|
+
className: classNames({
|
|
1031
|
+
[styles$5.subMenuExpanded]: subMenuExpanded
|
|
1032
|
+
}, styles$5.wrapper),
|
|
770
1033
|
onMouseEnter: openMenu,
|
|
771
1034
|
onMouseLeave: closeMenu,
|
|
772
1035
|
onFocus: onFocus,
|
|
773
1036
|
onBlur: onBlur,
|
|
774
|
-
onKeyDown: onKeyDown
|
|
1037
|
+
onKeyDown: onKeyDown,
|
|
1038
|
+
__self: this,
|
|
1039
|
+
__source: {
|
|
1040
|
+
fileName: _jsxFileName$b,
|
|
1041
|
+
lineNumber: 53,
|
|
1042
|
+
columnNumber: 5
|
|
1043
|
+
}
|
|
775
1044
|
}, /*#__PURE__*/React.createElement("button", {
|
|
776
|
-
className: styles$
|
|
1045
|
+
className: styles$5.button,
|
|
777
1046
|
title: props.title,
|
|
778
|
-
onClick: onButtonClick
|
|
1047
|
+
onClick: onButtonClick,
|
|
1048
|
+
__self: this,
|
|
1049
|
+
__source: {
|
|
1050
|
+
fileName: _jsxFileName$b,
|
|
1051
|
+
lineNumber: 59,
|
|
1052
|
+
columnNumber: 7
|
|
1053
|
+
}
|
|
779
1054
|
}, /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
780
|
-
name: props.icon
|
|
1055
|
+
name: props.icon,
|
|
1056
|
+
__self: this,
|
|
1057
|
+
__source: {
|
|
1058
|
+
fileName: _jsxFileName$b,
|
|
1059
|
+
lineNumber: 62,
|
|
1060
|
+
columnNumber: 9
|
|
1061
|
+
}
|
|
781
1062
|
})), renderSubMenu(props, closeMenu));
|
|
782
1063
|
}
|
|
1064
|
+
MenuBarButton.propTypes = {
|
|
1065
|
+
title: PropTypes.string,
|
|
1066
|
+
icon: PropTypes.string,
|
|
1067
|
+
subMenuItems: PropTypes.arrayOf(PropTypes.shape({
|
|
1068
|
+
label: PropTypes.string.isRequired,
|
|
1069
|
+
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
|
|
1070
|
+
annotation: PropTypes.string,
|
|
1071
|
+
active: PropTypes.bool
|
|
1072
|
+
})),
|
|
1073
|
+
onClick: PropTypes.func,
|
|
1074
|
+
onSubMenuItemClick: PropTypes.func
|
|
1075
|
+
};
|
|
783
1076
|
MenuBarButton.defaultProps = {
|
|
784
1077
|
subMenuItems: []
|
|
785
1078
|
};
|
|
786
1079
|
function renderSubMenu(props, closeMenu) {
|
|
787
1080
|
if (props.subMenuItems.length > 0) {
|
|
788
1081
|
return /*#__PURE__*/React.createElement("ul", {
|
|
789
|
-
className: styles$
|
|
790
|
-
role: "menu"
|
|
1082
|
+
className: styles$5.subMenu,
|
|
1083
|
+
role: "menu",
|
|
1084
|
+
__self: this,
|
|
1085
|
+
__source: {
|
|
1086
|
+
fileName: _jsxFileName$b,
|
|
1087
|
+
lineNumber: 94,
|
|
1088
|
+
columnNumber: 7
|
|
1089
|
+
}
|
|
791
1090
|
}, renderSubMenuItems(props, closeMenu));
|
|
792
1091
|
}
|
|
793
1092
|
}
|
|
794
1093
|
function renderSubMenuItems(props, closeMenu) {
|
|
795
|
-
return props.subMenuItems.map(
|
|
1094
|
+
return props.subMenuItems.map(item => {
|
|
796
1095
|
return /*#__PURE__*/React.createElement("li", {
|
|
797
|
-
className: styles$
|
|
798
|
-
key: item.value
|
|
1096
|
+
className: styles$5.subMenuItem,
|
|
1097
|
+
key: item.value,
|
|
1098
|
+
__self: this,
|
|
1099
|
+
__source: {
|
|
1100
|
+
fileName: _jsxFileName$b,
|
|
1101
|
+
lineNumber: 104,
|
|
1102
|
+
columnNumber: 7
|
|
1103
|
+
}
|
|
799
1104
|
}, /*#__PURE__*/React.createElement("button", {
|
|
800
|
-
className: styles$
|
|
1105
|
+
className: styles$5.subMenuItemButton,
|
|
801
1106
|
role: "menuitemradio",
|
|
802
1107
|
"aria-checked": item.active,
|
|
803
|
-
onClick: subMenuItemClickHandler(props, item.value, closeMenu)
|
|
1108
|
+
onClick: subMenuItemClickHandler(props, item.value, closeMenu),
|
|
1109
|
+
__self: this,
|
|
1110
|
+
__source: {
|
|
1111
|
+
fileName: _jsxFileName$b,
|
|
1112
|
+
lineNumber: 105,
|
|
1113
|
+
columnNumber: 9
|
|
1114
|
+
}
|
|
804
1115
|
}, renderSubMenuItemIcon(item), item.label, renderSubMenuItemAnnotation(props, item)));
|
|
805
1116
|
});
|
|
806
1117
|
}
|
|
807
1118
|
function renderSubMenuItemIcon(item) {
|
|
808
1119
|
if (item.active) {
|
|
809
1120
|
return /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
810
|
-
name: "checked"
|
|
1121
|
+
name: "checked",
|
|
1122
|
+
__self: this,
|
|
1123
|
+
__source: {
|
|
1124
|
+
fileName: _jsxFileName$b,
|
|
1125
|
+
lineNumber: 122,
|
|
1126
|
+
columnNumber: 7
|
|
1127
|
+
}
|
|
811
1128
|
});
|
|
812
1129
|
}
|
|
813
1130
|
}
|
|
814
1131
|
function renderSubMenuItemAnnotation(props, item) {
|
|
815
1132
|
if (item.annotation) {
|
|
816
1133
|
return /*#__PURE__*/React.createElement("span", {
|
|
817
|
-
className: styles$
|
|
1134
|
+
className: styles$5.subMenuItemAnnotation,
|
|
1135
|
+
__self: this,
|
|
1136
|
+
__source: {
|
|
1137
|
+
fileName: _jsxFileName$b,
|
|
1138
|
+
lineNumber: 130,
|
|
1139
|
+
columnNumber: 7
|
|
1140
|
+
}
|
|
818
1141
|
}, item.annotation);
|
|
819
1142
|
}
|
|
820
1143
|
}
|
|
821
1144
|
function subMenuItemClickHandler(props, value, closeMenu) {
|
|
822
|
-
return
|
|
1145
|
+
return event => {
|
|
823
1146
|
event.preventDefault();
|
|
824
1147
|
closeMenu();
|
|
825
1148
|
if (props.onSubMenuItemClick) {
|
|
@@ -828,9 +1151,11 @@ function subMenuItemClickHandler(props, value, closeMenu) {
|
|
|
828
1151
|
};
|
|
829
1152
|
}
|
|
830
1153
|
|
|
1154
|
+
var _jsxFileName$c = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/TextTracksMenu.js";
|
|
831
1155
|
function TextTracksMenu(props) {
|
|
832
|
-
|
|
833
|
-
t
|
|
1156
|
+
const {
|
|
1157
|
+
t
|
|
1158
|
+
} = useI18n();
|
|
834
1159
|
if (props.items.length < 2) {
|
|
835
1160
|
return null;
|
|
836
1161
|
}
|
|
@@ -838,149 +1163,336 @@ function TextTracksMenu(props) {
|
|
|
838
1163
|
title: t('pageflow_scrolled.public.player_controls.text_tracks'),
|
|
839
1164
|
icon: "textTracks",
|
|
840
1165
|
subMenuItems: props.items,
|
|
841
|
-
onSubMenuItemClick: props.onItemClick
|
|
1166
|
+
onSubMenuItemClick: props.onItemClick,
|
|
1167
|
+
__self: this,
|
|
1168
|
+
__source: {
|
|
1169
|
+
fileName: _jsxFileName$c,
|
|
1170
|
+
lineNumber: 15,
|
|
1171
|
+
columnNumber: 5
|
|
1172
|
+
}
|
|
842
1173
|
});
|
|
843
1174
|
}
|
|
1175
|
+
TextTracksMenu.propTypes = {
|
|
1176
|
+
items: MenuBarButton.propTypes.subMenuItems,
|
|
1177
|
+
onMenuItemClick: PropTypes.func
|
|
1178
|
+
};
|
|
844
1179
|
TextTracksMenu.defaultProps = {
|
|
845
1180
|
items: []
|
|
846
1181
|
};
|
|
847
1182
|
|
|
848
|
-
var styles$
|
|
1183
|
+
var styles$6 = {"container":"ControlBar-module_container__1GH64","sticky":"ControlBar-module_sticky__6qVoI","lightBackground":"ControlBar-module_lightBackground__3-tGf","darkBackground":"ControlBar-module_darkBackground__31Wv7","controlBarContainer":"ControlBar-module_controlBarContainer__1cxRO","inset":"ControlBar-module_inset__JvBh9","controlBarInner":"ControlBar-module_controlBarInner__39fE9","fadedOut":"ControlBar-module_fadedOut__2sP_3","button":"ControlBar-module_button___4aXE utils-module_unstyledButton__3rgne","playControl":"ControlBar-module_playControl__Vg5et ControlBar-module_button___4aXE utils-module_unstyledButton__3rgne"};
|
|
849
1184
|
|
|
1185
|
+
var _jsxFileName$d = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/PlayPauseButton.js";
|
|
850
1186
|
function PlayPauseButton(props) {
|
|
851
|
-
|
|
852
|
-
t
|
|
1187
|
+
const {
|
|
1188
|
+
t
|
|
1189
|
+
} = useI18n();
|
|
853
1190
|
return /*#__PURE__*/React.createElement("button", {
|
|
854
|
-
className: styles$
|
|
1191
|
+
className: styles$6.playControl,
|
|
855
1192
|
"aria-label": t(props.isPlaying ? 'pause' : 'play', {
|
|
856
1193
|
scope: 'pageflow_scrolled.public.player_controls'
|
|
857
1194
|
}),
|
|
858
|
-
onClick:
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
1195
|
+
onClick: () => props.isPlaying ? props.pause({
|
|
1196
|
+
via: 'playPauseButton'
|
|
1197
|
+
}) : props.play({
|
|
1198
|
+
via: 'playPauseButton'
|
|
1199
|
+
}),
|
|
1200
|
+
__self: this,
|
|
1201
|
+
__source: {
|
|
1202
|
+
fileName: _jsxFileName$d,
|
|
1203
|
+
lineNumber: 10,
|
|
1204
|
+
columnNumber: 5
|
|
864
1205
|
}
|
|
865
1206
|
}, pausePlayIcon(props));
|
|
866
1207
|
}
|
|
867
1208
|
function pausePlayIcon(props) {
|
|
868
1209
|
if (props.isPlaying) {
|
|
869
1210
|
return /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
870
|
-
name: "pause"
|
|
1211
|
+
name: "pause",
|
|
1212
|
+
__self: this,
|
|
1213
|
+
__source: {
|
|
1214
|
+
fileName: _jsxFileName$d,
|
|
1215
|
+
lineNumber: 23,
|
|
1216
|
+
columnNumber: 12
|
|
1217
|
+
}
|
|
871
1218
|
});
|
|
872
1219
|
} else {
|
|
873
1220
|
return /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
874
|
-
name: "play"
|
|
1221
|
+
name: "play",
|
|
1222
|
+
__self: this,
|
|
1223
|
+
__source: {
|
|
1224
|
+
fileName: _jsxFileName$d,
|
|
1225
|
+
lineNumber: 25,
|
|
1226
|
+
columnNumber: 12
|
|
1227
|
+
}
|
|
875
1228
|
});
|
|
876
1229
|
}
|
|
877
1230
|
}
|
|
878
1231
|
|
|
1232
|
+
var _jsxFileName$e = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/WaveformPlayerControls/index.js";
|
|
879
1233
|
function WaveformPlayerControls(props) {
|
|
880
1234
|
var _theme$options$proper, _theme$options$proper2, _theme$options$colors;
|
|
881
|
-
|
|
882
|
-
|
|
1235
|
+
const darkBackground = useDarkBackground();
|
|
1236
|
+
const theme = useTheme();
|
|
883
1237
|
return /*#__PURE__*/React.createElement("div", {
|
|
884
1238
|
onFocus: props.onFocus,
|
|
885
1239
|
onBlur: props.onBlur,
|
|
886
1240
|
onMouseEnter: props.onMouseEnter,
|
|
887
1241
|
onMouseLeave: props.onMouseLeave,
|
|
888
1242
|
"data-testid": "waveform-controls",
|
|
889
|
-
className: classNames(styles$
|
|
1243
|
+
className: classNames(styles$3.container),
|
|
1244
|
+
__self: this,
|
|
1245
|
+
__source: {
|
|
1246
|
+
fileName: _jsxFileName$e,
|
|
1247
|
+
lineNumber: 20,
|
|
1248
|
+
columnNumber: 5
|
|
1249
|
+
}
|
|
890
1250
|
}, props.children, /*#__PURE__*/React.createElement("div", {
|
|
891
|
-
className: styles$
|
|
892
|
-
onClick: props.onPlayerClick
|
|
1251
|
+
className: styles$3.clickMask,
|
|
1252
|
+
onClick: props.onPlayerClick,
|
|
1253
|
+
__self: this,
|
|
1254
|
+
__source: {
|
|
1255
|
+
fileName: _jsxFileName$e,
|
|
1256
|
+
lineNumber: 27,
|
|
1257
|
+
columnNumber: 7
|
|
1258
|
+
}
|
|
893
1259
|
}), /*#__PURE__*/React.createElement(Waveform, {
|
|
894
1260
|
audioFile: props.file,
|
|
895
1261
|
isPlaying: props.isPlaying,
|
|
896
1262
|
inverted: !darkBackground,
|
|
897
1263
|
variant: props.variant,
|
|
898
|
-
|
|
1264
|
+
progressWaveformColor: props.waveformColor,
|
|
1265
|
+
remainingWaveformColor: props.remainingWaveformColor,
|
|
1266
|
+
waveformCursorColor: props.waveformCursorColor,
|
|
899
1267
|
mainColor: ((_theme$options$proper = theme.options.properties) === null || _theme$options$proper === void 0 ? void 0 : (_theme$options$proper2 = _theme$options$proper.root) === null || _theme$options$proper2 === void 0 ? void 0 : _theme$options$proper2.accentColor) || ((_theme$options$colors = theme.options.colors) === null || _theme$options$colors === void 0 ? void 0 : _theme$options$colors.accent),
|
|
900
1268
|
play: props.play,
|
|
901
1269
|
pause: props.pause,
|
|
902
|
-
mediaElementId: props.mediaElementId
|
|
1270
|
+
mediaElementId: props.mediaElementId,
|
|
1271
|
+
__self: this,
|
|
1272
|
+
__source: {
|
|
1273
|
+
fileName: _jsxFileName$e,
|
|
1274
|
+
lineNumber: 28,
|
|
1275
|
+
columnNumber: 7
|
|
1276
|
+
}
|
|
903
1277
|
}), /*#__PURE__*/React.createElement("div", {
|
|
904
|
-
className: styles$
|
|
1278
|
+
className: classNames(styles$3.playControl, {
|
|
1279
|
+
[styles$3.invertPlayButton]: props.invertPlayButton
|
|
1280
|
+
}),
|
|
1281
|
+
__self: this,
|
|
1282
|
+
__source: {
|
|
1283
|
+
fileName: _jsxFileName$e,
|
|
1284
|
+
lineNumber: 40,
|
|
1285
|
+
columnNumber: 7
|
|
1286
|
+
}
|
|
905
1287
|
}, /*#__PURE__*/React.createElement(PlayPauseButton, {
|
|
906
1288
|
isPlaying: props.isPlaying,
|
|
907
1289
|
play: props.play,
|
|
908
|
-
pause: props.pause
|
|
1290
|
+
pause: props.pause,
|
|
1291
|
+
__self: this,
|
|
1292
|
+
__source: {
|
|
1293
|
+
fileName: _jsxFileName$e,
|
|
1294
|
+
lineNumber: 42,
|
|
1295
|
+
columnNumber: 9
|
|
1296
|
+
}
|
|
909
1297
|
})), /*#__PURE__*/React.createElement("div", {
|
|
910
|
-
className: classNames(styles$
|
|
1298
|
+
className: classNames(styles$3.menuBar, darkBackground ? styles$6.darkBackground : styles$6.lightBackground, {
|
|
1299
|
+
[styles$6.inset]: !props.standAlone
|
|
1300
|
+
}),
|
|
1301
|
+
__self: this,
|
|
1302
|
+
__source: {
|
|
1303
|
+
fileName: _jsxFileName$e,
|
|
1304
|
+
lineNumber: 46,
|
|
1305
|
+
columnNumber: 7
|
|
1306
|
+
}
|
|
911
1307
|
}, /*#__PURE__*/React.createElement("div", {
|
|
912
|
-
className: styles$
|
|
1308
|
+
className: styles$3.menuBarInner,
|
|
1309
|
+
__self: this,
|
|
1310
|
+
__source: {
|
|
1311
|
+
fileName: _jsxFileName$e,
|
|
1312
|
+
lineNumber: 49,
|
|
1313
|
+
columnNumber: 9
|
|
1314
|
+
}
|
|
913
1315
|
}, /*#__PURE__*/React.createElement(TimeDisplay, {
|
|
914
1316
|
currentTime: props.currentTime,
|
|
915
|
-
duration: props.duration
|
|
1317
|
+
duration: props.duration,
|
|
1318
|
+
__self: this,
|
|
1319
|
+
__source: {
|
|
1320
|
+
fileName: _jsxFileName$e,
|
|
1321
|
+
lineNumber: 50,
|
|
1322
|
+
columnNumber: 11
|
|
1323
|
+
}
|
|
916
1324
|
}), /*#__PURE__*/React.createElement(TextTracksMenu, {
|
|
917
1325
|
items: props.textTracksMenuItems,
|
|
918
|
-
onItemClick: props.onTextTracksMenuItemClick
|
|
1326
|
+
onItemClick: props.onTextTracksMenuItemClick,
|
|
1327
|
+
__self: this,
|
|
1328
|
+
__source: {
|
|
1329
|
+
fileName: _jsxFileName$e,
|
|
1330
|
+
lineNumber: 52,
|
|
1331
|
+
columnNumber: 11
|
|
1332
|
+
}
|
|
919
1333
|
})), /*#__PURE__*/React.createElement(InlineFileRights, {
|
|
920
1334
|
items: props.inlineFileRightsItems,
|
|
921
1335
|
context: "playerControls",
|
|
922
1336
|
playerControlsFadedOut: false,
|
|
923
|
-
playerControlsStandAlone: props.standAlone
|
|
1337
|
+
playerControlsStandAlone: props.standAlone,
|
|
1338
|
+
__self: this,
|
|
1339
|
+
__source: {
|
|
1340
|
+
fileName: _jsxFileName$e,
|
|
1341
|
+
lineNumber: 55,
|
|
1342
|
+
columnNumber: 9
|
|
1343
|
+
}
|
|
924
1344
|
})));
|
|
925
1345
|
}
|
|
926
1346
|
|
|
927
|
-
var styles$
|
|
1347
|
+
var styles$7 = {"container":"BigPlayPauseButton-module_container__19sKj","fadeOutDelay":"BigPlayPauseButton-module_fadeOutDelay__yoaW6","pointerCursor":"BigPlayPauseButton-module_pointerCursor__2A55P","hideCursor":"BigPlayPauseButton-module_hideCursor__2Hyys","button":"BigPlayPauseButton-module_button__10g4Q utils-module_unstyledButton__3rgne","hidden":"BigPlayPauseButton-module_hidden__1KUzr","animated":"BigPlayPauseButton-module_animated__1MMNq","fadeOut":"BigPlayPauseButton-module_fadeOut__2vcA_","fadeIn":"BigPlayPauseButton-module_fadeIn__1Ge1-"};
|
|
1348
|
+
|
|
1349
|
+
function useFocusHandoff() {
|
|
1350
|
+
const ref1 = useRef();
|
|
1351
|
+
const ref2 = useRef();
|
|
1352
|
+
return [{
|
|
1353
|
+
sourceRef: ref1,
|
|
1354
|
+
targetRef: ref2,
|
|
1355
|
+
name: 'A'
|
|
1356
|
+
}, {
|
|
1357
|
+
sourceRef: ref2,
|
|
1358
|
+
targetRef: ref1,
|
|
1359
|
+
name: 'B'
|
|
1360
|
+
}];
|
|
1361
|
+
}
|
|
1362
|
+
function usePassFocus(inert, {
|
|
1363
|
+
name,
|
|
1364
|
+
sourceRef,
|
|
1365
|
+
targetRef
|
|
1366
|
+
}) {
|
|
1367
|
+
const hasFocusRef = useRef();
|
|
1368
|
+
const passFocusRef = useRef();
|
|
1369
|
+
const setSourceRef = useCallback(source => {
|
|
1370
|
+
if (sourceRef.current) {
|
|
1371
|
+
sourceRef.current.removeEventListener('focusin', updateHasFocus);
|
|
1372
|
+
sourceRef.current.removeEventListener('focusout', updateHasFocus);
|
|
1373
|
+
}
|
|
1374
|
+
sourceRef.current = source;
|
|
1375
|
+
if (sourceRef.current) {
|
|
1376
|
+
sourceRef.current.addEventListener('focusin', updateHasFocus);
|
|
1377
|
+
sourceRef.current.addEventListener('focusout', updateHasFocus);
|
|
1378
|
+
}
|
|
1379
|
+
function updateHasFocus(event) {
|
|
1380
|
+
hasFocusRef.current = event.type === 'focusin';
|
|
1381
|
+
}
|
|
1382
|
+
}, [sourceRef]);
|
|
1383
|
+
if (inert && hasFocusRef.current && !passFocusRef.current) {
|
|
1384
|
+
passFocusRef.current = true;
|
|
1385
|
+
}
|
|
1386
|
+
useEffect(() => {
|
|
1387
|
+
if (inert && passFocusRef.current && targetRef.current) {
|
|
1388
|
+
passFocusRef.current = false;
|
|
1389
|
+
if (targetRef.current.tagName === 'BUTTON') {
|
|
1390
|
+
targetRef.current.focus();
|
|
1391
|
+
} else {
|
|
1392
|
+
targetRef.current.querySelector('button').focus();
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
}, [inert, targetRef, name]);
|
|
1396
|
+
return setSourceRef;
|
|
1397
|
+
}
|
|
928
1398
|
|
|
1399
|
+
var _jsxFileName$f = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/ClassicPlayerControls/BigPlayPauseButton.js";
|
|
929
1400
|
function BigPlayPauseButton(props) {
|
|
930
|
-
|
|
1401
|
+
const {
|
|
1402
|
+
t
|
|
1403
|
+
} = useI18n();
|
|
1404
|
+
const c = classNames(styles$7.button, {
|
|
1405
|
+
[styles$7.hidden]: props.hidden || props.lastControlledVia === 'playPauseButton',
|
|
1406
|
+
[styles$7.fadeIn]: props.unplayed,
|
|
1407
|
+
[styles$7.animated]: !props.unplayed
|
|
1408
|
+
});
|
|
1409
|
+
const inert = props.hidden || !props.unplayed;
|
|
1410
|
+
const ref = usePassFocus(inert, props.focusHandoff);
|
|
931
1411
|
return /*#__PURE__*/React.createElement("div", {
|
|
932
|
-
className: classNames(styles$
|
|
933
|
-
|
|
934
|
-
|
|
1412
|
+
className: classNames(styles$7.container, {
|
|
1413
|
+
[styles$7.hideCursor]: props.hideCursor,
|
|
1414
|
+
[styles$7.hidden]: props.fadedOut,
|
|
1415
|
+
[styles$7.fadeOutDelay]: props.isPlaying,
|
|
1416
|
+
[styles$7.pointerCursor]: !!props.onClick
|
|
1417
|
+
}),
|
|
1418
|
+
onClick: props.onClick,
|
|
1419
|
+
__self: this,
|
|
1420
|
+
__source: {
|
|
1421
|
+
fileName: _jsxFileName$f,
|
|
1422
|
+
lineNumber: 23,
|
|
1423
|
+
columnNumber: 5
|
|
1424
|
+
}
|
|
1425
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
935
1426
|
key: props.isPlaying,
|
|
936
|
-
|
|
1427
|
+
ref: ref,
|
|
1428
|
+
className: c,
|
|
1429
|
+
"aria-label": t('pageflow_scrolled.public.player_controls.play'),
|
|
1430
|
+
inert: inert ? 'true' : undefined,
|
|
1431
|
+
__self: this,
|
|
1432
|
+
__source: {
|
|
1433
|
+
fileName: _jsxFileName$f,
|
|
1434
|
+
lineNumber: 29,
|
|
1435
|
+
columnNumber: 7
|
|
1436
|
+
}
|
|
937
1437
|
}, pausePlayIcon$1(props)));
|
|
938
1438
|
}
|
|
939
1439
|
function pausePlayIcon$1(props) {
|
|
940
1440
|
if (props.unplayed || props.isPlaying) {
|
|
941
1441
|
return /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
942
|
-
name: "play"
|
|
1442
|
+
name: "play",
|
|
1443
|
+
__self: this,
|
|
1444
|
+
__source: {
|
|
1445
|
+
fileName: _jsxFileName$f,
|
|
1446
|
+
lineNumber: 42,
|
|
1447
|
+
columnNumber: 12
|
|
1448
|
+
}
|
|
943
1449
|
});
|
|
944
1450
|
} else {
|
|
945
1451
|
return /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
946
|
-
name: "pause"
|
|
1452
|
+
name: "pause",
|
|
1453
|
+
__self: this,
|
|
1454
|
+
__source: {
|
|
1455
|
+
fileName: _jsxFileName$f,
|
|
1456
|
+
lineNumber: 45,
|
|
1457
|
+
columnNumber: 12
|
|
1458
|
+
}
|
|
947
1459
|
});
|
|
948
1460
|
}
|
|
949
1461
|
}
|
|
950
1462
|
|
|
951
|
-
var styles$
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
1463
|
+
var styles$8 = {"container":"ProgressIndicators-module_container__1QiQJ","wrapper":"ProgressIndicators-module_wrapper__2PCVv","draggable":"ProgressIndicators-module_draggable__1iAE8","bars":"ProgressIndicators-module_bars__2-ddd","progressBar":"ProgressIndicators-module_progressBar__2PYn-","background":"ProgressIndicators-module_background__-x5f_ ProgressIndicators-module_progressBar__2PYn-","loadingProgressBar":"ProgressIndicators-module_loadingProgressBar__YD2GH ProgressIndicators-module_progressBar__2PYn-","playProgressBar":"ProgressIndicators-module_playProgressBar__3mCSX ProgressIndicators-module_progressBar__2PYn-","sliderHandle":"ProgressIndicators-module_sliderHandle__3ArIf","dragging":"ProgressIndicators-module_dragging__3yY3t"};
|
|
1464
|
+
|
|
1465
|
+
var _jsxFileName$g = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/ClassicPlayerControls/ProgressIndicators.js";
|
|
1466
|
+
function ProgressIndicators({
|
|
1467
|
+
currentTime,
|
|
1468
|
+
duration,
|
|
1469
|
+
bufferedEnd,
|
|
1470
|
+
scrubTo,
|
|
1471
|
+
seekTo
|
|
1472
|
+
}) {
|
|
1473
|
+
const {
|
|
1474
|
+
t
|
|
1475
|
+
} = useI18n();
|
|
1476
|
+
const [dragging, setDragging] = useState();
|
|
1477
|
+
const progressBarsContainerWidth = useRef();
|
|
1478
|
+
const positionToTime = useCallback(x => {
|
|
967
1479
|
if (duration && progressBarsContainerWidth.current) {
|
|
968
|
-
|
|
1480
|
+
const fraction = Math.max(0, Math.min(1, x / progressBarsContainerWidth.current));
|
|
969
1481
|
return fraction * duration;
|
|
970
1482
|
} else {
|
|
971
1483
|
return 0;
|
|
972
1484
|
}
|
|
973
1485
|
}, [duration]);
|
|
974
|
-
|
|
1486
|
+
const handleStop = useCallback((mouseEvent, dragEvent) => {
|
|
975
1487
|
setDragging(false);
|
|
976
1488
|
seekTo(positionToTime(dragEvent.x));
|
|
977
1489
|
}, [seekTo, positionToTime]);
|
|
978
|
-
|
|
1490
|
+
const handleDrag = useCallback((mouseEvent, dragEvent) => {
|
|
979
1491
|
setDragging(true);
|
|
980
1492
|
scrubTo(positionToTime(dragEvent.x));
|
|
981
1493
|
}, [scrubTo, positionToTime]);
|
|
982
|
-
|
|
983
|
-
|
|
1494
|
+
const handleKeyDown = useCallback(event => {
|
|
1495
|
+
let destination;
|
|
984
1496
|
if (event.key === 'ArrowLeft') {
|
|
985
1497
|
destination = Math.max(0, currentTime - 1);
|
|
986
1498
|
} else if (event.key === 'ArrowRight') {
|
|
@@ -988,64 +1500,125 @@ function ProgressIndicators(_ref) {
|
|
|
988
1500
|
}
|
|
989
1501
|
seekTo(destination);
|
|
990
1502
|
}, [seekTo, currentTime, duration]);
|
|
991
|
-
|
|
992
|
-
|
|
1503
|
+
const loadProgress = duration > 0 ? Math.min(1, bufferedEnd / duration) : 0;
|
|
1504
|
+
const playProgress = duration > 0 ? Math.min(1, currentTime / duration) : 0;
|
|
993
1505
|
return /*#__PURE__*/React.createElement("div", {
|
|
994
|
-
className: classNames(styles$
|
|
1506
|
+
className: classNames(styles$8.container, {
|
|
1507
|
+
[styles$8.dragging]: dragging
|
|
1508
|
+
}),
|
|
995
1509
|
"aria-label": t('pageflow_scrolled.public.player_controls.progress', {
|
|
996
1510
|
currentTime: formatTime(currentTime),
|
|
997
1511
|
duration: formatTime(duration)
|
|
998
1512
|
}),
|
|
999
1513
|
onKeyDown: handleKeyDown,
|
|
1000
|
-
tabIndex: "0"
|
|
1514
|
+
tabIndex: "0",
|
|
1515
|
+
__self: this,
|
|
1516
|
+
__source: {
|
|
1517
|
+
fileName: _jsxFileName$g,
|
|
1518
|
+
lineNumber: 52,
|
|
1519
|
+
columnNumber: 5
|
|
1520
|
+
}
|
|
1001
1521
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1002
|
-
className: styles$
|
|
1522
|
+
className: styles$8.wrapper,
|
|
1523
|
+
__self: this,
|
|
1524
|
+
__source: {
|
|
1525
|
+
fileName: _jsxFileName$g,
|
|
1526
|
+
lineNumber: 59,
|
|
1527
|
+
columnNumber: 7
|
|
1528
|
+
}
|
|
1003
1529
|
}, /*#__PURE__*/React.createElement(Measure, {
|
|
1004
1530
|
client: true,
|
|
1005
|
-
onResize:
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1531
|
+
onResize: contentRect => progressBarsContainerWidth.current = contentRect.client.width,
|
|
1532
|
+
__self: this,
|
|
1533
|
+
__source: {
|
|
1534
|
+
fileName: _jsxFileName$g,
|
|
1535
|
+
lineNumber: 60,
|
|
1536
|
+
columnNumber: 9
|
|
1537
|
+
}
|
|
1538
|
+
}, ({
|
|
1539
|
+
measureRef
|
|
1540
|
+
}) => /*#__PURE__*/React.createElement(DraggableCore, {
|
|
1541
|
+
onStart: handleDrag,
|
|
1542
|
+
onDrag: handleDrag,
|
|
1543
|
+
onStop: handleStop,
|
|
1544
|
+
__self: this,
|
|
1545
|
+
__source: {
|
|
1546
|
+
fileName: _jsxFileName$g,
|
|
1547
|
+
lineNumber: 63,
|
|
1548
|
+
columnNumber: 13
|
|
1549
|
+
}
|
|
1550
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1551
|
+
className: classNames(styles$8.draggable),
|
|
1552
|
+
__self: this,
|
|
1553
|
+
__source: {
|
|
1554
|
+
fileName: _jsxFileName$g,
|
|
1555
|
+
lineNumber: 66,
|
|
1556
|
+
columnNumber: 15
|
|
1557
|
+
}
|
|
1558
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1559
|
+
ref: measureRef,
|
|
1560
|
+
className: styles$8.bars,
|
|
1561
|
+
__self: this,
|
|
1562
|
+
__source: {
|
|
1563
|
+
fileName: _jsxFileName$g,
|
|
1564
|
+
lineNumber: 67,
|
|
1565
|
+
columnNumber: 17
|
|
1566
|
+
}
|
|
1567
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
1568
|
+
className: styles$8.background,
|
|
1569
|
+
__self: this,
|
|
1570
|
+
__source: {
|
|
1571
|
+
fileName: _jsxFileName$g,
|
|
1572
|
+
lineNumber: 68,
|
|
1573
|
+
columnNumber: 19
|
|
1574
|
+
}
|
|
1575
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
1576
|
+
className: styles$8.loadingProgressBar,
|
|
1577
|
+
style: {
|
|
1578
|
+
width: toPercent(loadProgress)
|
|
1579
|
+
},
|
|
1580
|
+
"data-testid": "loading-progress-bar",
|
|
1581
|
+
__self: this,
|
|
1582
|
+
__source: {
|
|
1583
|
+
fileName: _jsxFileName$g,
|
|
1584
|
+
lineNumber: 69,
|
|
1585
|
+
columnNumber: 19
|
|
1586
|
+
}
|
|
1587
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
1588
|
+
className: styles$8.playProgressBar,
|
|
1589
|
+
style: {
|
|
1590
|
+
width: toPercent(playProgress)
|
|
1591
|
+
},
|
|
1592
|
+
"data-testid": "play-progress-bar",
|
|
1593
|
+
__self: this,
|
|
1594
|
+
__source: {
|
|
1595
|
+
fileName: _jsxFileName$g,
|
|
1596
|
+
lineNumber: 72,
|
|
1597
|
+
columnNumber: 19
|
|
1598
|
+
}
|
|
1599
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
1600
|
+
className: styles$8.sliderHandle,
|
|
1601
|
+
style: {
|
|
1602
|
+
left: toPercent(playProgress)
|
|
1603
|
+
},
|
|
1604
|
+
"data-testid": "slider-handle",
|
|
1605
|
+
__self: this,
|
|
1606
|
+
__source: {
|
|
1607
|
+
fileName: _jsxFileName$g,
|
|
1608
|
+
lineNumber: 75,
|
|
1609
|
+
columnNumber: 19
|
|
1610
|
+
}
|
|
1611
|
+
})))))));
|
|
1041
1612
|
}
|
|
1042
1613
|
function toPercent(value) {
|
|
1043
1614
|
return value > 0 ? value * 100 + '%' : 0;
|
|
1044
1615
|
}
|
|
1045
1616
|
|
|
1617
|
+
var _jsxFileName$h = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/ClassicPlayerControls/QualityMenu.js";
|
|
1046
1618
|
function QualityMenu(props) {
|
|
1047
|
-
|
|
1048
|
-
t
|
|
1619
|
+
const {
|
|
1620
|
+
t
|
|
1621
|
+
} = useI18n();
|
|
1049
1622
|
if (props.items.length < 2) {
|
|
1050
1623
|
return null;
|
|
1051
1624
|
}
|
|
@@ -1055,97 +1628,215 @@ function QualityMenu(props) {
|
|
|
1055
1628
|
subMenuItems: props.items,
|
|
1056
1629
|
subMenuExpanded: props.subMenuExpanded,
|
|
1057
1630
|
onSubMenuItemClick: props.onItemClick,
|
|
1058
|
-
x: true
|
|
1631
|
+
x: true,
|
|
1632
|
+
__self: this,
|
|
1633
|
+
__source: {
|
|
1634
|
+
fileName: _jsxFileName$h,
|
|
1635
|
+
lineNumber: 15,
|
|
1636
|
+
columnNumber: 5
|
|
1637
|
+
}
|
|
1059
1638
|
});
|
|
1060
1639
|
}
|
|
1640
|
+
QualityMenu.propTypes = {
|
|
1641
|
+
items: MenuBarButton.propTypes.subMenuItems,
|
|
1642
|
+
onMenuItemClick: PropTypes.func
|
|
1643
|
+
};
|
|
1061
1644
|
QualityMenu.defaultProps = {
|
|
1062
1645
|
items: []
|
|
1063
1646
|
};
|
|
1064
1647
|
|
|
1648
|
+
var _jsxFileName$i = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/ClassicPlayerControls/index.js";
|
|
1065
1649
|
function ClassicPlayerControls(props) {
|
|
1066
|
-
|
|
1067
|
-
|
|
1650
|
+
const darkBackground = useDarkBackground();
|
|
1651
|
+
const [bigPlayButtonFocusHandoff, controlBarFocusHandoff] = useFocusHandoff();
|
|
1068
1652
|
return /*#__PURE__*/React.createElement("div", {
|
|
1069
|
-
className: classNames(styles$
|
|
1653
|
+
className: classNames(styles$6.container, {
|
|
1654
|
+
[styles$6.sticky]: props.sticky
|
|
1655
|
+
}),
|
|
1656
|
+
__self: this,
|
|
1657
|
+
__source: {
|
|
1658
|
+
fileName: _jsxFileName$i,
|
|
1659
|
+
lineNumber: 21,
|
|
1660
|
+
columnNumber: 5
|
|
1661
|
+
}
|
|
1070
1662
|
}, props.children, !props.standAlone && /*#__PURE__*/React.createElement(BigPlayPauseButton, {
|
|
1663
|
+
focusHandoff: bigPlayButtonFocusHandoff,
|
|
1071
1664
|
unplayed: props.unplayed,
|
|
1072
1665
|
isPlaying: props.isPlaying,
|
|
1073
1666
|
lastControlledVia: props.lastControlledVia,
|
|
1074
1667
|
hidden: props.hideBigPlayButton,
|
|
1075
1668
|
fadedOut: props.fadedOut,
|
|
1076
1669
|
hideCursor: props.isPlaying && props.inactive,
|
|
1077
|
-
onClick: props.onPlayerClick
|
|
1078
|
-
|
|
1670
|
+
onClick: props.onPlayerClick,
|
|
1671
|
+
__self: this,
|
|
1672
|
+
__source: {
|
|
1673
|
+
fileName: _jsxFileName$i,
|
|
1674
|
+
lineNumber: 25,
|
|
1675
|
+
columnNumber: 8
|
|
1676
|
+
}
|
|
1677
|
+
}), !props.hideControlBar && /*#__PURE__*/React.createElement(ControlBar, Object.assign({}, props, {
|
|
1678
|
+
darkBackground: darkBackground,
|
|
1679
|
+
focusHandoff: controlBarFocusHandoff,
|
|
1680
|
+
__self: this,
|
|
1681
|
+
__source: {
|
|
1682
|
+
fileName: _jsxFileName$i,
|
|
1683
|
+
lineNumber: 34,
|
|
1684
|
+
columnNumber: 8
|
|
1685
|
+
}
|
|
1686
|
+
})));
|
|
1079
1687
|
}
|
|
1080
|
-
function
|
|
1688
|
+
function ControlBar({
|
|
1689
|
+
darkBackground,
|
|
1690
|
+
focusHandoff,
|
|
1691
|
+
...props
|
|
1692
|
+
}) {
|
|
1693
|
+
const hidden = !props.standAlone && props.unplayed || props.fadedOut;
|
|
1694
|
+
const inactive = props.isPlaying && props.inactive;
|
|
1695
|
+
const fadedOut = hidden || inactive;
|
|
1696
|
+
const focusHandoffRef = usePassFocus(hidden, focusHandoff);
|
|
1081
1697
|
return /*#__PURE__*/React.createElement("div", {
|
|
1082
1698
|
onFocus: props.onFocus,
|
|
1083
1699
|
onBlur: props.onBlur,
|
|
1084
1700
|
onMouseEnter: props.onMouseEnter,
|
|
1085
1701
|
onMouseLeave: props.onMouseLeave,
|
|
1086
|
-
className: classNames(styles$
|
|
1702
|
+
className: classNames(styles$6.controlBarContainer, darkBackground ? styles$6.darkBackground : styles$6.lightBackground, {
|
|
1703
|
+
[styles$6.inset]: !props.standAlone,
|
|
1704
|
+
[styles$6.fadedOut]: fadedOut
|
|
1705
|
+
}),
|
|
1706
|
+
__self: this,
|
|
1707
|
+
__source: {
|
|
1708
|
+
fileName: _jsxFileName$i,
|
|
1709
|
+
lineNumber: 49,
|
|
1710
|
+
columnNumber: 5
|
|
1711
|
+
}
|
|
1087
1712
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1088
|
-
|
|
1713
|
+
ref: focusHandoffRef,
|
|
1714
|
+
inert: hidden ? 'true' : undefined,
|
|
1715
|
+
className: styles$6.controlBarInner,
|
|
1716
|
+
__self: this,
|
|
1717
|
+
__source: {
|
|
1718
|
+
fileName: _jsxFileName$i,
|
|
1719
|
+
lineNumber: 59,
|
|
1720
|
+
columnNumber: 7
|
|
1721
|
+
}
|
|
1089
1722
|
}, /*#__PURE__*/React.createElement(PlayPauseButton, {
|
|
1090
1723
|
isPlaying: props.isPlaying,
|
|
1091
1724
|
play: props.play,
|
|
1092
|
-
pause: props.pause
|
|
1725
|
+
pause: props.pause,
|
|
1726
|
+
__self: this,
|
|
1727
|
+
__source: {
|
|
1728
|
+
fileName: _jsxFileName$i,
|
|
1729
|
+
lineNumber: 62,
|
|
1730
|
+
columnNumber: 9
|
|
1731
|
+
}
|
|
1093
1732
|
}), /*#__PURE__*/React.createElement(ProgressIndicators, {
|
|
1094
1733
|
currentTime: props.currentTime,
|
|
1095
1734
|
duration: props.duration,
|
|
1096
1735
|
bufferedEnd: props.bufferedEnd,
|
|
1097
1736
|
scrubTo: props.scrubTo,
|
|
1098
|
-
seekTo: props.seekTo
|
|
1737
|
+
seekTo: props.seekTo,
|
|
1738
|
+
__self: this,
|
|
1739
|
+
__source: {
|
|
1740
|
+
fileName: _jsxFileName$i,
|
|
1741
|
+
lineNumber: 65,
|
|
1742
|
+
columnNumber: 9
|
|
1743
|
+
}
|
|
1099
1744
|
}), /*#__PURE__*/React.createElement(TimeDisplay, {
|
|
1100
1745
|
currentTime: props.currentTime,
|
|
1101
|
-
duration: props.duration
|
|
1746
|
+
duration: props.duration,
|
|
1747
|
+
__self: this,
|
|
1748
|
+
__source: {
|
|
1749
|
+
fileName: _jsxFileName$i,
|
|
1750
|
+
lineNumber: 70,
|
|
1751
|
+
columnNumber: 9
|
|
1752
|
+
}
|
|
1102
1753
|
}), /*#__PURE__*/React.createElement(TextTracksMenu, {
|
|
1103
1754
|
items: props.textTracksMenuItems,
|
|
1104
|
-
onItemClick: props.onTextTracksMenuItemClick
|
|
1755
|
+
onItemClick: props.onTextTracksMenuItemClick,
|
|
1756
|
+
__self: this,
|
|
1757
|
+
__source: {
|
|
1758
|
+
fileName: _jsxFileName$i,
|
|
1759
|
+
lineNumber: 72,
|
|
1760
|
+
columnNumber: 9
|
|
1761
|
+
}
|
|
1105
1762
|
}), /*#__PURE__*/React.createElement(QualityMenu, {
|
|
1106
1763
|
items: props.qualityMenuItems,
|
|
1107
1764
|
onItemClick: props.onQualityMenuItemClick,
|
|
1108
|
-
subMenuExpanded: props.qualityMenuExpanded
|
|
1765
|
+
subMenuExpanded: props.qualityMenuExpanded,
|
|
1766
|
+
__self: this,
|
|
1767
|
+
__source: {
|
|
1768
|
+
fileName: _jsxFileName$i,
|
|
1769
|
+
lineNumber: 74,
|
|
1770
|
+
columnNumber: 9
|
|
1771
|
+
}
|
|
1109
1772
|
})), /*#__PURE__*/React.createElement(InlineFileRights, {
|
|
1110
1773
|
items: props.inlineFileRightsItems,
|
|
1111
1774
|
context: "playerControls",
|
|
1112
1775
|
playerControlsFadedOut: fadedOut,
|
|
1113
|
-
playerControlsStandAlone: props.standAlone
|
|
1776
|
+
playerControlsStandAlone: props.standAlone,
|
|
1777
|
+
__self: this,
|
|
1778
|
+
__source: {
|
|
1779
|
+
fileName: _jsxFileName$i,
|
|
1780
|
+
lineNumber: 78,
|
|
1781
|
+
columnNumber: 7
|
|
1782
|
+
}
|
|
1114
1783
|
}));
|
|
1115
1784
|
}
|
|
1116
1785
|
|
|
1786
|
+
var _jsxFileName$j = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PlayerControls/index.js";
|
|
1117
1787
|
function PlayerControls(props) {
|
|
1118
1788
|
var _props$variant;
|
|
1119
|
-
|
|
1120
|
-
return /*#__PURE__*/React.createElement(ControlComponent, props
|
|
1789
|
+
const ControlComponent = ((_props$variant = props.variant) === null || _props$variant === void 0 ? void 0 : _props$variant.startsWith('waveform')) ? WaveformPlayerControls : ClassicPlayerControls;
|
|
1790
|
+
return /*#__PURE__*/React.createElement(ControlComponent, Object.assign({}, props, {
|
|
1791
|
+
__self: this,
|
|
1792
|
+
__source: {
|
|
1793
|
+
fileName: _jsxFileName$j,
|
|
1794
|
+
lineNumber: 13,
|
|
1795
|
+
columnNumber: 5
|
|
1796
|
+
}
|
|
1797
|
+
}));
|
|
1121
1798
|
}
|
|
1122
1799
|
PlayerControls.defaultProps = {
|
|
1123
1800
|
currentTime: 200,
|
|
1124
1801
|
duration: 600,
|
|
1125
1802
|
bufferedEnd: 400,
|
|
1126
1803
|
isPlaying: false,
|
|
1127
|
-
play:
|
|
1128
|
-
pause:
|
|
1129
|
-
scrubTo:
|
|
1130
|
-
seekTo:
|
|
1804
|
+
play: () => {},
|
|
1805
|
+
pause: () => {},
|
|
1806
|
+
scrubTo: () => {},
|
|
1807
|
+
seekTo: () => {},
|
|
1131
1808
|
inset: false
|
|
1132
1809
|
};
|
|
1133
1810
|
|
|
1811
|
+
// Whether the player controls should auto-hide because the user is
|
|
1812
|
+
// idle and not interacting with them. Shared by the control bar and by
|
|
1813
|
+
// chrome rendered alongside it (e.g. the fullscreen button) so they
|
|
1814
|
+
// fade in sync.
|
|
1815
|
+
function usePlayerControlsInactive(playerState) {
|
|
1816
|
+
const focusOutlineVisible = useFocusOutlineVisible();
|
|
1817
|
+
return (playerState.userIdle || !playerState.userHovering) && (!focusOutlineVisible || !playerState.focusInsideControls) && !playerState.userHoveringControls;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1820
|
+
var _jsxFileName$k = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/MediaPlayerControls.js";
|
|
1134
1821
|
function MediaPlayerControls(props) {
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
t
|
|
1139
|
-
|
|
1822
|
+
const playerState = props.playerState;
|
|
1823
|
+
const playerActions = props.playerActions;
|
|
1824
|
+
const {
|
|
1825
|
+
t
|
|
1826
|
+
} = useI18n();
|
|
1827
|
+
const textTracks = useTextTracks({
|
|
1140
1828
|
file: props.file,
|
|
1141
1829
|
defaultTextTrackFilePermaId: props.defaultTextTrackFilePermaId,
|
|
1142
1830
|
captionsByDefault: useMediaMuted()
|
|
1143
1831
|
});
|
|
1144
|
-
|
|
1832
|
+
const controlsInactive = usePlayerControlsInactive(playerState);
|
|
1145
1833
|
return /*#__PURE__*/React.createElement(PlayerControls, Object.assign({
|
|
1146
1834
|
type: props.type,
|
|
1147
1835
|
variant: props.configuration.playerControlVariant,
|
|
1148
1836
|
waveformColor: props.configuration.waveformColor,
|
|
1837
|
+
remainingWaveformColor: props.configuration.remainingWaveformColor,
|
|
1838
|
+
waveformCursorColor: props.configuration.waveformCursorColor,
|
|
1839
|
+
invertPlayButton: props.configuration.invertPlayButton,
|
|
1149
1840
|
mediaElementId: playerState.mediaElementId,
|
|
1150
1841
|
currentTime: playerState.scrubbingAt !== undefined ? playerState.scrubbingAt : playerState.currentTime,
|
|
1151
1842
|
bufferedEnd: playerState.bufferedEnd,
|
|
@@ -1153,7 +1844,7 @@ function MediaPlayerControls(props) {
|
|
|
1153
1844
|
isPlaying: playerState.shouldPlay,
|
|
1154
1845
|
unplayed: playerState.unplayed,
|
|
1155
1846
|
lastControlledVia: playerState.lastControlledVia,
|
|
1156
|
-
inactive: props.autoHide &&
|
|
1847
|
+
inactive: props.autoHide && controlsInactive,
|
|
1157
1848
|
onFocus: playerActions.focusEnteredControls,
|
|
1158
1849
|
onBlur: playerActions.focusLeftControls,
|
|
1159
1850
|
onMouseEnter: playerActions.mouseEnteredControls,
|
|
@@ -1166,7 +1857,14 @@ function MediaPlayerControls(props) {
|
|
|
1166
1857
|
onTextTracksMenuItemClick: textTracks.select,
|
|
1167
1858
|
qualityMenuItems: props.qualityMenuItems,
|
|
1168
1859
|
onQualityMenuItemClick: props.onQualityMenuItemClick
|
|
1169
|
-
}, props
|
|
1860
|
+
}, props, {
|
|
1861
|
+
__self: this,
|
|
1862
|
+
__source: {
|
|
1863
|
+
fileName: _jsxFileName$k,
|
|
1864
|
+
lineNumber: 22,
|
|
1865
|
+
columnNumber: 5
|
|
1866
|
+
}
|
|
1867
|
+
}));
|
|
1170
1868
|
}
|
|
1171
1869
|
MediaPlayerControls.defaultProps = {
|
|
1172
1870
|
configuration: {}
|
|
@@ -1183,104 +1881,153 @@ function getTextTracksMenuItems(textTracks, t) {
|
|
|
1183
1881
|
value: 'auto',
|
|
1184
1882
|
label: textTracks.autoDisplayLabel,
|
|
1185
1883
|
active: textTracks.mode === 'auto'
|
|
1186
|
-
}
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
};
|
|
1192
|
-
})));
|
|
1884
|
+
}, ...textTracks.files.map(textTrackFile => ({
|
|
1885
|
+
value: textTrackFile.id,
|
|
1886
|
+
label: textTrackFile.displayLabel,
|
|
1887
|
+
active: textTracks.mode === 'user' && textTrackFile.id === textTracks.activeFileId
|
|
1888
|
+
}))];
|
|
1193
1889
|
}
|
|
1194
1890
|
|
|
1195
|
-
var
|
|
1196
|
-
function VideoPlayerControls(
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
t = _useI18n.t;
|
|
1891
|
+
var _jsxFileName$l = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/VideoPlayerControls.js";
|
|
1892
|
+
function VideoPlayerControls({
|
|
1893
|
+
videoFile,
|
|
1894
|
+
...props
|
|
1895
|
+
}) {
|
|
1896
|
+
const [activeQuality, setActiveQuality] = useVideoQualitySetting();
|
|
1897
|
+
const availableQualities = useAvailableQualities(videoFile);
|
|
1898
|
+
const {
|
|
1899
|
+
t
|
|
1900
|
+
} = useI18n();
|
|
1206
1901
|
return /*#__PURE__*/React.createElement(MediaPlayerControls, Object.assign({}, props, {
|
|
1207
1902
|
file: videoFile,
|
|
1208
1903
|
autoHide: true,
|
|
1209
1904
|
qualityMenuItems: getQualityMenuItems(availableQualities, activeQuality, t),
|
|
1210
|
-
onQualityMenuItemClick: setActiveQuality
|
|
1905
|
+
onQualityMenuItemClick: setActiveQuality,
|
|
1906
|
+
__self: this,
|
|
1907
|
+
__source: {
|
|
1908
|
+
fileName: _jsxFileName$l,
|
|
1909
|
+
lineNumber: 14,
|
|
1910
|
+
columnNumber: 5
|
|
1911
|
+
}
|
|
1211
1912
|
}));
|
|
1212
1913
|
}
|
|
1213
1914
|
function getQualityMenuItems(availableQualities, activeQuality, t) {
|
|
1214
|
-
return availableQualities.map(
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
};
|
|
1223
|
-
});
|
|
1915
|
+
return availableQualities.map(quality => ({
|
|
1916
|
+
value: quality,
|
|
1917
|
+
label: t(`pageflow_scrolled.public.video_qualities.labels.${quality}`),
|
|
1918
|
+
annotation: t(`pageflow_scrolled.public.video_qualities.annotations.${quality}`, {
|
|
1919
|
+
defaultValue: ''
|
|
1920
|
+
}),
|
|
1921
|
+
active: activeQuality === quality
|
|
1922
|
+
}));
|
|
1224
1923
|
}
|
|
1225
1924
|
|
|
1226
|
-
var
|
|
1227
|
-
function AudioPlayerControls(
|
|
1228
|
-
|
|
1229
|
-
|
|
1925
|
+
var _jsxFileName$m = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/AudioPlayerControls.js";
|
|
1926
|
+
function AudioPlayerControls({
|
|
1927
|
+
audioFile,
|
|
1928
|
+
...props
|
|
1929
|
+
}) {
|
|
1230
1930
|
return /*#__PURE__*/React.createElement(MediaPlayerControls, Object.assign({}, props, {
|
|
1231
|
-
file: audioFile
|
|
1931
|
+
file: audioFile,
|
|
1932
|
+
__self: this,
|
|
1933
|
+
__source: {
|
|
1934
|
+
fileName: _jsxFileName$m,
|
|
1935
|
+
lineNumber: 7,
|
|
1936
|
+
columnNumber: 5
|
|
1937
|
+
}
|
|
1232
1938
|
}));
|
|
1233
1939
|
}
|
|
1234
1940
|
|
|
1235
|
-
var
|
|
1236
|
-
|
|
1237
|
-
});
|
|
1941
|
+
var _jsxFileName$n = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Panorama/index.js";
|
|
1942
|
+
const Viewer = React.lazy(() => import('./Viewer-1482ca34.js'));
|
|
1238
1943
|
function Panorama(props) {
|
|
1239
1944
|
return /*#__PURE__*/React.createElement(Suspense, {
|
|
1240
|
-
fallback: /*#__PURE__*/React.createElement("div",
|
|
1241
|
-
|
|
1945
|
+
fallback: /*#__PURE__*/React.createElement("div", {
|
|
1946
|
+
__self: this,
|
|
1947
|
+
__source: {
|
|
1948
|
+
fileName: _jsxFileName$n,
|
|
1949
|
+
lineNumber: 7,
|
|
1950
|
+
columnNumber: 25
|
|
1951
|
+
}
|
|
1952
|
+
}),
|
|
1953
|
+
__self: this,
|
|
1954
|
+
__source: {
|
|
1955
|
+
fileName: _jsxFileName$n,
|
|
1956
|
+
lineNumber: 7,
|
|
1957
|
+
columnNumber: 5
|
|
1958
|
+
}
|
|
1959
|
+
}, /*#__PURE__*/React.createElement(Viewer, Object.assign({}, props, {
|
|
1960
|
+
__self: this,
|
|
1961
|
+
__source: {
|
|
1962
|
+
fileName: _jsxFileName$n,
|
|
1963
|
+
lineNumber: 8,
|
|
1964
|
+
columnNumber: 7
|
|
1965
|
+
}
|
|
1966
|
+
})));
|
|
1242
1967
|
}
|
|
1243
1968
|
|
|
1244
|
-
var
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
props = _objectWithoutProperties(_ref, _excluded$2);
|
|
1969
|
+
var _jsxFileName$o = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/ExpandableImage/index.js";
|
|
1970
|
+
const Viewer$1 = React.lazy(() => import('./Viewer-70504231.js'));
|
|
1971
|
+
function ExpandableImage({
|
|
1972
|
+
enabled,
|
|
1973
|
+
...props
|
|
1974
|
+
}) {
|
|
1251
1975
|
if (!enabled) {
|
|
1252
1976
|
return props.children;
|
|
1253
1977
|
}
|
|
1254
1978
|
return /*#__PURE__*/React.createElement(Suspense, {
|
|
1255
|
-
fallback: /*#__PURE__*/React.createElement("div",
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1979
|
+
fallback: /*#__PURE__*/React.createElement("div", {
|
|
1980
|
+
__self: this,
|
|
1981
|
+
__source: {
|
|
1982
|
+
fileName: _jsxFileName$o,
|
|
1983
|
+
lineNumber: 11,
|
|
1984
|
+
columnNumber: 25
|
|
1985
|
+
}
|
|
1986
|
+
}),
|
|
1987
|
+
__self: this,
|
|
1988
|
+
__source: {
|
|
1989
|
+
fileName: _jsxFileName$o,
|
|
1990
|
+
lineNumber: 11,
|
|
1991
|
+
columnNumber: 5
|
|
1992
|
+
}
|
|
1993
|
+
}, /*#__PURE__*/React.createElement(Viewer$1, Object.assign({}, props, {
|
|
1994
|
+
__self: this,
|
|
1995
|
+
__source: {
|
|
1996
|
+
fileName: _jsxFileName$o,
|
|
1997
|
+
lineNumber: 12,
|
|
1998
|
+
columnNumber: 7
|
|
1999
|
+
}
|
|
2000
|
+
})));
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
var styles$9 = {"nav":"PaginationIndicator-module_nav__cY6JE","item":"PaginationIndicator-module_item__O7cZ-","current":"PaginationIndicator-module_current__1wxHj"};
|
|
2004
|
+
|
|
2005
|
+
var _jsxFileName$p = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/PaginationIndicator.js";
|
|
2006
|
+
function PaginationIndicator({
|
|
2007
|
+
itemCount,
|
|
2008
|
+
currentIndex,
|
|
2009
|
+
scrollerRef,
|
|
2010
|
+
navAriaLabelTranslationKey,
|
|
2011
|
+
itemAriaLabelTranslationKey,
|
|
2012
|
+
onItemClick
|
|
2013
|
+
}) {
|
|
2014
|
+
const {
|
|
2015
|
+
t
|
|
2016
|
+
} = useI18n$1();
|
|
2017
|
+
const navRef = useRef();
|
|
2018
|
+
const theme = useTheme$1();
|
|
2019
|
+
const currentItemFlex = theme.options.properties.root.paginationIndicatorCurrentItemFlex || 3;
|
|
2020
|
+
useEffect(() => {
|
|
1274
2021
|
if (!(currentItemFlex > 1)) {
|
|
1275
2022
|
return;
|
|
1276
2023
|
}
|
|
1277
|
-
|
|
2024
|
+
const timeline = new window.ScrollTimeline({
|
|
1278
2025
|
source: scrollerRef.current,
|
|
1279
2026
|
axis: 'inline'
|
|
1280
2027
|
});
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
2028
|
+
const animations = [...navRef.current.children].map((element, index) => {
|
|
2029
|
+
const start = 1 / Math.max(itemCount - 1, 1) * (index - 1);
|
|
2030
|
+
const end = 1 / Math.max(itemCount - 1, 1) * (index + 1);
|
|
1284
2031
|
return element.animate([start >= 0 && {
|
|
1285
2032
|
flex: 1,
|
|
1286
2033
|
offset: start
|
|
@@ -1291,48 +2038,55 @@ function PaginationIndicator(_ref) {
|
|
|
1291
2038
|
offset: end
|
|
1292
2039
|
}].filter(Boolean), {
|
|
1293
2040
|
easing: 'linear',
|
|
1294
|
-
timeline
|
|
2041
|
+
timeline
|
|
1295
2042
|
});
|
|
1296
2043
|
});
|
|
1297
|
-
return
|
|
1298
|
-
return animations.forEach(function (animation) {
|
|
1299
|
-
return animation.cancel();
|
|
1300
|
-
});
|
|
1301
|
-
};
|
|
2044
|
+
return () => animations.forEach(animation => animation.cancel());
|
|
1302
2045
|
}, [currentItemFlex, scrollerRef, itemCount]);
|
|
1303
2046
|
return /*#__PURE__*/React.createElement("nav", {
|
|
1304
2047
|
ref: navRef,
|
|
1305
|
-
className: styles$
|
|
2048
|
+
className: styles$9.nav,
|
|
1306
2049
|
"aria-label": t(navAriaLabelTranslationKey),
|
|
1307
2050
|
style: {
|
|
1308
|
-
aspectRatio:
|
|
2051
|
+
aspectRatio: `${itemCount + 2} / 1`
|
|
2052
|
+
},
|
|
2053
|
+
__self: this,
|
|
2054
|
+
__source: {
|
|
2055
|
+
fileName: _jsxFileName$p,
|
|
2056
|
+
lineNumber: 54,
|
|
2057
|
+
columnNumber: 5
|
|
1309
2058
|
}
|
|
1310
|
-
}, Array(itemCount).fill().map(
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
2059
|
+
}, Array(itemCount).fill().map((_, index) => /*#__PURE__*/React.createElement("button", {
|
|
2060
|
+
key: index,
|
|
2061
|
+
className: classNames(styles$9.item, {
|
|
2062
|
+
[styles$9.current]: index === currentIndex
|
|
2063
|
+
}),
|
|
2064
|
+
"aria-label": t(itemAriaLabelTranslationKey, {
|
|
2065
|
+
index
|
|
2066
|
+
}),
|
|
2067
|
+
"aria-current": index === currentIndex,
|
|
2068
|
+
onClick: () => onItemClick(index),
|
|
2069
|
+
__self: this,
|
|
2070
|
+
__source: {
|
|
2071
|
+
fileName: _jsxFileName$p,
|
|
2072
|
+
lineNumber: 59,
|
|
2073
|
+
columnNumber: 9
|
|
2074
|
+
}
|
|
2075
|
+
})));
|
|
1323
2076
|
}
|
|
1324
2077
|
|
|
1325
2078
|
// from https://github.com/n8tb1t/use-scroll-position
|
|
1326
|
-
|
|
1327
|
-
function getScrollPosition(
|
|
1328
|
-
|
|
1329
|
-
|
|
2079
|
+
const isBrowser = typeof window !== `undefined`;
|
|
2080
|
+
function getScrollPosition({
|
|
2081
|
+
element,
|
|
2082
|
+
useWindow
|
|
2083
|
+
}) {
|
|
1330
2084
|
if (!isBrowser) return {
|
|
1331
2085
|
x: 0,
|
|
1332
2086
|
y: 0
|
|
1333
2087
|
};
|
|
1334
|
-
|
|
1335
|
-
|
|
2088
|
+
const target = element ? element.current : document.body;
|
|
2089
|
+
const position = target.getBoundingClientRect();
|
|
1336
2090
|
return useWindow ? {
|
|
1337
2091
|
x: window.scrollX,
|
|
1338
2092
|
y: window.scrollY
|
|
@@ -1342,27 +2096,27 @@ function getScrollPosition(_ref) {
|
|
|
1342
2096
|
};
|
|
1343
2097
|
}
|
|
1344
2098
|
function useScrollPosition(effect, deps, element, useWindow, wait) {
|
|
1345
|
-
|
|
1346
|
-
useWindow
|
|
2099
|
+
const position = useRef(getScrollPosition({
|
|
2100
|
+
useWindow
|
|
1347
2101
|
}));
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
element
|
|
1352
|
-
useWindow
|
|
2102
|
+
let throttleTimeout = null;
|
|
2103
|
+
const callBack = () => {
|
|
2104
|
+
const currPos = getScrollPosition({
|
|
2105
|
+
element,
|
|
2106
|
+
useWindow
|
|
1353
2107
|
});
|
|
1354
2108
|
effect({
|
|
1355
2109
|
prevPos: position.current,
|
|
1356
|
-
currPos
|
|
2110
|
+
currPos
|
|
1357
2111
|
});
|
|
1358
2112
|
position.current = currPos;
|
|
1359
2113
|
throttleTimeout = null;
|
|
1360
2114
|
};
|
|
1361
|
-
useIsomorphicLayoutEffect(
|
|
2115
|
+
useIsomorphicLayoutEffect(() => {
|
|
1362
2116
|
if (!isBrowser) {
|
|
1363
2117
|
return;
|
|
1364
2118
|
}
|
|
1365
|
-
|
|
2119
|
+
const handleScroll = () => {
|
|
1366
2120
|
if (wait) {
|
|
1367
2121
|
if (throttleTimeout === null) {
|
|
1368
2122
|
// Todo: store in useRef hook?
|
|
@@ -1373,9 +2127,7 @@ function useScrollPosition(effect, deps, element, useWindow, wait) {
|
|
|
1373
2127
|
}
|
|
1374
2128
|
};
|
|
1375
2129
|
window.addEventListener('scroll', handleScroll);
|
|
1376
|
-
return
|
|
1377
|
-
return window.removeEventListener('scroll', handleScroll);
|
|
1378
|
-
};
|
|
2130
|
+
return () => window.removeEventListener('scroll', handleScroll);
|
|
1379
2131
|
}, deps);
|
|
1380
2132
|
}
|
|
1381
2133
|
useScrollPosition.defaultProps = {
|
|
@@ -1385,41 +2137,97 @@ useScrollPosition.defaultProps = {
|
|
|
1385
2137
|
wait: null
|
|
1386
2138
|
};
|
|
1387
2139
|
|
|
1388
|
-
var
|
|
2140
|
+
var _jsxFileName$q = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/EditableInlineText.js";
|
|
2141
|
+
const EditableInlineText = extensible('EditableInlineText', function EditableInlineText({
|
|
2142
|
+
value,
|
|
2143
|
+
hyphens,
|
|
2144
|
+
defaultValue = ''
|
|
2145
|
+
}) {
|
|
1389
2146
|
var _value$, _value$$children$;
|
|
1390
|
-
|
|
1391
|
-
hyphens = _ref.hyphens,
|
|
1392
|
-
_ref$defaultValue = _ref.defaultValue,
|
|
1393
|
-
defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue;
|
|
1394
|
-
var text = value ? (_value$ = value[0]) === null || _value$ === void 0 ? void 0 : (_value$$children$ = _value$.children[0]) === null || _value$$children$ === void 0 ? void 0 : _value$$children$.text : defaultValue;
|
|
2147
|
+
const text = value ? (_value$ = value[0]) === null || _value$ === void 0 ? void 0 : (_value$$children$ = _value$.children[0]) === null || _value$$children$ === void 0 ? void 0 : _value$$children$.text : defaultValue;
|
|
1395
2148
|
return /*#__PURE__*/React.createElement("span", {
|
|
1396
|
-
className: classNames(frontendStyles.root, frontendStyles.textEffects, frontendStyles[
|
|
1397
|
-
|
|
2149
|
+
className: classNames(frontendStyles.root, frontendStyles.textEffects, frontendStyles[`hyphens-${hyphens}`]),
|
|
2150
|
+
__self: this,
|
|
2151
|
+
__source: {
|
|
2152
|
+
fileName: _jsxFileName$q,
|
|
2153
|
+
lineNumber: 14,
|
|
2154
|
+
columnNumber: 7
|
|
2155
|
+
}
|
|
2156
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
2157
|
+
__self: this,
|
|
2158
|
+
__source: {
|
|
2159
|
+
fileName: _jsxFileName$q,
|
|
2160
|
+
lineNumber: 17,
|
|
2161
|
+
columnNumber: 9
|
|
2162
|
+
}
|
|
2163
|
+
}, text));
|
|
1398
2164
|
});
|
|
1399
2165
|
|
|
1400
|
-
var
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
2166
|
+
var _jsxFileName$r = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/EditableLink.js";
|
|
2167
|
+
const EditableLink = extensible('EditableLink', function EditableLink({
|
|
2168
|
+
className,
|
|
2169
|
+
href,
|
|
2170
|
+
openInNewTab,
|
|
2171
|
+
onClick,
|
|
2172
|
+
children
|
|
2173
|
+
}) {
|
|
1405
2174
|
return /*#__PURE__*/React.createElement(Link, {
|
|
1406
2175
|
href: href,
|
|
1407
2176
|
openInNewTab: openInNewTab,
|
|
1408
2177
|
attributes: {
|
|
1409
|
-
className
|
|
2178
|
+
className,
|
|
2179
|
+
onClick
|
|
1410
2180
|
},
|
|
1411
|
-
children: children
|
|
2181
|
+
children: children,
|
|
2182
|
+
__self: this,
|
|
2183
|
+
__source: {
|
|
2184
|
+
fileName: _jsxFileName$r,
|
|
2185
|
+
lineNumber: 10,
|
|
2186
|
+
columnNumber: 7
|
|
2187
|
+
}
|
|
1412
2188
|
});
|
|
1413
2189
|
});
|
|
1414
2190
|
|
|
1415
|
-
var
|
|
1416
|
-
|
|
2191
|
+
var _jsxFileName$s = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Placeholder.js";
|
|
2192
|
+
const Placeholder = extensible('Placeholder', function Placeholder() {
|
|
2193
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
2194
|
+
className: styles$e.placeholder,
|
|
2195
|
+
__self: this,
|
|
2196
|
+
__source: {
|
|
2197
|
+
fileName: _jsxFileName$s,
|
|
2198
|
+
lineNumber: 6,
|
|
2199
|
+
columnNumber: 10
|
|
2200
|
+
}
|
|
2201
|
+
});
|
|
2202
|
+
});
|
|
2203
|
+
|
|
2204
|
+
var _jsxFileName$t = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/FilePlaceholderDecorator.js";
|
|
2205
|
+
function FilePlaceholder({
|
|
2206
|
+
file
|
|
2207
|
+
}) {
|
|
2208
|
+
if (file === null || file === void 0 ? void 0 : file.isReady) {
|
|
2209
|
+
return null;
|
|
2210
|
+
}
|
|
2211
|
+
return /*#__PURE__*/React.createElement(Placeholder, {
|
|
2212
|
+
__self: this,
|
|
2213
|
+
__source: {
|
|
2214
|
+
fileName: _jsxFileName$t,
|
|
2215
|
+
lineNumber: 9,
|
|
2216
|
+
columnNumber: 10
|
|
2217
|
+
}
|
|
2218
|
+
});
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
const LinkTooltipProvider = extensible('LinkTooltipProvider', function LinkTooltipProvider({
|
|
2222
|
+
children
|
|
2223
|
+
}) {
|
|
1417
2224
|
return children;
|
|
1418
2225
|
});
|
|
1419
2226
|
|
|
1420
|
-
var styles$
|
|
2227
|
+
var styles$a = {"container":"FitViewport-module_container__-awVj","content":"FitViewport-module_content__1_K5a","inner":"FitViewport-module_inner__3psd1"};
|
|
1421
2228
|
|
|
1422
|
-
var
|
|
2229
|
+
var _jsxFileName$u = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/FitViewport.js";
|
|
2230
|
+
const AspectRatioContext = React.createContext();
|
|
1423
2231
|
|
|
1424
2232
|
/**
|
|
1425
2233
|
* Render a div with the given aspect ratio which does not
|
|
@@ -1444,115 +2252,225 @@ var AspectRatioContext = React.createContext();
|
|
|
1444
2252
|
* @param {number} [props.aspectRatio] - Aspect ratio of div.
|
|
1445
2253
|
* @param {Object} [props.file] - Use width/height of file to calculate aspect ratio.
|
|
1446
2254
|
* @param {number} [props.scale] - Only take up fraction of the viewport height supplied as value between 0 and 1.
|
|
1447
|
-
* @param {Object} [props.opaque] - Render black background behind content.
|
|
1448
2255
|
* @param {string} [props.fill] - Ignore aspect ration and fill viewport vertically.
|
|
1449
2256
|
*/
|
|
1450
|
-
function FitViewport(
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
2257
|
+
function FitViewport({
|
|
2258
|
+
file,
|
|
2259
|
+
aspectRatio,
|
|
2260
|
+
fallbackAspectRatio,
|
|
2261
|
+
children,
|
|
2262
|
+
fill,
|
|
2263
|
+
scale
|
|
2264
|
+
}) {
|
|
2265
|
+
if (!file && !aspectRatio && !fallbackAspectRatio) return children;
|
|
1458
2266
|
if (typeof aspectRatio === 'string') {
|
|
1459
|
-
aspectRatio =
|
|
2267
|
+
aspectRatio = `var(--theme-aspect-ratio-${aspectRatio})`;
|
|
1460
2268
|
}
|
|
1461
|
-
aspectRatio = fill ? 'fill' : aspectRatio || file.height / file.width;
|
|
2269
|
+
aspectRatio = fill ? 'fill' : aspectRatio || ((file === null || file === void 0 ? void 0 : file.width) ? file.height / file.width : fallbackAspectRatio);
|
|
1462
2270
|
return /*#__PURE__*/React.createElement("div", {
|
|
1463
|
-
className:
|
|
2271
|
+
className: styles$a.container,
|
|
1464
2272
|
style: {
|
|
1465
2273
|
'--fit-viewport-aspect-ratio': fill ? undefined : aspectRatio,
|
|
1466
2274
|
'--fit-viewport-scale': scale
|
|
2275
|
+
},
|
|
2276
|
+
__self: this,
|
|
2277
|
+
__source: {
|
|
2278
|
+
fileName: _jsxFileName$u,
|
|
2279
|
+
lineNumber: 45,
|
|
2280
|
+
columnNumber: 5
|
|
1467
2281
|
}
|
|
1468
2282
|
}, /*#__PURE__*/React.createElement(AspectRatioContext.Provider, {
|
|
1469
|
-
value: aspectRatio
|
|
2283
|
+
value: aspectRatio,
|
|
2284
|
+
__self: this,
|
|
2285
|
+
__source: {
|
|
2286
|
+
fileName: _jsxFileName$u,
|
|
2287
|
+
lineNumber: 48,
|
|
2288
|
+
columnNumber: 7
|
|
2289
|
+
}
|
|
1470
2290
|
}, children));
|
|
1471
2291
|
}
|
|
1472
|
-
FitViewport.Content = function FitViewportContent(
|
|
1473
|
-
|
|
1474
|
-
|
|
2292
|
+
FitViewport.Content = function FitViewportContent({
|
|
2293
|
+
children
|
|
2294
|
+
}) {
|
|
2295
|
+
let aspectRatio = useContext(AspectRatioContext);
|
|
1475
2296
|
if (aspectRatio === 'fill') {
|
|
1476
2297
|
return /*#__PURE__*/React.createElement(Fullscreen, {
|
|
1477
|
-
children: children
|
|
2298
|
+
children: children,
|
|
2299
|
+
__self: this,
|
|
2300
|
+
__source: {
|
|
2301
|
+
fileName: _jsxFileName$u,
|
|
2302
|
+
lineNumber: 61,
|
|
2303
|
+
columnNumber: 9
|
|
2304
|
+
}
|
|
1478
2305
|
});
|
|
1479
2306
|
} else if (!aspectRatio) {
|
|
1480
2307
|
return children;
|
|
1481
2308
|
}
|
|
1482
2309
|
return /*#__PURE__*/React.createElement("div", {
|
|
1483
|
-
className: styles$
|
|
1484
|
-
|
|
1485
|
-
|
|
2310
|
+
className: styles$a.content,
|
|
2311
|
+
__self: this,
|
|
2312
|
+
__source: {
|
|
2313
|
+
fileName: _jsxFileName$u,
|
|
2314
|
+
lineNumber: 69,
|
|
2315
|
+
columnNumber: 7
|
|
2316
|
+
}
|
|
2317
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
2318
|
+
__self: this,
|
|
2319
|
+
__source: {
|
|
2320
|
+
fileName: _jsxFileName$u,
|
|
2321
|
+
lineNumber: 70,
|
|
2322
|
+
columnNumber: 9
|
|
2323
|
+
}
|
|
2324
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
2325
|
+
className: styles$a.inner,
|
|
2326
|
+
__self: this,
|
|
2327
|
+
__source: {
|
|
2328
|
+
fileName: _jsxFileName$u,
|
|
2329
|
+
lineNumber: 71,
|
|
2330
|
+
columnNumber: 9
|
|
2331
|
+
}
|
|
1486
2332
|
}, children));
|
|
1487
2333
|
};
|
|
1488
2334
|
|
|
1489
|
-
var styles$
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
2335
|
+
var styles$b = {"container":"Tooltip-module_container__3V63U","bubble":"Tooltip-module_bubble__FIL1C scope-tooltip","open":"Tooltip-module_open__1avQa","fixed":"Tooltip-module_fixed__3NGyG","openOnHover":"Tooltip-module_openOnHover__1EeI5","fadeIn":"Tooltip-module_fadeIn__3g9QH","inner":"Tooltip-module_inner__E2hsp","highlight":"Tooltip-module_highlight__2NpuQ","arrow":"Tooltip-module_arrow__3LxXo"};
|
|
2336
|
+
|
|
2337
|
+
var _jsxFileName$v = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/Tooltip.js";
|
|
2338
|
+
function Tooltip({
|
|
2339
|
+
bubbleClassName,
|
|
2340
|
+
arrowPos,
|
|
2341
|
+
children,
|
|
2342
|
+
content,
|
|
2343
|
+
fixed,
|
|
2344
|
+
highlight,
|
|
2345
|
+
name,
|
|
2346
|
+
openOnHover,
|
|
2347
|
+
verticalOffset,
|
|
2348
|
+
horizontalOffset
|
|
2349
|
+
}) {
|
|
2350
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
2351
|
+
const buttonRef = useRef(null);
|
|
2352
|
+
const containerRef = useRef(null);
|
|
2353
|
+
const tooltipId = `tooltip-${name}`;
|
|
2354
|
+
const handleClick = () => {
|
|
2355
|
+
setIsOpen(prev => !prev);
|
|
2356
|
+
};
|
|
2357
|
+
const handleKeyDown = event => {
|
|
2358
|
+
if (event.key === 'Escape' && isOpen) {
|
|
2359
|
+
setIsOpen(false);
|
|
2360
|
+
setTimeout(() => {
|
|
2361
|
+
var _buttonRef$current;
|
|
2362
|
+
return (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.focus();
|
|
2363
|
+
}, 0);
|
|
2364
|
+
}
|
|
2365
|
+
};
|
|
2366
|
+
const handleBlur = event => {
|
|
2367
|
+
var _containerRef$current;
|
|
2368
|
+
if (isOpen && event.relatedTarget && !((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.contains(event.relatedTarget))) {
|
|
2369
|
+
setIsOpen(false);
|
|
2370
|
+
}
|
|
2371
|
+
};
|
|
2372
|
+
const isControlled = !openOnHover && !fixed;
|
|
2373
|
+
useEffect(() => {
|
|
2374
|
+
if (!isControlled || !isOpen) {
|
|
2375
|
+
return;
|
|
2376
|
+
}
|
|
2377
|
+
const handleDocumentClick = event => {
|
|
2378
|
+
var _containerRef$current2;
|
|
2379
|
+
if (!((_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.contains(event.target))) {
|
|
2380
|
+
setIsOpen(false);
|
|
2381
|
+
}
|
|
2382
|
+
};
|
|
2383
|
+
document.addEventListener('click', handleDocumentClick);
|
|
2384
|
+
return () => {
|
|
2385
|
+
document.removeEventListener('click', handleDocumentClick);
|
|
2386
|
+
};
|
|
2387
|
+
}, [isControlled, isOpen]);
|
|
2388
|
+
const triggerProps = isControlled ? {
|
|
2389
|
+
onClick: handleClick,
|
|
2390
|
+
ref: buttonRef,
|
|
2391
|
+
'aria-expanded': isOpen,
|
|
2392
|
+
'aria-controls': tooltipId
|
|
2393
|
+
} : openOnHover ? {
|
|
2394
|
+
'aria-describedby': tooltipId
|
|
2395
|
+
} : {};
|
|
1501
2396
|
return /*#__PURE__*/React.createElement("div", {
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
2397
|
+
ref: containerRef,
|
|
2398
|
+
className: classNames(styles$b.container, {
|
|
2399
|
+
[styles$b.openOnHover]: openOnHover,
|
|
2400
|
+
[styles$b.fixed]: fixed
|
|
2401
|
+
}),
|
|
2402
|
+
onKeyDown: isControlled ? handleKeyDown : undefined,
|
|
2403
|
+
onBlur: isControlled ? handleBlur : undefined,
|
|
2404
|
+
__self: this,
|
|
2405
|
+
__source: {
|
|
2406
|
+
fileName: _jsxFileName$v,
|
|
2407
|
+
lineNumber: 73,
|
|
2408
|
+
columnNumber: 5
|
|
2409
|
+
}
|
|
2410
|
+
}, typeof children === 'function' ? children(triggerProps) : children, /*#__PURE__*/React.createElement(Bubble, {
|
|
1505
2411
|
className: bubbleClassName,
|
|
1506
2412
|
highlight: highlight,
|
|
1507
2413
|
arrowPos: arrowPos,
|
|
1508
2414
|
verticalOffset: verticalOffset,
|
|
1509
|
-
horizontalOffset: horizontalOffset
|
|
2415
|
+
horizontalOffset: horizontalOffset,
|
|
2416
|
+
isOpen: isOpen,
|
|
2417
|
+
id: tooltipId,
|
|
2418
|
+
__self: this,
|
|
2419
|
+
__source: {
|
|
2420
|
+
fileName: _jsxFileName$v,
|
|
2421
|
+
lineNumber: 81,
|
|
2422
|
+
columnNumber: 7
|
|
2423
|
+
}
|
|
1510
2424
|
}, content));
|
|
1511
2425
|
}
|
|
1512
|
-
function Bubble(
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
2426
|
+
function Bubble({
|
|
2427
|
+
className,
|
|
2428
|
+
arrowPos,
|
|
2429
|
+
children,
|
|
2430
|
+
highlight,
|
|
2431
|
+
horizontalOffset,
|
|
2432
|
+
verticalOffset,
|
|
2433
|
+
isOpen,
|
|
2434
|
+
id
|
|
2435
|
+
}) {
|
|
2436
|
+
let inlineStyle = {
|
|
1520
2437
|
marginLeft: horizontalOffset,
|
|
1521
2438
|
marginTop: verticalOffset
|
|
1522
2439
|
};
|
|
1523
|
-
|
|
1524
|
-
// Negative tabIndex ensures element can take focus but does not
|
|
1525
|
-
// come up in tab order. This ensures the tooltip stays expanded
|
|
1526
|
-
// when text in the legal info menu is selected.
|
|
1527
2440
|
return /*#__PURE__*/React.createElement("div", {
|
|
1528
2441
|
style: inlineStyle,
|
|
1529
|
-
|
|
1530
|
-
className: classNames(className, styles$
|
|
2442
|
+
id: id,
|
|
2443
|
+
className: classNames(className, styles$b.bubble, {
|
|
2444
|
+
[styles$b.highlight]: highlight,
|
|
2445
|
+
[styles$b.open]: isOpen
|
|
2446
|
+
}),
|
|
2447
|
+
__self: this,
|
|
2448
|
+
__source: {
|
|
2449
|
+
fileName: _jsxFileName$v,
|
|
2450
|
+
lineNumber: 101,
|
|
2451
|
+
columnNumber: 5
|
|
2452
|
+
}
|
|
1531
2453
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1532
2454
|
style: {
|
|
1533
2455
|
left: arrowPos
|
|
1534
2456
|
},
|
|
1535
|
-
className: styles$
|
|
2457
|
+
className: styles$b.arrow,
|
|
2458
|
+
__self: this,
|
|
2459
|
+
__source: {
|
|
2460
|
+
fileName: _jsxFileName$v,
|
|
2461
|
+
lineNumber: 106,
|
|
2462
|
+
columnNumber: 7
|
|
2463
|
+
}
|
|
1536
2464
|
}), /*#__PURE__*/React.createElement("div", {
|
|
1537
|
-
className: styles$
|
|
2465
|
+
className: styles$b.inner,
|
|
2466
|
+
__self: this,
|
|
2467
|
+
__source: {
|
|
2468
|
+
fileName: _jsxFileName$v,
|
|
2469
|
+
lineNumber: 107,
|
|
2470
|
+
columnNumber: 7
|
|
2471
|
+
}
|
|
1538
2472
|
}, children));
|
|
1539
2473
|
}
|
|
1540
|
-
|
|
1541
|
-
// Safari does not focus buttons after they are clicked [1]. Focus
|
|
1542
|
-
// manually to ensure `focus-within` selector that opens the tooltip
|
|
1543
|
-
// applies.
|
|
1544
|
-
//
|
|
1545
|
-
// [1] https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
|
|
1546
|
-
function fixFocusHandlingSafari(event) {
|
|
1547
|
-
if (!event.target.closest) {
|
|
1548
|
-
// IE does not support closest, but also does not need this fix.
|
|
1549
|
-
return;
|
|
1550
|
-
}
|
|
1551
|
-
var button = event.target.closest('button');
|
|
1552
|
-
if (button) {
|
|
1553
|
-
button.focus();
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
2474
|
Tooltip.defaultProps = {
|
|
1557
2475
|
arrowPos: '50%',
|
|
1558
2476
|
fixed: false,
|
|
@@ -1561,27 +2479,56 @@ Tooltip.defaultProps = {
|
|
|
1561
2479
|
horizontalOffset: 0
|
|
1562
2480
|
};
|
|
1563
2481
|
|
|
1564
|
-
var styles$
|
|
1565
|
-
|
|
1566
|
-
var
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
2482
|
+
var styles$c = {"button":"ScrollButton-module_button__3rrDc","icon":"ScrollButton-module_icon__128_J","disabled":"ScrollButton-module_disabled__35fFF","visuallyHidden":"ScrollButton-module_visuallyHidden__36chO"};
|
|
2483
|
+
|
|
2484
|
+
var _jsxFileName$w = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/ScrollButton.js";
|
|
2485
|
+
const size = 40;
|
|
2486
|
+
function ScrollButton({
|
|
2487
|
+
direction,
|
|
2488
|
+
disabled,
|
|
2489
|
+
onClick
|
|
2490
|
+
}) {
|
|
2491
|
+
const {
|
|
2492
|
+
t
|
|
2493
|
+
} = useI18n();
|
|
1573
2494
|
return /*#__PURE__*/React.createElement("button", {
|
|
1574
|
-
className: classNames(styles$
|
|
2495
|
+
className: classNames(styles$c.button, {
|
|
2496
|
+
[styles$c.disabled]: disabled
|
|
2497
|
+
}),
|
|
1575
2498
|
tabIndex: "-1",
|
|
1576
|
-
onClick: onClick
|
|
2499
|
+
onClick: onClick,
|
|
2500
|
+
__self: this,
|
|
2501
|
+
__source: {
|
|
2502
|
+
fileName: _jsxFileName$w,
|
|
2503
|
+
lineNumber: 14,
|
|
2504
|
+
columnNumber: 5
|
|
2505
|
+
}
|
|
1577
2506
|
}, /*#__PURE__*/React.createElement("div", {
|
|
1578
|
-
className: styles$
|
|
2507
|
+
className: styles$c.icon,
|
|
2508
|
+
__self: this,
|
|
2509
|
+
__source: {
|
|
2510
|
+
fileName: _jsxFileName$w,
|
|
2511
|
+
lineNumber: 18,
|
|
2512
|
+
columnNumber: 7
|
|
2513
|
+
}
|
|
1579
2514
|
}, /*#__PURE__*/React.createElement(ThemeIcon, {
|
|
1580
2515
|
name: direction === 'left' ? 'arrowLeft' : 'arrowRight',
|
|
1581
2516
|
width: size,
|
|
1582
|
-
height: size
|
|
2517
|
+
height: size,
|
|
2518
|
+
__self: this,
|
|
2519
|
+
__source: {
|
|
2520
|
+
fileName: _jsxFileName$w,
|
|
2521
|
+
lineNumber: 19,
|
|
2522
|
+
columnNumber: 9
|
|
2523
|
+
}
|
|
1583
2524
|
}), /*#__PURE__*/React.createElement("span", {
|
|
1584
|
-
className: styles$
|
|
2525
|
+
className: styles$c.visuallyHidden,
|
|
2526
|
+
__self: this,
|
|
2527
|
+
__source: {
|
|
2528
|
+
fileName: _jsxFileName$w,
|
|
2529
|
+
lineNumber: 22,
|
|
2530
|
+
columnNumber: 9
|
|
2531
|
+
}
|
|
1585
2532
|
}, t(direction === 'left' ? 'pageflow_scrolled.public.previous' : 'pageflow_scrolled.public.next'))));
|
|
1586
2533
|
}
|
|
1587
2534
|
|
|
@@ -1590,98 +2537,102 @@ function textColorForBackgroundColor(hex) {
|
|
|
1590
2537
|
}
|
|
1591
2538
|
|
|
1592
2539
|
function registerTemplateWidgetType (typeName, callback) {
|
|
1593
|
-
|
|
2540
|
+
let element = document.getElementById('template-widget-container');
|
|
1594
2541
|
callback(element);
|
|
1595
2542
|
}
|
|
1596
2543
|
|
|
1597
|
-
|
|
1598
|
-
|
|
2544
|
+
const WidgetSelectionRect = extensible('WidgetSelectionRect', function WidgetSelectionRect({
|
|
2545
|
+
children
|
|
2546
|
+
}) {
|
|
1599
2547
|
return children;
|
|
1600
2548
|
});
|
|
1601
2549
|
|
|
1602
|
-
var styles$
|
|
1603
|
-
|
|
1604
|
-
var
|
|
1605
|
-
function LinkButton(
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
2550
|
+
var styles$d = {"button":"LinkButton-module_button__33q1F scope-linkButton","editable":"LinkButton-module_editable__FzuA4"};
|
|
2551
|
+
|
|
2552
|
+
var _jsxFileName$x = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/LinkButton.js";
|
|
2553
|
+
function LinkButton({
|
|
2554
|
+
href,
|
|
2555
|
+
openInNewTab,
|
|
2556
|
+
value,
|
|
2557
|
+
onTextChange,
|
|
2558
|
+
onLinkChange,
|
|
2559
|
+
scaleCategory,
|
|
2560
|
+
className,
|
|
2561
|
+
actionButtonVisible,
|
|
2562
|
+
linkPreviewPosition,
|
|
2563
|
+
linkPreviewDisabled,
|
|
2564
|
+
children,
|
|
2565
|
+
...props
|
|
2566
|
+
}) {
|
|
2567
|
+
const {
|
|
2568
|
+
t
|
|
2569
|
+
} = useI18n({
|
|
2570
|
+
locale: 'ui'
|
|
2571
|
+
});
|
|
2572
|
+
const {
|
|
2573
|
+
isEditable
|
|
2574
|
+
} = useContentElementEditorState();
|
|
1624
2575
|
return /*#__PURE__*/React.createElement(Text, {
|
|
1625
2576
|
inline: true,
|
|
1626
|
-
scaleCategory: scaleCategory
|
|
2577
|
+
scaleCategory: scaleCategory,
|
|
2578
|
+
__self: this,
|
|
2579
|
+
__source: {
|
|
2580
|
+
fileName: _jsxFileName$x,
|
|
2581
|
+
lineNumber: 29,
|
|
2582
|
+
columnNumber: 5
|
|
2583
|
+
}
|
|
1627
2584
|
}, /*#__PURE__*/React.createElement(EditableLink, Object.assign({
|
|
1628
2585
|
href: href,
|
|
1629
2586
|
openInNewTab: openInNewTab,
|
|
1630
2587
|
linkPreviewPosition: linkPreviewPosition,
|
|
1631
2588
|
linkPreviewDisabled: utils.isBlankEditableTextValue(value) || linkPreviewDisabled,
|
|
1632
2589
|
actionButtonVisible: actionButtonVisible,
|
|
1633
|
-
className: classNames(styles$
|
|
2590
|
+
className: classNames(styles$d.button, className, {
|
|
2591
|
+
[styles$d.editable]: isEditable
|
|
2592
|
+
}),
|
|
1634
2593
|
onChange: onLinkChange
|
|
1635
|
-
}, props
|
|
2594
|
+
}, props, {
|
|
2595
|
+
__self: this,
|
|
2596
|
+
__source: {
|
|
2597
|
+
fileName: _jsxFileName$x,
|
|
2598
|
+
lineNumber: 30,
|
|
2599
|
+
columnNumber: 7
|
|
2600
|
+
}
|
|
2601
|
+
}), /*#__PURE__*/React.createElement(EditableInlineText, {
|
|
1636
2602
|
value: value,
|
|
1637
2603
|
onChange: onTextChange,
|
|
1638
|
-
placeholder: t('pageflow_scrolled.inline_editing.type_text')
|
|
2604
|
+
placeholder: t('pageflow_scrolled.inline_editing.type_text'),
|
|
2605
|
+
__self: this,
|
|
2606
|
+
__source: {
|
|
2607
|
+
fileName: _jsxFileName$x,
|
|
2608
|
+
lineNumber: 38,
|
|
2609
|
+
columnNumber: 9
|
|
2610
|
+
}
|
|
1639
2611
|
}), children));
|
|
1640
2612
|
}
|
|
1641
2613
|
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
global.pageflowScrolledRender =
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
case 9:
|
|
1665
|
-
_context.next = 12;
|
|
1666
|
-
break;
|
|
1667
|
-
case 11:
|
|
1668
|
-
registerVendors({
|
|
1669
|
-
contentElementTypes: api.contentElementTypes,
|
|
1670
|
-
consent: consent,
|
|
1671
|
-
seed: seed
|
|
1672
|
-
});
|
|
1673
|
-
case 12:
|
|
1674
|
-
render(seed);
|
|
1675
|
-
case 13:
|
|
1676
|
-
case "end":
|
|
1677
|
-
return _context.stop();
|
|
1678
|
-
}
|
|
1679
|
-
}, _callee);
|
|
1680
|
-
}));
|
|
1681
|
-
return function (_x) {
|
|
1682
|
-
return _ref.apply(this, arguments);
|
|
1683
|
-
};
|
|
1684
|
-
}();
|
|
2614
|
+
var _jsxFileName$y = "/home/tfischbach/code/pageflow/entry_types/scrolled/package/src/frontend/index.js";
|
|
2615
|
+
const editMode = typeof window !== 'undefined' && window.location.pathname.indexOf('/editor/entries') === 0;
|
|
2616
|
+
const withShadowClassName = styles$f.withShadow;
|
|
2617
|
+
global.pageflowScrolledRender = async function (seed) {
|
|
2618
|
+
setupI18n(seed.i18n);
|
|
2619
|
+
features.enable('frontend', seed.config.enabledFeatureNames);
|
|
2620
|
+
await browser.detectFeatures();
|
|
2621
|
+
await loadDashUnlessHlsSupported(seed);
|
|
2622
|
+
if (seed.config.loadInlineEditing) {
|
|
2623
|
+
await loadInlineEditingExtensions();
|
|
2624
|
+
} else {
|
|
2625
|
+
registerVendors({
|
|
2626
|
+
contentElementTypes: api.contentElementTypes,
|
|
2627
|
+
consent,
|
|
2628
|
+
seed
|
|
2629
|
+
});
|
|
2630
|
+
}
|
|
2631
|
+
render(seed);
|
|
2632
|
+
if (seed.config.loadCommenting) {
|
|
2633
|
+
loadCommentingExtensions();
|
|
2634
|
+
}
|
|
2635
|
+
};
|
|
1685
2636
|
global.pageflowScrolledRegisterUpdateSeedHandler = function () {
|
|
1686
2637
|
if (window.parent !== window) {
|
|
1687
2638
|
window.addEventListener('message', receive);
|
|
@@ -1694,22 +2645,66 @@ global.pageflowScrolledRegisterUpdateSeedHandler = function () {
|
|
|
1694
2645
|
}
|
|
1695
2646
|
}
|
|
1696
2647
|
};
|
|
2648
|
+
function bootFromSeedElement() {
|
|
2649
|
+
const element = document.querySelector('script[type="application/json"][data-pageflow-scrolled-seed]');
|
|
2650
|
+
if (element) {
|
|
2651
|
+
global.pageflowScrolledRender(JSON.parse(element.textContent));
|
|
2652
|
+
}
|
|
2653
|
+
}
|
|
2654
|
+
if (typeof document !== 'undefined') {
|
|
2655
|
+
// Widget packs (defaultNavigation, consentBar, mainStorylineSheet, ...) are
|
|
2656
|
+
// separate scripts that load after this entry bundle and register their widget
|
|
2657
|
+
// types on execution. All deferred pack scripts run before DOMContentLoaded, so
|
|
2658
|
+
// waiting for that event is what guarantees every widget type - and the seed
|
|
2659
|
+
// element that follows the scripts - is present before we render.
|
|
2660
|
+
if (document.readyState === 'complete') {
|
|
2661
|
+
bootFromSeedElement();
|
|
2662
|
+
} else {
|
|
2663
|
+
document.addEventListener('DOMContentLoaded', bootFromSeedElement);
|
|
2664
|
+
}
|
|
2665
|
+
}
|
|
1697
2666
|
function render(seed) {
|
|
1698
2667
|
if (editMode) {
|
|
1699
2668
|
ReactDOM.render( /*#__PURE__*/React.createElement(Root, {
|
|
1700
|
-
seed: seed
|
|
2669
|
+
seed: seed,
|
|
2670
|
+
__self: this,
|
|
2671
|
+
__source: {
|
|
2672
|
+
fileName: _jsxFileName$y,
|
|
2673
|
+
lineNumber: 226,
|
|
2674
|
+
columnNumber: 21
|
|
2675
|
+
}
|
|
1701
2676
|
}), document.getElementById('root'));
|
|
1702
2677
|
} else {
|
|
1703
2678
|
ReactDOM.hydrate( /*#__PURE__*/React.createElement(Root, {
|
|
1704
|
-
seed: seed
|
|
2679
|
+
seed: seed,
|
|
2680
|
+
__self: this,
|
|
2681
|
+
__source: {
|
|
2682
|
+
fileName: _jsxFileName$y,
|
|
2683
|
+
lineNumber: 229,
|
|
2684
|
+
columnNumber: 22
|
|
2685
|
+
}
|
|
1705
2686
|
}), document.getElementById('root'));
|
|
1706
2687
|
}
|
|
1707
2688
|
}
|
|
1708
|
-
function Root(
|
|
1709
|
-
|
|
2689
|
+
function Root({
|
|
2690
|
+
seed
|
|
2691
|
+
}) {
|
|
1710
2692
|
return /*#__PURE__*/React.createElement(RootProviders, {
|
|
1711
|
-
seed: seed
|
|
1712
|
-
|
|
2693
|
+
seed: seed,
|
|
2694
|
+
__self: this,
|
|
2695
|
+
__source: {
|
|
2696
|
+
fileName: _jsxFileName$y,
|
|
2697
|
+
lineNumber: 235,
|
|
2698
|
+
columnNumber: 5
|
|
2699
|
+
}
|
|
2700
|
+
}, /*#__PURE__*/React.createElement(Entry, {
|
|
2701
|
+
__self: this,
|
|
2702
|
+
__source: {
|
|
2703
|
+
fileName: _jsxFileName$y,
|
|
2704
|
+
lineNumber: 236,
|
|
2705
|
+
columnNumber: 7
|
|
2706
|
+
}
|
|
2707
|
+
}));
|
|
1713
2708
|
}
|
|
1714
2709
|
|
|
1715
|
-
export { AudioPlayerControls, ClassicPlayerControls, ContentElementBox, ContentElementFigure, EditableInlineText, EditableLink, Entry, ExpandableImage, Figure, FitViewport, LinkButton, LinkTooltipProvider, MediaInteractionTracking, MediaPlayerControls, PaginationIndicator, Panorama, PlayerControls, Root, ScrollButton, Tooltip, VideoPlayerControls, WaveformPlayerControls, WidgetSelectionRect, registerTemplateWidgetType, textColorForBackgroundColor, useScrollPosition, withShadowClassName };
|
|
2710
|
+
export { ActionButton, AudioPlayerControls, ClassicPlayerControls, ContentElementBox, ContentElementFigure, EditableInlineText, EditableLink, Entry, ExpandableImage, Figure, FilePlaceholder, FitViewport, LinkButton, LinkTooltipProvider, MediaInteractionTracking, MediaPlayerControls, PaginationIndicator, Panorama, Placeholder, PlayerControls, Root, ScrollButton, Tooltip, VideoPlayerControls, WaveformPlayerControls, WidgetSelectionRect, contentElementBoxProps, processImageModifiers, registerTemplateWidgetType, textColorForBackgroundColor, useFileWithCropPosition, usePlayerControlsInactive, useScrollPosition, withShadowClassName };
|