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