@mirrormedia/lilith-draft-editor 1.0.0-beta → 1.0.0-beta2
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.
- package/lib/draft-js/block-renderer/background-image-block.js +123 -0
- package/lib/draft-js/block-renderer/background-video-block.js +133 -0
- package/lib/draft-js/block-renderer/color-box-block.js +92 -0
- package/lib/draft-js/block-renderer/divider-block.js +24 -0
- package/lib/draft-js/block-renderer/embedded-code-block.js +63 -0
- package/lib/draft-js/block-renderer/image-block.js +47 -0
- package/lib/draft-js/block-renderer/info-box-block.js +89 -0
- package/lib/draft-js/block-renderer/media-block.js +65 -0
- package/lib/draft-js/block-renderer/related-post-block.js +51 -0
- package/lib/draft-js/block-renderer/side-index-block.js +103 -0
- package/lib/draft-js/block-renderer/slideshow-block.js +71 -0
- package/lib/draft-js/block-renderer/table-block.js +408 -0
- package/lib/draft-js/buttons/annotation.js +117 -0
- package/lib/draft-js/buttons/background-color.js +123 -0
- package/lib/draft-js/buttons/background-image.js +222 -0
- package/lib/draft-js/buttons/background-video.js +222 -0
- package/lib/draft-js/buttons/color-box.js +172 -0
- package/lib/draft-js/buttons/divider.js +63 -0
- package/lib/draft-js/buttons/embedded-code.js +134 -0
- package/lib/draft-js/buttons/enlarge.js +24 -0
- package/lib/draft-js/buttons/font-color.js +116 -0
- package/lib/draft-js/buttons/image.js +68 -0
- package/lib/draft-js/buttons/info-box.js +147 -0
- package/lib/draft-js/buttons/link.js +107 -0
- package/lib/draft-js/buttons/media.js +121 -0
- package/lib/draft-js/buttons/related-post.js +71 -0
- package/lib/draft-js/buttons/selector/align-selector.js +71 -0
- package/lib/draft-js/buttons/selector/image-selector.js +428 -0
- package/lib/draft-js/buttons/selector/pagination.js +82 -0
- package/lib/draft-js/buttons/selector/post-selector.js +317 -0
- package/lib/draft-js/buttons/selector/search-box.js +46 -0
- package/lib/draft-js/buttons/selector/video-selector.js +284 -0
- package/lib/draft-js/buttons/side-index.js +200 -0
- package/lib/draft-js/buttons/slideshow.js +71 -0
- package/lib/draft-js/buttons/table.js +67 -0
- package/lib/draft-js/buttons/text-align.js +88 -0
- package/lib/draft-js/editor/basic-editor.js +366 -0
- package/lib/draft-js/editor/block-renderer-fn.js +117 -0
- package/lib/draft-js/editor/entity-decorator.js +16 -0
- package/lib/draft-js/editor/modifier.js +68 -0
- package/lib/draft-js/entity-decorator/annotation-decorator.js +86 -0
- package/lib/draft-js/entity-decorator/link-decorator.js +39 -0
- package/lib/website/mirrormedia/custom/block-renderer/background-image-block.js +138 -0
- package/lib/website/mirrormedia/custom/block-renderer/background-video-block.js +148 -0
- package/lib/website/mirrormedia/custom/block-renderer/color-box-block.js +106 -0
- package/lib/website/mirrormedia/custom/block-renderer/divider-block.js +24 -0
- package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.js +63 -0
- package/lib/website/mirrormedia/custom/block-renderer/image-block.js +47 -0
- package/lib/website/mirrormedia/custom/block-renderer/info-box-block.js +103 -0
- package/lib/website/mirrormedia/custom/block-renderer/media-block.js +65 -0
- package/lib/website/mirrormedia/custom/block-renderer/related-post-block.js +51 -0
- package/lib/website/mirrormedia/custom/block-renderer/side-index-block.js +119 -0
- package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.js +71 -0
- package/lib/website/mirrormedia/custom/block-renderer/table-block.js +455 -0
- package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.js +86 -0
- package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.js +39 -0
- package/lib/website/mirrormedia/custom/selector/align-selector.js +71 -0
- package/lib/website/mirrormedia/custom/selector/image-selector.js +427 -0
- package/lib/website/mirrormedia/custom/selector/pagination.js +82 -0
- package/lib/website/mirrormedia/custom/selector/post-selector.js +318 -0
- package/lib/website/mirrormedia/custom/selector/search-box.js +46 -0
- package/lib/website/mirrormedia/custom/selector/video-selector.js +282 -0
- package/lib/website/mirrormedia/draft-editor/block-renderer-fn.js +117 -0
- package/lib/website/mirrormedia/draft-editor/entity-decorator.js +16 -0
- package/lib/website/mirrormedia/draft-editor/index.js +799 -0
- package/lib/website/mirrormedia/draft-renderer/block-renderer-fn.js +117 -0
- package/lib/website/mirrormedia/draft-renderer/entity-decorator.js +16 -0
- package/lib/website/mirrormedia/draft-renderer/index.js +160 -0
- package/lib/website/readr/custom/block-renderer/background-image-block.js +138 -0
- package/lib/website/readr/custom/block-renderer/background-video-block.js +148 -0
- package/lib/website/readr/custom/block-renderer/color-box-block.js +106 -0
- package/lib/website/readr/custom/block-renderer/divider-block.js +24 -0
- package/lib/website/readr/custom/block-renderer/embedded-code-block.js +63 -0
- package/lib/website/readr/custom/block-renderer/image-block.js +47 -0
- package/lib/website/readr/custom/block-renderer/info-box-block.js +103 -0
- package/lib/website/readr/custom/block-renderer/media-block.js +65 -0
- package/lib/website/readr/custom/block-renderer/related-post-block.js +51 -0
- package/lib/website/readr/custom/block-renderer/side-index-block.js +119 -0
- package/lib/website/readr/custom/block-renderer/slideshow-block.js +71 -0
- package/lib/website/readr/custom/block-renderer/table-block.js +455 -0
- package/lib/website/readr/custom/entity-decorator/annotation-decorator.js +86 -0
- package/lib/website/readr/custom/entity-decorator/link-decorator.js +39 -0
- package/lib/website/readr/custom/selector/align-selector.js +71 -0
- package/lib/website/readr/custom/selector/image-selector.js +427 -0
- package/lib/website/readr/custom/selector/pagination.js +82 -0
- package/lib/website/readr/custom/selector/post-selector.js +318 -0
- package/lib/website/readr/custom/selector/search-box.js +46 -0
- package/lib/website/readr/custom/selector/video-selector.js +282 -0
- package/lib/website/readr/draft-editor/block-renderer-fn.js +117 -0
- package/lib/website/readr/draft-editor/entity-decorator.js +16 -0
- package/lib/website/readr/draft-editor/index.js +799 -0
- package/lib/website/readr/draft-renderer/block-renderer-fn.js +117 -0
- package/lib/website/readr/draft-renderer/entity-decorator.js +16 -0
- package/lib/website/readr/draft-renderer/index.js +160 -0
- package/package.json +1 -1
- package/lib/draft-js/block-renderer/background-image-block.tsx +0 -113
- package/lib/draft-js/block-renderer/background-video-block.tsx +0 -120
- package/lib/draft-js/block-renderer/color-box-block.tsx +0 -85
- package/lib/draft-js/block-renderer/divider-block.tsx +0 -12
- package/lib/draft-js/block-renderer/embedded-code-block.tsx +0 -65
- package/lib/draft-js/block-renderer/image-block.tsx +0 -41
- package/lib/draft-js/block-renderer/info-box-block.tsx +0 -85
- package/lib/draft-js/block-renderer/media-block.tsx +0 -36
- package/lib/draft-js/block-renderer/related-post-block.tsx +0 -47
- package/lib/draft-js/block-renderer/side-index-block.tsx +0 -113
- package/lib/draft-js/block-renderer/slideshow-block.tsx +0 -62
- package/lib/draft-js/block-renderer/table-block.tsx +0 -488
- package/lib/draft-js/buttons/annotation.tsx +0 -113
- package/lib/draft-js/buttons/background-color.tsx +0 -125
- package/lib/draft-js/buttons/background-image.tsx +0 -276
- package/lib/draft-js/buttons/background-video.tsx +0 -275
- package/lib/draft-js/buttons/color-box.tsx +0 -207
- package/lib/draft-js/buttons/divider.tsx +0 -56
- package/lib/draft-js/buttons/embedded-code.tsx +0 -126
- package/lib/draft-js/buttons/enlarge.tsx +0 -11
- package/lib/draft-js/buttons/font-color.tsx +0 -113
- package/lib/draft-js/buttons/image.tsx +0 -71
- package/lib/draft-js/buttons/info-box.tsx +0 -170
- package/lib/draft-js/buttons/link.tsx +0 -103
- package/lib/draft-js/buttons/media.tsx +0 -120
- package/lib/draft-js/buttons/related-post.tsx +0 -81
- package/lib/draft-js/buttons/selector/align-selector.tsx +0 -65
- package/lib/draft-js/buttons/selector/image-selector.tsx +0 -485
- package/lib/draft-js/buttons/selector/pagination.tsx +0 -83
- package/lib/draft-js/buttons/selector/post-selector.tsx +0 -367
- package/lib/draft-js/buttons/selector/search-box.tsx +0 -39
- package/lib/draft-js/buttons/selector/video-selector.tsx +0 -312
- package/lib/draft-js/buttons/side-index.tsx +0 -257
- package/lib/draft-js/buttons/slideshow.tsx +0 -81
- package/lib/draft-js/buttons/table.tsx +0 -63
- package/lib/draft-js/buttons/text-align.tsx +0 -88
- package/lib/draft-js/editor/basic-editor.tsx +0 -384
- package/lib/draft-js/editor/block-redender-fn.tsx +0 -77
- package/lib/draft-js/editor/entity-decorator.tsx +0 -7
- package/lib/draft-js/editor/modifier.tsx +0 -71
- package/lib/draft-js/entity-decorator/annotation-decorator.tsx +0 -81
- package/lib/draft-js/entity-decorator/link-decorator.tsx +0 -27
- package/lib/website/mirrormedia/custom/block-renderer/background-image-block.tsx +0 -128
- package/lib/website/mirrormedia/custom/block-renderer/background-video-block.tsx +0 -135
- package/lib/website/mirrormedia/custom/block-renderer/color-box-block.tsx +0 -98
- package/lib/website/mirrormedia/custom/block-renderer/divider-block.tsx +0 -12
- package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.tsx +0 -65
- package/lib/website/mirrormedia/custom/block-renderer/image-block.tsx +0 -41
- package/lib/website/mirrormedia/custom/block-renderer/info-box-block.tsx +0 -98
- package/lib/website/mirrormedia/custom/block-renderer/media-block.tsx +0 -36
- package/lib/website/mirrormedia/custom/block-renderer/related-post-block.tsx +0 -47
- package/lib/website/mirrormedia/custom/block-renderer/side-index-block.tsx +0 -125
- package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.tsx +0 -62
- package/lib/website/mirrormedia/custom/block-renderer/table-block.tsx +0 -537
- package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.tsx +0 -81
- package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.tsx +0 -27
- package/lib/website/mirrormedia/custom/selector/align-selector.tsx +0 -65
- package/lib/website/mirrormedia/custom/selector/image-selector.tsx +0 -485
- package/lib/website/mirrormedia/custom/selector/pagination.tsx +0 -83
- package/lib/website/mirrormedia/custom/selector/post-selector.tsx +0 -367
- package/lib/website/mirrormedia/custom/selector/search-box.tsx +0 -39
- package/lib/website/mirrormedia/custom/selector/video-selector.tsx +0 -310
- package/lib/website/mirrormedia/draft-editor/block-redender-fn.tsx +0 -77
- package/lib/website/mirrormedia/draft-editor/entity-decorator.tsx +0 -7
- package/lib/website/mirrormedia/draft-editor/index.tsx +0 -909
- package/lib/website/mirrormedia/draft-renderer/block-redender-fn.tsx +0 -77
- package/lib/website/mirrormedia/draft-renderer/entity-decorator.tsx +0 -7
- package/lib/website/mirrormedia/draft-renderer/index-deprecated.tsx +0 -43
- package/lib/website/mirrormedia/draft-renderer/index.tsx +0 -150
- package/lib/website/readr/custom/block-renderer/background-image-block.tsx +0 -128
- package/lib/website/readr/custom/block-renderer/background-video-block.tsx +0 -135
- package/lib/website/readr/custom/block-renderer/color-box-block.tsx +0 -98
- package/lib/website/readr/custom/block-renderer/divider-block.tsx +0 -12
- package/lib/website/readr/custom/block-renderer/embedded-code-block.tsx +0 -65
- package/lib/website/readr/custom/block-renderer/image-block.tsx +0 -41
- package/lib/website/readr/custom/block-renderer/info-box-block.tsx +0 -98
- package/lib/website/readr/custom/block-renderer/media-block.tsx +0 -36
- package/lib/website/readr/custom/block-renderer/related-post-block.tsx +0 -47
- package/lib/website/readr/custom/block-renderer/side-index-block.tsx +0 -125
- package/lib/website/readr/custom/block-renderer/slideshow-block.tsx +0 -62
- package/lib/website/readr/custom/block-renderer/table-block.tsx +0 -537
- package/lib/website/readr/custom/entity-decorator/annotation-decorator.tsx +0 -81
- package/lib/website/readr/custom/entity-decorator/link-decorator.tsx +0 -27
- package/lib/website/readr/custom/selector/align-selector.tsx +0 -65
- package/lib/website/readr/custom/selector/image-selector.tsx +0 -485
- package/lib/website/readr/custom/selector/pagination.tsx +0 -83
- package/lib/website/readr/custom/selector/post-selector.tsx +0 -367
- package/lib/website/readr/custom/selector/search-box.tsx +0 -39
- package/lib/website/readr/custom/selector/video-selector.tsx +0 -310
- package/lib/website/readr/draft-editor/block-redender-fn.tsx +0 -77
- package/lib/website/readr/draft-editor/entity-decorator.tsx +0 -7
- package/lib/website/readr/draft-editor/index.tsx +0 -909
- package/lib/website/readr/draft-renderer/block-redender-fn.tsx +0 -77
- package/lib/website/readr/draft-renderer/entity-decorator.tsx +0 -7
- package/lib/website/readr/draft-renderer/index-deprecated.tsx +0 -43
- package/lib/website/readr/draft-renderer/index.tsx +0 -150
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AnnotationButton = AnnotationButton;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _basicEditor = require("../editor/basic-editor");
|
|
11
|
+
|
|
12
|
+
var _draftJs = require("draft-js");
|
|
13
|
+
|
|
14
|
+
var _modals = require("@keystone-ui/modals");
|
|
15
|
+
|
|
16
|
+
var _entityDecorator = _interopRequireDefault(require("../editor/entity-decorator"));
|
|
17
|
+
|
|
18
|
+
var _draftConverter = _interopRequireDefault(require("../editor/draft-converter"));
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
function escapeHTML(s) {
|
|
27
|
+
return s.replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>').replace(/'/g, ''');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function AnnotationButton(props) {
|
|
31
|
+
const toggleEntity = _draftJs.RichUtils.toggleLink;
|
|
32
|
+
const {
|
|
33
|
+
isActive,
|
|
34
|
+
editorState,
|
|
35
|
+
onChange
|
|
36
|
+
} = props;
|
|
37
|
+
const [toShowInput, setToShowInput] = (0, _react.useState)(false);
|
|
38
|
+
const [inputValue, setInputValue] = (0, _react.useState)({
|
|
39
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createEmpty(_entityDecorator.default)
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const promptForAnnotation = e => {
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
const selection = editorState.getSelection();
|
|
45
|
+
|
|
46
|
+
if (!selection.isCollapsed()) {
|
|
47
|
+
setToShowInput(true);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const confirmAnnotation = () => {
|
|
52
|
+
const contentState = editorState.getCurrentContent();
|
|
53
|
+
const rawContentState = (0, _draftJs.convertToRaw)(inputValue.editorStateOfBasicEditor.getCurrentContent());
|
|
54
|
+
|
|
55
|
+
const bodyHTML = _draftConverter.default.convertToHtml(rawContentState);
|
|
56
|
+
|
|
57
|
+
const contentStateWithEntity = contentState.createEntity('ANNOTATION', 'MUTABLE', {
|
|
58
|
+
rawContentState,
|
|
59
|
+
bodyHTML,
|
|
60
|
+
bodyEscapedHTML: escapeHTML(bodyHTML)
|
|
61
|
+
});
|
|
62
|
+
const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
|
|
63
|
+
|
|
64
|
+
const newEditorState = _draftJs.EditorState.set(editorState, {
|
|
65
|
+
currentContent: contentStateWithEntity
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
onChange(toggleEntity(newEditorState, newEditorState.getSelection(), entityKey));
|
|
69
|
+
setToShowInput(false);
|
|
70
|
+
setInputValue({
|
|
71
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createEmpty(_entityDecorator.default)
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const removeAnnotation = () => {
|
|
76
|
+
const selection = editorState.getSelection();
|
|
77
|
+
|
|
78
|
+
if (!selection.isCollapsed()) {
|
|
79
|
+
onChange(toggleEntity(editorState, selection, null));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
setToShowInput(false);
|
|
83
|
+
setInputValue({
|
|
84
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createEmpty(_entityDecorator.default)
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const urlInput = /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
89
|
+
isOpen: toShowInput
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
91
|
+
title: "Insert Annotation",
|
|
92
|
+
actions: {
|
|
93
|
+
cancel: {
|
|
94
|
+
label: 'Cancel',
|
|
95
|
+
action: removeAnnotation
|
|
96
|
+
},
|
|
97
|
+
confirm: {
|
|
98
|
+
label: 'Confirm',
|
|
99
|
+
action: confirmAnnotation
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}, /*#__PURE__*/_react.default.createElement(_basicEditor.BasicEditor, {
|
|
103
|
+
editorState: inputValue.editorStateOfBasicEditor,
|
|
104
|
+
onChange: editorStateOfBasicEditor => {
|
|
105
|
+
setInputValue({
|
|
106
|
+
editorStateOfBasicEditor
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
})));
|
|
110
|
+
|
|
111
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, urlInput, /*#__PURE__*/_react.default.createElement("div", {
|
|
112
|
+
className: props.className,
|
|
113
|
+
onMouseDown: isActive ? removeAnnotation : promptForAnnotation
|
|
114
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
115
|
+
className: "far"
|
|
116
|
+
}), /*#__PURE__*/_react.default.createElement("span", null, "Annotation")));
|
|
117
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BackgroundColorButton = BackgroundColorButton;
|
|
7
|
+
exports.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR = void 0;
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
|
|
11
|
+
var _modals = require("@keystone-ui/modals");
|
|
12
|
+
|
|
13
|
+
var _draftJs = require("draft-js");
|
|
14
|
+
|
|
15
|
+
var _fields = require("@keystone-ui/fields");
|
|
16
|
+
|
|
17
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
18
|
+
|
|
19
|
+
var _modifier = require("../editor/modifier");
|
|
20
|
+
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
+
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
|
+
|
|
25
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
|
+
|
|
27
|
+
const ColorHexInput = (0, _styledComponents.default)(_fields.TextInput)`
|
|
28
|
+
font-family: Georgia, serif;
|
|
29
|
+
margin-right: 10px;
|
|
30
|
+
padding: 10px;
|
|
31
|
+
`;
|
|
32
|
+
const CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR = 'BACKGROUND_COLOR_';
|
|
33
|
+
exports.CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR = CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR;
|
|
34
|
+
|
|
35
|
+
function BackgroundColorButton(props) {
|
|
36
|
+
const {
|
|
37
|
+
isActive,
|
|
38
|
+
editorState,
|
|
39
|
+
onChange
|
|
40
|
+
} = props;
|
|
41
|
+
const [toShowColorInput, setToShowColorInput] = (0, _react.useState)(false);
|
|
42
|
+
const [colorValue, setColorValue] = (0, _react.useState)('');
|
|
43
|
+
|
|
44
|
+
const promptForColor = e => {
|
|
45
|
+
e.preventDefault();
|
|
46
|
+
const selection = editorState.getSelection();
|
|
47
|
+
|
|
48
|
+
if (!selection.isCollapsed()) {
|
|
49
|
+
setToShowColorInput(true);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const confirmColor = () => {
|
|
54
|
+
const selection = editorState.getSelection();
|
|
55
|
+
const contentState = editorState.getCurrentContent();
|
|
56
|
+
|
|
57
|
+
let newContentState = _modifier.Modifier.removeInlineStyleByPrefix(contentState, selection, CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR);
|
|
58
|
+
|
|
59
|
+
if (colorValue) {
|
|
60
|
+
newContentState = _modifier.Modifier.applyInlineStyle(newContentState, selection, CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR + colorValue);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
onChange(_draftJs.EditorState.push(editorState, newContentState, 'change-inline-style'));
|
|
64
|
+
setToShowColorInput(false);
|
|
65
|
+
setColorValue('');
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const onColorInputKeyDown = e => {
|
|
69
|
+
if (e.which === 13) {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
confirmColor();
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const removeColor = () => {
|
|
76
|
+
const selection = editorState.getSelection();
|
|
77
|
+
|
|
78
|
+
if (!selection.isCollapsed()) {
|
|
79
|
+
const contentState = editorState.getCurrentContent();
|
|
80
|
+
|
|
81
|
+
const newContentState = _modifier.Modifier.removeInlineStyleByPrefix(contentState, selection, CUSTOM_STYLE_PREFIX_BACKGROUND_COLOR);
|
|
82
|
+
|
|
83
|
+
onChange(_draftJs.EditorState.push(editorState, newContentState, 'change-inline-style'));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
setToShowColorInput(false);
|
|
87
|
+
setColorValue('');
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
const colorInput = /*#__PURE__*/_react.default.createElement(_modals.AlertDialog, {
|
|
91
|
+
title: "Hex Color Code (#ffffff)",
|
|
92
|
+
isOpen: toShowColorInput,
|
|
93
|
+
actions: {
|
|
94
|
+
cancel: {
|
|
95
|
+
label: 'Cancel',
|
|
96
|
+
action: removeColor
|
|
97
|
+
},
|
|
98
|
+
confirm: {
|
|
99
|
+
label: 'Confirm',
|
|
100
|
+
action: confirmColor
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}, /*#__PURE__*/_react.default.createElement(ColorHexInput, {
|
|
104
|
+
onChange: e => setColorValue(e.target.value),
|
|
105
|
+
type: "text",
|
|
106
|
+
value: colorValue,
|
|
107
|
+
onKeyDown: onColorInputKeyDown
|
|
108
|
+
}));
|
|
109
|
+
|
|
110
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, colorInput, /*#__PURE__*/_react.default.createElement("div", {
|
|
111
|
+
className: props.className,
|
|
112
|
+
onMouseDown: isActive ? removeColor : promptForColor
|
|
113
|
+
}, /*#__PURE__*/_react.default.createElement("svg", {
|
|
114
|
+
width: "16",
|
|
115
|
+
height: "14",
|
|
116
|
+
viewBox: "0 0 16 14",
|
|
117
|
+
fill: "none",
|
|
118
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
119
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
120
|
+
d: "M3.74443 8.75V6.78945C3.74443 6.37109 3.98306 5.98008 4.34542 5.73125L12.3911 0.229633C12.6091 0.0804726 12.8477 0 13.1453 0C13.4811 0 13.8022 0.124113 14.0409 0.345078L15.6553 1.84242C15.8939 2.06336 16 2.36305 16 2.67531C16 2.92578 15.9411 3.14727 15.779 3.37422L9.85159 10.8418C9.5835 11.1781 9.1357 11.375 8.71147 11.375H6.57264L5.85086 12.0695C5.4826 12.4113 4.8875 12.4113 4.51924 12.0695L3.02265 10.6805C2.65439 10.3387 2.65439 9.78633 3.02265 9.44453L3.74443 8.75ZM13.9466 2.73219L13.0834 1.9302L6.74646 6.26172L9.25354 8.58867L13.9466 2.73219ZM0.207107 12.7504L2.064 11.0277L4.14509 12.9582L3.23182 13.784C3.09925 13.9316 2.91954 14 2.73099 14H0.707052C0.3167 14 0 13.7074 0 13.3438V13.2152C0 13.0184 0.0745351 12.8734 0.207107 12.7504Z",
|
|
121
|
+
fill: isActive ? '#ED8B00' : '#6b7280'
|
|
122
|
+
})), /*#__PURE__*/_react.default.createElement("span", null, " Highlight")));
|
|
123
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BGImageButton = BGImageButton;
|
|
7
|
+
exports.BGImageInput = BGImageInput;
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
|
|
11
|
+
var _entityDecorator = _interopRequireDefault(require("../editor/entity-decorator"));
|
|
12
|
+
|
|
13
|
+
var _draftJs = require("draft-js");
|
|
14
|
+
|
|
15
|
+
var _basicEditor = require("../editor/basic-editor");
|
|
16
|
+
|
|
17
|
+
var _modals = require("@keystone-ui/modals");
|
|
18
|
+
|
|
19
|
+
var _button = require("@keystone-ui/button");
|
|
20
|
+
|
|
21
|
+
var _draftConverter = _interopRequireDefault(require("../editor/draft-converter"));
|
|
22
|
+
|
|
23
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
24
|
+
|
|
25
|
+
var _imageSelector = require("./selector/image-selector");
|
|
26
|
+
|
|
27
|
+
var _alignSelector = require("./selector/align-selector");
|
|
28
|
+
|
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
30
|
+
|
|
31
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
32
|
+
|
|
33
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
34
|
+
|
|
35
|
+
const Label = _styledComponents.default.label`
|
|
36
|
+
display: block;
|
|
37
|
+
font-weight: 600;
|
|
38
|
+
margin: 10px 0;
|
|
39
|
+
`;
|
|
40
|
+
const ImageInputText = _styledComponents.default.span`
|
|
41
|
+
display: inline-block;
|
|
42
|
+
margin-right: 10px;
|
|
43
|
+
`;
|
|
44
|
+
|
|
45
|
+
function BGImageInput(props) {
|
|
46
|
+
var _inputValue$image;
|
|
47
|
+
|
|
48
|
+
const {
|
|
49
|
+
isOpen,
|
|
50
|
+
onChange,
|
|
51
|
+
onCancel,
|
|
52
|
+
textBlockAlign,
|
|
53
|
+
image,
|
|
54
|
+
rawContentStateForBGImageEditor,
|
|
55
|
+
ImageSelector = _imageSelector.ImageSelector
|
|
56
|
+
} = props;
|
|
57
|
+
const rawContentState = rawContentStateForBGImageEditor || {
|
|
58
|
+
blocks: [],
|
|
59
|
+
entityMap: {}
|
|
60
|
+
};
|
|
61
|
+
const options = [{
|
|
62
|
+
value: 'fixed',
|
|
63
|
+
label: 'fixed (default)',
|
|
64
|
+
isDisabled: false
|
|
65
|
+
}, {
|
|
66
|
+
value: 'bottom',
|
|
67
|
+
label: 'bottom',
|
|
68
|
+
isDisabled: false
|
|
69
|
+
}, {
|
|
70
|
+
value: 'left',
|
|
71
|
+
label: 'left',
|
|
72
|
+
isDisabled: false
|
|
73
|
+
}, {
|
|
74
|
+
value: 'right',
|
|
75
|
+
label: 'right',
|
|
76
|
+
isDisabled: false
|
|
77
|
+
}];
|
|
78
|
+
const initialInputValue = {
|
|
79
|
+
textBlockAlign: textBlockAlign || 'fixed',
|
|
80
|
+
image: image || undefined,
|
|
81
|
+
// create an `editorState` from raw content state object
|
|
82
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)(rawContentState), _entityDecorator.default)
|
|
83
|
+
};
|
|
84
|
+
const [inputValue, setInputValue] = (0, _react.useState)(initialInputValue);
|
|
85
|
+
const [toShowImageSelector, setToShowImageSelector] = (0, _react.useState)(false);
|
|
86
|
+
|
|
87
|
+
const clearInputValue = () => {
|
|
88
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
89
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)({
|
|
90
|
+
blocks: [],
|
|
91
|
+
entityMap: {}
|
|
92
|
+
}), _entityDecorator.default)
|
|
93
|
+
}));
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const onImageSelectorChange = selectedImagesWithMeta => {
|
|
97
|
+
var _selectedImagesWithMe;
|
|
98
|
+
|
|
99
|
+
const image = selectedImagesWithMeta === null || selectedImagesWithMeta === void 0 ? void 0 : (_selectedImagesWithMe = selectedImagesWithMeta[0]) === null || _selectedImagesWithMe === void 0 ? void 0 : _selectedImagesWithMe.image;
|
|
100
|
+
|
|
101
|
+
if (!image) {
|
|
102
|
+
setToShowImageSelector(false);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
107
|
+
image: image
|
|
108
|
+
}));
|
|
109
|
+
setToShowImageSelector(false);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
(0, _react.useEffect)(() => {
|
|
113
|
+
if (isOpen) {
|
|
114
|
+
setInputValue(initialInputValue);
|
|
115
|
+
}
|
|
116
|
+
}, [isOpen]);
|
|
117
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(ImageSelector, {
|
|
118
|
+
onChange: onImageSelectorChange
|
|
119
|
+
}), /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
120
|
+
isOpen: isOpen
|
|
121
|
+
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
122
|
+
title: `Insert Background Image`,
|
|
123
|
+
actions: {
|
|
124
|
+
cancel: {
|
|
125
|
+
label: 'Cancel',
|
|
126
|
+
action: () => {
|
|
127
|
+
clearInputValue();
|
|
128
|
+
onCancel();
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
confirm: {
|
|
132
|
+
label: 'Confirm',
|
|
133
|
+
action: () => {
|
|
134
|
+
onChange({
|
|
135
|
+
textBlockAlign: inputValue.textBlockAlign,
|
|
136
|
+
image: inputValue.image,
|
|
137
|
+
// convert `contentState` of the `editorState` into raw content state object
|
|
138
|
+
rawContentState: (0, _draftJs.convertToRaw)(inputValue.editorStateOfBasicEditor.getCurrentContent())
|
|
139
|
+
});
|
|
140
|
+
clearInputValue();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}, /*#__PURE__*/_react.default.createElement(Label, null, "\u5716\u7247"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(ImageInputText, null, (_inputValue$image = inputValue.image) !== null && _inputValue$image !== void 0 && _inputValue$image.name ? inputValue.image.name : '尚未選取圖片'), /*#__PURE__*/_react.default.createElement(_button.Button, {
|
|
145
|
+
type: "button",
|
|
146
|
+
onClick: () => setToShowImageSelector(true),
|
|
147
|
+
tone: "passive"
|
|
148
|
+
}, "\u6DFB\u52A0\u5716\u7247")), /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
|
|
149
|
+
align: inputValue.textBlockAlign,
|
|
150
|
+
options: options,
|
|
151
|
+
onChange: textBlockAlign => {
|
|
152
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
153
|
+
textBlockAlign
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
}), /*#__PURE__*/_react.default.createElement(Label, null, "\u5167\u6587"), /*#__PURE__*/_react.default.createElement(_basicEditor.BasicEditor, {
|
|
157
|
+
editorState: inputValue.editorStateOfBasicEditor,
|
|
158
|
+
onChange: editorStateOfBasicEditor => {
|
|
159
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
160
|
+
editorStateOfBasicEditor
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
}))));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function BGImageButton(props) {
|
|
167
|
+
const [toShowInput, setToShowInput] = (0, _react.useState)(false);
|
|
168
|
+
const {
|
|
169
|
+
className,
|
|
170
|
+
editorState,
|
|
171
|
+
onChange: onEditorStateChange,
|
|
172
|
+
ImageSelector
|
|
173
|
+
} = props;
|
|
174
|
+
|
|
175
|
+
const onChange = ({
|
|
176
|
+
textBlockAlign,
|
|
177
|
+
image,
|
|
178
|
+
rawContentState
|
|
179
|
+
}) => {
|
|
180
|
+
const contentState = editorState.getCurrentContent(); // create an BGImage entity
|
|
181
|
+
|
|
182
|
+
const contentStateWithEntity = contentState.createEntity('BACKGROUNDIMAGE', 'IMMUTABLE', {
|
|
183
|
+
textBlockAlign,
|
|
184
|
+
image,
|
|
185
|
+
rawContentState,
|
|
186
|
+
body: _draftConverter.default.convertToHtml(rawContentState)
|
|
187
|
+
});
|
|
188
|
+
const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
|
|
189
|
+
|
|
190
|
+
const newEditorState = _draftJs.EditorState.set(editorState, {
|
|
191
|
+
currentContent: contentStateWithEntity
|
|
192
|
+
}); //The third parameter here is a space string, not an empty string
|
|
193
|
+
//If you set an empty string, you will get an error: Unknown DraftEntity key: null
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
onEditorStateChange(_draftJs.AtomicBlockUtils.insertAtomicBlock(newEditorState, entityKey, ' '));
|
|
197
|
+
setToShowInput(false);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(BGImageInput, {
|
|
201
|
+
onChange: onChange,
|
|
202
|
+
onCancel: () => {
|
|
203
|
+
setToShowInput(false);
|
|
204
|
+
},
|
|
205
|
+
isOpen: toShowInput,
|
|
206
|
+
ImageSelector: ImageSelector
|
|
207
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
208
|
+
className: className,
|
|
209
|
+
onClick: () => {
|
|
210
|
+
setToShowInput(true);
|
|
211
|
+
}
|
|
212
|
+
}, /*#__PURE__*/_react.default.createElement("svg", {
|
|
213
|
+
width: "16",
|
|
214
|
+
height: "14",
|
|
215
|
+
viewBox: "0 0 16 14",
|
|
216
|
+
fill: "none",
|
|
217
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
218
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
219
|
+
d: "M7.42974 10.2188C7.01697 9.80208 6.81059 9.29167 6.81059 8.6875C6.81059 8.08333 7.02783 7.57292 7.46232 7.15625C7.89681 6.73958 8.41819 6.53125 9.02648 6.53125C9.65648 6.53125 10.1887 6.73958 10.6232 7.15625C11.0577 7.57292 11.2749 8.08333 11.2749 8.6875C11.2749 9.27083 11.0577 9.77083 10.6232 10.1875C10.1887 10.6042 9.65648 10.8125 9.02648 10.8125C8.39647 10.8125 7.86422 10.6146 7.42974 10.2188ZM6.58248 11.0312C7.25594 11.6771 8.0706 12 9.02648 12C9.98235 12 10.797 11.6771 11.4705 11.0312C12.1656 10.3854 12.5132 9.60417 12.5132 8.6875C12.5132 7.77083 12.1656 6.98958 11.4705 6.34375C10.797 5.67708 9.98235 5.34375 9.02648 5.34375C8.0706 5.34375 7.25594 5.67708 6.58248 6.34375C5.90903 6.98958 5.5723 7.77083 5.5723 8.6875C5.5723 9.60417 5.90903 10.3854 6.58248 11.0312ZM4.17108 6V4H6.25662V2H11.112L12.3829 3.34375H14.5988C14.9681 3.34375 15.294 3.47917 15.5764 3.75C15.8588 4.02083 16 4.33333 16 4.6875V12.6875C16 13.0417 15.8588 13.3542 15.5764 13.625C15.294 13.875 14.9681 14 14.5988 14H3.48676C3.11745 14 2.79158 13.875 2.50916 13.625C2.22675 13.3542 2.08554 13.0417 2.08554 12.6875V6H4.17108ZM2.08554 2V0H3.48676V2H5.5723V3.34375H3.48676V5.34375H2.08554V3.34375H0V2H2.08554Z",
|
|
220
|
+
fill: "#6b7280"
|
|
221
|
+
})), /*#__PURE__*/_react.default.createElement("span", null, "Background Image")));
|
|
222
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BGVideoButton = BGVideoButton;
|
|
7
|
+
exports.BGVideoInput = BGVideoInput;
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
|
|
11
|
+
var _entityDecorator = _interopRequireDefault(require("../editor/entity-decorator"));
|
|
12
|
+
|
|
13
|
+
var _draftJs = require("draft-js");
|
|
14
|
+
|
|
15
|
+
var _basicEditor = require("../editor/basic-editor");
|
|
16
|
+
|
|
17
|
+
var _modals = require("@keystone-ui/modals");
|
|
18
|
+
|
|
19
|
+
var _button = require("@keystone-ui/button");
|
|
20
|
+
|
|
21
|
+
var _draftConverter = _interopRequireDefault(require("../editor/draft-converter"));
|
|
22
|
+
|
|
23
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
24
|
+
|
|
25
|
+
var _videoSelector = require("./selector/video-selector");
|
|
26
|
+
|
|
27
|
+
var _alignSelector = require("./selector/align-selector");
|
|
28
|
+
|
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
30
|
+
|
|
31
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
32
|
+
|
|
33
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
34
|
+
|
|
35
|
+
const Label = _styledComponents.default.label`
|
|
36
|
+
display: block;
|
|
37
|
+
font-weight: 600;
|
|
38
|
+
margin: 10px 0;
|
|
39
|
+
`;
|
|
40
|
+
const VideoInputText = _styledComponents.default.span`
|
|
41
|
+
display: inline-block;
|
|
42
|
+
margin-right: 10px;
|
|
43
|
+
`;
|
|
44
|
+
|
|
45
|
+
function BGVideoInput(props) {
|
|
46
|
+
var _inputValue$video;
|
|
47
|
+
|
|
48
|
+
const {
|
|
49
|
+
isOpen,
|
|
50
|
+
onChange,
|
|
51
|
+
onCancel,
|
|
52
|
+
textBlockAlign,
|
|
53
|
+
video,
|
|
54
|
+
rawContentStateForBGVideoEditor,
|
|
55
|
+
VideoSelector = _videoSelector.VideoSelector
|
|
56
|
+
} = props;
|
|
57
|
+
const rawContentState = rawContentStateForBGVideoEditor || {
|
|
58
|
+
blocks: [],
|
|
59
|
+
entityMap: {}
|
|
60
|
+
};
|
|
61
|
+
const options = [{
|
|
62
|
+
value: 'fixed',
|
|
63
|
+
label: 'fixed (default)',
|
|
64
|
+
isDisabled: false
|
|
65
|
+
}, {
|
|
66
|
+
value: 'bottom',
|
|
67
|
+
label: 'bottom',
|
|
68
|
+
isDisabled: false
|
|
69
|
+
}, {
|
|
70
|
+
value: 'left',
|
|
71
|
+
label: 'left',
|
|
72
|
+
isDisabled: false
|
|
73
|
+
}, {
|
|
74
|
+
value: 'right',
|
|
75
|
+
label: 'right',
|
|
76
|
+
isDisabled: false
|
|
77
|
+
}];
|
|
78
|
+
const initialInputValue = {
|
|
79
|
+
textBlockAlign: textBlockAlign || 'fixed',
|
|
80
|
+
video: video || undefined,
|
|
81
|
+
// create an `editorState` from raw content state object
|
|
82
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)(rawContentState), _entityDecorator.default)
|
|
83
|
+
};
|
|
84
|
+
const [inputValue, setInputValue] = (0, _react.useState)(initialInputValue);
|
|
85
|
+
const [toShowVideoSelector, setToShowVideoSelector] = (0, _react.useState)(false);
|
|
86
|
+
|
|
87
|
+
const clearInputValue = () => {
|
|
88
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
89
|
+
editorStateOfBasicEditor: _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)({
|
|
90
|
+
blocks: [],
|
|
91
|
+
entityMap: {}
|
|
92
|
+
}), _entityDecorator.default)
|
|
93
|
+
}));
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const onVideoSelectorChange = selectedVideosWithMeta => {
|
|
97
|
+
var _selectedVideosWithMe;
|
|
98
|
+
|
|
99
|
+
const video = selectedVideosWithMeta === null || selectedVideosWithMeta === void 0 ? void 0 : (_selectedVideosWithMe = selectedVideosWithMeta[0]) === null || _selectedVideosWithMe === void 0 ? void 0 : _selectedVideosWithMe.video;
|
|
100
|
+
|
|
101
|
+
if (!video) {
|
|
102
|
+
setToShowVideoSelector(false);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
107
|
+
video: video
|
|
108
|
+
}));
|
|
109
|
+
setToShowVideoSelector(false);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
(0, _react.useEffect)(() => {
|
|
113
|
+
if (isOpen) {
|
|
114
|
+
setInputValue(initialInputValue);
|
|
115
|
+
}
|
|
116
|
+
}, [isOpen]);
|
|
117
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowVideoSelector && /*#__PURE__*/_react.default.createElement(VideoSelector, {
|
|
118
|
+
onChange: onVideoSelectorChange
|
|
119
|
+
}), /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
120
|
+
isOpen: isOpen
|
|
121
|
+
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
122
|
+
title: `Insert Background Video`,
|
|
123
|
+
actions: {
|
|
124
|
+
cancel: {
|
|
125
|
+
label: 'Cancel',
|
|
126
|
+
action: () => {
|
|
127
|
+
clearInputValue();
|
|
128
|
+
onCancel();
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
confirm: {
|
|
132
|
+
label: 'Confirm',
|
|
133
|
+
action: () => {
|
|
134
|
+
onChange({
|
|
135
|
+
textBlockAlign: inputValue.textBlockAlign,
|
|
136
|
+
video: inputValue.video,
|
|
137
|
+
// convert `contentState` of the `editorState` into raw content state object
|
|
138
|
+
rawContentState: (0, _draftJs.convertToRaw)(inputValue.editorStateOfBasicEditor.getCurrentContent())
|
|
139
|
+
});
|
|
140
|
+
clearInputValue();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}, /*#__PURE__*/_react.default.createElement(Label, null, "\u5F71\u7247"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(VideoInputText, null, (_inputValue$video = inputValue.video) !== null && _inputValue$video !== void 0 && _inputValue$video.name ? inputValue.video.name : '尚未選取影片'), /*#__PURE__*/_react.default.createElement(_button.Button, {
|
|
145
|
+
type: "button",
|
|
146
|
+
onClick: () => setToShowVideoSelector(true),
|
|
147
|
+
tone: "passive"
|
|
148
|
+
}, "\u6DFB\u52A0\u5F71\u7247")), /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
|
|
149
|
+
align: inputValue.textBlockAlign,
|
|
150
|
+
options: options,
|
|
151
|
+
onChange: textBlockAlign => {
|
|
152
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
153
|
+
textBlockAlign
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
}), /*#__PURE__*/_react.default.createElement(Label, null, "\u5167\u6587"), /*#__PURE__*/_react.default.createElement(_basicEditor.BasicEditor, {
|
|
157
|
+
editorState: inputValue.editorStateOfBasicEditor,
|
|
158
|
+
onChange: editorStateOfBasicEditor => {
|
|
159
|
+
setInputValue(oldInputValue => ({ ...oldInputValue,
|
|
160
|
+
editorStateOfBasicEditor
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
}))));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function BGVideoButton(props) {
|
|
167
|
+
const [toShowInput, setToShowInput] = (0, _react.useState)(false);
|
|
168
|
+
const {
|
|
169
|
+
className,
|
|
170
|
+
editorState,
|
|
171
|
+
onChange: onEditorStateChange,
|
|
172
|
+
VideoSelector
|
|
173
|
+
} = props;
|
|
174
|
+
|
|
175
|
+
const onChange = ({
|
|
176
|
+
textBlockAlign,
|
|
177
|
+
video,
|
|
178
|
+
rawContentState
|
|
179
|
+
}) => {
|
|
180
|
+
const contentState = editorState.getCurrentContent(); // create an BGVideo entity
|
|
181
|
+
|
|
182
|
+
const contentStateWithEntity = contentState.createEntity('BACKGROUNDVIDEO', 'IMMUTABLE', {
|
|
183
|
+
textBlockAlign,
|
|
184
|
+
video,
|
|
185
|
+
rawContentState,
|
|
186
|
+
body: _draftConverter.default.convertToHtml(rawContentState)
|
|
187
|
+
});
|
|
188
|
+
const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
|
|
189
|
+
|
|
190
|
+
const newEditorState = _draftJs.EditorState.set(editorState, {
|
|
191
|
+
currentContent: contentStateWithEntity
|
|
192
|
+
}); //The third parameter here is a space string, not an empty string
|
|
193
|
+
//If you set an empty string, you will get an error: Unknown DraftEntity key: null
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
onEditorStateChange(_draftJs.AtomicBlockUtils.insertAtomicBlock(newEditorState, entityKey, ' '));
|
|
197
|
+
setToShowInput(false);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(BGVideoInput, {
|
|
201
|
+
onChange: onChange,
|
|
202
|
+
onCancel: () => {
|
|
203
|
+
setToShowInput(false);
|
|
204
|
+
},
|
|
205
|
+
isOpen: toShowInput,
|
|
206
|
+
VideoSelector: VideoSelector
|
|
207
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
208
|
+
className: className,
|
|
209
|
+
onClick: () => {
|
|
210
|
+
setToShowInput(true);
|
|
211
|
+
}
|
|
212
|
+
}, /*#__PURE__*/_react.default.createElement("svg", {
|
|
213
|
+
width: "16",
|
|
214
|
+
height: "10",
|
|
215
|
+
viewBox: "0 0 16 10",
|
|
216
|
+
fill: "none",
|
|
217
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
218
|
+
}, /*#__PURE__*/_react.default.createElement("path", {
|
|
219
|
+
d: "M10.6667 1.25V8.75C10.6667 9.44036 10.0697 10 9.33333 10H1.33333C0.596944 10 0 9.44036 0 8.75V1.25C0 0.559635 0.596944 0 1.33333 0H9.33333C10.0694 0 10.6667 0.559635 10.6667 1.25ZM16 1.65365V8.34375C16 9.00781 15.1897 9.39557 14.6003 9.01536L11.5556 7.04948V2.95052L14.6 0.982812C15.1917 0.602344 16 0.992188 16 1.65365Z",
|
|
220
|
+
fill: "#6b7280"
|
|
221
|
+
})), /*#__PURE__*/_react.default.createElement("span", null, "Background Video")));
|
|
222
|
+
}
|