pageflow 15.1.0 → 15.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +92 -161
  3. data/README.md +1 -2
  4. data/admins/pageflow/accounts.rb +94 -19
  5. data/app/assets/javascripts/pageflow/admin/accounts.js +3 -3
  6. data/app/assets/javascripts/pageflow/dist/frontend.js +2 -0
  7. data/app/assets/javascripts/pageflow/dist/ui.js +9 -0
  8. data/app/assets/stylesheets/pageflow/themes/default/logo/variant/background_image.scss +4 -0
  9. data/app/assets/stylesheets/pageflow/themes/default/logo/variant/watermark.scss +5 -0
  10. data/app/controllers/pageflow/editor/widgets_controller.rb +1 -1
  11. data/app/helpers/pageflow/pages_helper.rb +1 -0
  12. data/app/models/pageflow/account.rb +6 -0
  13. data/app/models/pageflow/draft_entry.rb +13 -3
  14. data/app/models/pageflow/entry.rb +8 -1
  15. data/app/models/pageflow/entry_template.rb +55 -0
  16. data/app/models/pageflow/published_entry.rb +13 -3
  17. data/app/models/pageflow/revision.rb +1 -1
  18. data/app/models/pageflow/theming.rb +8 -47
  19. data/app/policies/pageflow/entry_template_policy.rb +18 -0
  20. data/app/policies/pageflow/theming_policy.rb +0 -4
  21. data/app/views/admin/accounts/_configuration_label.html.erb +5 -0
  22. data/app/views/admin/accounts/_entry_template_details.html.arb +17 -0
  23. data/app/views/admin/accounts/_form.html.erb +43 -23
  24. data/app/views/admin/accounts/_share_providers_label.html.erb +5 -0
  25. data/app/views/admin/accounts/_theming_details.html.arb +0 -12
  26. data/app/views/pageflow/themes/_theme.json.jbuilder +1 -0
  27. data/config/locales/de.yml +12 -7
  28. data/config/locales/en.yml +12 -7
  29. data/db/migrate/20200122115400_create_pageflow_entry_templates.rb +75 -0
  30. data/db/migrate/20200206134400_convert_legacy_scrolled_content_element_types.rb +48 -0
  31. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +42 -4
  32. data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +1 -0
  33. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +4 -1
  34. data/entry_types/scrolled/app/helpers/pageflow_scrolled/entry_json_seed_helper.rb +2 -1
  35. data/entry_types/scrolled/app/helpers/pageflow_scrolled/i18n_helper.rb +35 -0
  36. data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +1 -1
  37. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +14 -2
  38. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +10 -1
  39. data/entry_types/scrolled/config/locales/new/de.yml +231 -8
  40. data/entry_types/scrolled/config/locales/new/en.yml +228 -10
  41. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +3 -0
  42. data/entry_types/scrolled/lib/pageflow_scrolled/seeds.rb +9 -4
  43. data/entry_types/scrolled/lib/tasks/pageflow_scrolled_tasks.rake +96 -0
  44. data/entry_types/scrolled/package/contentElements-editor.js +410 -0
  45. data/entry_types/scrolled/package/contentElements-frontend.js +533 -0
  46. data/entry_types/scrolled/package/editor.js +498 -2561
  47. data/entry_types/scrolled/package/frontend.js +713 -1238
  48. data/entry_types/scrolled/package/package.json +12 -2
  49. data/lib/pageflow/ability_mixin.rb +3 -2
  50. data/lib/pageflow/seeds.rb +0 -2
  51. data/lib/pageflow/theme.rb +4 -0
  52. data/lib/pageflow/themes.rb +5 -1
  53. data/lib/pageflow/version.rb +1 -1
  54. data/packages/pageflow/config/jest/index.js +0 -1
  55. data/packages/pageflow/config/jest/transformers/jst.js +1 -1
  56. data/packages/pageflow/config/webpack.js +0 -1
  57. data/packages/pageflow/editor.js +33 -4
  58. data/packages/pageflow/package.json +2 -1
  59. data/packages/pageflow/testHelpers.js +367 -4
  60. data/packages/pageflow/ui.js +9 -0
  61. data/spec/factories/accounts.rb +6 -0
  62. data/spec/factories/entry_templates.rb +8 -0
  63. data/spec/factories/published_entries.rb +3 -1
  64. data/spec/factories/themings.rb +0 -1
  65. metadata +14 -4
  66. data/app/assets/javascripts/pageflow/dist/editor.js +0 -11881
  67. data/app/assets/javascripts/pageflow/dist/index.js +0 -3
@@ -1,6 +1,8 @@
1
1
  import React, { useRef, useLayoutEffect, useEffect, useReducer, useMemo, useContext, useState, useCallback } from 'react';
2
2
  import ReactDOM from 'react-dom';
3
+ import classNames from 'classnames';
3
4
  import ReactTooltip from 'react-tooltip';
5
+ import I18n from 'i18n-js';
4
6
 
5
7
  function _defineProperty(obj, key, value) {
6
8
  if (key in obj) {
@@ -59,61 +61,6 @@ function _slicedToArray(arr, i) {
59
61
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
60
62
  }
61
63
 
62
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
63
-
64
- function createCommonjsModule(fn, module) {
65
- return module = { exports: {} }, fn(module, module.exports), module.exports;
66
- }
67
-
68
- var classnames = createCommonjsModule(function (module) {
69
- /*!
70
- Copyright (c) 2017 Jed Watson.
71
- Licensed under the MIT License (MIT), see
72
- http://jedwatson.github.io/classnames
73
- */
74
- /* global define */
75
-
76
- (function () {
77
-
78
- var hasOwn = {}.hasOwnProperty;
79
-
80
- function classNames () {
81
- var classes = [];
82
-
83
- for (var i = 0; i < arguments.length; i++) {
84
- var arg = arguments[i];
85
- if (!arg) continue;
86
-
87
- var argType = typeof arg;
88
-
89
- if (argType === 'string' || argType === 'number') {
90
- classes.push(arg);
91
- } else if (Array.isArray(arg) && arg.length) {
92
- var inner = classNames.apply(null, arg);
93
- if (inner) {
94
- classes.push(inner);
95
- }
96
- } else if (argType === 'object') {
97
- for (var key in arg) {
98
- if (hasOwn.call(arg, key) && arg[key]) {
99
- classes.push(key);
100
- }
101
- }
102
- }
103
- }
104
-
105
- return classes.join(' ');
106
- }
107
-
108
- if ( module.exports) {
109
- classNames.default = classNames;
110
- module.exports = classNames;
111
- } else {
112
- window.classNames = classNames;
113
- }
114
- }());
115
- });
116
-
117
64
  // from https://github.com/n8tb1t/use-scroll-position
118
65
  var isBrowser = typeof window !== "undefined";
119
66
 
@@ -268,6 +215,9 @@ function reducer(state, action) {
268
215
 
269
216
  function init(items) {
270
217
  var keyAttribute = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'id';
218
+ items = items.filter(function (item) {
219
+ return item[keyAttribute];
220
+ });
271
221
  return {
272
222
  order: items.map(function (item) {
273
223
  return item[keyAttribute];
@@ -338,6 +288,7 @@ function useEntryStateDispatch() {
338
288
  * metaData // =>
339
289
  * {
340
290
  * id: 5,
291
+ * locale: 'en',
341
292
  * shareProviders: {email: false, facebook: true},
342
293
  * share_url: 'http://test.host/test',
343
294
  * credits: 'Credits: Pageflow'
@@ -727,6 +678,43 @@ function useEntryStructure() {
727
678
  return chapters;
728
679
  }, [entryState]);
729
680
  }
681
+ /**
682
+ * Returns a nested data structure representing the content elements
683
+ * of section.
684
+ *
685
+ * @param {Object} options
686
+ * @param {number} options.sectionPermaId
687
+ *
688
+ * @example
689
+ *
690
+ * const section = useSectionStructure({sectionPermaId: 4});
691
+ * section // =>
692
+ * {
693
+ * permaId: 4,
694
+ * transition: 'scroll',
695
+ * foreground: [
696
+ * {
697
+ * type: 'heading',
698
+ * props: {
699
+ * children: 'Heading'
700
+ * }
701
+ * },
702
+ * {
703
+ * type: 'textBlock',
704
+ * props: {
705
+ * children: 'Some text'
706
+ * }
707
+ * }
708
+ * ]
709
+ * }
710
+ */
711
+
712
+ function useSectionStructure(_ref) {
713
+ var sectionPermaId = _ref.sectionPermaId;
714
+ var entryState = useEntryState();
715
+ var section = getItem(entryState.collections, 'sections', sectionPermaId);
716
+ return sectionStructure(entryState.collections, section);
717
+ }
730
718
 
731
719
  function sectionStructure(collections, section) {
732
720
  return section && _objectSpread$1({
@@ -736,6 +724,7 @@ function sectionStructure(collections, section) {
736
724
  return item.sectionId === section.id;
737
725
  }).map(function (item) {
738
726
  return {
727
+ id: item.id,
739
728
  type: item.typeName,
740
729
  position: item.configuration.position,
741
730
  props: item.configuration
@@ -813,6 +802,9 @@ function pad(string, size) {
813
802
  * urls: {
814
803
  * large: 'https://...'
815
804
  * },
805
+ * configuration: {
806
+ * alt: '...'
807
+ * }
816
808
  * }
817
809
  */
818
810
 
@@ -840,9 +832,13 @@ function useFileRights() {
840
832
  var entryState = useEntryState();
841
833
  var defaultFileRights = entryState.config.defaultFileRights;
842
834
  var imageFiles = getItems(entryState.collections, 'imageFiles');
843
- var imageFileRights = imageFiles.map(function (imageConfig) {
844
- return imageConfig.rights ? imageConfig.rights.trim() : undefined;
845
- }).filter(Boolean).join(', ');
835
+ var imageFileRights = imageFiles.reduce(function (result, imageConfig) {
836
+ if (imageConfig && imageConfig.rights) {
837
+ result.push(imageConfig.rights.trim());
838
+ }
839
+
840
+ return result;
841
+ }, []).filter(Boolean).join(', ');
846
842
  var fileRights = !!imageFileRights ? imageFileRights : defaultFileRights.trim();
847
843
  var fileRightsString = !!fileRights ? 'Bildrechte: ' + fileRights : '';
848
844
  return fileRightsString;
@@ -923,8 +919,8 @@ function styleInject(css, ref) {
923
919
  }
924
920
  }
925
921
 
926
- var css = "header svg {\n fill: #c2c2c2;\n cursor: pointer;\n}\n\nheader svg:hover {\n fill: rgb(0, 55, 90);;\n}\n\n.AppHeader-module_navigationBar__2EFHw {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n position: sticky;\n top: -50px;\n transition: top .15s;\n z-index: 10000;\n width: 100%;\n text-align: center;\n}\n\n.AppHeader-module_navigationBarExpanded__18nbf {\n top: 0;\n}\n\n.AppHeader-module_navigationBarContentWrapper__2Sf8y {\n position: relative;\n z-index: 2;\n background-color: #fff;\n height: 50px;\n}\n\n.AppHeader-module_menuIcon__5JKuj {\n position: absolute;\n}\n\n.AppHeader-module_wdrLogo__3XGNI {\n top: 12px;\n left: 15px;\n width: 80px;\n}\n\n.AppHeader-module_chapterList__2lMMD {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\n.AppHeader-module_chapterListItem__28zrc {\n position: relative;\n display: inline-block;\n padding: 0 15px;\n border-right: 1px solid #e9e9e9;\n}\n\n.AppHeader-module_chapterListItem__28zrc:last-of-type {\n border-right: none;\n}\n\n.AppHeader-module_navigationTooltip__1EvCy {\n opacity: 1 !important;\n box-shadow: 0 0 0.3125rem rgba(0,0,0,.2);\n}\n\n.AppHeader-module_progressBar__17IVu {\n background-color: rgba(194,194,194,0.8);\n height: 8px;\n width: 100%;\n}\n\n.AppHeader-module_progressIndicator__3SlYz {\n position: absolute;\n top: 0;\n left: 0;\n width: 0vw;\n height: 100%;\n background-color: #e10028;\n}\n\n/* mobile view */\n@media (max-width: 780px) {\n .AppHeader-module_wdrLogo__3XGNI {\n position: inherit;\n }\n\n .AppHeader-module_navigationChapters__1dzyV {\n touch-action: none;\n display: block;\n position: fixed;\n top: 60px;\n left: 0px;\n background: rgba(255, 255, 255, 0.95);\n width: 100vw;\n height: 100vh;\n }\n\n .AppHeader-module_navigationChaptersHidden__8AEPA {\n display: none;\n }\n\n .AppHeader-module_chapterList__2lMMD {\n margin-top: 50px;\n }\n\n .AppHeader-module_chapterListItem__28zrc {\n display: list-item;\n width: 80vw;\n padding: 25px 10vw;\n border-right: none;\n }\n\n .AppHeader-module_chapterListItem__28zrc::before,\n .AppHeader-module_chapterListItem__28zrc::after {\n display: table;\n content: \" \";\n border-top: 1px solid rgb(100, 100, 100);\n width: 30%;\n margin: 0 35%;\n transition: width .15s, margin .15s;\n }\n\n .AppHeader-module_chapterListItem__28zrc:hover::before,\n .AppHeader-module_chapterListItem__28zrc:hover::after {\n border-top: 1px solid rgb(0, 55, 90);\n width: 80%;\n margin: 0 10%;\n }\n\n .AppHeader-module_chapterLink__1Q-ee,\n .AppHeader-module_chapterLink__1Q-ee:hover {\n padding: 10px 0px;\n }\n\n .AppHeader-module_progressBar__17IVu {\n height: 10px;\n }\n}\n";
927
- var styles = {"navigationBar":"AppHeader-module_navigationBar__2EFHw","navigationBarExpanded":"AppHeader-module_navigationBarExpanded__18nbf","navigationBarContentWrapper":"AppHeader-module_navigationBarContentWrapper__2Sf8y","menuIcon":"AppHeader-module_menuIcon__5JKuj","wdrLogo":"AppHeader-module_wdrLogo__3XGNI","chapterList":"AppHeader-module_chapterList__2lMMD","chapterListItem":"AppHeader-module_chapterListItem__28zrc","navigationTooltip":"AppHeader-module_navigationTooltip__1EvCy","progressBar":"AppHeader-module_progressBar__17IVu","progressIndicator":"AppHeader-module_progressIndicator__3SlYz","navigationChapters":"AppHeader-module_navigationChapters__1dzyV","navigationChaptersHidden":"AppHeader-module_navigationChaptersHidden__8AEPA","chapterLink":"AppHeader-module_chapterLink__1Q-ee"};
922
+ var css = "header svg {\n fill: #c2c2c2;\n cursor: pointer;\n}\n\nheader svg:hover {\n fill: rgb(0, 55, 90);;\n}\n\n.AppHeader-module_navigationBar__2EFHw {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n position: sticky;\n top: -50px;\n transition: top .15s;\n z-index: 10000;\n width: 100%;\n text-align: center;\n}\n\n.AppHeader-module_navigationBarExpanded__18nbf {\n top: 0;\n}\n\n.AppHeader-module_navigationBarContentWrapper__2Sf8y {\n position: relative;\n z-index: 2;\n background-color: #fff;\n height: 50px;\n}\n\n.AppHeader-module_menuIcon__5JKuj {\n position: absolute;\n}\n\n.AppHeader-module_contextIcons__23I_3 {\n position: absolute;\n top: 0px;\n right: 0px;\n width: 80px;\n height: 50px;\n padding: 0px 12px;\n}\n\n.AppHeader-module_contextIcon__157kW {\n float: right;\n width: 40px;\n height: 50px;\n}\n\n.AppHeader-module_wdrLogo__3XGNI {\n top: 12px;\n left: 15px;\n width: 80px;\n}\n\n.AppHeader-module_chapterList__2lMMD {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\n.AppHeader-module_chapterListItem__28zrc {\n position: relative;\n display: inline-block;\n padding: 0 15px;\n border-right: 1px solid #e9e9e9;\n}\n\n.AppHeader-module_chapterListItem__28zrc:last-of-type {\n border-right: none;\n}\n\n.AppHeader-module_navigationTooltip__1EvCy {\n opacity: 1 !important;\n box-shadow: 0 0 0.3125rem rgba(0,0,0,.2);\n}\n\n.AppHeader-module_progressBar__17IVu {\n background-color: rgba(194,194,194,0.8);\n height: 8px;\n width: 100%;\n}\n\n.AppHeader-module_progressIndicator__3SlYz {\n position: absolute;\n top: 0;\n left: 0;\n width: 0vw;\n height: 100%;\n background-color: #e10028;\n}\n\n/* mobile view */\n@media (max-width: 780px) {\n .AppHeader-module_wdrLogo__3XGNI {\n position: inherit;\n }\n\n .AppHeader-module_navigationChapters__1dzyV {\n touch-action: none;\n display: block;\n position: fixed;\n top: 60px;\n left: 0px;\n background: rgba(255, 255, 255, 0.95);\n width: 100vw;\n height: 100vh;\n }\n\n .AppHeader-module_navigationChaptersHidden__8AEPA {\n display: none;\n }\n\n .AppHeader-module_chapterList__2lMMD {\n margin-top: 50px;\n }\n\n .AppHeader-module_chapterListItem__28zrc {\n display: list-item;\n width: 80vw;\n padding: 25px 10vw;\n border-right: none;\n }\n\n .AppHeader-module_chapterListItem__28zrc::before,\n .AppHeader-module_chapterListItem__28zrc::after {\n display: table;\n content: \" \";\n border-top: 1px solid rgb(100, 100, 100);\n width: 14%;\n margin: 0 43%;\n transition: width .15s, margin .15s;\n }\n\n .AppHeader-module_chapterListItem__28zrc:hover::before,\n .AppHeader-module_chapterListItem__28zrc:hover::after {\n border-top: 1px solid rgb(0, 55, 90);\n width: 80%;\n margin: 0 10%;\n }\n\n .AppHeader-module_chapterListItem__28zrc p {\n margin-top: 0;\n }\n\n .AppHeader-module_progressBar__17IVu {\n height: 10px;\n }\n}\n";
923
+ var styles = {"navigationBar":"AppHeader-module_navigationBar__2EFHw","navigationBarExpanded":"AppHeader-module_navigationBarExpanded__18nbf","navigationBarContentWrapper":"AppHeader-module_navigationBarContentWrapper__2Sf8y","menuIcon":"AppHeader-module_menuIcon__5JKuj","contextIcons":"AppHeader-module_contextIcons__23I_3","contextIcon":"AppHeader-module_contextIcon__157kW","wdrLogo":"AppHeader-module_wdrLogo__3XGNI","chapterList":"AppHeader-module_chapterList__2lMMD","chapterListItem":"AppHeader-module_chapterListItem__28zrc","navigationTooltip":"AppHeader-module_navigationTooltip__1EvCy","progressBar":"AppHeader-module_progressBar__17IVu","progressIndicator":"AppHeader-module_progressIndicator__3SlYz","navigationChapters":"AppHeader-module_navigationChapters__1dzyV","navigationChaptersHidden":"AppHeader-module_navigationChaptersHidden__8AEPA"};
928
924
  styleInject(css);
929
925
 
930
926
  var css$1 = ".HamburgerIcon-module_burgerMenuIconContainer__26RY4 {\n display: none;\n}\n\n.HamburgerIcon-module_burgerMenuIcon__24t-5 {\n top: 12px;\n left: 12px;\n outline: none;\n}\n\n/* mobile view */\n@media (max-width: 780px) {\n .HamburgerIcon-module_burgerMenuIconContainer__26RY4 {\n display: block;\n }\n}\n";
@@ -939,7 +935,7 @@ function HamburgerIcon(props) {
939
935
  return React.createElement("div", {
940
936
  className: styles$1.burgerMenuIconContainer
941
937
  }, React.createElement("button", {
942
- className: classnames(styles.menuIcon, styles$1.burgerMenuIcon, hamburgerIconStyles.hamburger, hamburgerIconStyles['hamburger--collapse'], _defineProperty({}, hamburgerIconStyles['is-active'], !props.mobileNavHidden)),
938
+ className: classNames(styles.menuIcon, styles$1.burgerMenuIcon, hamburgerIconStyles.hamburger, hamburgerIconStyles['hamburger--collapse'], _defineProperty({}, hamburgerIconStyles['is-active'], !props.mobileNavHidden)),
943
939
  type: "button",
944
940
  onClick: props.onClick
945
941
  }, React.createElement("span", {
@@ -949,24 +945,76 @@ function HamburgerIcon(props) {
949
945
  }))));
950
946
  }
951
947
 
952
- var css$3 = ".ChapterLink-module_chapterLink__v5VRl {\n line-height: 3rem;\n color: rgb(0, 55, 90);\n text-decoration: none;\n position: relative;\n display: block;\n font-family: inherit;\n font-weight: 700;\n font-size: 1rem;\n height: 48px;\n}\n\n.ChapterLink-module_chapterLink__v5VRl:hover,\n.ChapterLink-module_chapterLinkActive__jl4h5 {\n color: #e10028;\n}\n\n/* mobile view */\n@media (max-width: 780px) {\n .ChapterLink-module_chapterLink__v5VRl,\n .ChapterLink-module_chapterLink__v5VRl:hover {\n padding: 10px 0px;\n }\n}";
953
- var styles$2 = {"chapterLink":"ChapterLink-module_chapterLink__v5VRl","chapterLinkActive":"ChapterLink-module_chapterLinkActive__jl4h5"};
948
+ var css$3 = ".ChapterLink-module_chapterLink__v5VRl {\n line-height: 3rem;\n color: rgb(0, 55, 90);\n text-decoration: none;\n position: relative;\n display: block;\n font-family: inherit;\n font-weight: 700;\n font-size: 1rem;\n height: 50px;\n}\n\n.ChapterLink-module_chapterLink__v5VRl:hover,\n.ChapterLink-module_chapterLinkActive__jl4h5 {\n color: #e10028;\n}\n\n.ChapterLink-module_summary__17aoW {\n display: none;\n}\n\n/* mobile view */\n@media (max-width: 780px) {\n .ChapterLink-module_summary__17aoW {\n display: block;\n }\n}";
949
+ var styles$2 = {"chapterLink":"ChapterLink-module_chapterLink__v5VRl","chapterLinkActive":"ChapterLink-module_chapterLinkActive__jl4h5","summary":"ChapterLink-module_summary__17aoW"};
954
950
  styleInject(css$3);
955
951
 
956
952
  var css$4 = ".ChapterLinkTooltip-module_chapterLinkTooltip__cCfsw {\n border-bottom: 3px solid #e10028;\n width: 200px;\n}\n\n.ChapterLinkTooltip-module_tooltipHeadline__reew_ {\n margin: 5px 0 0px;\n color: #e10028;\n}\n\n@media (max-width: 780px) {\n .ChapterLinkTooltip-module_chapterLinkTooltip__cCfsw {\n display: none !important;\n }\n}\n";
957
953
  var styles$3 = {"chapterLinkTooltip":"ChapterLinkTooltip-module_chapterLinkTooltip__cCfsw","tooltipHeadline":"ChapterLinkTooltip-module_tooltipHeadline__reew_"};
958
954
  styleInject(css$4);
959
955
 
956
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
957
+
958
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
959
+ function setupI18n(_ref) {
960
+ var defaultLocale = _ref.defaultLocale,
961
+ locale = _ref.locale,
962
+ translations = _ref.translations;
963
+ I18n.defaultLocale = defaultLocale;
964
+ I18n.locale = locale;
965
+ I18n.translations = translations;
966
+ }
967
+ /**
968
+ * Use translations in frontend elements. Uses the configured locale
969
+ * of the current entry by default. Note that only translation keys
970
+ * from the `pageflow_scrolled.public` scope are universally
971
+ * available.
972
+ *
973
+ * to render translations for inline editing controls in the editor
974
+ * preview, you can pass `"ui"` as `locale` option and use
975
+ * translations from the `pageflow_scrolled.inline_editing` scope.
976
+ *
977
+ * @param {Object} [options]
978
+ * @param {string} [locale="entry"] -
979
+ * Pass `"ui"` to use the locale of the editor interface instead.
980
+ *
981
+ * @example
982
+ * const {t} = useI18n();
983
+ * t('pageflow_scrolled.public.some.key')
984
+ *
985
+ * const {t} = useI18n({locale: 'ui'});
986
+ * t('pageflow_scrolled.inline_editing.some.key')
987
+ */
988
+
989
+ function useI18n() {
990
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
991
+ scope = _ref2.locale;
992
+
993
+ var _useEntryMetadata = useEntryMetadata(),
994
+ locale = _useEntryMetadata.locale;
995
+
996
+ return {
997
+ t: function t(key, options) {
998
+ return I18n.t(key, _objectSpread$3({}, options, {
999
+ locale: scope !== 'ui' && locale
1000
+ }));
1001
+ }
1002
+ };
1003
+ }
1004
+
960
1005
  function ChapterLinkTooltip(props) {
1006
+ var _useI18n = useI18n(),
1007
+ t = _useI18n.t;
1008
+
961
1009
  return React.createElement(ReactTooltip, {
962
1010
  id: props.chapterLinkId,
963
1011
  type: "light",
964
1012
  place: "bottom",
965
1013
  effect: "solid",
966
- className: classnames(styles.navigationTooltip, styles$3.chapterLinkTooltip)
1014
+ className: classNames(styles.navigationTooltip, styles$3.chapterLinkTooltip)
967
1015
  }, React.createElement("div", null, React.createElement("h3", {
968
1016
  className: styles$3.tooltipHeadline
969
- }, "Kapitel ", props.chapterIndex), React.createElement("p", {
1017
+ }, t('pageflow_scrolled.public.navigation.chapter'), " ", props.chapterIndex), React.createElement("p", {
970
1018
  dangerouslySetInnerHTML: {
971
1019
  __html: props.summary
972
1020
  }
@@ -975,20 +1023,25 @@ function ChapterLinkTooltip(props) {
975
1023
 
976
1024
  function ChapterLink(props) {
977
1025
  return React.createElement("div", null, React.createElement("a", {
978
- className: classnames(styles$2.chapterLink, _defineProperty({}, styles$2.chapterLinkActive, props.active)),
1026
+ className: classNames(styles$2.chapterLink, _defineProperty({}, styles$2.chapterLinkActive, props.active)),
979
1027
  href: "#chapter-".concat(props.permaId),
980
1028
  onClick: function onClick() {
981
1029
  return props.handleMenuClick(props.chapterLinkId);
982
1030
  },
983
1031
  "data-tip": true,
984
1032
  "data-for": props.chapterLinkId
985
- }, props.title), React.createElement(ChapterLinkTooltip, Object.assign({
1033
+ }, props.title), React.createElement("p", {
1034
+ className: styles$2.summary,
1035
+ dangerouslySetInnerHTML: {
1036
+ __html: props.summary
1037
+ }
1038
+ }), React.createElement(ChapterLinkTooltip, Object.assign({
986
1039
  chapterIndex: props.chapterIndex,
987
1040
  chapterLinkId: props.chapterLinkId
988
1041
  }, props)));
989
1042
  }
990
1043
 
991
- var css$5 = ".LegalInfoMenu-module_infoIcon__1kTnt {\n top: 12px;\n right: 55px;\n width: 26px;\n}\n\n";
1044
+ var css$5 = ".LegalInfoMenu-module_infoIcon__1kTnt svg {\n width: 26px;\n height: 26px;\n margin: 12px 0px;\n}\n\n";
992
1045
  var styles$4 = {"infoIcon":"LegalInfoMenu-module_infoIcon__1kTnt"};
993
1046
  styleInject(css$5);
994
1047
 
@@ -1023,7 +1076,7 @@ var InfoIcon = (function (_ref) {
1023
1076
  }));
1024
1077
  });
1025
1078
 
1026
- var css$6 = ".LegalInfoTooltip-module_legalInfoTooltip__ChzOS {\n width: 200px;\n max-width: 200px;\n text-align: left;\n margin-top: 12px !important;\n margin-bottom: 12px !important;\n}\n\n.LegalInfoTooltip-module_legalInfoTooltip__ChzOS:after {\n left: 90% !important;\n}\n\n.LegalInfoTooltip-module_legalInfoTooltip__ChzOS p {\n margin: 0 0 0.5em;\n}\n\n.LegalInfoTooltip-module_legalInfoTooltip__ChzOS a {\n color: #e10028;\n}\n";
1079
+ var css$6 = ".LegalInfoTooltip-module_legalInfoTooltip__ChzOS {\n width: 200px;\n max-width: 200px;\n text-align: left;\n}\n\n.LegalInfoTooltip-module_legalInfoTooltip__ChzOS:after {\n left: 90% !important;\n}\n\n.LegalInfoTooltip-module_legalInfoTooltip__ChzOS p {\n margin: 0 0 0.5em;\n}\n\n.LegalInfoTooltip-module_legalInfoTooltip__ChzOS a {\n color: #e10028;\n}\n";
1027
1080
  var styles$5 = {"legalInfoTooltip":"LegalInfoTooltip-module_legalInfoTooltip__ChzOS"};
1028
1081
  styleInject(css$6);
1029
1082
 
@@ -1050,10 +1103,9 @@ function LegalInfoTooltip() {
1050
1103
  globalEventOff: 'click',
1051
1104
  clickable: true,
1052
1105
  offset: {
1053
- bottom: 5,
1054
1106
  right: -97
1055
1107
  },
1056
- className: classnames(styles.navigationTooltip, styles$5.legalInfoTooltip)
1108
+ className: classNames(styles.navigationTooltip, styles$5.legalInfoTooltip)
1057
1109
  }, React.createElement("div", {
1058
1110
  onMouseLeave: function onMouseLeave() {
1059
1111
  ReactTooltip.hide();
@@ -1067,7 +1119,7 @@ function LegalInfoTooltip() {
1067
1119
 
1068
1120
  function LegalInfoMenu(props) {
1069
1121
  return React.createElement("div", null, React.createElement("a", {
1070
- className: classnames(styles.menuIcon, styles$4.infoIcon),
1122
+ className: classNames(styles.contextIcon, styles$4.infoIcon),
1071
1123
  "data-tip": true,
1072
1124
  "data-for": 'legalInfoTooltip',
1073
1125
  onMouseEnter: function onMouseEnter() {
@@ -1076,7 +1128,7 @@ function LegalInfoMenu(props) {
1076
1128
  }, React.createElement(InfoIcon, null)), React.createElement(LegalInfoTooltip, null));
1077
1129
  }
1078
1130
 
1079
- var css$7 = ".SharingMenu-module_shareIcon__1AlDL {\n top: 5px;\n right: 10px;\n width: 40px;\n}";
1131
+ var css$7 = ".SharingMenu-module_shareIcon__1AlDL svg {\n width: 40px;\n height: 40px;\n margin: 5px 0px;\n}";
1080
1132
  var styles$6 = {"shareIcon":"SharingMenu-module_shareIcon__1AlDL"};
1081
1133
  styleInject(css$7);
1082
1134
 
@@ -1109,7 +1161,7 @@ var ShareIcon = (function (_ref) {
1109
1161
  }));
1110
1162
  });
1111
1163
 
1112
- var css$8 = "header .share svg {\n fill: rgb(0, 55, 90);\n}\n\nheader .share:hover svg {\n fill: #e10028;\n}\n\n.SharingTooltip-module_sharingTooltip__1cljv {\n width: 160px;\n padding: 0 !important;\n}\n\n.SharingTooltip-module_sharingTooltip__1cljv:after {\n left: 90% !important;\n}\n\n.SharingTooltip-module_shareLinkContainer__2MnKN {\n float: left;\n width: 80px;\n height: 60px;\n cursor: pointer;\n color: transparent;\n text-align: center;\n}\n\n.SharingTooltip-module_shareLink__2ySSX {\n position: relative;\n color: rgb(0, 55, 90);\n text-decoration: none;\n}\n\n.SharingTooltip-module_shareLink__2ySSX:hover {\n color: #e10028;\n}\n\n.SharingTooltip-module_shareIcon__3igrs {\n width: 80px;\n height: 25px;\n margin-top: 5px;\n margin-bottom: 3px;\n}\n";
1164
+ var css$8 = "header .share svg {\n fill: rgb(0, 55, 90);\n}\n\nheader .share:hover svg {\n fill: #e10028;\n}\n\n.SharingTooltip-module_sharingTooltip__1cljv {\n width: 160px;\n padding: 0 !important;\n}\n\n.SharingTooltip-module_sharingTooltip__1cljv:after {\n left: 90% !important;\n}\n\n.SharingTooltip-module_shareLinkContainer__2MnKN {\n display: inline-block;\n width: 80px;\n height: 60px;\n cursor: pointer;\n color: transparent;\n text-align: center;\n}\n\n.SharingTooltip-module_shareLink__2ySSX {\n position: relative;\n color: rgb(0, 55, 90);\n text-decoration: none;\n}\n\n.SharingTooltip-module_shareLink__2ySSX:hover {\n color: #e10028;\n}\n\n.SharingTooltip-module_shareIcon__3igrs {\n width: 80px;\n height: 25px;\n margin-top: 5px;\n margin-bottom: 3px;\n}\n";
1113
1165
  var styles$7 = {"sharingTooltip":"SharingTooltip-module_sharingTooltip__1cljv","shareLinkContainer":"SharingTooltip-module_shareLinkContainer__2MnKN","shareLink":"SharingTooltip-module_shareLink__2ySSX","shareIcon":"SharingTooltip-module_shareIcon__3igrs"};
1114
1166
  styleInject(css$8);
1115
1167
 
@@ -1124,7 +1176,7 @@ function SharingTooltip() {
1124
1176
  key: shareProvider.name,
1125
1177
  className: styles$7.shareLinkContainer
1126
1178
  }, React.createElement("a", {
1127
- className: classnames('share', styles$7.shareLink),
1179
+ className: classNames('share', styles$7.shareLink),
1128
1180
  href: shareProvider.url.replace('%{url}', shareUrl),
1129
1181
  target: '_blank'
1130
1182
  }, React.createElement(Icon, {
@@ -1143,7 +1195,7 @@ function SharingTooltip() {
1143
1195
  offset: {
1144
1196
  right: -64
1145
1197
  },
1146
- className: classnames(styles.navigationTooltip, styles$7.sharingTooltip)
1198
+ className: classNames(styles.navigationTooltip, styles$7.sharingTooltip)
1147
1199
  }, React.createElement("div", {
1148
1200
  onMouseLeave: function onMouseLeave() {
1149
1201
  ReactTooltip.hide();
@@ -1152,14 +1204,20 @@ function SharingTooltip() {
1152
1204
  }
1153
1205
 
1154
1206
  function SharingMenu() {
1155
- return React.createElement("div", null, React.createElement("a", {
1156
- className: classnames(styles.menuIcon, styles$6.shareIcon),
1157
- "data-tip": true,
1158
- "data-for": 'sharingTooltip',
1159
- onMouseEnter: function onMouseEnter() {
1160
- ReactTooltip.hide();
1161
- }
1162
- }, React.createElement(ShareIcon, null)), React.createElement(SharingTooltip, null));
1207
+ var shareProviders = useShareProviders();
1208
+
1209
+ if (shareProviders.length > 0) {
1210
+ return React.createElement("div", null, React.createElement("a", {
1211
+ className: classNames(styles.contextIcon, styles$6.shareIcon),
1212
+ "data-tip": true,
1213
+ "data-for": 'sharingTooltip',
1214
+ onMouseEnter: function onMouseEnter() {
1215
+ ReactTooltip.hide();
1216
+ }
1217
+ }, React.createElement(ShareIcon, null)), React.createElement(SharingTooltip, null));
1218
+ } else {
1219
+ return null;
1220
+ }
1163
1221
  }
1164
1222
 
1165
1223
  function _extends$8() {
@@ -1252,7 +1310,9 @@ function AppHeader(props) {
1252
1310
  }
1253
1311
 
1254
1312
  function renderChapterLinks(chapters) {
1255
- return chapters.map(function (chapter, index) {
1313
+ return chapters.filter(function (chapterConfiguration) {
1314
+ return chapterConfiguration.title && chapterConfiguration.summary;
1315
+ }).map(function (chapter, index) {
1256
1316
  var chapterIndex = index + 1;
1257
1317
  var chapterLinkId = "chapterLink".concat(chapterIndex);
1258
1318
  return React.createElement("li", {
@@ -1267,21 +1327,23 @@ function AppHeader(props) {
1267
1327
  });
1268
1328
  }
1269
1329
  return React.createElement("header", {
1270
- className: classnames(styles.navigationBar, _defineProperty({}, styles.navigationBarExpanded, navExpanded))
1330
+ className: classNames(styles.navigationBar, _defineProperty({}, styles.navigationBarExpanded, navExpanded))
1271
1331
  }, React.createElement("div", {
1272
1332
  className: styles.navigationBarContentWrapper
1273
1333
  }, React.createElement(HamburgerIcon, {
1274
1334
  onClick: handleBurgerMenuClick,
1275
1335
  mobileNavHidden: mobileNavHidden
1276
1336
  }), React.createElement(WDRlogo, {
1277
- className: classnames(styles.menuIcon, styles.wdrLogo)
1337
+ className: classNames(styles.menuIcon, styles.wdrLogo)
1278
1338
  }), React.createElement("nav", {
1279
- className: classnames(styles.navigationChapters, _defineProperty({}, styles.navigationChaptersHidden, mobileNavHidden)),
1339
+ className: classNames(styles.navigationChapters, _defineProperty({}, styles.navigationChaptersHidden, mobileNavHidden)),
1280
1340
  role: "navigation",
1281
1341
  ref: ref
1282
1342
  }, React.createElement("ul", {
1283
1343
  className: styles.chapterList
1284
- }, renderChapterLinks(chapters))), React.createElement(LegalInfoMenu, null), React.createElement(SharingMenu, null)), React.createElement("div", {
1344
+ }, renderChapterLinks(chapters))), React.createElement("div", {
1345
+ className: classNames(styles.contextIcons)
1346
+ }, React.createElement(SharingMenu, null), React.createElement(LegalInfoMenu, null))), React.createElement("div", {
1285
1347
  className: styles.progressBar,
1286
1348
  onMouseEnter: handleProgressBarMouseEnter
1287
1349
  }, React.createElement("span", {
@@ -1359,7 +1421,7 @@ function Image(props) {
1359
1421
  var focusX = typeof image.configuration.focusX === 'undefined' ? 50 : image.configuration.focusX;
1360
1422
  var focusY = typeof image.configuration.focusY === 'undefined' ? 50 : image.configuration.focusY;
1361
1423
  return React.createElement("div", {
1362
- className: classnames(styles$9.root, _defineProperty({}, styles$9.portrait, props.mobile)),
1424
+ className: classNames(styles$9.root, _defineProperty({}, styles$9.portrait, props.mobile)),
1363
1425
  role: "img",
1364
1426
  style: {
1365
1427
  backgroundImage: "url(".concat(image.urls.large, ")"),
@@ -1420,11 +1482,16 @@ function Video(props) {
1420
1482
  var videoRef = useRef();
1421
1483
  var state = props.state;
1422
1484
  var mutedSettings = useContext(MutedContext);
1423
- var mediaOff = mutedSettings.mediaOff;
1424
1485
  useEffect(function () {
1425
1486
  var video = videoRef.current;
1426
1487
 
1427
- if (video && !mediaOff) {
1488
+ if (!video) {
1489
+ return;
1490
+ }
1491
+
1492
+ video.muted = mutedSettings.muted;
1493
+
1494
+ if (!mutedSettings.mediaOff && props.autoplay !== false) {
1428
1495
  if (state === 'active') {
1429
1496
  if (video.readyState > 0) {
1430
1497
  video.play();
@@ -1442,21 +1509,21 @@ function Video(props) {
1442
1509
  function play() {
1443
1510
  video.play();
1444
1511
  }
1445
- }, [state, videoRef, mediaOff]);
1512
+ }, [state, mutedSettings.mediaOff, mutedSettings.muted, props.autoplay]);
1446
1513
  return React.createElement("div", {
1447
1514
  className: styles$a.root
1448
1515
  }, React.createElement(ScrollToSectionContext.Consumer, null, function (scrollToSection) {
1449
1516
  return React.createElement("video", {
1517
+ role: "img",
1450
1518
  src: videoUrl,
1451
1519
  ref: videoRef,
1452
- className: classnames(styles$a.video, _defineProperty({}, styles$a.backdrop, !props.interactive)),
1520
+ className: classNames(styles$a.video, _defineProperty({}, styles$a.backdrop, !props.interactive)),
1453
1521
  controls: props.controls,
1454
1522
  playsInline: true,
1455
1523
  onEnded: function onEnded() {
1456
1524
  return props.nextSectionOnEnd && scrollToSection('next');
1457
1525
  },
1458
1526
  loop: !props.interactive,
1459
- muted: mutedSettings.muted,
1460
1527
  poster: posterUrl
1461
1528
  });
1462
1529
  }));
@@ -1495,7 +1562,7 @@ var MotifArea = React.forwardRef(function MotifArea(props, ref) {
1495
1562
 
1496
1563
  return React.createElement("div", {
1497
1564
  ref: ref,
1498
- className: classnames(styles$c.root, _defineProperty({}, styles$c.active, props.active)),
1565
+ className: classNames(styles$c.root, _defineProperty({}, styles$c.active, props.active)),
1499
1566
  style: position(props, image),
1500
1567
  onMouseEnter: props.onMouseEnter,
1501
1568
  onMouseLeave: props.onMouseLeave
@@ -1675,1118 +1742,391 @@ var videos = {
1675
1742
  }
1676
1743
  };
1677
1744
 
1678
- var ResizeSensor = createCommonjsModule(function (module, exports) {
1679
- // Copyright (c) 2013 Marc J. Schmidt
1680
- // Permission is hereby granted, free of charge, to any person obtaining a copy
1681
- // of this software and associated documentation files (the "Software"), to deal
1682
- // in the Software without restriction, including without limitation the rights
1683
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1684
- // copies of the Software, and to permit persons to whom the Software is
1685
- // furnished to do so, subject to the following conditions:
1686
- // The above copyright notice and this permission notice shall be included in
1687
- // all copies or substantial portions of the Software.
1688
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1689
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1690
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1691
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1692
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1693
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1694
- // THE SOFTWARE.
1695
- // Originally based on version 1.2.1,
1696
- // https://github.com/marcj/css-element-queries/tree/1.2.1
1697
- // Some lines removed for compatibility.
1698
- (function (root, factory) {
1699
- {
1700
- module.exports = factory();
1701
- }
1702
- })(typeof window !== 'undefined' ? window : commonjsGlobal, function () {
1703
- // Make sure it does not throw in a SSR (Server Side Rendering) situation
1704
- if (typeof window === "undefined") {
1705
- return null;
1706
- } // https://github.com/Semantic-Org/Semantic-UI/issues/3855
1707
- // https://github.com/marcj/css-element-queries/issues/257
1708
-
1709
-
1710
- var globalWindow = window; // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.
1711
- // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and
1712
- // would generate too many unnecessary events.
1745
+ var css$e = ".Backdrop-module_Backdrop__1w4UZ {\n width: 100%;\n z-index: 2;\n}\n\n.Backdrop-module_offScreen__2_FYZ {\n}\n";
1746
+ var styles$d = {"Backdrop":"Backdrop-module_Backdrop__1w4UZ","offScreen":"Backdrop-module_offScreen__2_FYZ"};
1747
+ styleInject(css$e);
1713
1748
 
1714
- var requestAnimationFrame = globalWindow.requestAnimationFrame || globalWindow.mozRequestAnimationFrame || globalWindow.webkitRequestAnimationFrame || function (fn) {
1715
- return globalWindow.setTimeout(fn, 20);
1716
- };
1749
+ function Backdrop(props) {
1750
+ var _useDimension = useDimension(),
1751
+ _useDimension2 = _slicedToArray(_useDimension, 2),
1752
+ containerDimension = _useDimension2[0],
1753
+ setContainerRef = _useDimension2[1];
1717
1754
 
1718
- function forEachElement(elements, callback) {
1719
- var elementsType = Object.prototype.toString.call(elements);
1720
- var isCollectionTyped = '[object Array]' === elementsType || '[object NodeList]' === elementsType || '[object HTMLCollection]' === elementsType || '[object Object]' === elementsType;
1721
- var i = 0,
1722
- j = elements.length;
1755
+ return React.createElement("div", {
1756
+ className: classNames(styles$d.Backdrop, props.transitionStyles.backdrop, props.transitionStyles["backdrop-".concat(props.state)], _defineProperty({}, styles$d.offScreen, props.offScreen))
1757
+ }, React.createElement("div", {
1758
+ className: props.transitionStyles.backdropInner
1759
+ }, React.createElement("div", {
1760
+ className: props.transitionStyles.backdropInner2
1761
+ }, props.children(renderContent(props, containerDimension, setContainerRef)))));
1762
+ }
1763
+ Backdrop.defaultProps = {
1764
+ transitionStyles: {}
1765
+ };
1723
1766
 
1724
- if (isCollectionTyped) {
1725
- for (; i < j; i++) {
1726
- callback(elements[i]);
1727
- }
1728
- } else {
1729
- callback(elements);
1730
- }
1767
+ function renderContent(props, containerDimension, setContainerRef) {
1768
+ if (props.image.toString().startsWith('#')) {
1769
+ return React.createElement(FillColor, {
1770
+ color: props.image
1771
+ });
1772
+ } else if (props.image.toString().startsWith('video')) {
1773
+ var video = videos[props.image];
1774
+ return React.createElement(Fullscreen, {
1775
+ ref: setContainerRef
1776
+ }, React.createElement(Video, {
1777
+ state: props.onScreen ? 'active' : 'inactive',
1778
+ id: props.image,
1779
+ offset: props.offset,
1780
+ interactive: props.interactive,
1781
+ nextSectionOnEnd: props.nextSectionOnEnd
1782
+ }), React.createElement(MotifArea, {
1783
+ ref: props.motifAreaRef,
1784
+ image: video,
1785
+ containerWidth: containerDimension.width,
1786
+ containerHeight: containerDimension.height
1787
+ }));
1788
+ } else {
1789
+ return React.createElement(Fullscreen, {
1790
+ ref: setContainerRef
1791
+ }, React.createElement(Image, {
1792
+ id: props.image
1793
+ }), React.createElement(Image, {
1794
+ id: props.imageMobile,
1795
+ mobile: true
1796
+ }), React.createElement(MotifArea, {
1797
+ ref: props.motifAreaRef,
1798
+ imageId: props.image,
1799
+ containerWidth: containerDimension.width,
1800
+ containerHeight: containerDimension.height
1801
+ }));
1731
1802
  }
1803
+ }
1732
1804
 
1733
- function getElementSize(element) {
1734
- if (!element.getBoundingClientRect) {
1735
- return {
1736
- width: element.offsetWidth,
1737
- height: element.offsetHeight
1738
- };
1805
+ var Context$1 = React.createContext({});
1806
+ function EditorStateProvider(props) {
1807
+ var _useState = useState(null),
1808
+ _useState2 = _slicedToArray(_useState, 2),
1809
+ selection = _useState2[0],
1810
+ setSelectionState = _useState2[1];
1811
+
1812
+ var setSelection = useCallback(function (selection) {
1813
+ if (window.parent !== window) {
1814
+ window.parent.postMessage({
1815
+ type: 'SELECTED',
1816
+ payload: selection || {}
1817
+ }, window.location.origin);
1739
1818
  }
1740
1819
 
1741
- var rect = element.getBoundingClientRect();
1742
- return {
1743
- width: Math.round(rect.width),
1744
- height: Math.round(rect.height)
1745
- };
1746
- }
1820
+ setSelectionState(selection);
1821
+ }, []);
1822
+ var value = useMemo(function () {
1823
+ return props.active ? {
1824
+ selection: selection,
1825
+ setSelection: setSelection
1826
+ } : {};
1827
+ }, [props.active, setSelection, selection]);
1828
+ return React.createElement(Context$1.Provider, {
1829
+ value: value
1830
+ }, props.children);
1831
+ }
1832
+ function useEditorSelection(options) {
1833
+ var _useContext = useContext(Context$1),
1834
+ selection = _useContext.selection,
1835
+ setSelection = _useContext.setSelection;
1836
+
1837
+ var resetSelection = useCallback(function () {
1838
+ setSelection(null);
1839
+ }, [setSelection]);
1840
+ var select = useCallback(function (selection) {
1841
+ setSelection(selection || options);
1842
+ }, [setSelection, options]);
1843
+ return useMemo(function () {
1844
+ return setSelection ? {
1845
+ isSelected: selection && options && selection.id === options.id && selection.type === options.type,
1846
+ isSelectable: !selection || selection.type === 'contentElement',
1847
+ select: select,
1848
+ resetSelection: resetSelection
1849
+ } : {};
1850
+ }, [options, selection, setSelection, select, resetSelection]);
1851
+ }
1747
1852
 
1748
- function setStyle(element, style) {
1749
- Object.keys(style).forEach(function (key) {
1750
- element.style[key] = style[key];
1751
- });
1752
- }
1853
+ var css$f = ".Foreground-module_Foreground__13ODU {\n position: relative;\n z-index: 3;\n\n box-sizing: border-box;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.Foreground-module_fullFadeHeight__2p9dx {\n min-height: 51vh;\n}\n\n.Foreground-module_fullHeight__1vMXb {\n min-height: 100vh;\n}\n\n.Foreground-module_fullFadeHeight__2p9dx.Foreground-module_enlarge__14Plm,\n.Foreground-module_fullHeight__1vMXb.Foreground-module_enlarge__14Plm {\n min-height: 130vh;\n}\n\n.Foreground-module_hidden__2dmAx {\n visibility: hidden;\n}\n";
1854
+ var styles$e = {"Foreground":"Foreground-module_Foreground__13ODU","fullFadeHeight":"Foreground-module_fullFadeHeight__2p9dx","fullHeight":"Foreground-module_fullHeight__1vMXb","enlarge":"Foreground-module_enlarge__14Plm","hidden":"Foreground-module_hidden__2dmAx"};
1855
+ styleInject(css$f);
1753
1856
 
1754
- var ResizeSensor = function ResizeSensor(element, callback) {
1755
- function EventQueue() {
1756
- var q = [];
1857
+ function Foreground(props) {
1858
+ var _useEditorSelection = useEditorSelection(),
1859
+ resetSelection = _useEditorSelection.resetSelection;
1757
1860
 
1758
- this.add = function (ev) {
1759
- q.push(ev);
1760
- };
1861
+ return React.createElement("div", {
1862
+ className: className(props),
1863
+ onClick: resetSelection
1864
+ }, props.children);
1865
+ }
1761
1866
 
1762
- var i, j;
1867
+ function className(props) {
1868
+ var _classNames;
1763
1869
 
1764
- this.call = function (sizeInfo) {
1765
- for (i = 0, j = q.length; i < j; i++) {
1766
- q[i].call(this, sizeInfo);
1767
- }
1768
- };
1870
+ return classNames(styles$e.Foreground, props.transitionStyles.foreground, props.transitionStyles["foreground-".concat(props.state)], styles$e["".concat(props.heightMode, "Height")], (_classNames = {}, _defineProperty(_classNames, styles$e.hidden, props.hidden), _defineProperty(_classNames, styles$e.enlarge, props.hidden && !props.disableEnlarge), _classNames));
1871
+ }
1769
1872
 
1770
- this.remove = function (ev) {
1771
- var newQueue = [];
1873
+ function _arrayWithoutHoles(arr) {
1874
+ if (Array.isArray(arr)) {
1875
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
1876
+ arr2[i] = arr[i];
1877
+ }
1772
1878
 
1773
- for (i = 0, j = q.length; i < j; i++) {
1774
- if (q[i] !== ev) newQueue.push(q[i]);
1775
- }
1879
+ return arr2;
1880
+ }
1881
+ }
1776
1882
 
1777
- q = newQueue;
1778
- };
1883
+ function _iterableToArray(iter) {
1884
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
1885
+ }
1779
1886
 
1780
- this.length = function () {
1781
- return q.length;
1782
- };
1783
- }
1887
+ function _nonIterableSpread() {
1888
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
1889
+ }
1784
1890
 
1785
- function attachResizeEvent(element, resized) {
1786
- if (!element) return;
1891
+ function _toConsumableArray(arr) {
1892
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
1893
+ }
1787
1894
 
1788
- if (element.resizedAttached) {
1789
- element.resizedAttached.add(resized);
1790
- return;
1791
- }
1895
+ function _classCallCheck(instance, Constructor) {
1896
+ if (!(instance instanceof Constructor)) {
1897
+ throw new TypeError("Cannot call a class as a function");
1898
+ }
1899
+ }
1792
1900
 
1793
- element.resizedAttached = new EventQueue();
1794
- element.resizedAttached.add(resized);
1795
- element.resizeSensor = document.createElement('div');
1796
- element.resizeSensor.dir = 'ltr';
1797
- element.resizeSensor.className = 'resize-sensor';
1798
- var style = {
1799
- pointerEvents: 'none',
1800
- position: 'absolute',
1801
- left: '0px',
1802
- top: '0px',
1803
- right: '0px',
1804
- bottom: '0px',
1805
- overflow: 'hidden',
1806
- zIndex: '-1',
1807
- visibility: 'hidden',
1808
- maxWidth: '100%'
1809
- };
1810
- var styleChild = {
1811
- position: 'absolute',
1812
- left: '0px',
1813
- top: '0px',
1814
- transition: '0s'
1815
- };
1816
- setStyle(element.resizeSensor, style);
1817
- var expand = document.createElement('div');
1818
- expand.className = 'resize-sensor-expand';
1819
- setStyle(expand, style);
1820
- var expandChild = document.createElement('div');
1821
- setStyle(expandChild, styleChild);
1822
- expand.appendChild(expandChild);
1823
- var shrink = document.createElement('div');
1824
- shrink.className = 'resize-sensor-shrink';
1825
- setStyle(shrink, style);
1826
- var shrinkChild = document.createElement('div');
1827
- setStyle(shrinkChild, styleChild);
1828
- setStyle(shrinkChild, {
1829
- width: '200%',
1830
- height: '200%'
1831
- });
1832
- shrink.appendChild(shrinkChild);
1833
- element.resizeSensor.appendChild(expand);
1834
- element.resizeSensor.appendChild(shrink);
1835
- element.appendChild(element.resizeSensor);
1836
- var computedStyle = window.getComputedStyle(element);
1837
- var position = computedStyle ? computedStyle.getPropertyValue('position') : null;
1838
-
1839
- if ('absolute' !== position && 'relative' !== position && 'fixed' !== position) {
1840
- element.style.position = 'relative';
1841
- }
1901
+ function _defineProperties(target, props) {
1902
+ for (var i = 0; i < props.length; i++) {
1903
+ var descriptor = props[i];
1904
+ descriptor.enumerable = descriptor.enumerable || false;
1905
+ descriptor.configurable = true;
1906
+ if ("value" in descriptor) descriptor.writable = true;
1907
+ Object.defineProperty(target, descriptor.key, descriptor);
1908
+ }
1909
+ }
1842
1910
 
1843
- var dirty, rafId;
1844
- var size = getElementSize(element);
1845
- var lastWidth = 0;
1846
- var lastHeight = 0;
1847
- var initialHiddenCheck = true;
1848
- var lastAnimationFrame = 0;
1849
-
1850
- var resetExpandShrink = function resetExpandShrink() {
1851
- var width = element.offsetWidth;
1852
- var height = element.offsetHeight;
1853
- expandChild.style.width = width + 10 + 'px';
1854
- expandChild.style.height = height + 10 + 'px';
1855
- expand.scrollLeft = width + 10;
1856
- expand.scrollTop = height + 10;
1857
- shrink.scrollLeft = width + 10;
1858
- shrink.scrollTop = height + 10;
1859
- };
1911
+ function _createClass(Constructor, protoProps, staticProps) {
1912
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
1913
+ if (staticProps) _defineProperties(Constructor, staticProps);
1914
+ return Constructor;
1915
+ }
1860
1916
 
1861
- var reset = function reset() {
1862
- // Check if element is hidden
1863
- if (initialHiddenCheck) {
1864
- var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;
1865
-
1866
- if (invisible) {
1867
- // Check in next frame
1868
- if (!lastAnimationFrame) {
1869
- lastAnimationFrame = requestAnimationFrame(function () {
1870
- lastAnimationFrame = 0;
1871
- reset();
1872
- });
1873
- }
1874
-
1875
- return;
1876
- } else {
1877
- // Stop checking
1878
- initialHiddenCheck = false;
1879
- }
1880
- }
1917
+ /**
1918
+ * Register new types of content elements.
1919
+ * @name frontend_contentElementTypes
1920
+ */
1921
+ var ContentElementTypeRegistry =
1922
+ /*#__PURE__*/
1923
+ function () {
1924
+ function ContentElementTypeRegistry() {
1925
+ _classCallCheck(this, ContentElementTypeRegistry);
1881
1926
 
1882
- resetExpandShrink();
1883
- };
1927
+ this.types = {};
1928
+ }
1929
+ /**
1930
+ * Register a new type of content element.
1931
+ *
1932
+ * @param {string} typeName - Name of the content element type.
1933
+ * @param {Object} options
1934
+ * @param {React.Component} options.component
1935
+ * @memberof frontend_contentElementTypes
1936
+ *
1937
+ * @example
1938
+ *
1939
+ * // frontend.js
1940
+ *
1941
+ * import {frontend} from 'pageflow-scrolled/frontend';
1942
+ * import {InlineImage} from './InlineImage';
1943
+ *
1944
+ * frontend.contentElementTypes.register('inlineImage', {
1945
+ * component: InlineImage
1946
+ * });
1947
+ */
1948
+
1949
+
1950
+ _createClass(ContentElementTypeRegistry, [{
1951
+ key: "register",
1952
+ value: function register(typeName, options) {
1953
+ this.types[typeName] = options;
1954
+ }
1955
+ }, {
1956
+ key: "getComponent",
1957
+ value: function getComponent(typeName) {
1958
+ if (!this.types[typeName]) {
1959
+ throw new Error("Unknown content element type name \"".concat(typeName, "\""));
1960
+ }
1884
1961
 
1885
- element.resizeSensor.resetSensor = reset;
1962
+ return this.types[typeName].component;
1963
+ }
1964
+ }]);
1886
1965
 
1887
- var onResized = function onResized() {
1888
- rafId = 0;
1889
- if (!dirty) return;
1890
- lastWidth = size.width;
1891
- lastHeight = size.height;
1966
+ return ContentElementTypeRegistry;
1967
+ }();
1892
1968
 
1893
- if (element.resizedAttached) {
1894
- element.resizedAttached.call(size);
1895
- }
1896
- };
1969
+ var api = {
1970
+ contentElementTypes: new ContentElementTypeRegistry()
1971
+ };
1897
1972
 
1898
- var onScroll = function onScroll() {
1899
- size = getElementSize(element);
1900
- dirty = size.width !== lastWidth || size.height !== lastHeight;
1973
+ var css$g = ".ContentElement-module_outer__3ZsNV {\n position: relative;\n}\n\n.ContentElement-module_selectable__2oRzN {\n position: relative;\n}\n\n.ContentElement-module_selectable__2oRzN:after {\n content: '';\n position: absolute;\n top: -5px;\n left: -5px;\n right: -5px;\n bottom: -5px;\n}\n\n.ContentElement-module_bl__2w5xM,\n.ContentElement-module_br__3v-_l,\n.ContentElement-module_tr__l_gbk,\n.ContentElement-module_tl__NrB8G {\n width: 10px;\n height: 10px;\n position: absolute;\n opacity: 0;\n}\n\n.ContentElement-module_selected__1uFZP .ContentElement-module_bl__2w5xM,\n.ContentElement-module_selected__1uFZP .ContentElement-module_br__3v-_l,\n.ContentElement-module_selected__1uFZP .ContentElement-module_tr__l_gbk,\n.ContentElement-module_selected__1uFZP .ContentElement-module_tl__NrB8G {\n border-width: 3px\n}\n\n.ContentElement-module_selected__1uFZP .ContentElement-module_bl__2w5xM,\n.ContentElement-module_selected__1uFZP .ContentElement-module_br__3v-_l,\n.ContentElement-module_selected__1uFZP .ContentElement-module_tr__l_gbk,\n.ContentElement-module_selected__1uFZP .ContentElement-module_tl__NrB8G,\n.ContentElement-module_selectable__2oRzN:hover .ContentElement-module_bl__2w5xM,\n.ContentElement-module_selectable__2oRzN:hover .ContentElement-module_br__3v-_l,\n.ContentElement-module_selectable__2oRzN:hover .ContentElement-module_tr__l_gbk,\n.ContentElement-module_selectable__2oRzN:hover .ContentElement-module_tl__NrB8G {\n opacity: 0.8;\n}\n\n.ContentElement-module_bl__2w5xM {\n bottom: -6px;\n left: -6px;\n border-bottom: solid 1px currentColor;\n border-left: solid 1px currentColor;\n}\n\n.ContentElement-module_br__3v-_l {\n bottom: -6px;\n right: -6px;\n border-bottom: solid 1px currentColor;\n border-right: solid 1px currentColor;\n}\n\n.ContentElement-module_tr__l_gbk {\n top: -6px;\n right: -6px;\n border-top: solid 1px currentColor;\n border-right: solid 1px currentColor;\n}\n\n.ContentElement-module_tl__NrB8G {\n top: -6px;\n left: -6px;\n border-top: solid 1px currentColor;\n border-left: solid 1px currentColor;\n}\n\n.ContentElement-module_selected__1uFZP:hover:after,\n.ContentElement-module_selected__1uFZP:after {\n border: solid 1px currentColor;\n opacity: 0.8;\n pointer-events: none;\n}\n";
1974
+ var styles$f = {"selectionWidth":"1px","selectionPadding":"-6px","selectionPadding2":"-5px","outer":"ContentElement-module_outer__3ZsNV","selectable":"ContentElement-module_selectable__2oRzN","bl":"ContentElement-module_bl__2w5xM","br":"ContentElement-module_br__3v-_l","tr":"ContentElement-module_tr__l_gbk","tl":"ContentElement-module_tl__NrB8G","selected":"ContentElement-module_selected__1uFZP"};
1975
+ styleInject(css$g);
1901
1976
 
1902
- if (dirty && !rafId) {
1903
- rafId = requestAnimationFrame(onResized);
1904
- }
1977
+ var css$h = "\n\n.InsertContentElementIndicator-module_root__2KRRn {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center;\n cursor: pointer;\n opacity: 0;\n}\n\n.InsertContentElementIndicator-module_before__1EEFz {\n bottom: 100%;\n}\n\n.InsertContentElementIndicator-module_after__2YmaD {\n top: 100%;\n}\n\n.InsertContentElementIndicator-module_root__2KRRn:hover {\n opacity: 1;\n}\n\n.InsertContentElementIndicator-module_box__3EIMv svg {\n vertical-align: middle;\n oopacity: 0.8;\n}\n\n.InsertContentElementIndicator-module_bar__c-Ifz {\n background-color: currentColor;\n position: absolute;\n top: 50%;\n height: 1px;\n oopacity: 0.5;\n width: calc(50% - 15px);\n}\n\n.InsertContentElementIndicator-module_left__13U3P {\n left: -6px;\n}\n\n.InsertContentElementIndicator-module_right__lSfoH {\n right: -6px;\n}\n\n.InsertContentElementIndicator-module_selected__3sk0q.InsertContentElementIndicator-module_root__2KRRn {\n opacity: 0.8;\n}\n\n.InsertContentElementIndicator-module_selected__3sk0q .InsertContentElementIndicator-module_right__lSfoH,\n.InsertContentElementIndicator-module_selected__3sk0q .InsertContentElementIndicator-module_left__13U3P {\n width: 13px;\n background-color: currentColor;\n oopacity: 0.8;\n height: 5px;\n top: calc(50% - 2px);\n}\n\n.InsertContentElementIndicator-module_selected__3sk0q .InsertContentElementIndicator-module_right__lSfoH {\n right: -6px;\n}\n\n.InsertContentElementIndicator-module_selected__3sk0q .InsertContentElementIndicator-module_left__13U3P {\n left: -6px;\n}\n\n.InsertContentElementIndicator-module_middle__2TTQX {\n opacity: 0;\n width: 100%;\n left: 0;\n top: 50%;\n height: 1px;\n}\n\n.InsertContentElementIndicator-module_selected__3sk0q .InsertContentElementIndicator-module_middle__2TTQX {\n opacity: 1;\n}\n\n.InsertContentElementIndicator-module_selected__3sk0q .InsertContentElementIndicator-module_box__3EIMv {\n opacity: 0;\n}\n";
1978
+ var styles$g = {"selectionColor":"#1c86fe","backgroundColor":"rgba(0, 0, 0, 0.8)","borderColor":"rgba(255, 255, 255, 0.2)","root":"InsertContentElementIndicator-module_root__2KRRn","before":"InsertContentElementIndicator-module_before__1EEFz","after":"InsertContentElementIndicator-module_after__2YmaD","box":"InsertContentElementIndicator-module_box__3EIMv","bar":"InsertContentElementIndicator-module_bar__c-Ifz","left":"InsertContentElementIndicator-module_left__13U3P InsertContentElementIndicator-module_bar__c-Ifz","right":"InsertContentElementIndicator-module_right__lSfoH InsertContentElementIndicator-module_bar__c-Ifz","selected":"InsertContentElementIndicator-module_selected__3sk0q","middle":"InsertContentElementIndicator-module_middle__2TTQX InsertContentElementIndicator-module_bar__c-Ifz"};
1979
+ styleInject(css$h);
1905
1980
 
1906
- reset();
1907
- };
1981
+ function _extends$9() {
1982
+ _extends$9 = Object.assign || function (target) {
1983
+ for (var i = 1; i < arguments.length; i++) {
1984
+ var source = arguments[i];
1908
1985
 
1909
- var addEvent = function addEvent(el, name, cb) {
1910
- if (el.attachEvent) {
1911
- el.attachEvent('on' + name, cb);
1912
- } else {
1913
- el.addEventListener(name, cb);
1986
+ for (var key in source) {
1987
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
1988
+ target[key] = source[key];
1914
1989
  }
1915
- };
1990
+ }
1991
+ }
1916
1992
 
1917
- addEvent(expand, 'scroll', onScroll);
1918
- addEvent(shrink, 'scroll', onScroll); // Fix for custom Elements
1993
+ return target;
1994
+ };
1919
1995
 
1920
- requestAnimationFrame(reset);
1921
- }
1996
+ return _extends$9.apply(this, arguments);
1997
+ }
1998
+ var PlusIcon = (function (_ref) {
1999
+ var _ref$styles = _ref.styles,
2000
+ props = _objectWithoutProperties(_ref, ["styles"]);
1922
2001
 
1923
- forEachElement(element, function (elem) {
1924
- attachResizeEvent(elem, callback);
1925
- });
2002
+ return React.createElement("svg", _extends$9({
2003
+ xmlns: "http://www.w3.org/2000/svg",
2004
+ viewBox: "0 0 512 512"
2005
+ }, props), React.createElement("path", {
2006
+ 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"
2007
+ }));
2008
+ });
1926
2009
 
1927
- this.detach = function (ev) {
1928
- ResizeSensor.detach(element, ev);
1929
- };
2010
+ function InsertContentElementIndicator(_ref) {
2011
+ var contentElementId = _ref.contentElementId,
2012
+ selected = _ref.selected,
2013
+ position = _ref.position;
1930
2014
 
1931
- this.reset = function () {
1932
- element.resizeSensor.resetSensor();
1933
- };
1934
- };
2015
+ var _useEditorSelection = useEditorSelection({
2016
+ id: contentElementId,
2017
+ type: position
2018
+ }),
2019
+ isSelected = _useEditorSelection.isSelected,
2020
+ select = _useEditorSelection.select;
1935
2021
 
1936
- ResizeSensor.reset = function (element) {
1937
- forEachElement(element, function (elem) {
1938
- elem.resizeSensor.resetSensor();
1939
- });
1940
- };
2022
+ var _useI18n = useI18n({
2023
+ locale: 'ui'
2024
+ }),
2025
+ t = _useI18n.t;
1941
2026
 
1942
- ResizeSensor.detach = function (element, ev) {
1943
- forEachElement(element, function (elem) {
1944
- if (!elem) return;
2027
+ function handleClick(event) {
2028
+ event.stopPropagation();
2029
+ select();
2030
+ }
1945
2031
 
1946
- if (elem.resizedAttached && typeof ev === "function") {
1947
- elem.resizedAttached.remove(ev);
1948
- if (elem.resizedAttached.length()) return;
1949
- }
2032
+ return React.createElement("div", {
2033
+ className: classNames(styles$g.root, styles$g[position], _defineProperty({}, styles$g.selected, isSelected)),
2034
+ title: t('pageflow_scrolled.inline_editing.insert_content_element'),
2035
+ onClick: handleClick
2036
+ }, React.createElement("div", {
2037
+ className: styles$g.box
2038
+ }, React.createElement(PlusIcon, {
2039
+ width: 20,
2040
+ height: 20,
2041
+ fill: "currentColor"
2042
+ })), React.createElement("div", {
2043
+ className: styles$g.left
2044
+ }), React.createElement("div", {
2045
+ className: styles$g.right
2046
+ }), React.createElement("div", {
2047
+ className: styles$g.middle
2048
+ }));
2049
+ }
1950
2050
 
1951
- if (elem.resizeSensor) {
1952
- if (elem.contains(elem.resizeSensor)) {
1953
- elem.removeChild(elem.resizeSensor);
1954
- }
2051
+ function ContentElement(props) {
2052
+ var Component = api.contentElementTypes.getComponent(props.type);
1955
2053
 
1956
- delete elem.resizeSensor;
1957
- delete elem.resizedAttached;
1958
- }
1959
- });
1960
- };
2054
+ var _useEditorSelection = useEditorSelection({
2055
+ id: props.id,
2056
+ type: 'contentElement'
2057
+ }),
2058
+ isSelected = _useEditorSelection.isSelected,
2059
+ isSelectable = _useEditorSelection.isSelectable,
2060
+ select = _useEditorSelection.select,
2061
+ resetSelection = _useEditorSelection.resetSelection;
1961
2062
 
1962
- if (typeof MutationObserver !== "undefined") {
1963
- var observer = new MutationObserver(function (mutations) {
1964
- for (var i in mutations) {
1965
- if (mutations.hasOwnProperty(i)) {
1966
- var items = mutations[i].addedNodes;
1967
-
1968
- for (var j = 0; j < items.length; j++) {
1969
- if (items[j].resizeSensor) {
1970
- ResizeSensor.reset(items[j]);
1971
- }
1972
- }
1973
- }
2063
+ if (select) {
2064
+ var _classNames;
2065
+
2066
+ return React.createElement("div", {
2067
+ className: classNames(styles$f.outer)
2068
+ }, props.first && React.createElement(InsertContentElementIndicator, {
2069
+ position: "before",
2070
+ contentElementId: props.id
2071
+ }), React.createElement("div", {
2072
+ className: classNames((_classNames = {}, _defineProperty(_classNames, styles$f.selected, isSelected), _defineProperty(_classNames, styles$f.selectable, isSelectable), _classNames)),
2073
+ onClick: function onClick(e) {
2074
+ e.stopPropagation();
2075
+ isSelectable ? select() : resetSelection();
1974
2076
  }
1975
- });
1976
- document.addEventListener("DOMContentLoaded", function (event) {
1977
- observer.observe(document.body, {
1978
- childList: true,
1979
- subtree: true
1980
- });
2077
+ }, React.createElement(Component, {
2078
+ sectionProps: props.sectionProps,
2079
+ configuration: props.itemProps,
2080
+ contentElementId: props.id
2081
+ }), React.createElement("div", {
2082
+ className: styles$f.tl
2083
+ }), React.createElement("div", {
2084
+ className: styles$f.bl
2085
+ }), React.createElement("div", {
2086
+ className: styles$f.tr
2087
+ }), React.createElement("div", {
2088
+ className: styles$f.br
2089
+ })), React.createElement(InsertContentElementIndicator, {
2090
+ position: "after",
2091
+ contentElementId: props.id
2092
+ }));
2093
+ } else {
2094
+ return React.createElement(Component, {
2095
+ sectionProps: props.sectionProps,
2096
+ configuration: props.itemProps
1981
2097
  });
1982
2098
  }
2099
+ }
1983
2100
 
1984
- return ResizeSensor;
1985
- });
1986
- });
1987
-
1988
- var cssElementQueries = {
1989
- ResizeSensor: ResizeSensor
1990
- };
1991
- var cssElementQueries_1 = cssElementQueries.ResizeSensor;
1992
-
1993
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1994
-
1995
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
1996
- var defaultProps = {
1997
- handleSize: 40,
1998
- handle: null,
1999
- hover: false,
2000
- leftImageAlt: '',
2001
- leftImageCss: {},
2002
- leftImageLabel: null,
2003
- onSliderPositionChange: function onSliderPositionChange() {},
2004
- rightImageAlt: '',
2005
- rightImageCss: {},
2006
- rightImageLabel: null,
2007
- skeleton: null,
2008
- sliderLineColor: '#ffffff',
2009
- sliderLineWidth: 2,
2010
- sliderPositionPercentage: 0.5
2011
- };
2012
-
2013
- function ReactCompareImage(props) {
2014
- var handleSize = props.handleSize,
2015
- handle = props.handle,
2016
- hover = props.hover,
2017
- leftImage = props.leftImage,
2018
- leftImageAlt = props.leftImageAlt,
2019
- leftImageCss = props.leftImageCss,
2020
- leftImageLabel = props.leftImageLabel,
2021
- onSliderPositionChange = props.onSliderPositionChange,
2022
- rightImage = props.rightImage,
2023
- rightImageAlt = props.rightImageAlt,
2024
- rightImageCss = props.rightImageCss,
2025
- rightImageLabel = props.rightImageLabel,
2026
- skeleton = props.skeleton,
2027
- sliderLineColor = props.sliderLineColor,
2028
- sliderLineWidth = props.sliderLineWidth,
2029
- sliderPositionPercentage = props.sliderPositionPercentage,
2030
- sliderPosition = props.sliderPosition,
2031
- setSliderPosition = props.setSliderPosition,
2032
- isSliding = props.isSliding,
2033
- setIsSliding = props.setIsSliding,
2034
- classicMode = props.classicMode,
2035
- wiggle = props.wiggle;
2036
-
2037
- var _useState = useState(0),
2038
- _useState2 = _slicedToArray(_useState, 2),
2039
- containerWidth = _useState2[0],
2040
- setContainerWidth = _useState2[1];
2041
-
2042
- var _useState3 = useState(false),
2043
- _useState4 = _slicedToArray(_useState3, 2),
2044
- leftImgLoaded = _useState4[0],
2045
- setLeftImgLoaded = _useState4[1];
2046
-
2047
- var _useState5 = useState(false),
2048
- _useState6 = _slicedToArray(_useState5, 2),
2049
- rightImgLoaded = _useState6[0],
2050
- setRightImgLoaded = _useState6[1];
2051
-
2052
- var containerRef = useRef();
2053
- var rightImageRef = useRef();
2054
- var leftImageRef = useRef(); // keep track container's width in local state
2055
-
2056
- useEffect(function () {
2057
- var updateContainerWidth = function updateContainerWidth() {
2058
- var currentContainerWidth = containerRef.current.getBoundingClientRect().width;
2059
- setContainerWidth(currentContainerWidth);
2060
- }; // initial execution must be done manually
2061
-
2062
-
2063
- updateContainerWidth(); // update local state if container size is changed
2064
-
2065
- var containerElement = containerRef.current;
2066
- var resizeSensor = new cssElementQueries_1(containerElement, function () {
2067
- updateContainerWidth();
2068
- });
2069
- return function () {
2070
- resizeSensor.detach(containerElement);
2071
- };
2072
- }, []);
2073
- useEffect(function () {
2074
- // consider the case where loading image is completed immediately
2075
- // due to the cache etc.
2076
- var alreadyDone = leftImageRef.current.complete;
2077
- alreadyDone && setLeftImgLoaded(true);
2078
- return function () {
2079
- // when the left image source is changed
2080
- setLeftImgLoaded(false);
2081
- };
2082
- }, [leftImage]);
2083
- useEffect(function () {
2084
- // consider the case where loading image is completed immediately
2085
- // due to the cache etc.
2086
- var alreadyDone = rightImageRef.current.complete;
2087
- alreadyDone && setRightImgLoaded(true);
2088
- return function () {
2089
- // when the right image source is changed
2090
- setRightImgLoaded(false);
2091
- };
2092
- }, [rightImage]);
2093
- var allImagesLoaded = rightImgLoaded && leftImgLoaded;
2094
- useEffect(function () {
2095
- var handleSliding = function handleSliding(event) {
2096
- var e = event || window.event; // Calc Cursor Position from the left edge of the viewport
2097
-
2098
- var cursorXfromViewport = e.touches ? e.touches[0].pageX : e.pageX; // Calc Cursor Position from the left edge of the window (consider any page scrolling)
2099
-
2100
- var cursorXfromWindow = cursorXfromViewport - window.pageXOffset; // Calc Cursor Position from the left edge of the image
2101
-
2102
- var imagePosition = rightImageRef.current.getBoundingClientRect();
2103
- var pos = cursorXfromWindow - imagePosition.left; // Set minimum and maximum values to prevent the slider from overflowing
2104
-
2105
- var minPos = 0 + sliderLineWidth / 2;
2106
- var maxPos = containerWidth - sliderLineWidth / 2;
2107
- if (pos < minPos) pos = minPos;
2108
- if (pos > maxPos) pos = maxPos;
2109
- setSliderPosition(pos / containerWidth); // If there's a callback function, invoke it everytime the slider changes
2110
-
2111
- if (onSliderPositionChange) {
2112
- onSliderPositionChange(pos / containerWidth);
2113
- }
2114
- };
2115
-
2116
- var startSliding = function startSliding(e) {
2117
- setIsSliding(true); // Prevent default behavior other than mobile scrolling
2118
-
2119
- if (!('touches' in e)) {
2120
- e.preventDefault();
2121
- } // Slide the image even if you just click or tap (not drag)
2122
-
2123
-
2124
- handleSliding(e);
2125
- window.addEventListener('mousemove', handleSliding); // 07
2126
-
2127
- window.addEventListener('touchmove', handleSliding); // 08
2128
- };
2129
-
2130
- var finishSliding = function finishSliding() {
2131
- setIsSliding(false);
2132
- window.removeEventListener('mousemove', handleSliding);
2133
- window.removeEventListener('touchmove', handleSliding);
2134
- };
2135
-
2136
- var containerElement = containerRef.current;
2137
-
2138
- if (allImagesLoaded) {
2139
- if (classicMode) {
2140
- // it's necessary to reset event handlers each time the canvasWidth changes
2141
- // for mobile
2142
- containerElement.addEventListener('touchstart', startSliding); // 01
2143
-
2144
- window.addEventListener('touchend', finishSliding); // 02
2145
- // for desktop
2146
-
2147
- if (hover) {
2148
- containerElement.addEventListener('mousemove', handleSliding); // 03
2149
-
2150
- containerElement.addEventListener('mouseleave', finishSliding); // 04
2151
- } else {
2152
- containerElement.addEventListener('mousedown', startSliding); // 05
2153
-
2154
- window.addEventListener('mouseup', finishSliding); // 06
2155
- }
2156
- }
2157
- }
2158
-
2159
- return function () {
2160
- if (classicMode) {
2161
- // cleanup all event resteners
2162
- containerElement.removeEventListener('touchstart', startSliding); // 01
2163
-
2164
- window.removeEventListener('touchend', finishSliding); // 02
2165
-
2166
- containerElement.removeEventListener('mousemove', handleSliding); // 03
2167
-
2168
- containerElement.removeEventListener('mouseleave', finishSliding); // 04
2169
-
2170
- containerElement.removeEventListener('mousedown', startSliding); // 05
2171
-
2172
- window.removeEventListener('mouseup', finishSliding); // 06
2173
-
2174
- window.removeEventListener('mousemove', handleSliding); // 07
2175
-
2176
- window.removeEventListener('touchmove', handleSliding); // 08
2177
- }
2178
- };
2179
- }, [allImagesLoaded, containerWidth, hover, sliderLineWidth]); // eslint-disable-line
2180
- // Image size set as follows.
2181
- //
2182
- // 1. right(under) image:
2183
- // width = 100% of container width
2184
- // height = auto
2185
- //
2186
- // 2. left(over) imaze:
2187
- // width = 100% of container width
2188
- // height = right image's height
2189
- // (protrudes is hidden by css 'object-fit: hidden')
2190
-
2191
- var styles = {
2192
- container: {
2193
- boxSizing: 'border-box',
2194
- position: 'relative',
2195
- width: '100%',
2196
- overflow: 'hidden'
2197
- },
2198
- rightImage: _objectSpread$3({
2199
- display: 'block',
2200
- height: 'auto',
2201
- // Respect the aspect ratio
2202
- width: '100%'
2203
- }, rightImageCss),
2204
- leftImage: _objectSpread$3({
2205
- clip: "rect(auto, ".concat(containerWidth * sliderPosition, "px, auto, auto)"),
2206
- display: 'block',
2207
- height: '100%',
2208
- // fit to the height of right(under) image
2209
- objectFit: 'cover',
2210
- // protrudes is hidden
2211
- position: 'absolute',
2212
- top: 0,
2213
- width: '100%'
2214
- }, leftImageCss),
2215
- slider: {
2216
- alignItems: 'center',
2217
- cursor: !hover && 'ew-resize',
2218
- display: 'flex',
2219
- flexDirection: 'column',
2220
- height: '100%',
2221
- justifyContent: 'center',
2222
- left: "".concat(containerWidth * sliderPosition - handleSize / 2, "px"),
2223
- position: 'absolute',
2224
- top: 0,
2225
- width: "".concat(handleSize, "px")
2226
- },
2227
- line: {
2228
- background: sliderLineColor,
2229
- boxShadow: '0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)',
2230
- flex: '0 1 auto',
2231
- height: '100%',
2232
- width: "".concat(sliderLineWidth, "px")
2233
- },
2234
- handleCustom: {
2235
- alignItems: 'center',
2236
- boxSizing: 'border-box',
2237
- display: 'flex',
2238
- flex: '1 0 auto',
2239
- height: 'auto',
2240
- justifyContent: 'center',
2241
- width: 'auto'
2242
- },
2243
- handleDefault: {
2244
- alignItems: 'center',
2245
- border: "".concat(sliderLineWidth, "px solid ").concat(sliderLineColor),
2246
- borderRadius: '100%',
2247
- boxShadow: '0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)',
2248
- boxSizing: 'border-box',
2249
- display: 'flex',
2250
- flex: '1 0 auto',
2251
- height: "".concat(handleSize, "px"),
2252
- justifyContent: 'center',
2253
- width: "".concat(handleSize, "px")
2254
- },
2255
- leftArrow: {
2256
- border: "inset ".concat(handleSize * 0.15, "px rgba(0,0,0,0)"),
2257
- borderRight: "".concat(handleSize * 0.15, "px solid ").concat(sliderLineColor),
2258
- height: '0px',
2259
- marginLeft: "-".concat(handleSize * 0.25, "px"),
2260
- // for IE11
2261
- marginRight: "".concat(handleSize * 0.25, "px"),
2262
- width: '0px'
2263
- },
2264
- rightArrow: {
2265
- border: "inset ".concat(handleSize * 0.15, "px rgba(0,0,0,0)"),
2266
- borderLeft: "".concat(handleSize * 0.15, "px solid ").concat(sliderLineColor),
2267
- height: '0px',
2268
- marginRight: "-".concat(handleSize * 0.25, "px"),
2269
- // for IE11
2270
- width: '0px'
2271
- },
2272
- leftLabel: {
2273
- background: 'rgba(0, 0, 0, 0.5)',
2274
- color: 'white',
2275
- left: '5%',
2276
- opacity: isSliding ? 0 : 1,
2277
- padding: '10px 20px',
2278
- position: 'absolute',
2279
- top: '50%',
2280
- transform: 'translate(0,-50%)',
2281
- transition: 'opacity 0.1s ease-out 0.5s',
2282
- maxWidth: '30%',
2283
- WebkitUserSelect: 'none',
2284
- WebkitTouchCallout: 'none'
2285
- },
2286
- rightLabel: {
2287
- background: 'rgba(0, 0, 0, 0.5)',
2288
- color: 'white',
2289
- opacity: isSliding ? 0 : 1,
2290
- padding: '10px 20px',
2291
- position: 'absolute',
2292
- right: '5%',
2293
- top: '50%',
2294
- transform: 'translate(0,-50%)',
2295
- transition: 'opacity 0.1s ease-out 0.5s',
2296
- maxWidth: '30%',
2297
- WebkitUserSelect: 'none',
2298
- WebkitTouchCallout: 'none'
2299
- }
2300
- };
2301
- return React.createElement(React.Fragment, null, skeleton && !allImagesLoaded && React.createElement("div", {
2302
- style: _objectSpread$3({}, styles.container)
2303
- }, skeleton), React.createElement("div", {
2304
- style: _objectSpread$3({}, styles.container, {
2305
- display: allImagesLoaded ? 'block' : 'none'
2306
- }),
2307
- ref: containerRef,
2308
- "data-testid": "container"
2309
- }, React.createElement("img", {
2310
- onLoad: function onLoad() {
2311
- return setRightImgLoaded(true);
2312
- },
2313
- alt: rightImageAlt,
2314
- "data-testid": "right-image",
2315
- ref: rightImageRef,
2316
- src: rightImage,
2317
- style: styles.rightImage
2318
- }), React.createElement("img", {
2319
- onLoad: function onLoad() {
2320
- return setLeftImgLoaded(true);
2321
- },
2322
- alt: leftImageAlt,
2323
- "data-testid": "left-image",
2324
- ref: leftImageRef,
2325
- src: leftImage,
2326
- style: styles.leftImage
2327
- }), React.createElement("div", {
2328
- style: styles.slider,
2329
- className: classnames(_defineProperty({}, 'wiggle', wiggle))
2330
- }, React.createElement("div", {
2331
- style: styles.line
2332
- }), handle ? React.createElement("div", {
2333
- style: styles.handleCustom
2334
- }, handle) : React.createElement("div", {
2335
- style: styles.handleDefault
2336
- }, React.createElement("div", {
2337
- style: styles.leftArrow
2338
- }), React.createElement("div", {
2339
- style: styles.rightArrow
2340
- })), React.createElement("div", {
2341
- style: styles.line
2342
- })), leftImageLabel && React.createElement("div", {
2343
- style: styles.leftLabel
2344
- }, leftImageLabel), rightImageLabel && React.createElement("div", {
2345
- style: styles.rightLabel
2346
- }, rightImageLabel)));
2347
- }
2348
-
2349
- ReactCompareImage.defaultProps = defaultProps;
2350
-
2351
- var css$e = ".BeforeAfter-module_container__38Dru {\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.wiggle {\n animation: BeforeAfter-module_shake__3iLe8 1.5s cubic-bezier(.36,.07,.19,.97) both;\n}\n\n@keyframes BeforeAfter-module_shake__3iLe8 {\n 10%, 90% {\n transform: translate3d(-20%, 0, 0);\n }\n\n 20%, 80% {\n transform: translate3d(40%, 0, 0);\n }\n\n 30%, 50%, 70% {\n transform: translate3d(-80%, 0, 0);\n }\n\n 40%, 60% {\n transform: translate3d(80%, 0, 0);\n }\n}";
2352
- var styles$d = {"container":"BeforeAfter-module_container__38Dru","shake":"BeforeAfter-module_shake__3iLe8"};
2353
- styleInject(css$e);
2354
-
2355
- var BeforeAfter = (function (_ref) {
2356
- var state = _ref.state,
2357
- leftImageLabel = _ref.leftImageLabel,
2358
- rightImageLabel = _ref.rightImageLabel,
2359
- _ref$startPos = _ref.startPos,
2360
- startPos = _ref$startPos === void 0 ? 0 : _ref$startPos,
2361
- _ref$slideMode = _ref.slideMode,
2362
- slideMode = _ref$slideMode === void 0 ? 'both' : _ref$slideMode;
2363
-
2364
- var _useState = useState({
2365
- pos: window.pageYOffset || document.documentElement.scrollTop,
2366
- dir: 'unknown'
2367
- }),
2368
- _useState2 = _slicedToArray(_useState, 2),
2369
- scrollPos = _useState2[0],
2370
- setScrollPos = _useState2[1];
2371
-
2372
- var _useState3 = useState(false),
2373
- _useState4 = _slicedToArray(_useState3, 2),
2374
- isSliding = _useState4[0],
2375
- setIsSliding = _useState4[1];
2376
-
2377
- var _useState5 = useState(startPos),
2378
- _useState6 = _slicedToArray(_useState5, 2),
2379
- beforeAfterPos = _useState6[0],
2380
- setBeforeAfterPos = _useState6[1];
2381
-
2382
- var beforeAfterRef = useRef();
2383
- var slideOnScroll = slideMode === 'both' || slideMode === 'scroll';
2384
- var slideClassic = slideMode === 'both' || slideMode === 'classic';
2385
- var current = beforeAfterRef.current;
2386
-
2387
- var _useState7 = useState(false),
2388
- _useState8 = _slicedToArray(_useState7, 2),
2389
- wiggle = _useState8[0],
2390
- setWiggle = _useState8[1];
2391
-
2392
- useEffect(function () {
2393
- var node = current;
2394
-
2395
- if (node) {
2396
- setWiggle(state === 'active');
2397
- }
2398
- }, [state, current]);
2399
- useEffect(function () {
2400
- var node = current;
2401
-
2402
- function handler() {
2403
- if (node) {
2404
- setScrollPos(function (prevPos) {
2405
- var currPos = window.pageYOffset || document.documentElement.scrollTop;
2406
-
2407
- if (currPos > prevPos['pos']) {
2408
- return {
2409
- pos: currPos,
2410
- dir: 'down'
2411
- };
2412
- }
2413
-
2414
- if (currPos < prevPos['pos']) {
2415
- return {
2416
- pos: currPos,
2417
- dir: 'up'
2418
- };
2419
- }
2420
-
2421
- return prevPos;
2422
- });
2423
-
2424
- if (slideOnScroll) {
2425
- if (scrollPos['dir'] === 'down' && beforeAfterPos < 1) {
2426
- setBeforeAfterPos(function (prev) {
2427
- return prev + 0.025;
2428
- });
2429
- setIsSliding(true);
2430
- setTimeout(function () {
2431
- return setIsSliding(false);
2432
- }, 200);
2433
- } else if (scrollPos['dir'] === 'up' && beforeAfterPos > 0) {
2434
- setBeforeAfterPos(function (prev) {
2435
- return prev - 0.025;
2436
- });
2437
- setIsSliding(true);
2438
- setTimeout(function () {
2439
- return setIsSliding(false);
2440
- }, 250);
2441
- } else {
2442
- setIsSliding(false);
2443
- }
2444
- }
2445
- }
2446
- }
2447
-
2448
- if (!node) {
2449
- return;
2450
- }
2451
-
2452
- setTimeout(handler, 0);
2453
-
2454
- if (state === 'active') {
2455
- window.addEventListener('scroll', handler);
2456
- return function () {
2457
- window.removeEventListener('scroll', handler);
2458
- };
2459
- }
2460
- }, [current, setBeforeAfterPos, scrollPos, state, setIsSliding]);
2461
- var awsBucket = '//s3-eu-west-1.amazonaws.com/de.codevise.pageflow.development/pageflow-next/presentation-images/';
2462
- var beforeImage = awsBucket + 'before_after/haldern_church1.jpg';
2463
- var afterImage = awsBucket + 'before_after/haldern_church2.jpg';
2464
- return React.createElement("div", {
2465
- ref: beforeAfterRef,
2466
- className: styles$d.container
2467
- }, React.createElement(ReactCompareImage, {
2468
- leftImage: beforeImage,
2469
- rightImage: afterImage,
2470
- sliderPosition: beforeAfterPos,
2471
- setSliderPosition: setBeforeAfterPos,
2472
- isSliding: isSliding,
2473
- setIsSliding: setIsSliding,
2474
- leftImageLabel: leftImageLabel,
2475
- rightImageLabel: rightImageLabel,
2476
- classicMode: slideClassic,
2477
- wiggle: wiggle
2478
- }));
2479
- });
2480
-
2481
- var css$f = ".Backdrop-module_Backdrop__1w4UZ {\n width: 100%;\n z-index: 2;\n}\n\n.Backdrop-module_offScreen__2_FYZ {\n}\n";
2482
- var styles$e = {"Backdrop":"Backdrop-module_Backdrop__1w4UZ","offScreen":"Backdrop-module_offScreen__2_FYZ"};
2483
- styleInject(css$f);
2484
-
2485
- function Backdrop(props) {
2486
- var _useDimension = useDimension(),
2487
- _useDimension2 = _slicedToArray(_useDimension, 2),
2488
- containerDimension = _useDimension2[0],
2489
- setContainerRef = _useDimension2[1];
2490
-
2491
- return React.createElement("div", {
2492
- className: classnames(styles$e.Backdrop, props.transitionStyles.backdrop, props.transitionStyles["backdrop-".concat(props.state)], _defineProperty({}, styles$e.offScreen, props.offScreen))
2493
- }, React.createElement("div", {
2494
- className: props.transitionStyles.backdropInner
2495
- }, React.createElement("div", {
2496
- className: props.transitionStyles.backdropInner2
2497
- }, props.children(renderContent(props, containerDimension, setContainerRef)))));
2498
- }
2499
- Backdrop.defaultProps = {
2500
- transitionStyles: {}
2501
- };
2502
-
2503
- function renderContent(props, containerDimension, setContainerRef) {
2504
- if (props.image.toString().startsWith('#')) {
2505
- return React.createElement(FillColor, {
2506
- color: props.image
2507
- });
2508
- } else if (props.image.toString().startsWith('video')) {
2509
- var video = videos[props.image];
2510
- return React.createElement(Fullscreen, {
2511
- ref: setContainerRef
2512
- }, React.createElement(Video, {
2513
- state: props.onScreen ? 'active' : 'inactive',
2514
- id: props.image,
2515
- offset: props.offset,
2516
- interactive: props.interactive,
2517
- nextSectionOnEnd: props.nextSectionOnEnd
2518
- }), React.createElement(MotifArea, {
2519
- ref: props.motifAreaRef,
2520
- image: video,
2521
- containerWidth: containerDimension.width,
2522
- containerHeight: containerDimension.height
2523
- }));
2524
- } else if (props.image.toString().startsWith('beforeAfter')) {
2525
- return React.createElement(Fullscreen, {
2526
- ref: setContainerRef
2527
- }, React.createElement(BeforeAfter, {
2528
- state: props.state,
2529
- leftImageLabel: props.leftImageLabel,
2530
- rightImageLabel: props.rightImageLabel,
2531
- startPos: props.startPos,
2532
- slideMode: props.slideMode
2533
- }));
2534
- } else {
2535
- return React.createElement(Fullscreen, {
2536
- ref: setContainerRef
2537
- }, React.createElement(Image, {
2538
- id: props.image
2539
- }), React.createElement(Image, {
2540
- id: props.imageMobile,
2541
- mobile: true
2542
- }), React.createElement(MotifArea, {
2543
- ref: props.motifAreaRef,
2544
- imageId: props.image,
2545
- containerWidth: containerDimension.width,
2546
- containerHeight: containerDimension.height
2547
- }));
2548
- }
2549
- }
2550
-
2551
- var css$g = ".Foreground-module_Foreground__13ODU {\n position: relative;\n z-index: 3;\n\n box-sizing: border-box;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n.Foreground-module_fullFadeHeight__2p9dx {\n min-height: 51vh;\n}\n\n.Foreground-module_fullHeight__1vMXb {\n min-height: 100vh;\n}\n\n.Foreground-module_fullFadeHeight__2p9dx.Foreground-module_enlarge__14Plm,\n.Foreground-module_fullHeight__1vMXb.Foreground-module_enlarge__14Plm {\n min-height: 130vh;\n}\n\n.Foreground-module_hidden__2dmAx {\n visibility: hidden;\n}\n";
2552
- var styles$f = {"Foreground":"Foreground-module_Foreground__13ODU","fullFadeHeight":"Foreground-module_fullFadeHeight__2p9dx","fullHeight":"Foreground-module_fullHeight__1vMXb","enlarge":"Foreground-module_enlarge__14Plm","hidden":"Foreground-module_hidden__2dmAx"};
2553
- styleInject(css$g);
2554
-
2555
- function Foreground(props) {
2556
- return React.createElement("div", {
2557
- className: className(props)
2558
- }, props.children);
2559
- }
2560
-
2561
- function className(props) {
2562
- var _classNames;
2563
-
2564
- return classnames(styles$f.Foreground, props.transitionStyles.foreground, props.transitionStyles["foreground-".concat(props.state)], styles$f["".concat(props.heightMode, "Height")], (_classNames = {}, _defineProperty(_classNames, styles$f.hidden, props.hidden), _defineProperty(_classNames, styles$f.enlarge, props.hidden && !props.disableEnlarge), _classNames));
2565
- }
2566
-
2567
- function _arrayWithoutHoles(arr) {
2568
- if (Array.isArray(arr)) {
2569
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
2570
- arr2[i] = arr[i];
2571
- }
2572
-
2573
- return arr2;
2574
- }
2575
- }
2576
-
2577
- function _iterableToArray(iter) {
2578
- if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
2579
- }
2580
-
2581
- function _nonIterableSpread() {
2582
- throw new TypeError("Invalid attempt to spread non-iterable instance");
2583
- }
2584
-
2585
- function _toConsumableArray(arr) {
2586
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
2587
- }
2588
-
2589
- var css$h = "\n\n.Heading-module_Heading__1YSiy {\n font-size: 66px;\n font-weight: 700;\n margin-top: 0;\n margin-bottom: 0.5em;\n padding-top: 0.5em;\n}\n\n.Heading-module_first__1yPxD {\n font-size: 110px;\n line-height: 1;\n}\n\n@media (orientation: landscape) {\n .Heading-module_first__1yPxD {\n padding-top: 25%;\n }\n}\n\n@media (max-width: 600px) {\n .Heading-module_Heading__1YSiy {\n font-size: 40px;\n }\n\n .Heading-module_first__1yPxD {\n font-size: 66px;\n }\n}\n";
2590
- var styles$g = {"text-l":"40px","text-xl":"66px","text-2xl":"110px","Heading":"Heading-module_Heading__1YSiy","first":"Heading-module_first__1yPxD"};
2591
- styleInject(css$h);
2592
-
2593
- function Heading(props) {
2594
- return React.createElement("h1", {
2595
- className: classnames(styles$g.Heading, _defineProperty({}, styles$g.first, props.first)),
2596
- style: props.style
2597
- }, props.children);
2598
- }
2599
-
2600
- var css$i = "\n\n.TextBlock-module_TextBlock__5Zpj7 {\n font-size: 22px;\n line-height: 1.4;\n\n padding: 1em 0;\n margin-top: 0;\n margin-bottom: 0;\n text-shadow: none;\n}\n\n.TextBlock-module_dummy__3W5ls {\n opacity: 0.7;\n}\n\n.TextBlock-module_TextBlock__5Zpj7 a {\n color: #fff;\n word-wrap: break-word;\n}\n\n.TextBlock-module_TextBlock__5Zpj7 ol,\n.TextBlock-module_TextBlock__5Zpj7 ul {\n padding-left: 20px;\n}\n";
2601
- var styles$h = {"text-base":"22px","TextBlock":"TextBlock-module_TextBlock__5Zpj7","dummy":"TextBlock-module_dummy__3W5ls"};
2602
- styleInject(css$i);
2603
-
2604
- function TextBlock(props) {
2605
- return React.createElement("div", {
2606
- className: classnames(styles$h.TextBlock, _defineProperty({}, styles$h.dummy, props.dummy)),
2607
- style: props.style,
2608
- dangerouslySetInnerHTML: {
2609
- __html: props.children
2610
- }
2611
- });
2612
- }
2613
-
2614
- var css$j = ".InlineCaption-module_root__1R8Ib {\n padding: 3px 10px 5px;\n background-color: #fff;\n color: #222;\n font-size: text-s;\n line-height: 1.4;\n text-shadow: none;\n}\n";
2615
- var styles$i = {"text-base":"22px","root":"InlineCaption-module_root__1R8Ib"};
2616
- styleInject(css$j);
2617
-
2618
- function InlineCaption(props) {
2619
- if (props.text) {
2620
- return React.createElement("div", {
2621
- className: styles$i.root
2622
- }, props.text);
2623
- } else {
2624
- return null;
2625
- }
2626
- }
2627
-
2628
- var css$k = ".InlineImage-module_root__1DvUb {\n position: relative;\n margin-top: 1em;\n}\n\n.InlineImage-module_container__Pui7E {\n position: relative;\n margin-top: 1em;\n}\n\n.InlineImage-module_spacer__2rMkE {\n padding-top: 75%;\n}\n\n.InlineImage-module_inner__2AMK- {\n border: solid 2px #fff;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n";
2629
- var styles$j = {"root":"InlineImage-module_root__1DvUb","container":"InlineImage-module_container__Pui7E","spacer":"InlineImage-module_spacer__2rMkE","inner":"InlineImage-module_inner__2AMK-"};
2630
- styleInject(css$k);
2631
-
2632
- function InlineImage(props) {
2633
- return React.createElement("div", {
2634
- className: classnames(styles$j.root)
2635
- }, React.createElement("div", {
2636
- className: styles$j.container
2637
- }, React.createElement("div", {
2638
- className: styles$j.spacer
2639
- }, React.createElement("div", {
2640
- className: styles$j.inner
2641
- }, React.createElement(Image, props)))), React.createElement(InlineCaption, {
2642
- text: props.caption
2643
- }));
2644
- }
2645
-
2646
- var css$l = ".InlineVideo-module_root__2UD3D {\n position: relative;\n max-height: 98vh;\n}\n\n.InlineVideo-module_inner__H81_g {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n}\n";
2647
- var styles$k = {"root":"InlineVideo-module_root__2UD3D","inner":"InlineVideo-module_inner__H81_g"};
2648
- styleInject(css$l);
2649
-
2650
- function InlineVideo(props) {
2651
- var ref = useRef();
2652
- var onScreen = useOnScreen(ref, '-50% 0px -50% 0px');
2653
- return React.createElement("div", {
2654
- ref: ref,
2655
- className: classnames(styles$k.root)
2656
- }, React.createElement("div", {
2657
- style: {
2658
- paddingTop: props.wideFormat ? '41.15%' : '56.25%'
2659
- }
2660
- }, React.createElement("div", {
2661
- className: styles$k.inner
2662
- }, React.createElement(Video, Object.assign({}, props, {
2663
- state: onScreen ? 'active' : 'inactive',
2664
- interactive: true
2665
- })))));
2666
- }
2667
-
2668
- var css$m = ".InlineBeforeAfter-module_root__2O9F8 {\n position: relative;\n margin: 0 auto;\n}\n";
2669
- var styles$l = {"root":"InlineBeforeAfter-module_root__2O9F8"};
2670
- styleInject(css$m);
2671
-
2672
- function InlineBeforeAfter(props) {
2673
- var ref = useRef();
2674
- var onScreen = useOnScreen(ref, '-50% 0px -50% 0px');
2675
- return React.createElement("div", {
2676
- ref: ref,
2677
- className: styles$l.root
2678
- }, React.createElement(BeforeAfter, Object.assign({}, props, {
2679
- state: onScreen ? 'active' : 'inactive'
2680
- })));
2681
- }
2682
-
2683
- var css$n = ".SoundDisclaimer-module_soundDisclaimer__1sAiH {\n text-align: center;\n border: 1px solid white;\n border-radius: 4px;\n cursor: pointer;\n font-size: inherit;\n}\n\n.SoundDisclaimer-module_soundDisclaimer__1sAiH:hover {\n background: rgba(255, 255, 255, 0.25);\n}";
2684
- var styles$m = {"soundDisclaimer":"SoundDisclaimer-module_soundDisclaimer__1sAiH"};
2685
- styleInject(css$n);
2686
-
2687
- function UnmuteButton() {
2688
- return React.createElement(MutedContext.Consumer, null, function (mutedSettings) {
2689
- return React.createElement("div", {
2690
- className: classnames(styles$m.soundDisclaimer),
2691
- onClick: function onClick() {
2692
- return mutedSettings.setMuted(false);
2693
- }
2694
- }, React.createElement("p", null, "Dieser Artikel wirkt am besten mit eingeschaltetem Ton.", React.createElement("br", null), "Klicken Sie einmal in dieses Feld, um den Ton f\xFCr die gesamte Geschichte zu aktivieren."));
2695
- });
2696
- }
2697
-
2698
- var loremIpsum1 = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. ';
2699
- var loremIpsum2 = 'At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.';
2700
- var loremIpsum3 = 'Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.';
2701
-
2702
- var templates = {
2703
- heading: {
2704
- name: 'Überschrift',
2705
- component: Heading
2706
- },
2707
- textBlock: {
2708
- name: 'Text Block',
2709
- component: TextBlock
2710
- },
2711
- soundDisclaimer: {
2712
- name: 'Sound Disclaimer',
2713
- component: UnmuteButton
2714
- },
2715
- loremIpsum1: {
2716
- name: 'Blindtext 1',
2717
- component: TextBlock,
2718
- props: {
2719
- children: loremIpsum1
2720
- }
2721
- },
2722
- loremIpsum2: {
2723
- name: 'Blindtext 2',
2724
- component: TextBlock,
2725
- props: {
2726
- children: loremIpsum2
2727
- }
2728
- },
2729
- loremIpsum3: {
2730
- name: 'Blindtext 3',
2731
- component: TextBlock,
2732
- props: {
2733
- children: loremIpsum3
2734
- }
2735
- },
2736
- inlineImage: {
2737
- name: 'Inline Bild',
2738
- component: InlineImage,
2739
- inlinePositioning: true
2740
- },
2741
- inlineVideo: {
2742
- name: 'Inline Video',
2743
- component: InlineVideo,
2744
- inlinePositioning: true
2745
- },
2746
- inlineBeforeAfter: {
2747
- name: 'Inline Before/After',
2748
- component: InlineBeforeAfter,
2749
- inlinePositioning: true
2750
- },
2751
- stickyImage: {
2752
- name: 'Sticky Bild',
2753
- component: InlineImage,
2754
- inlinePositioning: true
2755
- }
2756
- };
2757
-
2758
- function ForegroundItem(props) {
2759
- var template = templates[props.type];
2760
- var Component = template.component;
2761
- return React.createElement(Component, Object.assign({}, template.props, props.itemProps));
2762
- }
2763
-
2764
- function ForegroundItems(props) {
2101
+ function ContentElements(props) {
2765
2102
  return React.createElement(React.Fragment, null, props.items.map(function (item, index) {
2766
- return props.children(item, React.createElement(ForegroundItem, {
2767
- key: index,
2103
+ return props.children(item, React.createElement(ContentElement, {
2104
+ key: item.id,
2105
+ id: item.id,
2768
2106
  type: item.type,
2107
+ first: index === 0,
2769
2108
  position: item.position,
2770
- itemProps: item.props
2109
+ itemProps: item.props,
2110
+ sectionProps: props.sectionProps
2771
2111
  }));
2772
2112
  }));
2773
2113
  }
2774
- ForegroundItems.defaultProps = {
2114
+ ContentElements.defaultProps = {
2775
2115
  children: function children(item, child) {
2776
2116
  return child;
2777
2117
  }
2778
2118
  };
2779
2119
 
2780
- var css$o = ".TwoColumn-module_root__37EqL {\n}\n\n.TwoColumn-module_group__3Hg2y {\n clear: right;\n margin-left: 8%;\n margin-right: 8%;\n}\n\n.TwoColumn-module_group-full__2OT4o {\n margin-left: 0;\n margin-right: 0;\n}\n\n.TwoColumn-module_sticky__4LCDO,\n.TwoColumn-module_inline__1fPfM {\n max-width: 500px;\n}\n\n.TwoColumn-module_right__Fr52a .TwoColumn-module_inline__1fPfM {\n margin-left: auto;\n}\n\n@media (max-width: 949px) {\n .TwoColumn-module_right__Fr52a .TwoColumn-module_sticky__4LCDO {\n margin-left: auto;\n }\n}\n\n@media (min-width: 950px) {\n .TwoColumn-module_sticky__4LCDO {\n position: sticky;\n float: right;\n top: 33%;\n width: 30%;\n max-width: 600px;\n }\n\n .TwoColumn-module_right__Fr52a .TwoColumn-module_sticky__4LCDO {\n float: left;\n }\n}\n";
2781
- var styles$n = {"root":"TwoColumn-module_root__37EqL","group":"TwoColumn-module_group__3Hg2y","group-full":"TwoColumn-module_group-full__2OT4o","sticky":"TwoColumn-module_sticky__4LCDO","inline":"TwoColumn-module_inline__1fPfM","right":"TwoColumn-module_right__Fr52a"};
2782
- styleInject(css$o);
2120
+ var css$i = ".TwoColumn-module_root__37EqL {\n}\n\n.TwoColumn-module_group__3Hg2y {\n clear: right;\n margin-left: 8%;\n margin-right: 8%;\n}\n\n.TwoColumn-module_group-full__2OT4o {\n margin-left: 0;\n margin-right: 0;\n}\n\n.TwoColumn-module_sticky__4LCDO,\n.TwoColumn-module_inline__1fPfM {\n max-width: 500px;\n}\n\n.TwoColumn-module_right__Fr52a .TwoColumn-module_inline__1fPfM {\n margin-left: auto;\n}\n\n@media (max-width: 949px) {\n .TwoColumn-module_right__Fr52a .TwoColumn-module_sticky__4LCDO {\n margin-left: auto;\n }\n}\n\n@media (min-width: 950px) {\n .TwoColumn-module_sticky__4LCDO {\n position: sticky;\n float: right;\n top: 33%;\n width: 30%;\n max-width: 600px;\n }\n\n .TwoColumn-module_right__Fr52a .TwoColumn-module_sticky__4LCDO {\n float: left;\n }\n}\n";
2121
+ var styles$h = {"root":"TwoColumn-module_root__37EqL","group":"TwoColumn-module_group__3Hg2y","group-full":"TwoColumn-module_group-full__2OT4o","sticky":"TwoColumn-module_sticky__4LCDO","inline":"TwoColumn-module_inline__1fPfM","right":"TwoColumn-module_right__Fr52a"};
2122
+ styleInject(css$i);
2783
2123
 
2784
2124
  var availablePositions = ['inline', 'sticky', 'full'];
2785
2125
  function TwoColumn(props) {
2786
2126
  return React.createElement("div", {
2787
- className: classnames(styles$n.root, styles$n[props.align])
2127
+ className: classNames(styles$h.root, styles$h[props.align])
2788
2128
  }, React.createElement("div", {
2789
- className: styles$n.inline,
2129
+ className: styles$h.inline,
2790
2130
  ref: props.contentAreaRef
2791
2131
  }), renderItems(props));
2792
2132
  }
@@ -2798,7 +2138,7 @@ function renderItems(props) {
2798
2138
  return groupItemsByPosition(props.items).map(function (group, index) {
2799
2139
  return React.createElement("div", {
2800
2140
  key: index,
2801
- className: classnames(styles$n.group, styles$n["group-".concat(group.position)])
2141
+ className: classNames(styles$h.group, styles$h["group-".concat(group.position)])
2802
2142
  }, renderItemGroup(props, group, 'sticky'), renderItemGroup(props, group, 'inline'), renderItemGroup(props, group, 'full'));
2803
2143
  });
2804
2144
  }
@@ -2806,8 +2146,9 @@ function renderItems(props) {
2806
2146
  function renderItemGroup(props, group, position) {
2807
2147
  if (group[position].length) {
2808
2148
  return React.createElement("div", {
2809
- className: styles$n[position]
2810
- }, props.children(React.createElement(ForegroundItems, {
2149
+ className: styles$h[position]
2150
+ }, props.children(React.createElement(ContentElements, {
2151
+ sectionProps: props.sectionProps,
2811
2152
  items: group[position]
2812
2153
  })));
2813
2154
  }
@@ -2835,33 +2176,34 @@ function groupItemsByPosition(items) {
2835
2176
  return groups;
2836
2177
  }
2837
2178
 
2838
- var css$p = ".Center-module_outer__3Rr0H {\n margin-left: 8%;\n margin-right: 8%;\n}\n\n.Center-module_outer-full__3dknO {\n margin-left: 0;\n margin-right: 0;\n}\n\n.Center-module_item__1KSs3 {\n margin-left: auto;\n margin-right: auto;\n max-width: 700px;\n}\n\n.Center-module_item-full__1cEuv {\n margin-left: 0;\n margin-right: 0;\n max-width: none;\n}\n\n@media (min-width: 950px) {\n .Center-module_inner-left__2z9Ea {\n float: left;\n width: 60%;\n margin-left: -10%;\n margin-right: 1em;\n margin-bottom: 1em;\n }\n\n .Center-module_inner-right__KBkVt {\n float: right;\n width: 60%;\n margin-right: -10%;\n margin-left: 1em;\n margin-bottom: 1em;\n }\n}\n";
2839
- var styles$o = {"outer":"Center-module_outer__3Rr0H","outer-full":"Center-module_outer-full__3dknO","item":"Center-module_item__1KSs3","item-full":"Center-module_item-full__1cEuv","inner-left":"Center-module_inner-left__2z9Ea","inner-right":"Center-module_inner-right__KBkVt"};
2840
- styleInject(css$p);
2179
+ var css$j = ".Center-module_outer__3Rr0H {\n margin-left: 8%;\n margin-right: 8%;\n}\n\n.Center-module_outer-full__3dknO {\n margin-left: 0;\n margin-right: 0;\n}\n\n.Center-module_item__1KSs3 {\n margin-left: auto;\n margin-right: auto;\n max-width: 700px;\n}\n\n.Center-module_item-full__1cEuv {\n margin-left: 0;\n margin-right: 0;\n max-width: none;\n}\n\n@media (min-width: 950px) {\n .Center-module_inner-left__2z9Ea {\n float: left;\n width: 60%;\n margin-left: -10%;\n margin-right: 1em;\n margin-bottom: 1em;\n }\n\n .Center-module_inner-right__KBkVt {\n float: right;\n width: 60%;\n margin-right: -10%;\n margin-left: 1em;\n margin-bottom: 1em;\n }\n}\n";
2180
+ var styles$i = {"outer":"Center-module_outer__3Rr0H","outer-full":"Center-module_outer-full__3dknO","item":"Center-module_item__1KSs3","item-full":"Center-module_item-full__1cEuv","inner-left":"Center-module_inner-left__2z9Ea","inner-right":"Center-module_inner-right__KBkVt"};
2181
+ styleInject(css$j);
2841
2182
 
2842
2183
  function Center(props) {
2843
2184
  return React.createElement("div", {
2844
- className: classnames(styles$o.root)
2185
+ className: classNames(styles$i.root)
2845
2186
  }, React.createElement("div", {
2846
2187
  ref: props.contentAreaRef
2847
- }), React.createElement(ForegroundItems, {
2188
+ }), React.createElement(ContentElements, {
2189
+ sectionProps: props.sectionProps,
2848
2190
  items: props.items
2849
2191
  }, function (item, child) {
2850
2192
  return React.createElement("div", {
2851
2193
  key: item.index,
2852
- className: classnames(styles$o.outer, styles$o["outer-".concat(item.position)])
2194
+ className: classNames(styles$i.outer, styles$i["outer-".concat(item.position)])
2853
2195
  }, React.createElement("div", {
2854
- className: classnames(styles$o.item, styles$o["item-".concat(item.position)])
2196
+ className: classNames(styles$i.item, styles$i["item-".concat(item.position)])
2855
2197
  }, props.children(React.createElement("div", {
2856
- className: styles$o["inner-".concat(item.position)]
2198
+ className: styles$i["inner-".concat(item.position)]
2857
2199
  }, child))));
2858
2200
  }));
2859
2201
  }
2860
2202
 
2861
2203
  function Layout(props) {
2862
- if (props.layout === 'center') {
2204
+ if (props.sectionProps.layout === 'center') {
2863
2205
  return React.createElement(Center, props);
2864
- } else if (props.layout === 'right') {
2206
+ } else if (props.sectionProps.layout === 'right') {
2865
2207
  return React.createElement(TwoColumn, Object.assign({
2866
2208
  align: "right"
2867
2209
  }, props));
@@ -2937,79 +2279,79 @@ function useScrollTarget(ref, isScrollTarget) {
2937
2279
  }, [ref, isScrollTarget]);
2938
2280
  }
2939
2281
 
2940
- var css$q = ".Section-module_Section__Yo58b {\n position: relative;\n}\n\n.Section-module_invert__3_p7F {\n color: #222;\n}\n\n.Section-module_activityProbe__Fsklh {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 2px;\n width: 1px;\n}\n";
2941
- var styles$p = {"Section":"Section-module_Section__Yo58b","invert":"Section-module_invert__3_p7F","activityProbe":"Section-module_activityProbe__Fsklh"};
2942
- styleInject(css$q);
2282
+ var css$k = ".Section-module_Section__Yo58b {\n position: relative;\n}\n\n.Section-module_invert__3_p7F {\n color: #222;\n}\n\n.Section-module_activityProbe__Fsklh {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 2px;\n width: 1px;\n}\n";
2283
+ var styles$j = {"Section":"Section-module_Section__Yo58b","invert":"Section-module_invert__3_p7F","activityProbe":"Section-module_activityProbe__Fsklh"};
2284
+ styleInject(css$k);
2943
2285
 
2944
- var css$r = "\n\n.fadeInBgConceal-module_backdrop__11JGO {\n position: absolute;\n height: 100%;\n}\n\n.fadeInBgConceal-module_backdropInner__1IAYD {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInBgConceal-module_backdrop__11JGO {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgConceal-module_backdrop-below__3E6Uk {\n opacity: 0;\n visibility: hidden;\n}\n";
2286
+ var css$l = "\n\n.fadeInBgConceal-module_backdrop__11JGO {\n position: absolute;\n height: 100%;\n}\n\n.fadeInBgConceal-module_backdropInner__1IAYD {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInBgConceal-module_backdrop__11JGO {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgConceal-module_backdrop-below__3E6Uk {\n opacity: 0;\n visibility: hidden;\n}\n";
2945
2287
  var fadeInBgConceal = {"fade-duration":"0.5s","backdrop":"fadeInBgConceal-module_backdrop__11JGO","backdropInner":"fadeInBgConceal-module_backdropInner__1IAYD","backdrop-below":"fadeInBgConceal-module_backdrop-below__3E6Uk"};
2946
- styleInject(css$r);
2288
+ styleInject(css$l);
2947
2289
 
2948
- var css$s = "\n\n.fadeInBgFadeOut-module_backdrop__r0YXp {\n position: absolute;\n height: 100%;\n}\n\n.fadeInBgFadeOut-module_backdropInner__IQp87 {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInBgFadeOut-module_backdrop__r0YXp .fadeInBgFadeOut-module_backdropInner__IQp87,\n.fadeInBgFadeOut-module_foreground__Q2vkT {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgFadeOut-module_foreground-above__3pmz9,\n.fadeInBgFadeOut-module_backdrop-below__2G-Ic .fadeInBgFadeOut-module_backdropInner__IQp87 {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInBgFadeOut-module_bbackdrop__1thge::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInBgFadeOut-module_bbackdrop-below__yaeMc::before {\n visibility: hidden;\n}\n";
2290
+ var css$m = "\n\n.fadeInBgFadeOut-module_backdrop__r0YXp {\n position: absolute;\n height: 100%;\n}\n\n.fadeInBgFadeOut-module_backdropInner__IQp87 {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInBgFadeOut-module_backdrop__r0YXp .fadeInBgFadeOut-module_backdropInner__IQp87,\n.fadeInBgFadeOut-module_foreground__Q2vkT {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgFadeOut-module_foreground-above__3pmz9,\n.fadeInBgFadeOut-module_backdrop-below__2G-Ic .fadeInBgFadeOut-module_backdropInner__IQp87 {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInBgFadeOut-module_bbackdrop__1thge::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInBgFadeOut-module_bbackdrop-below__yaeMc::before {\n visibility: hidden;\n}\n";
2949
2291
  var fadeInBgFadeOut = {"fade-duration":"0.5s","backdrop":"fadeInBgFadeOut-module_backdrop__r0YXp","backdropInner":"fadeInBgFadeOut-module_backdropInner__IQp87","foreground":"fadeInBgFadeOut-module_foreground__Q2vkT","foreground-above":"fadeInBgFadeOut-module_foreground-above__3pmz9","backdrop-below":"fadeInBgFadeOut-module_backdrop-below__2G-Ic","bbackdrop":"fadeInBgFadeOut-module_bbackdrop__1thge","bbackdrop-below":"fadeInBgFadeOut-module_bbackdrop-below__yaeMc"};
2950
- styleInject(css$s);
2292
+ styleInject(css$m);
2951
2293
 
2952
- var css$t = "\n\n.fadeInBgFadeOutBg-module_backdrop__15ocl {\n position: absolute;\n height: 100%;\n}\n\n.fadeInBgFadeOutBg-module_backdropInner__sAnz6 {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInBgFadeOutBg-module_boxShadow__xUKyj,\n.fadeInBgFadeOutBg-module_backdrop__15ocl .fadeInBgFadeOutBg-module_backdropInner__sAnz6 {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgFadeOutBg-module_boxShadow-above__2bY0E,\n.fadeInBgFadeOutBg-module_backdrop-below__1rDT6 .fadeInBgFadeOutBg-module_backdropInner__sAnz6 {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInBgFadeOutBg-module_bbackdrop__25Ux-::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInBgFadeOutBg-module_bbackdrop-below__2MPgj::before {\n visibility: hidden;\n}\n";
2294
+ var css$n = "\n\n.fadeInBgFadeOutBg-module_backdrop__15ocl {\n position: absolute;\n height: 100%;\n}\n\n.fadeInBgFadeOutBg-module_backdropInner__sAnz6 {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInBgFadeOutBg-module_boxShadow__xUKyj,\n.fadeInBgFadeOutBg-module_backdrop__15ocl .fadeInBgFadeOutBg-module_backdropInner__sAnz6 {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgFadeOutBg-module_boxShadow-above__2bY0E,\n.fadeInBgFadeOutBg-module_backdrop-below__1rDT6 .fadeInBgFadeOutBg-module_backdropInner__sAnz6 {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInBgFadeOutBg-module_bbackdrop__25Ux-::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInBgFadeOutBg-module_bbackdrop-below__2MPgj::before {\n visibility: hidden;\n}\n";
2953
2295
  var fadeInBgFadeOutBg = {"fade-duration":"0.5s","backdrop":"fadeInBgFadeOutBg-module_backdrop__15ocl","backdropInner":"fadeInBgFadeOutBg-module_backdropInner__sAnz6","boxShadow":"fadeInBgFadeOutBg-module_boxShadow__xUKyj","boxShadow-above":"fadeInBgFadeOutBg-module_boxShadow-above__2bY0E","backdrop-below":"fadeInBgFadeOutBg-module_backdrop-below__1rDT6","bbackdrop":"fadeInBgFadeOutBg-module_bbackdrop__25Ux-","bbackdrop-below":"fadeInBgFadeOutBg-module_bbackdrop-below__2MPgj"};
2954
- styleInject(css$t);
2296
+ styleInject(css$n);
2955
2297
 
2956
- var css$u = "\n\n.fadeInBgScrollOut-module_backdrop__1bSsb {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n\n.fadeInBgScrollOut-module_backdropInner__3JZBG {\n position: sticky;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInBgScrollOut-module_backdropInner2__q-00L {\n position: absolute;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInBgScrollOut-module_foreground__1ODH9 {\n min-height: 100vh;\n}\n\n.fadeInBgScrollOut-module_backdrop__1bSsb {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgScrollOut-module_backdrop-below__2Dbkr {\n opacity: 0;\n visibility: hidden;\n}\n";
2298
+ var css$o = "\n\n.fadeInBgScrollOut-module_backdrop__1bSsb {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n\n.fadeInBgScrollOut-module_backdropInner__3JZBG {\n position: sticky;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInBgScrollOut-module_backdropInner2__q-00L {\n position: absolute;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInBgScrollOut-module_foreground__1ODH9 {\n min-height: 100vh;\n}\n\n.fadeInBgScrollOut-module_backdrop__1bSsb {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInBgScrollOut-module_backdrop-below__2Dbkr {\n opacity: 0;\n visibility: hidden;\n}\n";
2957
2299
  var fadeInBgScrollOut = {"fade-duration":"0.5s","backdrop":"fadeInBgScrollOut-module_backdrop__1bSsb","backdropInner":"fadeInBgScrollOut-module_backdropInner__3JZBG","backdropInner2":"fadeInBgScrollOut-module_backdropInner2__q-00L","foreground":"fadeInBgScrollOut-module_foreground__1ODH9","backdrop-below":"fadeInBgScrollOut-module_backdrop-below__2Dbkr"};
2958
- styleInject(css$u);
2300
+ styleInject(css$o);
2959
2301
 
2960
- var css$v = "\n\n.fadeInConceal-module_backdrop__1zaRO {\n position: absolute;\n height: 100%;\n}\n\n.fadeInConceal-module_backdropInner__1AIvq {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInConceal-module_backdrop__1zaRO,\n.fadeInConceal-module_foreground__3giM9 {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInConceal-module_backdrop-below__AWyQe,\n.fadeInConceal-module_foreground-below__2z5Op {\n opacity: 0;\n visibility: hidden;\n}\n";
2302
+ var css$p = "\n\n.fadeInConceal-module_backdrop__1zaRO {\n position: absolute;\n height: 100%;\n}\n\n.fadeInConceal-module_backdropInner__1AIvq {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInConceal-module_backdrop__1zaRO,\n.fadeInConceal-module_foreground__3giM9 {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInConceal-module_backdrop-below__AWyQe,\n.fadeInConceal-module_foreground-below__2z5Op {\n opacity: 0;\n visibility: hidden;\n}\n";
2961
2303
  var fadeInConceal = {"fade-duration":"0.5s","backdrop":"fadeInConceal-module_backdrop__1zaRO","backdropInner":"fadeInConceal-module_backdropInner__1AIvq","foreground":"fadeInConceal-module_foreground__3giM9","backdrop-below":"fadeInConceal-module_backdrop-below__AWyQe","foreground-below":"fadeInConceal-module_foreground-below__2z5Op"};
2962
- styleInject(css$v);
2304
+ styleInject(css$p);
2963
2305
 
2964
- var css$w = "\n\n.fadeInFadeOut-module_backdrop__Y4xOA {\n position: absolute;\n height: 100%;\n}\n\n.fadeInFadeOut-module_backdropInner__1oRfP {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInFadeOut-module_backdrop__Y4xOA .fadeInFadeOut-module_backdropInner__1oRfP,\n.fadeInFadeOut-module_foreground__1eleZ {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInFadeOut-module_foreground-above__249wa,\n.fadeInFadeOut-module_backdrop-below__1h2I4 .fadeInFadeOut-module_backdropInner__1oRfP,\n.fadeInFadeOut-module_foreground-below__3mE6f {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInFadeOut-module_bbackdrop__WJjFl::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInFadeOut-module_bbackdrop-below__1Htkz::before {\n visibility: hidden;\n}\n";
2306
+ var css$q = "\n\n.fadeInFadeOut-module_backdrop__Y4xOA {\n position: absolute;\n height: 100%;\n}\n\n.fadeInFadeOut-module_backdropInner__1oRfP {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInFadeOut-module_backdrop__Y4xOA .fadeInFadeOut-module_backdropInner__1oRfP,\n.fadeInFadeOut-module_foreground__1eleZ {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInFadeOut-module_foreground-above__249wa,\n.fadeInFadeOut-module_backdrop-below__1h2I4 .fadeInFadeOut-module_backdropInner__1oRfP,\n.fadeInFadeOut-module_foreground-below__3mE6f {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInFadeOut-module_bbackdrop__WJjFl::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInFadeOut-module_bbackdrop-below__1Htkz::before {\n visibility: hidden;\n}\n";
2965
2307
  var fadeInFadeOut = {"fade-duration":"0.5s","backdrop":"fadeInFadeOut-module_backdrop__Y4xOA","backdropInner":"fadeInFadeOut-module_backdropInner__1oRfP","foreground":"fadeInFadeOut-module_foreground__1eleZ","foreground-above":"fadeInFadeOut-module_foreground-above__249wa","backdrop-below":"fadeInFadeOut-module_backdrop-below__1h2I4","foreground-below":"fadeInFadeOut-module_foreground-below__3mE6f","bbackdrop":"fadeInFadeOut-module_bbackdrop__WJjFl","bbackdrop-below":"fadeInFadeOut-module_bbackdrop-below__1Htkz"};
2966
- styleInject(css$w);
2308
+ styleInject(css$q);
2967
2309
 
2968
- var css$x = "\n\n.fadeInFadeOutBg-module_backdrop__2-IF3 {\n position: absolute;\n height: 100%;\n}\n\n.fadeInFadeOutBg-module_backdropInner__3r_bo {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInFadeOutBg-module_backdrop__2-IF3 .fadeInFadeOutBg-module_backdropInner__3r_bo,\n.fadeInFadeOutBg-module_boxShadow__3x7Ki,\n.fadeInFadeOutBg-module_foreground__24f_M {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInFadeOutBg-module_backdrop-below__4Ys_2 .fadeInFadeOutBg-module_backdropInner__3r_bo,\n.fadeInFadeOutBg-module_boxShadow-above__3T2K5,\n.fadeInFadeOutBg-module_foreground-below__3pTRc {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInFadeOutBg-module_bbackdrop__MVdvw::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInFadeOutBg-module_bbackdrop-below__30mpF::before {\n visibility: hidden;\n}\n";
2310
+ var css$r = "\n\n.fadeInFadeOutBg-module_backdrop__2-IF3 {\n position: absolute;\n height: 100%;\n}\n\n.fadeInFadeOutBg-module_backdropInner__3r_bo {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n}\n\n.fadeInFadeOutBg-module_backdrop__2-IF3 .fadeInFadeOutBg-module_backdropInner__3r_bo,\n.fadeInFadeOutBg-module_boxShadow__3x7Ki,\n.fadeInFadeOutBg-module_foreground__24f_M {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInFadeOutBg-module_backdrop-below__4Ys_2 .fadeInFadeOutBg-module_backdropInner__3r_bo,\n.fadeInFadeOutBg-module_boxShadow-above__3T2K5,\n.fadeInFadeOutBg-module_foreground-below__3pTRc {\n opacity: 0;\n visibility: hidden;\n}\n\n.fadeInFadeOutBg-module_bbackdrop__MVdvw::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.fadeInFadeOutBg-module_bbackdrop-below__30mpF::before {\n visibility: hidden;\n}\n";
2969
2311
  var fadeInFadeOutBg = {"fade-duration":"0.5s","backdrop":"fadeInFadeOutBg-module_backdrop__2-IF3","backdropInner":"fadeInFadeOutBg-module_backdropInner__3r_bo","boxShadow":"fadeInFadeOutBg-module_boxShadow__3x7Ki","foreground":"fadeInFadeOutBg-module_foreground__24f_M","backdrop-below":"fadeInFadeOutBg-module_backdrop-below__4Ys_2","boxShadow-above":"fadeInFadeOutBg-module_boxShadow-above__3T2K5","foreground-below":"fadeInFadeOutBg-module_foreground-below__3pTRc","bbackdrop":"fadeInFadeOutBg-module_bbackdrop__MVdvw","bbackdrop-below":"fadeInFadeOutBg-module_bbackdrop-below__30mpF"};
2970
- styleInject(css$x);
2312
+ styleInject(css$r);
2971
2313
 
2972
- var css$y = "\n\n.fadeInScrollOut-module_backdrop__2FhBb {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n\n.fadeInScrollOut-module_backdropInner__1OfNZ {\n position: sticky;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInScrollOut-module_backdropInner2__5bNPT {\n position: absolute;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInScrollOut-module_foreground__3h0EX {\n min-height: 100vh;\n}\n\n.fadeInScrollOut-module_backdrop__2FhBb,\n.fadeInScrollOut-module_foreground__3h0EX {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInScrollOut-module_backdrop-below__3cRLH,\n.fadeInScrollOut-module_foreground-below__1Jcql {\n opacity: 0;\n visibility: hidden;\n}\n";
2314
+ var css$s = "\n\n.fadeInScrollOut-module_backdrop__2FhBb {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n\n.fadeInScrollOut-module_backdropInner__1OfNZ {\n position: sticky;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInScrollOut-module_backdropInner2__5bNPT {\n position: absolute;\n bottom: 0;\n width: 100%;\n}\n\n.fadeInScrollOut-module_foreground__3h0EX {\n min-height: 100vh;\n}\n\n.fadeInScrollOut-module_backdrop__2FhBb,\n.fadeInScrollOut-module_foreground__3h0EX {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.fadeInScrollOut-module_backdrop-below__3cRLH,\n.fadeInScrollOut-module_foreground-below__1Jcql {\n opacity: 0;\n visibility: hidden;\n}\n";
2973
2315
  var fadeInScrollOut = {"fade-duration":"0.5s","backdrop":"fadeInScrollOut-module_backdrop__2FhBb","backdropInner":"fadeInScrollOut-module_backdropInner__1OfNZ","backdropInner2":"fadeInScrollOut-module_backdropInner2__5bNPT","foreground":"fadeInScrollOut-module_foreground__3h0EX","backdrop-below":"fadeInScrollOut-module_backdrop-below__3cRLH","foreground-below":"fadeInScrollOut-module_foreground-below__1Jcql"};
2974
- styleInject(css$y);
2316
+ styleInject(css$s);
2975
2317
 
2976
- var css$z = ".revealConceal-module_backdrop__dLUhU {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n height: 100%;\n}\n\n.revealConceal-module_backdropInner__2k1Z- {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n";
2318
+ var css$t = ".revealConceal-module_backdrop__dLUhU {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n height: 100%;\n}\n\n.revealConceal-module_backdropInner__2k1Z- {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n";
2977
2319
  var revealConceal = {"backdrop":"revealConceal-module_backdrop__dLUhU","backdropInner":"revealConceal-module_backdropInner__2k1Z-"};
2978
- styleInject(css$z);
2320
+ styleInject(css$t);
2979
2321
 
2980
- var css$A = "\n\n.revealFadeOut-module_backdrop___Q1QF {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n height: 200%;\n}\n\n.revealFadeOut-module_backdropInner__17qRn {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n\n.revealFadeOut-module_foreground__1GzBs {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.revealFadeOut-module_foreground-above__3GxOf {\n opacity: 0;\n visibility: hidden;\n}\n";
2322
+ var css$u = "\n\n.revealFadeOut-module_backdrop___Q1QF {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n height: 200%;\n}\n\n.revealFadeOut-module_backdropInner__17qRn {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n\n.revealFadeOut-module_foreground__1GzBs {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.revealFadeOut-module_foreground-above__3GxOf {\n opacity: 0;\n visibility: hidden;\n}\n";
2981
2323
  var revealFadeOut = {"fade-duration":"0.5s","backdrop":"revealFadeOut-module_backdrop___Q1QF","backdropInner":"revealFadeOut-module_backdropInner__17qRn","foreground":"revealFadeOut-module_foreground__1GzBs","foreground-above":"revealFadeOut-module_foreground-above__3GxOf"};
2982
- styleInject(css$A);
2324
+ styleInject(css$u);
2983
2325
 
2984
- var css$B = "\n\n.revealFadeOutBg-module_backdrop__30OCF {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n height: 200%;\n}\n\n.revealFadeOutBg-module_backdropInner__3v3tM {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n\n.revealFadeOutBg-module_boxShadow__1NZRz {\n transition: opacity 1s ease, visibility 1s;\n}\n\n.revealFadeOutBg-module_boxShadow-above__2r4ov {\n opacity: 0;\n visibility: hidden;\n}\n";
2326
+ var css$v = "\n\n.revealFadeOutBg-module_backdrop__30OCF {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n height: 200%;\n}\n\n.revealFadeOutBg-module_backdropInner__3v3tM {\n position: fixed;\n top: 0;\n height: 100vh;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n\n.revealFadeOutBg-module_boxShadow__1NZRz {\n transition: opacity 1s ease, visibility 1s;\n}\n\n.revealFadeOutBg-module_boxShadow-above__2r4ov {\n opacity: 0;\n visibility: hidden;\n}\n";
2985
2327
  var revealFadeOutBg = {"fade-duration":"0.5s","backdrop":"revealFadeOutBg-module_backdrop__30OCF","backdropInner":"revealFadeOutBg-module_backdropInner__3v3tM","boxShadow":"revealFadeOutBg-module_boxShadow__1NZRz","boxShadow-above":"revealFadeOutBg-module_boxShadow-above__2r4ov"};
2986
- styleInject(css$B);
2328
+ styleInject(css$v);
2987
2329
 
2988
- var css$C = ".revealScrollOut-module_backdrop__2yOXd {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n\n.revealScrollOut-module_backdropInner__211p3 {\n position: sticky;\n bottom: 0;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n\n.revealScrollOut-module_backdropInner2__v6WqM {\n position: absolute;\n bottom: 0;\n width: 100%;\n}\n\n.revealScrollOut-module_foreground__3z-hw {\n}\n";
2330
+ var css$w = ".revealScrollOut-module_backdrop__2yOXd {\n position: absolute;\n clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);\n top: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n\n.revealScrollOut-module_backdropInner__211p3 {\n position: sticky;\n bottom: 0;\n width: 100%;\n\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n\n.revealScrollOut-module_backdropInner2__v6WqM {\n position: absolute;\n bottom: 0;\n width: 100%;\n}\n\n.revealScrollOut-module_foreground__3z-hw {\n}\n";
2989
2331
  var revealScrollOut = {"backdrop":"revealScrollOut-module_backdrop__2yOXd","backdropInner":"revealScrollOut-module_backdropInner__211p3","backdropInner2":"revealScrollOut-module_backdropInner2__v6WqM","foreground":"revealScrollOut-module_foreground__3z-hw"};
2990
- styleInject(css$C);
2332
+ styleInject(css$w);
2991
2333
 
2992
- var css$D = ".scrollInConceal-module_backdrop__2OJJC {\n position: sticky;\n top: 0;\n height: 0;\n}\n";
2334
+ var css$x = ".scrollInConceal-module_backdrop__2OJJC {\n position: sticky;\n top: 0;\n height: 0;\n}\n";
2993
2335
  var scrollInConceal = {"backdrop":"scrollInConceal-module_backdrop__2OJJC"};
2994
- styleInject(css$D);
2336
+ styleInject(css$x);
2995
2337
 
2996
- var css$E = "\n\n.scrollInFadeOut-module_backdrop__1vXJd {\n position: sticky;\n top: 0;\n height: 0;\n}\n\n.scrollInFadeOut-module_foreground__3Ikxb {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.scrollInFadeOut-module_foreground-above__6ipm- {\n opacity: 0;\n visibility: hidden;\n}\n\n.scrollInFadeOut-module_bbackdrop__2C-bf::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.scrollInFadeOut-module_bbackdrop-below__3tq0M::before {\n visibility: hidden;\n}\n";
2338
+ var css$y = "\n\n.scrollInFadeOut-module_backdrop__1vXJd {\n position: sticky;\n top: 0;\n height: 0;\n}\n\n.scrollInFadeOut-module_foreground__3Ikxb {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.scrollInFadeOut-module_foreground-above__6ipm- {\n opacity: 0;\n visibility: hidden;\n}\n\n.scrollInFadeOut-module_bbackdrop__2C-bf::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.scrollInFadeOut-module_bbackdrop-below__3tq0M::before {\n visibility: hidden;\n}\n";
2997
2339
  var scrollInFadeOut = {"fade-duration":"0.5s","backdrop":"scrollInFadeOut-module_backdrop__1vXJd","foreground":"scrollInFadeOut-module_foreground__3Ikxb","foreground-above":"scrollInFadeOut-module_foreground-above__6ipm-","bbackdrop":"scrollInFadeOut-module_bbackdrop__2C-bf","bbackdrop-below":"scrollInFadeOut-module_bbackdrop-below__3tq0M"};
2998
- styleInject(css$E);
2340
+ styleInject(css$y);
2999
2341
 
3000
- var css$F = "\n\n.scrollInFadeOutBg-module_backdrop__zw95c {\n position: sticky;\n top: 0;\n height: 0;\n}\n\n.scrollInFadeOutBg-module_boxShadow__3UxCQ {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.scrollInFadeOutBg-module_boxShadow-above__3kfau {\n opacity: 0;\n visibility: hidden;\n}\n\n.scrollInFadeOutBg-module_bbackdrop__2pO9o::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.scrollInFadeOutBg-module_bbackdrop-below__1Ky2w::before {\n visibility: hidden;\n}\n";
2342
+ var css$z = "\n\n.scrollInFadeOutBg-module_backdrop__zw95c {\n position: sticky;\n top: 0;\n height: 0;\n}\n\n.scrollInFadeOutBg-module_boxShadow__3UxCQ {\n transition: opacity 0.5s ease, visibility 0.5s;\n}\n\n.scrollInFadeOutBg-module_boxShadow-above__3kfau {\n opacity: 0;\n visibility: hidden;\n}\n\n.scrollInFadeOutBg-module_bbackdrop__2pO9o::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n background-color: #000;\n}\n\n.scrollInFadeOutBg-module_bbackdrop-below__1Ky2w::before {\n visibility: hidden;\n}\n";
3001
2343
  var scrollInFadeOutBg = {"fade-duration":"0.5s","backdrop":"scrollInFadeOutBg-module_backdrop__zw95c","boxShadow":"scrollInFadeOutBg-module_boxShadow__3UxCQ","boxShadow-above":"scrollInFadeOutBg-module_boxShadow-above__3kfau","bbackdrop":"scrollInFadeOutBg-module_bbackdrop__2pO9o","bbackdrop-below":"scrollInFadeOutBg-module_bbackdrop-below__1Ky2w"};
3002
- styleInject(css$F);
2344
+ styleInject(css$z);
3003
2345
 
3004
- var css$G = ".scrollInScrollOut-module_backdrop__XzCge {\n position: sticky;\n top: 0;\n height: 100vh;\n}\n\n.scrollInScrollOut-module_foreground__1yyY8 {\n margin-top: -100vh;\n}\n";
2346
+ var css$A = ".scrollInScrollOut-module_backdrop__XzCge {\n position: sticky;\n top: 0;\n height: 100vh;\n}\n\n.scrollInScrollOut-module_foreground__1yyY8 {\n margin-top: -100vh;\n}\n";
3005
2347
  var scrollInScrollOut = {"backdrop":"scrollInScrollOut-module_backdrop__XzCge","foreground":"scrollInScrollOut-module_foreground__1yyY8"};
3006
- styleInject(css$G);
2348
+ styleInject(css$A);
3007
2349
 
3008
- var css$H = ".previewScrollOut-module_scene__W9bDl {\n height: 100%;\n}\n\n.previewScrollOut-module_backdrop__2-Bl_ {\n position: absolute;\n top: 0;\n}\n";
2350
+ var css$B = ".previewScrollOut-module_scene__W9bDl {\n height: 100%;\n}\n\n.previewScrollOut-module_backdrop__2-Bl_ {\n position: absolute;\n top: 0;\n}\n";
3009
2351
  var previewScrollOut = {"scene":"previewScrollOut-module_scene__W9bDl","backdrop":"previewScrollOut-module_backdrop__2-Bl_"};
3010
- styleInject(css$H);
2352
+ styleInject(css$B);
3011
2353
 
3012
- var styles$q = {
2354
+ var styles$k = {
3013
2355
  fadeInBgConceal: fadeInBgConceal,
3014
2356
  fadeInBgFadeOut: fadeInBgFadeOut,
3015
2357
  fadeInBgFadeOutBg: fadeInBgFadeOutBg,
@@ -3050,11 +2392,11 @@ function getTransitionStyles(section, previousSection, nextSection) {
3050
2392
  var exitTransition = exitTransitions[nextSection ? nextSection.transition : 'scroll'];
3051
2393
  var name = "".concat(enterTransition).concat(capitalize(exitTransition));
3052
2394
 
3053
- if (!styles$q[name]) {
2395
+ if (!styles$k[name]) {
3054
2396
  throw new Error("Unknown transition ".concat(name));
3055
2397
  }
3056
2398
 
3057
- return styles$q[name];
2399
+ return styles$k[name];
3058
2400
  }
3059
2401
 
3060
2402
  function capitalize(string) {
@@ -3065,18 +2407,18 @@ function NoOpShadow(props) {
3065
2407
  return React.createElement("div", null, props.children);
3066
2408
  }
3067
2409
 
3068
- var css$I = ".GradientShadow-module_shadow__2UiDH {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n z-index: 1;\n transition: opacity 1s ease;\n}\n\n.GradientShadow-module_align-right__3iXZs .GradientShadow-module_shadow__2UiDH,\n.GradientShadow-module_align-left__3qcNM .GradientShadow-module_shadow__2UiDH {\n background: linear-gradient(to right, #000 0%,rgba(0, 0, 0, 0) 100%);\n}\n\n@media (min-width: 950px) {\n .GradientShadow-module_align-right__3iXZs .GradientShadow-module_shadow__2UiDH {\n background: linear-gradient(to left, #000 0%,rgba(0, 0, 0, 0) 100%);\n }\n}\n\n.GradientShadow-module_intersecting__h6vpz .GradientShadow-module_shadow__2UiDH,\n.GradientShadow-module_align-center__2C7cl .GradientShadow-module_shadow__2UiDH {\n background: #000;\n}\n";
3069
- var styles$r = {"shadow":"GradientShadow-module_shadow__2UiDH","align-right":"GradientShadow-module_align-right__3iXZs","align-left":"GradientShadow-module_align-left__3qcNM","intersecting":"GradientShadow-module_intersecting__h6vpz","align-center":"GradientShadow-module_align-center__2C7cl"};
3070
- styleInject(css$I);
2410
+ var css$C = ".GradientShadow-module_shadow__2UiDH {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n z-index: 1;\n transition: opacity 1s ease;\n}\n\n.GradientShadow-module_align-right__3iXZs .GradientShadow-module_shadow__2UiDH,\n.GradientShadow-module_align-left__3qcNM .GradientShadow-module_shadow__2UiDH {\n background: linear-gradient(to right, #000 0%,rgba(0, 0, 0, 0) 100%);\n}\n\n@media (min-width: 950px) {\n .GradientShadow-module_align-right__3iXZs .GradientShadow-module_shadow__2UiDH {\n background: linear-gradient(to left, #000 0%,rgba(0, 0, 0, 0) 100%);\n }\n}\n\n.GradientShadow-module_intersecting__h6vpz .GradientShadow-module_shadow__2UiDH,\n.GradientShadow-module_align-center__2C7cl .GradientShadow-module_shadow__2UiDH {\n background: #000;\n}\n";
2411
+ var styles$l = {"shadow":"GradientShadow-module_shadow__2UiDH","align-right":"GradientShadow-module_align-right__3iXZs","align-left":"GradientShadow-module_align-left__3qcNM","intersecting":"GradientShadow-module_intersecting__h6vpz","align-center":"GradientShadow-module_align-center__2C7cl"};
2412
+ styleInject(css$C);
3071
2413
 
3072
2414
  function GradientShadow(props) {
3073
2415
  var maxOpacityOverlap = props.motifAreaRect.height / 2;
3074
2416
  var motifAreaOverlap = Math.min(maxOpacityOverlap, props.motifAreaRect.bottom - props.contentAreaRect.top);
3075
2417
  var opacityFactor = props.intersecting && props.motifAreaRect.height > 0 ? motifAreaOverlap / maxOpacityOverlap : 1;
3076
2418
  return React.createElement("div", {
3077
- className: classnames(styles$r.root, styles$r["align-".concat(props.align)], _defineProperty({}, styles$r.intersecting, props.intersecting))
2419
+ className: classNames(styles$l.root, styles$l["align-".concat(props.align)], _defineProperty({}, styles$l.intersecting, props.intersecting))
3078
2420
  }, React.createElement("div", {
3079
- className: styles$r.shadow,
2421
+ className: styles$l.shadow,
3080
2422
  style: {
3081
2423
  opacity: props.opacity * Math.round(opacityFactor * 10) / 10
3082
2424
  }
@@ -3091,38 +2433,38 @@ function NoOpBoxWrapper(props) {
3091
2433
  return React.createElement("div", null, props.children);
3092
2434
  }
3093
2435
 
3094
- var css$J = ".GradientBox-module_wrapper__1Jj7N {\n padding-bottom: 50px;\n}\n\n.GradientBox-module_shadow__2XilX {\n --background: rgba(0, 0, 0, 0.7);\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n pointer-events: none;\n}\n\n.GradientBox-module_long__10s6v .GradientBox-module_shadow__2XilX {\n bottom: -100vh;\n}\n\n.GradientBox-module_gradient__31tJ- {\n text-shadow: 0px 1px 5px black;\n}\n\n.GradientBox-module_gradient__31tJ- .GradientBox-module_shadow__2XilX {\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0px,rgba(0, 0, 0, 0.3) 100px,rgba(0, 0, 0, 0.3) 100%);\n}\n\n.GradientBox-module_content__96lDk {\n position: relative;\n}\n";
3095
- var styles$s = {"wrapper":"GradientBox-module_wrapper__1Jj7N","shadow":"GradientBox-module_shadow__2XilX","long":"GradientBox-module_long__10s6v","gradient":"GradientBox-module_gradient__31tJ-","content":"GradientBox-module_content__96lDk"};
3096
- styleInject(css$J);
2436
+ var css$D = ".GradientBox-module_wrapper__1Jj7N {\n padding-bottom: 50px;\n}\n\n.GradientBox-module_shadow__2XilX {\n --background: rgba(0, 0, 0, 0.7);\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n pointer-events: none;\n}\n\n.GradientBox-module_long__10s6v .GradientBox-module_shadow__2XilX {\n bottom: -100vh;\n}\n\n.GradientBox-module_gradient__31tJ- {\n text-shadow: 0px 1px 5px black;\n}\n\n.GradientBox-module_gradient__31tJ- .GradientBox-module_shadow__2XilX {\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0px,rgba(0, 0, 0, 0.3) 100px,rgba(0, 0, 0, 0.3) 100%);\n}\n\n.GradientBox-module_content__96lDk {\n position: relative;\n}\n";
2437
+ var styles$m = {"wrapper":"GradientBox-module_wrapper__1Jj7N","shadow":"GradientBox-module_shadow__2XilX","long":"GradientBox-module_long__10s6v","gradient":"GradientBox-module_gradient__31tJ-","content":"GradientBox-module_content__96lDk"};
2438
+ styleInject(css$D);
3097
2439
 
3098
2440
  function GradientBox(props) {
3099
2441
  var _classNames;
3100
2442
 
3101
2443
  var padding = props.active ? props.padding : 0;
3102
2444
  return React.createElement("div", {
3103
- className: classnames(styles$s.root, (_classNames = {}, _defineProperty(_classNames, styles$s.gradient, padding > 0), _defineProperty(_classNames, styles$s["long"], props.coverInvisibleNextSection), _classNames)),
2445
+ className: classNames(styles$m.root, (_classNames = {}, _defineProperty(_classNames, styles$m.gradient, padding > 0), _defineProperty(_classNames, styles$m["long"], props.coverInvisibleNextSection), _classNames)),
3104
2446
  style: {
3105
2447
  paddingTop: padding
3106
2448
  }
3107
2449
  }, React.createElement("div", {
3108
- className: styles$s.wrapper
2450
+ className: styles$m.wrapper
3109
2451
  }, React.createElement("div", {
3110
- className: classnames(styles$s.shadow, props.transitionStyles.boxShadow, props.transitionStyles["boxShadow-".concat(props.state)]),
2452
+ className: classNames(styles$m.shadow, props.transitionStyles.boxShadow, props.transitionStyles["boxShadow-".concat(props.state)]),
3111
2453
  style: {
3112
2454
  top: padding,
3113
2455
  opacity: props.opacity
3114
2456
  }
3115
2457
  }), React.createElement("div", {
3116
- className: styles$s.content
2458
+ className: styles$m.content
3117
2459
  }, props.children)));
3118
2460
  }
3119
2461
  GradientBox.defaultProps = {
3120
2462
  opacity: 1
3121
2463
  };
3122
2464
 
3123
- var css$K = ".CardBox-module_wrapper__3vnaH {\n}\n\n.CardBox-module_content__36v7J {\n position: relative;\n}\n";
3124
- var styles$t = {"wrapper":"CardBox-module_wrapper__3vnaH","content":"CardBox-module_content__36v7J"};
3125
- styleInject(css$K);
2465
+ var css$E = ".CardBox-module_wrapper__3vnaH {\n}\n\n.CardBox-module_content__36v7J {\n position: relative;\n}\n";
2466
+ var styles$n = {"wrapper":"CardBox-module_wrapper__3vnaH","content":"CardBox-module_content__36v7J"};
2467
+ styleInject(css$E);
3126
2468
 
3127
2469
  function CardBox(props) {
3128
2470
  var padding = props.active ? props.padding : 0;
@@ -3131,23 +2473,23 @@ function CardBox(props) {
3131
2473
  paddingTop: padding
3132
2474
  }
3133
2475
  }, React.createElement("div", {
3134
- className: styles$t.wrapper
2476
+ className: styles$n.wrapper
3135
2477
  }, React.createElement("div", {
3136
2478
  style: {
3137
2479
  top: padding
3138
2480
  }
3139
2481
  }), React.createElement("div", {
3140
- className: styles$t.content
2482
+ className: styles$n.content
3141
2483
  }, props.children)));
3142
2484
  }
3143
2485
 
3144
- var css$L = ".CardBoxWrapper-module_cardBg__154o2 {\n background: white;\n color: black;\n padding: 4%;\n margin: 0 -4% 50px 0;\n border-radius: 15px;\n opacity: 1;\n}\n";
3145
- var styles$u = {"cardBg":"CardBoxWrapper-module_cardBg__154o2"};
3146
- styleInject(css$L);
2486
+ var css$F = ".CardBoxWrapper-module_cardBg__154o2 {\n background: white;\n color: black;\n padding: 4%;\n margin: 0 -4% 50px 0;\n border-radius: 15px;\n opacity: 1;\n}\n";
2487
+ var styles$o = {"cardBg":"CardBoxWrapper-module_cardBg__154o2"};
2488
+ styleInject(css$F);
3147
2489
 
3148
2490
  function CardBoxWrapper(props) {
3149
2491
  return React.createElement("div", {
3150
- className: styles$u.cardBg
2492
+ className: styles$o.cardBg
3151
2493
  }, props.children);
3152
2494
  }
3153
2495
 
@@ -3165,6 +2507,10 @@ function Section(props) {
3165
2507
  var ref = useRef();
3166
2508
  var onScreen = useOnScreen(ref, '0px 0px 0px 0px');
3167
2509
  useScrollTarget(ref, props.isScrollTarget);
2510
+ var sectionProperties = {
2511
+ layout: props.layout,
2512
+ invert: props.invert
2513
+ };
3168
2514
 
3169
2515
  var _useBoundingClientRec = useBoundingClientRect(),
3170
2516
  _useBoundingClientRec2 = _slicedToArray(_useBoundingClientRec, 2),
@@ -3213,10 +2559,10 @@ function Section(props) {
3213
2559
  return React.createElement("section", {
3214
2560
  id: "section-".concat(props.permaId),
3215
2561
  ref: ref,
3216
- className: classnames(styles$p.Section, transitionStyles.section, _defineProperty({}, styles$p.invert, props.invert))
2562
+ className: classNames(styles$j.Section, transitionStyles.section, _defineProperty({}, styles$j.invert, props.invert))
3217
2563
  }, React.createElement("div", {
3218
2564
  ref: activityProbeRef,
3219
- className: styles$p.activityProbe
2565
+ className: styles$j.activityProbe
3220
2566
  }), React.createElement(Backdrop, Object.assign({}, props.backdrop, {
3221
2567
  motifAreaRef: setMotifAreaRefs,
3222
2568
  onScreen: onScreen,
@@ -3250,7 +2596,7 @@ function Section(props) {
3250
2596
  items: indexItems(props.foreground),
3251
2597
  appearance: props.appearance,
3252
2598
  contentAreaRef: setContentAreaRef,
3253
- layout: props.layout
2599
+ sectionProps: sectionProperties
3254
2600
  }, function (children) {
3255
2601
  return React.createElement(BoxWrapper, null, children);
3256
2602
  }))));
@@ -3300,9 +2646,9 @@ function renderSections(sections, currentSectionIndex, setCurrentSectionIndex, s
3300
2646
  });
3301
2647
  }
3302
2648
 
3303
- var css$M = "\n\n.Entry-module_Entry__1nDGh {\n font-family: 'Source Sans Pro', sans-serif;\n background-color: #000;\n color: #fff;\n}\n\n.Entry-module_exampleSelect__1uAJs {\n position: absolute;\n top: 5px;\n left: 50%;\n z-index: 10;\n transform: translateX(-50%);\n}\n";
3304
- var styles$v = {"font-sans":"'Source Sans Pro', sans-serif","Entry":"Entry-module_Entry__1nDGh","exampleSelect":"Entry-module_exampleSelect__1uAJs"};
3305
- styleInject(css$M);
2649
+ var css$G = ".Entry-module_Entry__1nDGh {\n font-family: 'Source Sans Pro', sans-serif;\n background-color: #000;\n color: #fff;\n}\n\n.Entry-module_exampleSelect__1uAJs {\n position: absolute;\n top: 5px;\n left: 50%;\n z-index: 10;\n transform: translateX(-50%);\n}\n";
2650
+ var entryStyles = {"font-sans":"'Source Sans Pro', sans-serif","Entry":"Entry-module_Entry__1nDGh","exampleSelect":"Entry-module_exampleSelect__1uAJs"};
2651
+ styleInject(css$G);
3306
2652
 
3307
2653
  function Entry(props) {
3308
2654
  var _useState = useState(0),
@@ -3315,6 +2661,9 @@ function Entry(props) {
3315
2661
  scrollTargetSectionIndex = _useState4[0],
3316
2662
  setScrollTargetSectionIndex = _useState4[1];
3317
2663
 
2664
+ var _useEditorSelection = useEditorSelection(),
2665
+ select = _useEditorSelection.select;
2666
+
3318
2667
  var _useState5 = useState(true),
3319
2668
  _useState6 = _slicedToArray(_useState5, 2),
3320
2669
  muted = _useState6[0],
@@ -3335,7 +2684,7 @@ function Entry(props) {
3335
2684
  setCurrentSectionIndexState(index);
3336
2685
  }, [setCurrentSectionIndexState]);
3337
2686
  useEffect(function () {
3338
- if (window.parent) {
2687
+ if (window.parent !== window) {
3339
2688
  window.addEventListener('message', receive);
3340
2689
  window.parent.postMessage({
3341
2690
  type: 'READY'
@@ -3352,10 +2701,12 @@ function Entry(props) {
3352
2701
  dispatch(message.data.payload);
3353
2702
  } else if (message.data.type === 'SCROLL_TO_SECTION') {
3354
2703
  setScrollTargetSectionIndex(message.data.payload.index);
2704
+ } else if (message.data.type === 'SELECT') {
2705
+ select(message.data.payload);
3355
2706
  }
3356
2707
  }
3357
2708
  }
3358
- }, [dispatch]);
2709
+ }, [dispatch, select]);
3359
2710
 
3360
2711
  function scrollToSection(index) {
3361
2712
  if (index === 'next') {
@@ -3366,7 +2717,7 @@ function Entry(props) {
3366
2717
  }
3367
2718
 
3368
2719
  return React.createElement("div", {
3369
- className: styles$v.Entry
2720
+ className: entryStyles.Entry
3370
2721
  }, React.createElement(MutedContext.Provider, {
3371
2722
  value: {
3372
2723
  muted: muted,
@@ -3391,14 +2742,138 @@ function renderChapters(entryStructure, currentSectionIndex, setCurrentSectionIn
3391
2742
  });
3392
2743
  }
3393
2744
 
3394
- var css$N = "body {\n margin: 0;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n";
3395
- styleInject(css$N);
2745
+ var css$H = "body {\n margin: 0;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n";
2746
+ styleInject(css$H);
2747
+
2748
+ var css$I = ".Text-module_h2__34chJ {\n font-size: 66px;\n font-weight: 700;\n}\n\n.Text-module_h1__2_5kX {\n font-size: 110px;\n line-height: 1;\n}\n\n.Text-module_body__4oWD- {\n font-size: 22px;\n line-height: 1.4;\n}\n\n.Text-module_caption__3_6Au {\n font-size: 20px;\n line-height: 1.4;\n}\n\n@media (max-width: 600px) {\n .Text-module_h2__34chJ {\n font-size: 40px;\n }\n\n .Text-module_h1__2_5kX {\n font-size: 66px;\n }\n}\n";
2749
+ var styles$p = {"text-s":"20px","text-base":"22px","text-l":"40px","text-xl":"66px","text-2xl":"110px","h2":"Text-module_h2__34chJ","h1":"Text-module_h1__2_5kX","body":"Text-module_body__4oWD-","caption":"Text-module_caption__3_6Au"};
2750
+ styleInject(css$I);
2751
+
2752
+ /**
2753
+ * Render some text using the default typography scale.
2754
+ *
2755
+ * @param {Object} props
2756
+ * @param {string} props.scaleCategory - One of the styles `'h1'`, `'h2'`, `'body'`, `'caption'`.
2757
+ * @param {string} [props.inline] - Render a span instread of a div.
2758
+ * @param {string} props.children - Nodes to render with specified typography.
2759
+ */
2760
+
2761
+ function Text(_ref) {
2762
+ var inline = _ref.inline,
2763
+ scaleCategory = _ref.scaleCategory,
2764
+ children = _ref.children;
2765
+ return React.createElement(inline ? 'span' : 'div', {
2766
+ className: styles$p[scaleCategory]
2767
+ }, children);
2768
+ }
2769
+
2770
+ var css$J = ".InlineCaption-module_root__1R8Ib {\n padding: 3px 10px 5px;\n background-color: #fff;\n color: #222;\n text-shadow: none;\n}\n";
2771
+ var styles$q = {"root":"InlineCaption-module_root__1R8Ib"};
2772
+ styleInject(css$J);
2773
+
2774
+ /**
2775
+ * Render a caption text attached to a content element.
2776
+ *
2777
+ * @param {Object} props
2778
+ * @param {string} props.text - The text to be displayed.
2779
+ */
2780
+
2781
+ function InlineCaption(_ref) {
2782
+ var text = _ref.text;
2783
+
2784
+ if (text) {
2785
+ return React.createElement("div", {
2786
+ className: styles$q.root,
2787
+ role: "caption"
2788
+ }, React.createElement(Text, {
2789
+ scaleCategory: "caption"
2790
+ }, text));
2791
+ } else {
2792
+ return null;
2793
+ }
2794
+ }
2795
+
2796
+ /**
2797
+ * Read and change media settings of the entry.
2798
+ *
2799
+ * @example
2800
+ * const mediaSettings = useMediaSettings();
2801
+ * mediaSettings // =>
2802
+ * {
2803
+ * muted: true, // All media elements should be played without sound.
2804
+ * setMuted: muted => {}, // Enable sound for all media elements.
2805
+ * mediaOff: false // Playing media is not allowed. Will be true when
2806
+ * // rendering section thumbnails in the editor.
2807
+ * }
2808
+ */
2809
+
2810
+ function useMediaSettings() {
2811
+ return useContext(MutedContext);
2812
+ }
2813
+
2814
+ var css$K = ".SectionThumbnail-module_crop__Q1nZj {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.SectionThumbnail-module_scale__2tKDG {\n transform: scale(0.2);\n transform-origin: 0 0;\n width: 500%;\n}\n";
2815
+ var styles$r = {"crop":"SectionThumbnail-module_crop__Q1nZj","scale":"SectionThumbnail-module_scale__2tKDG"};
2816
+ styleInject(css$K);
2817
+
2818
+ function SectionThumbnail(_ref) {
2819
+ var seed = _ref.seed,
2820
+ props = _objectWithoutProperties(_ref, ["seed"]);
2821
+
2822
+ return React.createElement(EntryStateProvider, {
2823
+ seed: seed
2824
+ }, React.createElement(Inner, props));
2825
+ }
2826
+
2827
+ function Inner(_ref2) {
2828
+ var sectionPermaId = _ref2.sectionPermaId,
2829
+ subscribe = _ref2.subscribe;
2830
+ var dispatch = useEntryStateDispatch();
2831
+ useEffect(function () {
2832
+ return subscribe(dispatch);
2833
+ }, [subscribe, dispatch]);
2834
+ var section = useSectionStructure({
2835
+ sectionPermaId: sectionPermaId
2836
+ });
2837
+
2838
+ if (section) {
2839
+ return React.createElement("div", {
2840
+ className: styles$r.crop
2841
+ }, React.createElement("div", {
2842
+ className: styles$r.scale
2843
+ }, React.createElement("div", {
2844
+ className: entryStyles.Entry
2845
+ }, React.createElement(Section, Object.assign({
2846
+ state: "active"
2847
+ }, section, {
2848
+ transition: "preview"
2849
+ })))));
2850
+ } else {
2851
+ return React.createElement("div", {
2852
+ className: styles$r.root
2853
+ }, "Not found.");
2854
+ }
2855
+ }
2856
+
2857
+ Inner.defaultProps = {
2858
+ subscribe: function subscribe() {}
2859
+ };
2860
+
2861
+ var editMode = window.location.pathname.indexOf('/editor/entries') === 0;
2862
+
2863
+ window.pageflowScrolledRender = function (seed) {
2864
+ setupI18n(seed.i18n);
2865
+ ReactDOM.render(React.createElement(Root, {
2866
+ seed: seed
2867
+ }), document.getElementById('root'));
2868
+ };
3396
2869
 
3397
- function Root() {
3398
- return React.createElement(React.Fragment, null, React.createElement(EntryStateProvider, {
3399
- seed: window.pageflowScrolledSeed
3400
- }, React.createElement(AppHeader, null), React.createElement(Entry, null)));
2870
+ function Root(_ref) {
2871
+ var seed = _ref.seed;
2872
+ return React.createElement(React.Fragment, null, React.createElement(EditorStateProvider, {
2873
+ active: editMode
2874
+ }, React.createElement(EntryStateProvider, {
2875
+ seed: seed
2876
+ }, React.createElement(AppHeader, null), React.createElement(Entry, null))));
3401
2877
  }
3402
- ReactDOM.render(React.createElement(Root, null), document.getElementById('root'));
3403
2878
 
3404
- export default Root;
2879
+ export { Entry, EntryStateProvider, Image, InlineCaption, SectionThumbnail, Text, Video, api as frontend, setupI18n, useEditorSelection, useFile, useI18n, useMediaSettings, useOnScreen };