pageflow 16.0.0 → 16.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +210 -33
- data/README.md +0 -1
- data/Rakefile +1 -1
- data/admins/pageflow/entry.rb +0 -1
- data/admins/pageflow/sites.rb +3 -0
- data/app/assets/javascripts/pageflow/dist/ui.js +298 -72
- data/app/assets/stylesheets/pageflow/admin/permalink_input.scss +10 -0
- data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +6 -1
- data/app/assets/stylesheets/pageflow/editor/file_thumbnails.scss +4 -0
- data/app/assets/stylesheets/pageflow/editor/help.scss +3 -3
- data/app/assets/stylesheets/pageflow/editor/info_box.scss +7 -0
- data/app/assets/stylesheets/pageflow/editor/inputs/file_input.scss +0 -5
- data/app/assets/stylesheets/pageflow/ui/forms.scss +1 -1
- data/app/controllers/pageflow/chapters_controller.rb +2 -2
- data/app/controllers/pageflow/editor/files_controller.rb +1 -1
- data/app/controllers/pageflow/entries_controller.rb +10 -0
- data/app/controllers/pageflow/feeds_controller.rb +18 -0
- data/app/controllers/pageflow/pages_controller.rb +2 -2
- data/app/controllers/pageflow/sitemaps_controller.rb +15 -0
- data/app/controllers/pageflow/storylines_controller.rb +2 -2
- data/app/helpers/pageflow/entries_helper.rb +2 -1
- data/app/helpers/pageflow/feeds_helper.rb +66 -0
- data/app/helpers/pageflow/page_types_helper.rb +9 -9
- data/app/inputs/pageflow_permalink_input.rb +15 -3
- data/app/models/concerns/pageflow/reusable_file.rb +3 -3
- data/app/models/pageflow/account.rb +8 -0
- data/app/models/pageflow/audio_file_url_templates.rb +2 -1
- data/app/models/pageflow/draft_entry.rb +1 -1
- data/app/models/pageflow/entries_feed.rb +32 -0
- data/app/models/pageflow/image_file.rb +14 -3
- data/app/models/pageflow/membership.rb +3 -2
- data/app/models/pageflow/other_file.rb +5 -0
- data/app/models/pageflow/other_file_url_templates.rb +16 -0
- data/app/models/pageflow/published_entry.rb +6 -0
- data/app/models/pageflow/revision.rb +4 -0
- data/app/models/pageflow/site.rb +8 -0
- data/app/models/pageflow/sitemaps.rb +13 -0
- data/app/models/pageflow/used_file.rb +2 -2
- data/app/models/pageflow/video_file_url_templates.rb +3 -1
- data/app/models/pageflow/widget.rb +9 -1
- data/app/views/admin/entries/_permalink_inputs.html.erb +1 -2
- data/app/views/admin/sites/_attributes_table.html.arb +3 -0
- data/app/views/admin/sites/_fields.html.erb +6 -0
- data/app/views/components/pageflow/admin/extensible_attributes_table.rb +8 -2
- data/app/views/components/pageflow/admin/sites_tab.rb +3 -0
- data/app/views/pageflow/editor/config/_seeds.json.jbuilder +1 -0
- data/app/views/pageflow/feeds/index.atom.builder +20 -0
- data/app/views/pageflow/sitemaps/index.xml.builder +9 -0
- data/config/initializers/features.rb +1 -0
- data/config/initializers/paperclip.rb +4 -0
- data/config/locales/de.yml +27 -6
- data/config/locales/en.yml +30 -4
- data/config/routes.rb +3 -0
- data/config/spring.rb +1 -1
- data/db/migrate/20230120092923_create_other_files.rb +23 -0
- data/db/migrate/20230323115745_add_feeds_enabled_to_sites.rb +5 -0
- data/db/migrate/20230323154323_add_sitemap_enabled_to_sites.rb +5 -0
- data/db/migrate/20230331103823_add_title_to_sites.rb +5 -0
- data/db/migrate/20230405103612_add_custom_feed_url_to_sites.rb +5 -0
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +445 -109
- data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +26 -3
- data/entry_types/paged/app/controllers/pageflow_paged/editor/entries_controller.rb +0 -2
- data/entry_types/paged/app/controllers/pageflow_paged/entries_controller.rb +1 -0
- data/entry_types/paged/app/views/pageflow_paged/entries/show.html.erb +1 -0
- data/entry_types/paged/config/initializers/features.rb +0 -1
- data/entry_types/paged/lib/pageflow_paged/engine.rb +17 -1
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/chapters_controller.rb +2 -2
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/content_elements_controller.rb +3 -4
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/editor/sections_controller.rb +13 -6
- data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +2 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/cache_helper.rb +11 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/entry_json_seed_helper.rb +42 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +3 -0
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/packs_helper.rb +31 -10
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +9 -1
- data/entry_types/scrolled/app/helpers/pageflow_scrolled/themes_helper.rb +3 -1
- data/entry_types/scrolled/app/models/pageflow_scrolled/chapter.rb +23 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_head.html.erb +6 -1
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/entries/_seed.json.jbuilder +1 -5
- data/entry_types/scrolled/app/views/pageflow_scrolled/editor/sections/_section_with_content_elements.json.jbuilder +10 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +44 -41
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_consent_vendors.json.jbuilder +16 -0
- data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_entry.json.jbuilder +3 -0
- data/entry_types/scrolled/config/initializers/features.rb +5 -0
- data/entry_types/scrolled/config/locales/consent_widget.de.yml +4 -0
- data/entry_types/scrolled/config/locales/consent_widget.en.yml +4 -0
- data/entry_types/scrolled/config/locales/de.yml +189 -8
- data/entry_types/scrolled/config/locales/en.yml +207 -2
- data/entry_types/scrolled/config/routes.rb +4 -0
- data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +97 -5
- data/entry_types/scrolled/lib/pageflow_scrolled/additional_seed_data.rb +1 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/configuration.rb +96 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/content_element_consent_vendors.rb +38 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/engine.rb +17 -1
- data/entry_types/scrolled/lib/pageflow_scrolled/plugin.rb +24 -0
- data/entry_types/scrolled/lib/pageflow_scrolled/react_widget_type.rb +6 -1
- data/entry_types/scrolled/lib/tasks/pageflow_scrolled/storybook.rake +1 -2
- data/entry_types/scrolled/package/contentElements-editor.js +307 -22
- data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
- data/entry_types/scrolled/package/contentElements-frontend.js +690 -71
- data/entry_types/scrolled/package/editor.js +616 -220
- data/entry_types/scrolled/package/frontend/{EditableInlineText.module-14c7b097.js → EditableInlineText.module-fa9e3aff.js} +1669 -1674
- data/entry_types/scrolled/package/frontend/PhonePlatformContext-10a1d600.js +32 -0
- data/entry_types/scrolled/package/frontend/ToggleFullscreenCornerButton-727cce0d.js +107 -0
- data/entry_types/scrolled/package/frontend/Viewer-169e14ca.js +154 -0
- data/entry_types/scrolled/package/frontend/{Viewer-b6becc57.js → Viewer-ee1aa590.js} +32 -161
- data/entry_types/scrolled/package/frontend/arrowRight-92a34ccc.js +77 -0
- data/entry_types/scrolled/package/frontend/{components-b3160dd7.js → components-4a09bfa3.js} +185 -45
- data/entry_types/scrolled/package/frontend/{PhonePlatformContext-f6093cc6.js → i18n-ddd92820.js} +149 -107
- data/entry_types/scrolled/package/frontend/index-02378634.js +118 -0
- data/entry_types/scrolled/package/frontend/index.css +1 -1
- data/entry_types/scrolled/package/frontend/index.js +206 -54
- data/entry_types/scrolled/package/frontend/useContentElementEditorState-63045393.js +52 -0
- data/entry_types/scrolled/package/package.json +2 -1
- data/entry_types/scrolled/package/testHelpers.js +9 -2
- data/entry_types/scrolled/package/values/colors.module.css +15 -0
- data/entry_types/scrolled/package/widgets/consentBar.css +1 -0
- data/entry_types/scrolled/package/widgets/consentBar.js +426 -0
- data/entry_types/scrolled/package/widgets/defaultNavigation.css +1 -1
- data/lib/generators/pageflow/resque/resque_generator.rb +1 -1
- data/lib/pageflow/ability_mixin.rb +5 -5
- data/lib/pageflow/active_admin_can_can_fix.rb +2 -2
- data/lib/pageflow/built_in_file_type.rb +7 -0
- data/lib/pageflow/configuration.rb +21 -0
- data/lib/pageflow/engine.rb +60 -39
- data/lib/pageflow/entry_export_import/revision_serialization.rb +1 -1
- data/lib/pageflow/file_type.rb +2 -2
- data/lib/pageflow/global_config_api.rb +2 -2
- data/lib/pageflow/nested_revision_component.rb +23 -5
- data/lib/pageflow/rails_version.rb +19 -0
- data/lib/pageflow/seeds.rb +10 -7
- data/lib/pageflow/version.rb +1 -1
- data/lib/pageflow/widget_types.rb +4 -0
- data/package/config/webpack5.js +14 -0
- data/package/editor.js +141 -30
- data/package/frontend.js +26 -2
- data/package/testHelpers.js +1 -1
- data/package/ui.js +296 -71
- data/spec/factories/entries.rb +17 -3
- data/spec/factories/sites.rb +3 -0
- data/vendor/assets/javascripts/iscroll.js +4 -7
- metadata +65 -49
- data/app/helpers/pageflow/admin/permalinks_helper.rb +0 -15
- data/entry_types/scrolled/package/frontend/arrowRight-78a7cee4.js +0 -42
data/entry_types/scrolled/package/frontend/{components-b3160dd7.js → components-4a09bfa3.js}
RENAMED
@@ -1,15 +1,17 @@
|
|
1
1
|
import 'regenerator-runtime';
|
2
|
-
import {
|
2
|
+
import { a9 as ContentElementEditorCommandEmitterContext, b as usePostMessageListener, aa as MotifAreaVisibilityProvider, ab as ForcePaddingContext, ac as ContentElementConfigurationUpdateContext, d as api, l as widths, ad as LayoutWithoutInlineEditing, a8 as SectionThumbnail, ae as renderElement, af as renderLeaf$1, D as useContentElementEditorCommandSubscription, W as Text$1, r as frontendStyles } from './EditableInlineText.module-fa9e3aff.js';
|
3
3
|
import 'pageflow/frontend';
|
4
4
|
import React, { useMemo, useState, useCallback, useContext, useRef, useEffect, createContext, memo } from 'react';
|
5
|
-
import {
|
6
|
-
import '
|
5
|
+
import { _ as _slicedToArray, n as useEntryStateDispatch, b as _defineProperty, e as _objectWithoutProperties, u as useI18n, C as updateContentElementConfiguration, m as useChapter, f as useFile, a as _objectSpread2, l as _toConsumableArray, D as _unsupportedIterableToArray } from './i18n-ddd92820.js';
|
6
|
+
import classNames from 'classnames';
|
7
|
+
import { C as ContentElementEditorStateContext, a as useContentElementEditorState } from './useContentElementEditorState-63045393.js';
|
7
8
|
import 'use-context-selector';
|
8
9
|
import 'reselect';
|
9
10
|
import 'slugify';
|
10
|
-
import classNames from 'classnames';
|
11
11
|
import './createSuper-d0f30da3.js';
|
12
12
|
import BackboneEvents from 'backbone-events-standalone';
|
13
|
+
import 'i18n-js';
|
14
|
+
import { P as PhonePlatformContext } from './PhonePlatformContext-10a1d600.js';
|
13
15
|
import 'react-measure';
|
14
16
|
import { DndProvider, useDrop, useDrag } from 'react-dnd';
|
15
17
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
@@ -193,7 +195,7 @@ function MessageHandler(_ref) {
|
|
193
195
|
return null;
|
194
196
|
}
|
195
197
|
|
196
|
-
var styles = {"wrapper":"SectionDecorator-module_wrapper__3sTk3","selected":"SectionDecorator-module_selected__1gcmF","transitionSelected":"SectionDecorator-module_transitionSelected__Wklk6","controls":"SectionDecorator-module_controls__LVEJG","
|
198
|
+
var styles = {"wrapper":"SectionDecorator-module_wrapper__3sTk3","selected":"SectionDecorator-module_selected__1gcmF","transitionSelected":"SectionDecorator-module_transitionSelected__Wklk6","controls":"SectionDecorator-module_controls__LVEJG","transitionToolbar-after":"SectionDecorator-module_transitionToolbar-after__2_DVO SectionDecorator-module_toolbar__2Va1D","toolbar":"SectionDecorator-module_toolbar__2Va1D","transitionToolbar-before":"SectionDecorator-module_transitionToolbar-before__KipOO SectionDecorator-module_toolbar__2Va1D"};
|
197
199
|
|
198
200
|
var styles$1 = {"wrapper":"ContentElementDecorator-module_wrapper__NQgFN"};
|
199
201
|
|
@@ -298,7 +300,7 @@ function SectionDecorator(_ref) {
|
|
298
300
|
isLastContentElementSelected = _useEditorSelection2.isSelected;
|
299
301
|
|
300
302
|
function selectIfOutsideContentItem(event) {
|
301
|
-
if (!event.target.closest(".".concat(styles$1.wrapper))) {
|
303
|
+
if (!event.target.closest(".".concat(styles$1.wrapper)) && !event.target.closest('#fullscreenRoot')) {
|
302
304
|
isSelected ? resetSelection() : select();
|
303
305
|
}
|
304
306
|
}
|
@@ -770,7 +772,7 @@ function DefaultSelectionRect(props) {
|
|
770
772
|
scrollPoint: isSelected,
|
771
773
|
drag: drag,
|
772
774
|
dragHandleTitle: t('pageflow_scrolled.inline_editing.drag_content_element'),
|
773
|
-
full: props.
|
775
|
+
full: props.width === widths.full || props.customMargin,
|
774
776
|
ariaLabel: t('pageflow_scrolled.inline_editing.select_content_element'),
|
775
777
|
insertButtonTitles: t('pageflow_scrolled.inline_editing.insert_content_element'),
|
776
778
|
onClick: function onClick() {
|
@@ -930,7 +932,8 @@ var styles$6 = {"placeholder":"TextPlaceholder-module_placeholder__sgVwx"};
|
|
930
932
|
|
931
933
|
function TextPlaceholder(_ref) {
|
932
934
|
var text = _ref.text,
|
933
|
-
visible = _ref.visible
|
935
|
+
visible = _ref.visible,
|
936
|
+
className = _ref.className;
|
934
937
|
|
935
938
|
if (!text || !visible) {
|
936
939
|
return null;
|
@@ -938,7 +941,9 @@ function TextPlaceholder(_ref) {
|
|
938
941
|
|
939
942
|
return /*#__PURE__*/React.createElement("div", {
|
940
943
|
className: styles$6.placeholder
|
941
|
-
}, /*#__PURE__*/React.createElement("div",
|
944
|
+
}, /*#__PURE__*/React.createElement("div", {
|
945
|
+
className: className
|
946
|
+
}, text));
|
942
947
|
}
|
943
948
|
|
944
949
|
function withCustomInsertBreak(editor) {
|
@@ -977,7 +982,7 @@ function withCustomInsertBreak(editor) {
|
|
977
982
|
return editor;
|
978
983
|
}
|
979
984
|
|
980
|
-
var styles$7 = {"container":"index-module_container__3dD9z","shy":"index-module_shy__KgWjc","selected":"index-module_selected__mE58y","hoveringToolbar":"index-module_hoveringToolbar__31Xpd","selection":"index-module_selection__3dUiD","linkTooltip":"index-module_linkTooltip__36m1K","linkTooltipThumbnail":"index-module_linkTooltipThumbnail__2v-cf","linkTooltipThumbnailClickMask":"index-module_linkTooltipThumbnailClickMask__2Z3ff","linkTooltipNewTab":"index-module_linkTooltipNewTab__4tnLF","linkTooltipChapterNumber":"index-module_linkTooltipChapterNumber__2CsQA"};
|
985
|
+
var styles$7 = {"container":"index-module_container__3dD9z","shy":"index-module_shy__KgWjc","selected":"index-module_selected__mE58y","hoveringToolbarContainer":"index-module_hoveringToolbarContainer__3xVEz","hoveringToolbar":"index-module_hoveringToolbar__31Xpd","selection":"index-module_selection__3dUiD","linkTooltip":"index-module_linkTooltip__36m1K","linkTooltip-below":"index-module_linkTooltip-below__1wvl7","linkTooltip-above":"index-module_linkTooltip-above__P3YfD","linkTooltipThumbnail":"index-module_linkTooltipThumbnail__2v-cf","linkTooltipThumbnailClickMask":"index-module_linkTooltipThumbnailClickMask__2Z3ff","linkTooltipNewTab":"index-module_linkTooltipNewTab__4tnLF","linkTooltipChapterNumber":"index-module_linkTooltipChapterNumber__2CsQA"};
|
981
986
|
|
982
987
|
function _extends$3() {
|
983
988
|
_extends$3 = Object.assign || function (target) {
|
@@ -1018,6 +1023,7 @@ var UpdateContext = createContext();
|
|
1018
1023
|
function LinkTooltipProvider(_ref) {
|
1019
1024
|
var editor = _ref.editor,
|
1020
1025
|
disabled = _ref.disabled,
|
1026
|
+
position = _ref.position,
|
1021
1027
|
children = _ref.children;
|
1022
1028
|
|
1023
1029
|
var _useState = useState(),
|
@@ -1037,7 +1043,8 @@ function LinkTooltipProvider(_ref) {
|
|
1037
1043
|
setState({
|
1038
1044
|
href: href,
|
1039
1045
|
openInNewTab: openInNewTab,
|
1040
|
-
top: linkRect.bottom - outerRect.top + 10,
|
1046
|
+
top: position === 'below' ? linkRect.bottom - outerRect.top + 10 : 'auto',
|
1047
|
+
bottom: position === 'above' ? outerRect.bottom - linkRect.top + 10 : 'auto',
|
1041
1048
|
left: linkRect.left - outerRect.left
|
1042
1049
|
});
|
1043
1050
|
},
|
@@ -1054,7 +1061,7 @@ function LinkTooltipProvider(_ref) {
|
|
1054
1061
|
}
|
1055
1062
|
}
|
1056
1063
|
};
|
1057
|
-
}, []);
|
1064
|
+
}, [position]);
|
1058
1065
|
return /*#__PURE__*/React.createElement(UpdateContext.Provider, {
|
1059
1066
|
value: update
|
1060
1067
|
}, /*#__PURE__*/React.createElement("div", {
|
@@ -1062,7 +1069,8 @@ function LinkTooltipProvider(_ref) {
|
|
1062
1069
|
}, /*#__PURE__*/React.createElement(LinkTooltip, {
|
1063
1070
|
editor: editor,
|
1064
1071
|
state: state,
|
1065
|
-
disabled: disabled
|
1072
|
+
disabled: disabled,
|
1073
|
+
position: position
|
1066
1074
|
}), children));
|
1067
1075
|
}
|
1068
1076
|
function LinkPreview(_ref2) {
|
@@ -1087,6 +1095,7 @@ function LinkPreview(_ref2) {
|
|
1087
1095
|
function LinkTooltip(_ref3) {
|
1088
1096
|
var editor = _ref3.editor,
|
1089
1097
|
disabled = _ref3.disabled,
|
1098
|
+
position = _ref3.position,
|
1090
1099
|
state = _ref3.state;
|
1091
1100
|
|
1092
1101
|
var _useContext2 = useContext(UpdateContext),
|
@@ -1098,11 +1107,12 @@ function LinkTooltip(_ref3) {
|
|
1098
1107
|
}
|
1099
1108
|
|
1100
1109
|
return /*#__PURE__*/React.createElement("div", {
|
1101
|
-
className: classNames(styles$7.linkTooltip, styles$7.hoveringToolbar),
|
1110
|
+
className: classNames(styles$7.linkTooltip, styles$7["linkTooltip-".concat(position)], styles$7.hoveringToolbar),
|
1102
1111
|
onMouseEnter: keep,
|
1103
1112
|
onMouseLeave: deactivate,
|
1104
1113
|
style: {
|
1105
1114
|
top: state.top,
|
1115
|
+
bottom: state.bottom,
|
1106
1116
|
left: state.left,
|
1107
1117
|
opacity: 1
|
1108
1118
|
}
|
@@ -1124,6 +1134,10 @@ function LinkDestination(_ref4) {
|
|
1124
1134
|
return /*#__PURE__*/React.createElement(SectionLinkDestination, {
|
1125
1135
|
permaId: href.section
|
1126
1136
|
});
|
1137
|
+
} else if (href === null || href === void 0 ? void 0 : href.file) {
|
1138
|
+
return /*#__PURE__*/React.createElement(FileLinkDestination, {
|
1139
|
+
fileOptions: href.file
|
1140
|
+
});
|
1127
1141
|
} else {
|
1128
1142
|
return /*#__PURE__*/React.createElement(ExternalLinkDestination, {
|
1129
1143
|
href: href,
|
@@ -1144,7 +1158,7 @@ function ChapterLinkDestination(_ref5) {
|
|
1144
1158
|
t = _useI18n.t;
|
1145
1159
|
|
1146
1160
|
if (!chapter) {
|
1147
|
-
return
|
1161
|
+
return /*#__PURE__*/React.createElement("span", null, t('pageflow_scrolled.inline_editing.link_tooltip.deleted_chapter'));
|
1148
1162
|
}
|
1149
1163
|
|
1150
1164
|
return /*#__PURE__*/React.createElement("a", {
|
@@ -1197,6 +1211,29 @@ function ExternalLinkDestination(_ref7) {
|
|
1197
1211
|
}, openInNewTab ? t('pageflow_scrolled.inline_editing.link_tooltip.opens_in_new_tab') : t('pageflow_scrolled.inline_editing.link_tooltip.opens_in_same_tab')));
|
1198
1212
|
}
|
1199
1213
|
|
1214
|
+
function FileLinkDestination(_ref8) {
|
1215
|
+
var fileOptions = _ref8.fileOptions;
|
1216
|
+
var file = useFile(fileOptions);
|
1217
|
+
|
1218
|
+
var _useI18n4 = useI18n({
|
1219
|
+
locale: 'ui'
|
1220
|
+
}),
|
1221
|
+
t = _useI18n4.t;
|
1222
|
+
|
1223
|
+
if (!file) {
|
1224
|
+
return /*#__PURE__*/React.createElement("span", null, t('pageflow_scrolled.inline_editing.link_tooltip.deleted_file'));
|
1225
|
+
}
|
1226
|
+
|
1227
|
+
return /*#__PURE__*/React.createElement("a", {
|
1228
|
+
href: file.urls.original,
|
1229
|
+
target: "_blank",
|
1230
|
+
rel: "noopener noreferrer"
|
1231
|
+
}, file.urls.original.split('/').pop(), /*#__PURE__*/React.createElement(ExternalLinkIcon, {
|
1232
|
+
width: 10,
|
1233
|
+
height: 10
|
1234
|
+
}));
|
1235
|
+
}
|
1236
|
+
|
1200
1237
|
function withLinks(editor) {
|
1201
1238
|
var isInline = editor.isInline;
|
1202
1239
|
|
@@ -1258,20 +1295,28 @@ function useDropTargetsActive() {
|
|
1258
1295
|
return [dropTargetsActive, drop];
|
1259
1296
|
}
|
1260
1297
|
|
1298
|
+
var abortPreviousCall;
|
1261
1299
|
function useSelectLinkDestination() {
|
1262
1300
|
return function () {
|
1263
1301
|
return new Promise(function (resolve, reject) {
|
1302
|
+
if (abortPreviousCall) {
|
1303
|
+
abortPreviousCall();
|
1304
|
+
}
|
1305
|
+
|
1306
|
+
abortPreviousCall = function abortPreviousCall() {
|
1307
|
+
window.removeEventListener('message', receive);
|
1308
|
+
reject();
|
1309
|
+
};
|
1310
|
+
|
1264
1311
|
postSelectLinkDestinationMessage();
|
1265
1312
|
window.addEventListener('message', receive);
|
1266
1313
|
|
1267
1314
|
function receive(message) {
|
1268
1315
|
if (window.location.href.indexOf(message.origin) === 0) {
|
1269
1316
|
if (message.data.type === 'LINK_DESTINATION_SELECTED') {
|
1317
|
+
abortPreviousCall = null;
|
1270
1318
|
window.removeEventListener('message', receive);
|
1271
1319
|
resolve(message.data.payload);
|
1272
|
-
} else if (message.data.type === 'LINK_DESTINATION_SELECTION_ABORTED') {
|
1273
|
-
window.removeEventListener('message', receive);
|
1274
|
-
reject();
|
1275
1320
|
}
|
1276
1321
|
}
|
1277
1322
|
}
|
@@ -1454,7 +1499,8 @@ var LinkIcon = (function (_ref) {
|
|
1454
1499
|
}));
|
1455
1500
|
});
|
1456
1501
|
|
1457
|
-
function HoveringToolbar() {
|
1502
|
+
function HoveringToolbar(_ref) {
|
1503
|
+
var position = _ref.position;
|
1458
1504
|
var ref = useRef();
|
1459
1505
|
var outerRef = useRef();
|
1460
1506
|
var editor = useSlate();
|
@@ -1482,11 +1528,19 @@ function HoveringToolbar() {
|
|
1482
1528
|
var rect = domRange.getBoundingClientRect();
|
1483
1529
|
var outerRect = outerRef.current.getBoundingClientRect();
|
1484
1530
|
el.style.opacity = 1;
|
1485
|
-
el.style.top = "".concat(rect.bottom - outerRect.top + 10, "px");
|
1486
1531
|
el.style.left = "".concat(rect.left - outerRect.left, "px");
|
1532
|
+
|
1533
|
+
if (position === 'above') {
|
1534
|
+
el.style.top = 'auto';
|
1535
|
+
el.style.bottom = "".concat(outerRect.bottom - rect.top + 5, "px");
|
1536
|
+
} else {
|
1537
|
+
el.style.bottom = 'auto';
|
1538
|
+
el.style.top = "".concat(rect.bottom - outerRect.top + 5, "px");
|
1539
|
+
}
|
1487
1540
|
});
|
1488
1541
|
return /*#__PURE__*/React.createElement("div", {
|
1489
|
-
ref: outerRef
|
1542
|
+
ref: outerRef,
|
1543
|
+
className: styles$7.hoveringToolbarContainer
|
1490
1544
|
}, /*#__PURE__*/React.createElement("div", {
|
1491
1545
|
ref: ref,
|
1492
1546
|
className: styles$7.hoveringToolbar
|
@@ -1532,9 +1586,9 @@ function handleButtonClick(editor, format, selectLinkDestination) {
|
|
1532
1586
|
if (isLinkActive(editor)) {
|
1533
1587
|
unwrapLink(editor);
|
1534
1588
|
} else {
|
1535
|
-
selectLinkDestination().then(function (
|
1536
|
-
var href =
|
1537
|
-
openInNewTab =
|
1589
|
+
selectLinkDestination().then(function (_ref2) {
|
1590
|
+
var href = _ref2.href,
|
1591
|
+
openInNewTab = _ref2.openInNewTab;
|
1538
1592
|
wrapLink(editor, href, openInNewTab);
|
1539
1593
|
}, function () {});
|
1540
1594
|
}
|
@@ -1704,21 +1758,30 @@ function toggleBlock(editor, format) {
|
|
1704
1758
|
var block = _objectSpread2({
|
1705
1759
|
type: format,
|
1706
1760
|
children: []
|
1707
|
-
},
|
1761
|
+
}, preserveColorAndTypograpyhVariant(editor));
|
1708
1762
|
|
1709
1763
|
Transforms.wrapNodes(editor, block);
|
1710
1764
|
}
|
1711
1765
|
}
|
1712
1766
|
function applyTypograpyhVariant(editor, variant) {
|
1713
|
-
|
1767
|
+
applyProperties(editor, {
|
1714
1768
|
variant: variant
|
1715
|
-
}
|
1769
|
+
});
|
1770
|
+
}
|
1771
|
+
function applyColor(editor, color) {
|
1772
|
+
applyProperties(editor, {
|
1773
|
+
color: color
|
1774
|
+
});
|
1775
|
+
}
|
1776
|
+
|
1777
|
+
function applyProperties(editor, properties) {
|
1778
|
+
Transforms.setNodes(editor, properties, {
|
1716
1779
|
mode: 'highest'
|
1717
1780
|
});
|
1718
|
-
|
1781
|
+
applyPropertiesToListItems(editor, properties);
|
1719
1782
|
}
|
1720
1783
|
|
1721
|
-
function
|
1784
|
+
function applyPropertiesToListItems(editor, properties) {
|
1722
1785
|
var lists = Editor.nodes(editor, {
|
1723
1786
|
match: function match(n) {
|
1724
1787
|
return listTypes.includes(n.type);
|
@@ -1748,9 +1811,7 @@ function applyTypograpyhVariantToListItems(editor, variant) {
|
|
1748
1811
|
var _step2$value = _slicedToArray(_step2.value, 2),
|
1749
1812
|
itemPath = _step2$value[1];
|
1750
1813
|
|
1751
|
-
Transforms.setNodes(editor, {
|
1752
|
-
variant: variant
|
1753
|
-
}, {
|
1814
|
+
Transforms.setNodes(editor, properties, {
|
1754
1815
|
at: itemPath
|
1755
1816
|
});
|
1756
1817
|
}
|
@@ -1767,16 +1828,24 @@ function applyTypograpyhVariantToListItems(editor, variant) {
|
|
1767
1828
|
}
|
1768
1829
|
}
|
1769
1830
|
|
1770
|
-
function
|
1831
|
+
function preserveColorAndTypograpyhVariant(editor) {
|
1771
1832
|
var nodeEntry = Editor.above(editor, {
|
1772
1833
|
at: Range.start(editor.selection),
|
1773
1834
|
match: function match(n) {
|
1774
1835
|
return !!n.type;
|
1775
1836
|
}
|
1776
1837
|
});
|
1777
|
-
|
1778
|
-
|
1779
|
-
|
1838
|
+
var result = {};
|
1839
|
+
|
1840
|
+
if (nodeEntry && nodeEntry[0].variant) {
|
1841
|
+
result.variant = nodeEntry[0].variant;
|
1842
|
+
}
|
1843
|
+
|
1844
|
+
if (nodeEntry && nodeEntry[0].color) {
|
1845
|
+
result.color = nodeEntry[0].color;
|
1846
|
+
}
|
1847
|
+
|
1848
|
+
return result;
|
1780
1849
|
}
|
1781
1850
|
|
1782
1851
|
function withBlockNormalization(_ref, editor) {
|
@@ -2027,7 +2096,7 @@ function Selection(props) {
|
|
2027
2096
|
range = _useContentElementEdi.range;
|
2028
2097
|
|
2029
2098
|
useEffect(function () {
|
2030
|
-
var _getUniformSelectedNo;
|
2099
|
+
var _getUniformSelectedNo, _getUniformSelectedNo2;
|
2031
2100
|
|
2032
2101
|
var selection = editor.selection;
|
2033
2102
|
|
@@ -2084,7 +2153,8 @@ function Selection(props) {
|
|
2084
2153
|
setTransientState({
|
2085
2154
|
editableTextIsSingleBlock: editor.children.length <= 1,
|
2086
2155
|
exampleNode: getUniformSelectedNode(editor, 'type'),
|
2087
|
-
typographyVariant: (_getUniformSelectedNo = getUniformSelectedNode(editor, 'variant')) === null || _getUniformSelectedNo === void 0 ? void 0 : _getUniformSelectedNo.variant
|
2156
|
+
typographyVariant: (_getUniformSelectedNo = getUniformSelectedNode(editor, 'variant')) === null || _getUniformSelectedNo === void 0 ? void 0 : _getUniformSelectedNo.variant,
|
2157
|
+
color: (_getUniformSelectedNo2 = getUniformSelectedNode(editor, 'color')) === null || _getUniformSelectedNo2 === void 0 ? void 0 : _getUniformSelectedNo2.color
|
2088
2158
|
});
|
2089
2159
|
boundsRef.current = {
|
2090
2160
|
start: start,
|
@@ -2463,13 +2533,24 @@ var EditableText = React.memo(function EditableText(_ref) {
|
|
2463
2533
|
placeholder = _ref.placeholder,
|
2464
2534
|
onChange = _ref.onChange,
|
2465
2535
|
selectionRect = _ref.selectionRect,
|
2466
|
-
className = _ref.className
|
2536
|
+
className = _ref.className,
|
2537
|
+
placeholderClassName = _ref.placeholderClassName,
|
2538
|
+
_ref$scaleCategory = _ref.scaleCategory,
|
2539
|
+
scaleCategory = _ref$scaleCategory === void 0 ? 'body' : _ref$scaleCategory,
|
2540
|
+
autoFocus = _ref.autoFocus,
|
2541
|
+
_ref$floatingControls = _ref.floatingControlsPosition,
|
2542
|
+
floatingControlsPosition = _ref$floatingControls === void 0 ? 'below' : _ref$floatingControls;
|
2467
2543
|
var editor = useMemo(function () {
|
2468
2544
|
return withLinks(withCustomInsertBreak(withBlockNormalization({
|
2469
2545
|
onlyParagraphs: !selectionRect
|
2470
2546
|
}, withLineBreakNormalization(withReact(createEditor())))));
|
2471
2547
|
}, [selectionRect]);
|
2472
2548
|
var handleLineBreaks = useLineBreakHandler(editor);
|
2549
|
+
useEffect(function () {
|
2550
|
+
if (autoFocus) {
|
2551
|
+
ReactEditor.focus(editor);
|
2552
|
+
}
|
2553
|
+
}, [autoFocus, editor]);
|
2473
2554
|
|
2474
2555
|
var _useCachedValue = useCachedValue(value, {
|
2475
2556
|
defaultValue: [{
|
@@ -2495,8 +2576,14 @@ var EditableText = React.memo(function EditableText(_ref) {
|
|
2495
2576
|
Transforms.removeNodes(editor, {
|
2496
2577
|
mode: 'highest'
|
2497
2578
|
});
|
2498
|
-
} else if (command.type === 'TRANSIENT_STATE_UPDATE'
|
2499
|
-
|
2579
|
+
} else if (command.type === 'TRANSIENT_STATE_UPDATE') {
|
2580
|
+
if ('typographyVariant' in command.payload) {
|
2581
|
+
applyTypograpyhVariant(editor, command.payload.typographyVariant);
|
2582
|
+
}
|
2583
|
+
|
2584
|
+
if ('color' in command.payload) {
|
2585
|
+
applyColor(editor, command.payload.color);
|
2586
|
+
}
|
2500
2587
|
}
|
2501
2588
|
});
|
2502
2589
|
|
@@ -2506,7 +2593,7 @@ var EditableText = React.memo(function EditableText(_ref) {
|
|
2506
2593
|
ref = _useDropTargetsActive2[1];
|
2507
2594
|
|
2508
2595
|
return /*#__PURE__*/React.createElement(Text$1, {
|
2509
|
-
scaleCategory:
|
2596
|
+
scaleCategory: scaleCategory
|
2510
2597
|
}, /*#__PURE__*/React.createElement("div", {
|
2511
2598
|
className: classNames(styles$7.container, _defineProperty({}, styles$7.selected, isSelected)),
|
2512
2599
|
ref: ref
|
@@ -2515,12 +2602,15 @@ var EditableText = React.memo(function EditableText(_ref) {
|
|
2515
2602
|
value: cachedValue,
|
2516
2603
|
onChange: setCachedValue
|
2517
2604
|
}, /*#__PURE__*/React.createElement(LinkTooltipProvider, {
|
2518
|
-
editor: editor
|
2605
|
+
editor: editor,
|
2606
|
+
position: floatingControlsPosition
|
2519
2607
|
}, selectionRect && /*#__PURE__*/React.createElement(Selection, {
|
2520
2608
|
contentElementId: contentElementId
|
2521
2609
|
}), dropTargetsActive && /*#__PURE__*/React.createElement(DropTargets$1, {
|
2522
2610
|
contentElementId: contentElementId
|
2523
|
-
}), /*#__PURE__*/React.createElement(HoveringToolbar,
|
2611
|
+
}), /*#__PURE__*/React.createElement(HoveringToolbar, {
|
2612
|
+
position: floatingControlsPosition
|
2613
|
+
}), /*#__PURE__*/React.createElement(Editable, {
|
2524
2614
|
className: className,
|
2525
2615
|
decorate: decorateLineBreaks,
|
2526
2616
|
onKeyDown: handleLineBreaks,
|
@@ -2528,6 +2618,7 @@ var EditableText = React.memo(function EditableText(_ref) {
|
|
2528
2618
|
renderLeaf: renderLeafWithLineBreakDecoration
|
2529
2619
|
}))), /*#__PURE__*/React.createElement(TextPlaceholder, {
|
2530
2620
|
text: placeholder,
|
2621
|
+
className: placeholderClassName,
|
2531
2622
|
visible: isBlank(cachedValue)
|
2532
2623
|
})));
|
2533
2624
|
});
|
@@ -2679,6 +2770,55 @@ function renderLeaf(_ref2) {
|
|
2679
2770
|
return /*#__PURE__*/React.createElement("span", attributes, children);
|
2680
2771
|
}
|
2681
2772
|
|
2773
|
+
var styles$a = {"button":"ActionButton-module_button__8gy6J","position-outside":"ActionButton-module_position-outside__1E_lp","position-outsideIndented":"ActionButton-module_position-outsideIndented__3vf-7","position-inside":"ActionButton-module_position-inside__28_gp"};
|
2774
|
+
|
2775
|
+
function _extends$e() {
|
2776
|
+
_extends$e = Object.assign || function (target) {
|
2777
|
+
for (var i = 1; i < arguments.length; i++) {
|
2778
|
+
var source = arguments[i];
|
2779
|
+
|
2780
|
+
for (var key in source) {
|
2781
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
2782
|
+
target[key] = source[key];
|
2783
|
+
}
|
2784
|
+
}
|
2785
|
+
}
|
2786
|
+
|
2787
|
+
return target;
|
2788
|
+
};
|
2789
|
+
|
2790
|
+
return _extends$e.apply(this, arguments);
|
2791
|
+
}
|
2792
|
+
var pencil = (function (_ref) {
|
2793
|
+
var _ref$styles = _ref.styles,
|
2794
|
+
props = _objectWithoutProperties(_ref, ["styles"]);
|
2795
|
+
|
2796
|
+
return /*#__PURE__*/React.createElement("svg", _extends$e({
|
2797
|
+
xmlns: "http://www.w3.org/2000/svg",
|
2798
|
+
viewBox: "0 0 512 512"
|
2799
|
+
}, props), /*#__PURE__*/React.createElement("path", {
|
2800
|
+
d: "M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1-33.9-33.9-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2l199.2-199.2 22.6-22.7zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9l-78.2 23 23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7l-14.4 14.5-22.6 22.6-11.4 11.3 33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5l-39.3-39.4c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"
|
2801
|
+
}));
|
2802
|
+
});
|
2803
|
+
|
2804
|
+
var icons = {
|
2805
|
+
pencil: pencil
|
2806
|
+
};
|
2807
|
+
function ActionButton(_ref) {
|
2808
|
+
var icon = _ref.icon,
|
2809
|
+
text = _ref.text,
|
2810
|
+
position = _ref.position,
|
2811
|
+
onClick = _ref.onClick;
|
2812
|
+
var Icon = icons[icon];
|
2813
|
+
return /*#__PURE__*/React.createElement("button", {
|
2814
|
+
className: classNames(styles$a.button, styles$a["position-".concat(position)]),
|
2815
|
+
onClick: onClick
|
2816
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
2817
|
+
width: 15,
|
2818
|
+
height: 15
|
2819
|
+
}), text);
|
2820
|
+
}
|
2821
|
+
|
2682
2822
|
function PhonePlatformProvider(_ref) {
|
2683
2823
|
var children = _ref.children;
|
2684
2824
|
|
@@ -2709,4 +2849,4 @@ function PhonePlatformProvider(_ref) {
|
|
2709
2849
|
}, children);
|
2710
2850
|
}
|
2711
2851
|
|
2712
|
-
export { ContentDecorator, ContentElementDecorator, EditableInlineText, EditableText, LayoutWithPlaceholder, PhonePlatformProvider, SectionDecorator };
|
2852
|
+
export { ActionButton, ContentDecorator, ContentElementDecorator, EditableInlineText, EditableText, LayoutWithPlaceholder, PhonePlatformProvider, SectionDecorator };
|