@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,6 +139,7 @@ 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 } })
|
|
@@ -152,6 +169,7 @@ const AudiosQuery = (0, _apollo.gql)`
|
|
|
152
169
|
}
|
|
153
170
|
}
|
|
154
171
|
`;
|
|
172
|
+
|
|
155
173
|
function AudioSelector(props) {
|
|
156
174
|
const [queryAudios, {
|
|
157
175
|
loading,
|
|
@@ -164,40 +182,46 @@ function AudioSelector(props) {
|
|
|
164
182
|
fetchPolicy: 'no-cache'
|
|
165
183
|
});
|
|
166
184
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
185
|
+
|
|
167
186
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
168
187
|
const [selected, setSelected] = (0, _react.useState)([]);
|
|
169
188
|
const pageSize = 6;
|
|
170
189
|
const {
|
|
171
190
|
onChange
|
|
172
191
|
} = props;
|
|
192
|
+
|
|
173
193
|
const onSave = () => {
|
|
174
194
|
onChange(selected);
|
|
175
195
|
};
|
|
196
|
+
|
|
176
197
|
const onCancel = () => {
|
|
177
198
|
onChange([]);
|
|
178
199
|
};
|
|
200
|
+
|
|
179
201
|
const onSearchBoxChange = async searchInput => {
|
|
180
202
|
setSearchText(searchInput);
|
|
181
203
|
setCurrentPage(1);
|
|
182
204
|
};
|
|
205
|
+
|
|
183
206
|
const onAudiosGridSelect = audioEntity => {
|
|
184
207
|
setSelected(selected => {
|
|
185
208
|
const filterdSelected = selected.filter(ele => {
|
|
186
209
|
var _ele$audio;
|
|
210
|
+
|
|
187
211
|
return ((_ele$audio = ele.audio) === null || _ele$audio === void 0 ? void 0 : _ele$audio.id) !== audioEntity.id;
|
|
188
|
-
});
|
|
212
|
+
}); // deselect the audio
|
|
189
213
|
|
|
190
|
-
// deselect the audio
|
|
191
214
|
if (filterdSelected.length !== selected.length) {
|
|
192
215
|
return filterdSelected;
|
|
193
|
-
}
|
|
216
|
+
} // single select
|
|
217
|
+
|
|
194
218
|
|
|
195
|
-
// single select
|
|
196
219
|
return [{
|
|
197
220
|
audio: audioEntity
|
|
198
221
|
}];
|
|
199
222
|
});
|
|
200
223
|
};
|
|
224
|
+
|
|
201
225
|
const selectedAudios = selected.map(ele => {
|
|
202
226
|
return ele.audio;
|
|
203
227
|
});
|
|
@@ -212,6 +236,7 @@ function AudioSelector(props) {
|
|
|
212
236
|
});
|
|
213
237
|
}
|
|
214
238
|
}, [currentPage, searchText]);
|
|
239
|
+
|
|
215
240
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(AudiosGrids, {
|
|
216
241
|
audios: audioFiles,
|
|
217
242
|
selected: selectedAudios,
|
|
@@ -224,12 +249,15 @@ function AudioSelector(props) {
|
|
|
224
249
|
setCurrentPage(pageIndex);
|
|
225
250
|
}
|
|
226
251
|
}));
|
|
252
|
+
|
|
227
253
|
if (loading) {
|
|
228
254
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
229
255
|
}
|
|
256
|
+
|
|
230
257
|
if (error) {
|
|
231
258
|
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
259
|
}
|
|
260
|
+
|
|
233
261
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
234
262
|
isOpen: true
|
|
235
263
|
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
@@ -4,18 +4,31 @@ 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 _ = {
|
|
20
33
|
debounce: _debounce.default
|
|
21
34
|
};
|
|
@@ -72,6 +85,7 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
72
85
|
margin: 0;
|
|
73
86
|
}
|
|
74
87
|
`;
|
|
88
|
+
|
|
75
89
|
function ImageGrids(props) {
|
|
76
90
|
const {
|
|
77
91
|
images,
|
|
@@ -87,8 +101,10 @@ function ImageGrids(props) {
|
|
|
87
101
|
});
|
|
88
102
|
}));
|
|
89
103
|
}
|
|
104
|
+
|
|
90
105
|
function ImageGrid(props) {
|
|
91
106
|
var _image$resized;
|
|
107
|
+
|
|
92
108
|
const {
|
|
93
109
|
image,
|
|
94
110
|
onSelect,
|
|
@@ -103,10 +119,12 @@ function ImageGrid(props) {
|
|
|
103
119
|
src: image === null || image === void 0 ? void 0 : (_image$resized = image.resized) === null || _image$resized === void 0 ? void 0 : _image$resized.w800,
|
|
104
120
|
onError: e => {
|
|
105
121
|
var _image$imageFile;
|
|
122
|
+
|
|
106
123
|
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;
|
|
107
124
|
}
|
|
108
125
|
}));
|
|
109
126
|
}
|
|
127
|
+
|
|
110
128
|
function ImageMetaGrids(props) {
|
|
111
129
|
const {
|
|
112
130
|
imageMetas,
|
|
@@ -116,6 +134,7 @@ function ImageMetaGrids(props) {
|
|
|
116
134
|
} = props;
|
|
117
135
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGridsWrapper, null, imageMetas.map(imageMeta => {
|
|
118
136
|
var _imageMeta$image;
|
|
137
|
+
|
|
119
138
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGrid, {
|
|
120
139
|
key: imageMeta === null || imageMeta === void 0 ? void 0 : (_imageMeta$image = imageMeta.image) === null || _imageMeta$image === void 0 ? void 0 : _imageMeta$image.id,
|
|
121
140
|
imageMeta: imageMeta,
|
|
@@ -125,8 +144,10 @@ function ImageMetaGrids(props) {
|
|
|
125
144
|
});
|
|
126
145
|
}));
|
|
127
146
|
}
|
|
147
|
+
|
|
128
148
|
function ImageMetaGrid(props) {
|
|
129
149
|
var _image$resized2;
|
|
150
|
+
|
|
130
151
|
const {
|
|
131
152
|
imageMeta,
|
|
132
153
|
enableCaption,
|
|
@@ -142,6 +163,7 @@ function ImageMetaGrid(props) {
|
|
|
142
163
|
src: image === null || image === void 0 ? void 0 : (_image$resized2 = image.resized) === null || _image$resized2 === void 0 ? void 0 : _image$resized2.w800,
|
|
143
164
|
onError: e => {
|
|
144
165
|
var _image$imageFile2;
|
|
166
|
+
|
|
145
167
|
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;
|
|
146
168
|
}
|
|
147
169
|
}), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
@@ -174,6 +196,7 @@ function ImageMetaGrid(props) {
|
|
|
174
196
|
})
|
|
175
197
|
})));
|
|
176
198
|
}
|
|
199
|
+
|
|
177
200
|
function DelayInput(props) {
|
|
178
201
|
const {
|
|
179
202
|
delay,
|
|
@@ -190,6 +213,7 @@ function DelayInput(props) {
|
|
|
190
213
|
}
|
|
191
214
|
}));
|
|
192
215
|
}
|
|
216
|
+
|
|
193
217
|
const imagesQuery = (0, _apollo.gql)`
|
|
194
218
|
query Photos($searchText: String!, $take: Int, $skip: Int) {
|
|
195
219
|
photosCount(where: { name: { contains: $searchText } })
|
|
@@ -202,6 +226,8 @@ const imagesQuery = (0, _apollo.gql)`
|
|
|
202
226
|
name
|
|
203
227
|
imageFile {
|
|
204
228
|
url
|
|
229
|
+
width
|
|
230
|
+
height
|
|
205
231
|
}
|
|
206
232
|
resized {
|
|
207
233
|
original
|
|
@@ -214,7 +240,18 @@ const imagesQuery = (0, _apollo.gql)`
|
|
|
214
240
|
}
|
|
215
241
|
}
|
|
216
242
|
`;
|
|
243
|
+
|
|
217
244
|
function ImageSelector(props) {
|
|
245
|
+
const {
|
|
246
|
+
enableMultiSelect = false,
|
|
247
|
+
enableCaption = false,
|
|
248
|
+
enableUrl = false,
|
|
249
|
+
enableAlignment = false,
|
|
250
|
+
enableDelay = false,
|
|
251
|
+
onChange,
|
|
252
|
+
initialSelected = [],
|
|
253
|
+
initialAlign
|
|
254
|
+
} = props;
|
|
218
255
|
const [queryImages, {
|
|
219
256
|
loading,
|
|
220
257
|
error,
|
|
@@ -226,10 +263,11 @@ function ImageSelector(props) {
|
|
|
226
263
|
fetchPolicy: 'no-cache'
|
|
227
264
|
});
|
|
228
265
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
266
|
+
|
|
229
267
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
230
|
-
const [selected, setSelected] = (0, _react.useState)(
|
|
268
|
+
const [selected, setSelected] = (0, _react.useState)(initialSelected);
|
|
231
269
|
const [delay, setDelay] = (0, _react.useState)('5');
|
|
232
|
-
const [align, setAlign] = (0, _react.useState)(
|
|
270
|
+
const [align, setAlign] = (0, _react.useState)(initialAlign);
|
|
233
271
|
const contentWrapperRef = (0, _react.useRef)();
|
|
234
272
|
const pageSize = 6;
|
|
235
273
|
const options = [{
|
|
@@ -245,78 +283,84 @@ function ImageSelector(props) {
|
|
|
245
283
|
label: 'right',
|
|
246
284
|
isDisabled: false
|
|
247
285
|
}];
|
|
248
|
-
|
|
249
|
-
enableMultiSelect = false,
|
|
250
|
-
enableCaption = false,
|
|
251
|
-
enableUrl = false,
|
|
252
|
-
enableAlignment = false,
|
|
253
|
-
enableDelay = false,
|
|
254
|
-
onChange
|
|
255
|
-
} = props;
|
|
286
|
+
|
|
256
287
|
const onSave = () => {
|
|
257
288
|
let adjustedDelay = +delay;
|
|
258
289
|
adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
|
|
259
290
|
onChange(selected, align, adjustedDelay);
|
|
260
291
|
};
|
|
292
|
+
|
|
261
293
|
const onCancel = () => {
|
|
262
294
|
onChange([]);
|
|
263
295
|
};
|
|
296
|
+
|
|
264
297
|
const onSearchBoxChange = async searchInput => {
|
|
265
298
|
setSearchText(searchInput);
|
|
266
299
|
setCurrentPage(1);
|
|
267
300
|
};
|
|
301
|
+
|
|
268
302
|
const onDealyChange = delay => {
|
|
269
303
|
setDelay(delay);
|
|
270
304
|
};
|
|
305
|
+
|
|
271
306
|
const onAlignSelectChange = align => {
|
|
272
307
|
setAlign(align);
|
|
273
308
|
};
|
|
309
|
+
|
|
274
310
|
const onAlignSelectOpen = () => {
|
|
275
311
|
var _contentWrapperRef$cu;
|
|
312
|
+
|
|
276
313
|
const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
|
|
277
314
|
scrollWrapper.scrollTop = scrollWrapper.scrollHeight;
|
|
278
315
|
};
|
|
316
|
+
|
|
279
317
|
const onImageMetaChange = imageEntityWithMeta => {
|
|
280
318
|
if (enableMultiSelect) {
|
|
281
319
|
const foundIndex = selected.findIndex(ele => {
|
|
282
320
|
var _ele$image, _imageEntityWithMeta$;
|
|
321
|
+
|
|
283
322
|
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);
|
|
284
323
|
});
|
|
324
|
+
|
|
285
325
|
if (foundIndex !== -1) {
|
|
286
326
|
selected[foundIndex] = imageEntityWithMeta;
|
|
287
327
|
setSelected(selected);
|
|
288
328
|
}
|
|
329
|
+
|
|
289
330
|
return;
|
|
290
331
|
}
|
|
332
|
+
|
|
291
333
|
setSelected([imageEntityWithMeta]);
|
|
292
334
|
};
|
|
335
|
+
|
|
293
336
|
const onImagesGridSelect = imageEntity => {
|
|
294
337
|
setSelected(selected => {
|
|
295
338
|
const filterdSelected = selected.filter(ele => {
|
|
296
339
|
var _ele$image2;
|
|
340
|
+
|
|
297
341
|
return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
|
|
298
|
-
});
|
|
342
|
+
}); // deselect the image
|
|
299
343
|
|
|
300
|
-
// deselect the image
|
|
301
344
|
if (filterdSelected.length !== selected.length) {
|
|
302
345
|
return filterdSelected;
|
|
303
|
-
}
|
|
346
|
+
} // add new selected one
|
|
347
|
+
|
|
304
348
|
|
|
305
|
-
// add new selected one
|
|
306
349
|
if (enableMultiSelect) {
|
|
307
350
|
return selected.concat([{
|
|
308
351
|
image: imageEntity,
|
|
309
352
|
desc: ''
|
|
310
353
|
}]);
|
|
311
|
-
}
|
|
354
|
+
} // single select
|
|
355
|
+
|
|
312
356
|
|
|
313
|
-
// single select
|
|
314
357
|
return [{
|
|
315
358
|
image: imageEntity,
|
|
316
359
|
desc: ''
|
|
317
360
|
}];
|
|
318
361
|
});
|
|
319
362
|
};
|
|
363
|
+
|
|
320
364
|
const selectedImages = selected.map(ele => {
|
|
321
365
|
return ele.image;
|
|
322
366
|
});
|
|
@@ -331,6 +375,7 @@ function ImageSelector(props) {
|
|
|
331
375
|
});
|
|
332
376
|
}
|
|
333
377
|
}, [currentPage, searchText]);
|
|
378
|
+
|
|
334
379
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
|
|
335
380
|
images: images,
|
|
336
381
|
selected: selectedImages,
|
|
@@ -343,12 +388,15 @@ function ImageSelector(props) {
|
|
|
343
388
|
setCurrentPage(pageIndex);
|
|
344
389
|
}
|
|
345
390
|
}));
|
|
391
|
+
|
|
346
392
|
if (loading) {
|
|
347
393
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
348
394
|
}
|
|
395
|
+
|
|
349
396
|
if (error) {
|
|
350
397
|
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)));
|
|
351
398
|
}
|
|
399
|
+
|
|
352
400
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
353
401
|
isOpen: true
|
|
354
402
|
}, /*#__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,15 +4,25 @@ 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: { name: { contains: $searchText } })
|
|
@@ -102,6 +112,7 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
102
112
|
margin: 0;
|
|
103
113
|
}
|
|
104
114
|
`;
|
|
115
|
+
|
|
105
116
|
function PostGrids(props) {
|
|
106
117
|
const {
|
|
107
118
|
posts,
|
|
@@ -117,8 +128,10 @@ function PostGrids(props) {
|
|
|
117
128
|
});
|
|
118
129
|
}));
|
|
119
130
|
}
|
|
131
|
+
|
|
120
132
|
function PostGrid(props) {
|
|
121
133
|
var _post$heroImage, _post$heroImage$resiz;
|
|
134
|
+
|
|
122
135
|
const {
|
|
123
136
|
post,
|
|
124
137
|
onSelect,
|
|
@@ -133,24 +146,29 @@ function PostGrid(props) {
|
|
|
133
146
|
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,
|
|
134
147
|
onError: e => {
|
|
135
148
|
var _post$heroImage2, _post$heroImage2$imag;
|
|
149
|
+
|
|
136
150
|
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;
|
|
137
151
|
}
|
|
138
152
|
}), /*#__PURE__*/_react.default.createElement(PostTitle, null, post.name)));
|
|
139
153
|
}
|
|
154
|
+
|
|
140
155
|
function PostMetaGrids(props) {
|
|
141
156
|
const {
|
|
142
157
|
postMetas
|
|
143
158
|
} = props;
|
|
144
159
|
return /*#__PURE__*/_react.default.createElement(PostMetaGridsWrapper, null, postMetas.map(postMetas => {
|
|
145
160
|
var _postMetas$post;
|
|
161
|
+
|
|
146
162
|
return /*#__PURE__*/_react.default.createElement(PostMetaGrid, {
|
|
147
163
|
key: postMetas === null || postMetas === void 0 ? void 0 : (_postMetas$post = postMetas.post) === null || _postMetas$post === void 0 ? void 0 : _postMetas$post.id,
|
|
148
164
|
postMeta: postMetas
|
|
149
165
|
});
|
|
150
166
|
}));
|
|
151
167
|
}
|
|
168
|
+
|
|
152
169
|
function PostMetaGrid(props) {
|
|
153
170
|
var _post$heroImage3, _post$heroImage3$resi;
|
|
171
|
+
|
|
154
172
|
const {
|
|
155
173
|
postMeta
|
|
156
174
|
} = props;
|
|
@@ -161,10 +179,12 @@ function PostMetaGrid(props) {
|
|
|
161
179
|
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,
|
|
162
180
|
onError: e => {
|
|
163
181
|
var _post$heroImage4, _post$heroImage4$imag;
|
|
182
|
+
|
|
164
183
|
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;
|
|
165
184
|
}
|
|
166
185
|
}), /*#__PURE__*/_react.default.createElement(PostTitle, null, post === null || post === void 0 ? void 0 : post.name)));
|
|
167
186
|
}
|
|
187
|
+
|
|
168
188
|
function PostSelector(props) {
|
|
169
189
|
const [queryPosts, {
|
|
170
190
|
loading,
|
|
@@ -177,6 +197,7 @@ function PostSelector(props) {
|
|
|
177
197
|
fetchPolicy: 'no-cache'
|
|
178
198
|
});
|
|
179
199
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
200
|
+
|
|
180
201
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
181
202
|
const [selected, setSelected] = (0, _react.useState)([]);
|
|
182
203
|
const [showErrorHint, setShowErrorHint] = (0, _react.useState)(false);
|
|
@@ -187,49 +208,57 @@ function PostSelector(props) {
|
|
|
187
208
|
minSelectCount = 1,
|
|
188
209
|
maxSelectCount = 3
|
|
189
210
|
} = props;
|
|
211
|
+
|
|
190
212
|
const onSave = () => {
|
|
191
213
|
if (enableMultiSelect && minSelectCount && selected.length < minSelectCount) {
|
|
192
214
|
setShowErrorHint(true);
|
|
193
215
|
return;
|
|
194
216
|
}
|
|
217
|
+
|
|
195
218
|
onChange(selected);
|
|
196
219
|
};
|
|
220
|
+
|
|
197
221
|
const onCancel = () => {
|
|
198
222
|
onChange([]);
|
|
199
223
|
};
|
|
224
|
+
|
|
200
225
|
const onSearchBoxChange = async searchInput => {
|
|
201
226
|
setSearchText(searchInput);
|
|
202
227
|
setCurrentPage(1);
|
|
203
228
|
};
|
|
229
|
+
|
|
204
230
|
const onPostsGridSelect = postEntity => {
|
|
205
231
|
setSelected(selected => {
|
|
206
232
|
const filterdSelected = selected.filter(ele => {
|
|
207
233
|
var _ele$post;
|
|
234
|
+
|
|
208
235
|
return ((_ele$post = ele.post) === null || _ele$post === void 0 ? void 0 : _ele$post.id) !== postEntity.id;
|
|
209
|
-
});
|
|
236
|
+
}); // deselect the post
|
|
210
237
|
|
|
211
|
-
// deselect the post
|
|
212
238
|
if (filterdSelected.length !== selected.length) {
|
|
213
239
|
return filterdSelected;
|
|
214
|
-
}
|
|
240
|
+
} // add new selected one and check shrink the array if there is a limit
|
|
241
|
+
|
|
215
242
|
|
|
216
|
-
// add new selected one and check shrink the array if there is a limit
|
|
217
243
|
if (enableMultiSelect) {
|
|
218
244
|
let newSelected = selected.concat([{
|
|
219
245
|
post: postEntity
|
|
220
246
|
}]);
|
|
247
|
+
|
|
221
248
|
if (maxSelectCount && newSelected.length >= maxSelectCount) {
|
|
222
249
|
newSelected = newSelected.slice(-maxSelectCount);
|
|
223
250
|
}
|
|
251
|
+
|
|
224
252
|
return newSelected;
|
|
225
|
-
}
|
|
253
|
+
} // single select
|
|
254
|
+
|
|
226
255
|
|
|
227
|
-
// single select
|
|
228
256
|
return [{
|
|
229
257
|
post: postEntity
|
|
230
258
|
}];
|
|
231
259
|
});
|
|
232
260
|
};
|
|
261
|
+
|
|
233
262
|
const selectedPosts = selected.map(ele => {
|
|
234
263
|
return ele.post;
|
|
235
264
|
});
|
|
@@ -244,6 +273,7 @@ function PostSelector(props) {
|
|
|
244
273
|
});
|
|
245
274
|
}
|
|
246
275
|
}, [currentPage, searchText]);
|
|
276
|
+
|
|
247
277
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(PostGrids, {
|
|
248
278
|
posts: posts,
|
|
249
279
|
selected: selectedPosts,
|
|
@@ -256,12 +286,15 @@ function PostSelector(props) {
|
|
|
256
286
|
setCurrentPage(pageIndex);
|
|
257
287
|
}
|
|
258
288
|
}));
|
|
289
|
+
|
|
259
290
|
if (loading) {
|
|
260
291
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
261
292
|
}
|
|
293
|
+
|
|
262
294
|
if (error) {
|
|
263
295
|
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)));
|
|
264
296
|
}
|
|
297
|
+
|
|
265
298
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
266
299
|
isOpen: true
|
|
267
300
|
}, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
|
|
@@ -4,16 +4,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.SearchBox = SearchBox;
|
|
7
|
+
|
|
7
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
8
10
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
9
12
|
var _button = require("@keystone-ui/button");
|
|
13
|
+
|
|
10
14
|
var _fields = require("@keystone-ui/fields");
|
|
15
|
+
|
|
11
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
12
18
|
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); }
|
|
19
|
+
|
|
13
20
|
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; }
|
|
21
|
+
|
|
14
22
|
const SearchBoxWrapper = _styledComponents.default.div`
|
|
15
23
|
display: flex;
|
|
16
24
|
`;
|
|
25
|
+
|
|
17
26
|
function SearchBox(props) {
|
|
18
27
|
const {
|
|
19
28
|
onChange,
|