pageflow 15.6.1 → 15.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +253 -11
  3. data/README.md +1 -2
  4. data/admins/pageflow/entry.rb +28 -57
  5. data/admins/pageflow/membership.rb +5 -1
  6. data/admins/pageflow/user.rb +1 -3
  7. data/app/assets/images/pageflow/admin/icons/buttons/editor.svg +2 -0
  8. data/app/assets/images/pageflow/admin/icons/buttons/preview.svg +2 -0
  9. data/app/assets/images/pageflow/admin/icons/buttons/show_public.svg +2 -0
  10. data/app/assets/images/pageflow/admin/icons/delete.svg +9 -0
  11. data/app/assets/images/pageflow/admin/icons/done.svg +6 -0
  12. data/app/assets/images/pageflow/admin/icons/edit.svg +7 -0
  13. data/app/assets/images/pageflow/admin/icons/editor.svg +2 -0
  14. data/app/assets/images/pageflow/admin/icons/folder.svg +8 -0
  15. data/app/assets/images/pageflow/admin/icons/folder_active.svg +8 -0
  16. data/app/assets/images/pageflow/admin/icons/info.svg +3 -0
  17. data/app/assets/images/pageflow/admin/icons/new.svg +5 -0
  18. data/app/assets/images/pageflow/admin/icons/preview.svg +2 -0
  19. data/app/assets/images/pageflow/admin/icons/published.svg +2 -0
  20. data/app/assets/images/pageflow/admin/icons/published_with_password.svg +2 -0
  21. data/app/assets/images/pageflow/admin/icons/show_public.svg +2 -0
  22. data/app/assets/images/pageflow/editor/blank_entry/logo.png +0 -0
  23. data/app/assets/images/pageflow/themes/default/embed_opt_in.svg +3 -0
  24. data/app/assets/images/pageflow/themes/default/embed_opt_out_info.svg +16 -0
  25. data/app/assets/javascripts/pageflow/admin/entries.js +9 -57
  26. data/app/assets/javascripts/pageflow/dist/editor.js +11890 -0
  27. data/app/assets/javascripts/pageflow/dist/frontend.js +5800 -0
  28. data/app/assets/javascripts/pageflow/dist/react-client.js +22 -0
  29. data/app/assets/javascripts/pageflow/dist/react-server.js +19 -0
  30. data/app/assets/javascripts/pageflow/dist/ui.js +127 -10
  31. data/app/assets/stylesheets/pageflow/admin/active_admin_patches.scss +18 -16
  32. data/app/assets/stylesheets/pageflow/admin/badge_list.scss +25 -35
  33. data/app/assets/stylesheets/pageflow/admin/columns.scss +13 -11
  34. data/app/assets/stylesheets/pageflow/admin/embed_code.scss +1 -4
  35. data/app/assets/stylesheets/pageflow/admin/entries/folders.scss +44 -19
  36. data/app/assets/stylesheets/pageflow/admin/entries.scss +15 -31
  37. data/app/assets/stylesheets/pageflow/admin/features.scss +3 -1
  38. data/app/assets/stylesheets/pageflow/admin/forms.scss +14 -12
  39. data/app/assets/stylesheets/pageflow/admin/hint.scss +8 -14
  40. data/app/assets/stylesheets/pageflow/admin/icon_button.scss +25 -14
  41. data/app/assets/stylesheets/pageflow/admin/icon_link.scss +31 -15
  42. data/app/assets/stylesheets/pageflow/admin/publication_state_indicator.scss +14 -7
  43. data/app/assets/stylesheets/pageflow/admin/status_tags.scss +5 -4
  44. data/app/assets/stylesheets/pageflow/admin/tabs_view.scss +36 -34
  45. data/app/assets/stylesheets/pageflow/admin/tooltip_bubble.scss +15 -11
  46. data/app/assets/stylesheets/pageflow/admin.scss +12 -0
  47. data/app/assets/stylesheets/pageflow/editor/background_positioning.scss +15 -61
  48. data/app/assets/stylesheets/pageflow/editor/base.scss +28 -13
  49. data/app/assets/stylesheets/pageflow/editor/blank_entry.scss +6 -6
  50. data/app/assets/stylesheets/pageflow/editor/change_theme.scss +28 -71
  51. data/app/assets/stylesheets/pageflow/editor/composables.scss +2 -2
  52. data/app/assets/stylesheets/pageflow/editor/confirm_encoding.scss +18 -36
  53. data/app/assets/stylesheets/pageflow/editor/confirm_upload.scss +12 -39
  54. data/app/assets/stylesheets/pageflow/editor/dialogs.scss +39 -12
  55. data/app/assets/stylesheets/pageflow/editor/disabled_atmo_indicator.scss +3 -3
  56. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +7 -10
  57. data/app/assets/stylesheets/pageflow/editor/emulation_mode_button.scss +3 -8
  58. data/app/assets/stylesheets/pageflow/editor/failures.scss +3 -3
  59. data/app/assets/stylesheets/pageflow/editor/file_import.scss +22 -38
  60. data/app/assets/stylesheets/pageflow/editor/file_meta_data.scss +3 -7
  61. data/app/assets/stylesheets/pageflow/editor/file_settings_dialog.scss +4 -24
  62. data/app/assets/stylesheets/pageflow/editor/file_stages.scss +10 -11
  63. data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -8
  64. data/app/assets/stylesheets/pageflow/editor/files.scss +7 -6
  65. data/app/assets/stylesheets/pageflow/editor/files_explorer.scss +13 -30
  66. data/app/assets/stylesheets/pageflow/editor/files_gallery.scss +15 -11
  67. data/app/assets/stylesheets/pageflow/editor/filtered_files.scss +6 -7
  68. data/app/assets/stylesheets/pageflow/editor/help.scss +19 -14
  69. data/app/assets/stylesheets/pageflow/editor/help_image.scss +1 -1
  70. data/app/assets/stylesheets/pageflow/editor/info_box.scss +19 -0
  71. data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +7 -11
  72. data/app/assets/stylesheets/pageflow/editor/inputs/file_processing_state_display.scss +0 -2
  73. data/app/assets/stylesheets/pageflow/editor/inputs/reference.scss +7 -11
  74. data/app/assets/stylesheets/pageflow/editor/list.scss +13 -10
  75. data/app/assets/stylesheets/pageflow/editor/loading.scss +1 -1
  76. data/app/assets/stylesheets/pageflow/editor/locked.scss +9 -5
  77. data/app/assets/stylesheets/pageflow/editor/menu.scss +5 -5
  78. data/app/assets/stylesheets/pageflow/editor/notifications.scss +15 -14
  79. data/app/assets/stylesheets/pageflow/editor/other_entry_item.scss +7 -3
  80. data/app/assets/stylesheets/pageflow/editor/outline.scss +57 -19
  81. data/app/assets/stylesheets/pageflow/editor/page_links.scss +10 -8
  82. data/app/assets/stylesheets/pageflow/editor/page_selection.scss +2 -29
  83. data/app/assets/stylesheets/pageflow/editor/publish_entry.scss +5 -6
  84. data/app/assets/stylesheets/pageflow/editor/quotas.scss +2 -3
  85. data/app/assets/stylesheets/pageflow/editor/select_button.scss +12 -6
  86. data/app/assets/stylesheets/pageflow/editor/sidebar_footer.scss +1 -5
  87. data/app/assets/stylesheets/pageflow/editor/storyline_picker.scss +6 -2
  88. data/app/assets/stylesheets/pageflow/editor/text_tracks.scss +6 -22
  89. data/app/assets/stylesheets/pageflow/editor/widgets.scss +2 -2
  90. data/app/assets/stylesheets/pageflow/editor/wysihtml5.scss +35 -29
  91. data/app/assets/stylesheets/pageflow/mixins/background_icons.scss +3 -3
  92. data/app/assets/stylesheets/pageflow/mixins/buttons.scss +50 -68
  93. data/app/assets/stylesheets/pageflow/themes/default/base.scss +2 -0
  94. data/app/assets/stylesheets/pageflow/themes/default/consent/bar.scss +156 -0
  95. data/app/assets/stylesheets/pageflow/themes/default/consent/vendor_list.scss +62 -0
  96. data/app/assets/stylesheets/pageflow/themes/default/consent.scss +2 -0
  97. data/app/assets/stylesheets/pageflow/themes/default/logo/alignment.scss +7 -0
  98. data/app/assets/stylesheets/pageflow/themes/default/page/shadow.scss +44 -0
  99. data/app/assets/stylesheets/pageflow/themes/default/third_party_embed_consent.scss +103 -0
  100. data/app/assets/stylesheets/pageflow/ui/forms.scss +79 -84
  101. data/app/assets/stylesheets/pageflow/ui/functions.scss +56 -0
  102. data/app/assets/stylesheets/pageflow/ui/input/check_box_group_input.scss +2 -3
  103. data/app/assets/stylesheets/pageflow/ui/input/color_input.scss +6 -6
  104. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.scss +63 -50
  105. data/app/assets/stylesheets/pageflow/ui/normalize/forms.scss +153 -0
  106. data/app/assets/stylesheets/pageflow/ui/normalize.scss +278 -0
  107. data/app/assets/stylesheets/pageflow/ui/properties.scss +44 -0
  108. data/app/assets/stylesheets/pageflow/ui/table_cells/delete_row_table_cell.scss +1 -1
  109. data/app/assets/stylesheets/pageflow/ui/table_view.scss +14 -18
  110. data/app/assets/stylesheets/pageflow/ui/tabs_view.scss +8 -11
  111. data/app/assets/stylesheets/pageflow/ui/tooltip.scss +6 -8
  112. data/app/assets/stylesheets/pageflow/ui/validation_error_messages.scss +6 -0
  113. data/app/assets/stylesheets/pageflow/ui.scss +4 -0
  114. data/app/controllers/pageflow/edit_locks_controller.rb +3 -1
  115. data/app/helpers/pageflow/admin/entries_helper.rb +2 -12
  116. data/app/helpers/pageflow/embed_code_helper.rb +1 -1
  117. data/app/helpers/pageflow/entries_helper.rb +41 -2
  118. data/app/helpers/pageflow/file_background_images_helper.rb +1 -1
  119. data/app/helpers/pageflow/page_types_helper.rb +1 -1
  120. data/app/helpers/pageflow/themes_helper.rb +1 -1
  121. data/app/jobs/pageflow/poll_meta_data_from_zencoder_job.rb +1 -1
  122. data/app/jobs/pageflow/poll_zencoder_job.rb +1 -9
  123. data/app/models/pageflow/audio_file.rb +17 -0
  124. data/app/models/pageflow/audio_file_url_templates.rb +4 -1
  125. data/app/models/pageflow/customized_theme.rb +37 -0
  126. data/app/models/pageflow/draft_entry.rb +6 -59
  127. data/app/models/pageflow/entry.rb +8 -0
  128. data/app/models/pageflow/entry_at_revision.rb +68 -0
  129. data/app/models/pageflow/entry_role_query.rb +44 -24
  130. data/app/models/pageflow/image_file_css_background_image_urls.rb +8 -2
  131. data/app/models/pageflow/published_entry.rb +9 -56
  132. data/app/models/pageflow/theme_customization.rb +46 -0
  133. data/app/models/pageflow/theme_customization_file.rb +58 -0
  134. data/app/models/pageflow/video_file.rb +11 -1
  135. data/app/models/pageflow/video_file_url_templates.rb +1 -0
  136. data/app/policies/pageflow/entry_policy.rb +4 -0
  137. data/app/state_machines/pageflow/media_encoding_state_machine.rb +23 -4
  138. data/app/views/admin/entries/_form.html.erb +50 -0
  139. data/app/views/admin/entries/entry_type_name_input.html.erb +5 -0
  140. data/app/views/admin/features/_form.html.erb +1 -1
  141. data/app/views/admin/memberships/_form.html.erb +2 -3
  142. data/app/views/admin/users/_form.html.erb +1 -1
  143. data/app/views/admin/users/invitation.html.erb +2 -2
  144. data/app/views/components/pageflow/admin/entry_user_badge_list.rb +10 -9
  145. data/app/views/components/pageflow/admin/members_tab.rb +5 -1
  146. data/app/views/components/pageflow/admin/revisions_tab.rb +13 -3
  147. data/app/views/components/pageflow/admin/timestamp.rb +20 -0
  148. data/app/views/components/pageflow/admin/user_account_badge_list.rb +5 -6
  149. data/app/views/pageflow/admin/entries/_cannot_add_user.html.erb +9 -5
  150. data/app/views/pageflow/admin/entries/_entry_type_name_input.html.erb +7 -0
  151. data/app/views/pageflow/audio_files/_audio_file.json.jbuilder +13 -0
  152. data/app/views/pageflow/editor/encoding_confirmations/_intro.html.erb +0 -0
  153. data/app/views/pageflow/editor/encoding_confirmations/check.json.jbuilder +14 -2
  154. data/config/initializers/paperclip.rb +16 -1
  155. data/config/locales/de.yml +24 -28
  156. data/config/locales/en.yml +19 -10
  157. data/db/migrate/20210528073122_create_pageflow_theme_customizations.rb +11 -0
  158. data/db/migrate/20210531090654_create_pageflow_theme_customization_files.rb +15 -0
  159. data/db/migrate/20210531102228_add_selected_file_ids_to_theme_customizations.rb +5 -0
  160. data/db/migrate/20211020085902_add_canonical_entry_url_prefix_to_themings.rb +5 -0
  161. data/db/migrate/20220503150010_add_peak_data_to_audio_files.rb +5 -0
  162. data/db/migrate/20220705084830_add_trailing_slash_in_canonical_urls_to_themings.rb +5 -0
  163. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +256 -124
  164. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +566 -167
  165. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-client.js +5 -5
  166. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/react-server.js +4 -4
  167. data/entry_types/paged/app/helpers/pageflow_paged/third_party_embed_consent_helper.rb +38 -0
  168. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_in.html.erb +12 -0
  169. data/entry_types/paged/app/views/pageflow_paged/third_party_embed_consent/_opt_out_info.html.erb +10 -0
  170. data/entry_types/paged/config/initializers/features.rb +2 -0
  171. data/entry_types/paged/config/locales/new/video_contain.de.yml +7 -0
  172. data/entry_types/paged/config/locales/new/video_contain.en.yml +7 -0
  173. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
  174. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +1 -0
  175. data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +58 -0
  176. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +37 -3
  177. data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +92 -6
  178. data/entry_types/scrolled/app/helpers/pageflow_scrolled/webpack_public_path_helper.rb +20 -0
  179. data/entry_types/scrolled/app/models/pageflow_scrolled/content_element.rb +7 -0
  180. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +5 -2
  181. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +5 -1
  182. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +5 -4
  183. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +16 -0
  184. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +13 -2
  185. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_widget.json.jbuilder +2 -0
  186. data/entry_types/scrolled/config/locales/de.yml +1 -8
  187. data/entry_types/scrolled/config/locales/en.yml +1 -9
  188. data/entry_types/scrolled/config/locales/new/before_after_slider.de.yml +8 -0
  189. data/entry_types/scrolled/config/locales/new/before_after_slider.en.yml +8 -0
  190. data/entry_types/scrolled/config/locales/new/center_ragged.de.yml +8 -0
  191. data/entry_types/scrolled/config/locales/new/center_ragged.en.yml +9 -0
  192. data/entry_types/scrolled/config/locales/new/consent.de.yml +25 -0
  193. data/entry_types/scrolled/config/locales/new/consent.en.yml +24 -0
  194. data/entry_types/scrolled/config/locales/new/content_element_categories.de.yml +39 -0
  195. data/entry_types/scrolled/config/locales/new/content_element_categories.en.yml +39 -0
  196. data/entry_types/scrolled/config/locales/new/default_transition.de.yml +14 -0
  197. data/entry_types/scrolled/config/locales/new/default_transition.en.yml +14 -0
  198. data/entry_types/scrolled/config/locales/new/header_line_breaks.de.yml +28 -0
  199. data/entry_types/scrolled/config/locales/new/header_line_breaks.en.yml +27 -0
  200. data/entry_types/scrolled/config/locales/new/header_size.de.yml +17 -0
  201. data/entry_types/scrolled/config/locales/new/header_size.en.yml +17 -0
  202. data/entry_types/scrolled/config/locales/new/iframe_embed.de.yml +39 -0
  203. data/entry_types/scrolled/config/locales/new/iframe_embed.en.yml +39 -0
  204. data/entry_types/scrolled/config/locales/new/inline_loops.de.yml +26 -0
  205. data/entry_types/scrolled/config/locales/new/inline_loops.en.yml +26 -0
  206. data/entry_types/scrolled/config/locales/new/portrait_inline_image.de.yml +9 -0
  207. data/entry_types/scrolled/config/locales/new/portrait_inline_image.en.yml +9 -0
  208. data/entry_types/scrolled/config/locales/new/section_width.de.yml +10 -0
  209. data/entry_types/scrolled/config/locales/new/section_width.en.yml +10 -0
  210. data/entry_types/scrolled/config/locales/new/typography_variants.de.yml +7 -0
  211. data/entry_types/scrolled/config/locales/new/typography_variants.en.yml +7 -0
  212. data/entry_types/scrolled/config/locales/new/video_embed_poster.de.yml +8 -0
  213. data/entry_types/scrolled/config/locales/new/video_embed_poster.en.yml +8 -0
  214. data/entry_types/scrolled/config/locales/new/waveform_styles.de.yml +11 -0
  215. data/entry_types/scrolled/config/locales/new/waveform_styles.en.yml +12 -0
  216. data/entry_types/scrolled/config/locales/new/widgets.de.yml +6 -0
  217. data/entry_types/scrolled/config/locales/new/widgets.en.yml +6 -0
  218. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +29 -5
  219. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/themes_plugin.rb.tt +8 -6
  220. data/entry_types/scrolled/lib/pageflow_scrolled/additional_packs.rb +37 -0
  221. data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +57 -0
  222. data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +49 -0
  223. data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +8 -0
  224. data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +42 -0
  225. data/entry_types/scrolled/lib/pageflow_scrolled.rb +17 -1
  226. data/entry_types/scrolled/package/contentElements-editor.js +323 -89
  227. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  228. data/entry_types/scrolled/package/contentElements-frontend.js +719 -529
  229. data/entry_types/scrolled/package/editor.js +459 -261
  230. data/entry_types/scrolled/package/frontend/{EditableText-7093fd0e.js → EditableInlineText.module-b9923660.js} +284 -362
  231. data/entry_types/scrolled/package/frontend/{i18n-4dc6c377.js → PhonePlatformContext-9fb97827.js} +199 -106
  232. data/entry_types/scrolled/package/frontend/{Viewer-e49e7807.js → Viewer-e2290ea0.js} +196 -79
  233. data/entry_types/scrolled/package/frontend/{Wavesurfer-0adf5667.js → Wavesurfer-7d9cf1b7.js} +16 -58
  234. data/entry_types/scrolled/package/frontend/{components-6a6793ca.js → components-6ab26015.js} +664 -671
  235. data/entry_types/scrolled/package/frontend/{getPrototypeOf-63c7c8e8.js → createSuper-d0f30da3.js} +34 -5
  236. data/entry_types/scrolled/package/frontend/index.css +1 -9
  237. data/entry_types/scrolled/package/frontend/index.js +1919 -2386
  238. data/entry_types/scrolled/package/frontend/{useBrowserFeature-91a4c29d.js → usePhonePlatform-2857c22b.js} +9 -8
  239. data/entry_types/scrolled/package/frontend-server.js +3 -6
  240. data/entry_types/scrolled/package/package.json +16 -8
  241. data/entry_types/scrolled/package/testHelpers.js +456 -0
  242. data/entry_types/scrolled/package/values/breakpoints.module.css +9 -0
  243. data/entry_types/scrolled/package/values/colors.module.css +5 -0
  244. data/entry_types/scrolled/package/widgets/defaultNavigation.css +9 -0
  245. data/entry_types/scrolled/package/widgets/defaultNavigation.js +612 -0
  246. data/entry_types/scrolled/spec/fixtures/image.svg +1 -0
  247. data/lib/pageflow/ability_mixin.rb +4 -0
  248. data/lib/pageflow/built_in_widget_type.rb +4 -0
  249. data/lib/pageflow/built_in_widget_types_plugin.rb +7 -0
  250. data/lib/pageflow/configuration.rb +34 -1
  251. data/lib/pageflow/entry_type.rb +11 -2
  252. data/lib/pageflow/entry_type_configuration.rb +2 -0
  253. data/lib/pageflow/file_type.rb +24 -0
  254. data/lib/pageflow/paperclip_processors/audio_waveform.rb +42 -0
  255. data/lib/pageflow/paperclip_processors/noop.rb +10 -0
  256. data/lib/pageflow/theme_customizations.rb +61 -0
  257. data/lib/pageflow/user_mixin.rb +6 -0
  258. data/lib/pageflow/version.rb +1 -1
  259. data/lib/pageflow.rb +9 -0
  260. data/package/config/jest/index.js +2 -1
  261. data/package/config/postcss/scaleFunctions.js +71 -0
  262. data/package/editor.js +95 -85
  263. data/package/frontend.js +521 -161
  264. data/package/package.json +5 -3
  265. data/package/testHelpers.js +26 -5
  266. data/package/ui.js +124 -11
  267. data/spec/factories/draft_entries.rb +19 -1
  268. data/spec/factories/entries.rb +4 -0
  269. data/spec/factories/published_entries.rb +6 -0
  270. data/spec/fixtures/audio.ogg +0 -0
  271. metadata +123 -15
  272. data/app/views/admin/entries/_not_allowed_to_see_entry_types.json.jbuilder +0 -2
  273. data/app/views/admin/entries/entry_types.json.jbuilder +0 -4
  274. data/package/config/jest/transformers/upwardBabel.js +0 -5
@@ -1,12 +1,12 @@
1
1
  import React, { useMemo, useState, useCallback, useContext, useRef, useEffect, createContext, useLayoutEffect, memo } from 'react';
2
- import { _ as _slicedToArray, r as useEntryStateDispatch, a as _defineProperty, b as _objectWithoutProperties, u as useI18n, w as updateContentElementConfiguration, k as _objectSpread2, p as _toConsumableArray } from './i18n-4dc6c377.js';
3
- import classNames from 'classnames';
2
+ import { c as _slicedToArray, q as useEntryStateDispatch, b as _defineProperty, _ as _objectWithoutProperties, u as useI18n, A as updateContentElementConfiguration, a as _objectSpread2, o as _toConsumableArray, P as PhonePlatformContext } from './PhonePlatformContext-9fb97827.js';
3
+ import 'i18n-js';
4
4
  import 'use-context-selector';
5
5
  import 'reselect';
6
- import 'i18n-js';
7
6
  import 'slugify';
8
- import { C as ContentElementEditorCommandEmitterContext, d as usePostMessageListener, m as MotifAreaVisibilityProvider, n as ForcePaddingContext, o as ContentElementConfigurationUpdateContext, p as ContentElementEditorStateContext, f as api, i as useContentElementEditorState, q as LayoutWithoutInlineEditing, r as renderElement, s as renderLeaf, h as useContentElementEditorCommandSubscription, T as Text$1, P as PhonePlatformContext } from './EditableText-7093fd0e.js';
9
- import './getPrototypeOf-63c7c8e8.js';
7
+ import classNames from 'classnames';
8
+ import { C as ContentElementEditorCommandEmitterContext, e as usePostMessageListener, n as MotifAreaVisibilityProvider, o as ForcePaddingContext, p as ContentElementConfigurationUpdateContext, q as ContentElementEditorStateContext, f as api, u as useContentElementEditorState, r as LayoutWithoutInlineEditing, s as renderElement, t as renderLeaf$1, j as useContentElementEditorCommandSubscription, T as Text$1, h as frontendStyles } from './EditableInlineText.module-b9923660.js';
9
+ import './createSuper-d0f30da3.js';
10
10
  import BackboneEvents from 'backbone-events-standalone';
11
11
  import { DndProvider, useDrop, useDrag } from 'react-dnd';
12
12
  import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -37,12 +37,9 @@ function EditorStateProvider(props) {
37
37
  setSelection: setSelection
38
38
  };
39
39
  }, [setSelection, selection]);
40
- return (
41
- /*#__PURE__*/
42
- React.createElement(Context.Provider, {
43
- value: value
44
- }, props.children)
45
- );
40
+ return /*#__PURE__*/React.createElement(Context.Provider, {
41
+ value: value
42
+ }, props.children);
46
43
  }
47
44
  function useEditorSelection(options) {
48
45
  var _useContext = useContext(Context),
@@ -57,6 +54,7 @@ function useEditorSelection(options) {
57
54
  }, [setSelection, options]);
58
55
  return useMemo(function () {
59
56
  return setSelection ? {
57
+ range: selection === null || selection === void 0 ? void 0 : selection.range,
60
58
  isSelected: selection && options && selection.id === options.id && selection.type === options.type,
61
59
  select: select,
62
60
  resetSelection: resetSelection
@@ -72,12 +70,9 @@ function useContentElementEditorCommandEmitter() {
72
70
  function ContentElementEditorCommandSubscriptionProvider(_ref) {
73
71
  var emitter = _ref.emitter,
74
72
  children = _ref.children;
75
- return (
76
- /*#__PURE__*/
77
- React.createElement(ContentElementEditorCommandEmitterContext.Provider, {
78
- value: emitter
79
- }, children)
80
- );
73
+ return /*#__PURE__*/React.createElement(ContentElementEditorCommandEmitterContext.Provider, {
74
+ value: emitter
75
+ }, children);
81
76
  }
82
77
 
83
78
  // the editor phone preview. Each ContentElementDecorator renders a
@@ -157,26 +152,15 @@ function restoreScrollPoint(name) {
157
152
  }
158
153
  }
159
154
 
160
- function EntryDecorator(props) {
155
+ function ContentDecorator(props) {
161
156
  var contentElementEditorCommandEmitter = useContentElementEditorCommandEmitter();
162
- return (
163
- /*#__PURE__*/
164
- React.createElement(EditorStateProvider, null,
165
- /*#__PURE__*/
166
- React.createElement(MessageHandler, {
167
- contentElementEditorCommandEmitter: contentElementEditorCommandEmitter
168
- }),
169
- /*#__PURE__*/
170
- React.createElement(ScrollPointMessageHandler, null),
171
- /*#__PURE__*/
172
- React.createElement(ContentElementEditorCommandSubscriptionProvider, {
173
- emitter: contentElementEditorCommandEmitter
174
- },
175
- /*#__PURE__*/
176
- React.createElement(DndProvider, {
177
- backend: HTML5Backend
178
- }, props.children)))
179
- );
157
+ return /*#__PURE__*/React.createElement(EditorStateProvider, null, /*#__PURE__*/React.createElement(MessageHandler, {
158
+ contentElementEditorCommandEmitter: contentElementEditorCommandEmitter
159
+ }), /*#__PURE__*/React.createElement(ScrollPointMessageHandler, null), /*#__PURE__*/React.createElement(ContentElementEditorCommandSubscriptionProvider, {
160
+ emitter: contentElementEditorCommandEmitter
161
+ }, /*#__PURE__*/React.createElement(DndProvider, {
162
+ backend: HTML5Backend
163
+ }, props.children)));
180
164
  }
181
165
 
182
166
  function MessageHandler(_ref) {
@@ -217,33 +201,25 @@ function Toolbar(_ref) {
217
201
  onButtonClick = _ref.onButtonClick,
218
202
  iconSize = _ref.iconSize,
219
203
  collapsible = _ref.collapsible;
220
- return (
221
- /*#__PURE__*/
222
- React.createElement("div", {
223
- className: classNames(styles$2.Toolbar, _defineProperty({}, styles$2.collapsible, collapsible)),
224
- contentEditable: false
225
- }, buttons.map(function (button) {
226
- var Icon = button.icon;
227
- return (
228
- /*#__PURE__*/
229
- React.createElement("button", {
230
- key: button.name,
231
- title: button.text,
232
- className: classNames(styles$2.button, _defineProperty({}, styles$2.activeButton, button.active)),
233
- onMouseDown: function onMouseDown(event) {
234
- event.preventDefault();
235
- event.stopPropagation();
236
- onButtonClick(button.name);
237
- }
238
- },
239
- /*#__PURE__*/
240
- React.createElement(Icon, {
241
- width: iconSize,
242
- height: iconSize
243
- }))
244
- );
245
- }))
246
- );
204
+ return /*#__PURE__*/React.createElement("div", {
205
+ className: classNames(styles$2.Toolbar, _defineProperty({}, styles$2.collapsible, collapsible)),
206
+ contentEditable: false
207
+ }, buttons.map(function (button) {
208
+ var Icon = button.icon;
209
+ return /*#__PURE__*/React.createElement("button", {
210
+ key: button.name,
211
+ title: button.text,
212
+ className: classNames(styles$2.button, _defineProperty({}, styles$2.activeButton, button.active)),
213
+ onMouseDown: function onMouseDown(event) {
214
+ event.preventDefault();
215
+ event.stopPropagation();
216
+ onButtonClick(button.name);
217
+ }
218
+ }, /*#__PURE__*/React.createElement(Icon, {
219
+ width: iconSize,
220
+ height: iconSize
221
+ }));
222
+ }));
247
223
  }
248
224
  Toolbar.defaultProps = {
249
225
  iconSize: 15
@@ -271,27 +247,31 @@ var transitionIcon = (function (_ref) {
271
247
  styles = _ref$styles === void 0 ? {} : _ref$styles,
272
248
  props = _objectWithoutProperties(_ref, ["styles"]);
273
249
 
274
- return React.createElement("svg", _extends({
250
+ return /*#__PURE__*/React.createElement("svg", _extends({
275
251
  "aria-hidden": "true",
276
252
  "data-prefix": "fas",
277
253
  "data-icon": "random",
278
254
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-random"] || "fa-random") + " " + (styles["fa-w-16"] || "fa-w-16"),
279
255
  xmlns: "http://www.w3.org/2000/svg",
280
256
  viewBox: "0 0 512 512"
281
- }, props), React.createElement("path", {
257
+ }, props), /*#__PURE__*/React.createElement("path", {
282
258
  fill: "currentColor",
283
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"
284
260
  }));
285
261
  });
286
262
 
287
- function SectionDecorator(props) {
263
+ function SectionDecorator(_ref) {
264
+ var section = _ref.section,
265
+ contentElements = _ref.contentElements,
266
+ children = _ref.children;
267
+
288
268
  var _useI18n = useI18n({
289
269
  locale: 'ui'
290
270
  }),
291
271
  t = _useI18n.t;
292
272
 
293
273
  var _useEditorSelection = useEditorSelection({
294
- id: props.id,
274
+ id: section.id,
295
275
  type: 'sectionSettings'
296
276
  }),
297
277
  isSelected = _useEditorSelection.isSelected,
@@ -299,14 +279,14 @@ function SectionDecorator(props) {
299
279
  resetSelection = _useEditorSelection.resetSelection;
300
280
 
301
281
  var transitionSelection = useEditorSelection({
302
- id: props.id,
282
+ id: section.id,
303
283
  type: 'sectionTransition'
304
284
  });
305
285
  var nextTransitionSelection = useEditorSelection({
306
- id: props.nextSection && props.nextSection.id,
286
+ id: section.nextSection && section.nextSection.id,
307
287
  type: 'sectionTransition'
308
288
  });
309
- var lastContentElement = props.contentElements[props.contentElements.length - 1];
289
+ var lastContentElement = contentElements[contentElements.length - 1];
310
290
 
311
291
  var _useEditorSelection2 = useEditorSelection({
312
292
  id: lastContentElement && lastContentElement.id,
@@ -320,34 +300,25 @@ function SectionDecorator(props) {
320
300
  }
321
301
  }
322
302
 
323
- return (
324
- /*#__PURE__*/
325
- React.createElement("div", {
326
- "aria-label": t('pageflow_scrolled.inline_editing.select_section'),
327
- className: className(isSelected, transitionSelection),
328
- onMouseDown: selectIfOutsideContentItem
329
- },
330
- /*#__PURE__*/
331
- React.createElement("div", {
332
- className: styles.controls
333
- }, renderEditTransitionButton({
334
- id: props.previousSection && props.id,
335
- selection: transitionSelection,
336
- position: 'before'
337
- }), renderEditTransitionButton({
338
- id: props.nextSection && props.nextSection.id,
339
- selection: nextTransitionSelection,
340
- position: 'after'
341
- })),
342
- /*#__PURE__*/
343
- React.createElement(MotifAreaVisibilityProvider, {
344
- visible: isSelected
345
- },
346
- /*#__PURE__*/
347
- React.createElement(ForcePaddingContext.Provider, {
348
- value: isLastContentElementSelected || isSelected
349
- }, props.children)))
350
- );
303
+ return /*#__PURE__*/React.createElement("div", {
304
+ "aria-label": t('pageflow_scrolled.inline_editing.select_section'),
305
+ className: className(isSelected, transitionSelection),
306
+ onMouseDown: selectIfOutsideContentItem
307
+ }, /*#__PURE__*/React.createElement("div", {
308
+ className: styles.controls
309
+ }, renderEditTransitionButton({
310
+ id: section.previousSection && section.id,
311
+ selection: transitionSelection,
312
+ position: 'before'
313
+ }), renderEditTransitionButton({
314
+ id: section.nextSection && section.nextSection.id,
315
+ selection: nextTransitionSelection,
316
+ position: 'after'
317
+ })), /*#__PURE__*/React.createElement(MotifAreaVisibilityProvider, {
318
+ visible: isSelected
319
+ }, /*#__PURE__*/React.createElement(ForcePaddingContext.Provider, {
320
+ value: isLastContentElementSelected || isSelected
321
+ }, children)));
351
322
  }
352
323
 
353
324
  function className(isSectionSelected, transitionSelection) {
@@ -356,70 +327,59 @@ function className(isSectionSelected, transitionSelection) {
356
327
  return classNames(styles.wrapper, (_classNames = {}, _defineProperty(_classNames, styles.selected, isSectionSelected), _defineProperty(_classNames, styles.transitionSelected, transitionSelection.isSelected), _classNames));
357
328
  }
358
329
 
359
- function renderEditTransitionButton(_ref) {
360
- var id = _ref.id,
361
- position = _ref.position,
362
- selection = _ref.selection;
330
+ function renderEditTransitionButton(_ref2) {
331
+ var id = _ref2.id,
332
+ position = _ref2.position,
333
+ selection = _ref2.selection;
363
334
 
364
335
  if (!id) {
365
336
  return null;
366
337
  }
367
338
 
368
- return (
369
- /*#__PURE__*/
370
- React.createElement("div", {
371
- className: styles["transitionToolbar-".concat(position)]
372
- },
373
- /*#__PURE__*/
374
- React.createElement(EditTransitionButton, {
375
- id: id,
376
- selection: selection,
377
- position: position
378
- }))
379
- );
339
+ return /*#__PURE__*/React.createElement("div", {
340
+ className: styles["transitionToolbar-".concat(position)]
341
+ }, /*#__PURE__*/React.createElement(EditTransitionButton, {
342
+ id: id,
343
+ selection: selection,
344
+ position: position
345
+ }));
380
346
  }
381
347
 
382
- function EditTransitionButton(_ref2) {
383
- var id = _ref2.id,
384
- position = _ref2.position,
385
- selection = _ref2.selection;
348
+ function EditTransitionButton(_ref3) {
349
+ var id = _ref3.id,
350
+ position = _ref3.position,
351
+ selection = _ref3.selection;
386
352
 
387
353
  var _useI18n2 = useI18n({
388
354
  locale: 'ui'
389
355
  }),
390
356
  t = _useI18n2.t;
391
357
 
392
- return (
393
- /*#__PURE__*/
394
- React.createElement(EditSectionButton, {
395
- id: id,
396
- selection: selection,
397
- text: t("pageflow_scrolled.inline_editing.edit_section_transition_".concat(position)),
398
- icon: transitionIcon
399
- })
400
- );
358
+ return /*#__PURE__*/React.createElement(EditSectionButton, {
359
+ id: id,
360
+ selection: selection,
361
+ text: t("pageflow_scrolled.inline_editing.edit_section_transition_".concat(position)),
362
+ icon: transitionIcon
363
+ });
401
364
  }
402
365
 
403
- function EditSectionButton(_ref3) {
404
- var id = _ref3.id,
405
- selection = _ref3.selection,
406
- icon = _ref3.icon,
407
- text = _ref3.text;
408
- return (
409
- /*#__PURE__*/
410
- React.createElement(Toolbar, {
411
- buttons: [{
412
- name: 'button',
413
- active: selection.isSelected,
414
- icon: icon,
415
- text: text
416
- }],
417
- iconSize: 20,
418
- onButtonClick: function onButtonClick() {
419
- return selection.select();
420
- }
421
- })
422
- );
366
+ function EditSectionButton(_ref4) {
367
+ var id = _ref4.id,
368
+ selection = _ref4.selection,
369
+ icon = _ref4.icon,
370
+ text = _ref4.text;
371
+ return /*#__PURE__*/React.createElement(Toolbar, {
372
+ buttons: [{
373
+ name: 'button',
374
+ active: selection.isSelected,
375
+ icon: icon,
376
+ text: text
377
+ }],
378
+ iconSize: 20,
379
+ onButtonClick: function onButtonClick() {
380
+ return selection.select();
381
+ }
382
+ });
423
383
  }
424
384
 
425
385
  var styles$3 = {"selectionWidth":"1px","selectionPadding":"-6px","selectionPadding2":"-0.5em","main":"SelectionRect-module_main__3AOhG","draggable":"SelectionRect-module_draggable__3Qp53","full":"SelectionRect-module_full__3tsQF","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"};
@@ -445,10 +405,10 @@ var PlusIcon = (function (_ref) {
445
405
  var _ref$styles = _ref.styles,
446
406
  props = _objectWithoutProperties(_ref, ["styles"]);
447
407
 
448
- return React.createElement("svg", _extends$1({
408
+ return /*#__PURE__*/React.createElement("svg", _extends$1({
449
409
  xmlns: "http://www.w3.org/2000/svg",
450
410
  viewBox: "0 0 512 512"
451
- }, props), React.createElement("path", {
411
+ }, props), /*#__PURE__*/React.createElement("path", {
452
412
  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"
453
413
  }));
454
414
  });
@@ -475,14 +435,14 @@ var MoveIcon = (function (_ref) {
475
435
  styles = _ref$styles === void 0 ? {} : _ref$styles,
476
436
  props = _objectWithoutProperties(_ref, ["styles"]);
477
437
 
478
- return React.createElement("svg", _extends$2({
438
+ return /*#__PURE__*/React.createElement("svg", _extends$2({
479
439
  "aria-hidden": "true",
480
440
  "data-prefix": "fas",
481
441
  "data-icon": "arrows-alt",
482
442
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-arrows-alt"] || "fa-arrows-alt") + " " + (styles["fa-w-16"] || "fa-w-16"),
483
443
  xmlns: "http://www.w3.org/2000/svg",
484
444
  viewBox: "0 0 512 512"
485
- }, props), React.createElement("path", {
445
+ }, props), /*#__PURE__*/React.createElement("path", {
486
446
  fill: "currentColor",
487
447
  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"
488
448
  }));
@@ -491,23 +451,16 @@ var MoveIcon = (function (_ref) {
491
451
  function SelectionRect(props) {
492
452
  var _classNames;
493
453
 
494
- return (
495
- /*#__PURE__*/
496
- React.createElement("div", {
497
- className: classNames(styles$3.main, (_classNames = {}, _defineProperty(_classNames, styles$3.full, props.full), _defineProperty(_classNames, styles$3.selected, props.selected), _defineProperty(_classNames, styles$3.draggable, props.drag), _defineProperty(_classNames, styles$3.start, props.selected && props.start), _defineProperty(_classNames, styles$3.end, props.selected && props.end), _classNames)),
498
- "aria-label": props.ariaLabel,
499
- "data-scrollpoint": props.scrollPoint ? 'selection' : undefined,
500
- onClick: props.onClick
501
- }, renderDragHandle(props), renderToolbar(props),
502
- /*#__PURE__*/
503
- React.createElement(InsertButton, Object.assign({}, props, {
504
- at: "before"
505
- })), props.children,
506
- /*#__PURE__*/
507
- React.createElement(InsertButton, Object.assign({}, props, {
508
- at: "after"
509
- })))
510
- );
454
+ return /*#__PURE__*/React.createElement("div", {
455
+ className: classNames(styles$3.main, (_classNames = {}, _defineProperty(_classNames, styles$3.full, props.full), _defineProperty(_classNames, styles$3.selected, props.selected), _defineProperty(_classNames, styles$3.draggable, props.drag), _defineProperty(_classNames, styles$3.start, props.selected && props.start), _defineProperty(_classNames, styles$3.end, props.selected && props.end), _classNames)),
456
+ "aria-label": props.ariaLabel,
457
+ "data-scrollpoint": props.scrollPoint ? 'selection' : undefined,
458
+ onClick: props.onClick
459
+ }, renderDragHandle(props), renderToolbar(props), /*#__PURE__*/React.createElement(InsertButton, Object.assign({}, props, {
460
+ at: "before"
461
+ })), props.children, /*#__PURE__*/React.createElement(InsertButton, Object.assign({}, props, {
462
+ at: "after"
463
+ })));
511
464
  }
512
465
 
513
466
  function InsertButton(props) {
@@ -516,33 +469,26 @@ function InsertButton(props) {
516
469
  insertHovered = _useState2[0],
517
470
  setInsertHovered = _useState2[1];
518
471
 
519
- return (
520
- /*#__PURE__*/
521
- React.createElement("div", {
522
- className: classNames(styles$3["insert-".concat(props.at)], _defineProperty({}, styles$3.insertHovered, insertHovered)),
523
- contentEditable: false
472
+ return /*#__PURE__*/React.createElement("div", {
473
+ className: classNames(styles$3["insert-".concat(props.at)], _defineProperty({}, styles$3.insertHovered, insertHovered)),
474
+ contentEditable: false
475
+ }, /*#__PURE__*/React.createElement("button", {
476
+ className: styles$3.insertButton,
477
+ title: props.insertButtonTitles && props.insertButtonTitles[props.at],
478
+ onClick: function onClick() {
479
+ return props.onInsertButtonClick(props.at);
524
480
  },
525
- /*#__PURE__*/
526
- React.createElement("button", {
527
- className: styles$3.insertButton,
528
- title: props.insertButtonTitles && props.insertButtonTitles[props.at],
529
- onClick: function onClick() {
530
- return props.onInsertButtonClick(props.at);
531
- },
532
- onMouseEnter: function onMouseEnter() {
533
- return setInsertHovered(true);
534
- },
535
- onMouseLeave: function onMouseLeave() {
536
- return setInsertHovered(false);
537
- }
481
+ onMouseEnter: function onMouseEnter() {
482
+ return setInsertHovered(true);
538
483
  },
539
- /*#__PURE__*/
540
- React.createElement(PlusIcon, {
541
- width: 15,
542
- height: 15,
543
- fill: "currentColor"
544
- })))
545
- );
484
+ onMouseLeave: function onMouseLeave() {
485
+ return setInsertHovered(false);
486
+ }
487
+ }, /*#__PURE__*/React.createElement(PlusIcon, {
488
+ width: 15,
489
+ height: 15,
490
+ fill: "currentColor"
491
+ })));
546
492
  }
547
493
 
548
494
  function renderDragHandle(_ref) {
@@ -553,16 +499,11 @@ function renderDragHandle(_ref) {
553
499
  return null;
554
500
  }
555
501
 
556
- return (
557
- /*#__PURE__*/
558
- React.createElement("div", {
559
- ref: drag,
560
- className: styles$3.dragHandle,
561
- title: dragHandleTitle
562
- },
563
- /*#__PURE__*/
564
- React.createElement(MoveIcon, null))
565
- );
502
+ return /*#__PURE__*/React.createElement("div", {
503
+ ref: drag,
504
+ className: styles$3.dragHandle,
505
+ title: dragHandleTitle
506
+ }, /*#__PURE__*/React.createElement(MoveIcon, null));
566
507
  }
567
508
 
568
509
  function renderToolbar(_ref2) {
@@ -571,18 +512,13 @@ function renderToolbar(_ref2) {
571
512
  start = _ref2.start;
572
513
 
573
514
  if (toolbarButtons && start) {
574
- return (
575
- /*#__PURE__*/
576
- React.createElement("div", {
577
- className: styles$3.toolbar
578
- },
579
- /*#__PURE__*/
580
- React.createElement(Toolbar, {
581
- buttons: toolbarButtons,
582
- collapsible: true,
583
- onButtonClick: onToolbarButtonClick
584
- }))
585
- );
515
+ return /*#__PURE__*/React.createElement("div", {
516
+ className: styles$3.toolbar
517
+ }, /*#__PURE__*/React.createElement(Toolbar, {
518
+ buttons: toolbarButtons,
519
+ collapsible: true,
520
+ onButtonClick: onToolbarButtonClick
521
+ }));
586
522
  }
587
523
  }
588
524
 
@@ -615,7 +551,8 @@ function DropTargets(_ref) {
615
551
  drop: function drop(item) {
616
552
  return onDrop({
617
553
  at: 'before',
618
- id: item.id
554
+ id: item.id,
555
+ range: item.range
619
556
  });
620
557
  }
621
558
  }),
@@ -642,7 +579,8 @@ function DropTargets(_ref) {
642
579
  drop: function drop(item) {
643
580
  return onDrop({
644
581
  at: 'after',
645
- id: item.id
582
+ id: item.id,
583
+ range: item.range
646
584
  });
647
585
  }
648
586
  }),
@@ -652,23 +590,16 @@ function DropTargets(_ref) {
652
590
  isAfter = _useDrop4$.isAfter,
653
591
  dropAfter = _useDrop4[1];
654
592
 
655
- return (
656
- /*#__PURE__*/
657
- React.createElement(React.Fragment, null, canDropBefore &&
658
- /*#__PURE__*/
659
- React.createElement("div", {
660
- ref: dropBefore,
661
- "data-testid": "drop-before",
662
- className: classNames(styles$4.before, _defineProperty({}, styles$4.isOver, isBefore))
663
- }), canDropAfter &&
664
- /*#__PURE__*/
665
- React.createElement("div", {
666
- ref: dropAfter,
667
- "data-testid": "drop-after",
668
- title: "bar",
669
- className: classNames(styles$4.after, _defineProperty({}, styles$4.isOver, isAfter))
670
- }))
671
- );
593
+ return /*#__PURE__*/React.createElement(React.Fragment, null, canDropBefore && /*#__PURE__*/React.createElement("div", {
594
+ ref: dropBefore,
595
+ "data-testid": "drop-before",
596
+ className: classNames(styles$4.before, _defineProperty({}, styles$4.isOver, isBefore))
597
+ }), canDropAfter && /*#__PURE__*/React.createElement("div", {
598
+ ref: dropAfter,
599
+ "data-testid": "drop-after",
600
+ title: "bar",
601
+ className: classNames(styles$4.after, _defineProperty({}, styles$4.isOver, isAfter))
602
+ }));
672
603
  }
673
604
 
674
605
  function postInsertContentElementMessage(_ref) {
@@ -686,11 +617,13 @@ function postInsertContentElementMessage(_ref) {
686
617
  }
687
618
  function postMoveContentElementMessage(_ref2) {
688
619
  var id = _ref2.id,
620
+ range = _ref2.range,
689
621
  to = _ref2.to;
690
622
  window.parent.postMessage({
691
623
  type: 'MOVE_CONTENT_ELEMENT',
692
624
  payload: {
693
625
  id: id,
626
+ range: range,
694
627
  to: to
695
628
  }
696
629
  }, window.location.origin);
@@ -734,12 +667,9 @@ function ContentElementConfigurationUpdateProvider(_ref) {
734
667
  configuration: configuration
735
668
  });
736
669
  }, [dispatch, permaId, id]);
737
- return (
738
- /*#__PURE__*/
739
- React.createElement(ContentElementConfigurationUpdateContext.Provider, {
740
- value: update
741
- }, children)
742
- );
670
+ return /*#__PURE__*/React.createElement(ContentElementConfigurationUpdateContext.Provider, {
671
+ value: update
672
+ }, children);
743
673
  }
744
674
 
745
675
  function ContentElementEditorStateProvider(_ref) {
@@ -751,7 +681,8 @@ function ContentElementEditorStateProvider(_ref) {
751
681
  type: 'contentElement'
752
682
  }),
753
683
  isSelected = _useEditorSelection.isSelected,
754
- select = _useEditorSelection.select;
684
+ select = _useEditorSelection.select,
685
+ range = _useEditorSelection.range;
755
686
 
756
687
  var previousTransientState = useRef({});
757
688
  var setTransientState = useCallback(function (state) {
@@ -768,15 +699,13 @@ function ContentElementEditorStateProvider(_ref) {
768
699
  isEditable: true,
769
700
  select: select,
770
701
  isSelected: isSelected,
702
+ range: range,
771
703
  setTransientState: setTransientState
772
704
  };
773
- }, [select, isSelected, setTransientState]);
774
- return (
775
- /*#__PURE__*/
776
- React.createElement(ContentElementEditorStateContext.Provider, {
777
- value: value
778
- }, children)
779
- );
705
+ }, [select, isSelected, range, setTransientState]);
706
+ return /*#__PURE__*/React.createElement(ContentElementEditorStateContext.Provider, {
707
+ value: value
708
+ }, children);
780
709
  }
781
710
 
782
711
  function shallowEqual(obj1, obj2) {
@@ -786,24 +715,15 @@ function shallowEqual(obj1, obj2) {
786
715
  }
787
716
 
788
717
  function ContentElementDecorator(props) {
789
- return (
790
- /*#__PURE__*/
791
- React.createElement("div", {
792
- className: styles$1.wrapper,
793
- "data-scrollpoint": props.id
794
- },
795
- /*#__PURE__*/
796
- React.createElement(ContentElementEditorStateProvider, {
797
- id: props.id
798
- },
799
- /*#__PURE__*/
800
- React.createElement(OptionalSelectionRect, props,
801
- /*#__PURE__*/
802
- React.createElement(ContentElementConfigurationUpdateProvider, {
803
- id: props.id,
804
- permaId: props.permaId
805
- }, props.children))))
806
- );
718
+ return /*#__PURE__*/React.createElement("div", {
719
+ className: styles$1.wrapper,
720
+ "data-scrollpoint": props.id
721
+ }, /*#__PURE__*/React.createElement(ContentElementEditorStateProvider, {
722
+ id: props.id
723
+ }, /*#__PURE__*/React.createElement(OptionalSelectionRect, props, /*#__PURE__*/React.createElement(ContentElementConfigurationUpdateProvider, {
724
+ id: props.id,
725
+ permaId: props.permaId
726
+ }, props.children))));
807
727
  }
808
728
 
809
729
  function OptionalSelectionRect(props) {
@@ -813,10 +733,7 @@ function OptionalSelectionRect(props) {
813
733
  if (customSelectionRect) {
814
734
  return props.children;
815
735
  } else {
816
- return (
817
- /*#__PURE__*/
818
- React.createElement(DefaultSelectionRect, props, props.children)
819
- );
736
+ return /*#__PURE__*/React.createElement(DefaultSelectionRect, props, props.children);
820
737
  }
821
738
  }
822
739
 
@@ -840,50 +757,45 @@ function DefaultSelectionRect(props) {
840
757
  drag = _useDrag2[1],
841
758
  preview = _useDrag2[2];
842
759
 
843
- return (
844
- /*#__PURE__*/
845
- React.createElement(SelectionRect, {
846
- selected: isSelected,
847
- scrollPoint: isSelected,
848
- drag: drag,
849
- dragHandleTitle: t('pageflow_scrolled.inline_editing.drag_content_element'),
850
- full: props.position === 'full',
851
- ariaLabel: t('pageflow_scrolled.inline_editing.select_content_element'),
852
- insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
853
- onClick: function onClick() {
854
- return select();
855
- },
856
- onInsertButtonClick: function onInsertButtonClick(at) {
857
- return postInsertContentElementMessage({
760
+ return /*#__PURE__*/React.createElement(SelectionRect, {
761
+ selected: isSelected,
762
+ scrollPoint: isSelected,
763
+ drag: drag,
764
+ dragHandleTitle: t('pageflow_scrolled.inline_editing.drag_content_element'),
765
+ full: props.position === 'full',
766
+ ariaLabel: t('pageflow_scrolled.inline_editing.select_content_element'),
767
+ insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
768
+ onClick: function onClick() {
769
+ return select();
770
+ },
771
+ onInsertButtonClick: function onInsertButtonClick(at) {
772
+ return postInsertContentElementMessage({
773
+ id: props.id,
774
+ at: at
775
+ });
776
+ }
777
+ }, /*#__PURE__*/React.createElement("div", {
778
+ ref: preview
779
+ }, props.children), /*#__PURE__*/React.createElement(DropTargets, {
780
+ accept: "contentElement",
781
+ canDrop: function canDrop(_ref2) {
782
+ var id = _ref2.id;
783
+ return id !== props.id;
784
+ },
785
+ onDrop: function onDrop(_ref3) {
786
+ var id = _ref3.id,
787
+ range = _ref3.range,
788
+ at = _ref3.at;
789
+ return postMoveContentElementMessage({
790
+ id: id,
791
+ range: range,
792
+ to: {
858
793
  id: props.id,
859
794
  at: at
860
- });
861
- }
862
- },
863
- /*#__PURE__*/
864
- React.createElement("div", {
865
- ref: preview
866
- }, props.children),
867
- /*#__PURE__*/
868
- React.createElement(DropTargets, {
869
- accept: "contentElement",
870
- canDrop: function canDrop(_ref2) {
871
- var id = _ref2.id;
872
- return id !== props.id;
873
- },
874
- onDrop: function onDrop(_ref3) {
875
- var id = _ref3.id,
876
- at = _ref3.at;
877
- return postMoveContentElementMessage({
878
- id: id,
879
- to: {
880
- id: props.id,
881
- at: at
882
- }
883
- });
884
- }
885
- }))
886
- );
795
+ }
796
+ });
797
+ }
798
+ }));
887
799
  }
888
800
 
889
801
  var styles$5 = {"container":"ContentElementInsertButton-module_container__3dvUS","hovered":"ContentElementInsertButton-module_hovered__3Pggi","button":"ContentElementInsertButton-module_button__2-eE2"};
@@ -901,33 +813,26 @@ function ContentElementInsertButton(_ref) {
901
813
  }),
902
814
  t = _useI18n.t;
903
815
 
904
- return (
905
- /*#__PURE__*/
906
- React.createElement("div", {
907
- className: classNames(styles$5.container, _defineProperty({}, styles$5.hovered, hovered))
816
+ return /*#__PURE__*/React.createElement("div", {
817
+ className: classNames(styles$5.container, _defineProperty({}, styles$5.hovered, hovered))
818
+ }, /*#__PURE__*/React.createElement("button", {
819
+ className: styles$5.button,
820
+ title: t('pageflow_scrolled.inline_editing.add_content_element'),
821
+ onClick: onClick,
822
+ onMouseDown: function onMouseDown(event) {
823
+ return event.stopPropagation();
908
824
  },
909
- /*#__PURE__*/
910
- React.createElement("button", {
911
- className: styles$5.button,
912
- title: t('pageflow_scrolled.inline_editing.add_content_element'),
913
- onClick: onClick,
914
- onMouseDown: function onMouseDown(event) {
915
- return event.stopPropagation();
916
- },
917
- onMouseEnter: function onMouseEnter() {
918
- return setHovered(true);
919
- },
920
- onMouseLeave: function onMouseLeave() {
921
- return setHovered(false);
922
- }
825
+ onMouseEnter: function onMouseEnter() {
826
+ return setHovered(true);
923
827
  },
924
- /*#__PURE__*/
925
- React.createElement(PlusIcon, {
926
- width: 15,
927
- height: 15,
928
- fill: "currentColor"
929
- })))
930
- );
828
+ onMouseLeave: function onMouseLeave() {
829
+ return setHovered(false);
830
+ }
831
+ }, /*#__PURE__*/React.createElement(PlusIcon, {
832
+ width: 15,
833
+ height: 15,
834
+ fill: "currentColor"
835
+ })));
931
836
  }
932
837
 
933
838
  function LayoutWithPlaceholder(props) {
@@ -943,9 +848,7 @@ function LayoutWithPlaceholder(props) {
943
848
  }),
944
849
  settingsSelected = _useEditorSelection2.isSelected;
945
850
 
946
- var placeholder = isSelected || settingsSelected ?
947
- /*#__PURE__*/
948
- React.createElement(ContentElementInsertButton, {
851
+ var placeholder = isSelected || settingsSelected ? /*#__PURE__*/React.createElement(ContentElementInsertButton, {
949
852
  onClick: function onClick() {
950
853
  return postInsertContentElementMessage({
951
854
  at: 'endOfSection',
@@ -953,12 +856,9 @@ function LayoutWithPlaceholder(props) {
953
856
  });
954
857
  }
955
858
  }) : null;
956
- return (
957
- /*#__PURE__*/
958
- React.createElement(LayoutWithoutInlineEditing, Object.assign({}, props, {
959
- placeholder: placeholder
960
- }))
961
- );
859
+ return /*#__PURE__*/React.createElement(LayoutWithoutInlineEditing, Object.assign({}, props, {
860
+ placeholder: placeholder
861
+ }));
962
862
  }
963
863
 
964
864
  function useCachedValue(value) {
@@ -1028,14 +928,9 @@ function TextPlaceholder(_ref) {
1028
928
  return null;
1029
929
  }
1030
930
 
1031
- return (
1032
- /*#__PURE__*/
1033
- React.createElement("div", {
1034
- className: styles$6.placeholder
1035
- },
1036
- /*#__PURE__*/
1037
- React.createElement("div", null, text))
1038
- );
931
+ return /*#__PURE__*/React.createElement("div", {
932
+ className: styles$6.placeholder
933
+ }, /*#__PURE__*/React.createElement("div", null, text));
1039
934
  }
1040
935
 
1041
936
  function withCustomInsertBreak(editor) {
@@ -1098,14 +993,14 @@ var ExternalLinkIcon = (function (_ref) {
1098
993
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1099
994
  props = _objectWithoutProperties(_ref, ["styles"]);
1100
995
 
1101
- return React.createElement("svg", _extends$3({
996
+ return /*#__PURE__*/React.createElement("svg", _extends$3({
1102
997
  "aria-hidden": "true",
1103
998
  "data-prefix": "fas",
1104
999
  "data-icon": "external-link-alt",
1105
1000
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-external-link-alt"] || "fa-external-link-alt") + " " + (styles["fa-w-16"] || "fa-w-16"),
1106
1001
  xmlns: "http://www.w3.org/2000/svg",
1107
1002
  viewBox: "0 0 512 512"
1108
- }, props), React.createElement("path", {
1003
+ }, props), /*#__PURE__*/React.createElement("path", {
1109
1004
  fill: "currentColor",
1110
1005
  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"
1111
1006
  }));
@@ -1152,26 +1047,15 @@ function LinkTooltipProvider(_ref) {
1152
1047
  }
1153
1048
  };
1154
1049
  }, []);
1155
- return (
1156
- /*#__PURE__*/
1157
- React.createElement(DisabledContext.Provider, {
1158
- value: disabled
1159
- },
1160
- /*#__PURE__*/
1161
- React.createElement(StateContext.Provider, {
1162
- value: state
1163
- },
1164
- /*#__PURE__*/
1165
- React.createElement(UpdateContext.Provider, {
1166
- value: update
1167
- },
1168
- /*#__PURE__*/
1169
- React.createElement("div", {
1170
- ref: outerRef
1171
- },
1172
- /*#__PURE__*/
1173
- React.createElement(LinkTooltip, null), children))))
1174
- );
1050
+ return /*#__PURE__*/React.createElement(DisabledContext.Provider, {
1051
+ value: disabled
1052
+ }, /*#__PURE__*/React.createElement(StateContext.Provider, {
1053
+ value: state
1054
+ }, /*#__PURE__*/React.createElement(UpdateContext.Provider, {
1055
+ value: update
1056
+ }, /*#__PURE__*/React.createElement("div", {
1057
+ ref: outerRef
1058
+ }, /*#__PURE__*/React.createElement(LinkTooltip, null), children))));
1175
1059
  }
1176
1060
  function LinkPreview(_ref2) {
1177
1061
  var href = _ref2.href,
@@ -1182,17 +1066,14 @@ function LinkPreview(_ref2) {
1182
1066
  deactivate = _useContext.deactivate;
1183
1067
 
1184
1068
  var ref = useRef();
1185
- return (
1186
- /*#__PURE__*/
1187
- React.createElement("span", {
1188
- ref: ref,
1189
- onMouseEnter: function onMouseEnter() {
1190
- return activate(href, ref);
1191
- },
1192
- onMouseLeave: deactivate,
1193
- onMouseDown: deactivate
1194
- }, children)
1195
- );
1069
+ return /*#__PURE__*/React.createElement("span", {
1070
+ ref: ref,
1071
+ onMouseEnter: function onMouseEnter() {
1072
+ return activate(href, ref);
1073
+ },
1074
+ onMouseLeave: deactivate,
1075
+ onMouseDown: deactivate
1076
+ }, children);
1196
1077
  }
1197
1078
  function LinkTooltip() {
1198
1079
  var disabled = useContext(DisabledContext);
@@ -1208,30 +1089,23 @@ function LinkTooltip() {
1208
1089
  return null;
1209
1090
  }
1210
1091
 
1211
- return (
1212
- /*#__PURE__*/
1213
- React.createElement("div", {
1214
- className: classNames(styles$7.linkTooltip, styles$7.hoveringToolbar),
1215
- onMouseEnter: keep,
1216
- onMouseLeave: deactivate,
1217
- style: {
1218
- top: state.top,
1219
- left: state.left,
1220
- opacity: 1
1221
- }
1222
- },
1223
- /*#__PURE__*/
1224
- React.createElement("a", {
1225
- href: state.href,
1226
- target: "_blank",
1227
- rel: "noopener noreferrer"
1228
- }, state.href,
1229
- /*#__PURE__*/
1230
- React.createElement(ExternalLinkIcon, {
1231
- width: 10,
1232
- height: 10
1233
- })))
1234
- );
1092
+ return /*#__PURE__*/React.createElement("div", {
1093
+ className: classNames(styles$7.linkTooltip, styles$7.hoveringToolbar),
1094
+ onMouseEnter: keep,
1095
+ onMouseLeave: deactivate,
1096
+ style: {
1097
+ top: state.top,
1098
+ left: state.left,
1099
+ opacity: 1
1100
+ }
1101
+ }, /*#__PURE__*/React.createElement("a", {
1102
+ href: state.href,
1103
+ target: "_blank",
1104
+ rel: "noopener noreferrer"
1105
+ }, state.href, /*#__PURE__*/React.createElement(ExternalLinkIcon, {
1106
+ width: 10,
1107
+ height: 10
1108
+ })));
1235
1109
  }
1236
1110
 
1237
1111
  function withLinks(editor) {
@@ -1245,29 +1119,23 @@ function withLinks(editor) {
1245
1119
  }
1246
1120
  function renderElementWithLinkPreview(options) {
1247
1121
  if (options.element.type === 'link') {
1248
- return (
1249
- /*#__PURE__*/
1250
- React.createElement(LinkPreview, {
1251
- href: options.element.href
1252
- }, renderElement(options))
1253
- );
1122
+ return /*#__PURE__*/React.createElement(LinkPreview, {
1123
+ href: options.element.href
1124
+ }, renderElement(options));
1254
1125
  } else {
1255
1126
  return renderElement(options);
1256
1127
  }
1257
1128
  }
1258
1129
  function renderLeafWithLinkSelection(options) {
1259
1130
  if (options.leaf.linkSelection) {
1260
- return (
1261
- /*#__PURE__*/
1262
- React.createElement("span", Object.assign({}, options.attributes, {
1263
- style: {
1264
- backgroundColor: '#aaa'
1265
- }
1266
- }), renderLeaf(options))
1267
- );
1131
+ return /*#__PURE__*/React.createElement("span", Object.assign({}, options.attributes, {
1132
+ style: {
1133
+ backgroundColor: '#aaa'
1134
+ }
1135
+ }), renderLeaf$1(options));
1268
1136
  }
1269
1137
 
1270
- return renderLeaf(options);
1138
+ return renderLeaf$1(options);
1271
1139
  }
1272
1140
  function decorateLinkSelection(_ref, linkSelection) {
1273
1141
  var _ref2 = _slicedToArray(_ref, 2),
@@ -1360,14 +1228,14 @@ var CancelIcon = (function (_ref) {
1360
1228
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1361
1229
  props = _objectWithoutProperties(_ref, ["styles"]);
1362
1230
 
1363
- return React.createElement("svg", _extends$4({
1231
+ return /*#__PURE__*/React.createElement("svg", _extends$4({
1364
1232
  "aria-hidden": "true",
1365
1233
  "data-prefix": "fas",
1366
1234
  "data-icon": "times",
1367
1235
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-times"] || "fa-times") + " " + (styles["fa-w-11"] || "fa-w-11"),
1368
1236
  xmlns: "http://www.w3.org/2000/svg",
1369
1237
  viewBox: "0 0 352 512"
1370
- }, props), React.createElement("path", {
1238
+ }, props), /*#__PURE__*/React.createElement("path", {
1371
1239
  fill: "currentColor",
1372
1240
  d: "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"
1373
1241
  }));
@@ -1411,37 +1279,28 @@ function LinkInput(_ref) {
1411
1279
  }
1412
1280
  }
1413
1281
 
1414
- return (
1415
- /*#__PURE__*/
1416
- React.createElement("div", {
1417
- className: styles$7.linkTooltip
1282
+ return /*#__PURE__*/React.createElement("div", {
1283
+ className: styles$7.linkTooltip
1284
+ }, /*#__PURE__*/React.createElement("input", {
1285
+ ref: ref,
1286
+ type: "text",
1287
+ value: href,
1288
+ placeholder: t('pageflow_scrolled.inline_editing.url_placeholder'),
1289
+ onBlur: submit,
1290
+ onChange: function onChange(e) {
1291
+ return setHref(e.target.value);
1418
1292
  },
1419
- /*#__PURE__*/
1420
- React.createElement("input", {
1421
- ref: ref,
1422
- type: "text",
1423
- value: href,
1424
- placeholder: t('pageflow_scrolled.inline_editing.url_placeholder'),
1425
- onBlur: submit,
1426
- onChange: function onChange(e) {
1427
- return setHref(e.target.value);
1428
- },
1429
- onKeyDown: handleKey
1430
- }),
1431
- /*#__PURE__*/
1432
- React.createElement("button", {
1433
- onMouseDown: function onMouseDown(e) {
1434
- return e.preventDefault();
1435
- },
1436
- onClick: onCancel,
1437
- title: t('pageflow_scrolled.inline_editing.cancel')
1293
+ onKeyDown: handleKey
1294
+ }), /*#__PURE__*/React.createElement("button", {
1295
+ onMouseDown: function onMouseDown(e) {
1296
+ return e.preventDefault();
1438
1297
  },
1439
- /*#__PURE__*/
1440
- React.createElement(CancelIcon, {
1441
- width: 10,
1442
- height: 10
1443
- })))
1444
- );
1298
+ onClick: onCancel,
1299
+ title: t('pageflow_scrolled.inline_editing.cancel')
1300
+ }, /*#__PURE__*/React.createElement(CancelIcon, {
1301
+ width: 10,
1302
+ height: 10
1303
+ })));
1445
1304
  }
1446
1305
 
1447
1306
  function _extends$5() {
@@ -1466,14 +1325,14 @@ var BoldIcon = (function (_ref) {
1466
1325
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1467
1326
  props = _objectWithoutProperties(_ref, ["styles"]);
1468
1327
 
1469
- return React.createElement("svg", _extends$5({
1328
+ return /*#__PURE__*/React.createElement("svg", _extends$5({
1470
1329
  "aria-hidden": "true",
1471
1330
  "data-prefix": "fas",
1472
1331
  "data-icon": "bold",
1473
1332
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-bold"] || "fa-bold") + " " + (styles["fa-w-12"] || "fa-w-12"),
1474
1333
  xmlns: "http://www.w3.org/2000/svg",
1475
1334
  viewBox: "0 0 384 512"
1476
- }, props), React.createElement("path", {
1335
+ }, props), /*#__PURE__*/React.createElement("path", {
1477
1336
  fill: "currentColor",
1478
1337
  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"
1479
1338
  }));
@@ -1501,14 +1360,14 @@ var UnderlineIcon = (function (_ref) {
1501
1360
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1502
1361
  props = _objectWithoutProperties(_ref, ["styles"]);
1503
1362
 
1504
- return React.createElement("svg", _extends$6({
1363
+ return /*#__PURE__*/React.createElement("svg", _extends$6({
1505
1364
  "aria-hidden": "true",
1506
1365
  "data-prefix": "fas",
1507
1366
  "data-icon": "underline",
1508
1367
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-underline"] || "fa-underline") + " " + (styles["fa-w-14"] || "fa-w-14"),
1509
1368
  xmlns: "http://www.w3.org/2000/svg",
1510
1369
  viewBox: "0 0 448 512"
1511
- }, props), React.createElement("path", {
1370
+ }, props), /*#__PURE__*/React.createElement("path", {
1512
1371
  fill: "currentColor",
1513
1372
  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"
1514
1373
  }));
@@ -1536,14 +1395,14 @@ var ItalicIcon = (function (_ref) {
1536
1395
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1537
1396
  props = _objectWithoutProperties(_ref, ["styles"]);
1538
1397
 
1539
- return React.createElement("svg", _extends$7({
1398
+ return /*#__PURE__*/React.createElement("svg", _extends$7({
1540
1399
  "aria-hidden": "true",
1541
1400
  "data-prefix": "fas",
1542
1401
  "data-icon": "italic",
1543
1402
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-italic"] || "fa-italic") + " " + (styles["fa-w-10"] || "fa-w-10"),
1544
1403
  xmlns: "http://www.w3.org/2000/svg",
1545
1404
  viewBox: "0 0 320 512"
1546
- }, props), React.createElement("path", {
1405
+ }, props), /*#__PURE__*/React.createElement("path", {
1547
1406
  fill: "currentColor",
1548
1407
  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"
1549
1408
  }));
@@ -1571,14 +1430,14 @@ var StrikethroughIcon = (function (_ref) {
1571
1430
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1572
1431
  props = _objectWithoutProperties(_ref, ["styles"]);
1573
1432
 
1574
- return React.createElement("svg", _extends$8({
1433
+ return /*#__PURE__*/React.createElement("svg", _extends$8({
1575
1434
  "aria-hidden": "true",
1576
1435
  "data-prefix": "fas",
1577
1436
  "data-icon": "strikethrough",
1578
1437
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-strikethrough"] || "fa-strikethrough") + " " + (styles["fa-w-16"] || "fa-w-16"),
1579
1438
  xmlns: "http://www.w3.org/2000/svg",
1580
1439
  viewBox: "0 0 512 512"
1581
- }, props), React.createElement("path", {
1440
+ }, props), /*#__PURE__*/React.createElement("path", {
1582
1441
  fill: "currentColor",
1583
1442
  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"
1584
1443
  }));
@@ -1606,14 +1465,14 @@ var LinkIcon = (function (_ref) {
1606
1465
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1607
1466
  props = _objectWithoutProperties(_ref, ["styles"]);
1608
1467
 
1609
- return React.createElement("svg", _extends$9({
1468
+ return /*#__PURE__*/React.createElement("svg", _extends$9({
1610
1469
  "aria-hidden": "true",
1611
1470
  "data-prefix": "fas",
1612
1471
  "data-icon": "link",
1613
1472
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-link"] || "fa-link") + " " + (styles["fa-w-16"] || "fa-w-16"),
1614
1473
  xmlns: "http://www.w3.org/2000/svg",
1615
1474
  viewBox: "0 0 512 512"
1616
- }, props), React.createElement("path", {
1475
+ }, props), /*#__PURE__*/React.createElement("path", {
1617
1476
  fill: "currentColor",
1618
1477
  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"
1619
1478
  }));
@@ -1651,17 +1510,12 @@ function HoveringToolbar(_ref) {
1651
1510
  el.style.top = "".concat(rect.bottom - outerRect.top + 10, "px");
1652
1511
  el.style.left = "".concat(rect.left - outerRect.left, "px");
1653
1512
  });
1654
- return (
1655
- /*#__PURE__*/
1656
- React.createElement("div", {
1657
- ref: outerRef
1658
- },
1659
- /*#__PURE__*/
1660
- React.createElement("div", {
1661
- ref: ref,
1662
- className: styles$7.hoveringToolbar
1663
- }, !linkSelection && renderToolbar$1(editor, setLinkSelection, t), linkSelection && renderLinkInput(editor, linkSelection, setLinkSelection)))
1664
- );
1513
+ return /*#__PURE__*/React.createElement("div", {
1514
+ ref: outerRef
1515
+ }, /*#__PURE__*/React.createElement("div", {
1516
+ ref: ref,
1517
+ className: styles$7.hoveringToolbar
1518
+ }, !linkSelection && renderToolbar$1(editor, setLinkSelection, t), linkSelection && renderLinkInput(editor, linkSelection, setLinkSelection)));
1665
1519
  }
1666
1520
 
1667
1521
  function renderToolbar$1(editor, setLinkSelection, t) {
@@ -1690,15 +1544,12 @@ function renderToolbar$1(editor, setLinkSelection, t) {
1690
1544
  active: isButtonActive(editor, button.name)
1691
1545
  });
1692
1546
  });
1693
- return (
1694
- /*#__PURE__*/
1695
- React.createElement(Toolbar, {
1696
- buttons: buttons,
1697
- onButtonClick: function onButtonClick(name) {
1698
- return handleButtonClick(editor, name, setLinkSelection);
1699
- }
1700
- })
1701
- );
1547
+ return /*#__PURE__*/React.createElement(Toolbar, {
1548
+ buttons: buttons,
1549
+ onButtonClick: function onButtonClick(name) {
1550
+ return handleButtonClick(editor, name, setLinkSelection);
1551
+ }
1552
+ });
1702
1553
  }
1703
1554
 
1704
1555
  function handleButtonClick(editor, format, setLinkSelection) {
@@ -1739,13 +1590,10 @@ function renderLinkInput(editor, linkSelection, setLinkSelection) {
1739
1590
  ReactEditor.focus(editor);
1740
1591
  }
1741
1592
 
1742
- return (
1743
- /*#__PURE__*/
1744
- React.createElement(LinkInput, {
1745
- onSubmit: handleSubmit,
1746
- onCancel: handleCancel
1747
- })
1748
- );
1593
+ return /*#__PURE__*/React.createElement(LinkInput, {
1594
+ onSubmit: handleSubmit,
1595
+ onCancel: handleCancel
1596
+ });
1749
1597
  }
1750
1598
 
1751
1599
  function unwrapLink(editor) {
@@ -1797,6 +1645,25 @@ function isMarkActive(editor, format) {
1797
1645
  return marks ? marks[format] === true : false;
1798
1646
  }
1799
1647
 
1648
+ function getUniformSelectedNodeProperty(editor, propertyName) {
1649
+ var currentNodeEntries = _toConsumableArray(Editor.nodes(editor, {
1650
+ match: function match(n) {
1651
+ return !!n.type;
1652
+ },
1653
+ mode: 'highest'
1654
+ }));
1655
+
1656
+ var values = _toConsumableArray(new Set(currentNodeEntries.map(function (_ref) {
1657
+ var _ref2 = _slicedToArray(_ref, 2),
1658
+ node = _ref2[0],
1659
+ path = _ref2[1];
1660
+
1661
+ return node[propertyName];
1662
+ })));
1663
+
1664
+ return values.length === 1 ? values[0] : null;
1665
+ }
1666
+
1800
1667
  function _extends$a() {
1801
1668
  _extends$a = Object.assign || function (target) {
1802
1669
  for (var i = 1; i < arguments.length; i++) {
@@ -1819,14 +1686,14 @@ var TextIcon = (function (_ref) {
1819
1686
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1820
1687
  props = _objectWithoutProperties(_ref, ["styles"]);
1821
1688
 
1822
- return React.createElement("svg", _extends$a({
1689
+ return /*#__PURE__*/React.createElement("svg", _extends$a({
1823
1690
  "aria-hidden": "true",
1824
1691
  "data-prefix": "fas",
1825
1692
  "data-icon": "align-justify",
1826
1693
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-align-justify"] || "fa-align-justify") + " " + (styles["fa-w-14"] || "fa-w-14"),
1827
1694
  xmlns: "http://www.w3.org/2000/svg",
1828
1695
  viewBox: "0 0 448 512"
1829
- }, props), React.createElement("path", {
1696
+ }, props), /*#__PURE__*/React.createElement("path", {
1830
1697
  fill: "currentColor",
1831
1698
  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"
1832
1699
  }));
@@ -1854,14 +1721,14 @@ var HeadingIcon = (function (_ref) {
1854
1721
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1855
1722
  props = _objectWithoutProperties(_ref, ["styles"]);
1856
1723
 
1857
- return React.createElement("svg", _extends$b({
1724
+ return /*#__PURE__*/React.createElement("svg", _extends$b({
1858
1725
  "aria-hidden": "true",
1859
1726
  "data-prefix": "fas",
1860
1727
  "data-icon": "heading",
1861
1728
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-heading"] || "fa-heading") + " " + (styles["fa-w-16"] || "fa-w-16"),
1862
1729
  xmlns: "http://www.w3.org/2000/svg",
1863
1730
  viewBox: "0 0 512 512"
1864
- }, props), React.createElement("path", {
1731
+ }, props), /*#__PURE__*/React.createElement("path", {
1865
1732
  fill: "currentColor",
1866
1733
  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"
1867
1734
  }));
@@ -1889,14 +1756,14 @@ var OlIcon = (function (_ref) {
1889
1756
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1890
1757
  props = _objectWithoutProperties(_ref, ["styles"]);
1891
1758
 
1892
- return React.createElement("svg", _extends$c({
1759
+ return /*#__PURE__*/React.createElement("svg", _extends$c({
1893
1760
  "aria-hidden": "true",
1894
1761
  "data-prefix": "fas",
1895
1762
  "data-icon": "list-ol",
1896
1763
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-list-ol"] || "fa-list-ol") + " " + (styles["fa-w-16"] || "fa-w-16"),
1897
1764
  xmlns: "http://www.w3.org/2000/svg",
1898
1765
  viewBox: "0 0 512 512"
1899
- }, props), React.createElement("path", {
1766
+ }, props), /*#__PURE__*/React.createElement("path", {
1900
1767
  fill: "currentColor",
1901
1768
  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"
1902
1769
  }));
@@ -1924,14 +1791,14 @@ var UlIcon = (function (_ref) {
1924
1791
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1925
1792
  props = _objectWithoutProperties(_ref, ["styles"]);
1926
1793
 
1927
- return React.createElement("svg", _extends$d({
1794
+ return /*#__PURE__*/React.createElement("svg", _extends$d({
1928
1795
  "aria-hidden": "true",
1929
1796
  "data-prefix": "fas",
1930
1797
  "data-icon": "list-ul",
1931
1798
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-list-ul"] || "fa-list-ul") + " " + (styles["fa-w-16"] || "fa-w-16"),
1932
1799
  xmlns: "http://www.w3.org/2000/svg",
1933
1800
  viewBox: "0 0 512 512"
1934
- }, props), React.createElement("path", {
1801
+ }, props), /*#__PURE__*/React.createElement("path", {
1935
1802
  fill: "currentColor",
1936
1803
  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"
1937
1804
  }));
@@ -1959,14 +1826,14 @@ var QuoteIcon = (function (_ref) {
1959
1826
  styles = _ref$styles === void 0 ? {} : _ref$styles,
1960
1827
  props = _objectWithoutProperties(_ref, ["styles"]);
1961
1828
 
1962
- return React.createElement("svg", _extends$e({
1829
+ return /*#__PURE__*/React.createElement("svg", _extends$e({
1963
1830
  "aria-hidden": "true",
1964
1831
  "data-prefix": "fas",
1965
1832
  "data-icon": "quote-right",
1966
1833
  className: (styles["svg-inline--fa"] || "svg-inline--fa") + " " + (styles["fa-quote-right"] || "fa-quote-right") + " " + (styles["fa-w-16"] || "fa-w-16"),
1967
1834
  xmlns: "http://www.w3.org/2000/svg",
1968
1835
  viewBox: "0 0 512 512"
1969
- }, props), React.createElement("path", {
1836
+ }, props), /*#__PURE__*/React.createElement("path", {
1970
1837
  fill: "currentColor",
1971
1838
  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"
1972
1839
  }));
@@ -1984,11 +1851,13 @@ function Selection(props) {
1984
1851
  var outerRef = useRef();
1985
1852
  var innerRef = useRef();
1986
1853
  var boundsRef = useRef();
1854
+ var lastRangeRef = useRef();
1987
1855
 
1988
1856
  var _useContentElementEdi = useContentElementEditorState(),
1989
1857
  setTransientState = _useContentElementEdi.setTransientState,
1990
1858
  select = _useContentElementEdi.select,
1991
- isContentElementSelected = _useContentElementEdi.isSelected;
1859
+ isContentElementSelected = _useContentElementEdi.isSelected,
1860
+ range = _useContentElementEdi.range;
1992
1861
 
1993
1862
  useEffect(function () {
1994
1863
  var selection = editor.selection;
@@ -1997,6 +1866,27 @@ function Selection(props) {
1997
1866
  return;
1998
1867
  }
1999
1868
 
1869
+ if (isContentElementSelected && range && lastRangeRef.current !== range) {
1870
+ lastRangeRef.current = range;
1871
+
1872
+ if (range[1] === range[0] + 1) {
1873
+ Transforms.select(editor, Editor.point(editor, [range[0]], {
1874
+ edge: 'start'
1875
+ }));
1876
+ } else {
1877
+ Transforms.select(editor, {
1878
+ anchor: Editor.point(editor, [range[0]], {
1879
+ edge: 'start'
1880
+ }),
1881
+ focus: Editor.point(editor, [range[1] - 1], {
1882
+ edge: 'end'
1883
+ })
1884
+ });
1885
+ }
1886
+
1887
+ ReactEditor.focus(editor);
1888
+ }
1889
+
2000
1890
  if (!selection) {
2001
1891
  if (boundsRef.current) {
2002
1892
  hideRect(ref.current);
@@ -2008,6 +1898,8 @@ function Selection(props) {
2008
1898
 
2009
1899
  if (!isContentElementSelected && boundsRef.current) {
2010
1900
  hideRect(ref.current);
1901
+ boundsRef.current = null;
1902
+ window.getSelection().removeAllRanges();
2011
1903
  return;
2012
1904
  }
2013
1905
 
@@ -2021,7 +1913,9 @@ function Selection(props) {
2021
1913
  end = _computeBounds2[1];
2022
1914
 
2023
1915
  setTransientState({
2024
- editableTextIsSingleBlock: editor.children.length <= 1
1916
+ editableTextIsSingleBlock: editor.children.length <= 1,
1917
+ currentNodeType: getUniformSelectedNodeProperty(editor, 'type'),
1918
+ typographyVariant: getUniformSelectedNodeProperty(editor, 'variant')
2025
1919
  });
2026
1920
  boundsRef.current = {
2027
1921
  start: start,
@@ -2029,49 +1923,58 @@ function Selection(props) {
2029
1923
  };
2030
1924
  updateRect(editor, start, end, outerRef.current, ref.current, innerRef.current);
2031
1925
  });
2032
- return (
2033
- /*#__PURE__*/
2034
- React.createElement("div", {
2035
- ref: outerRef
2036
- },
2037
- /*#__PURE__*/
2038
- React.createElement("div", {
2039
- ref: ref,
2040
- className: styles$7.selection
1926
+
1927
+ var _useDrag = useDrag({
1928
+ item: {
1929
+ type: 'contentElement',
1930
+ id: props.contentElementId
2041
1931
  },
2042
- /*#__PURE__*/
2043
- React.createElement(SelectionRect, {
2044
- selected: true,
2045
- scrollPoint: isContentElementSelected,
2046
- insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
2047
- onInsertButtonClick: function onInsertButtonClick(at) {
2048
- if (at === 'before' && boundsRef.current.start === 0 || at === 'after' && !Node.has(editor, [boundsRef.current.end + 1])) {
2049
- postInsertContentElementMessage({
2050
- id: props.contentElementId,
2051
- at: at
2052
- });
2053
- } else {
2054
- postInsertContentElementMessage({
2055
- id: props.contentElementId,
2056
- at: 'split',
2057
- splitPoint: at === 'before' ? boundsRef.current.start : boundsRef.current.end + 1
2058
- });
2059
- }
2060
- },
2061
- toolbarButtons: toolbarButtons(t).map(function (button) {
2062
- return _objectSpread2(_objectSpread2({}, button), {}, {
2063
- active: isBlockActive(editor, button.name)
1932
+ begin: function begin() {
1933
+ return {
1934
+ type: 'contentElement',
1935
+ id: props.contentElementId,
1936
+ range: [boundsRef.current.start, boundsRef.current.end + 1]
1937
+ };
1938
+ }
1939
+ }),
1940
+ _useDrag2 = _slicedToArray(_useDrag, 2),
1941
+ drag = _useDrag2[1];
1942
+
1943
+ return /*#__PURE__*/React.createElement("div", {
1944
+ ref: outerRef
1945
+ }, /*#__PURE__*/React.createElement("div", {
1946
+ ref: ref,
1947
+ className: styles$7.selection
1948
+ }, /*#__PURE__*/React.createElement(SelectionRect, {
1949
+ selected: true,
1950
+ drag: drag,
1951
+ scrollPoint: isContentElementSelected,
1952
+ insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
1953
+ onInsertButtonClick: function onInsertButtonClick(at) {
1954
+ if (at === 'before' && boundsRef.current.start === 0 || at === 'after' && !Node.has(editor, [boundsRef.current.end + 1])) {
1955
+ postInsertContentElementMessage({
1956
+ id: props.contentElementId,
1957
+ at: at
1958
+ });
1959
+ } else {
1960
+ postInsertContentElementMessage({
1961
+ id: props.contentElementId,
1962
+ at: 'split',
1963
+ splitPoint: at === 'before' ? boundsRef.current.start : boundsRef.current.end + 1
2064
1964
  });
2065
- }),
2066
- onToolbarButtonClick: function onToolbarButtonClick(name) {
2067
- return toggleBlock(editor, name);
2068
1965
  }
2069
1966
  },
2070
- /*#__PURE__*/
2071
- React.createElement("div", {
2072
- ref: innerRef
2073
- }))))
2074
- );
1967
+ toolbarButtons: toolbarButtons(t).map(function (button) {
1968
+ return _objectSpread2(_objectSpread2({}, button), {}, {
1969
+ active: isBlockActive(editor, button.name)
1970
+ });
1971
+ }),
1972
+ onToolbarButtonClick: function onToolbarButtonClick(name) {
1973
+ return toggleBlock(editor, name);
1974
+ }
1975
+ }, /*#__PURE__*/React.createElement("div", {
1976
+ ref: innerRef
1977
+ }))));
2075
1978
  }
2076
1979
 
2077
1980
  function computeBounds(editor) {
@@ -2197,20 +2100,18 @@ function DropTargets$1(_ref) {
2197
2100
  setTargets(measureHeights(editor, containerRef.current));
2198
2101
  }
2199
2102
  }, [targets, editor]);
2200
- return (
2201
- /*#__PURE__*/
2202
- React.createElement("div", {
2203
- ref: containerRef,
2204
- className: styles$8.container
2205
- }, renderDropTargets(targets || [], contentElementId))
2206
- );
2103
+ return /*#__PURE__*/React.createElement("div", {
2104
+ ref: containerRef,
2105
+ className: styles$8.container
2106
+ }, renderDropTargets(targets || [], contentElementId));
2207
2107
  }
2208
2108
 
2209
2109
  function renderDropTargets(targets, contentElementId) {
2210
- function handleDrop(itemId, index) {
2110
+ function handleDrop(item, index) {
2211
2111
  if (index === 0) {
2212
2112
  postMoveContentElementMessage({
2213
- id: itemId,
2113
+ id: item.id,
2114
+ range: item.range,
2214
2115
  to: {
2215
2116
  at: 'before',
2216
2117
  id: contentElementId
@@ -2218,7 +2119,8 @@ function renderDropTargets(targets, contentElementId) {
2218
2119
  });
2219
2120
  } else if (index === targets.length - 1) {
2220
2121
  postMoveContentElementMessage({
2221
- id: itemId,
2122
+ id: item.id,
2123
+ range: item.range,
2222
2124
  to: {
2223
2125
  at: 'after',
2224
2126
  id: contentElementId
@@ -2226,7 +2128,8 @@ function renderDropTargets(targets, contentElementId) {
2226
2128
  });
2227
2129
  } else {
2228
2130
  postMoveContentElementMessage({
2229
- id: itemId,
2131
+ id: item.id,
2132
+ range: item.range,
2230
2133
  to: {
2231
2134
  at: 'split',
2232
2135
  id: contentElementId,
@@ -2237,20 +2140,18 @@ function renderDropTargets(targets, contentElementId) {
2237
2140
  }
2238
2141
 
2239
2142
  return targets.map(function (target, index) {
2240
- return (
2241
- /*#__PURE__*/
2242
- React.createElement(DropTarget, Object.assign({}, target, {
2243
- key: index,
2244
- onDrop: function onDrop(itemId) {
2245
- return handleDrop(itemId, index);
2246
- }
2247
- }))
2248
- );
2143
+ return /*#__PURE__*/React.createElement(DropTarget, Object.assign({}, target, {
2144
+ key: index,
2145
+ onDrop: function onDrop(item) {
2146
+ return handleDrop(item, index);
2147
+ }
2148
+ }));
2249
2149
  });
2250
2150
  }
2251
2151
 
2252
2152
  function DropTarget(_ref2) {
2253
- var top = _ref2.top,
2153
+ var display = _ref2.display,
2154
+ top = _ref2.top,
2254
2155
  height = _ref2.height,
2255
2156
  indicatorTop = _ref2.indicatorTop,
2256
2157
  onDrop = _ref2.onDrop;
@@ -2263,31 +2164,27 @@ function DropTarget(_ref2) {
2263
2164
  };
2264
2165
  },
2265
2166
  drop: function drop(item) {
2266
- return onDrop(item.id);
2167
+ return onDrop(item);
2267
2168
  }
2268
2169
  }),
2269
2170
  _useDrop2 = _slicedToArray(_useDrop, 2),
2270
2171
  isOver = _useDrop2[0].isOver,
2271
2172
  drop = _useDrop2[1];
2272
2173
 
2273
- return (
2274
- /*#__PURE__*/
2275
- React.createElement("div", {
2276
- ref: drop,
2277
- className: classNames(styles$8.dropTarget, _defineProperty({}, styles$8.isOver, isOver)),
2278
- style: {
2279
- top: top,
2280
- height: height
2281
- }
2282
- },
2283
- /*#__PURE__*/
2284
- React.createElement("div", {
2285
- className: styles$8.dropIndicator,
2286
- style: {
2287
- top: indicatorTop
2288
- }
2289
- }))
2290
- );
2174
+ return /*#__PURE__*/React.createElement("div", {
2175
+ ref: drop,
2176
+ className: classNames(styles$8.dropTarget, _defineProperty({}, styles$8.isOver, isOver)),
2177
+ style: {
2178
+ display: display,
2179
+ top: top,
2180
+ height: height
2181
+ }
2182
+ }, /*#__PURE__*/React.createElement("div", {
2183
+ className: styles$8.dropIndicator,
2184
+ style: {
2185
+ top: indicatorTop
2186
+ }
2187
+ }));
2291
2188
  }
2292
2189
 
2293
2190
  function measureHeights(editor, container) {
@@ -2306,6 +2203,7 @@ function measureHeights(editor, container) {
2306
2203
  var targetDimensions = {
2307
2204
  top: top,
2308
2205
  height: bottom - top,
2206
+ display: editor.selection && Range.includes(editor.selection, [index]) ? 'none' : undefined,
2309
2207
  indicatorTop: index > 0 ? lastRectBottom + (rect.top - lastRectBottom) / 2 - containerRect.top - top : 0
2310
2208
  };
2311
2209
  lastRectBottom = rect.bottom;
@@ -2354,6 +2252,10 @@ var EditableText = React.memo(function EditableText(_ref) {
2354
2252
  Transforms.removeNodes(editor, {
2355
2253
  mode: 'highest'
2356
2254
  });
2255
+ } else if (command.type === 'TRANSIENT_STATE_UPDATE' && 'typographyVariant' in command.payload) {
2256
+ Transforms.setNodes(editor, {
2257
+ variant: command.payload.typographyVariant
2258
+ });
2357
2259
  }
2358
2260
  });
2359
2261
 
@@ -2371,51 +2273,32 @@ var EditableText = React.memo(function EditableText(_ref) {
2371
2273
  return renderLeafWithLinkSelection(options);
2372
2274
  }, [linkSelection]); // eslint-disable-line react-hooks/exhaustive-deps
2373
2275
 
2374
- return (
2375
- /*#__PURE__*/
2376
- React.createElement(Text$1, {
2377
- scaleCategory: "body"
2378
- },
2379
- /*#__PURE__*/
2380
- React.createElement("div", {
2381
- className: styles$7.container,
2382
- ref: ref
2383
- },
2384
- /*#__PURE__*/
2385
- React.createElement(Slate, {
2386
- editor: editor,
2387
- value: cachedValue,
2388
- onChange: setCachedValue
2389
- },
2390
- /*#__PURE__*/
2391
- React.createElement(LinkTooltipProvider, {
2392
- disabled: !!linkSelection
2393
- },
2394
- /*#__PURE__*/
2395
- React.createElement(Selection, {
2396
- contentElementId: contentElementId
2397
- }), dropTargetsActive &&
2398
- /*#__PURE__*/
2399
- React.createElement(DropTargets$1, {
2400
- contentElementId: contentElementId
2401
- }),
2402
- /*#__PURE__*/
2403
- React.createElement(HoveringToolbar, {
2404
- linkSelection: linkSelection,
2405
- setLinkSelection: setLinkSelection
2406
- }),
2407
- /*#__PURE__*/
2408
- React.createElement(Editable, {
2409
- decorate: decorate,
2410
- renderElement: renderElementWithLinkPreview,
2411
- renderLeaf: renderLeaf
2412
- }))),
2413
- /*#__PURE__*/
2414
- React.createElement(TextPlaceholder, {
2415
- text: placeholder,
2416
- visible: isBlank(cachedValue)
2417
- })))
2418
- );
2276
+ return /*#__PURE__*/React.createElement(Text$1, {
2277
+ scaleCategory: "body"
2278
+ }, /*#__PURE__*/React.createElement("div", {
2279
+ className: styles$7.container,
2280
+ ref: ref
2281
+ }, /*#__PURE__*/React.createElement(Slate, {
2282
+ editor: editor,
2283
+ value: cachedValue,
2284
+ onChange: setCachedValue
2285
+ }, /*#__PURE__*/React.createElement(LinkTooltipProvider, {
2286
+ disabled: !!linkSelection
2287
+ }, /*#__PURE__*/React.createElement(Selection, {
2288
+ contentElementId: contentElementId
2289
+ }), dropTargetsActive && /*#__PURE__*/React.createElement(DropTargets$1, {
2290
+ contentElementId: contentElementId
2291
+ }), /*#__PURE__*/React.createElement(HoveringToolbar, {
2292
+ linkSelection: linkSelection,
2293
+ setLinkSelection: setLinkSelection
2294
+ }), /*#__PURE__*/React.createElement(Editable, {
2295
+ decorate: decorate,
2296
+ renderElement: renderElementWithLinkPreview,
2297
+ renderLeaf: renderLeaf
2298
+ }))), /*#__PURE__*/React.createElement(TextPlaceholder, {
2299
+ text: placeholder,
2300
+ visible: isBlank(cachedValue)
2301
+ })));
2419
2302
  });
2420
2303
 
2421
2304
  function isBlank(value) {
@@ -2429,22 +2312,134 @@ function resetSelectionIfOutsideNextValue(editor, nextValue) {
2429
2312
  children: nextValue
2430
2313
  };
2431
2314
 
2432
- if (editor.selection && (!Node.has(nextEditor, editor.selection.anchor.path) || !Node.has(nextEditor, editor.selection.focus.path))) {
2315
+ if (editor.selection && (!hasTextAtPoint(nextEditor, editor.selection.anchor) || !hasTextAtPoint(nextEditor, editor.selection.focus))) {
2433
2316
  Transforms.deselect(editor);
2434
2317
  }
2435
2318
  }
2436
2319
 
2320
+ function hasTextAtPoint(editor, point) {
2321
+ if (!Node.has(editor, point.path)) {
2322
+ return false;
2323
+ }
2324
+
2325
+ var node = Node.get(editor, point.path);
2326
+ return Text.isText(node) && point.offset <= node.text.length;
2327
+ }
2328
+
2329
+ var shy = "\xAD";
2330
+ function useLineBreakHandler(editor) {
2331
+ return useCallback(function (event) {
2332
+ if (event.key !== 'Enter') {
2333
+ return true;
2334
+ }
2335
+
2336
+ if (event.shiftKey === true) {
2337
+ editor.insertText(shy);
2338
+ } else {
2339
+ editor.insertText('\n');
2340
+ }
2341
+
2342
+ return false;
2343
+ }, [editor]);
2344
+ }
2345
+ function decorateLineBreaks(nodeEntry) {
2346
+ return [].concat(_toConsumableArray(decorateCharacter(nodeEntry, shy, {
2347
+ shy: true
2348
+ }, {
2349
+ length: 1
2350
+ })), _toConsumableArray(decorateCharacter(nodeEntry, "\n", {
2351
+ newLine: true
2352
+ }, {
2353
+ length: 0
2354
+ })));
2355
+ }
2356
+
2357
+ function decorateCharacter(_ref, character, attributes, _ref2) {
2358
+ var _ref3 = _slicedToArray(_ref, 2),
2359
+ node = _ref3[0],
2360
+ path = _ref3[1];
2361
+
2362
+ var length = _ref2.length;
2363
+
2364
+ if (Text.isText(node)) {
2365
+ var parts = node.text.split(character);
2366
+ parts.pop();
2367
+ var i = 0;
2368
+ return parts.map(function (part) {
2369
+ i += part.length + 1;
2370
+ return _objectSpread2({
2371
+ anchor: {
2372
+ path: path,
2373
+ offset: i - 1
2374
+ },
2375
+ focus: {
2376
+ path: path,
2377
+ offset: i - 1 + length
2378
+ }
2379
+ }, attributes);
2380
+ });
2381
+ }
2382
+
2383
+ return [];
2384
+ }
2385
+
2386
+ function withLineBreakNormalization(editor) {
2387
+ var normalizeNode = editor.normalizeNode;
2388
+
2389
+ editor.normalizeNode = function (_ref4) {
2390
+ var _ref5 = _slicedToArray(_ref4, 2),
2391
+ node = _ref5[0],
2392
+ path = _ref5[1];
2393
+
2394
+ if (path.length === 0 && editor.children.length > 1) {
2395
+ Transforms.mergeNodes(editor);
2396
+ return;
2397
+ } else if (node.text) {
2398
+ 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)))) {
2399
+ return;
2400
+ }
2401
+ }
2402
+
2403
+ return normalizeNode([node, path]);
2404
+ };
2405
+
2406
+ return editor;
2407
+ }
2408
+
2409
+ function deleteCharacter(editor, node, path, regExp) {
2410
+ var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
2411
+ var match = regExp.exec(node.text);
2412
+
2413
+ if (match) {
2414
+ Transforms["delete"](editor, {
2415
+ at: {
2416
+ path: path,
2417
+ offset: match.index + offset
2418
+ },
2419
+ distance: 1,
2420
+ unit: 'character'
2421
+ });
2422
+ return true;
2423
+ }
2424
+
2425
+ return false;
2426
+ }
2427
+
2428
+ var styles$9 = {"shy":"index-module_shy__1E2-J","newLine":"index-module_newLine__1QnIs","selected":"index-module_selected__1U9ro","manualHyphens":"index-module_manualHyphens__16b2t"};
2429
+
2437
2430
  var EditableInlineText = memo(function EditableInlineText(_ref) {
2438
2431
  var _cachedValue$, _cachedValue$$childre;
2439
2432
 
2440
2433
  var value = _ref.value,
2441
2434
  _ref$defaultValue = _ref.defaultValue,
2442
2435
  defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue,
2436
+ hyphens = _ref.hyphens,
2443
2437
  placeholder = _ref.placeholder,
2444
2438
  onChange = _ref.onChange;
2445
2439
  var editor = useMemo(function () {
2446
- return withSingleLine(withReact(createEditor()));
2440
+ return withLineBreakNormalization(withReact(createEditor()));
2447
2441
  }, []);
2442
+ var handleLineBreaks = useLineBreakHandler(editor);
2448
2443
 
2449
2444
  var _useCachedValue = useCachedValue(value, {
2450
2445
  defaultValue: [{
@@ -2459,43 +2454,44 @@ var EditableInlineText = memo(function EditableInlineText(_ref) {
2459
2454
  cachedValue = _useCachedValue2[0],
2460
2455
  setCachedValue = _useCachedValue2[1];
2461
2456
 
2462
- return (
2463
- /*#__PURE__*/
2464
- React.createElement(React.Fragment, null,
2465
- /*#__PURE__*/
2466
- React.createElement(Slate, {
2467
- editor: editor,
2468
- value: cachedValue,
2469
- onChange: setCachedValue
2470
- },
2471
- /*#__PURE__*/
2472
- React.createElement(Editable, null)),
2473
- /*#__PURE__*/
2474
- React.createElement(TextPlaceholder, {
2475
- text: placeholder,
2476
- 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)
2477
- }))
2478
- );
2457
+ var _useContentElementEdi = useContentElementEditorState(),
2458
+ isSelected = _useContentElementEdi.isSelected;
2459
+
2460
+ return /*#__PURE__*/React.createElement("div", {
2461
+ className: classNames(frontendStyles.root, _defineProperty({}, styles$9.manualHyphens, hyphens === 'manual'), _defineProperty({}, frontendStyles.manualHyphens, hyphens === 'manual'), _defineProperty({}, styles$9.selected, isSelected)),
2462
+ spellCheck: "false"
2463
+ }, /*#__PURE__*/React.createElement(Slate, {
2464
+ editor: editor,
2465
+ value: cachedValue,
2466
+ onChange: setCachedValue
2467
+ }, /*#__PURE__*/React.createElement(Editable, {
2468
+ decorate: decorateLineBreaks,
2469
+ onKeyDown: handleLineBreaks,
2470
+ renderLeaf: renderLeaf
2471
+ })), /*#__PURE__*/React.createElement(TextPlaceholder, {
2472
+ text: placeholder,
2473
+ 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)
2474
+ }));
2479
2475
  });
2480
2476
 
2481
- function withSingleLine(editor) {
2482
- var normalizeNode = editor.normalizeNode;
2483
-
2484
- editor.normalizeNode = function (_ref2) {
2485
- var _ref3 = _slicedToArray(_ref2, 2),
2486
- node = _ref3[0],
2487
- path = _ref3[1];
2477
+ function renderLeaf(_ref2) {
2478
+ var attributes = _ref2.attributes,
2479
+ children = _ref2.children,
2480
+ leaf = _ref2.leaf;
2488
2481
 
2489
- if (path.length === 0) {
2490
- if (editor.children.length > 1) {
2491
- Transforms.mergeNodes(editor);
2492
- }
2493
- }
2482
+ if (leaf.shy) {
2483
+ children = /*#__PURE__*/React.createElement("span", {
2484
+ className: styles$9.shy
2485
+ }, children);
2486
+ }
2494
2487
 
2495
- return normalizeNode([node, path]);
2496
- };
2488
+ if (leaf.newLine) {
2489
+ children = /*#__PURE__*/React.createElement("span", {
2490
+ className: styles$9.newLine
2491
+ }, children);
2492
+ }
2497
2493
 
2498
- return editor;
2494
+ return /*#__PURE__*/React.createElement("span", attributes, children);
2499
2495
  }
2500
2496
 
2501
2497
  function PhonePlatformProvider(_ref) {
@@ -2523,12 +2519,9 @@ function PhonePlatformProvider(_ref) {
2523
2519
  return window.removeEventListener('message', receive);
2524
2520
  };
2525
2521
  });
2526
- return (
2527
- /*#__PURE__*/
2528
- React.createElement(PhonePlatformContext.Provider, {
2529
- value: phoneEmulationMode
2530
- }, children)
2531
- );
2522
+ return /*#__PURE__*/React.createElement(PhonePlatformContext.Provider, {
2523
+ value: phoneEmulationMode
2524
+ }, children);
2532
2525
  }
2533
2526
 
2534
- export { ContentElementDecorator, EditableInlineText, EditableText, EntryDecorator, LayoutWithPlaceholder, PhonePlatformProvider, SectionDecorator };
2527
+ export { ContentDecorator, ContentElementDecorator, EditableInlineText, EditableText, LayoutWithPlaceholder, PhonePlatformProvider, SectionDecorator };