@mirrormedia/lilith-draft-editor 1.1.0-alpha.3 → 1.1.0-alpha.30
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/buttons/annotation.js +22 -0
- package/lib/draft-js/buttons/audio.js +16 -3
- package/lib/draft-js/buttons/background-color.js +26 -0
- package/lib/draft-js/buttons/background-image.js +32 -13
- package/lib/draft-js/buttons/background-video.js +32 -13
- package/lib/draft-js/buttons/color-box.js +21 -5
- package/lib/draft-js/buttons/divider.js +12 -3
- package/lib/draft-js/buttons/embedded-code.js +16 -5
- package/lib/draft-js/buttons/enlarge.js +3 -0
- package/lib/draft-js/buttons/font-color.js +26 -0
- package/lib/draft-js/buttons/image.js +18 -7
- package/lib/draft-js/buttons/info-box.js +21 -5
- package/lib/draft-js/buttons/link.js +68 -22
- package/lib/draft-js/buttons/media.js +16 -3
- package/lib/draft-js/buttons/related-post.js +14 -3
- package/lib/draft-js/buttons/selector/align-selector.js +11 -2
- package/lib/draft-js/buttons/selector/audio-selector.js +33 -5
- package/lib/draft-js/buttons/selector/image-selector.js +64 -16
- package/lib/draft-js/buttons/selector/pagination.js +6 -2
- package/lib/draft-js/buttons/selector/post-selector.js +39 -6
- package/lib/draft-js/buttons/selector/search-box.js +9 -0
- package/lib/draft-js/buttons/selector/video-selector.js +33 -4
- package/lib/draft-js/buttons/side-index.js +31 -15
- package/lib/draft-js/buttons/slideshow.js +16 -7
- package/lib/draft-js/buttons/table.js +11 -5
- package/lib/draft-js/buttons/text-align.js +14 -0
- package/lib/draft-js/buttons/video.js +19 -5
- package/lib/draft-js/buttons/youtube.js +147 -0
- package/lib/draft-js/const.js +2 -0
- package/lib/draft-js/draft-converter/api-data-instance.js +14 -0
- package/lib/draft-js/draft-converter/atomic-block-processor.js +42 -12
- package/lib/draft-js/draft-converter/entities.js +3 -1
- package/lib/draft-js/draft-converter/index.js +29 -10
- package/lib/draft-js/draft-converter/inline-styles-processor.js +55 -22
- package/lib/draft-js/modifier.js +13 -5
- package/lib/draft-js/util.js +32 -0
- package/lib/index.js +4 -0
- package/lib/website/mirrormedia/block-renderer/background-image-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/background-video-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/color-box-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/embedded-code-block.js +12 -3
- package/lib/website/mirrormedia/block-renderer/image-block.js +108 -0
- package/lib/website/mirrormedia/block-renderer/info-box-block.js +14 -2
- package/lib/website/mirrormedia/block-renderer/side-index-block.js +13 -2
- package/lib/website/mirrormedia/block-renderer/slideshow-block.js +93 -7
- package/lib/website/mirrormedia/block-renderer/table-block.js +62 -28
- package/lib/website/mirrormedia/block-renderer-fn.js +48 -5
- package/lib/website/mirrormedia/draft-editor.js +138 -14
- package/lib/website/mirrormedia/entity-decorator.js +12 -1
- package/lib/website/mirrormedia/index.js +3 -0
- package/lib/website/mirrormedia/selector/align-selector.js +11 -2
- package/lib/website/mirrormedia/selector/audio-selector.js +34 -5
- package/lib/website/mirrormedia/selector/image-selector.js +75 -18
- package/lib/website/mirrormedia/selector/pagination.js +6 -2
- package/lib/website/mirrormedia/selector/post-selector.js +40 -6
- package/lib/website/mirrormedia/selector/search-box.js +9 -0
- package/lib/website/mirrormedia/selector/video-selector.js +36 -7
- package/lib/website/mirrormedia/shared-style/index.js +17 -0
- package/lib/website/mirrormedia/theme/index.js +28 -0
- package/lib/website/readr/block-renderer/background-image-block.js +66 -6
- package/lib/website/readr/block-renderer/background-video-block.js +76 -6
- package/lib/website/readr/block-renderer/color-box-block.js +14 -2
- package/lib/website/readr/block-renderer/image-block.js +106 -0
- package/lib/website/readr/block-renderer/info-box-block.js +14 -2
- package/lib/website/readr/block-renderer/side-index-block.js +13 -2
- package/lib/website/readr/block-renderer/table-block.js +62 -28
- package/lib/website/readr/block-renderer-fn.js +32 -3
- package/lib/website/readr/draft-editor.js +112 -12
- package/lib/website/readr/entity-decorator.js +4 -0
- package/lib/website/readr/index.js +3 -0
- package/lib/website/readr/selector/align-selector.js +11 -2
- package/lib/website/readr/selector/audio-selector.js +34 -17
- package/lib/website/readr/selector/image-selector.js +62 -16
- package/lib/website/readr/selector/pagination.js +6 -2
- package/lib/website/readr/selector/post-selector.js +40 -13
- package/lib/website/readr/selector/search-box.js +9 -0
- package/lib/website/readr/selector/video-selector.js +33 -4
- package/lib/website/readr/theme/index.js +39 -0
- package/package.json +8 -8
|
@@ -4,15 +4,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.AudioSelector = AudioSelector;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _modals = require("@keystone-ui/modals");
|
|
13
|
+
|
|
10
14
|
var _apollo = require("@keystone-6/core/admin-ui/apollo");
|
|
15
|
+
|
|
11
16
|
var _searchBox = require("./search-box");
|
|
17
|
+
|
|
12
18
|
var _pagination = require("./pagination");
|
|
19
|
+
|
|
13
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
14
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
|
+
|
|
15
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
|
+
|
|
16
26
|
const AudioSearchBox = (0, _styledComponents.default)(_searchBox.SearchBox)`
|
|
17
27
|
margin-top: 10px;
|
|
18
28
|
`;
|
|
@@ -59,6 +69,7 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
59
69
|
margin: 0;
|
|
60
70
|
}
|
|
61
71
|
`;
|
|
72
|
+
|
|
62
73
|
function AudiosGrids(props) {
|
|
63
74
|
const {
|
|
64
75
|
audios,
|
|
@@ -74,14 +85,15 @@ function AudiosGrids(props) {
|
|
|
74
85
|
});
|
|
75
86
|
}));
|
|
76
87
|
}
|
|
88
|
+
|
|
77
89
|
function AudioGrid(props) {
|
|
78
90
|
var _audio$file;
|
|
91
|
+
|
|
79
92
|
const {
|
|
80
93
|
audio,
|
|
81
94
|
onSelect,
|
|
82
95
|
isSelected
|
|
83
96
|
} = props;
|
|
84
|
-
console.log('audio', audio);
|
|
85
97
|
return /*#__PURE__*/_react.default.createElement(AudioGridWrapper, {
|
|
86
98
|
key: audio === null || audio === void 0 ? void 0 : audio.id,
|
|
87
99
|
onClick: () => onSelect(audio)
|
|
@@ -95,20 +107,24 @@ function AudioGrid(props) {
|
|
|
95
107
|
src: audio === null || audio === void 0 ? void 0 : (_audio$file = audio.file) === null || _audio$file === void 0 ? void 0 : _audio$file.url
|
|
96
108
|
})), /*#__PURE__*/_react.default.createElement(AudioName, null, audio === null || audio === void 0 ? void 0 : audio.name));
|
|
97
109
|
}
|
|
110
|
+
|
|
98
111
|
function AudioMetaGrids(props) {
|
|
99
112
|
const {
|
|
100
113
|
audioMetas
|
|
101
114
|
} = props;
|
|
102
115
|
return /*#__PURE__*/_react.default.createElement(AudioMetaGridsWrapper, null, audioMetas.map(audioMeta => {
|
|
103
116
|
var _audioMeta$audio;
|
|
117
|
+
|
|
104
118
|
return /*#__PURE__*/_react.default.createElement(AudioMetaGrid, {
|
|
105
119
|
key: audioMeta === null || audioMeta === void 0 ? void 0 : (_audioMeta$audio = audioMeta.audio) === null || _audioMeta$audio === void 0 ? void 0 : _audioMeta$audio.id,
|
|
106
120
|
audioMeta: audioMeta
|
|
107
121
|
});
|
|
108
122
|
}));
|
|
109
123
|
}
|
|
124
|
+
|
|
110
125
|
function AudioMetaGrid(props) {
|
|
111
126
|
var _audio$file2;
|
|
127
|
+
|
|
112
128
|
const {
|
|
113
129
|
audioMeta
|
|
114
130
|
} = props;
|
|
@@ -123,11 +139,13 @@ function AudioMetaGrid(props) {
|
|
|
123
139
|
src: audio === null || audio === void 0 ? void 0 : (_audio$file2 = audio.file) === null || _audio$file2 === void 0 ? void 0 : _audio$file2.url
|
|
124
140
|
})), /*#__PURE__*/_react.default.createElement(AudioName, null, audio === null || audio === void 0 ? void 0 : audio.name));
|
|
125
141
|
}
|
|
142
|
+
|
|
126
143
|
const AudiosQuery = (0, _apollo.gql)`
|
|
127
144
|
query Audios($searchText: String!, $take: Int, $skip: Int) {
|
|
128
145
|
audioFilesCount(where: { name: { contains: $searchText } })
|
|
129
146
|
audioFiles(
|
|
130
147
|
where: { name: { contains: $searchText } }
|
|
148
|
+
orderBy: { id: desc }
|
|
131
149
|
take: $take
|
|
132
150
|
skip: $skip
|
|
133
151
|
) {
|
|
@@ -152,6 +170,7 @@ const AudiosQuery = (0, _apollo.gql)`
|
|
|
152
170
|
}
|
|
153
171
|
}
|
|
154
172
|
`;
|
|
173
|
+
|
|
155
174
|
function AudioSelector(props) {
|
|
156
175
|
const [queryAudios, {
|
|
157
176
|
loading,
|
|
@@ -164,40 +183,46 @@ function AudioSelector(props) {
|
|
|
164
183
|
fetchPolicy: 'no-cache'
|
|
165
184
|
});
|
|
166
185
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
186
|
+
|
|
167
187
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
168
188
|
const [selected, setSelected] = (0, _react.useState)([]);
|
|
169
189
|
const pageSize = 6;
|
|
170
190
|
const {
|
|
171
191
|
onChange
|
|
172
192
|
} = props;
|
|
193
|
+
|
|
173
194
|
const onSave = () => {
|
|
174
195
|
onChange(selected);
|
|
175
196
|
};
|
|
197
|
+
|
|
176
198
|
const onCancel = () => {
|
|
177
199
|
onChange([]);
|
|
178
200
|
};
|
|
201
|
+
|
|
179
202
|
const onSearchBoxChange = async searchInput => {
|
|
180
203
|
setSearchText(searchInput);
|
|
181
204
|
setCurrentPage(1);
|
|
182
205
|
};
|
|
206
|
+
|
|
183
207
|
const onAudiosGridSelect = audioEntity => {
|
|
184
208
|
setSelected(selected => {
|
|
185
209
|
const filterdSelected = selected.filter(ele => {
|
|
186
210
|
var _ele$audio;
|
|
211
|
+
|
|
187
212
|
return ((_ele$audio = ele.audio) === null || _ele$audio === void 0 ? void 0 : _ele$audio.id) !== audioEntity.id;
|
|
188
|
-
});
|
|
213
|
+
}); // deselect the audio
|
|
189
214
|
|
|
190
|
-
// deselect the audio
|
|
191
215
|
if (filterdSelected.length !== selected.length) {
|
|
192
216
|
return filterdSelected;
|
|
193
|
-
}
|
|
217
|
+
} // single select
|
|
218
|
+
|
|
194
219
|
|
|
195
|
-
// single select
|
|
196
220
|
return [{
|
|
197
221
|
audio: audioEntity
|
|
198
222
|
}];
|
|
199
223
|
});
|
|
200
224
|
};
|
|
225
|
+
|
|
201
226
|
const selectedAudios = selected.map(ele => {
|
|
202
227
|
return ele.audio;
|
|
203
228
|
});
|
|
@@ -212,6 +237,7 @@ function AudioSelector(props) {
|
|
|
212
237
|
});
|
|
213
238
|
}
|
|
214
239
|
}, [currentPage, searchText]);
|
|
240
|
+
|
|
215
241
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(AudiosGrids, {
|
|
216
242
|
audios: audioFiles,
|
|
217
243
|
selected: selectedAudios,
|
|
@@ -224,12 +250,15 @@ function AudioSelector(props) {
|
|
|
224
250
|
setCurrentPage(pageIndex);
|
|
225
251
|
}
|
|
226
252
|
}));
|
|
253
|
+
|
|
227
254
|
if (loading) {
|
|
228
255
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
229
256
|
}
|
|
257
|
+
|
|
230
258
|
if (error) {
|
|
231
259
|
searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `audios` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, AudiosQuery.loc.source.body)));
|
|
232
260
|
}
|
|
261
|
+
|
|
233
262
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
234
263
|
isOpen: true
|
|
235
264
|
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
@@ -4,23 +4,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ImageSelector = ImageSelector;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
11
|
+
|
|
9
12
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
10
14
|
var _fields = require("@keystone-ui/fields");
|
|
15
|
+
|
|
11
16
|
var _modals = require("@keystone-ui/modals");
|
|
17
|
+
|
|
12
18
|
var _apollo = require("@keystone-6/core/admin-ui/apollo");
|
|
19
|
+
|
|
13
20
|
var _alignSelector = require("./align-selector");
|
|
21
|
+
|
|
14
22
|
var _searchBox = require("./search-box");
|
|
23
|
+
|
|
15
24
|
var _pagination = require("./pagination");
|
|
25
|
+
|
|
16
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
17
28
|
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); }
|
|
29
|
+
|
|
18
30
|
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; }
|
|
31
|
+
|
|
19
32
|
const imagesQuery = (0, _apollo.gql)`
|
|
20
33
|
query Photos($searchText: String!, $take: Int, $skip: Int) {
|
|
21
34
|
photosCount(where: { name: { contains: $searchText } })
|
|
22
35
|
photos(
|
|
23
36
|
where: { name: { contains: $searchText } }
|
|
37
|
+
orderBy: { id: desc }
|
|
24
38
|
take: $take
|
|
25
39
|
skip: $skip
|
|
26
40
|
) {
|
|
@@ -28,6 +42,8 @@ const imagesQuery = (0, _apollo.gql)`
|
|
|
28
42
|
name
|
|
29
43
|
imageFile {
|
|
30
44
|
url
|
|
45
|
+
width
|
|
46
|
+
height
|
|
31
47
|
}
|
|
32
48
|
resized {
|
|
33
49
|
original
|
|
@@ -37,6 +53,14 @@ const imagesQuery = (0, _apollo.gql)`
|
|
|
37
53
|
w1600
|
|
38
54
|
w2400
|
|
39
55
|
}
|
|
56
|
+
resizedWebp {
|
|
57
|
+
original
|
|
58
|
+
w480
|
|
59
|
+
w800
|
|
60
|
+
w1200
|
|
61
|
+
w1600
|
|
62
|
+
w2400
|
|
63
|
+
}
|
|
40
64
|
}
|
|
41
65
|
}
|
|
42
66
|
`;
|
|
@@ -99,6 +123,7 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
99
123
|
const ImageName = _styledComponents.default.p`
|
|
100
124
|
text-align: center;
|
|
101
125
|
`;
|
|
126
|
+
|
|
102
127
|
function ImageGrids(props) {
|
|
103
128
|
const {
|
|
104
129
|
images,
|
|
@@ -108,14 +133,16 @@ function ImageGrids(props) {
|
|
|
108
133
|
return /*#__PURE__*/_react.default.createElement(ImageGridsWrapper, null, images.map(image => {
|
|
109
134
|
return /*#__PURE__*/_react.default.createElement(ImageGrid, {
|
|
110
135
|
key: image.id,
|
|
111
|
-
isSelected: selected
|
|
136
|
+
isSelected: !!(selected !== null && selected !== void 0 && selected.find(selectedImage => selectedImage.id === image.id)),
|
|
112
137
|
onSelect: () => onSelect(image),
|
|
113
138
|
image: image
|
|
114
139
|
});
|
|
115
140
|
}));
|
|
116
141
|
}
|
|
142
|
+
|
|
117
143
|
function ImageGrid(props) {
|
|
118
144
|
var _image$resized;
|
|
145
|
+
|
|
119
146
|
const {
|
|
120
147
|
image,
|
|
121
148
|
onSelect,
|
|
@@ -130,10 +157,12 @@ function ImageGrid(props) {
|
|
|
130
157
|
src: image === null || image === void 0 ? void 0 : (_image$resized = image.resized) === null || _image$resized === void 0 ? void 0 : _image$resized.w800,
|
|
131
158
|
onError: e => {
|
|
132
159
|
var _image$imageFile;
|
|
160
|
+
|
|
133
161
|
return e.currentTarget.src = image === null || image === void 0 ? void 0 : (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url;
|
|
134
162
|
}
|
|
135
163
|
}));
|
|
136
164
|
}
|
|
165
|
+
|
|
137
166
|
function ImageMetaGrids(props) {
|
|
138
167
|
const {
|
|
139
168
|
imageMetas,
|
|
@@ -143,6 +172,7 @@ function ImageMetaGrids(props) {
|
|
|
143
172
|
} = props;
|
|
144
173
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGridsWrapper, null, imageMetas.map(imageMeta => {
|
|
145
174
|
var _imageMeta$image;
|
|
175
|
+
|
|
146
176
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGrid, {
|
|
147
177
|
key: imageMeta === null || imageMeta === void 0 ? void 0 : (_imageMeta$image = imageMeta.image) === null || _imageMeta$image === void 0 ? void 0 : _imageMeta$image.id,
|
|
148
178
|
imageMeta: imageMeta,
|
|
@@ -152,8 +182,10 @@ function ImageMetaGrids(props) {
|
|
|
152
182
|
});
|
|
153
183
|
}));
|
|
154
184
|
}
|
|
185
|
+
|
|
155
186
|
function ImageMetaGrid(props) {
|
|
156
187
|
var _image$resized2;
|
|
188
|
+
|
|
157
189
|
const {
|
|
158
190
|
imageMeta,
|
|
159
191
|
enableCaption,
|
|
@@ -169,6 +201,7 @@ function ImageMetaGrid(props) {
|
|
|
169
201
|
src: image === null || image === void 0 ? void 0 : (_image$resized2 = image.resized) === null || _image$resized2 === void 0 ? void 0 : _image$resized2.w800,
|
|
170
202
|
onError: e => {
|
|
171
203
|
var _image$imageFile2;
|
|
204
|
+
|
|
172
205
|
return e.currentTarget.src = image === null || image === void 0 ? void 0 : (_image$imageFile2 = image.imageFile) === null || _image$imageFile2 === void 0 ? void 0 : _image$imageFile2.url;
|
|
173
206
|
}
|
|
174
207
|
}), /*#__PURE__*/_react.default.createElement(ImageName, null, image === null || image === void 0 ? void 0 : image.name), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
@@ -201,6 +234,7 @@ function ImageMetaGrid(props) {
|
|
|
201
234
|
})
|
|
202
235
|
})));
|
|
203
236
|
}
|
|
237
|
+
|
|
204
238
|
function DelayInput(props) {
|
|
205
239
|
const {
|
|
206
240
|
delay,
|
|
@@ -217,7 +251,19 @@ function DelayInput(props) {
|
|
|
217
251
|
}
|
|
218
252
|
}));
|
|
219
253
|
}
|
|
254
|
+
|
|
220
255
|
function ImageSelector(props) {
|
|
256
|
+
const {
|
|
257
|
+
enableMultiSelect = false,
|
|
258
|
+
enableCaption = false,
|
|
259
|
+
enableUrl = false,
|
|
260
|
+
enableAlignment = false,
|
|
261
|
+
enableDelay = false,
|
|
262
|
+
onChange,
|
|
263
|
+
initialSelected = [],
|
|
264
|
+
initialAlign,
|
|
265
|
+
initialDelay
|
|
266
|
+
} = props;
|
|
221
267
|
const [queryImages, {
|
|
222
268
|
loading,
|
|
223
269
|
error,
|
|
@@ -229,10 +275,11 @@ function ImageSelector(props) {
|
|
|
229
275
|
fetchPolicy: 'no-cache'
|
|
230
276
|
});
|
|
231
277
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
278
|
+
|
|
232
279
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
233
|
-
const [selected, setSelected] = (0, _react.useState)(
|
|
234
|
-
const [delay, setDelay] = (0, _react.useState)('5');
|
|
235
|
-
const [align, setAlign] = (0, _react.useState)(
|
|
280
|
+
const [selected, setSelected] = (0, _react.useState)(initialSelected);
|
|
281
|
+
const [delay, setDelay] = (0, _react.useState)(initialDelay ?? '5');
|
|
282
|
+
const [align, setAlign] = (0, _react.useState)(initialAlign);
|
|
236
283
|
const contentWrapperRef = (0, _react.useRef)();
|
|
237
284
|
const pageSize = 6;
|
|
238
285
|
const options = [{
|
|
@@ -248,78 +295,84 @@ function ImageSelector(props) {
|
|
|
248
295
|
label: 'right',
|
|
249
296
|
isDisabled: false
|
|
250
297
|
}];
|
|
251
|
-
|
|
252
|
-
enableMultiSelect = false,
|
|
253
|
-
enableCaption = false,
|
|
254
|
-
enableUrl = false,
|
|
255
|
-
enableAlignment = false,
|
|
256
|
-
enableDelay = false,
|
|
257
|
-
onChange
|
|
258
|
-
} = props;
|
|
298
|
+
|
|
259
299
|
const onSave = () => {
|
|
260
300
|
let adjustedDelay = +delay;
|
|
261
301
|
adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
|
|
262
302
|
onChange(selected, align, adjustedDelay);
|
|
263
303
|
};
|
|
304
|
+
|
|
264
305
|
const onCancel = () => {
|
|
265
306
|
onChange([]);
|
|
266
307
|
};
|
|
308
|
+
|
|
267
309
|
const onSearchBoxChange = async searchInput => {
|
|
268
310
|
setSearchText(searchInput);
|
|
269
311
|
setCurrentPage(1);
|
|
270
312
|
};
|
|
313
|
+
|
|
271
314
|
const onDealyChange = delay => {
|
|
272
315
|
setDelay(delay);
|
|
273
316
|
};
|
|
317
|
+
|
|
274
318
|
const onAlignSelectChange = align => {
|
|
275
319
|
setAlign(align);
|
|
276
320
|
};
|
|
321
|
+
|
|
277
322
|
const onAlignSelectOpen = () => {
|
|
278
323
|
var _contentWrapperRef$cu;
|
|
324
|
+
|
|
279
325
|
const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
|
|
280
326
|
scrollWrapper.scrollTop = scrollWrapper.scrollHeight;
|
|
281
327
|
};
|
|
328
|
+
|
|
282
329
|
const onImageMetaChange = imageEntityWithMeta => {
|
|
283
330
|
if (enableMultiSelect) {
|
|
284
331
|
const foundIndex = selected.findIndex(ele => {
|
|
285
332
|
var _ele$image, _imageEntityWithMeta$;
|
|
333
|
+
|
|
286
334
|
return (ele === null || ele === void 0 ? void 0 : (_ele$image = ele.image) === null || _ele$image === void 0 ? void 0 : _ele$image.id) === (imageEntityWithMeta === null || imageEntityWithMeta === void 0 ? void 0 : (_imageEntityWithMeta$ = imageEntityWithMeta.image) === null || _imageEntityWithMeta$ === void 0 ? void 0 : _imageEntityWithMeta$.id);
|
|
287
335
|
});
|
|
336
|
+
|
|
288
337
|
if (foundIndex !== -1) {
|
|
289
338
|
selected[foundIndex] = imageEntityWithMeta;
|
|
290
339
|
setSelected(selected);
|
|
291
340
|
}
|
|
341
|
+
|
|
292
342
|
return;
|
|
293
343
|
}
|
|
344
|
+
|
|
294
345
|
setSelected([imageEntityWithMeta]);
|
|
295
346
|
};
|
|
347
|
+
|
|
296
348
|
const onImagesGridSelect = imageEntity => {
|
|
297
349
|
setSelected(selected => {
|
|
298
350
|
const filterdSelected = selected.filter(ele => {
|
|
299
351
|
var _ele$image2;
|
|
352
|
+
|
|
300
353
|
return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
|
|
301
|
-
});
|
|
354
|
+
}); // deselect the image
|
|
302
355
|
|
|
303
|
-
// deselect the image
|
|
304
356
|
if (filterdSelected.length !== selected.length) {
|
|
305
357
|
return filterdSelected;
|
|
306
|
-
}
|
|
358
|
+
} // add new selected one
|
|
359
|
+
|
|
307
360
|
|
|
308
|
-
// add new selected one
|
|
309
361
|
if (enableMultiSelect) {
|
|
310
362
|
return selected.concat([{
|
|
311
363
|
image: imageEntity,
|
|
312
364
|
desc: ''
|
|
313
365
|
}]);
|
|
314
|
-
}
|
|
366
|
+
} // single select
|
|
367
|
+
|
|
315
368
|
|
|
316
|
-
// single select
|
|
317
369
|
return [{
|
|
318
370
|
image: imageEntity,
|
|
319
371
|
desc: ''
|
|
320
372
|
}];
|
|
321
373
|
});
|
|
322
374
|
};
|
|
375
|
+
|
|
323
376
|
const selectedImages = selected.map(ele => {
|
|
324
377
|
return ele.image;
|
|
325
378
|
});
|
|
@@ -334,6 +387,7 @@ function ImageSelector(props) {
|
|
|
334
387
|
});
|
|
335
388
|
}
|
|
336
389
|
}, [currentPage, searchText]);
|
|
390
|
+
|
|
337
391
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
|
|
338
392
|
images: images,
|
|
339
393
|
selected: selectedImages,
|
|
@@ -346,12 +400,15 @@ function ImageSelector(props) {
|
|
|
346
400
|
setCurrentPage(pageIndex);
|
|
347
401
|
}
|
|
348
402
|
}));
|
|
403
|
+
|
|
349
404
|
if (loading) {
|
|
350
405
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
351
406
|
}
|
|
407
|
+
|
|
352
408
|
if (error) {
|
|
353
409
|
searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `images` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, imagesQuery.loc.source.body)));
|
|
354
410
|
}
|
|
411
|
+
|
|
355
412
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
356
413
|
isOpen: true
|
|
357
414
|
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
@@ -4,9 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Pagination = Pagination;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
10
14
|
const PaginationWrapper = _styledComponents.default.div`
|
|
11
15
|
display: flex;
|
|
12
16
|
justify-content: end;
|
|
@@ -29,6 +33,7 @@ const ArrowButtonWrapper = _styledComponents.default.a`
|
|
|
29
33
|
}
|
|
30
34
|
}}
|
|
31
35
|
`;
|
|
36
|
+
|
|
32
37
|
function Pagination({
|
|
33
38
|
currentPage,
|
|
34
39
|
total,
|
|
@@ -38,9 +43,8 @@ function Pagination({
|
|
|
38
43
|
const minPage = 1;
|
|
39
44
|
const limit = Math.ceil(total / pageSize);
|
|
40
45
|
const nextPage = currentPage + 1;
|
|
41
|
-
const prevPage = currentPage - 1;
|
|
46
|
+
const prevPage = currentPage - 1; // Don't render the pagiantion component if the pageSize is greater than the total number of items in the list.
|
|
42
47
|
|
|
43
|
-
// Don't render the pagiantion component if the pageSize is greater than the total number of items in the list.
|
|
44
48
|
if (total <= pageSize) return null;
|
|
45
49
|
return /*#__PURE__*/_react.default.createElement(PaginationWrapper, null, /*#__PURE__*/_react.default.createElement("div", null, currentPage, " of ", limit, " pages"), /*#__PURE__*/_react.default.createElement(Arrows, null, /*#__PURE__*/_react.default.createElement(ArrowButtonWrapper, {
|
|
46
50
|
onClick: () => {
|
|
@@ -4,20 +4,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.PostSelector = PostSelector;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _modals = require("@keystone-ui/modals");
|
|
13
|
+
|
|
10
14
|
var _apollo = require("@keystone-6/core/admin-ui/apollo");
|
|
15
|
+
|
|
11
16
|
var _searchBox = require("./search-box");
|
|
17
|
+
|
|
12
18
|
var _pagination = require("./pagination");
|
|
19
|
+
|
|
13
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
14
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
|
+
|
|
15
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
|
+
|
|
16
26
|
const postsQuery = (0, _apollo.gql)`
|
|
17
27
|
query Posts($searchText: String!, $take: Int, $skip: Int) {
|
|
18
28
|
postsCount(where: { title: { contains: $searchText } })
|
|
19
29
|
posts(
|
|
20
30
|
where: { title: { contains: $searchText } }
|
|
31
|
+
orderBy: { id: desc }
|
|
21
32
|
take: $take
|
|
22
33
|
skip: $skip
|
|
23
34
|
) {
|
|
@@ -103,6 +114,7 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
103
114
|
margin: 0;
|
|
104
115
|
}
|
|
105
116
|
`;
|
|
117
|
+
|
|
106
118
|
function PostGrids(props) {
|
|
107
119
|
const {
|
|
108
120
|
posts,
|
|
@@ -118,8 +130,10 @@ function PostGrids(props) {
|
|
|
118
130
|
});
|
|
119
131
|
}));
|
|
120
132
|
}
|
|
133
|
+
|
|
121
134
|
function PostGrid(props) {
|
|
122
135
|
var _post$heroImage, _post$heroImage$resiz;
|
|
136
|
+
|
|
123
137
|
const {
|
|
124
138
|
post,
|
|
125
139
|
onSelect,
|
|
@@ -134,24 +148,29 @@ function PostGrid(props) {
|
|
|
134
148
|
src: (_post$heroImage = post.heroImage) === null || _post$heroImage === void 0 ? void 0 : (_post$heroImage$resiz = _post$heroImage.resized) === null || _post$heroImage$resiz === void 0 ? void 0 : _post$heroImage$resiz.original,
|
|
135
149
|
onError: e => {
|
|
136
150
|
var _post$heroImage2, _post$heroImage2$imag;
|
|
151
|
+
|
|
137
152
|
return e.currentTarget.src = (_post$heroImage2 = post.heroImage) === null || _post$heroImage2 === void 0 ? void 0 : (_post$heroImage2$imag = _post$heroImage2.imageFile) === null || _post$heroImage2$imag === void 0 ? void 0 : _post$heroImage2$imag.url;
|
|
138
153
|
}
|
|
139
154
|
}), /*#__PURE__*/_react.default.createElement(PostTitle, null, post.title)));
|
|
140
155
|
}
|
|
156
|
+
|
|
141
157
|
function PostMetaGrids(props) {
|
|
142
158
|
const {
|
|
143
159
|
postMetas
|
|
144
160
|
} = props;
|
|
145
161
|
return /*#__PURE__*/_react.default.createElement(PostMetaGridsWrapper, null, postMetas.map(postMetas => {
|
|
146
162
|
var _postMetas$post;
|
|
163
|
+
|
|
147
164
|
return /*#__PURE__*/_react.default.createElement(PostMetaGrid, {
|
|
148
165
|
key: postMetas === null || postMetas === void 0 ? void 0 : (_postMetas$post = postMetas.post) === null || _postMetas$post === void 0 ? void 0 : _postMetas$post.id,
|
|
149
166
|
postMeta: postMetas
|
|
150
167
|
});
|
|
151
168
|
}));
|
|
152
169
|
}
|
|
170
|
+
|
|
153
171
|
function PostMetaGrid(props) {
|
|
154
172
|
var _post$heroImage3, _post$heroImage3$resi;
|
|
173
|
+
|
|
155
174
|
const {
|
|
156
175
|
postMeta
|
|
157
176
|
} = props;
|
|
@@ -162,10 +181,12 @@ function PostMetaGrid(props) {
|
|
|
162
181
|
src: post === null || post === void 0 ? void 0 : (_post$heroImage3 = post.heroImage) === null || _post$heroImage3 === void 0 ? void 0 : (_post$heroImage3$resi = _post$heroImage3.resized) === null || _post$heroImage3$resi === void 0 ? void 0 : _post$heroImage3$resi.original,
|
|
163
182
|
onError: e => {
|
|
164
183
|
var _post$heroImage4, _post$heroImage4$imag;
|
|
184
|
+
|
|
165
185
|
return e.currentTarget.src = post === null || post === void 0 ? void 0 : (_post$heroImage4 = post.heroImage) === null || _post$heroImage4 === void 0 ? void 0 : (_post$heroImage4$imag = _post$heroImage4.imageFile) === null || _post$heroImage4$imag === void 0 ? void 0 : _post$heroImage4$imag.url;
|
|
166
186
|
}
|
|
167
187
|
}), /*#__PURE__*/_react.default.createElement(PostTitle, null, post === null || post === void 0 ? void 0 : post.name)));
|
|
168
188
|
}
|
|
189
|
+
|
|
169
190
|
function PostSelector(props) {
|
|
170
191
|
const [queryPosts, {
|
|
171
192
|
loading,
|
|
@@ -178,6 +199,7 @@ function PostSelector(props) {
|
|
|
178
199
|
fetchPolicy: 'no-cache'
|
|
179
200
|
});
|
|
180
201
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
202
|
+
|
|
181
203
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
182
204
|
const [selected, setSelected] = (0, _react.useState)([]);
|
|
183
205
|
const [showErrorHint, setShowErrorHint] = (0, _react.useState)(false);
|
|
@@ -188,49 +210,57 @@ function PostSelector(props) {
|
|
|
188
210
|
minSelectCount = 1,
|
|
189
211
|
maxSelectCount = 3
|
|
190
212
|
} = props;
|
|
213
|
+
|
|
191
214
|
const onSave = () => {
|
|
192
215
|
if (enableMultiSelect && minSelectCount && selected.length < minSelectCount) {
|
|
193
216
|
setShowErrorHint(true);
|
|
194
217
|
return;
|
|
195
218
|
}
|
|
219
|
+
|
|
196
220
|
onChange(selected);
|
|
197
221
|
};
|
|
222
|
+
|
|
198
223
|
const onCancel = () => {
|
|
199
224
|
onChange([]);
|
|
200
225
|
};
|
|
226
|
+
|
|
201
227
|
const onSearchBoxChange = async searchInput => {
|
|
202
228
|
setSearchText(searchInput);
|
|
203
229
|
setCurrentPage(1);
|
|
204
230
|
};
|
|
231
|
+
|
|
205
232
|
const onPostsGridSelect = postEntity => {
|
|
206
233
|
setSelected(selected => {
|
|
207
234
|
const filterdSelected = selected.filter(ele => {
|
|
208
235
|
var _ele$post;
|
|
236
|
+
|
|
209
237
|
return ((_ele$post = ele.post) === null || _ele$post === void 0 ? void 0 : _ele$post.id) !== postEntity.id;
|
|
210
|
-
});
|
|
238
|
+
}); // deselect the post
|
|
211
239
|
|
|
212
|
-
// deselect the post
|
|
213
240
|
if (filterdSelected.length !== selected.length) {
|
|
214
241
|
return filterdSelected;
|
|
215
|
-
}
|
|
242
|
+
} // add new selected one and check shrink the array if there is a limit
|
|
243
|
+
|
|
216
244
|
|
|
217
|
-
// add new selected one and check shrink the array if there is a limit
|
|
218
245
|
if (enableMultiSelect) {
|
|
219
246
|
let newSelected = selected.concat([{
|
|
220
247
|
post: postEntity
|
|
221
248
|
}]);
|
|
249
|
+
|
|
222
250
|
if (maxSelectCount && newSelected.length >= maxSelectCount) {
|
|
223
251
|
newSelected = newSelected.slice(-maxSelectCount);
|
|
224
252
|
}
|
|
253
|
+
|
|
225
254
|
return newSelected;
|
|
226
|
-
}
|
|
255
|
+
} // single select
|
|
256
|
+
|
|
227
257
|
|
|
228
|
-
// single select
|
|
229
258
|
return [{
|
|
230
259
|
post: postEntity
|
|
231
260
|
}];
|
|
232
261
|
});
|
|
233
262
|
};
|
|
263
|
+
|
|
234
264
|
const selectedPosts = selected.map(ele => {
|
|
235
265
|
return ele.post;
|
|
236
266
|
});
|
|
@@ -245,6 +275,7 @@ function PostSelector(props) {
|
|
|
245
275
|
});
|
|
246
276
|
}
|
|
247
277
|
}, [currentPage, searchText]);
|
|
278
|
+
|
|
248
279
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(PostGrids, {
|
|
249
280
|
posts: posts,
|
|
250
281
|
selected: selectedPosts,
|
|
@@ -257,12 +288,15 @@ function PostSelector(props) {
|
|
|
257
288
|
setCurrentPage(pageIndex);
|
|
258
289
|
}
|
|
259
290
|
}));
|
|
291
|
+
|
|
260
292
|
if (loading) {
|
|
261
293
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
262
294
|
}
|
|
295
|
+
|
|
263
296
|
if (error) {
|
|
264
297
|
searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `posts` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, postsQuery.loc.source.body)));
|
|
265
298
|
}
|
|
299
|
+
|
|
266
300
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
267
301
|
isOpen: true
|
|
268
302
|
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|