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,3803 +0,0 @@
|
|
|
1
|
-
import { H as ContentElementEditorCommandEmitterContext, c as usePostMessageListener, aj as MotifAreaVisibilityProvider, ak as ForcePaddingContext, al as ContentElementConfigurationUpdateContext, x as api, k as widths, am as LayoutWithoutInlineEditing, Z as useFloatingPortalRoot, ai as SectionThumbnail, an as renderElement, ao as renderLeaf$1, G as useContentElementEditorCommandSubscription, T as Text$1, r as frontendStyles, ap as createRenderElement, aq as usePhoneLayout, ar as tableStyles, b as useScrollToTarget } from './FloatingPortalRootProvider-51914be7.js';
|
|
2
|
-
import 'pageflow/frontend';
|
|
3
|
-
import React, { useMemo, useState, useCallback, useContext, useRef, useEffect, createContext, memo } from 'react';
|
|
4
|
-
import { _ as _slicedToArray, r as useEntryStateDispatch, b as _defineProperty, e as _objectWithoutProperties, u as useI18n, K as updateContentElementConfiguration, p as useChapter, q as useDownloadableFile, a as _objectSpread2, o as _toConsumableArray, M as _unsupportedIterableToArray } from './ThemeIcon-81f2f066.js';
|
|
5
|
-
import classNames from 'classnames';
|
|
6
|
-
import { C as ContentElementEditorStateContext, a as useContentElementEditorState } from './useContentElementEditorState-77fe6c79.js';
|
|
7
|
-
import './inherits-539844a6.js';
|
|
8
|
-
import BackboneEvents from 'backbone-events-standalone';
|
|
9
|
-
import 'use-context-selector';
|
|
10
|
-
import 'reselect';
|
|
11
|
-
import 'slugify';
|
|
12
|
-
import 'i18n-js';
|
|
13
|
-
import 'striptags';
|
|
14
|
-
import 'react-measure';
|
|
15
|
-
import { P as PhonePlatformContext } from './PhonePlatformContext-9f76033e.js';
|
|
16
|
-
import { DndProvider, useDrop, useDrag } from 'react-dnd';
|
|
17
|
-
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
18
|
-
import { Range, Editor, Transforms, Node, Element as Element$1, Path, Text, createEditor } from 'slate';
|
|
19
|
-
import { useSlate, ReactEditor, withReact, Slate, Editable } from 'slate-react';
|
|
20
|
-
import { withHistory } from 'slate-history';
|
|
21
|
-
import debounce from 'debounce';
|
|
22
|
-
import { useFloating, offset, shift, arrow, inline, autoUpdate, FloatingPortal, FloatingArrow, hide } from '@floating-ui/react';
|
|
23
|
-
|
|
24
|
-
var Context = React.createContext({});
|
|
25
|
-
function EditorStateProvider(props) {
|
|
26
|
-
var _useState = useState(null),
|
|
27
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
28
|
-
selection = _useState2[0],
|
|
29
|
-
setSelectionState = _useState2[1];
|
|
30
|
-
var setSelection = useCallback(function (selection) {
|
|
31
|
-
if (window.parent !== window) {
|
|
32
|
-
window.parent.postMessage({
|
|
33
|
-
type: 'SELECTED',
|
|
34
|
-
payload: selection || {}
|
|
35
|
-
}, window.location.origin);
|
|
36
|
-
}
|
|
37
|
-
setSelectionState(selection);
|
|
38
|
-
}, []);
|
|
39
|
-
var value = useMemo(function () {
|
|
40
|
-
return {
|
|
41
|
-
selection: selection,
|
|
42
|
-
setSelection: setSelection
|
|
43
|
-
};
|
|
44
|
-
}, [setSelection, selection]);
|
|
45
|
-
return /*#__PURE__*/React.createElement(Context.Provider, {
|
|
46
|
-
value: value
|
|
47
|
-
}, props.children);
|
|
48
|
-
}
|
|
49
|
-
function useEditorSelection(options) {
|
|
50
|
-
var _useContext = useContext(Context),
|
|
51
|
-
selection = _useContext.selection,
|
|
52
|
-
setSelection = _useContext.setSelection;
|
|
53
|
-
var resetSelection = useCallback(function () {
|
|
54
|
-
setSelection(null);
|
|
55
|
-
}, [setSelection]);
|
|
56
|
-
var select = useCallback(function (selection) {
|
|
57
|
-
setSelection(selection || options);
|
|
58
|
-
}, [setSelection, options]);
|
|
59
|
-
return useMemo(function () {
|
|
60
|
-
return setSelection ? {
|
|
61
|
-
range: selection === null || selection === void 0 ? void 0 : selection.range,
|
|
62
|
-
isSelected: selection && options && selection.id === options.id && selection.type === options.type,
|
|
63
|
-
select: select,
|
|
64
|
-
resetSelection: resetSelection
|
|
65
|
-
} : {};
|
|
66
|
-
}, [options, selection, setSelection, select, resetSelection]);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function EntryDecorator(_ref) {
|
|
70
|
-
var children = _ref.children;
|
|
71
|
-
return /*#__PURE__*/React.createElement(EditorStateProvider, null, children);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function useContentElementEditorCommandEmitter() {
|
|
75
|
-
return useMemo(function () {
|
|
76
|
-
return Object.assign({}, BackboneEvents);
|
|
77
|
-
}, []);
|
|
78
|
-
}
|
|
79
|
-
function ContentElementEditorCommandSubscriptionProvider(_ref) {
|
|
80
|
-
var emitter = _ref.emitter,
|
|
81
|
-
children = _ref.children;
|
|
82
|
-
return /*#__PURE__*/React.createElement(ContentElementEditorCommandEmitterContext.Provider, {
|
|
83
|
-
value: emitter
|
|
84
|
-
}, children);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// Scroll points are used to preserve scroll position when toggling
|
|
88
|
-
// the editor phone preview. Each ContentElementDecorator renders a
|
|
89
|
-
// `data-scrollpoint` attribute with a unique value on its wrapper
|
|
90
|
-
// div. Before toggling the phone preview mode, the `EntryPreviewView`
|
|
91
|
-
// sends a `SAVE_SCROLL_POINT` message. `getCurrentScrollPoint` looks
|
|
92
|
-
// through all DOM elements with `data-scrollpoint` attributes and
|
|
93
|
-
// stores the unique id of the element with the smallest non-negative
|
|
94
|
-
// y coordinate in the viewport (i.e. the first content element inside
|
|
95
|
-
// the viewport). `ScrollPointMessageHandler` responds with a
|
|
96
|
-
// `SAVED_SCROLL_POINT` message which makes `EntryPreviewView` toggle
|
|
97
|
-
// the preview mode. Once the preview has been resized,
|
|
98
|
-
// `EntryPreviewView` sends a `RESTORE_SCROLL_POINT`
|
|
99
|
-
// message. `restoreScrollPoint` looks up the new position of the
|
|
100
|
-
// element with the saved scroll point and scrolls it into view.
|
|
101
|
-
//
|
|
102
|
-
// When a content element is selected, we want to keep that element
|
|
103
|
-
// in the viewport instead. The `SelectionRect` therefore renders a
|
|
104
|
-
// `data-scrollpoint=selection` attribute. If an element with such an
|
|
105
|
-
// attribute is present, `getCurrentScrollPoint` prefers it over all
|
|
106
|
-
// other scroll points. Since text block elements render a selection
|
|
107
|
-
// rect around the current paragraph, scroll position is also
|
|
108
|
-
// preserved correctly inside long text blocks.
|
|
109
|
-
|
|
110
|
-
function ScrollPointMessageHandler() {
|
|
111
|
-
var scrollPoint = useRef();
|
|
112
|
-
var receiveMessage = useCallback(function (data) {
|
|
113
|
-
if (data.type === 'SAVE_SCROLL_POINT') {
|
|
114
|
-
scrollPoint.current = getCurrentScrollPoint();
|
|
115
|
-
window.parent.postMessage({
|
|
116
|
-
type: 'SAVED_SCROLL_POINT'
|
|
117
|
-
}, window.location.origin);
|
|
118
|
-
} else if (data.type === 'RESTORE_SCROLL_POINT') {
|
|
119
|
-
if (scrollPoint.current) {
|
|
120
|
-
restoreScrollPoint(scrollPoint.current);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}, []);
|
|
124
|
-
usePostMessageListener(receiveMessage);
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
function getCurrentScrollPoint() {
|
|
128
|
-
var scrollPointElement = getSelectionScrollPointElement() || getScrollPointElementWithMinimumTopPositionInViewport();
|
|
129
|
-
return scrollPointElement === null || scrollPointElement === void 0 ? void 0 : scrollPointElement.getAttribute('data-scrollpoint');
|
|
130
|
-
}
|
|
131
|
-
function getSelectionScrollPointElement() {
|
|
132
|
-
return document.querySelector('[data-scrollpoint=selection]');
|
|
133
|
-
}
|
|
134
|
-
function getScrollPointElementWithMinimumTopPositionInViewport() {
|
|
135
|
-
var minTop = Infinity;
|
|
136
|
-
var scrollPointElement;
|
|
137
|
-
var scrollPoints = document.querySelectorAll('[data-scrollpoint]');
|
|
138
|
-
for (var i = 0; i < scrollPoints.length; i++) {
|
|
139
|
-
var rect = scrollPoints[i].getBoundingClientRect();
|
|
140
|
-
if (rect.top > 0 && rect.top < minTop) {
|
|
141
|
-
minTop = rect.top;
|
|
142
|
-
scrollPointElement = scrollPoints[i];
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return scrollPointElement;
|
|
146
|
-
}
|
|
147
|
-
function restoreScrollPoint(name) {
|
|
148
|
-
var element = document.querySelector("[data-scrollpoint=\"".concat(name, "\"]"));
|
|
149
|
-
if (element) {
|
|
150
|
-
window.scrollTo({
|
|
151
|
-
top: element.getBoundingClientRect().top + window.scrollY - 100,
|
|
152
|
-
behavior: 'smooth'
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
function ContentDecorator(props) {
|
|
158
|
-
var contentElementEditorCommandEmitter = useContentElementEditorCommandEmitter();
|
|
159
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MessageHandler, {
|
|
160
|
-
contentElementEditorCommandEmitter: contentElementEditorCommandEmitter
|
|
161
|
-
}), /*#__PURE__*/React.createElement(ScrollPointMessageHandler, null), /*#__PURE__*/React.createElement(ContentElementEditorCommandSubscriptionProvider, {
|
|
162
|
-
emitter: contentElementEditorCommandEmitter
|
|
163
|
-
}, /*#__PURE__*/React.createElement(DndProvider, {
|
|
164
|
-
backend: HTML5Backend
|
|
165
|
-
}, props.children)));
|
|
166
|
-
}
|
|
167
|
-
function MessageHandler(_ref) {
|
|
168
|
-
var contentElementEditorCommandEmitter = _ref.contentElementEditorCommandEmitter;
|
|
169
|
-
var _useEditorSelection = useEditorSelection(),
|
|
170
|
-
select = _useEditorSelection.select;
|
|
171
|
-
var dispatch = useEntryStateDispatch();
|
|
172
|
-
var receiveMessage = useCallback(function (data) {
|
|
173
|
-
if (data.type === 'ACTION') {
|
|
174
|
-
dispatch(data.payload);
|
|
175
|
-
} else if (data.type === 'SELECT') {
|
|
176
|
-
select(data.payload);
|
|
177
|
-
} else if (data.type === 'CONTENT_ELEMENT_EDITOR_COMMAND') {
|
|
178
|
-
contentElementEditorCommandEmitter.trigger("command:".concat(data.payload.contentElementId), data.payload.command);
|
|
179
|
-
}
|
|
180
|
-
}, [dispatch, select, contentElementEditorCommandEmitter]);
|
|
181
|
-
usePostMessageListener(receiveMessage);
|
|
182
|
-
useEffect(function () {
|
|
183
|
-
if (window.parent !== window) {
|
|
184
|
-
window.parent.postMessage({
|
|
185
|
-
type: 'READY'
|
|
186
|
-
}, window.location.origin);
|
|
187
|
-
}
|
|
188
|
-
}, []);
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
var styles = {"wrapper":"SectionDecorator-module_wrapper__3sTk3","highlighted":"SectionDecorator-module_highlighted__18FyB","lineAbove":"SectionDecorator-module_lineAbove__BZqEr","lineBelow":"SectionDecorator-module_lineBelow__1RbG-","selected":"SectionDecorator-module_selected__1gcmF","transitionSelected":"SectionDecorator-module_transitionSelected__Wklk6","controls":"SectionDecorator-module_controls__LVEJG","transitionToolbar-after":"SectionDecorator-module_transitionToolbar-after__2_DVO SectionDecorator-module_toolbar__2Va1D","toolbar":"SectionDecorator-module_toolbar__2Va1D","transitionToolbar-before":"SectionDecorator-module_transitionToolbar-before__KipOO SectionDecorator-module_toolbar__2Va1D"};
|
|
193
|
-
|
|
194
|
-
var styles$1 = {"wrapper":"BackdropDecorator-module_wrapper__X-h1o","visible":"BackdropDecorator-module_visible__3VqiR","inner":"BackdropDecorator-module_inner__14JfF"};
|
|
195
|
-
|
|
196
|
-
var styles$2 = {"wrapper":"ContentElementDecorator-module_wrapper__NQgFN"};
|
|
197
|
-
|
|
198
|
-
var styles$3 = {"wrapper":"WidgetSelectionRect-module_wrapper__1ktq9","selected":"WidgetSelectionRect-module_selected__2nm_L"};
|
|
199
|
-
|
|
200
|
-
var styles$4 = {"Toolbar":"Toolbar-module_Toolbar__1INSj","button":"Toolbar-module_button__de5BW","activeButton":"Toolbar-module_activeButton__2sOLP","collapsible":"Toolbar-module_collapsible__3sivb"};
|
|
201
|
-
|
|
202
|
-
function Toolbar(_ref) {
|
|
203
|
-
var buttons = _ref.buttons,
|
|
204
|
-
onButtonClick = _ref.onButtonClick,
|
|
205
|
-
iconSize = _ref.iconSize,
|
|
206
|
-
collapsible = _ref.collapsible;
|
|
207
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
208
|
-
className: classNames(styles$4.Toolbar, _defineProperty({}, styles$4.collapsible, collapsible)),
|
|
209
|
-
contentEditable: false
|
|
210
|
-
}, buttons.map(function (button) {
|
|
211
|
-
var Icon = button.icon;
|
|
212
|
-
return /*#__PURE__*/React.createElement("button", {
|
|
213
|
-
key: button.name,
|
|
214
|
-
title: button.text,
|
|
215
|
-
className: classNames(styles$4.button, _defineProperty({}, styles$4.activeButton, button.active)),
|
|
216
|
-
onMouseDown: function onMouseDown(event) {
|
|
217
|
-
event.preventDefault();
|
|
218
|
-
event.stopPropagation();
|
|
219
|
-
onButtonClick(button.name);
|
|
220
|
-
}
|
|
221
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
222
|
-
width: iconSize,
|
|
223
|
-
height: iconSize
|
|
224
|
-
}));
|
|
225
|
-
}));
|
|
226
|
-
}
|
|
227
|
-
Toolbar.defaultProps = {
|
|
228
|
-
iconSize: 15
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
var _excluded = ["styles"];
|
|
232
|
-
function _extends() {
|
|
233
|
-
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
234
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
235
|
-
var source = arguments[i];
|
|
236
|
-
for (var key in source) {
|
|
237
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
238
|
-
target[key] = source[key];
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
return target;
|
|
243
|
-
};
|
|
244
|
-
return _extends.apply(this, arguments);
|
|
245
|
-
}
|
|
246
|
-
var transitionIcon = (function (_ref) {
|
|
247
|
-
var _ref$styles = _ref.styles,
|
|
248
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
249
|
-
props = _objectWithoutProperties(_ref, _excluded);
|
|
250
|
-
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
251
|
-
"aria-hidden": "true",
|
|
252
|
-
"data-prefix": "fas",
|
|
253
|
-
"data-icon": "random",
|
|
254
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-random"] || "fa-random") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
255
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
256
|
-
viewBox: "0 0 512 512"
|
|
257
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
258
|
-
fill: "currentColor",
|
|
259
|
-
d: "M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 01-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 00122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 00-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"
|
|
260
|
-
}));
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
function SectionDecorator(_ref) {
|
|
264
|
-
var _backdrop$contentElem;
|
|
265
|
-
var backdrop = _ref.backdrop,
|
|
266
|
-
section = _ref.section,
|
|
267
|
-
contentElements = _ref.contentElements,
|
|
268
|
-
transitions = _ref.transitions,
|
|
269
|
-
children = _ref.children;
|
|
270
|
-
var _useI18n = useI18n({
|
|
271
|
-
locale: 'ui'
|
|
272
|
-
}),
|
|
273
|
-
t = _useI18n.t;
|
|
274
|
-
var _useEditorSelection = useEditorSelection({
|
|
275
|
-
id: section.id,
|
|
276
|
-
type: 'sectionSettings'
|
|
277
|
-
}),
|
|
278
|
-
isSelected = _useEditorSelection.isSelected,
|
|
279
|
-
select = _useEditorSelection.select,
|
|
280
|
-
resetSelection = _useEditorSelection.resetSelection;
|
|
281
|
-
var _useEditorSelection2 = useEditorSelection({
|
|
282
|
-
id: (_backdrop$contentElem = backdrop.contentElement) === null || _backdrop$contentElem === void 0 ? void 0 : _backdrop$contentElem.id,
|
|
283
|
-
type: 'contentElement'
|
|
284
|
-
}),
|
|
285
|
-
isBackdropElementSelected = _useEditorSelection2.isSelected;
|
|
286
|
-
var _useEditorSelection3 = useEditorSelection({
|
|
287
|
-
id: section.id,
|
|
288
|
-
type: 'section'
|
|
289
|
-
}),
|
|
290
|
-
isHighlighted = _useEditorSelection3.isSelected;
|
|
291
|
-
var transitionSelection = useEditorSelection({
|
|
292
|
-
id: section.id,
|
|
293
|
-
type: 'sectionTransition'
|
|
294
|
-
});
|
|
295
|
-
var nextTransitionSelection = useEditorSelection({
|
|
296
|
-
id: section.nextSection && section.nextSection.id,
|
|
297
|
-
type: 'sectionTransition'
|
|
298
|
-
});
|
|
299
|
-
var lastContentElement = contentElements[contentElements.length - 1];
|
|
300
|
-
var _useEditorSelection4 = useEditorSelection({
|
|
301
|
-
id: lastContentElement && lastContentElement.id,
|
|
302
|
-
type: 'contentElement'
|
|
303
|
-
}),
|
|
304
|
-
isLastContentElementSelected = _useEditorSelection4.isSelected;
|
|
305
|
-
function selectIfOutsideContentItem(event) {
|
|
306
|
-
if (!event.target.closest(".".concat(styles$2.wrapper)) && !event.target.closest(".".concat(styles$1.wrapper)) && !event.target.closest(".".concat(styles$3.wrapper)) && !event.target.closest('#fullscreenRoot') && !event.target.closest('[data-floating-ui-portal]')) {
|
|
307
|
-
isSelected ? resetSelection() : select();
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
311
|
-
"aria-label": t('pageflow_scrolled.inline_editing.select_section'),
|
|
312
|
-
className: className(isSelected, transitionSelection, isHighlighted, isBackdropElementSelected, transitions),
|
|
313
|
-
onMouseDown: selectIfOutsideContentItem
|
|
314
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
315
|
-
className: styles.controls
|
|
316
|
-
}, renderEditTransitionButton({
|
|
317
|
-
id: section.previousSection && section.id,
|
|
318
|
-
selection: transitionSelection,
|
|
319
|
-
position: 'before'
|
|
320
|
-
}), renderEditTransitionButton({
|
|
321
|
-
id: section.nextSection && section.nextSection.id,
|
|
322
|
-
selection: nextTransitionSelection,
|
|
323
|
-
position: 'after'
|
|
324
|
-
})), /*#__PURE__*/React.createElement(MotifAreaVisibilityProvider, {
|
|
325
|
-
visible: isSelected
|
|
326
|
-
}, /*#__PURE__*/React.createElement(ForcePaddingContext.Provider, {
|
|
327
|
-
value: isLastContentElementSelected || isSelected
|
|
328
|
-
}, children)));
|
|
329
|
-
}
|
|
330
|
-
function className(isSectionSelected, transitionSelection, isHighlighted, isBackdropElementSelected, transitions) {
|
|
331
|
-
return classNames(styles.wrapper, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles.selected, isSectionSelected), styles.highlighted, isHighlighted), styles.lineAbove, isBackdropElementSelected && transitions[0].startsWith('fade')), styles.lineBelow, isBackdropElementSelected && transitions[1].startsWith('fade')), styles.transitionSelected, transitionSelection.isSelected));
|
|
332
|
-
}
|
|
333
|
-
function renderEditTransitionButton(_ref2) {
|
|
334
|
-
var id = _ref2.id,
|
|
335
|
-
position = _ref2.position,
|
|
336
|
-
selection = _ref2.selection;
|
|
337
|
-
if (!id) {
|
|
338
|
-
return null;
|
|
339
|
-
}
|
|
340
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
341
|
-
className: styles["transitionToolbar-".concat(position)]
|
|
342
|
-
}, /*#__PURE__*/React.createElement(EditTransitionButton, {
|
|
343
|
-
id: id,
|
|
344
|
-
selection: selection,
|
|
345
|
-
position: position
|
|
346
|
-
}));
|
|
347
|
-
}
|
|
348
|
-
function EditTransitionButton(_ref3) {
|
|
349
|
-
var id = _ref3.id,
|
|
350
|
-
position = _ref3.position,
|
|
351
|
-
selection = _ref3.selection;
|
|
352
|
-
var _useI18n2 = useI18n({
|
|
353
|
-
locale: 'ui'
|
|
354
|
-
}),
|
|
355
|
-
t = _useI18n2.t;
|
|
356
|
-
return /*#__PURE__*/React.createElement(EditSectionButton, {
|
|
357
|
-
id: id,
|
|
358
|
-
selection: selection,
|
|
359
|
-
text: t("pageflow_scrolled.inline_editing.edit_section_transition_".concat(position)),
|
|
360
|
-
icon: transitionIcon
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
function EditSectionButton(_ref4) {
|
|
364
|
-
var id = _ref4.id,
|
|
365
|
-
selection = _ref4.selection,
|
|
366
|
-
icon = _ref4.icon,
|
|
367
|
-
text = _ref4.text;
|
|
368
|
-
return /*#__PURE__*/React.createElement(Toolbar, {
|
|
369
|
-
buttons: [{
|
|
370
|
-
name: 'button',
|
|
371
|
-
active: selection.isSelected,
|
|
372
|
-
icon: icon,
|
|
373
|
-
text: text
|
|
374
|
-
}],
|
|
375
|
-
iconSize: 20,
|
|
376
|
-
onButtonClick: function onButtonClick() {
|
|
377
|
-
return selection.select();
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
var styles$5 = {"selectionWidth":"1px","selectionPadding":"-6px","selectionPadding2":"-0.5em","main":"SelectionRect-module_main__3AOhG","draggable":"SelectionRect-module_draggable__3Qp53","full":"SelectionRect-module_full__3tsQF","inset":"SelectionRect-module_inset__3den3","selected":"SelectionRect-module_selected__1PhM6","toolbar":"SelectionRect-module_toolbar__3nPrd","insert":"SelectionRect-module_insert__w0Tl0","insertHovered":"SelectionRect-module_insertHovered__VTsDD","start":"SelectionRect-module_start__3_nAf","insert-before":"SelectionRect-module_insert-before__2Tyq5 SelectionRect-module_insert__w0Tl0","end":"SelectionRect-module_end__3qOoK","insert-after":"SelectionRect-module_insert-after__3FJ4R SelectionRect-module_insert__w0Tl0","insertButton":"SelectionRect-module_insertButton__1g-ZG","dragHandle":"SelectionRect-module_dragHandle__2vVhP"};
|
|
383
|
-
|
|
384
|
-
var _excluded$1 = ["styles"];
|
|
385
|
-
function _extends$1() {
|
|
386
|
-
_extends$1 = Object.assign ? Object.assign.bind() : function (target) {
|
|
387
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
388
|
-
var source = arguments[i];
|
|
389
|
-
for (var key in source) {
|
|
390
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
391
|
-
target[key] = source[key];
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
return target;
|
|
396
|
-
};
|
|
397
|
-
return _extends$1.apply(this, arguments);
|
|
398
|
-
}
|
|
399
|
-
var PlusIcon = (function (_ref) {
|
|
400
|
-
var _ref$styles = _ref.styles,
|
|
401
|
-
props = _objectWithoutProperties(_ref, _excluded$1);
|
|
402
|
-
return /*#__PURE__*/React.createElement("svg", _extends$1({
|
|
403
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
404
|
-
viewBox: "0 0 512 512"
|
|
405
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
406
|
-
d: "M256 0C114.844 0 0 114.839 0 256s114.844 256 256 256 256-114.839 256-256S397.156 0 256 0zm133.594 272.699H272.699v116.895c0 9.225-7.48 16.699-16.699 16.699-9.219 0-16.699-7.475-16.699-16.699V272.699H122.406c-9.219 0-16.699-7.475-16.699-16.699 0-9.225 7.48-16.699 16.699-16.699h116.895V122.406c0-9.225 7.48-16.699 16.699-16.699 9.219 0 16.699 7.475 16.699 16.699v116.895h116.895c9.219 0 16.699 7.475 16.699 16.699.001 9.225-7.48 16.699-16.699 16.699z"
|
|
407
|
-
}));
|
|
408
|
-
});
|
|
409
|
-
|
|
410
|
-
var _excluded$2 = ["styles"];
|
|
411
|
-
function _extends$2() {
|
|
412
|
-
_extends$2 = Object.assign ? Object.assign.bind() : function (target) {
|
|
413
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
414
|
-
var source = arguments[i];
|
|
415
|
-
for (var key in source) {
|
|
416
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
417
|
-
target[key] = source[key];
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
return target;
|
|
422
|
-
};
|
|
423
|
-
return _extends$2.apply(this, arguments);
|
|
424
|
-
}
|
|
425
|
-
var MoveIcon = (function (_ref) {
|
|
426
|
-
var _ref$styles = _ref.styles,
|
|
427
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
428
|
-
props = _objectWithoutProperties(_ref, _excluded$2);
|
|
429
|
-
return /*#__PURE__*/React.createElement("svg", _extends$2({
|
|
430
|
-
"aria-hidden": "true",
|
|
431
|
-
"data-prefix": "fas",
|
|
432
|
-
"data-icon": "arrows-alt",
|
|
433
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-arrows-alt"] || "fa-arrows-alt") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
434
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
435
|
-
viewBox: "0 0 512 512"
|
|
436
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
437
|
-
fill: "currentColor",
|
|
438
|
-
d: "M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"
|
|
439
|
-
}));
|
|
440
|
-
});
|
|
441
|
-
|
|
442
|
-
function SelectionRect(props) {
|
|
443
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
444
|
-
className: classNames(styles$5.main, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles$5.full, props.full), styles$5.inset, props.inset), styles$5.selected, props.selected), styles$5.draggable, props.drag), styles$5.start, props.selected && props.start), styles$5.end, props.selected && props.end)),
|
|
445
|
-
"aria-label": props.ariaLabel,
|
|
446
|
-
"data-scrollpoint": props.scrollPoint ? 'selection' : undefined,
|
|
447
|
-
onClick: props.onClick
|
|
448
|
-
}, renderDragHandle(props), renderToolbar(props), /*#__PURE__*/React.createElement(InsertButton, Object.assign({}, props, {
|
|
449
|
-
at: "before"
|
|
450
|
-
})), props.children, /*#__PURE__*/React.createElement(InsertButton, Object.assign({}, props, {
|
|
451
|
-
at: "after"
|
|
452
|
-
})));
|
|
453
|
-
}
|
|
454
|
-
function InsertButton(props) {
|
|
455
|
-
var _useState = useState(false),
|
|
456
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
457
|
-
insertHovered = _useState2[0],
|
|
458
|
-
setInsertHovered = _useState2[1];
|
|
459
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
460
|
-
className: classNames(styles$5["insert-".concat(props.at)], _defineProperty({}, styles$5.insertHovered, insertHovered)),
|
|
461
|
-
contentEditable: false
|
|
462
|
-
}, /*#__PURE__*/React.createElement("button", {
|
|
463
|
-
className: styles$5.insertButton,
|
|
464
|
-
title: props.insertButtonTitles && props.insertButtonTitles[props.at],
|
|
465
|
-
onMouseDown: function onMouseDown(event) {
|
|
466
|
-
return event.preventDefault();
|
|
467
|
-
},
|
|
468
|
-
onClick: function onClick() {
|
|
469
|
-
return props.onInsertButtonClick(props.at);
|
|
470
|
-
},
|
|
471
|
-
onMouseEnter: function onMouseEnter() {
|
|
472
|
-
return setInsertHovered(true);
|
|
473
|
-
},
|
|
474
|
-
onMouseLeave: function onMouseLeave() {
|
|
475
|
-
return setInsertHovered(false);
|
|
476
|
-
}
|
|
477
|
-
}, /*#__PURE__*/React.createElement(PlusIcon, {
|
|
478
|
-
width: 15,
|
|
479
|
-
height: 15,
|
|
480
|
-
fill: "currentColor"
|
|
481
|
-
})));
|
|
482
|
-
}
|
|
483
|
-
function renderDragHandle(_ref) {
|
|
484
|
-
var drag = _ref.drag,
|
|
485
|
-
dragHandleTitle = _ref.dragHandleTitle;
|
|
486
|
-
if (!drag) {
|
|
487
|
-
return null;
|
|
488
|
-
}
|
|
489
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
490
|
-
ref: drag,
|
|
491
|
-
className: styles$5.dragHandle,
|
|
492
|
-
title: dragHandleTitle
|
|
493
|
-
}, /*#__PURE__*/React.createElement(MoveIcon, null));
|
|
494
|
-
}
|
|
495
|
-
function renderToolbar(_ref2) {
|
|
496
|
-
var toolbarButtons = _ref2.toolbarButtons,
|
|
497
|
-
onToolbarButtonClick = _ref2.onToolbarButtonClick,
|
|
498
|
-
start = _ref2.start;
|
|
499
|
-
if (toolbarButtons && start) {
|
|
500
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
501
|
-
className: styles$5.toolbar
|
|
502
|
-
}, /*#__PURE__*/React.createElement(Toolbar, {
|
|
503
|
-
buttons: toolbarButtons,
|
|
504
|
-
collapsible: true,
|
|
505
|
-
onButtonClick: onToolbarButtonClick
|
|
506
|
-
}));
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
SelectionRect.defaultProps = {
|
|
510
|
-
start: true,
|
|
511
|
-
end: true
|
|
512
|
-
};
|
|
513
|
-
|
|
514
|
-
var styles$6 = {"target":"DropTargets-module_target__Z2N2d","isOver":"DropTargets-module_isOver__3ksFy","before":"DropTargets-module_before__cAXo1 DropTargets-module_target__Z2N2d","after":"DropTargets-module_after__2Q8QU DropTargets-module_target__Z2N2d"};
|
|
515
|
-
|
|
516
|
-
function DropTargets(_ref) {
|
|
517
|
-
var accept = _ref.accept,
|
|
518
|
-
_canDrop = _ref.canDrop,
|
|
519
|
-
onDrop = _ref.onDrop;
|
|
520
|
-
var _useDrop = useDrop({
|
|
521
|
-
accept: accept,
|
|
522
|
-
canDrop: function canDrop(item) {
|
|
523
|
-
return _canDrop({
|
|
524
|
-
at: 'before',
|
|
525
|
-
id: item.id
|
|
526
|
-
});
|
|
527
|
-
},
|
|
528
|
-
collect: function collect(monitor) {
|
|
529
|
-
return {
|
|
530
|
-
canDropBefore: monitor.canDrop(),
|
|
531
|
-
isBefore: monitor.isOver() && monitor.canDrop()
|
|
532
|
-
};
|
|
533
|
-
},
|
|
534
|
-
drop: function drop(item) {
|
|
535
|
-
return onDrop({
|
|
536
|
-
at: 'before',
|
|
537
|
-
id: item.id,
|
|
538
|
-
range: item.range
|
|
539
|
-
});
|
|
540
|
-
}
|
|
541
|
-
}),
|
|
542
|
-
_useDrop2 = _slicedToArray(_useDrop, 2),
|
|
543
|
-
_useDrop2$ = _useDrop2[0],
|
|
544
|
-
canDropBefore = _useDrop2$.canDropBefore,
|
|
545
|
-
isBefore = _useDrop2$.isBefore,
|
|
546
|
-
dropBefore = _useDrop2[1];
|
|
547
|
-
var _useDrop3 = useDrop({
|
|
548
|
-
accept: accept,
|
|
549
|
-
canDrop: function canDrop(item) {
|
|
550
|
-
return _canDrop({
|
|
551
|
-
at: 'after',
|
|
552
|
-
id: item.id
|
|
553
|
-
});
|
|
554
|
-
},
|
|
555
|
-
collect: function collect(monitor) {
|
|
556
|
-
return {
|
|
557
|
-
canDropAfter: monitor.canDrop(),
|
|
558
|
-
isAfter: monitor.isOver() && monitor.canDrop()
|
|
559
|
-
};
|
|
560
|
-
},
|
|
561
|
-
drop: function drop(item) {
|
|
562
|
-
return onDrop({
|
|
563
|
-
at: 'after',
|
|
564
|
-
id: item.id,
|
|
565
|
-
range: item.range
|
|
566
|
-
});
|
|
567
|
-
}
|
|
568
|
-
}),
|
|
569
|
-
_useDrop4 = _slicedToArray(_useDrop3, 2),
|
|
570
|
-
_useDrop4$ = _useDrop4[0],
|
|
571
|
-
canDropAfter = _useDrop4$.canDropAfter,
|
|
572
|
-
isAfter = _useDrop4$.isAfter,
|
|
573
|
-
dropAfter = _useDrop4[1];
|
|
574
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, canDropBefore && /*#__PURE__*/React.createElement("div", {
|
|
575
|
-
ref: dropBefore,
|
|
576
|
-
"data-testid": "drop-before",
|
|
577
|
-
className: classNames(styles$6.before, _defineProperty({}, styles$6.isOver, isBefore))
|
|
578
|
-
}), canDropAfter && /*#__PURE__*/React.createElement("div", {
|
|
579
|
-
ref: dropAfter,
|
|
580
|
-
"data-testid": "drop-after",
|
|
581
|
-
title: "bar",
|
|
582
|
-
className: classNames(styles$6.after, _defineProperty({}, styles$6.isOver, isAfter))
|
|
583
|
-
}));
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
function postInsertContentElementMessage(_ref) {
|
|
587
|
-
var id = _ref.id,
|
|
588
|
-
at = _ref.at,
|
|
589
|
-
splitPoint = _ref.splitPoint;
|
|
590
|
-
window.parent.postMessage({
|
|
591
|
-
type: 'INSERT_CONTENT_ELEMENT',
|
|
592
|
-
payload: {
|
|
593
|
-
id: id,
|
|
594
|
-
at: at,
|
|
595
|
-
splitPoint: splitPoint
|
|
596
|
-
}
|
|
597
|
-
}, window.location.origin);
|
|
598
|
-
}
|
|
599
|
-
function postMoveContentElementMessage(_ref2) {
|
|
600
|
-
var id = _ref2.id,
|
|
601
|
-
range = _ref2.range,
|
|
602
|
-
to = _ref2.to;
|
|
603
|
-
window.parent.postMessage({
|
|
604
|
-
type: 'MOVE_CONTENT_ELEMENT',
|
|
605
|
-
payload: {
|
|
606
|
-
id: id,
|
|
607
|
-
range: range,
|
|
608
|
-
to: to
|
|
609
|
-
}
|
|
610
|
-
}, window.location.origin);
|
|
611
|
-
}
|
|
612
|
-
function postUpdateContentElementMessage(_ref3) {
|
|
613
|
-
var id = _ref3.id,
|
|
614
|
-
configuration = _ref3.configuration;
|
|
615
|
-
window.parent.postMessage({
|
|
616
|
-
type: 'UPDATE_CONTENT_ELEMENT',
|
|
617
|
-
payload: {
|
|
618
|
-
id: id,
|
|
619
|
-
configuration: configuration
|
|
620
|
-
}
|
|
621
|
-
}, window.location.origin);
|
|
622
|
-
}
|
|
623
|
-
function postUpdateTransientContentElementStateMessage(_ref4) {
|
|
624
|
-
var id = _ref4.id,
|
|
625
|
-
state = _ref4.state;
|
|
626
|
-
window.parent.postMessage({
|
|
627
|
-
type: 'UPDATE_TRANSIENT_CONTENT_ELEMENT_STATE',
|
|
628
|
-
payload: {
|
|
629
|
-
id: id,
|
|
630
|
-
state: state
|
|
631
|
-
}
|
|
632
|
-
}, window.location.origin);
|
|
633
|
-
}
|
|
634
|
-
function postSelectLinkDestinationMessage() {
|
|
635
|
-
window.parent.postMessage({
|
|
636
|
-
type: 'SELECT_LINK_DESTINATION'
|
|
637
|
-
}, window.location.origin);
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
function ContentElementConfigurationUpdateProvider(_ref) {
|
|
641
|
-
var id = _ref.id,
|
|
642
|
-
permaId = _ref.permaId,
|
|
643
|
-
children = _ref.children;
|
|
644
|
-
var dispatch = useEntryStateDispatch();
|
|
645
|
-
var update = useCallback(function (configuration) {
|
|
646
|
-
postUpdateContentElementMessage({
|
|
647
|
-
id: id,
|
|
648
|
-
configuration: configuration
|
|
649
|
-
});
|
|
650
|
-
updateContentElementConfiguration({
|
|
651
|
-
dispatch: dispatch,
|
|
652
|
-
permaId: permaId,
|
|
653
|
-
configuration: configuration
|
|
654
|
-
});
|
|
655
|
-
}, [dispatch, permaId, id]);
|
|
656
|
-
return /*#__PURE__*/React.createElement(ContentElementConfigurationUpdateContext.Provider, {
|
|
657
|
-
value: update
|
|
658
|
-
}, children);
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
function ContentElementEditorStateProvider(_ref) {
|
|
662
|
-
var id = _ref.id,
|
|
663
|
-
children = _ref.children;
|
|
664
|
-
var _useEditorSelection = useEditorSelection(useMemo(function () {
|
|
665
|
-
return {
|
|
666
|
-
id: id,
|
|
667
|
-
type: 'contentElement'
|
|
668
|
-
};
|
|
669
|
-
}, [id])),
|
|
670
|
-
isSelected = _useEditorSelection.isSelected,
|
|
671
|
-
select = _useEditorSelection.select,
|
|
672
|
-
range = _useEditorSelection.range;
|
|
673
|
-
var previousTransientState = useRef({});
|
|
674
|
-
var setTransientState = useCallback(function (state) {
|
|
675
|
-
if (!shallowEqual(state, previousTransientState.current)) {
|
|
676
|
-
postUpdateTransientContentElementStateMessage({
|
|
677
|
-
id: id,
|
|
678
|
-
state: state
|
|
679
|
-
});
|
|
680
|
-
previousTransientState.current = state;
|
|
681
|
-
}
|
|
682
|
-
}, [id]);
|
|
683
|
-
var value = useMemo(function () {
|
|
684
|
-
return {
|
|
685
|
-
isEditable: true,
|
|
686
|
-
select: select,
|
|
687
|
-
isSelected: isSelected,
|
|
688
|
-
range: range,
|
|
689
|
-
setTransientState: setTransientState
|
|
690
|
-
};
|
|
691
|
-
}, [select, isSelected, range, setTransientState]);
|
|
692
|
-
return /*#__PURE__*/React.createElement(ContentElementEditorStateContext.Provider, {
|
|
693
|
-
value: value
|
|
694
|
-
}, children);
|
|
695
|
-
}
|
|
696
|
-
function shallowEqual(obj1, obj2) {
|
|
697
|
-
return Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).every(function (key) {
|
|
698
|
-
return Object.prototype.hasOwnProperty.call(obj2, key) && obj1[key] === obj2[key];
|
|
699
|
-
});
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
function ContentElementDecorator(props) {
|
|
703
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
704
|
-
className: styles$2.wrapper,
|
|
705
|
-
"data-scrollpoint": props.id
|
|
706
|
-
}, /*#__PURE__*/React.createElement(ContentElementEditorStateProvider, {
|
|
707
|
-
id: props.id
|
|
708
|
-
}, /*#__PURE__*/React.createElement(OptionalSelectionRect, props, /*#__PURE__*/React.createElement(ContentElementConfigurationUpdateProvider, {
|
|
709
|
-
id: props.id,
|
|
710
|
-
permaId: props.permaId
|
|
711
|
-
}, props.children))));
|
|
712
|
-
}
|
|
713
|
-
function OptionalSelectionRect(props) {
|
|
714
|
-
var _ref = api.contentElementTypes.getOptions(props.type) || {},
|
|
715
|
-
customSelectionRect = _ref.customSelectionRect;
|
|
716
|
-
if (customSelectionRect) {
|
|
717
|
-
return props.children;
|
|
718
|
-
} else {
|
|
719
|
-
return /*#__PURE__*/React.createElement(DefaultSelectionRect, props, props.children);
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
function DefaultSelectionRect(props) {
|
|
723
|
-
var _useContentElementEdi = useContentElementEditorState(),
|
|
724
|
-
isSelected = _useContentElementEdi.isSelected,
|
|
725
|
-
select = _useContentElementEdi.select;
|
|
726
|
-
var _useI18n = useI18n({
|
|
727
|
-
locale: 'ui'
|
|
728
|
-
}),
|
|
729
|
-
t = _useI18n.t;
|
|
730
|
-
var _useDrag = useDrag({
|
|
731
|
-
item: {
|
|
732
|
-
type: 'contentElement',
|
|
733
|
-
id: props.id
|
|
734
|
-
}
|
|
735
|
-
}),
|
|
736
|
-
_useDrag2 = _slicedToArray(_useDrag, 3),
|
|
737
|
-
drag = _useDrag2[1],
|
|
738
|
-
preview = _useDrag2[2];
|
|
739
|
-
return /*#__PURE__*/React.createElement(SelectionRect, {
|
|
740
|
-
selected: isSelected,
|
|
741
|
-
scrollPoint: isSelected,
|
|
742
|
-
drag: drag,
|
|
743
|
-
dragHandleTitle: t('pageflow_scrolled.inline_editing.drag_content_element'),
|
|
744
|
-
full: props.width === widths.full || props.customMargin,
|
|
745
|
-
inset: props.position === 'backdrop',
|
|
746
|
-
ariaLabel: t('pageflow_scrolled.inline_editing.select_content_element'),
|
|
747
|
-
insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
|
|
748
|
-
onClick: function onClick() {
|
|
749
|
-
return select();
|
|
750
|
-
},
|
|
751
|
-
onInsertButtonClick: function onInsertButtonClick(at) {
|
|
752
|
-
return postInsertContentElementMessage({
|
|
753
|
-
id: props.id,
|
|
754
|
-
at: at
|
|
755
|
-
});
|
|
756
|
-
}
|
|
757
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
758
|
-
ref: preview
|
|
759
|
-
}, props.children), /*#__PURE__*/React.createElement(DropTargets, {
|
|
760
|
-
accept: "contentElement",
|
|
761
|
-
canDrop: function canDrop(_ref2) {
|
|
762
|
-
var id = _ref2.id;
|
|
763
|
-
return id !== props.id;
|
|
764
|
-
},
|
|
765
|
-
onDrop: function onDrop(_ref3) {
|
|
766
|
-
var id = _ref3.id,
|
|
767
|
-
range = _ref3.range,
|
|
768
|
-
at = _ref3.at;
|
|
769
|
-
return postMoveContentElementMessage({
|
|
770
|
-
id: id,
|
|
771
|
-
range: range,
|
|
772
|
-
to: {
|
|
773
|
-
id: props.id,
|
|
774
|
-
at: at
|
|
775
|
-
}
|
|
776
|
-
});
|
|
777
|
-
}
|
|
778
|
-
}));
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
var styles$7 = {"container":"ContentElementInsertButton-module_container__3dvUS","hovered":"ContentElementInsertButton-module_hovered__3Pggi","button":"ContentElementInsertButton-module_button__2-eE2"};
|
|
782
|
-
|
|
783
|
-
function ContentElementInsertButton(_ref) {
|
|
784
|
-
var onClick = _ref.onClick;
|
|
785
|
-
var _useState = useState(),
|
|
786
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
787
|
-
hovered = _useState2[0],
|
|
788
|
-
setHovered = _useState2[1];
|
|
789
|
-
var _useI18n = useI18n({
|
|
790
|
-
locale: 'ui'
|
|
791
|
-
}),
|
|
792
|
-
t = _useI18n.t;
|
|
793
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
794
|
-
className: classNames(styles$7.container, _defineProperty({}, styles$7.hovered, hovered))
|
|
795
|
-
}, /*#__PURE__*/React.createElement("button", {
|
|
796
|
-
className: styles$7.button,
|
|
797
|
-
title: t('pageflow_scrolled.inline_editing.add_content_element'),
|
|
798
|
-
onClick: onClick,
|
|
799
|
-
onMouseDown: function onMouseDown(event) {
|
|
800
|
-
return event.stopPropagation();
|
|
801
|
-
},
|
|
802
|
-
onMouseEnter: function onMouseEnter() {
|
|
803
|
-
return setHovered(true);
|
|
804
|
-
},
|
|
805
|
-
onMouseLeave: function onMouseLeave() {
|
|
806
|
-
return setHovered(false);
|
|
807
|
-
}
|
|
808
|
-
}, /*#__PURE__*/React.createElement(PlusIcon, {
|
|
809
|
-
width: 15,
|
|
810
|
-
height: 15,
|
|
811
|
-
fill: "currentColor"
|
|
812
|
-
})));
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
function LayoutWithPlaceholder(props) {
|
|
816
|
-
var _useEditorSelection = useEditorSelection({
|
|
817
|
-
id: props.sectionId,
|
|
818
|
-
type: 'section'
|
|
819
|
-
}),
|
|
820
|
-
isSelected = _useEditorSelection.isSelected;
|
|
821
|
-
var _useEditorSelection2 = useEditorSelection({
|
|
822
|
-
id: props.sectionId,
|
|
823
|
-
type: 'sectionSettings'
|
|
824
|
-
}),
|
|
825
|
-
settingsSelected = _useEditorSelection2.isSelected;
|
|
826
|
-
var placeholder = isSelected || settingsSelected ? /*#__PURE__*/React.createElement(ContentElementInsertButton, {
|
|
827
|
-
onClick: function onClick() {
|
|
828
|
-
return postInsertContentElementMessage({
|
|
829
|
-
at: 'endOfSection',
|
|
830
|
-
id: props.sectionId
|
|
831
|
-
});
|
|
832
|
-
}
|
|
833
|
-
}) : null;
|
|
834
|
-
return /*#__PURE__*/React.createElement(LayoutWithoutInlineEditing, Object.assign({}, props, {
|
|
835
|
-
placeholder: placeholder
|
|
836
|
-
}));
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
function useCachedValue(value) {
|
|
840
|
-
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
841
|
-
defaultValue = _ref.defaultValue,
|
|
842
|
-
onReset = _ref.onReset,
|
|
843
|
-
onDebouncedChange = _ref.onDebouncedChange,
|
|
844
|
-
_ref$delay = _ref.delay,
|
|
845
|
-
delay = _ref$delay === void 0 ? 2000 : _ref$delay;
|
|
846
|
-
var _useState = useState(value || defaultValue),
|
|
847
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
848
|
-
cachedValue = _useState2[0],
|
|
849
|
-
setCachedValue = _useState2[1];
|
|
850
|
-
var previousValue = useRef(value);
|
|
851
|
-
useEffect(function () {
|
|
852
|
-
if (previousValue.current !== value && value !== cachedValue) {
|
|
853
|
-
onReset && onReset(value);
|
|
854
|
-
setCachedValue(value);
|
|
855
|
-
}
|
|
856
|
-
}, [onReset, value, cachedValue]);
|
|
857
|
-
useEffect(function () {
|
|
858
|
-
previousValue.current = value;
|
|
859
|
-
});
|
|
860
|
-
var debouncedHandler = useDebouncedCallback(onDebouncedChange, delay);
|
|
861
|
-
var setValue = useCallback(function (value) {
|
|
862
|
-
setCachedValue(function (previousValue) {
|
|
863
|
-
if (previousValue !== value) {
|
|
864
|
-
debouncedHandler(value);
|
|
865
|
-
}
|
|
866
|
-
return value;
|
|
867
|
-
});
|
|
868
|
-
}, [debouncedHandler]);
|
|
869
|
-
return [cachedValue, setValue];
|
|
870
|
-
}
|
|
871
|
-
|
|
872
|
-
// Debounce callback even if the callback function changes across renders.
|
|
873
|
-
function useDebouncedCallback(callback, delay) {
|
|
874
|
-
var mostRecentCallback = useRef(null);
|
|
875
|
-
var debouncedHandler = useRef(null);
|
|
876
|
-
useEffect(function () {
|
|
877
|
-
mostRecentCallback.current = callback;
|
|
878
|
-
}, [callback]);
|
|
879
|
-
useEffect(function () {
|
|
880
|
-
debouncedHandler.current = debounce(function (value) {
|
|
881
|
-
if (mostRecentCallback.current) {
|
|
882
|
-
mostRecentCallback.current(value);
|
|
883
|
-
}
|
|
884
|
-
}, delay);
|
|
885
|
-
return function () {
|
|
886
|
-
debouncedHandler.current.flush();
|
|
887
|
-
};
|
|
888
|
-
}, [delay]);
|
|
889
|
-
return useCallback(function () {
|
|
890
|
-
return debouncedHandler.current.apply(debouncedHandler, arguments);
|
|
891
|
-
}, []);
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
var styles$8 = {"placeholder":"TextPlaceholder-module_placeholder__sgVwx"};
|
|
895
|
-
|
|
896
|
-
function TextPlaceholder(_ref) {
|
|
897
|
-
var text = _ref.text,
|
|
898
|
-
visible = _ref.visible,
|
|
899
|
-
className = _ref.className;
|
|
900
|
-
if (!text || !visible) {
|
|
901
|
-
return null;
|
|
902
|
-
}
|
|
903
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
904
|
-
className: styles$8.placeholder
|
|
905
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
906
|
-
className: className
|
|
907
|
-
}, text));
|
|
908
|
-
}
|
|
909
|
-
|
|
910
|
-
function withCustomInsertBreak(editor) {
|
|
911
|
-
var insertBreak = editor.insertBreak;
|
|
912
|
-
editor.insertBreak = function () {
|
|
913
|
-
var selection = editor.selection;
|
|
914
|
-
if (selection && Range.isCollapsed(selection)) {
|
|
915
|
-
var match = Editor.above(editor, {
|
|
916
|
-
match: function match(n) {
|
|
917
|
-
return Editor.isBlock(editor, n);
|
|
918
|
-
}
|
|
919
|
-
});
|
|
920
|
-
if (match) {
|
|
921
|
-
var _match = _slicedToArray(match, 2),
|
|
922
|
-
block = _match[0],
|
|
923
|
-
path = _match[1];
|
|
924
|
-
if (Editor.isEnd(editor, selection.anchor, path) && block.type === 'heading') {
|
|
925
|
-
Transforms.insertNodes(editor, {
|
|
926
|
-
type: 'paragraph',
|
|
927
|
-
children: [{
|
|
928
|
-
text: ''
|
|
929
|
-
}]
|
|
930
|
-
});
|
|
931
|
-
return;
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
insertBreak();
|
|
936
|
-
};
|
|
937
|
-
return editor;
|
|
938
|
-
}
|
|
939
|
-
|
|
940
|
-
var styles$9 = {"linkTooltip":"LinkTooltip-module_linkTooltip__esBv0","thumbnail":"LinkTooltip-module_thumbnail__3Vzce","thumbnailClickMask":"LinkTooltip-module_thumbnailClickMask__3iSZw","newTab":"LinkTooltip-module_newTab__3uW7O","chapterNumber":"LinkTooltip-module_chapterNumber__YUvjI"};
|
|
941
|
-
|
|
942
|
-
var _excluded$3 = ["styles"];
|
|
943
|
-
function _extends$3() {
|
|
944
|
-
_extends$3 = Object.assign ? Object.assign.bind() : function (target) {
|
|
945
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
946
|
-
var source = arguments[i];
|
|
947
|
-
for (var key in source) {
|
|
948
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
949
|
-
target[key] = source[key];
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
}
|
|
953
|
-
return target;
|
|
954
|
-
};
|
|
955
|
-
return _extends$3.apply(this, arguments);
|
|
956
|
-
}
|
|
957
|
-
var ExternalLinkIcon = (function (_ref) {
|
|
958
|
-
var _ref$styles = _ref.styles,
|
|
959
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
960
|
-
props = _objectWithoutProperties(_ref, _excluded$3);
|
|
961
|
-
return /*#__PURE__*/React.createElement("svg", _extends$3({
|
|
962
|
-
"aria-hidden": "true",
|
|
963
|
-
"data-prefix": "fas",
|
|
964
|
-
"data-icon": "external-link-alt",
|
|
965
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-external-link-alt"] || "fa-external-link-alt") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
966
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
967
|
-
viewBox: "0 0 512 512"
|
|
968
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
969
|
-
fill: "currentColor",
|
|
970
|
-
d: "M432 320h-32a16 16 0 00-16 16v112H64V128h144a16 16 0 0016-16V80a16 16 0 00-16-16H48a48 48 0 00-48 48v352a48 48 0 0048 48h352a48 48 0 0048-48V336a16 16 0 00-16-16zM488 0H360c-21.37 0-32.05 25.91-17 41l35.73 35.73L135 320.37a24 24 0 000 34L157.67 377a24 24 0 0034 0l243.61-243.68L471 169c15 15 41 4.5 41-17V24a24 24 0 00-24-24z"
|
|
971
|
-
}));
|
|
972
|
-
});
|
|
973
|
-
|
|
974
|
-
var UpdateContext = createContext();
|
|
975
|
-
function LinkTooltipProvider(props) {
|
|
976
|
-
var update = useContext(UpdateContext);
|
|
977
|
-
if (update) {
|
|
978
|
-
return props.children;
|
|
979
|
-
} else {
|
|
980
|
-
return /*#__PURE__*/React.createElement(LinkTooltipProviderInner, props);
|
|
981
|
-
}
|
|
982
|
-
}
|
|
983
|
-
function LinkTooltipProviderInner(_ref) {
|
|
984
|
-
var disabled = _ref.disabled,
|
|
985
|
-
position = _ref.position,
|
|
986
|
-
children = _ref.children,
|
|
987
|
-
_ref$align = _ref.align,
|
|
988
|
-
align = _ref$align === void 0 ? 'left' : _ref$align,
|
|
989
|
-
_ref$gap = _ref.gap,
|
|
990
|
-
gap = _ref$gap === void 0 ? 10 : _ref$gap;
|
|
991
|
-
var _useState = useState(),
|
|
992
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
993
|
-
state = _useState2[0],
|
|
994
|
-
setState = _useState2[1];
|
|
995
|
-
var arrowRef = useRef();
|
|
996
|
-
var _useFloating = useFloating({
|
|
997
|
-
placement: "".concat(position === 'below' ? 'bottom' : 'top').concat(align === 'left' ? '-start' : ''),
|
|
998
|
-
middleware: [offset(gap), shift(), arrow({
|
|
999
|
-
element: arrowRef,
|
|
1000
|
-
padding: 10
|
|
1001
|
-
}), inline()],
|
|
1002
|
-
whileElementsMounted: autoUpdate
|
|
1003
|
-
}),
|
|
1004
|
-
refs = _useFloating.refs,
|
|
1005
|
-
floatingStyles = _useFloating.floatingStyles,
|
|
1006
|
-
floatingContext = _useFloating.context;
|
|
1007
|
-
var update = useMemo(function () {
|
|
1008
|
-
var timeout;
|
|
1009
|
-
return {
|
|
1010
|
-
activate: function activate(href, openInNewTab, linkRef) {
|
|
1011
|
-
clearTimeout(timeout);
|
|
1012
|
-
timeout = null;
|
|
1013
|
-
refs.setReference(linkRef.current);
|
|
1014
|
-
setState({
|
|
1015
|
-
href: href,
|
|
1016
|
-
openInNewTab: openInNewTab
|
|
1017
|
-
});
|
|
1018
|
-
},
|
|
1019
|
-
keep: function keep() {
|
|
1020
|
-
clearTimeout(timeout);
|
|
1021
|
-
timeout = null;
|
|
1022
|
-
},
|
|
1023
|
-
deactivate: function deactivate() {
|
|
1024
|
-
if (!timeout) {
|
|
1025
|
-
timeout = setTimeout(function () {
|
|
1026
|
-
timeout = null;
|
|
1027
|
-
setState(null);
|
|
1028
|
-
}, 200);
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
};
|
|
1032
|
-
}, [refs]);
|
|
1033
|
-
return /*#__PURE__*/React.createElement(UpdateContext.Provider, {
|
|
1034
|
-
value: update
|
|
1035
|
-
}, /*#__PURE__*/React.createElement(FloatingPortal, {
|
|
1036
|
-
root: useFloatingPortalRoot()
|
|
1037
|
-
}, /*#__PURE__*/React.createElement(LinkTooltip, {
|
|
1038
|
-
state: state,
|
|
1039
|
-
setFloating: refs.setFloating,
|
|
1040
|
-
floatingStyles: floatingStyles,
|
|
1041
|
-
floatingContext: floatingContext,
|
|
1042
|
-
arrowRef: arrowRef,
|
|
1043
|
-
disabled: disabled
|
|
1044
|
-
})), children);
|
|
1045
|
-
}
|
|
1046
|
-
function LinkPreview(_ref2) {
|
|
1047
|
-
var href = _ref2.href,
|
|
1048
|
-
openInNewTab = _ref2.openInNewTab,
|
|
1049
|
-
children = _ref2.children,
|
|
1050
|
-
className = _ref2.className;
|
|
1051
|
-
var _useContext = useContext(UpdateContext),
|
|
1052
|
-
activate = _useContext.activate,
|
|
1053
|
-
deactivate = _useContext.deactivate;
|
|
1054
|
-
var ref = useRef();
|
|
1055
|
-
return /*#__PURE__*/React.createElement("span", {
|
|
1056
|
-
ref: ref,
|
|
1057
|
-
className: className,
|
|
1058
|
-
onMouseEnter: function onMouseEnter() {
|
|
1059
|
-
return activate(href, openInNewTab, ref);
|
|
1060
|
-
},
|
|
1061
|
-
onMouseLeave: deactivate
|
|
1062
|
-
}, children);
|
|
1063
|
-
}
|
|
1064
|
-
function LinkTooltip(_ref3) {
|
|
1065
|
-
var disabled = _ref3.disabled,
|
|
1066
|
-
setFloating = _ref3.setFloating,
|
|
1067
|
-
floatingStyles = _ref3.floatingStyles,
|
|
1068
|
-
floatingContext = _ref3.floatingContext,
|
|
1069
|
-
arrowRef = _ref3.arrowRef,
|
|
1070
|
-
state = _ref3.state;
|
|
1071
|
-
var _useContext2 = useContext(UpdateContext),
|
|
1072
|
-
keep = _useContext2.keep,
|
|
1073
|
-
deactivate = _useContext2.deactivate;
|
|
1074
|
-
if (disabled || !state || !state.href) {
|
|
1075
|
-
return null;
|
|
1076
|
-
}
|
|
1077
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
1078
|
-
ref: setFloating,
|
|
1079
|
-
className: classNames(styles$9.linkTooltip),
|
|
1080
|
-
onClick: function onClick(e) {
|
|
1081
|
-
return e.stopPropagation();
|
|
1082
|
-
},
|
|
1083
|
-
onMouseEnter: keep,
|
|
1084
|
-
onMouseLeave: deactivate,
|
|
1085
|
-
style: floatingStyles
|
|
1086
|
-
}, /*#__PURE__*/React.createElement(FloatingArrow, {
|
|
1087
|
-
ref: arrowRef,
|
|
1088
|
-
context: floatingContext
|
|
1089
|
-
}), /*#__PURE__*/React.createElement(LinkDestination, {
|
|
1090
|
-
href: state.href,
|
|
1091
|
-
openInNewTab: state.openInNewTab
|
|
1092
|
-
}));
|
|
1093
|
-
}
|
|
1094
|
-
function LinkDestination(_ref4) {
|
|
1095
|
-
var href = _ref4.href,
|
|
1096
|
-
openInNewTab = _ref4.openInNewTab;
|
|
1097
|
-
if (href === null || href === void 0 ? void 0 : href.chapter) {
|
|
1098
|
-
return /*#__PURE__*/React.createElement(ChapterLinkDestination, {
|
|
1099
|
-
permaId: href.chapter
|
|
1100
|
-
});
|
|
1101
|
-
} else if (href === null || href === void 0 ? void 0 : href.section) {
|
|
1102
|
-
return /*#__PURE__*/React.createElement(SectionLinkDestination, {
|
|
1103
|
-
permaId: href.section
|
|
1104
|
-
});
|
|
1105
|
-
} else if (href === null || href === void 0 ? void 0 : href.file) {
|
|
1106
|
-
return /*#__PURE__*/React.createElement(FileLinkDestination, {
|
|
1107
|
-
fileOptions: href.file
|
|
1108
|
-
});
|
|
1109
|
-
} else {
|
|
1110
|
-
return /*#__PURE__*/React.createElement(ExternalLinkDestination, {
|
|
1111
|
-
href: href,
|
|
1112
|
-
openInNewTab: openInNewTab
|
|
1113
|
-
});
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
function ChapterLinkDestination(_ref5) {
|
|
1117
|
-
var permaId = _ref5.permaId;
|
|
1118
|
-
var chapter = useChapter({
|
|
1119
|
-
permaId: permaId
|
|
1120
|
-
});
|
|
1121
|
-
var _useI18n = useI18n({
|
|
1122
|
-
locale: 'ui'
|
|
1123
|
-
}),
|
|
1124
|
-
t = _useI18n.t;
|
|
1125
|
-
if (!chapter) {
|
|
1126
|
-
return /*#__PURE__*/React.createElement("span", null, t('pageflow_scrolled.inline_editing.link_tooltip.deleted_chapter'));
|
|
1127
|
-
}
|
|
1128
|
-
return /*#__PURE__*/React.createElement("a", {
|
|
1129
|
-
href: "#".concat(chapter.chapterSlug),
|
|
1130
|
-
title: t('pageflow_scrolled.inline_editing.link_tooltip.visit_chapter')
|
|
1131
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
1132
|
-
className: styles$9.chapterNumber
|
|
1133
|
-
}, t('pageflow_scrolled.inline_editing.link_tooltip.chapter_number', {
|
|
1134
|
-
number: chapter.index + 1
|
|
1135
|
-
})), " ", chapter.title);
|
|
1136
|
-
}
|
|
1137
|
-
function SectionLinkDestination(_ref6) {
|
|
1138
|
-
var permaId = _ref6.permaId;
|
|
1139
|
-
var _useI18n2 = useI18n({
|
|
1140
|
-
locale: 'ui'
|
|
1141
|
-
}),
|
|
1142
|
-
t = _useI18n2.t;
|
|
1143
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
1144
|
-
className: styles$9.thumbnail
|
|
1145
|
-
}, /*#__PURE__*/React.createElement(SectionThumbnail, {
|
|
1146
|
-
sectionPermaId: permaId
|
|
1147
|
-
}), /*#__PURE__*/React.createElement("a", {
|
|
1148
|
-
href: "#section-".concat(permaId),
|
|
1149
|
-
className: styles$9.thumbnailClickMask,
|
|
1150
|
-
title: t('pageflow_scrolled.inline_editing.link_tooltip.visit_section')
|
|
1151
|
-
}));
|
|
1152
|
-
}
|
|
1153
|
-
function ExternalLinkDestination(_ref7) {
|
|
1154
|
-
var href = _ref7.href,
|
|
1155
|
-
openInNewTab = _ref7.openInNewTab;
|
|
1156
|
-
var _useI18n3 = useI18n({
|
|
1157
|
-
locale: 'ui'
|
|
1158
|
-
}),
|
|
1159
|
-
t = _useI18n3.t;
|
|
1160
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("a", {
|
|
1161
|
-
href: href,
|
|
1162
|
-
target: "_blank",
|
|
1163
|
-
rel: "noopener noreferrer"
|
|
1164
|
-
}, href, /*#__PURE__*/React.createElement(ExternalLinkIcon, {
|
|
1165
|
-
width: 10,
|
|
1166
|
-
height: 10
|
|
1167
|
-
})), /*#__PURE__*/React.createElement("div", {
|
|
1168
|
-
className: styles$9.newTab
|
|
1169
|
-
}, openInNewTab ? t('pageflow_scrolled.inline_editing.link_tooltip.opens_in_new_tab') : t('pageflow_scrolled.inline_editing.link_tooltip.opens_in_same_tab')));
|
|
1170
|
-
}
|
|
1171
|
-
function FileLinkDestination(_ref8) {
|
|
1172
|
-
var fileOptions = _ref8.fileOptions;
|
|
1173
|
-
var file = useDownloadableFile(fileOptions);
|
|
1174
|
-
var _useI18n4 = useI18n({
|
|
1175
|
-
locale: 'ui'
|
|
1176
|
-
}),
|
|
1177
|
-
t = _useI18n4.t;
|
|
1178
|
-
if (!file) {
|
|
1179
|
-
return /*#__PURE__*/React.createElement("span", null, t('pageflow_scrolled.inline_editing.link_tooltip.deleted_file'));
|
|
1180
|
-
}
|
|
1181
|
-
return /*#__PURE__*/React.createElement("a", {
|
|
1182
|
-
href: file.urls.download,
|
|
1183
|
-
target: "_blank",
|
|
1184
|
-
rel: "noopener noreferrer"
|
|
1185
|
-
}, file.displayName, /*#__PURE__*/React.createElement(ExternalLinkIcon, {
|
|
1186
|
-
width: 10,
|
|
1187
|
-
height: 10
|
|
1188
|
-
}));
|
|
1189
|
-
}
|
|
1190
|
-
|
|
1191
|
-
function withLinks(editor) {
|
|
1192
|
-
var isInline = editor.isInline;
|
|
1193
|
-
editor.isInline = function (element) {
|
|
1194
|
-
return element.type === 'link' ? true : isInline(element);
|
|
1195
|
-
};
|
|
1196
|
-
return editor;
|
|
1197
|
-
}
|
|
1198
|
-
var renderElementWithLinkPreview = wrapRenderElementWithLinkPreview(renderElement);
|
|
1199
|
-
function wrapRenderElementWithLinkPreview(renderElement) {
|
|
1200
|
-
return function (options) {
|
|
1201
|
-
if (options.element.type === 'link') {
|
|
1202
|
-
return /*#__PURE__*/React.createElement(LinkPreview, {
|
|
1203
|
-
href: options.element.href,
|
|
1204
|
-
openInNewTab: options.element.openInNewTab
|
|
1205
|
-
}, renderElement(options));
|
|
1206
|
-
} else {
|
|
1207
|
-
return renderElement(options);
|
|
1208
|
-
}
|
|
1209
|
-
};
|
|
1210
|
-
}
|
|
1211
|
-
|
|
1212
|
-
// Used to render drop targets between paragraphs only when a content
|
|
1213
|
-
// element is currently being dragged over the element. `react-dnd`
|
|
1214
|
-
// causes "Update on unmounted component warning" when dropping an
|
|
1215
|
-
// element removes a drop target [1]. As a workaround, couple
|
|
1216
|
-
// rendering of drop targets to asynchronously updated state. That way
|
|
1217
|
-
// the drop target is only removed after element has been dropped.
|
|
1218
|
-
//
|
|
1219
|
-
// [1] https://github.com/react-dnd/react-dnd/issues/1573
|
|
1220
|
-
function useDropTargetsActive() {
|
|
1221
|
-
var _useState = useState(false),
|
|
1222
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
1223
|
-
dropTargetsActive = _useState2[0],
|
|
1224
|
-
setDropTargetsActive = _useState2[1];
|
|
1225
|
-
var _useDrop = useDrop({
|
|
1226
|
-
accept: 'contentElement',
|
|
1227
|
-
collect: function collect(monitor) {
|
|
1228
|
-
return {
|
|
1229
|
-
canDrop: monitor.canDrop() && monitor.isOver()
|
|
1230
|
-
};
|
|
1231
|
-
}
|
|
1232
|
-
}),
|
|
1233
|
-
_useDrop2 = _slicedToArray(_useDrop, 2),
|
|
1234
|
-
canDrop = _useDrop2[0].canDrop,
|
|
1235
|
-
drop = _useDrop2[1];
|
|
1236
|
-
useEffect(function () {
|
|
1237
|
-
if (canDrop) {
|
|
1238
|
-
setDropTargetsActive(true);
|
|
1239
|
-
} else {
|
|
1240
|
-
var timeout = setTimeout(function () {
|
|
1241
|
-
setDropTargetsActive(false);
|
|
1242
|
-
}, 10);
|
|
1243
|
-
return function () {
|
|
1244
|
-
clearTimeout(timeout);
|
|
1245
|
-
};
|
|
1246
|
-
}
|
|
1247
|
-
}, [canDrop]);
|
|
1248
|
-
return [dropTargetsActive, drop];
|
|
1249
|
-
}
|
|
1250
|
-
|
|
1251
|
-
var abortPreviousCall;
|
|
1252
|
-
function useSelectLinkDestination() {
|
|
1253
|
-
return function () {
|
|
1254
|
-
return new Promise(function (resolve, reject) {
|
|
1255
|
-
if (abortPreviousCall) {
|
|
1256
|
-
abortPreviousCall();
|
|
1257
|
-
}
|
|
1258
|
-
abortPreviousCall = function abortPreviousCall() {
|
|
1259
|
-
window.removeEventListener('message', receive);
|
|
1260
|
-
reject();
|
|
1261
|
-
};
|
|
1262
|
-
postSelectLinkDestinationMessage();
|
|
1263
|
-
window.addEventListener('message', receive);
|
|
1264
|
-
function receive(message) {
|
|
1265
|
-
if (window.location.href.indexOf(message.origin) === 0) {
|
|
1266
|
-
if (message.data.type === 'LINK_DESTINATION_SELECTED') {
|
|
1267
|
-
abortPreviousCall = null;
|
|
1268
|
-
window.removeEventListener('message', receive);
|
|
1269
|
-
resolve(message.data.payload);
|
|
1270
|
-
}
|
|
1271
|
-
}
|
|
1272
|
-
}
|
|
1273
|
-
});
|
|
1274
|
-
};
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1277
|
-
var mutuallyExclusive = {
|
|
1278
|
-
sup: 'sub',
|
|
1279
|
-
sub: 'sup'
|
|
1280
|
-
};
|
|
1281
|
-
function toggleMark(editor, format) {
|
|
1282
|
-
var isActive = isMarkActive(editor, format);
|
|
1283
|
-
if (isActive) {
|
|
1284
|
-
Editor.removeMark(editor, format);
|
|
1285
|
-
} else {
|
|
1286
|
-
if (mutuallyExclusive[format] && isMarkActive(editor, mutuallyExclusive[format])) {
|
|
1287
|
-
Editor.removeMark(editor, mutuallyExclusive[format]);
|
|
1288
|
-
}
|
|
1289
|
-
Editor.addMark(editor, format, true);
|
|
1290
|
-
}
|
|
1291
|
-
}
|
|
1292
|
-
function isMarkActive(editor, format) {
|
|
1293
|
-
var marks = Editor.marks(editor);
|
|
1294
|
-
return marks ? marks[format] === true : false;
|
|
1295
|
-
}
|
|
1296
|
-
|
|
1297
|
-
var _excluded$4 = ["styles"];
|
|
1298
|
-
function _extends$4() {
|
|
1299
|
-
_extends$4 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1300
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1301
|
-
var source = arguments[i];
|
|
1302
|
-
for (var key in source) {
|
|
1303
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1304
|
-
target[key] = source[key];
|
|
1305
|
-
}
|
|
1306
|
-
}
|
|
1307
|
-
}
|
|
1308
|
-
return target;
|
|
1309
|
-
};
|
|
1310
|
-
return _extends$4.apply(this, arguments);
|
|
1311
|
-
}
|
|
1312
|
-
var BoldIcon = (function (_ref) {
|
|
1313
|
-
var _ref$styles = _ref.styles,
|
|
1314
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1315
|
-
props = _objectWithoutProperties(_ref, _excluded$4);
|
|
1316
|
-
return /*#__PURE__*/React.createElement("svg", _extends$4({
|
|
1317
|
-
"aria-hidden": "true",
|
|
1318
|
-
"data-prefix": "fas",
|
|
1319
|
-
"data-icon": "bold",
|
|
1320
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-bold"] || "fa-bold") + " " + (styles["fa-w-12"] || "fa-w-12"),
|
|
1321
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1322
|
-
viewBox: "0 0 384 512"
|
|
1323
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1324
|
-
fill: "currentColor",
|
|
1325
|
-
d: "M333.49 238a122 122 0 0027-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 00-16 16v48a16 16 0 0016 16h31.87v288H34a16 16 0 00-16 16v48a16 16 0 0016 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 010 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 010 112z"
|
|
1326
|
-
}));
|
|
1327
|
-
});
|
|
1328
|
-
|
|
1329
|
-
var _excluded$5 = ["styles"];
|
|
1330
|
-
function _extends$5() {
|
|
1331
|
-
_extends$5 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1332
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1333
|
-
var source = arguments[i];
|
|
1334
|
-
for (var key in source) {
|
|
1335
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1336
|
-
target[key] = source[key];
|
|
1337
|
-
}
|
|
1338
|
-
}
|
|
1339
|
-
}
|
|
1340
|
-
return target;
|
|
1341
|
-
};
|
|
1342
|
-
return _extends$5.apply(this, arguments);
|
|
1343
|
-
}
|
|
1344
|
-
var UnderlineIcon = (function (_ref) {
|
|
1345
|
-
var _ref$styles = _ref.styles,
|
|
1346
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1347
|
-
props = _objectWithoutProperties(_ref, _excluded$5);
|
|
1348
|
-
return /*#__PURE__*/React.createElement("svg", _extends$5({
|
|
1349
|
-
"aria-hidden": "true",
|
|
1350
|
-
"data-prefix": "fas",
|
|
1351
|
-
"data-icon": "underline",
|
|
1352
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-underline"] || "fa-underline") + " " + (styles["fa-w-14"] || "fa-w-14"),
|
|
1353
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1354
|
-
viewBox: "0 0 448 512"
|
|
1355
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1356
|
-
fill: "currentColor",
|
|
1357
|
-
d: "M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0016-16V16a16 16 0 00-16-16H272a16 16 0 00-16 16v32a16 16 0 0016 16h32v160a80 80 0 01-160 0V64h32a16 16 0 0016-16V16a16 16 0 00-16-16H32a16 16 0 00-16 16v32a16 16 0 0016 16zm400 384H16a16 16 0 00-16 16v32a16 16 0 0016 16h416a16 16 0 0016-16v-32a16 16 0 00-16-16z"
|
|
1358
|
-
}));
|
|
1359
|
-
});
|
|
1360
|
-
|
|
1361
|
-
var _excluded$6 = ["styles"];
|
|
1362
|
-
function _extends$6() {
|
|
1363
|
-
_extends$6 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1364
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1365
|
-
var source = arguments[i];
|
|
1366
|
-
for (var key in source) {
|
|
1367
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1368
|
-
target[key] = source[key];
|
|
1369
|
-
}
|
|
1370
|
-
}
|
|
1371
|
-
}
|
|
1372
|
-
return target;
|
|
1373
|
-
};
|
|
1374
|
-
return _extends$6.apply(this, arguments);
|
|
1375
|
-
}
|
|
1376
|
-
var ItalicIcon = (function (_ref) {
|
|
1377
|
-
var _ref$styles = _ref.styles,
|
|
1378
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1379
|
-
props = _objectWithoutProperties(_ref, _excluded$6);
|
|
1380
|
-
return /*#__PURE__*/React.createElement("svg", _extends$6({
|
|
1381
|
-
"aria-hidden": "true",
|
|
1382
|
-
"data-prefix": "fas",
|
|
1383
|
-
"data-icon": "italic",
|
|
1384
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-italic"] || "fa-italic") + " " + (styles["fa-w-10"] || "fa-w-10"),
|
|
1385
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1386
|
-
viewBox: "0 0 320 512"
|
|
1387
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1388
|
-
fill: "currentColor",
|
|
1389
|
-
d: "M320 48v32a16 16 0 01-16 16h-62.76l-80 320H208a16 16 0 0116 16v32a16 16 0 01-16 16H16a16 16 0 01-16-16v-32a16 16 0 0116-16h62.76l80-320H112a16 16 0 01-16-16V48a16 16 0 0116-16h192a16 16 0 0116 16z"
|
|
1390
|
-
}));
|
|
1391
|
-
});
|
|
1392
|
-
|
|
1393
|
-
var _excluded$7 = ["styles"];
|
|
1394
|
-
function _extends$7() {
|
|
1395
|
-
_extends$7 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1396
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1397
|
-
var source = arguments[i];
|
|
1398
|
-
for (var key in source) {
|
|
1399
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1400
|
-
target[key] = source[key];
|
|
1401
|
-
}
|
|
1402
|
-
}
|
|
1403
|
-
}
|
|
1404
|
-
return target;
|
|
1405
|
-
};
|
|
1406
|
-
return _extends$7.apply(this, arguments);
|
|
1407
|
-
}
|
|
1408
|
-
var StrikethroughIcon = (function (_ref) {
|
|
1409
|
-
var _ref$styles = _ref.styles,
|
|
1410
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1411
|
-
props = _objectWithoutProperties(_ref, _excluded$7);
|
|
1412
|
-
return /*#__PURE__*/React.createElement("svg", _extends$7({
|
|
1413
|
-
"aria-hidden": "true",
|
|
1414
|
-
"data-prefix": "fas",
|
|
1415
|
-
"data-icon": "strikethrough",
|
|
1416
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-strikethrough"] || "fa-strikethrough") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
1417
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1418
|
-
viewBox: "0 0 512 512"
|
|
1419
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1420
|
-
fill: "currentColor",
|
|
1421
|
-
d: "M496 224H293.9l-87.17-26.83A43.55 43.55 0 01219.55 112h66.79A49.89 49.89 0 01331 139.58a16 16 0 0021.46 7.15l42.94-21.47a16 16 0 007.16-21.46l-.53-1A128 128 0 00287.51 32h-68a123.68 123.68 0 00-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 00-16 16v32a16 16 0 0016 16h480a16 16 0 0016-16v-32a16 16 0 00-16-16zm-180.24 96A43 43 0 01336 356.45 43.59 43.59 0 01292.45 400h-66.79A49.89 49.89 0 01181 372.42a16 16 0 00-21.46-7.15l-42.94 21.47a16 16 0 00-7.16 21.46l.53 1A128 128 0 00224.49 480h68a123.68 123.68 0 00123-135.64 114.25 114.25 0 00-5.34-24.36z"
|
|
1422
|
-
}));
|
|
1423
|
-
});
|
|
1424
|
-
|
|
1425
|
-
var _excluded$8 = ["styles"];
|
|
1426
|
-
function _extends$8() {
|
|
1427
|
-
_extends$8 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1428
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1429
|
-
var source = arguments[i];
|
|
1430
|
-
for (var key in source) {
|
|
1431
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1432
|
-
target[key] = source[key];
|
|
1433
|
-
}
|
|
1434
|
-
}
|
|
1435
|
-
}
|
|
1436
|
-
return target;
|
|
1437
|
-
};
|
|
1438
|
-
return _extends$8.apply(this, arguments);
|
|
1439
|
-
}
|
|
1440
|
-
var SubIcon = (function (_ref) {
|
|
1441
|
-
var _ref$styles = _ref.styles,
|
|
1442
|
-
props = _objectWithoutProperties(_ref, _excluded$8);
|
|
1443
|
-
return /*#__PURE__*/React.createElement("svg", _extends$8({
|
|
1444
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1445
|
-
viewBox: "0 0 512 512"
|
|
1446
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1447
|
-
d: "M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32h15.3l89.6 128-89.6 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-15.3l-89.6-128 89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32h-32c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zm448 256c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z"
|
|
1448
|
-
}));
|
|
1449
|
-
});
|
|
1450
|
-
|
|
1451
|
-
var _excluded$9 = ["styles"];
|
|
1452
|
-
function _extends$9() {
|
|
1453
|
-
_extends$9 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1454
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1455
|
-
var source = arguments[i];
|
|
1456
|
-
for (var key in source) {
|
|
1457
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1458
|
-
target[key] = source[key];
|
|
1459
|
-
}
|
|
1460
|
-
}
|
|
1461
|
-
}
|
|
1462
|
-
return target;
|
|
1463
|
-
};
|
|
1464
|
-
return _extends$9.apply(this, arguments);
|
|
1465
|
-
}
|
|
1466
|
-
var SupIcon = (function (_ref) {
|
|
1467
|
-
var _ref$styles = _ref.styles,
|
|
1468
|
-
props = _objectWithoutProperties(_ref, _excluded$9);
|
|
1469
|
-
return /*#__PURE__*/React.createElement("svg", _extends$9({
|
|
1470
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1471
|
-
viewBox: "0 0 512 512"
|
|
1472
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1473
|
-
d: "M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32h15.3l89.6 128-89.6 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-15.3l-89.6-128 89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32h-32c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z"
|
|
1474
|
-
}));
|
|
1475
|
-
});
|
|
1476
|
-
|
|
1477
|
-
var _excluded$a = ["styles"];
|
|
1478
|
-
function _extends$a() {
|
|
1479
|
-
_extends$a = Object.assign ? Object.assign.bind() : function (target) {
|
|
1480
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1481
|
-
var source = arguments[i];
|
|
1482
|
-
for (var key in source) {
|
|
1483
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1484
|
-
target[key] = source[key];
|
|
1485
|
-
}
|
|
1486
|
-
}
|
|
1487
|
-
}
|
|
1488
|
-
return target;
|
|
1489
|
-
};
|
|
1490
|
-
return _extends$a.apply(this, arguments);
|
|
1491
|
-
}
|
|
1492
|
-
var link = (function (_ref) {
|
|
1493
|
-
var _ref$styles = _ref.styles,
|
|
1494
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1495
|
-
props = _objectWithoutProperties(_ref, _excluded$a);
|
|
1496
|
-
return /*#__PURE__*/React.createElement("svg", _extends$a({
|
|
1497
|
-
"aria-hidden": "true",
|
|
1498
|
-
"data-prefix": "fas",
|
|
1499
|
-
"data-icon": "link",
|
|
1500
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-link"] || "fa-link") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
1501
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1502
|
-
viewBox: "0 0 512 512"
|
|
1503
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1504
|
-
fill: "currentColor",
|
|
1505
|
-
d: "M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"
|
|
1506
|
-
}));
|
|
1507
|
-
});
|
|
1508
|
-
|
|
1509
|
-
function HoveringToolbar(_ref) {
|
|
1510
|
-
var children = _ref.children;
|
|
1511
|
-
var editor = useSlate();
|
|
1512
|
-
var _useI18n = useI18n({
|
|
1513
|
-
locale: 'ui'
|
|
1514
|
-
}),
|
|
1515
|
-
t = _useI18n.t;
|
|
1516
|
-
var selectLinkDestination = useSelectLinkDestination();
|
|
1517
|
-
var _useState = useState(false),
|
|
1518
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
1519
|
-
isOpen = _useState2[0],
|
|
1520
|
-
setIsOpen = _useState2[1];
|
|
1521
|
-
var _useState3 = useState(false),
|
|
1522
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
1523
|
-
isDragging = _useState4[0],
|
|
1524
|
-
setIsDragging = _useState4[1];
|
|
1525
|
-
var _useFloating = useFloating({
|
|
1526
|
-
placement: 'bottom-start',
|
|
1527
|
-
middleware: [offset(5), shift({
|
|
1528
|
-
crossAxis: true,
|
|
1529
|
-
padding: {
|
|
1530
|
-
left: 10,
|
|
1531
|
-
right: 10
|
|
1532
|
-
}
|
|
1533
|
-
})]
|
|
1534
|
-
}),
|
|
1535
|
-
refs = _useFloating.refs,
|
|
1536
|
-
floatingStyles = _useFloating.floatingStyles;
|
|
1537
|
-
useEffect(function () {
|
|
1538
|
-
var selection = editor.selection;
|
|
1539
|
-
if (isDragging || !selection || !ReactEditor.isFocused(editor) || Range.isCollapsed(selection) || Editor.string(editor, selection) === '') {
|
|
1540
|
-
setIsOpen(false);
|
|
1541
|
-
return;
|
|
1542
|
-
}
|
|
1543
|
-
var domRange = ReactEditor.toDOMRange(editor, editor.selection);
|
|
1544
|
-
refs.setPositionReference({
|
|
1545
|
-
getBoundingClientRect: function getBoundingClientRect() {
|
|
1546
|
-
return domRange.getBoundingClientRect();
|
|
1547
|
-
},
|
|
1548
|
-
getClientRects: function getClientRects() {
|
|
1549
|
-
return domRange.getClientRects();
|
|
1550
|
-
}
|
|
1551
|
-
});
|
|
1552
|
-
setIsOpen(true);
|
|
1553
|
-
}, [refs, editor, editor.selection, isDragging]);
|
|
1554
|
-
var handleMouseDown = useCallback(function () {
|
|
1555
|
-
setIsDragging(true);
|
|
1556
|
-
function handleMouseUp() {
|
|
1557
|
-
// When clicking inside a selection, the selection sometimes
|
|
1558
|
-
// only resets after mouseup has fired. Prevent toolbar from
|
|
1559
|
-
// shortly being hidden and shown again before finally being
|
|
1560
|
-
// hidden when the selection resets.
|
|
1561
|
-
setTimeout(function () {
|
|
1562
|
-
setIsDragging(false);
|
|
1563
|
-
}, 10);
|
|
1564
|
-
}
|
|
1565
|
-
document.addEventListener('mouseup', handleMouseUp);
|
|
1566
|
-
return function () {
|
|
1567
|
-
document.removeEventListener('mouseup', handleMouseUp);
|
|
1568
|
-
};
|
|
1569
|
-
}, []);
|
|
1570
|
-
var floatingPortalRoot = useFloatingPortalRoot();
|
|
1571
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
1572
|
-
onMouseDown: handleMouseDown
|
|
1573
|
-
}, isOpen && /*#__PURE__*/React.createElement(FloatingPortal, {
|
|
1574
|
-
root: floatingPortalRoot
|
|
1575
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
1576
|
-
ref: refs.setFloating,
|
|
1577
|
-
style: floatingStyles
|
|
1578
|
-
}, renderToolbar$1(editor, t, selectLinkDestination))), children);
|
|
1579
|
-
}
|
|
1580
|
-
function renderToolbar$1(editor, t, selectLinkDestination) {
|
|
1581
|
-
var buttons = [{
|
|
1582
|
-
name: 'bold',
|
|
1583
|
-
text: t('pageflow_scrolled.inline_editing.formats.bold'),
|
|
1584
|
-
icon: BoldIcon
|
|
1585
|
-
}, {
|
|
1586
|
-
name: 'italic',
|
|
1587
|
-
text: t('pageflow_scrolled.inline_editing.formats.italic'),
|
|
1588
|
-
icon: ItalicIcon
|
|
1589
|
-
}, {
|
|
1590
|
-
name: 'underline',
|
|
1591
|
-
text: t('pageflow_scrolled.inline_editing.formats.underline'),
|
|
1592
|
-
icon: UnderlineIcon
|
|
1593
|
-
}, {
|
|
1594
|
-
name: 'strikethrough',
|
|
1595
|
-
text: t('pageflow_scrolled.inline_editing.formats.strikethrough'),
|
|
1596
|
-
icon: StrikethroughIcon
|
|
1597
|
-
}, {
|
|
1598
|
-
name: 'sub',
|
|
1599
|
-
text: t('pageflow_scrolled.inline_editing.formats.sub'),
|
|
1600
|
-
icon: SubIcon
|
|
1601
|
-
}, {
|
|
1602
|
-
name: 'sup',
|
|
1603
|
-
text: t('pageflow_scrolled.inline_editing.formats.sup'),
|
|
1604
|
-
icon: SupIcon
|
|
1605
|
-
}, {
|
|
1606
|
-
name: 'link',
|
|
1607
|
-
text: isButtonActive(editor, 'link') ? t('pageflow_scrolled.inline_editing.remove_link') : t('pageflow_scrolled.inline_editing.insert_link'),
|
|
1608
|
-
icon: link
|
|
1609
|
-
}].map(function (button) {
|
|
1610
|
-
return _objectSpread2(_objectSpread2({}, button), {}, {
|
|
1611
|
-
active: isButtonActive(editor, button.name)
|
|
1612
|
-
});
|
|
1613
|
-
});
|
|
1614
|
-
return /*#__PURE__*/React.createElement(Toolbar, {
|
|
1615
|
-
buttons: buttons,
|
|
1616
|
-
onButtonClick: function onButtonClick(name) {
|
|
1617
|
-
return handleButtonClick(editor, name, selectLinkDestination);
|
|
1618
|
-
}
|
|
1619
|
-
});
|
|
1620
|
-
}
|
|
1621
|
-
function handleButtonClick(editor, format, selectLinkDestination) {
|
|
1622
|
-
if (format === 'link') {
|
|
1623
|
-
if (isLinkActive(editor)) {
|
|
1624
|
-
unwrapLink(editor);
|
|
1625
|
-
} else {
|
|
1626
|
-
selectLinkDestination().then(function (_ref2) {
|
|
1627
|
-
var href = _ref2.href,
|
|
1628
|
-
openInNewTab = _ref2.openInNewTab;
|
|
1629
|
-
wrapLink(editor, href, openInNewTab);
|
|
1630
|
-
}, function () {});
|
|
1631
|
-
}
|
|
1632
|
-
} else {
|
|
1633
|
-
toggleMark(editor, format);
|
|
1634
|
-
}
|
|
1635
|
-
}
|
|
1636
|
-
function isButtonActive(editor, format) {
|
|
1637
|
-
if (format === 'link') {
|
|
1638
|
-
return isLinkActive(editor);
|
|
1639
|
-
} else {
|
|
1640
|
-
return isMarkActive(editor, format);
|
|
1641
|
-
}
|
|
1642
|
-
}
|
|
1643
|
-
function unwrapLink(editor) {
|
|
1644
|
-
Transforms.unwrapNodes(editor, {
|
|
1645
|
-
match: function match(n) {
|
|
1646
|
-
return n.type === 'link';
|
|
1647
|
-
}
|
|
1648
|
-
});
|
|
1649
|
-
}
|
|
1650
|
-
function wrapLink(editor, href, openInNewTab) {
|
|
1651
|
-
var link = {
|
|
1652
|
-
type: 'link',
|
|
1653
|
-
href: href,
|
|
1654
|
-
openInNewTab: openInNewTab,
|
|
1655
|
-
children: []
|
|
1656
|
-
};
|
|
1657
|
-
Transforms.wrapNodes(editor, link, {
|
|
1658
|
-
split: true
|
|
1659
|
-
});
|
|
1660
|
-
Transforms.collapse(editor, {
|
|
1661
|
-
edge: 'end'
|
|
1662
|
-
});
|
|
1663
|
-
}
|
|
1664
|
-
function isLinkActive(editor) {
|
|
1665
|
-
var _Editor$nodes = Editor.nodes(editor, {
|
|
1666
|
-
match: function match(n) {
|
|
1667
|
-
return n.type === 'link';
|
|
1668
|
-
}
|
|
1669
|
-
}),
|
|
1670
|
-
_Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
|
|
1671
|
-
link = _Editor$nodes2[0];
|
|
1672
|
-
return !!link;
|
|
1673
|
-
}
|
|
1674
|
-
|
|
1675
|
-
var styles$a = {"container":"index-module_container__3dD9z","shy":"index-module_shy__KgWjc","selected":"index-module_selected__mE58y","selection":"index-module_selection__3dUiD"};
|
|
1676
|
-
|
|
1677
|
-
function getUniformSelectedNode(editor, propertyName) {
|
|
1678
|
-
var currentNodeEntries = _toConsumableArray(Editor.nodes(editor, {
|
|
1679
|
-
match: function match(n) {
|
|
1680
|
-
return !!n.type;
|
|
1681
|
-
},
|
|
1682
|
-
mode: 'highest'
|
|
1683
|
-
}));
|
|
1684
|
-
var values = _toConsumableArray(new Set(currentNodeEntries.map(function (_ref) {
|
|
1685
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
1686
|
-
node = _ref2[0],
|
|
1687
|
-
path = _ref2[1];
|
|
1688
|
-
return node[propertyName];
|
|
1689
|
-
})));
|
|
1690
|
-
return values.length === 1 ? currentNodeEntries[0][0] : null;
|
|
1691
|
-
}
|
|
1692
|
-
|
|
1693
|
-
function _createForOfIteratorHelper(o) {
|
|
1694
|
-
if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
|
|
1695
|
-
if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) {
|
|
1696
|
-
var i = 0;
|
|
1697
|
-
|
|
1698
|
-
var F = function F() {};
|
|
1699
|
-
|
|
1700
|
-
return {
|
|
1701
|
-
s: F,
|
|
1702
|
-
n: function n() {
|
|
1703
|
-
if (i >= o.length) return {
|
|
1704
|
-
done: true
|
|
1705
|
-
};
|
|
1706
|
-
return {
|
|
1707
|
-
done: false,
|
|
1708
|
-
value: o[i++]
|
|
1709
|
-
};
|
|
1710
|
-
},
|
|
1711
|
-
e: function e(_e) {
|
|
1712
|
-
throw _e;
|
|
1713
|
-
},
|
|
1714
|
-
f: F
|
|
1715
|
-
};
|
|
1716
|
-
}
|
|
1717
|
-
|
|
1718
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
1719
|
-
}
|
|
1720
|
-
|
|
1721
|
-
var it,
|
|
1722
|
-
normalCompletion = true,
|
|
1723
|
-
didErr = false,
|
|
1724
|
-
err;
|
|
1725
|
-
return {
|
|
1726
|
-
s: function s() {
|
|
1727
|
-
it = o[Symbol.iterator]();
|
|
1728
|
-
},
|
|
1729
|
-
n: function n() {
|
|
1730
|
-
var step = it.next();
|
|
1731
|
-
normalCompletion = step.done;
|
|
1732
|
-
return step;
|
|
1733
|
-
},
|
|
1734
|
-
e: function e(_e2) {
|
|
1735
|
-
didErr = true;
|
|
1736
|
-
err = _e2;
|
|
1737
|
-
},
|
|
1738
|
-
f: function f() {
|
|
1739
|
-
try {
|
|
1740
|
-
if (!normalCompletion && it["return"] != null) it["return"]();
|
|
1741
|
-
} finally {
|
|
1742
|
-
if (didErr) throw err;
|
|
1743
|
-
}
|
|
1744
|
-
}
|
|
1745
|
-
};
|
|
1746
|
-
}
|
|
1747
|
-
|
|
1748
|
-
function isBlockActive(editor, format) {
|
|
1749
|
-
var _Editor$nodes = Editor.nodes(editor, {
|
|
1750
|
-
match: function match(n) {
|
|
1751
|
-
return n.type === format;
|
|
1752
|
-
}
|
|
1753
|
-
}),
|
|
1754
|
-
_Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
|
|
1755
|
-
match = _Editor$nodes2[0];
|
|
1756
|
-
return !!match;
|
|
1757
|
-
}
|
|
1758
|
-
var listTypes = ['numbered-list', 'bulleted-list'];
|
|
1759
|
-
function toggleBlock(editor, format) {
|
|
1760
|
-
var isActive = isBlockActive(editor, format);
|
|
1761
|
-
var isList = listTypes.includes(format);
|
|
1762
|
-
Transforms.unwrapNodes(editor, {
|
|
1763
|
-
match: function match(n) {
|
|
1764
|
-
return listTypes.includes(n.type);
|
|
1765
|
-
},
|
|
1766
|
-
split: true
|
|
1767
|
-
});
|
|
1768
|
-
Transforms.setNodes(editor, {
|
|
1769
|
-
type: isActive ? 'paragraph' : isList ? 'list-item' : format
|
|
1770
|
-
});
|
|
1771
|
-
if (!isActive && isList) {
|
|
1772
|
-
var block = _objectSpread2({
|
|
1773
|
-
type: format,
|
|
1774
|
-
children: []
|
|
1775
|
-
}, preserveColorAndTypographyVariant(editor));
|
|
1776
|
-
Transforms.wrapNodes(editor, block);
|
|
1777
|
-
}
|
|
1778
|
-
}
|
|
1779
|
-
function applyTypographyVariant(editor, variant) {
|
|
1780
|
-
applyProperties(editor, {
|
|
1781
|
-
variant: variant
|
|
1782
|
-
});
|
|
1783
|
-
}
|
|
1784
|
-
function applyTypographySize(editor, size) {
|
|
1785
|
-
applyProperties(editor, {
|
|
1786
|
-
size: size
|
|
1787
|
-
});
|
|
1788
|
-
}
|
|
1789
|
-
function applyColor(editor, color) {
|
|
1790
|
-
applyProperties(editor, {
|
|
1791
|
-
color: color
|
|
1792
|
-
});
|
|
1793
|
-
}
|
|
1794
|
-
function applyTextAlign(editor, textAlign) {
|
|
1795
|
-
applyProperties(editor, {
|
|
1796
|
-
textAlign: textAlign === 'justify' ? 'justify' : undefined
|
|
1797
|
-
});
|
|
1798
|
-
}
|
|
1799
|
-
function applyProperties(editor, properties) {
|
|
1800
|
-
Transforms.setNodes(editor, properties, {
|
|
1801
|
-
mode: 'highest'
|
|
1802
|
-
});
|
|
1803
|
-
applyPropertiesToListItems(editor, properties);
|
|
1804
|
-
}
|
|
1805
|
-
function applyPropertiesToListItems(editor, properties) {
|
|
1806
|
-
var lists = Editor.nodes(editor, {
|
|
1807
|
-
match: function match(n) {
|
|
1808
|
-
return listTypes.includes(n.type);
|
|
1809
|
-
}
|
|
1810
|
-
});
|
|
1811
|
-
var _iterator = _createForOfIteratorHelper(lists),
|
|
1812
|
-
_step;
|
|
1813
|
-
try {
|
|
1814
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
1815
|
-
var _step$value = _slicedToArray(_step.value, 2),
|
|
1816
|
-
listPath = _step$value[1];
|
|
1817
|
-
var items = Editor.nodes(editor, {
|
|
1818
|
-
at: listPath,
|
|
1819
|
-
match: function match(n) {
|
|
1820
|
-
return n.type === 'list-item';
|
|
1821
|
-
}
|
|
1822
|
-
});
|
|
1823
|
-
var _iterator2 = _createForOfIteratorHelper(items),
|
|
1824
|
-
_step2;
|
|
1825
|
-
try {
|
|
1826
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
1827
|
-
var _step2$value = _slicedToArray(_step2.value, 2),
|
|
1828
|
-
itemPath = _step2$value[1];
|
|
1829
|
-
Transforms.setNodes(editor, properties, {
|
|
1830
|
-
at: itemPath
|
|
1831
|
-
});
|
|
1832
|
-
}
|
|
1833
|
-
} catch (err) {
|
|
1834
|
-
_iterator2.e(err);
|
|
1835
|
-
} finally {
|
|
1836
|
-
_iterator2.f();
|
|
1837
|
-
}
|
|
1838
|
-
}
|
|
1839
|
-
} catch (err) {
|
|
1840
|
-
_iterator.e(err);
|
|
1841
|
-
} finally {
|
|
1842
|
-
_iterator.f();
|
|
1843
|
-
}
|
|
1844
|
-
}
|
|
1845
|
-
function preserveColorAndTypographyVariant(editor) {
|
|
1846
|
-
var nodeEntry = Editor.above(editor, {
|
|
1847
|
-
at: Range.start(editor.selection),
|
|
1848
|
-
match: function match(n) {
|
|
1849
|
-
return !!n.type;
|
|
1850
|
-
}
|
|
1851
|
-
});
|
|
1852
|
-
var result = {};
|
|
1853
|
-
if (nodeEntry && nodeEntry[0].variant) {
|
|
1854
|
-
result.variant = nodeEntry[0].variant;
|
|
1855
|
-
}
|
|
1856
|
-
if (nodeEntry && nodeEntry[0].color) {
|
|
1857
|
-
result.color = nodeEntry[0].color;
|
|
1858
|
-
}
|
|
1859
|
-
return result;
|
|
1860
|
-
}
|
|
1861
|
-
function withBlockNormalization(_ref, editor) {
|
|
1862
|
-
var onlyParagraphs = _ref.onlyParagraphs;
|
|
1863
|
-
if (!onlyParagraphs) {
|
|
1864
|
-
return editor;
|
|
1865
|
-
}
|
|
1866
|
-
var normalizeNode = editor.normalizeNode;
|
|
1867
|
-
editor.normalizeNode = function (_ref2) {
|
|
1868
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
|
1869
|
-
node = _ref3[0],
|
|
1870
|
-
path = _ref3[1];
|
|
1871
|
-
if (path.length === 0) {
|
|
1872
|
-
var _iterator3 = _createForOfIteratorHelper(Node.children(editor, path)),
|
|
1873
|
-
_step3;
|
|
1874
|
-
try {
|
|
1875
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
1876
|
-
var _step3$value = _slicedToArray(_step3.value, 2),
|
|
1877
|
-
child = _step3$value[0],
|
|
1878
|
-
childPath = _step3$value[1];
|
|
1879
|
-
if (Element$1.isElement(child) && child.type !== 'paragraph') {
|
|
1880
|
-
Transforms.unwrapNodes(editor, {
|
|
1881
|
-
match: function match(n) {
|
|
1882
|
-
return listTypes.includes(n.type);
|
|
1883
|
-
},
|
|
1884
|
-
split: true,
|
|
1885
|
-
at: childPath
|
|
1886
|
-
});
|
|
1887
|
-
Transforms.setNodes(editor, {
|
|
1888
|
-
type: 'paragraph'
|
|
1889
|
-
}, {
|
|
1890
|
-
at: childPath
|
|
1891
|
-
});
|
|
1892
|
-
}
|
|
1893
|
-
}
|
|
1894
|
-
} catch (err) {
|
|
1895
|
-
_iterator3.e(err);
|
|
1896
|
-
} finally {
|
|
1897
|
-
_iterator3.f();
|
|
1898
|
-
}
|
|
1899
|
-
}
|
|
1900
|
-
return normalizeNode([node, path]);
|
|
1901
|
-
};
|
|
1902
|
-
return editor;
|
|
1903
|
-
}
|
|
1904
|
-
|
|
1905
|
-
var _excluded$b = ["styles"];
|
|
1906
|
-
function _extends$b() {
|
|
1907
|
-
_extends$b = Object.assign ? Object.assign.bind() : function (target) {
|
|
1908
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1909
|
-
var source = arguments[i];
|
|
1910
|
-
for (var key in source) {
|
|
1911
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1912
|
-
target[key] = source[key];
|
|
1913
|
-
}
|
|
1914
|
-
}
|
|
1915
|
-
}
|
|
1916
|
-
return target;
|
|
1917
|
-
};
|
|
1918
|
-
return _extends$b.apply(this, arguments);
|
|
1919
|
-
}
|
|
1920
|
-
var TextIcon = (function (_ref) {
|
|
1921
|
-
var _ref$styles = _ref.styles,
|
|
1922
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1923
|
-
props = _objectWithoutProperties(_ref, _excluded$b);
|
|
1924
|
-
return /*#__PURE__*/React.createElement("svg", _extends$b({
|
|
1925
|
-
"aria-hidden": "true",
|
|
1926
|
-
"data-prefix": "fas",
|
|
1927
|
-
"data-icon": "align-justify",
|
|
1928
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-align-justify"] || "fa-align-justify") + " " + (styles["fa-w-14"] || "fa-w-14"),
|
|
1929
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1930
|
-
viewBox: "0 0 448 512"
|
|
1931
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1932
|
-
fill: "currentColor",
|
|
1933
|
-
d: "M432 416H16a16 16 0 00-16 16v32a16 16 0 0016 16h416a16 16 0 0016-16v-32a16 16 0 00-16-16zm0-128H16a16 16 0 00-16 16v32a16 16 0 0016 16h416a16 16 0 0016-16v-32a16 16 0 00-16-16zm0-128H16a16 16 0 00-16 16v32a16 16 0 0016 16h416a16 16 0 0016-16v-32a16 16 0 00-16-16zm0-128H16A16 16 0 000 48v32a16 16 0 0016 16h416a16 16 0 0016-16V48a16 16 0 00-16-16z"
|
|
1934
|
-
}));
|
|
1935
|
-
});
|
|
1936
|
-
|
|
1937
|
-
var _excluded$c = ["styles"];
|
|
1938
|
-
function _extends$c() {
|
|
1939
|
-
_extends$c = Object.assign ? Object.assign.bind() : function (target) {
|
|
1940
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1941
|
-
var source = arguments[i];
|
|
1942
|
-
for (var key in source) {
|
|
1943
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1944
|
-
target[key] = source[key];
|
|
1945
|
-
}
|
|
1946
|
-
}
|
|
1947
|
-
}
|
|
1948
|
-
return target;
|
|
1949
|
-
};
|
|
1950
|
-
return _extends$c.apply(this, arguments);
|
|
1951
|
-
}
|
|
1952
|
-
var HeadingIcon = (function (_ref) {
|
|
1953
|
-
var _ref$styles = _ref.styles,
|
|
1954
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1955
|
-
props = _objectWithoutProperties(_ref, _excluded$c);
|
|
1956
|
-
return /*#__PURE__*/React.createElement("svg", _extends$c({
|
|
1957
|
-
"aria-hidden": "true",
|
|
1958
|
-
"data-prefix": "fas",
|
|
1959
|
-
"data-icon": "heading",
|
|
1960
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-heading"] || "fa-heading") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
1961
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1962
|
-
viewBox: "0 0 512 512"
|
|
1963
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1964
|
-
fill: "currentColor",
|
|
1965
|
-
d: "M448 96v320h32a16 16 0 0116 16v32a16 16 0 01-16 16H320a16 16 0 01-16-16v-32a16 16 0 0116-16h32V288H160v128h32a16 16 0 0116 16v32a16 16 0 01-16 16H32a16 16 0 01-16-16v-32a16 16 0 0116-16h32V96H32a16 16 0 01-16-16V48a16 16 0 0116-16h160a16 16 0 0116 16v32a16 16 0 01-16 16h-32v128h192V96h-32a16 16 0 01-16-16V48a16 16 0 0116-16h160a16 16 0 0116 16v32a16 16 0 01-16 16z"
|
|
1966
|
-
}));
|
|
1967
|
-
});
|
|
1968
|
-
|
|
1969
|
-
var _excluded$d = ["styles"];
|
|
1970
|
-
function _extends$d() {
|
|
1971
|
-
_extends$d = Object.assign ? Object.assign.bind() : function (target) {
|
|
1972
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1973
|
-
var source = arguments[i];
|
|
1974
|
-
for (var key in source) {
|
|
1975
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1976
|
-
target[key] = source[key];
|
|
1977
|
-
}
|
|
1978
|
-
}
|
|
1979
|
-
}
|
|
1980
|
-
return target;
|
|
1981
|
-
};
|
|
1982
|
-
return _extends$d.apply(this, arguments);
|
|
1983
|
-
}
|
|
1984
|
-
var OlIcon = (function (_ref) {
|
|
1985
|
-
var _ref$styles = _ref.styles,
|
|
1986
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
1987
|
-
props = _objectWithoutProperties(_ref, _excluded$d);
|
|
1988
|
-
return /*#__PURE__*/React.createElement("svg", _extends$d({
|
|
1989
|
-
"aria-hidden": "true",
|
|
1990
|
-
"data-prefix": "fas",
|
|
1991
|
-
"data-icon": "list-ol",
|
|
1992
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-list-ol"] || "fa-list-ol") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
1993
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1994
|
-
viewBox: "0 0 512 512"
|
|
1995
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
1996
|
-
fill: "currentColor",
|
|
1997
|
-
d: "M61.77 401l17.5-20.15a19.92 19.92 0 005.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 00-8 8v16a8 8 0 008 8h22.83a157.41 157.41 0 00-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 01-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 00-16 16v32a16 16 0 0016 16h320a16 16 0 0016-16v-32a16 16 0 00-16-16zm0-160H176a16 16 0 00-16 16v32a16 16 0 0016 16h320a16 16 0 0016-16V80a16 16 0 00-16-16zm0 320H176a16 16 0 00-16 16v32a16 16 0 0016 16h320a16 16 0 0016-16v-32a16 16 0 00-16-16zM16 160h64a8 8 0 008-8v-16a8 8 0 00-8-8H64V40a8 8 0 00-8-8H32a8 8 0 00-7.14 4.42l-8 16A8 8 0 0024 64h8v64H16a8 8 0 00-8 8v16a8 8 0 008 8zm-3.91 160H80a8 8 0 008-8v-16a8 8 0 00-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 019.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"
|
|
1998
|
-
}));
|
|
1999
|
-
});
|
|
2000
|
-
|
|
2001
|
-
var _excluded$e = ["styles"];
|
|
2002
|
-
function _extends$e() {
|
|
2003
|
-
_extends$e = Object.assign ? Object.assign.bind() : function (target) {
|
|
2004
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
2005
|
-
var source = arguments[i];
|
|
2006
|
-
for (var key in source) {
|
|
2007
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
2008
|
-
target[key] = source[key];
|
|
2009
|
-
}
|
|
2010
|
-
}
|
|
2011
|
-
}
|
|
2012
|
-
return target;
|
|
2013
|
-
};
|
|
2014
|
-
return _extends$e.apply(this, arguments);
|
|
2015
|
-
}
|
|
2016
|
-
var UlIcon = (function (_ref) {
|
|
2017
|
-
var _ref$styles = _ref.styles,
|
|
2018
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
2019
|
-
props = _objectWithoutProperties(_ref, _excluded$e);
|
|
2020
|
-
return /*#__PURE__*/React.createElement("svg", _extends$e({
|
|
2021
|
-
"aria-hidden": "true",
|
|
2022
|
-
"data-prefix": "fas",
|
|
2023
|
-
"data-icon": "list-ul",
|
|
2024
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-list-ul"] || "fa-list-ul") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
2025
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2026
|
-
viewBox: "0 0 512 512"
|
|
2027
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
2028
|
-
fill: "currentColor",
|
|
2029
|
-
d: "M48 48a48 48 0 1048 48 48 48 0 00-48-48zm0 160a48 48 0 1048 48 48 48 0 00-48-48zm0 160a48 48 0 1048 48 48 48 0 00-48-48zm448 16H176a16 16 0 00-16 16v32a16 16 0 0016 16h320a16 16 0 0016-16v-32a16 16 0 00-16-16zm0-320H176a16 16 0 00-16 16v32a16 16 0 0016 16h320a16 16 0 0016-16V80a16 16 0 00-16-16zm0 160H176a16 16 0 00-16 16v32a16 16 0 0016 16h320a16 16 0 0016-16v-32a16 16 0 00-16-16z"
|
|
2030
|
-
}));
|
|
2031
|
-
});
|
|
2032
|
-
|
|
2033
|
-
var _excluded$f = ["styles"];
|
|
2034
|
-
function _extends$f() {
|
|
2035
|
-
_extends$f = Object.assign ? Object.assign.bind() : function (target) {
|
|
2036
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
2037
|
-
var source = arguments[i];
|
|
2038
|
-
for (var key in source) {
|
|
2039
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
2040
|
-
target[key] = source[key];
|
|
2041
|
-
}
|
|
2042
|
-
}
|
|
2043
|
-
}
|
|
2044
|
-
return target;
|
|
2045
|
-
};
|
|
2046
|
-
return _extends$f.apply(this, arguments);
|
|
2047
|
-
}
|
|
2048
|
-
var QuoteIcon = (function (_ref) {
|
|
2049
|
-
var _ref$styles = _ref.styles,
|
|
2050
|
-
styles = _ref$styles === void 0 ? {} : _ref$styles,
|
|
2051
|
-
props = _objectWithoutProperties(_ref, _excluded$f);
|
|
2052
|
-
return /*#__PURE__*/React.createElement("svg", _extends$f({
|
|
2053
|
-
"aria-hidden": "true",
|
|
2054
|
-
"data-prefix": "fas",
|
|
2055
|
-
"data-icon": "quote-right",
|
|
2056
|
-
className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-quote-right"] || "fa-quote-right") + " " + (styles["fa-w-16"] || "fa-w-16"),
|
|
2057
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
2058
|
-
viewBox: "0 0 512 512"
|
|
2059
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
2060
|
-
fill: "currentColor",
|
|
2061
|
-
d: "M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"
|
|
2062
|
-
}));
|
|
2063
|
-
});
|
|
2064
|
-
|
|
2065
|
-
function Selection(props) {
|
|
2066
|
-
var editor = useSlate();
|
|
2067
|
-
var _useI18n = useI18n({
|
|
2068
|
-
locale: 'ui'
|
|
2069
|
-
}),
|
|
2070
|
-
t = _useI18n.t;
|
|
2071
|
-
var ref = useRef();
|
|
2072
|
-
var outerRef = useRef();
|
|
2073
|
-
var innerRef = useRef();
|
|
2074
|
-
var boundsRef = useRef();
|
|
2075
|
-
var lastRangeRef = useRef();
|
|
2076
|
-
var _useContentElementEdi = useContentElementEditorState(),
|
|
2077
|
-
setTransientState = _useContentElementEdi.setTransientState,
|
|
2078
|
-
select = _useContentElementEdi.select,
|
|
2079
|
-
isContentElementSelected = _useContentElementEdi.isSelected,
|
|
2080
|
-
range = _useContentElementEdi.range;
|
|
2081
|
-
useEffect(function () {
|
|
2082
|
-
var _getUniformSelectedNo, _getUniformSelectedNo2, _getUniformSelectedNo3, _getUniformSelectedNo4;
|
|
2083
|
-
var selection = editor.selection;
|
|
2084
|
-
if (!ref.current) {
|
|
2085
|
-
return;
|
|
2086
|
-
}
|
|
2087
|
-
if (isContentElementSelected && range && lastRangeRef.current !== range) {
|
|
2088
|
-
lastRangeRef.current = range;
|
|
2089
|
-
if (range[1] === range[0] + 1) {
|
|
2090
|
-
Transforms.select(editor, Editor.point(editor, [range[0]], {
|
|
2091
|
-
edge: 'start'
|
|
2092
|
-
}));
|
|
2093
|
-
} else {
|
|
2094
|
-
Transforms.select(editor, {
|
|
2095
|
-
anchor: Editor.point(editor, [range[0]], {
|
|
2096
|
-
edge: 'start'
|
|
2097
|
-
}),
|
|
2098
|
-
focus: Editor.point(editor, [range[1] - 1], {
|
|
2099
|
-
edge: 'end'
|
|
2100
|
-
})
|
|
2101
|
-
});
|
|
2102
|
-
}
|
|
2103
|
-
ReactEditor.focus(editor);
|
|
2104
|
-
}
|
|
2105
|
-
if (!selection) {
|
|
2106
|
-
if (boundsRef.current) {
|
|
2107
|
-
hideRect(ref.current);
|
|
2108
|
-
boundsRef.current = null;
|
|
2109
|
-
}
|
|
2110
|
-
return;
|
|
2111
|
-
}
|
|
2112
|
-
if (!isContentElementSelected && boundsRef.current) {
|
|
2113
|
-
hideRect(ref.current);
|
|
2114
|
-
boundsRef.current = null;
|
|
2115
|
-
window.getSelection().removeAllRanges();
|
|
2116
|
-
return;
|
|
2117
|
-
}
|
|
2118
|
-
if (!isContentElementSelected && !boundsRef.current) {
|
|
2119
|
-
select();
|
|
2120
|
-
}
|
|
2121
|
-
var _computeBounds = computeBounds(editor),
|
|
2122
|
-
_computeBounds2 = _slicedToArray(_computeBounds, 2),
|
|
2123
|
-
start = _computeBounds2[0],
|
|
2124
|
-
end = _computeBounds2[1];
|
|
2125
|
-
setTransientState({
|
|
2126
|
-
editableTextIsSingleBlock: editor.children.length <= 1,
|
|
2127
|
-
exampleNode: getUniformSelectedNode(editor, 'type'),
|
|
2128
|
-
typographyVariant: (_getUniformSelectedNo = getUniformSelectedNode(editor, 'variant')) === null || _getUniformSelectedNo === void 0 ? void 0 : _getUniformSelectedNo.variant,
|
|
2129
|
-
typographySize: (_getUniformSelectedNo2 = getUniformSelectedNode(editor, 'size')) === null || _getUniformSelectedNo2 === void 0 ? void 0 : _getUniformSelectedNo2.size,
|
|
2130
|
-
color: (_getUniformSelectedNo3 = getUniformSelectedNode(editor, 'color')) === null || _getUniformSelectedNo3 === void 0 ? void 0 : _getUniformSelectedNo3.color,
|
|
2131
|
-
textAlign: (_getUniformSelectedNo4 = getUniformSelectedNode(editor, 'textAlign')) === null || _getUniformSelectedNo4 === void 0 ? void 0 : _getUniformSelectedNo4.textAlign
|
|
2132
|
-
});
|
|
2133
|
-
boundsRef.current = {
|
|
2134
|
-
start: start,
|
|
2135
|
-
end: end
|
|
2136
|
-
};
|
|
2137
|
-
updateRect(editor, start, end, outerRef.current, ref.current, innerRef.current);
|
|
2138
|
-
});
|
|
2139
|
-
var _useDrag = useDrag({
|
|
2140
|
-
item: {
|
|
2141
|
-
type: 'contentElement',
|
|
2142
|
-
id: props.contentElementId
|
|
2143
|
-
},
|
|
2144
|
-
begin: function begin() {
|
|
2145
|
-
return {
|
|
2146
|
-
type: 'contentElement',
|
|
2147
|
-
id: props.contentElementId,
|
|
2148
|
-
range: [boundsRef.current.start, boundsRef.current.end + 1]
|
|
2149
|
-
};
|
|
2150
|
-
}
|
|
2151
|
-
}),
|
|
2152
|
-
_useDrag2 = _slicedToArray(_useDrag, 2),
|
|
2153
|
-
drag = _useDrag2[1];
|
|
2154
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
2155
|
-
ref: outerRef
|
|
2156
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
2157
|
-
ref: ref,
|
|
2158
|
-
className: styles$a.selection
|
|
2159
|
-
}, /*#__PURE__*/React.createElement(SelectionRect, {
|
|
2160
|
-
selected: true,
|
|
2161
|
-
drag: drag,
|
|
2162
|
-
scrollPoint: isContentElementSelected,
|
|
2163
|
-
insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
|
|
2164
|
-
onInsertButtonClick: function onInsertButtonClick(at) {
|
|
2165
|
-
if (at === 'before' && boundsRef.current.start === 0 || at === 'after' && !Node.has(editor, [boundsRef.current.end + 1])) {
|
|
2166
|
-
postInsertContentElementMessage({
|
|
2167
|
-
id: props.contentElementId,
|
|
2168
|
-
at: at
|
|
2169
|
-
});
|
|
2170
|
-
} else {
|
|
2171
|
-
postInsertContentElementMessage({
|
|
2172
|
-
id: props.contentElementId,
|
|
2173
|
-
at: 'split',
|
|
2174
|
-
splitPoint: at === 'before' ? boundsRef.current.start : boundsRef.current.end + 1
|
|
2175
|
-
});
|
|
2176
|
-
}
|
|
2177
|
-
},
|
|
2178
|
-
toolbarButtons: toolbarButtons(t).map(function (button) {
|
|
2179
|
-
return _objectSpread2(_objectSpread2({}, button), {}, {
|
|
2180
|
-
active: isBlockActive(editor, button.name)
|
|
2181
|
-
});
|
|
2182
|
-
}),
|
|
2183
|
-
onToolbarButtonClick: function onToolbarButtonClick(name) {
|
|
2184
|
-
return toggleBlock(editor, name);
|
|
2185
|
-
}
|
|
2186
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
2187
|
-
ref: innerRef
|
|
2188
|
-
}))));
|
|
2189
|
-
}
|
|
2190
|
-
function computeBounds(editor) {
|
|
2191
|
-
var startPoint = Range.start(editor.selection);
|
|
2192
|
-
var endPoint = Range.end(editor.selection);
|
|
2193
|
-
var startPath = startPoint.path.slice(0, 1);
|
|
2194
|
-
var endPath = endPoint.path.slice(0, 1);
|
|
2195
|
-
if (!Path.equals(startPath, endPath) && endPoint.offset === 0) {
|
|
2196
|
-
endPath = Path.previous(endPath);
|
|
2197
|
-
}
|
|
2198
|
-
return [startPath[0], endPath[0]];
|
|
2199
|
-
}
|
|
2200
|
-
function hideRect(el) {
|
|
2201
|
-
el.removeAttribute('style');
|
|
2202
|
-
}
|
|
2203
|
-
function updateRect(editor, startIndex, endIndex, outer, el, inner) {
|
|
2204
|
-
var _getDOMNodes = getDOMNodes(editor, startIndex, endIndex),
|
|
2205
|
-
_getDOMNodes2 = _slicedToArray(_getDOMNodes, 2),
|
|
2206
|
-
startDOMNode = _getDOMNodes2[0],
|
|
2207
|
-
endDOMNode = _getDOMNodes2[1];
|
|
2208
|
-
if (startDOMNode && endDOMNode) {
|
|
2209
|
-
var startRect = startDOMNode.getBoundingClientRect();
|
|
2210
|
-
var endRect = endDOMNode.getBoundingClientRect();
|
|
2211
|
-
var outerRect = outer.getBoundingClientRect();
|
|
2212
|
-
el.style.display = 'block';
|
|
2213
|
-
el.style.top = "".concat(startRect.top - outerRect.top, "px");
|
|
2214
|
-
inner.style.height = "".concat(endRect.bottom - startRect.top, "px");
|
|
2215
|
-
}
|
|
2216
|
-
}
|
|
2217
|
-
function getDOMNodes(editor, startIndex, endIndex) {
|
|
2218
|
-
var startNode = Node.get(editor, [startIndex]);
|
|
2219
|
-
var endNode = Node.get(editor, [endIndex]);
|
|
2220
|
-
try {
|
|
2221
|
-
var startDOMNode = ReactEditor.toDOMNode(editor, startNode);
|
|
2222
|
-
var endDOMNode = ReactEditor.toDOMNode(editor, endNode);
|
|
2223
|
-
return [startDOMNode, endDOMNode];
|
|
2224
|
-
} catch (e) {
|
|
2225
|
-
return [];
|
|
2226
|
-
}
|
|
2227
|
-
}
|
|
2228
|
-
function toolbarButtons(t) {
|
|
2229
|
-
return [{
|
|
2230
|
-
name: 'paragraph',
|
|
2231
|
-
text: t('pageflow_scrolled.inline_editing.formats.paragraph'),
|
|
2232
|
-
icon: TextIcon
|
|
2233
|
-
}, {
|
|
2234
|
-
name: 'heading',
|
|
2235
|
-
text: t('pageflow_scrolled.inline_editing.formats.heading'),
|
|
2236
|
-
icon: HeadingIcon
|
|
2237
|
-
}, {
|
|
2238
|
-
name: 'numbered-list',
|
|
2239
|
-
text: t('pageflow_scrolled.inline_editing.formats.ordered_list'),
|
|
2240
|
-
icon: OlIcon
|
|
2241
|
-
}, {
|
|
2242
|
-
name: 'bulleted-list',
|
|
2243
|
-
text: t('pageflow_scrolled.inline_editing.formats.bulleted_list'),
|
|
2244
|
-
icon: UlIcon
|
|
2245
|
-
}, {
|
|
2246
|
-
name: 'block-quote',
|
|
2247
|
-
text: t('pageflow_scrolled.inline_editing.formats.block_quote'),
|
|
2248
|
-
icon: QuoteIcon
|
|
2249
|
-
}];
|
|
2250
|
-
}
|
|
2251
|
-
|
|
2252
|
-
var styles$b = {"container":"DropTargets-module_container__3vudG","dropTarget":"DropTargets-module_dropTarget__3mmox","dropIndicator":"DropTargets-module_dropIndicator__2zu4d","isOver":"DropTargets-module_isOver__2usWn"};
|
|
2253
|
-
|
|
2254
|
-
function DropTargets$1(_ref) {
|
|
2255
|
-
var contentElementId = _ref.contentElementId;
|
|
2256
|
-
var editor = useSlate();
|
|
2257
|
-
var _useState = useState(),
|
|
2258
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
2259
|
-
targets = _useState2[0],
|
|
2260
|
-
setTargets = _useState2[1];
|
|
2261
|
-
var containerRef = useRef();
|
|
2262
|
-
useEffect(function () {
|
|
2263
|
-
if (!targets) {
|
|
2264
|
-
setTargets(measureHeights(editor, containerRef.current));
|
|
2265
|
-
}
|
|
2266
|
-
}, [targets, editor]);
|
|
2267
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
2268
|
-
ref: containerRef,
|
|
2269
|
-
className: styles$b.container
|
|
2270
|
-
}, renderDropTargets(targets || [], contentElementId));
|
|
2271
|
-
}
|
|
2272
|
-
function renderDropTargets(targets, contentElementId) {
|
|
2273
|
-
function handleDrop(item, index) {
|
|
2274
|
-
if (index === 0) {
|
|
2275
|
-
postMoveContentElementMessage({
|
|
2276
|
-
id: item.id,
|
|
2277
|
-
range: item.range,
|
|
2278
|
-
to: {
|
|
2279
|
-
at: 'before',
|
|
2280
|
-
id: contentElementId
|
|
2281
|
-
}
|
|
2282
|
-
});
|
|
2283
|
-
} else if (index === targets.length - 1) {
|
|
2284
|
-
postMoveContentElementMessage({
|
|
2285
|
-
id: item.id,
|
|
2286
|
-
range: item.range,
|
|
2287
|
-
to: {
|
|
2288
|
-
at: 'after',
|
|
2289
|
-
id: contentElementId
|
|
2290
|
-
}
|
|
2291
|
-
});
|
|
2292
|
-
} else {
|
|
2293
|
-
postMoveContentElementMessage({
|
|
2294
|
-
id: item.id,
|
|
2295
|
-
range: item.range,
|
|
2296
|
-
to: {
|
|
2297
|
-
at: 'split',
|
|
2298
|
-
id: contentElementId,
|
|
2299
|
-
splitPoint: index
|
|
2300
|
-
}
|
|
2301
|
-
});
|
|
2302
|
-
}
|
|
2303
|
-
}
|
|
2304
|
-
return targets.map(function (target, index) {
|
|
2305
|
-
return /*#__PURE__*/React.createElement(DropTarget, Object.assign({}, target, {
|
|
2306
|
-
key: index,
|
|
2307
|
-
onDrop: function onDrop(item) {
|
|
2308
|
-
return handleDrop(item, index);
|
|
2309
|
-
}
|
|
2310
|
-
}));
|
|
2311
|
-
});
|
|
2312
|
-
}
|
|
2313
|
-
function DropTarget(_ref2) {
|
|
2314
|
-
var display = _ref2.display,
|
|
2315
|
-
top = _ref2.top,
|
|
2316
|
-
height = _ref2.height,
|
|
2317
|
-
indicatorTop = _ref2.indicatorTop,
|
|
2318
|
-
onDrop = _ref2.onDrop;
|
|
2319
|
-
var _useDrop = useDrop({
|
|
2320
|
-
accept: 'contentElement',
|
|
2321
|
-
collect: function collect(monitor) {
|
|
2322
|
-
return {
|
|
2323
|
-
isOver: monitor.isOver()
|
|
2324
|
-
};
|
|
2325
|
-
},
|
|
2326
|
-
drop: function drop(item) {
|
|
2327
|
-
return onDrop(item);
|
|
2328
|
-
}
|
|
2329
|
-
}),
|
|
2330
|
-
_useDrop2 = _slicedToArray(_useDrop, 2),
|
|
2331
|
-
isOver = _useDrop2[0].isOver,
|
|
2332
|
-
drop = _useDrop2[1];
|
|
2333
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
2334
|
-
ref: drop,
|
|
2335
|
-
className: classNames(styles$b.dropTarget, _defineProperty({}, styles$b.isOver, isOver)),
|
|
2336
|
-
style: {
|
|
2337
|
-
display: display,
|
|
2338
|
-
top: top,
|
|
2339
|
-
height: height
|
|
2340
|
-
}
|
|
2341
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
2342
|
-
className: styles$b.dropIndicator,
|
|
2343
|
-
style: {
|
|
2344
|
-
top: indicatorTop
|
|
2345
|
-
}
|
|
2346
|
-
}));
|
|
2347
|
-
}
|
|
2348
|
-
function measureHeights(editor, container) {
|
|
2349
|
-
var containerRect = container.getBoundingClientRect();
|
|
2350
|
-
var lastTargetDimensions = {
|
|
2351
|
-
top: 0,
|
|
2352
|
-
height: 0
|
|
2353
|
-
};
|
|
2354
|
-
var lastRectBottom = 0;
|
|
2355
|
-
var targetDimensions = editor.children.map(function (child, index) {
|
|
2356
|
-
var node = Node.get(editor, [index]);
|
|
2357
|
-
var domNode = ReactEditor.toDOMNode(editor, node);
|
|
2358
|
-
var rect = domNode.getBoundingClientRect();
|
|
2359
|
-
var top = lastTargetDimensions.top + lastTargetDimensions.height;
|
|
2360
|
-
var bottom = rect.top + rect.height / 2 - containerRect.top;
|
|
2361
|
-
var targetDimensions = {
|
|
2362
|
-
top: top,
|
|
2363
|
-
height: bottom - top,
|
|
2364
|
-
display: editor.selection && Range.includes(editor.selection, [index]) ? 'none' : undefined,
|
|
2365
|
-
indicatorTop: index > 0 ? lastRectBottom + (rect.top - lastRectBottom) / 2 - containerRect.top - top : 0
|
|
2366
|
-
};
|
|
2367
|
-
lastRectBottom = rect.bottom;
|
|
2368
|
-
lastTargetDimensions = targetDimensions;
|
|
2369
|
-
return targetDimensions;
|
|
2370
|
-
});
|
|
2371
|
-
return [].concat(_toConsumableArray(targetDimensions), [{
|
|
2372
|
-
top: lastTargetDimensions.top + lastTargetDimensions.height,
|
|
2373
|
-
height: containerRect.height - (lastTargetDimensions.top + lastTargetDimensions.height),
|
|
2374
|
-
indicatorTop: containerRect.height - (lastTargetDimensions.top + lastTargetDimensions.height)
|
|
2375
|
-
}]);
|
|
2376
|
-
}
|
|
2377
|
-
|
|
2378
|
-
var shy = "\xAD";
|
|
2379
|
-
function decorateCharacter(_ref, character, attributes, _ref2) {
|
|
2380
|
-
var _ref3 = _slicedToArray(_ref, 2),
|
|
2381
|
-
node = _ref3[0],
|
|
2382
|
-
path = _ref3[1];
|
|
2383
|
-
var length = _ref2.length;
|
|
2384
|
-
if (Text.isText(node)) {
|
|
2385
|
-
var parts = node.text.split(character);
|
|
2386
|
-
parts.pop();
|
|
2387
|
-
var i = 0;
|
|
2388
|
-
return parts.map(function (part) {
|
|
2389
|
-
i += part.length + 1;
|
|
2390
|
-
return _objectSpread2({
|
|
2391
|
-
anchor: {
|
|
2392
|
-
path: path,
|
|
2393
|
-
offset: i - 1
|
|
2394
|
-
},
|
|
2395
|
-
focus: {
|
|
2396
|
-
path: path,
|
|
2397
|
-
offset: i - 1 + length
|
|
2398
|
-
}
|
|
2399
|
-
}, attributes);
|
|
2400
|
-
});
|
|
2401
|
-
}
|
|
2402
|
-
return [];
|
|
2403
|
-
}
|
|
2404
|
-
function deleteCharacter(editor, node, path, regExp) {
|
|
2405
|
-
var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
|
|
2406
|
-
var match = regExp.exec(node.text);
|
|
2407
|
-
if (match) {
|
|
2408
|
-
Transforms["delete"](editor, {
|
|
2409
|
-
at: {
|
|
2410
|
-
path: path,
|
|
2411
|
-
offset: match.index + offset
|
|
2412
|
-
},
|
|
2413
|
-
distance: 1,
|
|
2414
|
-
unit: 'character'
|
|
2415
|
-
});
|
|
2416
|
-
return true;
|
|
2417
|
-
}
|
|
2418
|
-
return false;
|
|
2419
|
-
}
|
|
2420
|
-
|
|
2421
|
-
function useLineBreakHandler(editor) {
|
|
2422
|
-
return useCallback(function (event) {
|
|
2423
|
-
if (event.key !== 'Enter') {
|
|
2424
|
-
return;
|
|
2425
|
-
}
|
|
2426
|
-
if (event.altKey === true) {
|
|
2427
|
-
editor.insertText(shy);
|
|
2428
|
-
event.preventDefault();
|
|
2429
|
-
} else if (event.shiftKey === true) {
|
|
2430
|
-
editor.insertText('\n');
|
|
2431
|
-
event.preventDefault();
|
|
2432
|
-
}
|
|
2433
|
-
}, [editor]);
|
|
2434
|
-
}
|
|
2435
|
-
function decorateLineBreaks(nodeEntry) {
|
|
2436
|
-
return decorateCharacter(nodeEntry, shy, {
|
|
2437
|
-
shy: true
|
|
2438
|
-
}, {
|
|
2439
|
-
length: 1
|
|
2440
|
-
});
|
|
2441
|
-
}
|
|
2442
|
-
function renderLeafWithLineBreakDecoration(_ref) {
|
|
2443
|
-
var leaf = _ref.leaf,
|
|
2444
|
-
children = _ref.children,
|
|
2445
|
-
attributes = _ref.attributes;
|
|
2446
|
-
if (leaf.shy) {
|
|
2447
|
-
children = /*#__PURE__*/React.createElement("span", {
|
|
2448
|
-
className: styles$a.shy
|
|
2449
|
-
}, children);
|
|
2450
|
-
}
|
|
2451
|
-
return renderLeaf$1({
|
|
2452
|
-
leaf: leaf,
|
|
2453
|
-
children: children,
|
|
2454
|
-
attributes: attributes
|
|
2455
|
-
});
|
|
2456
|
-
}
|
|
2457
|
-
function withLineBreakNormalization(editor) {
|
|
2458
|
-
var normalizeNode = editor.normalizeNode;
|
|
2459
|
-
editor.normalizeNode = function (_ref2) {
|
|
2460
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
|
2461
|
-
node = _ref3[0],
|
|
2462
|
-
path = _ref3[1];
|
|
2463
|
-
if (node.text) {
|
|
2464
|
-
if (deleteCharacter(editor, node, path, new RegExp("".concat(shy, "\\s"))) || deleteCharacter(editor, node, path, new RegExp("^".concat(shy))) || deleteCharacter(editor, node, path, new RegExp("\\s".concat(shy)), 1) || deleteCharacter(editor, node, path, new RegExp("".concat(shy).concat(shy)))) {
|
|
2465
|
-
return;
|
|
2466
|
-
}
|
|
2467
|
-
}
|
|
2468
|
-
return normalizeNode([node, path]);
|
|
2469
|
-
};
|
|
2470
|
-
return editor;
|
|
2471
|
-
}
|
|
2472
|
-
|
|
2473
|
-
function useShortcutHandler(editor) {
|
|
2474
|
-
return useCallback(function (event) {
|
|
2475
|
-
if (!event.ctrlKey) {
|
|
2476
|
-
return;
|
|
2477
|
-
}
|
|
2478
|
-
if (event.key === 'z') {
|
|
2479
|
-
event.preventDefault();
|
|
2480
|
-
editor.undo();
|
|
2481
|
-
} else if (event.key === 'y') {
|
|
2482
|
-
event.preventDefault();
|
|
2483
|
-
editor.redo();
|
|
2484
|
-
} else if (event.key === 'b') {
|
|
2485
|
-
event.preventDefault();
|
|
2486
|
-
toggleMark(editor, 'bold');
|
|
2487
|
-
} else if (event.key === 'i') {
|
|
2488
|
-
event.preventDefault();
|
|
2489
|
-
toggleMark(editor, 'italic');
|
|
2490
|
-
} else if (event.key === 'u') {
|
|
2491
|
-
event.preventDefault();
|
|
2492
|
-
toggleMark(editor, 'underline');
|
|
2493
|
-
} else if (event.key === 'S') {
|
|
2494
|
-
event.preventDefault();
|
|
2495
|
-
toggleMark(editor, 'strikethrough');
|
|
2496
|
-
} else if (event.key === ',') {
|
|
2497
|
-
event.preventDefault();
|
|
2498
|
-
toggleMark(editor, 'sup');
|
|
2499
|
-
} else if (event.key === ';') {
|
|
2500
|
-
event.preventDefault();
|
|
2501
|
-
toggleMark(editor, 'sub');
|
|
2502
|
-
}
|
|
2503
|
-
}, [editor]);
|
|
2504
|
-
}
|
|
2505
|
-
|
|
2506
|
-
var selectedClassName = styles$a.selected;
|
|
2507
|
-
var EditableText = React.memo(function EditableText(_ref) {
|
|
2508
|
-
var value = _ref.value,
|
|
2509
|
-
contentElementId = _ref.contentElementId,
|
|
2510
|
-
placeholder = _ref.placeholder,
|
|
2511
|
-
onChange = _ref.onChange,
|
|
2512
|
-
selectionRect = _ref.selectionRect,
|
|
2513
|
-
className = _ref.className,
|
|
2514
|
-
placeholderClassName = _ref.placeholderClassName,
|
|
2515
|
-
_ref$scaleCategory = _ref.scaleCategory,
|
|
2516
|
-
scaleCategory = _ref$scaleCategory === void 0 ? 'body' : _ref$scaleCategory,
|
|
2517
|
-
typographyVariant = _ref.typographyVariant,
|
|
2518
|
-
typographySize = _ref.typographySize,
|
|
2519
|
-
autoFocus = _ref.autoFocus,
|
|
2520
|
-
_ref$floatingControls = _ref.floatingControlsPosition,
|
|
2521
|
-
floatingControlsPosition = _ref$floatingControls === void 0 ? 'above' : _ref$floatingControls;
|
|
2522
|
-
var editor = useMemo(function () {
|
|
2523
|
-
return withLinks(withCustomInsertBreak(withBlockNormalization({
|
|
2524
|
-
onlyParagraphs: !selectionRect
|
|
2525
|
-
}, withLineBreakNormalization(withReact(withHistory(createEditor()))))));
|
|
2526
|
-
}, [selectionRect]);
|
|
2527
|
-
var handleLineBreaks = useLineBreakHandler(editor);
|
|
2528
|
-
var handleShortcuts = useShortcutHandler(editor);
|
|
2529
|
-
var handleKeyDown = useCallback(function (event) {
|
|
2530
|
-
handleLineBreaks(event);
|
|
2531
|
-
handleShortcuts(event);
|
|
2532
|
-
}, [handleLineBreaks, handleShortcuts]);
|
|
2533
|
-
useEffect(function () {
|
|
2534
|
-
if (autoFocus) {
|
|
2535
|
-
ReactEditor.focus(editor);
|
|
2536
|
-
}
|
|
2537
|
-
}, [autoFocus, editor]);
|
|
2538
|
-
var _useCachedValue = useCachedValue(value, {
|
|
2539
|
-
defaultValue: [{
|
|
2540
|
-
type: 'paragraph',
|
|
2541
|
-
children: [{
|
|
2542
|
-
text: ''
|
|
2543
|
-
}]
|
|
2544
|
-
}],
|
|
2545
|
-
onDebouncedChange: onChange,
|
|
2546
|
-
onReset: function onReset(nextValue) {
|
|
2547
|
-
resetSelectionIfOutsideNextValue(editor, nextValue);
|
|
2548
|
-
resetHistory(editor);
|
|
2549
|
-
}
|
|
2550
|
-
}),
|
|
2551
|
-
_useCachedValue2 = _slicedToArray(_useCachedValue, 2),
|
|
2552
|
-
cachedValue = _useCachedValue2[0],
|
|
2553
|
-
setCachedValue = _useCachedValue2[1];
|
|
2554
|
-
var _useContentElementEdi = useContentElementEditorState(),
|
|
2555
|
-
isSelected = _useContentElementEdi.isSelected;
|
|
2556
|
-
useContentElementEditorCommandSubscription(function (command) {
|
|
2557
|
-
if (command.type === 'REMOVE') {
|
|
2558
|
-
Transforms.removeNodes(editor, {
|
|
2559
|
-
mode: 'highest'
|
|
2560
|
-
});
|
|
2561
|
-
} else if (command.type === 'TRANSIENT_STATE_UPDATE') {
|
|
2562
|
-
if ('typographyVariant' in command.payload) {
|
|
2563
|
-
applyTypographyVariant(editor, command.payload.typographyVariant);
|
|
2564
|
-
}
|
|
2565
|
-
if ('typographySize' in command.payload) {
|
|
2566
|
-
applyTypographySize(editor, command.payload.typographySize);
|
|
2567
|
-
}
|
|
2568
|
-
if ('color' in command.payload) {
|
|
2569
|
-
applyColor(editor, command.payload.color);
|
|
2570
|
-
}
|
|
2571
|
-
if ('textAlign' in command.payload) {
|
|
2572
|
-
applyTextAlign(editor, command.payload.textAlign);
|
|
2573
|
-
}
|
|
2574
|
-
}
|
|
2575
|
-
});
|
|
2576
|
-
var _useDropTargetsActive = useDropTargetsActive(),
|
|
2577
|
-
_useDropTargetsActive2 = _slicedToArray(_useDropTargetsActive, 2),
|
|
2578
|
-
dropTargetsActive = _useDropTargetsActive2[0],
|
|
2579
|
-
ref = _useDropTargetsActive2[1];
|
|
2580
|
-
return /*#__PURE__*/React.createElement(Text$1, {
|
|
2581
|
-
scaleCategory: scaleCategory,
|
|
2582
|
-
typographyVariant: typographyVariant,
|
|
2583
|
-
typographySize: typographySize
|
|
2584
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
2585
|
-
className: classNames(styles$a.container, _defineProperty({}, styles$a.selected, isSelected)),
|
|
2586
|
-
ref: ref
|
|
2587
|
-
}, /*#__PURE__*/React.createElement(Slate, {
|
|
2588
|
-
editor: editor,
|
|
2589
|
-
value: cachedValue,
|
|
2590
|
-
onChange: setCachedValue
|
|
2591
|
-
}, /*#__PURE__*/React.createElement(LinkTooltipProvider, {
|
|
2592
|
-
disabled: editor.selection && !Range.isCollapsed(editor.selection),
|
|
2593
|
-
position: floatingControlsPosition
|
|
2594
|
-
}, selectionRect && /*#__PURE__*/React.createElement(Selection, {
|
|
2595
|
-
contentElementId: contentElementId
|
|
2596
|
-
}), dropTargetsActive && /*#__PURE__*/React.createElement(DropTargets$1, {
|
|
2597
|
-
contentElementId: contentElementId
|
|
2598
|
-
}), /*#__PURE__*/React.createElement(HoveringToolbar, null, /*#__PURE__*/React.createElement(Editable, {
|
|
2599
|
-
className: className,
|
|
2600
|
-
decorate: decorateLineBreaks,
|
|
2601
|
-
onKeyDown: handleKeyDown,
|
|
2602
|
-
renderElement: renderElementWithLinkPreview,
|
|
2603
|
-
renderLeaf: renderLeafWithLineBreakDecoration
|
|
2604
|
-
})))), /*#__PURE__*/React.createElement(TextPlaceholder, {
|
|
2605
|
-
text: placeholder,
|
|
2606
|
-
className: placeholderClassName,
|
|
2607
|
-
visible: isBlank(cachedValue)
|
|
2608
|
-
})));
|
|
2609
|
-
});
|
|
2610
|
-
function isBlank(value) {
|
|
2611
|
-
var _value$, _value$2, _value$2$children$;
|
|
2612
|
-
return value.length <= 1 && ((_value$ = value[0]) === null || _value$ === void 0 ? void 0 : _value$.children.length) <= 1 && value[0].type === 'paragraph' && !((_value$2 = value[0]) === null || _value$2 === void 0 ? void 0 : (_value$2$children$ = _value$2.children[0]) === null || _value$2$children$ === void 0 ? void 0 : _value$2$children$.text);
|
|
2613
|
-
}
|
|
2614
|
-
function resetSelectionIfOutsideNextValue(editor, nextValue) {
|
|
2615
|
-
var nextEditor = {
|
|
2616
|
-
children: nextValue
|
|
2617
|
-
};
|
|
2618
|
-
if (editor.selection && (!hasTextAtPoint(nextEditor, editor.selection.anchor) || !hasTextAtPoint(nextEditor, editor.selection.focus))) {
|
|
2619
|
-
Transforms.deselect(editor);
|
|
2620
|
-
}
|
|
2621
|
-
}
|
|
2622
|
-
function hasTextAtPoint(editor, point) {
|
|
2623
|
-
if (!Node.has(editor, point.path)) {
|
|
2624
|
-
return false;
|
|
2625
|
-
}
|
|
2626
|
-
var node = Node.get(editor, point.path);
|
|
2627
|
-
return Text.isText(node) && point.offset <= node.text.length;
|
|
2628
|
-
}
|
|
2629
|
-
function resetHistory(editor) {
|
|
2630
|
-
editor.history.undos = [];
|
|
2631
|
-
editor.history.redos = [];
|
|
2632
|
-
}
|
|
2633
|
-
|
|
2634
|
-
function useLineBreakHandler$1(editor) {
|
|
2635
|
-
return useCallback(function (event) {
|
|
2636
|
-
if (event.key !== 'Enter') {
|
|
2637
|
-
return true;
|
|
2638
|
-
}
|
|
2639
|
-
|
|
2640
|
-
// Soft hyphens used to be inserted with Shift + Enter.
|
|
2641
|
-
// Since Shift + Enter is now used for soft breaks in text blocks,
|
|
2642
|
-
// we switched to Alt + Enter. Since all line breaks in
|
|
2643
|
-
// EdtiableInlineText are soft, we also keep the old short cut
|
|
2644
|
-
if (event.shiftKey === true || event.altKey === true) {
|
|
2645
|
-
editor.insertText(shy);
|
|
2646
|
-
} else {
|
|
2647
|
-
editor.insertText('\n');
|
|
2648
|
-
}
|
|
2649
|
-
return false;
|
|
2650
|
-
}, [editor]);
|
|
2651
|
-
}
|
|
2652
|
-
function decorateLineBreaks$1(nodeEntry) {
|
|
2653
|
-
return [].concat(_toConsumableArray(decorateCharacter(nodeEntry, shy, {
|
|
2654
|
-
shy: true
|
|
2655
|
-
}, {
|
|
2656
|
-
length: 1
|
|
2657
|
-
})), _toConsumableArray(decorateCharacter(nodeEntry, "\n", {
|
|
2658
|
-
newLine: true
|
|
2659
|
-
}, {
|
|
2660
|
-
length: 0
|
|
2661
|
-
})));
|
|
2662
|
-
}
|
|
2663
|
-
function withLineBreakNormalization$1(editor) {
|
|
2664
|
-
var normalizeNode = editor.normalizeNode;
|
|
2665
|
-
editor.normalizeNode = function (_ref) {
|
|
2666
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
2667
|
-
node = _ref2[0],
|
|
2668
|
-
path = _ref2[1];
|
|
2669
|
-
if (path.length === 0 && editor.children.length > 1) {
|
|
2670
|
-
Transforms.mergeNodes(editor);
|
|
2671
|
-
return;
|
|
2672
|
-
} else if (node.text) {
|
|
2673
|
-
if (deleteCharacter(editor, node, path, /\n\n/) || deleteCharacter(editor, node, path, new RegExp("^\n")) || deleteCharacter(editor, node, path, new RegExp("".concat(shy, "\\s"))) || deleteCharacter(editor, node, path, new RegExp("^".concat(shy))) || deleteCharacter(editor, node, path, new RegExp("\\s".concat(shy)), 1) || deleteCharacter(editor, node, path, new RegExp("".concat(shy).concat(shy)))) {
|
|
2674
|
-
return;
|
|
2675
|
-
}
|
|
2676
|
-
}
|
|
2677
|
-
return normalizeNode([node, path]);
|
|
2678
|
-
};
|
|
2679
|
-
return editor;
|
|
2680
|
-
}
|
|
2681
|
-
|
|
2682
|
-
function useShortcutHandler$1(editor) {
|
|
2683
|
-
return useCallback(function (event) {
|
|
2684
|
-
if (!event.ctrlKey) {
|
|
2685
|
-
return;
|
|
2686
|
-
}
|
|
2687
|
-
if (event.key === 'z') {
|
|
2688
|
-
event.preventDefault();
|
|
2689
|
-
editor.undo();
|
|
2690
|
-
} else if (event.key === 'y') {
|
|
2691
|
-
event.preventDefault();
|
|
2692
|
-
editor.redo();
|
|
2693
|
-
}
|
|
2694
|
-
}, [editor]);
|
|
2695
|
-
}
|
|
2696
|
-
|
|
2697
|
-
var styles$c = {"shy":"index-module_shy__1E2-J","newLine":"index-module_newLine__1QnIs","selected":"index-module_selected__1U9ro","manualHyphens":"index-module_manualHyphens__16b2t"};
|
|
2698
|
-
|
|
2699
|
-
var EditableInlineText = memo(function EditableInlineText(_ref) {
|
|
2700
|
-
var _cachedValue$, _cachedValue$$childre;
|
|
2701
|
-
var value = _ref.value,
|
|
2702
|
-
_ref$defaultValue = _ref.defaultValue,
|
|
2703
|
-
defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue,
|
|
2704
|
-
hyphens = _ref.hyphens,
|
|
2705
|
-
placeholder = _ref.placeholder,
|
|
2706
|
-
onChange = _ref.onChange;
|
|
2707
|
-
var editor = useMemo(function () {
|
|
2708
|
-
return withLineBreakNormalization$1(withReact(withHistory(createEditor())));
|
|
2709
|
-
}, []);
|
|
2710
|
-
var handleLineBreaks = useLineBreakHandler$1(editor);
|
|
2711
|
-
var handleShortcuts = useShortcutHandler$1(editor);
|
|
2712
|
-
var handleKeyDown = useCallback(function (event) {
|
|
2713
|
-
handleLineBreaks(event);
|
|
2714
|
-
handleShortcuts(event);
|
|
2715
|
-
}, [handleLineBreaks, handleShortcuts]);
|
|
2716
|
-
var _useCachedValue = useCachedValue(value, {
|
|
2717
|
-
defaultValue: [{
|
|
2718
|
-
type: 'heading',
|
|
2719
|
-
children: [{
|
|
2720
|
-
text: defaultValue
|
|
2721
|
-
}]
|
|
2722
|
-
}],
|
|
2723
|
-
onDebouncedChange: onChange
|
|
2724
|
-
}),
|
|
2725
|
-
_useCachedValue2 = _slicedToArray(_useCachedValue, 2),
|
|
2726
|
-
cachedValue = _useCachedValue2[0],
|
|
2727
|
-
setCachedValue = _useCachedValue2[1];
|
|
2728
|
-
var _useContentElementEdi = useContentElementEditorState(),
|
|
2729
|
-
isSelected = _useContentElementEdi.isSelected;
|
|
2730
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
2731
|
-
className: classNames(frontendStyles.root, frontendStyles["hyphens-".concat(hyphens)], _defineProperty({}, styles$c.manualHyphens, hyphens === 'manual'), _defineProperty({}, styles$c.selected, isSelected)),
|
|
2732
|
-
spellCheck: "false"
|
|
2733
|
-
}, /*#__PURE__*/React.createElement(Slate, {
|
|
2734
|
-
editor: editor,
|
|
2735
|
-
value: cachedValue,
|
|
2736
|
-
onChange: setCachedValue
|
|
2737
|
-
}, /*#__PURE__*/React.createElement(Editable, {
|
|
2738
|
-
decorate: decorateLineBreaks$1,
|
|
2739
|
-
onKeyDown: handleKeyDown,
|
|
2740
|
-
renderElement: function renderElement(props) {
|
|
2741
|
-
return /*#__PURE__*/React.createElement(Element, props);
|
|
2742
|
-
},
|
|
2743
|
-
renderLeaf: renderLeaf
|
|
2744
|
-
})), /*#__PURE__*/React.createElement(TextPlaceholder, {
|
|
2745
|
-
text: placeholder,
|
|
2746
|
-
visible: !((_cachedValue$ = cachedValue[0]) === null || _cachedValue$ === void 0 ? void 0 : (_cachedValue$$childre = _cachedValue$.children[0]) === null || _cachedValue$$childre === void 0 ? void 0 : _cachedValue$$childre.text)
|
|
2747
|
-
}));
|
|
2748
|
-
});
|
|
2749
|
-
function Element(_ref2) {
|
|
2750
|
-
var attributes = _ref2.attributes,
|
|
2751
|
-
children = _ref2.children,
|
|
2752
|
-
element = _ref2.element;
|
|
2753
|
-
return /*#__PURE__*/React.createElement("div", Object.assign({}, attributes, {
|
|
2754
|
-
style: {
|
|
2755
|
-
position: 'relative'
|
|
2756
|
-
}
|
|
2757
|
-
}), /*#__PURE__*/React.createElement("span", {
|
|
2758
|
-
className: frontendStyles.textEffects
|
|
2759
|
-
}, children));
|
|
2760
|
-
}
|
|
2761
|
-
function renderLeaf(_ref3) {
|
|
2762
|
-
var attributes = _ref3.attributes,
|
|
2763
|
-
children = _ref3.children,
|
|
2764
|
-
leaf = _ref3.leaf;
|
|
2765
|
-
if (leaf.shy) {
|
|
2766
|
-
children = /*#__PURE__*/React.createElement("span", {
|
|
2767
|
-
className: styles$c.shy
|
|
2768
|
-
}, children);
|
|
2769
|
-
}
|
|
2770
|
-
if (leaf.newLine) {
|
|
2771
|
-
children = /*#__PURE__*/React.createElement("span", {
|
|
2772
|
-
className: styles$c.newLine
|
|
2773
|
-
}, children);
|
|
2774
|
-
}
|
|
2775
|
-
return /*#__PURE__*/React.createElement("span", attributes, children);
|
|
2776
|
-
}
|
|
2777
|
-
|
|
2778
|
-
var Row = {
|
|
2779
|
-
match: function match(editor) {
|
|
2780
|
-
var _Editor$nodes = Editor.nodes(editor, {
|
|
2781
|
-
match: function match(n) {
|
|
2782
|
-
return n.type === 'row';
|
|
2783
|
-
}
|
|
2784
|
-
}),
|
|
2785
|
-
_Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
|
|
2786
|
-
rowMatch = _Editor$nodes2[0];
|
|
2787
|
-
return rowMatch;
|
|
2788
|
-
}
|
|
2789
|
-
};
|
|
2790
|
-
var Cell = {
|
|
2791
|
-
splitChildren: function splitChildren(editor, _ref) {
|
|
2792
|
-
var cellNode = _ref.cellNode,
|
|
2793
|
-
point = _ref.point;
|
|
2794
|
-
var _Editor$leaf = Editor.leaf(editor, point.path),
|
|
2795
|
-
_Editor$leaf2 = _slicedToArray(_Editor$leaf, 2),
|
|
2796
|
-
leafNode = _Editor$leaf2[0],
|
|
2797
|
-
leafPath = _Editor$leaf2[1];
|
|
2798
|
-
var cursorOffset = point.offset;
|
|
2799
|
-
var text = leafNode.text || '';
|
|
2800
|
-
var beforeText = text.slice(0, cursorOffset);
|
|
2801
|
-
var afterText = text.slice(cursorOffset);
|
|
2802
|
-
var splitIndex = leafPath[leafPath.length - 1];
|
|
2803
|
-
var beforeNodes = [];
|
|
2804
|
-
var afterNodes = [];
|
|
2805
|
-
cellNode.children.forEach(function (node, index) {
|
|
2806
|
-
if (index < splitIndex) {
|
|
2807
|
-
beforeNodes.push(node);
|
|
2808
|
-
} else if (index === splitIndex) {
|
|
2809
|
-
if (beforeText) {
|
|
2810
|
-
beforeNodes.push(_objectSpread2(_objectSpread2({}, node), {}, {
|
|
2811
|
-
text: beforeText
|
|
2812
|
-
}));
|
|
2813
|
-
}
|
|
2814
|
-
if (afterText) {
|
|
2815
|
-
afterNodes.push(_objectSpread2(_objectSpread2({}, node), {}, {
|
|
2816
|
-
text: afterText
|
|
2817
|
-
}));
|
|
2818
|
-
}
|
|
2819
|
-
} else {
|
|
2820
|
-
afterNodes.push(node);
|
|
2821
|
-
}
|
|
2822
|
-
});
|
|
2823
|
-
return [beforeNodes, afterNodes];
|
|
2824
|
-
},
|
|
2825
|
-
match: function match(editor) {
|
|
2826
|
-
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
2827
|
-
at = _ref2.at;
|
|
2828
|
-
var _Editor$nodes3 = Editor.nodes(editor, {
|
|
2829
|
-
match: function match(n) {
|
|
2830
|
-
return n.type === 'label' || n.type === 'value';
|
|
2831
|
-
},
|
|
2832
|
-
at: at
|
|
2833
|
-
}),
|
|
2834
|
-
_Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1),
|
|
2835
|
-
cellMatch = _Editor$nodes4[0];
|
|
2836
|
-
return cellMatch;
|
|
2837
|
-
},
|
|
2838
|
-
inFirstLine: function inFirstLine(editor, point) {
|
|
2839
|
-
var _Editor$node = Editor.node(editor, point.path),
|
|
2840
|
-
_Editor$node2 = _slicedToArray(_Editor$node, 1),
|
|
2841
|
-
node = _Editor$node2[0];
|
|
2842
|
-
var text = Node.string(node);
|
|
2843
|
-
var firstLineBreak = text.indexOf('\n');
|
|
2844
|
-
return firstLineBreak === -1 || point.offset <= firstLineBreak;
|
|
2845
|
-
},
|
|
2846
|
-
inLastLine: function inLastLine(editor, point) {
|
|
2847
|
-
var _Editor$node3 = Editor.node(editor, point.path),
|
|
2848
|
-
_Editor$node4 = _slicedToArray(_Editor$node3, 1),
|
|
2849
|
-
node = _Editor$node4[0];
|
|
2850
|
-
var text = Node.string(node);
|
|
2851
|
-
var lastLineBreak = text.lastIndexOf('\n');
|
|
2852
|
-
return lastLineBreak === -1 || point.offset > lastLineBreak;
|
|
2853
|
-
},
|
|
2854
|
-
getPointAtStartOfLastLine: function getPointAtStartOfLastLine(editor, cellPath) {
|
|
2855
|
-
var _Editor$node5 = Editor.node(editor, cellPath),
|
|
2856
|
-
_Editor$node6 = _slicedToArray(_Editor$node5, 1),
|
|
2857
|
-
node = _Editor$node6[0];
|
|
2858
|
-
var text = Node.string(node);
|
|
2859
|
-
var lastLineBreak = text.lastIndexOf('\n');
|
|
2860
|
-
var offset = lastLineBreak === -1 ? 0 : lastLineBreak + 1;
|
|
2861
|
-
return {
|
|
2862
|
-
path: cellPath,
|
|
2863
|
-
offset: offset
|
|
2864
|
-
};
|
|
2865
|
-
}
|
|
2866
|
-
};
|
|
2867
|
-
var CellPath = {
|
|
2868
|
-
columnIndex: function columnIndex(path) {
|
|
2869
|
-
return path[path.length - 1];
|
|
2870
|
-
},
|
|
2871
|
-
rowIndex: function rowIndex(path) {
|
|
2872
|
-
return path[path.length - 2];
|
|
2873
|
-
}
|
|
2874
|
-
};
|
|
2875
|
-
|
|
2876
|
-
var CellTransforms = {
|
|
2877
|
-
replaceContent: function replaceContent(editor, nodes, _ref) {
|
|
2878
|
-
var cellPath = _ref.cellPath;
|
|
2879
|
-
Transforms.insertText(editor, '', {
|
|
2880
|
-
at: cellPath
|
|
2881
|
-
});
|
|
2882
|
-
if (nodes.length > 0) {
|
|
2883
|
-
Transforms.insertNodes(editor, nodes, {
|
|
2884
|
-
at: [].concat(_toConsumableArray(cellPath), [0])
|
|
2885
|
-
});
|
|
2886
|
-
}
|
|
2887
|
-
},
|
|
2888
|
-
deleteContentUntil: function deleteContentUntil(editor, _ref2) {
|
|
2889
|
-
var cellPath = _ref2.cellPath,
|
|
2890
|
-
point = _ref2.point;
|
|
2891
|
-
if (!Editor.isStart(editor, point, cellPath)) {
|
|
2892
|
-
Transforms["delete"](editor, {
|
|
2893
|
-
at: {
|
|
2894
|
-
anchor: Editor.start(editor, cellPath),
|
|
2895
|
-
focus: point
|
|
2896
|
-
}
|
|
2897
|
-
});
|
|
2898
|
-
}
|
|
2899
|
-
},
|
|
2900
|
-
deleteContentFrom: function deleteContentFrom(editor, _ref3) {
|
|
2901
|
-
var cellPath = _ref3.cellPath,
|
|
2902
|
-
point = _ref3.point;
|
|
2903
|
-
if (!Editor.isEnd(editor, point, cellPath)) {
|
|
2904
|
-
Transforms["delete"](editor, {
|
|
2905
|
-
at: {
|
|
2906
|
-
anchor: point,
|
|
2907
|
-
focus: Editor.end(editor, cellPath)
|
|
2908
|
-
}
|
|
2909
|
-
});
|
|
2910
|
-
}
|
|
2911
|
-
}
|
|
2912
|
-
};
|
|
2913
|
-
|
|
2914
|
-
var TableTransforms = {
|
|
2915
|
-
deleteRange: function deleteRange(editor, _ref) {
|
|
2916
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
2917
|
-
startPoint = _ref2[0],
|
|
2918
|
-
endPoint = _ref2[1];
|
|
2919
|
-
var startCellMatch = Cell.match(editor, {
|
|
2920
|
-
at: startPoint.path
|
|
2921
|
-
});
|
|
2922
|
-
var endCellMatch = Cell.match(editor, {
|
|
2923
|
-
at: endPoint.path
|
|
2924
|
-
});
|
|
2925
|
-
if (startCellMatch && endCellMatch) {
|
|
2926
|
-
var _startCellMatch = _slicedToArray(startCellMatch, 2),
|
|
2927
|
-
startCellNode = _startCellMatch[0],
|
|
2928
|
-
startCellPath = _startCellMatch[1];
|
|
2929
|
-
var _endCellMatch = _slicedToArray(endCellMatch, 2),
|
|
2930
|
-
endCellNode = _endCellMatch[0],
|
|
2931
|
-
endCellPath = _endCellMatch[1];
|
|
2932
|
-
if (!Path.equals(startCellPath, endCellPath)) {
|
|
2933
|
-
var rewrittenCellPath = getRewrittenCellPath(editor, startCellPath, endCellPath);
|
|
2934
|
-
var rows = Array.from(Editor.nodes(editor, {
|
|
2935
|
-
match: function match(n) {
|
|
2936
|
-
return n.type === 'row';
|
|
2937
|
-
},
|
|
2938
|
-
at: {
|
|
2939
|
-
anchor: startPoint,
|
|
2940
|
-
focus: endPoint
|
|
2941
|
-
}
|
|
2942
|
-
}));
|
|
2943
|
-
CellTransforms.deleteContentFrom(editor, {
|
|
2944
|
-
cellPath: startCellPath,
|
|
2945
|
-
point: startPoint
|
|
2946
|
-
});
|
|
2947
|
-
if (rewrittenCellPath) {
|
|
2948
|
-
var _beforeNodes;
|
|
2949
|
-
var beforeNodes = CellPath.columnIndex(startCellPath) === CellPath.columnIndex(endCellPath) ? Cell.splitChildren(editor, {
|
|
2950
|
-
cellNode: startCellNode,
|
|
2951
|
-
point: startPoint
|
|
2952
|
-
})[0] : [];
|
|
2953
|
-
var _Cell$splitChildren = Cell.splitChildren(editor, {
|
|
2954
|
-
cellNode: endCellNode,
|
|
2955
|
-
point: endPoint
|
|
2956
|
-
}),
|
|
2957
|
-
_Cell$splitChildren2 = _slicedToArray(_Cell$splitChildren, 2),
|
|
2958
|
-
afterNodes = _Cell$splitChildren2[1];
|
|
2959
|
-
CellTransforms.replaceContent(editor, beforeNodes.concat(afterNodes), {
|
|
2960
|
-
cellPath: rewrittenCellPath
|
|
2961
|
-
});
|
|
2962
|
-
Transforms.select(editor, {
|
|
2963
|
-
path: [].concat(_toConsumableArray(rewrittenCellPath), [beforeNodes.length ? beforeNodes.length - 1 : 0]),
|
|
2964
|
-
offset: ((_beforeNodes = beforeNodes[beforeNodes.length - 1]) === null || _beforeNodes === void 0 ? void 0 : _beforeNodes.text.length) || 0
|
|
2965
|
-
});
|
|
2966
|
-
rows.reverse().forEach(function (_ref3) {
|
|
2967
|
-
var _ref4 = _slicedToArray(_ref3, 2),
|
|
2968
|
-
_ = _ref4[0],
|
|
2969
|
-
rowPath = _ref4[1];
|
|
2970
|
-
if (rowPath[rowPath.length - 1] !== CellPath.rowIndex(rewrittenCellPath)) {
|
|
2971
|
-
Transforms.removeNodes(editor, {
|
|
2972
|
-
at: rowPath
|
|
2973
|
-
});
|
|
2974
|
-
}
|
|
2975
|
-
});
|
|
2976
|
-
} else {
|
|
2977
|
-
CellTransforms.deleteContentUntil(editor, {
|
|
2978
|
-
cellPath: endCellPath,
|
|
2979
|
-
point: endPoint
|
|
2980
|
-
});
|
|
2981
|
-
rows.slice(1, -1).reverse().forEach(function (_ref5) {
|
|
2982
|
-
var _ref6 = _slicedToArray(_ref5, 2),
|
|
2983
|
-
_ = _ref6[0],
|
|
2984
|
-
rowPath = _ref6[1];
|
|
2985
|
-
Transforms.removeNodes(editor, {
|
|
2986
|
-
at: rowPath
|
|
2987
|
-
});
|
|
2988
|
-
});
|
|
2989
|
-
Transforms.select(editor, startPoint);
|
|
2990
|
-
}
|
|
2991
|
-
return;
|
|
2992
|
-
}
|
|
2993
|
-
}
|
|
2994
|
-
}
|
|
2995
|
-
};
|
|
2996
|
-
function getRewrittenCellPath(editor, startCellPath, endCellPath) {
|
|
2997
|
-
if (CellPath.columnIndex(startCellPath) < CellPath.columnIndex(endCellPath)) {
|
|
2998
|
-
var _Editor$next = Editor.next(editor, {
|
|
2999
|
-
at: startCellPath
|
|
3000
|
-
}),
|
|
3001
|
-
_Editor$next2 = _slicedToArray(_Editor$next, 2),
|
|
3002
|
-
rewrittenCellPath = _Editor$next2[1];
|
|
3003
|
-
return rewrittenCellPath;
|
|
3004
|
-
} else if (CellPath.columnIndex(startCellPath) > CellPath.columnIndex(endCellPath)) {
|
|
3005
|
-
return null;
|
|
3006
|
-
} else if (CellPath.columnIndex(startCellPath) === 0) {
|
|
3007
|
-
return endCellPath;
|
|
3008
|
-
} else {
|
|
3009
|
-
return startCellPath;
|
|
3010
|
-
}
|
|
3011
|
-
}
|
|
3012
|
-
|
|
3013
|
-
function withFixedColumns(editor) {
|
|
3014
|
-
var deleteBackward = editor.deleteBackward,
|
|
3015
|
-
deleteForward = editor.deleteForward,
|
|
3016
|
-
deleteFragment = editor.deleteFragment;
|
|
3017
|
-
editor.insertBreak = function () {
|
|
3018
|
-
var cellMatch = Cell.match(editor);
|
|
3019
|
-
if (!cellMatch) {
|
|
3020
|
-
return;
|
|
3021
|
-
}
|
|
3022
|
-
var _cellMatch = _slicedToArray(cellMatch, 2),
|
|
3023
|
-
cellNode = _cellMatch[0],
|
|
3024
|
-
cellPath = _cellMatch[1];
|
|
3025
|
-
var rowPath = Path.parent(cellPath);
|
|
3026
|
-
var columnIndex = CellPath.columnIndex(cellPath);
|
|
3027
|
-
var newRowPath = Path.next(rowPath);
|
|
3028
|
-
var _Cell$splitChildren = Cell.splitChildren(editor, {
|
|
3029
|
-
cellNode: cellNode,
|
|
3030
|
-
point: editor.selection.anchor
|
|
3031
|
-
}),
|
|
3032
|
-
_Cell$splitChildren2 = _slicedToArray(_Cell$splitChildren, 2),
|
|
3033
|
-
beforeNodes = _Cell$splitChildren2[0],
|
|
3034
|
-
afterNodes = _Cell$splitChildren2[1];
|
|
3035
|
-
if (columnIndex === 0) {
|
|
3036
|
-
CellTransforms.replaceContent(editor, afterNodes, {
|
|
3037
|
-
cellPath: cellPath
|
|
3038
|
-
});
|
|
3039
|
-
var newRow = {
|
|
3040
|
-
type: 'row',
|
|
3041
|
-
children: [{
|
|
3042
|
-
type: 'label',
|
|
3043
|
-
children: beforeNodes
|
|
3044
|
-
}, {
|
|
3045
|
-
type: 'value',
|
|
3046
|
-
children: [{
|
|
3047
|
-
text: ''
|
|
3048
|
-
}]
|
|
3049
|
-
}]
|
|
3050
|
-
};
|
|
3051
|
-
Transforms.insertNodes(editor, newRow, {
|
|
3052
|
-
at: rowPath
|
|
3053
|
-
});
|
|
3054
|
-
} else {
|
|
3055
|
-
CellTransforms.replaceContent(editor, beforeNodes, {
|
|
3056
|
-
cellPath: cellPath
|
|
3057
|
-
});
|
|
3058
|
-
var _newRow = {
|
|
3059
|
-
type: 'row',
|
|
3060
|
-
children: [{
|
|
3061
|
-
type: 'label',
|
|
3062
|
-
children: [{
|
|
3063
|
-
text: ''
|
|
3064
|
-
}]
|
|
3065
|
-
}, {
|
|
3066
|
-
type: 'value',
|
|
3067
|
-
children: afterNodes
|
|
3068
|
-
}]
|
|
3069
|
-
};
|
|
3070
|
-
Transforms.insertNodes(editor, _newRow, {
|
|
3071
|
-
at: newRowPath
|
|
3072
|
-
});
|
|
3073
|
-
}
|
|
3074
|
-
Transforms.select(editor, {
|
|
3075
|
-
path: [].concat(_toConsumableArray(newRowPath), [afterNodes.length ? columnIndex : 0, 0]),
|
|
3076
|
-
offset: 0
|
|
3077
|
-
});
|
|
3078
|
-
};
|
|
3079
|
-
editor.deleteBackward = function () {
|
|
3080
|
-
if (!editor.selection || !Range.isCollapsed(editor.selection)) {
|
|
3081
|
-
return;
|
|
3082
|
-
}
|
|
3083
|
-
var cellMatch = Cell.match(editor);
|
|
3084
|
-
if (!cellMatch) {
|
|
3085
|
-
return;
|
|
3086
|
-
}
|
|
3087
|
-
var _cellMatch2 = _slicedToArray(cellMatch, 2),
|
|
3088
|
-
cellPath = _cellMatch2[1];
|
|
3089
|
-
if (!Editor.isStart(editor, editor.selection.anchor, cellPath)) {
|
|
3090
|
-
deleteBackward.apply(this, arguments);
|
|
3091
|
-
return;
|
|
3092
|
-
}
|
|
3093
|
-
var _Editor$parent = Editor.parent(editor, cellPath),
|
|
3094
|
-
_Editor$parent2 = _slicedToArray(_Editor$parent, 2),
|
|
3095
|
-
row = _Editor$parent2[0],
|
|
3096
|
-
rowPath = _Editor$parent2[1];
|
|
3097
|
-
var previousRowMatch = Editor.previous(editor, {
|
|
3098
|
-
at: rowPath
|
|
3099
|
-
});
|
|
3100
|
-
if (CellPath.columnIndex(cellPath) === 0) {
|
|
3101
|
-
if (previousRowMatch) {
|
|
3102
|
-
var _previousRowMatch = _slicedToArray(previousRowMatch, 2),
|
|
3103
|
-
previousRow = _previousRowMatch[0],
|
|
3104
|
-
previousRowPath = _previousRowMatch[1];
|
|
3105
|
-
if (Node.string(previousRow) === '') {
|
|
3106
|
-
Transforms["delete"](editor, {
|
|
3107
|
-
at: previousRowPath
|
|
3108
|
-
});
|
|
3109
|
-
} else if (Node.string(row) === '') {
|
|
3110
|
-
Transforms["delete"](editor, {
|
|
3111
|
-
at: rowPath
|
|
3112
|
-
});
|
|
3113
|
-
} else if (Node.string(Node.child(previousRow, 1)) === '') {
|
|
3114
|
-
TableTransforms.deleteRange(editor, [Editor.end(editor, [].concat(_toConsumableArray(previousRowPath), [0])), editor.selection.anchor]);
|
|
3115
|
-
} else {
|
|
3116
|
-
Transforms.select(editor, Editor.end(editor, previousRowPath));
|
|
3117
|
-
}
|
|
3118
|
-
}
|
|
3119
|
-
} else {
|
|
3120
|
-
if (previousRowMatch) {
|
|
3121
|
-
var _previousRowMatch2 = _slicedToArray(previousRowMatch, 2),
|
|
3122
|
-
_previousRowPath = _previousRowMatch2[1];
|
|
3123
|
-
if (Node.string(Node.child(row, 0)) === '') {
|
|
3124
|
-
TableTransforms.deleteRange(editor, [Editor.end(editor, _previousRowPath), editor.selection.anchor]);
|
|
3125
|
-
return;
|
|
3126
|
-
}
|
|
3127
|
-
}
|
|
3128
|
-
Transforms.select(editor, Editor.end(editor, Path.previous(cellPath)));
|
|
3129
|
-
}
|
|
3130
|
-
};
|
|
3131
|
-
editor.deleteForward = function () {
|
|
3132
|
-
if (!editor.selection || !Range.isCollapsed(editor.selection)) {
|
|
3133
|
-
return;
|
|
3134
|
-
}
|
|
3135
|
-
var cellMatch = Cell.match(editor);
|
|
3136
|
-
if (!cellMatch) {
|
|
3137
|
-
return;
|
|
3138
|
-
}
|
|
3139
|
-
var _cellMatch3 = _slicedToArray(cellMatch, 2),
|
|
3140
|
-
cellPath = _cellMatch3[1];
|
|
3141
|
-
if (!Editor.isEnd(editor, editor.selection.anchor, cellPath)) {
|
|
3142
|
-
deleteForward();
|
|
3143
|
-
return;
|
|
3144
|
-
}
|
|
3145
|
-
var columnIndex = cellPath[cellPath.length - 1];
|
|
3146
|
-
var _Editor$parent3 = Editor.parent(editor, cellPath),
|
|
3147
|
-
_Editor$parent4 = _slicedToArray(_Editor$parent3, 2),
|
|
3148
|
-
row = _Editor$parent4[0],
|
|
3149
|
-
rowPath = _Editor$parent4[1];
|
|
3150
|
-
var nextRowMatch = Editor.next(editor, {
|
|
3151
|
-
at: rowPath
|
|
3152
|
-
});
|
|
3153
|
-
if (columnIndex === 0) {
|
|
3154
|
-
if (Node.string(row) === '') {
|
|
3155
|
-
var previousRowMatch = Editor.previous(editor, {
|
|
3156
|
-
at: rowPath
|
|
3157
|
-
});
|
|
3158
|
-
if (previousRowMatch || nextRowMatch) {
|
|
3159
|
-
Transforms["delete"](editor, {
|
|
3160
|
-
at: rowPath
|
|
3161
|
-
});
|
|
3162
|
-
if (Node.has(editor, rowPath)) {
|
|
3163
|
-
Transforms.select(editor, Editor.start(editor, rowPath));
|
|
3164
|
-
} else {
|
|
3165
|
-
var _previousRowMatch3 = _slicedToArray(previousRowMatch, 2),
|
|
3166
|
-
previousRowPath = _previousRowMatch3[1];
|
|
3167
|
-
Transforms.select(editor, Editor.start(editor, previousRowPath));
|
|
3168
|
-
}
|
|
3169
|
-
}
|
|
3170
|
-
} else {
|
|
3171
|
-
if (nextRowMatch) {
|
|
3172
|
-
var _nextRowMatch = _slicedToArray(nextRowMatch, 2),
|
|
3173
|
-
nextRowPath = _nextRowMatch[1];
|
|
3174
|
-
if (Node.string(Node.child(row, 1)) === '') {
|
|
3175
|
-
TableTransforms.deleteRange(editor, [editor.selection.anchor, Editor.start(editor, nextRowPath)]);
|
|
3176
|
-
return;
|
|
3177
|
-
}
|
|
3178
|
-
}
|
|
3179
|
-
Transforms.select(editor, Editor.start(editor, Path.next(cellPath)));
|
|
3180
|
-
}
|
|
3181
|
-
} else {
|
|
3182
|
-
if (nextRowMatch) {
|
|
3183
|
-
var _nextRowMatch2 = _slicedToArray(nextRowMatch, 2),
|
|
3184
|
-
nextRow = _nextRowMatch2[0],
|
|
3185
|
-
_nextRowPath = _nextRowMatch2[1];
|
|
3186
|
-
if (Node.string(nextRow) === '') {
|
|
3187
|
-
Transforms["delete"](editor, {
|
|
3188
|
-
at: _nextRowPath
|
|
3189
|
-
});
|
|
3190
|
-
} else if (Node.string(Node.child(nextRow, 0)) === '') {
|
|
3191
|
-
TableTransforms.deleteRange(editor, [editor.selection.anchor, Editor.start(editor, [].concat(_toConsumableArray(_nextRowPath), [1]))]);
|
|
3192
|
-
} else {
|
|
3193
|
-
Transforms.select(editor, Editor.start(editor, _nextRowPath));
|
|
3194
|
-
}
|
|
3195
|
-
}
|
|
3196
|
-
}
|
|
3197
|
-
};
|
|
3198
|
-
editor.deleteFragment = function () {
|
|
3199
|
-
if (editor.selection && Range.isExpanded(editor.selection)) {
|
|
3200
|
-
if (TableTransforms.deleteRange(editor, Range.edges(editor.selection))) {
|
|
3201
|
-
return;
|
|
3202
|
-
}
|
|
3203
|
-
}
|
|
3204
|
-
deleteFragment();
|
|
3205
|
-
};
|
|
3206
|
-
editor.insertData = function (data) {
|
|
3207
|
-
var fragment = data.getData('application/x-slate-fragment');
|
|
3208
|
-
if (fragment) {
|
|
3209
|
-
var decoded = decodeURIComponent(window.atob(fragment));
|
|
3210
|
-
var parsed = JSON.parse(decoded);
|
|
3211
|
-
if (parsed.every(function (element) {
|
|
3212
|
-
return element['type'] === 'row';
|
|
3213
|
-
})) {
|
|
3214
|
-
editor.insertFragment(parsed);
|
|
3215
|
-
return;
|
|
3216
|
-
}
|
|
3217
|
-
}
|
|
3218
|
-
var text = data.getData('text/plain');
|
|
3219
|
-
if (text) {
|
|
3220
|
-
editor.insertText(text);
|
|
3221
|
-
}
|
|
3222
|
-
};
|
|
3223
|
-
editor.insertFragment = function (fragment) {
|
|
3224
|
-
if (fragment.length === 1 && fragment[0].children.length === 1) {
|
|
3225
|
-
Transforms.insertFragment(editor, fragment[0].children[0].children);
|
|
3226
|
-
} else {
|
|
3227
|
-
var rowMatch = Row.match(editor);
|
|
3228
|
-
if (rowMatch) {
|
|
3229
|
-
ensureLabelAndValueCells(fragment);
|
|
3230
|
-
var _rowMatch = _slicedToArray(rowMatch, 2),
|
|
3231
|
-
rowPath = _rowMatch[1];
|
|
3232
|
-
var nextRowPath = Path.next(rowPath);
|
|
3233
|
-
var pathRef = Editor.pathRef(editor, nextRowPath);
|
|
3234
|
-
Transforms.insertNodes(editor, fragment, {
|
|
3235
|
-
at: nextRowPath
|
|
3236
|
-
});
|
|
3237
|
-
Transforms.select(editor, Editor.end(editor, Path.previous(pathRef.unref())));
|
|
3238
|
-
}
|
|
3239
|
-
}
|
|
3240
|
-
function ensureLabelAndValueCells(fragment) {
|
|
3241
|
-
if (fragment[0].children.length === 1) {
|
|
3242
|
-
fragment[0].children.unshift({
|
|
3243
|
-
type: 'label',
|
|
3244
|
-
children: [{
|
|
3245
|
-
text: ''
|
|
3246
|
-
}]
|
|
3247
|
-
});
|
|
3248
|
-
}
|
|
3249
|
-
if (fragment[fragment.length - 1].children.length === 1) {
|
|
3250
|
-
fragment[fragment.length - 1].children.push({
|
|
3251
|
-
type: 'value',
|
|
3252
|
-
children: [{
|
|
3253
|
-
text: ''
|
|
3254
|
-
}]
|
|
3255
|
-
});
|
|
3256
|
-
}
|
|
3257
|
-
}
|
|
3258
|
-
};
|
|
3259
|
-
return editor;
|
|
3260
|
-
}
|
|
3261
|
-
|
|
3262
|
-
function handleTableNavigation(editor, event, stacked) {
|
|
3263
|
-
if (stacked) {
|
|
3264
|
-
return;
|
|
3265
|
-
}
|
|
3266
|
-
var selection = editor.selection;
|
|
3267
|
-
if (selection && Range.isCollapsed(selection)) {
|
|
3268
|
-
var cellMatch = Cell.match(editor);
|
|
3269
|
-
if (cellMatch) {
|
|
3270
|
-
var _cellMatch = _slicedToArray(cellMatch, 2),
|
|
3271
|
-
cellPath = _cellMatch[1];
|
|
3272
|
-
var rowPath = cellPath.slice(0, -1);
|
|
3273
|
-
if (event.key === 'ArrowUp' && Cell.inFirstLine(editor, selection.anchor)) {
|
|
3274
|
-
event.preventDefault();
|
|
3275
|
-
if (rowPath[rowPath.length - 1] > 0) {
|
|
3276
|
-
var previousRowPath = Path.previous(rowPath);
|
|
3277
|
-
var targetPath = [].concat(_toConsumableArray(previousRowPath), [cellPath[cellPath.length - 1]]);
|
|
3278
|
-
Transforms.select(editor, Cell.getPointAtStartOfLastLine(editor, Editor.start(editor, targetPath).path));
|
|
3279
|
-
}
|
|
3280
|
-
} else if (event.key === 'ArrowDown' && Cell.inLastLine(editor, selection.anchor)) {
|
|
3281
|
-
event.preventDefault();
|
|
3282
|
-
var nextRowPath = Path.next(rowPath);
|
|
3283
|
-
var _targetPath = [].concat(_toConsumableArray(nextRowPath), [cellPath[cellPath.length - 1]]);
|
|
3284
|
-
if (Node.has(editor, _targetPath)) {
|
|
3285
|
-
Transforms.select(editor, Editor.start(editor, _targetPath));
|
|
3286
|
-
}
|
|
3287
|
-
}
|
|
3288
|
-
}
|
|
3289
|
-
}
|
|
3290
|
-
}
|
|
3291
|
-
|
|
3292
|
-
var styles$d = {"placeholder":"placeholders-module_placeholder__2j2eo"};
|
|
3293
|
-
|
|
3294
|
-
function createRenderElementWithPlaceholder(options) {
|
|
3295
|
-
var renderElement = createRenderElement(options);
|
|
3296
|
-
return function (_ref) {
|
|
3297
|
-
var attributes = _ref.attributes,
|
|
3298
|
-
children = _ref.children,
|
|
3299
|
-
element = _ref.element;
|
|
3300
|
-
if ((element.type === 'label' || element.type === 'value') && options.showPlaceholders && Node.string(element) === '') {
|
|
3301
|
-
children = /*#__PURE__*/React.createElement(React.Fragment, null, children, /*#__PURE__*/React.createElement("span", {
|
|
3302
|
-
contentEditable: false,
|
|
3303
|
-
className: styles$d.placeholder,
|
|
3304
|
-
"data-text": element.type === 'label' ? options.labelPlaceholder : options.valuePlaceholder
|
|
3305
|
-
}));
|
|
3306
|
-
}
|
|
3307
|
-
return renderElement({
|
|
3308
|
-
attributes: attributes,
|
|
3309
|
-
children: children,
|
|
3310
|
-
element: element
|
|
3311
|
-
});
|
|
3312
|
-
};
|
|
3313
|
-
}
|
|
3314
|
-
|
|
3315
|
-
var EditableTable = React.memo(function EditableTable(_ref) {
|
|
3316
|
-
var value = _ref.value,
|
|
3317
|
-
onChange = _ref.onChange,
|
|
3318
|
-
className = _ref.className,
|
|
3319
|
-
_ref$labelScaleCatego = _ref.labelScaleCategory,
|
|
3320
|
-
labelScaleCategory = _ref$labelScaleCatego === void 0 ? 'body' : _ref$labelScaleCatego,
|
|
3321
|
-
_ref$valueScaleCatego = _ref.valueScaleCategory,
|
|
3322
|
-
valueScaleCategory = _ref$valueScaleCatego === void 0 ? 'body' : _ref$valueScaleCatego,
|
|
3323
|
-
labelPlaceholder = _ref.labelPlaceholder,
|
|
3324
|
-
valuePlaceholder = _ref.valuePlaceholder,
|
|
3325
|
-
_ref$floatingControls = _ref.floatingControlsPosition,
|
|
3326
|
-
floatingControlsPosition = _ref$floatingControls === void 0 ? 'below' : _ref$floatingControls,
|
|
3327
|
-
_ref$stackedInPhoneLa = _ref.stackedInPhoneLayout,
|
|
3328
|
-
stackedInPhoneLayout = _ref$stackedInPhoneLa === void 0 ? false : _ref$stackedInPhoneLa;
|
|
3329
|
-
var editor = useMemo(function () {
|
|
3330
|
-
return withFixedColumns(withLinks(withLineBreakNormalization(withReact(withHistory(createEditor())))));
|
|
3331
|
-
}, []);
|
|
3332
|
-
var _useContentElementEdi = useContentElementEditorState(),
|
|
3333
|
-
isSelected = _useContentElementEdi.isSelected;
|
|
3334
|
-
var phoneLayout = usePhoneLayout();
|
|
3335
|
-
var stacked = stackedInPhoneLayout && phoneLayout;
|
|
3336
|
-
var handleLineBreaks = useLineBreakHandler(editor);
|
|
3337
|
-
var handleShortcuts = useShortcutHandler(editor);
|
|
3338
|
-
var handleKeyDown = useCallback(function (event) {
|
|
3339
|
-
handleLineBreaks(event);
|
|
3340
|
-
handleShortcuts(event);
|
|
3341
|
-
handleTableNavigation(editor, event, stacked);
|
|
3342
|
-
}, [editor, handleLineBreaks, handleShortcuts, stacked]);
|
|
3343
|
-
var _useCachedValue = useCachedValue(value, {
|
|
3344
|
-
defaultValue: [{
|
|
3345
|
-
type: 'row',
|
|
3346
|
-
children: [{
|
|
3347
|
-
type: 'label',
|
|
3348
|
-
children: [{
|
|
3349
|
-
text: ''
|
|
3350
|
-
}]
|
|
3351
|
-
}, {
|
|
3352
|
-
type: 'value',
|
|
3353
|
-
children: [{
|
|
3354
|
-
text: ''
|
|
3355
|
-
}]
|
|
3356
|
-
}]
|
|
3357
|
-
}],
|
|
3358
|
-
onDebouncedChange: onChange
|
|
3359
|
-
}),
|
|
3360
|
-
_useCachedValue2 = _slicedToArray(_useCachedValue, 2),
|
|
3361
|
-
cachedValue = _useCachedValue2[0],
|
|
3362
|
-
setCachedValue = _useCachedValue2[1];
|
|
3363
|
-
var showPlaceholders = cachedValue.length === 1;
|
|
3364
|
-
var renderElement = useMemo(function () {
|
|
3365
|
-
return wrapRenderElementWithLinkPreview(createRenderElementWithPlaceholder({
|
|
3366
|
-
labelScaleCategory: labelScaleCategory,
|
|
3367
|
-
valueScaleCategory: valueScaleCategory,
|
|
3368
|
-
labelPlaceholder: labelPlaceholder,
|
|
3369
|
-
valuePlaceholder: valuePlaceholder,
|
|
3370
|
-
showPlaceholders: showPlaceholders
|
|
3371
|
-
}));
|
|
3372
|
-
}, [labelScaleCategory, valueScaleCategory, labelPlaceholder, valuePlaceholder, showPlaceholders]);
|
|
3373
|
-
return /*#__PURE__*/React.createElement(Slate, {
|
|
3374
|
-
editor: editor,
|
|
3375
|
-
value: cachedValue,
|
|
3376
|
-
onChange: setCachedValue
|
|
3377
|
-
}, /*#__PURE__*/React.createElement(LinkTooltipProvider, {
|
|
3378
|
-
disabled: editor.selection && !Range.isCollapsed(editor.selection),
|
|
3379
|
-
position: floatingControlsPosition
|
|
3380
|
-
}, /*#__PURE__*/React.createElement(HoveringToolbar, {
|
|
3381
|
-
position: floatingControlsPosition
|
|
3382
|
-
}), /*#__PURE__*/React.createElement("table", {
|
|
3383
|
-
className: classNames(className, tableStyles.table, _defineProperty({}, selectedClassName, isSelected)),
|
|
3384
|
-
"data-stacked": stacked ? '' : undefined
|
|
3385
|
-
}, /*#__PURE__*/React.createElement(Editable, {
|
|
3386
|
-
as: "tbody",
|
|
3387
|
-
decorate: decorateLineBreaks,
|
|
3388
|
-
onKeyDown: handleKeyDown,
|
|
3389
|
-
renderElement: renderElement,
|
|
3390
|
-
renderLeaf: renderLeafWithLineBreakDecoration
|
|
3391
|
-
}))));
|
|
3392
|
-
});
|
|
3393
|
-
|
|
3394
|
-
var styles$e = {"reference":"ActionButtons-module_reference__27uyP","buttons":"ActionButtons-module_buttons__1Hz2Z","button":"ActionButtons-module_button__1wzIk","iconOnly":"ActionButtons-module_iconOnly__1VEGK","floating":"ActionButtons-module_floating__18Epj","escaped":"ActionButtons-module_escaped__2M1PU","size-lg":"ActionButtons-module_size-lg__2b0Dw","position-outside":"ActionButtons-module_position-outside__1rpXW","position-outsideLeft":"ActionButtons-module_position-outsideLeft__3bo3f","position-outsideIndented":"ActionButtons-module_position-outsideIndented__2LZds","position-inside":"ActionButtons-module_position-inside__IDFN8","position-center":"ActionButtons-module_position-center__1ff85"};
|
|
3395
|
-
|
|
3396
|
-
var _excluded$g = ["styles"];
|
|
3397
|
-
function _extends$g() {
|
|
3398
|
-
_extends$g = Object.assign ? Object.assign.bind() : function (target) {
|
|
3399
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
3400
|
-
var source = arguments[i];
|
|
3401
|
-
for (var key in source) {
|
|
3402
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3403
|
-
target[key] = source[key];
|
|
3404
|
-
}
|
|
3405
|
-
}
|
|
3406
|
-
}
|
|
3407
|
-
return target;
|
|
3408
|
-
};
|
|
3409
|
-
return _extends$g.apply(this, arguments);
|
|
3410
|
-
}
|
|
3411
|
-
var background = (function (_ref) {
|
|
3412
|
-
var _ref$styles = _ref.styles,
|
|
3413
|
-
props = _objectWithoutProperties(_ref, _excluded$g);
|
|
3414
|
-
return /*#__PURE__*/React.createElement("svg", _extends$g({
|
|
3415
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3416
|
-
viewBox: "0 0 448 512"
|
|
3417
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
3418
|
-
d: "M64 32C28.7 32 0 60.7 0 96v200c0 35.3 28.7 64 64 64h208c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64z"
|
|
3419
|
-
}), /*#__PURE__*/React.createElement("path", {
|
|
3420
|
-
d: "M363.494 144v48H384c8.8 0 16 7.2 16 16v200c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16v-21.16h-48V408c0 35.3 28.7 64 64 64h208c35.3 0 64-28.7 64-64V208c0-35.3-28.7-64-64-64z"
|
|
3421
|
-
}));
|
|
3422
|
-
});
|
|
3423
|
-
|
|
3424
|
-
var _excluded$h = ["styles"];
|
|
3425
|
-
function _extends$h() {
|
|
3426
|
-
_extends$h = Object.assign ? Object.assign.bind() : function (target) {
|
|
3427
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
3428
|
-
var source = arguments[i];
|
|
3429
|
-
for (var key in source) {
|
|
3430
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3431
|
-
target[key] = source[key];
|
|
3432
|
-
}
|
|
3433
|
-
}
|
|
3434
|
-
}
|
|
3435
|
-
return target;
|
|
3436
|
-
};
|
|
3437
|
-
return _extends$h.apply(this, arguments);
|
|
3438
|
-
}
|
|
3439
|
-
var foreground = (function (_ref) {
|
|
3440
|
-
var _ref$styles = _ref.styles,
|
|
3441
|
-
props = _objectWithoutProperties(_ref, _excluded$h);
|
|
3442
|
-
return /*#__PURE__*/React.createElement("svg", _extends$h({
|
|
3443
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3444
|
-
viewBox: "0 0 448 512"
|
|
3445
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
3446
|
-
d: "M363.494 148v168.365c0 41.077-33.397 74.475-74.474 74.475H112V412c0 35.3 28.7 64 64 64h208c35.3 0 64-28.7 64-64V212c0-35.3-28.7-64-64-64z"
|
|
3447
|
-
}), /*#__PURE__*/React.createElement("path", {
|
|
3448
|
-
d: "M272 84c8.8 0 16 7.2 16 16v200c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V100c0-8.8 7.2-16 16-16zM64 36C28.7 36 0 64.7 0 100v200c0 35.3 28.7 64 64 64h208c35.3 0 64-28.7 64-64V100c0-35.3-28.7-64-64-64z"
|
|
3449
|
-
}));
|
|
3450
|
-
});
|
|
3451
|
-
|
|
3452
|
-
var _excluded$i = ["styles"];
|
|
3453
|
-
function _extends$i() {
|
|
3454
|
-
_extends$i = Object.assign ? Object.assign.bind() : function (target) {
|
|
3455
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
3456
|
-
var source = arguments[i];
|
|
3457
|
-
for (var key in source) {
|
|
3458
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3459
|
-
target[key] = source[key];
|
|
3460
|
-
}
|
|
3461
|
-
}
|
|
3462
|
-
}
|
|
3463
|
-
return target;
|
|
3464
|
-
};
|
|
3465
|
-
return _extends$i.apply(this, arguments);
|
|
3466
|
-
}
|
|
3467
|
-
var pencil = (function (_ref) {
|
|
3468
|
-
var _ref$styles = _ref.styles,
|
|
3469
|
-
props = _objectWithoutProperties(_ref, _excluded$i);
|
|
3470
|
-
return /*#__PURE__*/React.createElement("svg", _extends$i({
|
|
3471
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3472
|
-
viewBox: "0 0 512 512"
|
|
3473
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
3474
|
-
d: "M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1-33.9-33.9-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2l199.2-199.2 22.6-22.7zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9l-78.2 23 23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7l-14.4 14.5-22.6 22.6-11.4 11.3 33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5l-39.3-39.4c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"
|
|
3475
|
-
}));
|
|
3476
|
-
});
|
|
3477
|
-
|
|
3478
|
-
var _excluded$j = ["styles"];
|
|
3479
|
-
function _extends$j() {
|
|
3480
|
-
_extends$j = Object.assign ? Object.assign.bind() : function (target) {
|
|
3481
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
3482
|
-
var source = arguments[i];
|
|
3483
|
-
for (var key in source) {
|
|
3484
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3485
|
-
target[key] = source[key];
|
|
3486
|
-
}
|
|
3487
|
-
}
|
|
3488
|
-
}
|
|
3489
|
-
return target;
|
|
3490
|
-
};
|
|
3491
|
-
return _extends$j.apply(this, arguments);
|
|
3492
|
-
}
|
|
3493
|
-
var unlink = (function (_ref) {
|
|
3494
|
-
var _ref$styles = _ref.styles,
|
|
3495
|
-
props = _objectWithoutProperties(_ref, _excluded$j);
|
|
3496
|
-
return /*#__PURE__*/React.createElement("svg", _extends$j({
|
|
3497
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3498
|
-
viewBox: "0 0 512 512",
|
|
3499
|
-
"aria-hidden": "true"
|
|
3500
|
-
}, props), /*#__PURE__*/React.createElement("path", {
|
|
3501
|
-
d: "M360 0c-39-.001-78 14.8-107 44.4L185 112l-1 1 57 56s1 0 1-1l67-67c28-28.2 74-28.1 102 1 28 28 27 73-1 101l-13 14c-4 4-6 10-4 16 6 17 9 35 10 53 1 14 18 20 27 11l38-38c59-59 59-155 0-214.6C438 14.8 399 .001 360 0zm-63 165c-4 0-8 2-11 5l-22 21v1l107 107c2-41-13-82-44-114a152 152 0 00-21-17c-3-2-6-3-9-3zM93.3 211c-4.1 0-8.4 1-11.7 4l-37.1 38c-59.3 59-59.3 155 0 215C104 527 200 527 259 468l68-68v-1l-56-56s-1 0-1 1l-67 67c-28 28-74 28-102-1-28.2-28-27.4-73 1-101l13-14c4-4 6-10 4-16-6-17-10-35-10-53 0-9-8-15-15.7-15zm47.7 2c-2 41 13 82 44 114a152 152 0 0021 17c6 4 15 4 20-2l22-21v-1L141 213z"
|
|
3502
|
-
}), /*#__PURE__*/React.createElement("path", {
|
|
3503
|
-
stroke: "#000",
|
|
3504
|
-
strokeWidth: "68.787",
|
|
3505
|
-
strokeLinecap: "round",
|
|
3506
|
-
d: "M64 64l384 384"
|
|
3507
|
-
}));
|
|
3508
|
-
});
|
|
3509
|
-
|
|
3510
|
-
var icons = {
|
|
3511
|
-
background: background,
|
|
3512
|
-
foreground: foreground,
|
|
3513
|
-
link: link,
|
|
3514
|
-
pencil: pencil,
|
|
3515
|
-
unlink: unlink
|
|
3516
|
-
};
|
|
3517
|
-
function ActionButtons(_ref) {
|
|
3518
|
-
var _middlewareData$hide;
|
|
3519
|
-
var buttons = _ref.buttons,
|
|
3520
|
-
position = _ref.position,
|
|
3521
|
-
portal = _ref.portal,
|
|
3522
|
-
_ref$size = _ref.size,
|
|
3523
|
-
size = _ref$size === void 0 ? 'md' : _ref$size;
|
|
3524
|
-
var iconSize = size === 'md' ? 15 : 20;
|
|
3525
|
-
var _useFloating = useFloating({
|
|
3526
|
-
placement: position === 'center' ? 'bottom' : position === 'inside' ? 'top-end' : position === 'outsideLeft' ? 'bottom-start' : 'bottom-end',
|
|
3527
|
-
middleware: portal && [hide({
|
|
3528
|
-
strategy: 'escaped'
|
|
3529
|
-
}), shift({
|
|
3530
|
-
elementContext: 'reference'
|
|
3531
|
-
})],
|
|
3532
|
-
whileElementsMounted: autoUpdate
|
|
3533
|
-
}),
|
|
3534
|
-
refs = _useFloating.refs,
|
|
3535
|
-
floatingStyles = _useFloating.floatingStyles,
|
|
3536
|
-
middlewareData = _useFloating.middlewareData;
|
|
3537
|
-
return /*#__PURE__*/React.createElement("span", {
|
|
3538
|
-
className: classNames(styles$e.reference, styles$e["position-".concat(position)]),
|
|
3539
|
-
ref: refs.setReference
|
|
3540
|
-
}, /*#__PURE__*/React.createElement(Portal, {
|
|
3541
|
-
enabled: portal
|
|
3542
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
3543
|
-
ref: refs.setFloating,
|
|
3544
|
-
className: classNames(styles$e.floating, _defineProperty({}, styles$e.escaped, (_middlewareData$hide = middlewareData.hide) === null || _middlewareData$hide === void 0 ? void 0 : _middlewareData$hide.escaped)),
|
|
3545
|
-
style: floatingStyles
|
|
3546
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
3547
|
-
className: styles$e.buttons
|
|
3548
|
-
}, buttons.map(function (_ref2, index) {
|
|
3549
|
-
var icon = _ref2.icon,
|
|
3550
|
-
text = _ref2.text,
|
|
3551
|
-
onClick = _ref2.onClick,
|
|
3552
|
-
iconOnly = _ref2.iconOnly;
|
|
3553
|
-
var Icon = icons[icon];
|
|
3554
|
-
return /*#__PURE__*/React.createElement("button", {
|
|
3555
|
-
key: index,
|
|
3556
|
-
className: classNames(styles$e.button, styles$e["size-".concat(size)], _defineProperty({}, styles$e.iconOnly, iconOnly)),
|
|
3557
|
-
onClick: onClick,
|
|
3558
|
-
title: iconOnly ? text : undefined,
|
|
3559
|
-
"aria-label": iconOnly ? text : undefined
|
|
3560
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
3561
|
-
width: iconSize,
|
|
3562
|
-
height: iconSize
|
|
3563
|
-
}), !iconOnly && text);
|
|
3564
|
-
})))));
|
|
3565
|
-
}
|
|
3566
|
-
function Portal(_ref3) {
|
|
3567
|
-
var enabled = _ref3.enabled,
|
|
3568
|
-
children = _ref3.children;
|
|
3569
|
-
var floatingPortalRoot = useFloatingPortalRoot();
|
|
3570
|
-
if (enabled) {
|
|
3571
|
-
return /*#__PURE__*/React.createElement(FloatingPortal, {
|
|
3572
|
-
root: floatingPortalRoot
|
|
3573
|
-
}, children);
|
|
3574
|
-
} else {
|
|
3575
|
-
return children;
|
|
3576
|
-
}
|
|
3577
|
-
}
|
|
3578
|
-
|
|
3579
|
-
var styles$f = {"wrapper":"EditableLink-module_wrapper__2sbJy"};
|
|
3580
|
-
|
|
3581
|
-
function EditableLink(_ref) {
|
|
3582
|
-
var className = _ref.className,
|
|
3583
|
-
href = _ref.href,
|
|
3584
|
-
openInNewTab = _ref.openInNewTab,
|
|
3585
|
-
children = _ref.children,
|
|
3586
|
-
onChange = _ref.onChange,
|
|
3587
|
-
linkPreviewDisabled = _ref.linkPreviewDisabled,
|
|
3588
|
-
_ref$linkPreviewPosit = _ref.linkPreviewPosition,
|
|
3589
|
-
linkPreviewPosition = _ref$linkPreviewPosit === void 0 ? 'below' : _ref$linkPreviewPosit,
|
|
3590
|
-
_ref$linkPreviewAlign = _ref.linkPreviewAlign,
|
|
3591
|
-
linkPreviewAlign = _ref$linkPreviewAlign === void 0 ? 'center' : _ref$linkPreviewAlign,
|
|
3592
|
-
_ref$actionButtonPosi = _ref.actionButtonPosition,
|
|
3593
|
-
actionButtonPosition = _ref$actionButtonPosi === void 0 ? 'outside' : _ref$actionButtonPosi,
|
|
3594
|
-
_ref$actionButtonVisi = _ref.actionButtonVisible,
|
|
3595
|
-
actionButtonVisible = _ref$actionButtonVisi === void 0 ? 'whenSelected' : _ref$actionButtonVisi,
|
|
3596
|
-
actionButtonPortal = _ref.actionButtonPortal,
|
|
3597
|
-
_ref$allowRemove = _ref.allowRemove,
|
|
3598
|
-
allowRemove = _ref$allowRemove === void 0 ? false : _ref$allowRemove;
|
|
3599
|
-
var selectLinkDestination = useSelectLinkDestination();
|
|
3600
|
-
var _useI18n = useI18n({
|
|
3601
|
-
locale: 'ui'
|
|
3602
|
-
}),
|
|
3603
|
-
t = _useI18n.t;
|
|
3604
|
-
var _useContentElementEdi = useContentElementEditorState(),
|
|
3605
|
-
isSelected = _useContentElementEdi.isSelected;
|
|
3606
|
-
if (actionButtonVisible === 'whenSelected') {
|
|
3607
|
-
actionButtonVisible = isSelected;
|
|
3608
|
-
}
|
|
3609
|
-
function handleSelectLinkDestination() {
|
|
3610
|
-
selectLinkDestination().then(onChange, function () {});
|
|
3611
|
-
}
|
|
3612
|
-
function handleRemoveLink() {
|
|
3613
|
-
onChange(null);
|
|
3614
|
-
}
|
|
3615
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
3616
|
-
className: styles$f.wrapper
|
|
3617
|
-
}, /*#__PURE__*/React.createElement(LinkTooltipProvider, {
|
|
3618
|
-
disabled: linkPreviewDisabled,
|
|
3619
|
-
position: linkPreviewPosition,
|
|
3620
|
-
align: linkPreviewAlign,
|
|
3621
|
-
gap: 5
|
|
3622
|
-
}, /*#__PURE__*/React.createElement(LinkPreview, {
|
|
3623
|
-
href: href,
|
|
3624
|
-
openInNewTab: openInNewTab,
|
|
3625
|
-
className: className
|
|
3626
|
-
}, children)), actionButtonVisible && /*#__PURE__*/React.createElement(ActionButtons, {
|
|
3627
|
-
buttons: [{
|
|
3628
|
-
icon: 'link',
|
|
3629
|
-
text: href ? t('pageflow_scrolled.inline_editing.change_link_destination') : t('pageflow_scrolled.inline_editing.select_link_destination'),
|
|
3630
|
-
onClick: handleSelectLinkDestination
|
|
3631
|
-
}].concat(_toConsumableArray(allowRemove && href ? [{
|
|
3632
|
-
icon: 'unlink',
|
|
3633
|
-
iconOnly: true,
|
|
3634
|
-
text: t('pageflow_scrolled.inline_editing.remove_link'),
|
|
3635
|
-
onClick: handleRemoveLink
|
|
3636
|
-
}] : [])),
|
|
3637
|
-
position: actionButtonPosition,
|
|
3638
|
-
portal: actionButtonPortal
|
|
3639
|
-
}));
|
|
3640
|
-
}
|
|
3641
|
-
|
|
3642
|
-
var WidgetEditorStateContext = createContext();
|
|
3643
|
-
function useWidgetEditorState() {
|
|
3644
|
-
return useContext(WidgetEditorStateContext);
|
|
3645
|
-
}
|
|
3646
|
-
function SelectableWidgetDecorator(_ref) {
|
|
3647
|
-
var role = _ref.role,
|
|
3648
|
-
props = _ref.props,
|
|
3649
|
-
children = _ref.children;
|
|
3650
|
-
var _useEditorSelection = useEditorSelection(useMemo(function () {
|
|
3651
|
-
return {
|
|
3652
|
-
id: role,
|
|
3653
|
-
type: 'widget'
|
|
3654
|
-
};
|
|
3655
|
-
}, [role])),
|
|
3656
|
-
isSelected = _useEditorSelection.isSelected,
|
|
3657
|
-
select = _useEditorSelection.select;
|
|
3658
|
-
var value = useMemo(function () {
|
|
3659
|
-
return {
|
|
3660
|
-
isSelected: isSelected,
|
|
3661
|
-
select: select
|
|
3662
|
-
};
|
|
3663
|
-
}, [isSelected, select]);
|
|
3664
|
-
return /*#__PURE__*/React.createElement(WidgetEditorStateContext.Provider, {
|
|
3665
|
-
value: value
|
|
3666
|
-
}, children);
|
|
3667
|
-
}
|
|
3668
|
-
|
|
3669
|
-
function WidgetSelectionRect(_ref) {
|
|
3670
|
-
var children = _ref.children;
|
|
3671
|
-
var _useWidgetEditorState = useWidgetEditorState(),
|
|
3672
|
-
select = _useWidgetEditorState.select,
|
|
3673
|
-
isSelected = _useWidgetEditorState.isSelected;
|
|
3674
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
3675
|
-
className: classNames(styles$3.wrapper, _defineProperty({}, styles$3.selected, isSelected)),
|
|
3676
|
-
onClick: function onClick() {
|
|
3677
|
-
return select();
|
|
3678
|
-
}
|
|
3679
|
-
}, children);
|
|
3680
|
-
}
|
|
3681
|
-
|
|
3682
|
-
var _excluded$k = ["icon", "text", "onClick", "iconOnly"];
|
|
3683
|
-
function ActionButton(_ref) {
|
|
3684
|
-
var icon = _ref.icon,
|
|
3685
|
-
text = _ref.text,
|
|
3686
|
-
onClick = _ref.onClick,
|
|
3687
|
-
iconOnly = _ref.iconOnly,
|
|
3688
|
-
rest = _objectWithoutProperties(_ref, _excluded$k);
|
|
3689
|
-
return /*#__PURE__*/React.createElement(ActionButtons, Object.assign({}, rest, {
|
|
3690
|
-
buttons: [{
|
|
3691
|
-
icon: icon,
|
|
3692
|
-
text: text,
|
|
3693
|
-
onClick: onClick,
|
|
3694
|
-
iconOnly: iconOnly
|
|
3695
|
-
}]
|
|
3696
|
-
}));
|
|
3697
|
-
}
|
|
3698
|
-
|
|
3699
|
-
function PhonePlatformProvider(_ref) {
|
|
3700
|
-
var children = _ref.children;
|
|
3701
|
-
var _useState = useState(false),
|
|
3702
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
3703
|
-
phoneEmulationMode = _useState2[0],
|
|
3704
|
-
setPhoneEmulationMode = _useState2[1];
|
|
3705
|
-
useEffect(function () {
|
|
3706
|
-
window.addEventListener('message', receive);
|
|
3707
|
-
function receive(event) {
|
|
3708
|
-
if (event.data.type === 'CHANGE_EMULATION_MODE') {
|
|
3709
|
-
if (event.data['payload'] === 'phone') {
|
|
3710
|
-
setPhoneEmulationMode(true);
|
|
3711
|
-
} else {
|
|
3712
|
-
setPhoneEmulationMode(false);
|
|
3713
|
-
}
|
|
3714
|
-
}
|
|
3715
|
-
}
|
|
3716
|
-
return function () {
|
|
3717
|
-
return window.removeEventListener('message', receive);
|
|
3718
|
-
};
|
|
3719
|
-
});
|
|
3720
|
-
return /*#__PURE__*/React.createElement(PhonePlatformContext.Provider, {
|
|
3721
|
-
value: phoneEmulationMode
|
|
3722
|
-
}, children);
|
|
3723
|
-
}
|
|
3724
|
-
|
|
3725
|
-
function BackdropDecorator(_ref) {
|
|
3726
|
-
var _backdrop$contentElem, _backdrop$contentElem2;
|
|
3727
|
-
var backdrop = _ref.backdrop,
|
|
3728
|
-
motifAreaState = _ref.motifAreaState,
|
|
3729
|
-
children = _ref.children;
|
|
3730
|
-
var _useI18n = useI18n({
|
|
3731
|
-
locale: 'ui'
|
|
3732
|
-
}),
|
|
3733
|
-
t = _useI18n.t;
|
|
3734
|
-
var _useEditorSelection = useEditorSelection({
|
|
3735
|
-
id: (_backdrop$contentElem = backdrop.contentElement) === null || _backdrop$contentElem === void 0 ? void 0 : _backdrop$contentElem.sectionId,
|
|
3736
|
-
type: 'sectionSettings'
|
|
3737
|
-
}),
|
|
3738
|
-
isSectionSelected = _useEditorSelection.isSelected,
|
|
3739
|
-
selectSection = _useEditorSelection.select;
|
|
3740
|
-
var _useEditorSelection2 = useEditorSelection({
|
|
3741
|
-
id: (_backdrop$contentElem2 = backdrop.contentElement) === null || _backdrop$contentElem2 === void 0 ? void 0 : _backdrop$contentElem2.id,
|
|
3742
|
-
type: 'contentElement'
|
|
3743
|
-
}),
|
|
3744
|
-
isBackdropElementSelected = _useEditorSelection2.isSelected,
|
|
3745
|
-
selectBackdropElement = _useEditorSelection2.select;
|
|
3746
|
-
var scrollToTarget = useScrollToTarget();
|
|
3747
|
-
var text, icon, handleClick;
|
|
3748
|
-
if (isBackdropElementSelected) {
|
|
3749
|
-
text = t('pageflow_scrolled.inline_editing.back_to_section');
|
|
3750
|
-
icon = 'foreground';
|
|
3751
|
-
handleClick = function handleClick() {
|
|
3752
|
-
return selectSection();
|
|
3753
|
-
};
|
|
3754
|
-
} else if (backdrop.contentElement) {
|
|
3755
|
-
text = t('pageflow_scrolled.inline_editing.select_backdrop_content_element');
|
|
3756
|
-
icon = 'background';
|
|
3757
|
-
handleClick = function handleClick() {
|
|
3758
|
-
scrollToTarget({
|
|
3759
|
-
id: backdrop.contentElement.sectionId,
|
|
3760
|
-
align: 'start'
|
|
3761
|
-
});
|
|
3762
|
-
selectBackdropElement();
|
|
3763
|
-
};
|
|
3764
|
-
} else {
|
|
3765
|
-
return children;
|
|
3766
|
-
}
|
|
3767
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
3768
|
-
className: classNames(styles$1.wrapper, _defineProperty({}, styles$1.visible, isBackdropElementSelected || isSectionSelected)),
|
|
3769
|
-
style: {
|
|
3770
|
-
height: motifAreaState.paddingTop
|
|
3771
|
-
}
|
|
3772
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
3773
|
-
className: styles$1.inner
|
|
3774
|
-
}, /*#__PURE__*/React.createElement(ActionButton, {
|
|
3775
|
-
size: "lg",
|
|
3776
|
-
position: "center",
|
|
3777
|
-
icon: icon,
|
|
3778
|
-
text: text,
|
|
3779
|
-
onClick: handleClick
|
|
3780
|
-
}))), children);
|
|
3781
|
-
}
|
|
3782
|
-
|
|
3783
|
-
function BackgroundContentElementDecorator(_ref) {
|
|
3784
|
-
var contentElement = _ref.contentElement,
|
|
3785
|
-
children = _ref.children;
|
|
3786
|
-
var _useEditorSelection = useEditorSelection({
|
|
3787
|
-
id: contentElement === null || contentElement === void 0 ? void 0 : contentElement.id,
|
|
3788
|
-
type: 'contentElement'
|
|
3789
|
-
}),
|
|
3790
|
-
isSelected = _useEditorSelection.isSelected;
|
|
3791
|
-
var _useEditorSelection2 = useEditorSelection({
|
|
3792
|
-
id: contentElement === null || contentElement === void 0 ? void 0 : contentElement.sectionId,
|
|
3793
|
-
type: 'sectionSettings'
|
|
3794
|
-
}),
|
|
3795
|
-
isSectionSelected = _useEditorSelection2.isSelected;
|
|
3796
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
3797
|
-
style: {
|
|
3798
|
-
pointerEvents: isSelected || isSectionSelected ? 'auto' : 'none'
|
|
3799
|
-
}
|
|
3800
|
-
}, children);
|
|
3801
|
-
}
|
|
3802
|
-
|
|
3803
|
-
export { ActionButton, ActionButtons, BackdropDecorator, BackgroundContentElementDecorator, ContentDecorator, ContentElementDecorator, EditableInlineText, EditableLink, EditableTable, EditableText, EntryDecorator, LayoutWithPlaceholder, LinkTooltipProvider, PhonePlatformProvider, SectionDecorator, SelectableWidgetDecorator, WidgetSelectionRect };
|