@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 imagesQuery = (0, _apollo.gql)`
|
|
33
20
|
query Photos($searchText: String!, $take: Int, $skip: Int) {
|
|
34
21
|
photosCount(where: { name: { contains: $searchText } })
|
|
@@ -109,7 +96,9 @@ const ErrorWrapper = _styledComponents.default.div`
|
|
|
109
96
|
margin: 0;
|
|
110
97
|
}
|
|
111
98
|
`;
|
|
112
|
-
|
|
99
|
+
const ImageName = _styledComponents.default.p`
|
|
100
|
+
text-align: center;
|
|
101
|
+
`;
|
|
113
102
|
function ImageGrids(props) {
|
|
114
103
|
const {
|
|
115
104
|
images,
|
|
@@ -125,10 +114,8 @@ function ImageGrids(props) {
|
|
|
125
114
|
});
|
|
126
115
|
}));
|
|
127
116
|
}
|
|
128
|
-
|
|
129
117
|
function ImageGrid(props) {
|
|
130
118
|
var _image$resized;
|
|
131
|
-
|
|
132
119
|
const {
|
|
133
120
|
image,
|
|
134
121
|
onSelect,
|
|
@@ -143,12 +130,10 @@ function ImageGrid(props) {
|
|
|
143
130
|
src: image === null || image === void 0 ? void 0 : (_image$resized = image.resized) === null || _image$resized === void 0 ? void 0 : _image$resized.w800,
|
|
144
131
|
onError: e => {
|
|
145
132
|
var _image$imageFile;
|
|
146
|
-
|
|
147
133
|
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;
|
|
148
134
|
}
|
|
149
135
|
}));
|
|
150
136
|
}
|
|
151
|
-
|
|
152
137
|
function ImageMetaGrids(props) {
|
|
153
138
|
const {
|
|
154
139
|
imageMetas,
|
|
@@ -158,7 +143,6 @@ function ImageMetaGrids(props) {
|
|
|
158
143
|
} = props;
|
|
159
144
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGridsWrapper, null, imageMetas.map(imageMeta => {
|
|
160
145
|
var _imageMeta$image;
|
|
161
|
-
|
|
162
146
|
return /*#__PURE__*/_react.default.createElement(ImageMetaGrid, {
|
|
163
147
|
key: imageMeta === null || imageMeta === void 0 ? void 0 : (_imageMeta$image = imageMeta.image) === null || _imageMeta$image === void 0 ? void 0 : _imageMeta$image.id,
|
|
164
148
|
imageMeta: imageMeta,
|
|
@@ -168,10 +152,8 @@ function ImageMetaGrids(props) {
|
|
|
168
152
|
});
|
|
169
153
|
}));
|
|
170
154
|
}
|
|
171
|
-
|
|
172
155
|
function ImageMetaGrid(props) {
|
|
173
156
|
var _image$resized2;
|
|
174
|
-
|
|
175
157
|
const {
|
|
176
158
|
imageMeta,
|
|
177
159
|
enableCaption,
|
|
@@ -187,10 +169,9 @@ function ImageMetaGrid(props) {
|
|
|
187
169
|
src: image === null || image === void 0 ? void 0 : (_image$resized2 = image.resized) === null || _image$resized2 === void 0 ? void 0 : _image$resized2.w800,
|
|
188
170
|
onError: e => {
|
|
189
171
|
var _image$imageFile2;
|
|
190
|
-
|
|
191
172
|
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;
|
|
192
173
|
}
|
|
193
|
-
}), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
|
|
174
|
+
}), /*#__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, {
|
|
194
175
|
htmlFor: "caption"
|
|
195
176
|
}, "Image Caption:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
|
|
196
177
|
id: "caption",
|
|
@@ -220,7 +201,6 @@ function ImageMetaGrid(props) {
|
|
|
220
201
|
})
|
|
221
202
|
})));
|
|
222
203
|
}
|
|
223
|
-
|
|
224
204
|
function DelayInput(props) {
|
|
225
205
|
const {
|
|
226
206
|
delay,
|
|
@@ -237,7 +217,6 @@ function DelayInput(props) {
|
|
|
237
217
|
}
|
|
238
218
|
}));
|
|
239
219
|
}
|
|
240
|
-
|
|
241
220
|
function ImageSelector(props) {
|
|
242
221
|
const [queryImages, {
|
|
243
222
|
loading,
|
|
@@ -250,7 +229,6 @@ function ImageSelector(props) {
|
|
|
250
229
|
fetchPolicy: 'no-cache'
|
|
251
230
|
});
|
|
252
231
|
const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
|
|
253
|
-
|
|
254
232
|
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
255
233
|
const [selected, setSelected] = (0, _react.useState)([]);
|
|
256
234
|
const [delay, setDelay] = (0, _react.useState)('5');
|
|
@@ -278,84 +256,70 @@ function ImageSelector(props) {
|
|
|
278
256
|
enableDelay = false,
|
|
279
257
|
onChange
|
|
280
258
|
} = props;
|
|
281
|
-
|
|
282
259
|
const onSave = () => {
|
|
283
260
|
let adjustedDelay = +delay;
|
|
284
261
|
adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
|
|
285
262
|
onChange(selected, align, adjustedDelay);
|
|
286
263
|
};
|
|
287
|
-
|
|
288
264
|
const onCancel = () => {
|
|
289
265
|
onChange([]);
|
|
290
266
|
};
|
|
291
|
-
|
|
292
267
|
const onSearchBoxChange = async searchInput => {
|
|
293
268
|
setSearchText(searchInput);
|
|
294
269
|
setCurrentPage(1);
|
|
295
270
|
};
|
|
296
|
-
|
|
297
271
|
const onDealyChange = delay => {
|
|
298
272
|
setDelay(delay);
|
|
299
273
|
};
|
|
300
|
-
|
|
301
274
|
const onAlignSelectChange = align => {
|
|
302
275
|
setAlign(align);
|
|
303
276
|
};
|
|
304
|
-
|
|
305
277
|
const onAlignSelectOpen = () => {
|
|
306
278
|
var _contentWrapperRef$cu;
|
|
307
|
-
|
|
308
279
|
const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
|
|
309
280
|
scrollWrapper.scrollTop = scrollWrapper.scrollHeight;
|
|
310
281
|
};
|
|
311
|
-
|
|
312
282
|
const onImageMetaChange = imageEntityWithMeta => {
|
|
313
283
|
if (enableMultiSelect) {
|
|
314
284
|
const foundIndex = selected.findIndex(ele => {
|
|
315
285
|
var _ele$image, _imageEntityWithMeta$;
|
|
316
|
-
|
|
317
286
|
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);
|
|
318
287
|
});
|
|
319
|
-
|
|
320
288
|
if (foundIndex !== -1) {
|
|
321
289
|
selected[foundIndex] = imageEntityWithMeta;
|
|
322
290
|
setSelected(selected);
|
|
323
291
|
}
|
|
324
|
-
|
|
325
292
|
return;
|
|
326
293
|
}
|
|
327
|
-
|
|
328
294
|
setSelected([imageEntityWithMeta]);
|
|
329
295
|
};
|
|
330
|
-
|
|
331
296
|
const onImagesGridSelect = imageEntity => {
|
|
332
297
|
setSelected(selected => {
|
|
333
298
|
const filterdSelected = selected.filter(ele => {
|
|
334
299
|
var _ele$image2;
|
|
335
|
-
|
|
336
300
|
return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
|
|
337
|
-
});
|
|
301
|
+
});
|
|
338
302
|
|
|
303
|
+
// deselect the image
|
|
339
304
|
if (filterdSelected.length !== selected.length) {
|
|
340
305
|
return filterdSelected;
|
|
341
|
-
}
|
|
342
|
-
|
|
306
|
+
}
|
|
343
307
|
|
|
308
|
+
// add new selected one
|
|
344
309
|
if (enableMultiSelect) {
|
|
345
310
|
return selected.concat([{
|
|
346
311
|
image: imageEntity,
|
|
347
312
|
desc: ''
|
|
348
313
|
}]);
|
|
349
|
-
}
|
|
350
|
-
|
|
314
|
+
}
|
|
351
315
|
|
|
316
|
+
// single select
|
|
352
317
|
return [{
|
|
353
318
|
image: imageEntity,
|
|
354
319
|
desc: ''
|
|
355
320
|
}];
|
|
356
321
|
});
|
|
357
322
|
};
|
|
358
|
-
|
|
359
323
|
const selectedImages = selected.map(ele => {
|
|
360
324
|
return ele.image;
|
|
361
325
|
});
|
|
@@ -370,7 +334,6 @@ function ImageSelector(props) {
|
|
|
370
334
|
});
|
|
371
335
|
}
|
|
372
336
|
}, [currentPage, searchText]);
|
|
373
|
-
|
|
374
337
|
let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
|
|
375
338
|
images: images,
|
|
376
339
|
selected: selectedImages,
|
|
@@ -383,15 +346,12 @@ function ImageSelector(props) {
|
|
|
383
346
|
setCurrentPage(pageIndex);
|
|
384
347
|
}
|
|
385
348
|
}));
|
|
386
|
-
|
|
387
349
|
if (loading) {
|
|
388
350
|
searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
|
|
389
351
|
}
|
|
390
|
-
|
|
391
352
|
if (error) {
|
|
392
353
|
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)));
|
|
393
354
|
}
|
|
394
|
-
|
|
395
355
|
return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
|
|
396
356
|
isOpen: true
|
|
397
357
|
}, /*#__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: () => {
|