@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.
Files changed (191) hide show
  1. package/lib/draft-js/block-renderer/background-image-block.js +123 -0
  2. package/lib/draft-js/block-renderer/background-video-block.js +133 -0
  3. package/lib/draft-js/block-renderer/color-box-block.js +92 -0
  4. package/lib/draft-js/block-renderer/divider-block.js +24 -0
  5. package/lib/draft-js/block-renderer/embedded-code-block.js +63 -0
  6. package/lib/draft-js/block-renderer/image-block.js +47 -0
  7. package/lib/draft-js/block-renderer/info-box-block.js +89 -0
  8. package/lib/draft-js/block-renderer/media-block.js +65 -0
  9. package/lib/draft-js/block-renderer/related-post-block.js +51 -0
  10. package/lib/draft-js/block-renderer/side-index-block.js +103 -0
  11. package/lib/draft-js/block-renderer/slideshow-block.js +71 -0
  12. package/lib/draft-js/block-renderer/table-block.js +408 -0
  13. package/lib/draft-js/buttons/annotation.js +117 -0
  14. package/lib/draft-js/buttons/background-color.js +123 -0
  15. package/lib/draft-js/buttons/background-image.js +222 -0
  16. package/lib/draft-js/buttons/background-video.js +222 -0
  17. package/lib/draft-js/buttons/color-box.js +172 -0
  18. package/lib/draft-js/buttons/divider.js +63 -0
  19. package/lib/draft-js/buttons/embedded-code.js +134 -0
  20. package/lib/draft-js/buttons/enlarge.js +24 -0
  21. package/lib/draft-js/buttons/font-color.js +116 -0
  22. package/lib/draft-js/buttons/image.js +68 -0
  23. package/lib/draft-js/buttons/info-box.js +147 -0
  24. package/lib/draft-js/buttons/link.js +107 -0
  25. package/lib/draft-js/buttons/media.js +121 -0
  26. package/lib/draft-js/buttons/related-post.js +71 -0
  27. package/lib/draft-js/buttons/selector/align-selector.js +71 -0
  28. package/lib/draft-js/buttons/selector/image-selector.js +428 -0
  29. package/lib/draft-js/buttons/selector/pagination.js +82 -0
  30. package/lib/draft-js/buttons/selector/post-selector.js +317 -0
  31. package/lib/draft-js/buttons/selector/search-box.js +46 -0
  32. package/lib/draft-js/buttons/selector/video-selector.js +284 -0
  33. package/lib/draft-js/buttons/side-index.js +200 -0
  34. package/lib/draft-js/buttons/slideshow.js +71 -0
  35. package/lib/draft-js/buttons/table.js +67 -0
  36. package/lib/draft-js/buttons/text-align.js +88 -0
  37. package/lib/draft-js/editor/basic-editor.js +366 -0
  38. package/lib/draft-js/editor/block-renderer-fn.js +117 -0
  39. package/lib/draft-js/editor/entity-decorator.js +16 -0
  40. package/lib/draft-js/editor/modifier.js +68 -0
  41. package/lib/draft-js/entity-decorator/annotation-decorator.js +86 -0
  42. package/lib/draft-js/entity-decorator/link-decorator.js +39 -0
  43. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.js +138 -0
  44. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.js +148 -0
  45. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.js +106 -0
  46. package/lib/website/mirrormedia/custom/block-renderer/divider-block.js +24 -0
  47. package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.js +63 -0
  48. package/lib/website/mirrormedia/custom/block-renderer/image-block.js +47 -0
  49. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.js +103 -0
  50. package/lib/website/mirrormedia/custom/block-renderer/media-block.js +65 -0
  51. package/lib/website/mirrormedia/custom/block-renderer/related-post-block.js +51 -0
  52. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.js +119 -0
  53. package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.js +71 -0
  54. package/lib/website/mirrormedia/custom/block-renderer/table-block.js +455 -0
  55. package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.js +86 -0
  56. package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.js +39 -0
  57. package/lib/website/mirrormedia/custom/selector/align-selector.js +71 -0
  58. package/lib/website/mirrormedia/custom/selector/image-selector.js +427 -0
  59. package/lib/website/mirrormedia/custom/selector/pagination.js +82 -0
  60. package/lib/website/mirrormedia/custom/selector/post-selector.js +318 -0
  61. package/lib/website/mirrormedia/custom/selector/search-box.js +46 -0
  62. package/lib/website/mirrormedia/custom/selector/video-selector.js +282 -0
  63. package/lib/website/mirrormedia/draft-editor/block-renderer-fn.js +117 -0
  64. package/lib/website/mirrormedia/draft-editor/entity-decorator.js +16 -0
  65. package/lib/website/mirrormedia/draft-editor/index.js +799 -0
  66. package/lib/website/mirrormedia/draft-renderer/block-renderer-fn.js +117 -0
  67. package/lib/website/mirrormedia/draft-renderer/entity-decorator.js +16 -0
  68. package/lib/website/mirrormedia/draft-renderer/index.js +160 -0
  69. package/lib/website/readr/custom/block-renderer/background-image-block.js +138 -0
  70. package/lib/website/readr/custom/block-renderer/background-video-block.js +148 -0
  71. package/lib/website/readr/custom/block-renderer/color-box-block.js +106 -0
  72. package/lib/website/readr/custom/block-renderer/divider-block.js +24 -0
  73. package/lib/website/readr/custom/block-renderer/embedded-code-block.js +63 -0
  74. package/lib/website/readr/custom/block-renderer/image-block.js +47 -0
  75. package/lib/website/readr/custom/block-renderer/info-box-block.js +103 -0
  76. package/lib/website/readr/custom/block-renderer/media-block.js +65 -0
  77. package/lib/website/readr/custom/block-renderer/related-post-block.js +51 -0
  78. package/lib/website/readr/custom/block-renderer/side-index-block.js +119 -0
  79. package/lib/website/readr/custom/block-renderer/slideshow-block.js +71 -0
  80. package/lib/website/readr/custom/block-renderer/table-block.js +455 -0
  81. package/lib/website/readr/custom/entity-decorator/annotation-decorator.js +86 -0
  82. package/lib/website/readr/custom/entity-decorator/link-decorator.js +39 -0
  83. package/lib/website/readr/custom/selector/align-selector.js +71 -0
  84. package/lib/website/readr/custom/selector/image-selector.js +427 -0
  85. package/lib/website/readr/custom/selector/pagination.js +82 -0
  86. package/lib/website/readr/custom/selector/post-selector.js +318 -0
  87. package/lib/website/readr/custom/selector/search-box.js +46 -0
  88. package/lib/website/readr/custom/selector/video-selector.js +282 -0
  89. package/lib/website/readr/draft-editor/block-renderer-fn.js +117 -0
  90. package/lib/website/readr/draft-editor/entity-decorator.js +16 -0
  91. package/lib/website/readr/draft-editor/index.js +799 -0
  92. package/lib/website/readr/draft-renderer/block-renderer-fn.js +117 -0
  93. package/lib/website/readr/draft-renderer/entity-decorator.js +16 -0
  94. package/lib/website/readr/draft-renderer/index.js +160 -0
  95. package/package.json +1 -1
  96. package/lib/draft-js/block-renderer/background-image-block.tsx +0 -113
  97. package/lib/draft-js/block-renderer/background-video-block.tsx +0 -120
  98. package/lib/draft-js/block-renderer/color-box-block.tsx +0 -85
  99. package/lib/draft-js/block-renderer/divider-block.tsx +0 -12
  100. package/lib/draft-js/block-renderer/embedded-code-block.tsx +0 -65
  101. package/lib/draft-js/block-renderer/image-block.tsx +0 -41
  102. package/lib/draft-js/block-renderer/info-box-block.tsx +0 -85
  103. package/lib/draft-js/block-renderer/media-block.tsx +0 -36
  104. package/lib/draft-js/block-renderer/related-post-block.tsx +0 -47
  105. package/lib/draft-js/block-renderer/side-index-block.tsx +0 -113
  106. package/lib/draft-js/block-renderer/slideshow-block.tsx +0 -62
  107. package/lib/draft-js/block-renderer/table-block.tsx +0 -488
  108. package/lib/draft-js/buttons/annotation.tsx +0 -113
  109. package/lib/draft-js/buttons/background-color.tsx +0 -125
  110. package/lib/draft-js/buttons/background-image.tsx +0 -276
  111. package/lib/draft-js/buttons/background-video.tsx +0 -275
  112. package/lib/draft-js/buttons/color-box.tsx +0 -207
  113. package/lib/draft-js/buttons/divider.tsx +0 -56
  114. package/lib/draft-js/buttons/embedded-code.tsx +0 -126
  115. package/lib/draft-js/buttons/enlarge.tsx +0 -11
  116. package/lib/draft-js/buttons/font-color.tsx +0 -113
  117. package/lib/draft-js/buttons/image.tsx +0 -71
  118. package/lib/draft-js/buttons/info-box.tsx +0 -170
  119. package/lib/draft-js/buttons/link.tsx +0 -103
  120. package/lib/draft-js/buttons/media.tsx +0 -120
  121. package/lib/draft-js/buttons/related-post.tsx +0 -81
  122. package/lib/draft-js/buttons/selector/align-selector.tsx +0 -65
  123. package/lib/draft-js/buttons/selector/image-selector.tsx +0 -485
  124. package/lib/draft-js/buttons/selector/pagination.tsx +0 -83
  125. package/lib/draft-js/buttons/selector/post-selector.tsx +0 -367
  126. package/lib/draft-js/buttons/selector/search-box.tsx +0 -39
  127. package/lib/draft-js/buttons/selector/video-selector.tsx +0 -312
  128. package/lib/draft-js/buttons/side-index.tsx +0 -257
  129. package/lib/draft-js/buttons/slideshow.tsx +0 -81
  130. package/lib/draft-js/buttons/table.tsx +0 -63
  131. package/lib/draft-js/buttons/text-align.tsx +0 -88
  132. package/lib/draft-js/editor/basic-editor.tsx +0 -384
  133. package/lib/draft-js/editor/block-redender-fn.tsx +0 -77
  134. package/lib/draft-js/editor/entity-decorator.tsx +0 -7
  135. package/lib/draft-js/editor/modifier.tsx +0 -71
  136. package/lib/draft-js/entity-decorator/annotation-decorator.tsx +0 -81
  137. package/lib/draft-js/entity-decorator/link-decorator.tsx +0 -27
  138. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.tsx +0 -128
  139. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.tsx +0 -135
  140. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.tsx +0 -98
  141. package/lib/website/mirrormedia/custom/block-renderer/divider-block.tsx +0 -12
  142. package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.tsx +0 -65
  143. package/lib/website/mirrormedia/custom/block-renderer/image-block.tsx +0 -41
  144. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.tsx +0 -98
  145. package/lib/website/mirrormedia/custom/block-renderer/media-block.tsx +0 -36
  146. package/lib/website/mirrormedia/custom/block-renderer/related-post-block.tsx +0 -47
  147. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.tsx +0 -125
  148. package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.tsx +0 -62
  149. package/lib/website/mirrormedia/custom/block-renderer/table-block.tsx +0 -537
  150. package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.tsx +0 -81
  151. package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.tsx +0 -27
  152. package/lib/website/mirrormedia/custom/selector/align-selector.tsx +0 -65
  153. package/lib/website/mirrormedia/custom/selector/image-selector.tsx +0 -485
  154. package/lib/website/mirrormedia/custom/selector/pagination.tsx +0 -83
  155. package/lib/website/mirrormedia/custom/selector/post-selector.tsx +0 -367
  156. package/lib/website/mirrormedia/custom/selector/search-box.tsx +0 -39
  157. package/lib/website/mirrormedia/custom/selector/video-selector.tsx +0 -310
  158. package/lib/website/mirrormedia/draft-editor/block-redender-fn.tsx +0 -77
  159. package/lib/website/mirrormedia/draft-editor/entity-decorator.tsx +0 -7
  160. package/lib/website/mirrormedia/draft-editor/index.tsx +0 -909
  161. package/lib/website/mirrormedia/draft-renderer/block-redender-fn.tsx +0 -77
  162. package/lib/website/mirrormedia/draft-renderer/entity-decorator.tsx +0 -7
  163. package/lib/website/mirrormedia/draft-renderer/index-deprecated.tsx +0 -43
  164. package/lib/website/mirrormedia/draft-renderer/index.tsx +0 -150
  165. package/lib/website/readr/custom/block-renderer/background-image-block.tsx +0 -128
  166. package/lib/website/readr/custom/block-renderer/background-video-block.tsx +0 -135
  167. package/lib/website/readr/custom/block-renderer/color-box-block.tsx +0 -98
  168. package/lib/website/readr/custom/block-renderer/divider-block.tsx +0 -12
  169. package/lib/website/readr/custom/block-renderer/embedded-code-block.tsx +0 -65
  170. package/lib/website/readr/custom/block-renderer/image-block.tsx +0 -41
  171. package/lib/website/readr/custom/block-renderer/info-box-block.tsx +0 -98
  172. package/lib/website/readr/custom/block-renderer/media-block.tsx +0 -36
  173. package/lib/website/readr/custom/block-renderer/related-post-block.tsx +0 -47
  174. package/lib/website/readr/custom/block-renderer/side-index-block.tsx +0 -125
  175. package/lib/website/readr/custom/block-renderer/slideshow-block.tsx +0 -62
  176. package/lib/website/readr/custom/block-renderer/table-block.tsx +0 -537
  177. package/lib/website/readr/custom/entity-decorator/annotation-decorator.tsx +0 -81
  178. package/lib/website/readr/custom/entity-decorator/link-decorator.tsx +0 -27
  179. package/lib/website/readr/custom/selector/align-selector.tsx +0 -65
  180. package/lib/website/readr/custom/selector/image-selector.tsx +0 -485
  181. package/lib/website/readr/custom/selector/pagination.tsx +0 -83
  182. package/lib/website/readr/custom/selector/post-selector.tsx +0 -367
  183. package/lib/website/readr/custom/selector/search-box.tsx +0 -39
  184. package/lib/website/readr/custom/selector/video-selector.tsx +0 -310
  185. package/lib/website/readr/draft-editor/block-redender-fn.tsx +0 -77
  186. package/lib/website/readr/draft-editor/entity-decorator.tsx +0 -7
  187. package/lib/website/readr/draft-editor/index.tsx +0 -909
  188. package/lib/website/readr/draft-renderer/block-redender-fn.tsx +0 -77
  189. package/lib/website/readr/draft-renderer/entity-decorator.tsx +0 -7
  190. package/lib/website/readr/draft-renderer/index-deprecated.tsx +0 -43
  191. package/lib/website/readr/draft-renderer/index.tsx +0 -150
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InfoBoxButton = InfoBoxButton;
7
+ exports.InfoBoxInput = InfoBoxInput;
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 _fields = require("@keystone-ui/fields");
20
+
21
+ var _draftConverter = _interopRequireDefault(require("../editor/draft-converter"));
22
+
23
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
24
+
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+
27
+ 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); }
28
+
29
+ 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; }
30
+
31
+ const TitleInput = (0, _styledComponents.default)(_fields.TextInput)`
32
+ margin-top: 30px;
33
+ margin-bottom: 10px;
34
+ `;
35
+
36
+ function InfoBoxInput(props) {
37
+ const {
38
+ isOpen,
39
+ onChange,
40
+ onCancel,
41
+ title,
42
+ rawContentStateForInfoBoxEditor
43
+ } = props;
44
+ const rawContentState = rawContentStateForInfoBoxEditor || {
45
+ blocks: [],
46
+ entityMap: {}
47
+ };
48
+ const initialInputValue = {
49
+ title: title || '',
50
+ // create an `editorState` from raw content state object
51
+ editorStateOfBasicEditor: _draftJs.EditorState.createWithContent((0, _draftJs.convertFromRaw)(rawContentState), _entityDecorator.default)
52
+ };
53
+ const [inputValue, setInputValue] = (0, _react.useState)(initialInputValue);
54
+
55
+ const clearInputValue = () => {
56
+ setInputValue(initialInputValue);
57
+ };
58
+
59
+ return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
60
+ isOpen: isOpen
61
+ }, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
62
+ title: `Insert Info Box`,
63
+ actions: {
64
+ cancel: {
65
+ label: 'Cancel',
66
+ action: () => {
67
+ clearInputValue();
68
+ onCancel();
69
+ }
70
+ },
71
+ confirm: {
72
+ label: 'Confirm',
73
+ action: () => {
74
+ onChange({
75
+ title: inputValue.title,
76
+ // convert `contentState` of the `editorState` into raw content state object
77
+ rawContentState: (0, _draftJs.convertToRaw)(inputValue.editorStateOfBasicEditor.getCurrentContent())
78
+ });
79
+ clearInputValue();
80
+ }
81
+ }
82
+ }
83
+ }, /*#__PURE__*/_react.default.createElement(TitleInput, {
84
+ onChange: e => setInputValue({
85
+ title: e.target.value,
86
+ editorStateOfBasicEditor: inputValue.editorStateOfBasicEditor
87
+ }),
88
+ type: "text",
89
+ placeholder: "Title",
90
+ value: inputValue.title
91
+ }), /*#__PURE__*/_react.default.createElement(_basicEditor.BasicEditor, {
92
+ editorState: inputValue.editorStateOfBasicEditor,
93
+ onChange: editorStateOfBasicEditor => {
94
+ setInputValue({
95
+ title: inputValue.title,
96
+ editorStateOfBasicEditor
97
+ });
98
+ }
99
+ })));
100
+ }
101
+
102
+ function InfoBoxButton(props) {
103
+ const [toShowInput, setToShowInput] = (0, _react.useState)(false);
104
+ const {
105
+ className,
106
+ editorState,
107
+ onChange: onEditorStateChange
108
+ } = props;
109
+
110
+ const onChange = ({
111
+ title,
112
+ rawContentState
113
+ }) => {
114
+ const contentState = editorState.getCurrentContent(); // create an InfoBox entity
115
+
116
+ const contentStateWithEntity = contentState.createEntity('INFOBOX', 'IMMUTABLE', {
117
+ title,
118
+ rawContentState,
119
+ body: _draftConverter.default.convertToHtml(rawContentState)
120
+ });
121
+ const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
122
+
123
+ const newEditorState = _draftJs.EditorState.set(editorState, {
124
+ currentContent: contentStateWithEntity
125
+ }); //The third parameter here is a space string, not an empty string
126
+ //If you set an empty string, you will get an error: Unknown DraftEntity key: null
127
+
128
+
129
+ onEditorStateChange(_draftJs.AtomicBlockUtils.insertAtomicBlock(newEditorState, entityKey, ' '));
130
+ setToShowInput(false);
131
+ };
132
+
133
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(InfoBoxInput, {
134
+ onChange: onChange,
135
+ onCancel: () => {
136
+ setToShowInput(false);
137
+ },
138
+ isOpen: toShowInput
139
+ }), /*#__PURE__*/_react.default.createElement("div", {
140
+ className: className,
141
+ onClick: () => {
142
+ setToShowInput(true);
143
+ }
144
+ }, /*#__PURE__*/_react.default.createElement("i", {
145
+ className: "far"
146
+ }), /*#__PURE__*/_react.default.createElement("span", null, "InfoBox")));
147
+ }
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LinkButton = LinkButton;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _modals = require("@keystone-ui/modals");
11
+
12
+ var _draftJs = require("draft-js");
13
+
14
+ var _fields = require("@keystone-ui/fields");
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ const styles = {
21
+ urlInput: {
22
+ fontFamily: "'Georgia', serif",
23
+ marginRight: 10,
24
+ padding: 10
25
+ }
26
+ };
27
+
28
+ function LinkButton(props) {
29
+ const {
30
+ isActive,
31
+ editorState,
32
+ onChange
33
+ } = props;
34
+ const [toShowUrlInput, setToShowUrlInput] = (0, _react.useState)(false);
35
+ const [urlValue, setUrlValue] = (0, _react.useState)('');
36
+
37
+ const promptForLink = e => {
38
+ e.preventDefault();
39
+ const selection = editorState.getSelection();
40
+
41
+ if (!selection.isCollapsed()) {
42
+ setToShowUrlInput(true);
43
+ }
44
+ };
45
+
46
+ const confirmLink = () => {
47
+ const contentState = editorState.getCurrentContent();
48
+ const contentStateWithEntity = contentState.createEntity('LINK', 'MUTABLE', {
49
+ url: urlValue
50
+ });
51
+ const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
52
+
53
+ const newEditorState = _draftJs.EditorState.set(editorState, {
54
+ currentContent: contentStateWithEntity
55
+ });
56
+
57
+ onChange(_draftJs.RichUtils.toggleLink(newEditorState, newEditorState.getSelection(), entityKey));
58
+ setToShowUrlInput(false);
59
+ setUrlValue('');
60
+ };
61
+
62
+ const onLinkInputKeyDown = e => {
63
+ if (e.which === 13) {
64
+ e.preventDefault();
65
+ confirmLink();
66
+ }
67
+ };
68
+
69
+ const removeLink = () => {
70
+ const selection = editorState.getSelection();
71
+
72
+ if (!selection.isCollapsed()) {
73
+ onChange(_draftJs.RichUtils.toggleLink(editorState, selection, null));
74
+ }
75
+
76
+ setToShowUrlInput(false);
77
+ setUrlValue('');
78
+ };
79
+
80
+ const urlInput = /*#__PURE__*/_react.default.createElement(_modals.AlertDialog, {
81
+ title: "Insert LINK",
82
+ isOpen: toShowUrlInput,
83
+ actions: {
84
+ cancel: {
85
+ label: 'Cancel',
86
+ action: removeLink
87
+ },
88
+ confirm: {
89
+ label: 'Confirm',
90
+ action: confirmLink
91
+ }
92
+ }
93
+ }, /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
94
+ onChange: e => setUrlValue(e.target.value),
95
+ style: styles.urlInput,
96
+ type: "text",
97
+ value: urlValue,
98
+ onKeyDown: onLinkInputKeyDown
99
+ }));
100
+
101
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, urlInput, /*#__PURE__*/_react.default.createElement("div", {
102
+ className: props.className,
103
+ onMouseDown: isActive ? removeLink : promptForLink
104
+ }, /*#__PURE__*/_react.default.createElement("i", {
105
+ className: "fas fa-link"
106
+ })));
107
+ }
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MediaButton = MediaButton;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _modals = require("@keystone-ui/modals");
11
+
12
+ var _draftJs = require("draft-js");
13
+
14
+ var _fields = require("@keystone-ui/fields");
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ const styles = {
21
+ buttons: {
22
+ marginBottom: 10,
23
+ display: 'flex'
24
+ },
25
+ urlInputContainer: {
26
+ marginBottom: 10
27
+ },
28
+ urlInput: {
29
+ fontFamily: "'Georgia', serif",
30
+ marginRight: 10,
31
+ padding: 3
32
+ },
33
+ button: {
34
+ marginTop: '10px',
35
+ marginRight: '10px',
36
+ cursor: 'pointer'
37
+ }
38
+ };
39
+
40
+ function MediaButton(props) {
41
+ const {
42
+ editorState,
43
+ onChange,
44
+ customStyles
45
+ } = props;
46
+ const [toShowUrlInput, setToShowUrlInput] = (0, _react.useState)(false);
47
+ const [urlValue, setUrlValue] = (0, _react.useState)('');
48
+ const [urlType, setUrlType] = (0, _react.useState)('');
49
+
50
+ const promptForMedia = mediaType => {
51
+ setToShowUrlInput(true);
52
+ setUrlValue('');
53
+ setUrlType(mediaType);
54
+ };
55
+
56
+ const confirmMedia = () => {
57
+ const contentState = editorState.getCurrentContent();
58
+ const contentStateWithEntity = contentState.createEntity(urlType, 'IMMUTABLE', {
59
+ src: urlValue
60
+ });
61
+ const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
62
+
63
+ const newEditorState = _draftJs.EditorState.set(editorState, {
64
+ currentContent: contentStateWithEntity
65
+ }); // The third parameter here is a space string, not an empty string
66
+ // If you set an empty string, you will get an error: Unknown DraftEntity key: null
67
+
68
+
69
+ onChange(_draftJs.AtomicBlockUtils.insertAtomicBlock(newEditorState, entityKey, ' '));
70
+ setToShowUrlInput(false);
71
+ setUrlType('');
72
+ };
73
+
74
+ const urlInput = /*#__PURE__*/_react.default.createElement(_modals.AlertDialog, {
75
+ title: `Insert ${urlType.toUpperCase()} LINK`,
76
+ isOpen: toShowUrlInput,
77
+ actions: {
78
+ confirm: {
79
+ label: 'Confirm',
80
+ action: confirmMedia
81
+ },
82
+ cancel: {
83
+ label: 'Cancel',
84
+ action: () => {
85
+ setToShowUrlInput(false);
86
+ setUrlValue('');
87
+ }
88
+ }
89
+ }
90
+ }, /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
91
+ onChange: e => setUrlValue(e.target.value),
92
+ style: styles.urlInput,
93
+ type: "text",
94
+ value: urlValue
95
+ }));
96
+
97
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, urlInput, /*#__PURE__*/_react.default.createElement("div", {
98
+ style: styles.buttons
99
+ }, /*#__PURE__*/_react.default.createElement("div", {
100
+ onClick: () => {
101
+ promptForMedia('imageLink');
102
+ },
103
+ style: customStyles || styles.button
104
+ }, /*#__PURE__*/_react.default.createElement("i", {
105
+ className: "fas fa-arrow-up-right-from-square"
106
+ }), /*#__PURE__*/_react.default.createElement("span", null, " Image Link")), /*#__PURE__*/_react.default.createElement("div", {
107
+ onClick: () => {
108
+ promptForMedia('audioLink');
109
+ },
110
+ style: customStyles || styles.button
111
+ }, /*#__PURE__*/_react.default.createElement("i", {
112
+ className: "far fa-file-audio"
113
+ }), /*#__PURE__*/_react.default.createElement("span", null, " Audio Link")), /*#__PURE__*/_react.default.createElement("div", {
114
+ onClick: () => {
115
+ promptForMedia('videoLink');
116
+ },
117
+ style: customStyles || styles.button
118
+ }, /*#__PURE__*/_react.default.createElement("i", {
119
+ className: "far fa-file-video"
120
+ }), /*#__PURE__*/_react.default.createElement("span", null, " Video Link"))));
121
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RelatedPostButton = RelatedPostButton;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _draftJs = require("draft-js");
11
+
12
+ var _postSelector = require("./selector/post-selector");
13
+
14
+ 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); }
15
+
16
+ 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; }
17
+
18
+ function RelatedPostButton(props) {
19
+ const {
20
+ editorState,
21
+ onChange,
22
+ className,
23
+ PostSelector = _postSelector.PostSelector
24
+ } = props;
25
+ const [toShowPostSelector, setToShowPostSelector] = (0, _react.useState)(false);
26
+
27
+ const promptForPostSelector = () => {
28
+ setToShowPostSelector(true);
29
+ };
30
+
31
+ const onPostSelectorChange = selected => {
32
+ if (!selected.length) {
33
+ setToShowPostSelector(false);
34
+ return;
35
+ }
36
+
37
+ const contentState = editorState.getCurrentContent();
38
+ const contentStateWithEntity = contentState.createEntity('RELATEDPOST', 'IMMUTABLE', {
39
+ posts: selected.map(ele => ele.post)
40
+ });
41
+ const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
42
+
43
+ const newEditorState = _draftJs.EditorState.set(editorState, {
44
+ currentContent: contentStateWithEntity
45
+ }); // The third parameter here is a space string, not an empty string
46
+ // If you set an empty string, you will get an error: Unknown DraftEntity key: null
47
+
48
+
49
+ onChange(_draftJs.AtomicBlockUtils.insertAtomicBlock(newEditorState, entityKey, ' '));
50
+ setToShowPostSelector(false);
51
+ };
52
+
53
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowPostSelector && /*#__PURE__*/_react.default.createElement(PostSelector, {
54
+ onChange: onPostSelectorChange,
55
+ enableMultiSelect: true,
56
+ minSelectCount: 1,
57
+ maxSelectCount: 3
58
+ }), /*#__PURE__*/_react.default.createElement("div", {
59
+ className: className,
60
+ onClick: promptForPostSelector
61
+ }, /*#__PURE__*/_react.default.createElement("svg", {
62
+ width: "16",
63
+ height: "14",
64
+ viewBox: "0 0 16 14",
65
+ fill: "none",
66
+ xmlns: "http://www.w3.org/2000/svg"
67
+ }, /*#__PURE__*/_react.default.createElement("path", {
68
+ d: "M14.675 0H10.7917C9.45556 0 8.29445 1.11291 8.00278 2.6837C7.70833 1.11291 6.55 0 5.21389 0H1.33333C0.597222 0 0 0.718549 0 1.6042V9.81905C0 10.7047 0.597222 11.4233 1.33333 11.4233H3.825C6.66389 11.4233 7.51111 12.2387 7.91667 13.9298C7.93611 14.0234 8.06111 14.0234 8.08333 13.9298C8.49167 12.2387 9.33889 11.4233 12.175 11.4233H14.6667C15.4028 11.4233 16 10.7047 16 9.81905V1.60754C16 0.725233 15.4083 0.00668417 14.675 0ZM6.72222 8.8699C6.72222 8.9334 6.68056 8.98687 6.625 8.98687H2.17222C2.11944 8.98687 2.075 8.93674 2.075 8.8699V8.10456C2.075 8.04106 2.11667 7.98759 2.17222 7.98759H6.62778C6.68056 7.98759 6.725 8.03772 6.725 8.10456V8.8699H6.72222ZM6.72222 6.83457C6.72222 6.89807 6.68056 6.95154 6.625 6.95154H2.17222C2.11944 6.95154 2.075 6.90141 2.075 6.83457V6.06923C2.075 6.00573 2.11667 5.95226 2.17222 5.95226H6.62778C6.68056 5.95226 6.725 6.00239 6.725 6.06923V6.83457H6.72222ZM6.72222 4.79924C6.72222 4.86274 6.68056 4.91621 6.625 4.91621H2.17222C2.11944 4.91621 2.075 4.86608 2.075 4.79924V4.0339C2.075 3.9704 2.11667 3.91693 2.17222 3.91693H6.62778C6.68056 3.91693 6.725 3.96706 6.725 4.0339V4.79924H6.72222ZM13.925 8.86656C13.925 8.93005 13.8833 8.98353 13.8278 8.98353H9.375C9.32222 8.98353 9.27778 8.9334 9.27778 8.86656V8.10122C9.27778 8.03772 9.31944 7.98424 9.375 7.98424H13.8306C13.8833 7.98424 13.9278 8.03438 13.9278 8.10122V8.86656H13.925ZM13.925 6.83122C13.925 6.89472 13.8833 6.9482 13.8278 6.9482H9.375C9.32222 6.9482 9.27778 6.89807 9.27778 6.83122V6.06589C9.27778 6.00239 9.31944 5.94891 9.375 5.94891H13.8306C13.8833 5.94891 13.9278 5.99905 13.9278 6.06589V6.83122H13.925ZM13.925 4.79589C13.925 4.85939 13.8833 4.91287 13.8278 4.91287H9.375C9.32222 4.91287 9.27778 4.86274 9.27778 4.79589V4.0339C9.27778 3.9704 9.31944 3.91693 9.375 3.91693H13.8306C13.8833 3.91693 13.9278 3.96706 13.9278 4.0339V4.79589H13.925Z",
69
+ fill: "#6b7280"
70
+ })), /*#__PURE__*/_react.default.createElement("span", null, "Related Post")));
71
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AlignSelector = AlignSelector;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _fields = require("@keystone-ui/fields");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ const Label = _styledComponents.default.label`
21
+ display: block;
22
+ margin: 10px 0;
23
+ font-weight: 600;
24
+ `;
25
+ const AlignSelect = (0, _styledComponents.default)(_fields.Select)`
26
+ ${({
27
+ menuHeight
28
+ }) => {
29
+ return `margin-bottom: ${menuHeight}px;`;
30
+ }}
31
+ `;
32
+
33
+ function AlignSelector(props) {
34
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
35
+ const [menuHeight, setMenuHeight] = (0, _react.useState)(0);
36
+ const {
37
+ align,
38
+ options,
39
+ onChange,
40
+ onOpen
41
+ } = props;
42
+ (0, _react.useEffect)(() => {
43
+ const selectMenu = document.querySelector('.css-nabggt-menu');
44
+
45
+ if (selectMenu) {
46
+ const styles = window.getComputedStyle(selectMenu);
47
+ const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
48
+ setMenuHeight(selectMenu.offsetHeight + margin);
49
+ } else {
50
+ setMenuHeight(0);
51
+ }
52
+
53
+ if (isOpen && onOpen) {
54
+ onOpen();
55
+ }
56
+ }, [isOpen]);
57
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
58
+ htmlFor: "alignment"
59
+ }, "\u5C0D\u9F4A"), /*#__PURE__*/_react.default.createElement(AlignSelect, {
60
+ id: "alignment" // default align === undefined
61
+ ,
62
+ value: options.find(option => option.value === align),
63
+ options: options,
64
+ onChange: option => {
65
+ onChange(option.value);
66
+ },
67
+ onMenuOpen: () => setIsOpen(true),
68
+ onMenuClose: () => setIsOpen(false),
69
+ menuHeight: menuHeight
70
+ }));
71
+ }