@mirrormedia/lilith-draft-editor 1.0.0-beta → 1.0.0-beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/lib/draft-js/block-renderer/background-image-block.js +123 -0
  2. package/lib/draft-js/block-renderer/background-video-block.js +133 -0
  3. package/lib/draft-js/block-renderer/color-box-block.js +92 -0
  4. package/lib/draft-js/block-renderer/divider-block.js +24 -0
  5. package/lib/draft-js/block-renderer/embedded-code-block.js +63 -0
  6. package/lib/draft-js/block-renderer/image-block.js +47 -0
  7. package/lib/draft-js/block-renderer/info-box-block.js +89 -0
  8. package/lib/draft-js/block-renderer/media-block.js +65 -0
  9. package/lib/draft-js/block-renderer/related-post-block.js +51 -0
  10. package/lib/draft-js/block-renderer/side-index-block.js +103 -0
  11. package/lib/draft-js/block-renderer/slideshow-block.js +71 -0
  12. package/lib/draft-js/block-renderer/table-block.js +408 -0
  13. package/lib/draft-js/buttons/annotation.js +117 -0
  14. package/lib/draft-js/buttons/background-color.js +123 -0
  15. package/lib/draft-js/buttons/background-image.js +222 -0
  16. package/lib/draft-js/buttons/background-video.js +222 -0
  17. package/lib/draft-js/buttons/color-box.js +172 -0
  18. package/lib/draft-js/buttons/divider.js +63 -0
  19. package/lib/draft-js/buttons/embedded-code.js +134 -0
  20. package/lib/draft-js/buttons/enlarge.js +24 -0
  21. package/lib/draft-js/buttons/font-color.js +116 -0
  22. package/lib/draft-js/buttons/image.js +68 -0
  23. package/lib/draft-js/buttons/info-box.js +147 -0
  24. package/lib/draft-js/buttons/link.js +107 -0
  25. package/lib/draft-js/buttons/media.js +121 -0
  26. package/lib/draft-js/buttons/related-post.js +71 -0
  27. package/lib/draft-js/buttons/selector/align-selector.js +71 -0
  28. package/lib/draft-js/buttons/selector/image-selector.js +428 -0
  29. package/lib/draft-js/buttons/selector/pagination.js +82 -0
  30. package/lib/draft-js/buttons/selector/post-selector.js +317 -0
  31. package/lib/draft-js/buttons/selector/search-box.js +46 -0
  32. package/lib/draft-js/buttons/selector/video-selector.js +284 -0
  33. package/lib/draft-js/buttons/side-index.js +200 -0
  34. package/lib/draft-js/buttons/slideshow.js +71 -0
  35. package/lib/draft-js/buttons/table.js +67 -0
  36. package/lib/draft-js/buttons/text-align.js +88 -0
  37. package/lib/draft-js/editor/basic-editor.js +366 -0
  38. package/lib/draft-js/editor/block-renderer-fn.js +117 -0
  39. package/lib/draft-js/editor/entity-decorator.js +16 -0
  40. package/lib/draft-js/editor/modifier.js +68 -0
  41. package/lib/draft-js/entity-decorator/annotation-decorator.js +86 -0
  42. package/lib/draft-js/entity-decorator/link-decorator.js +39 -0
  43. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.js +138 -0
  44. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.js +148 -0
  45. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.js +106 -0
  46. package/lib/website/mirrormedia/custom/block-renderer/divider-block.js +24 -0
  47. package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.js +63 -0
  48. package/lib/website/mirrormedia/custom/block-renderer/image-block.js +47 -0
  49. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.js +103 -0
  50. package/lib/website/mirrormedia/custom/block-renderer/media-block.js +65 -0
  51. package/lib/website/mirrormedia/custom/block-renderer/related-post-block.js +51 -0
  52. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.js +119 -0
  53. package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.js +71 -0
  54. package/lib/website/mirrormedia/custom/block-renderer/table-block.js +455 -0
  55. package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.js +86 -0
  56. package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.js +39 -0
  57. package/lib/website/mirrormedia/custom/selector/align-selector.js +71 -0
  58. package/lib/website/mirrormedia/custom/selector/image-selector.js +427 -0
  59. package/lib/website/mirrormedia/custom/selector/pagination.js +82 -0
  60. package/lib/website/mirrormedia/custom/selector/post-selector.js +318 -0
  61. package/lib/website/mirrormedia/custom/selector/search-box.js +46 -0
  62. package/lib/website/mirrormedia/custom/selector/video-selector.js +282 -0
  63. package/lib/website/mirrormedia/draft-editor/block-renderer-fn.js +117 -0
  64. package/lib/website/mirrormedia/draft-editor/entity-decorator.js +16 -0
  65. package/lib/website/mirrormedia/draft-editor/index.js +799 -0
  66. package/lib/website/mirrormedia/draft-renderer/block-renderer-fn.js +117 -0
  67. package/lib/website/mirrormedia/draft-renderer/entity-decorator.js +16 -0
  68. package/lib/website/mirrormedia/draft-renderer/index.js +160 -0
  69. package/lib/website/readr/custom/block-renderer/background-image-block.js +138 -0
  70. package/lib/website/readr/custom/block-renderer/background-video-block.js +148 -0
  71. package/lib/website/readr/custom/block-renderer/color-box-block.js +106 -0
  72. package/lib/website/readr/custom/block-renderer/divider-block.js +24 -0
  73. package/lib/website/readr/custom/block-renderer/embedded-code-block.js +63 -0
  74. package/lib/website/readr/custom/block-renderer/image-block.js +47 -0
  75. package/lib/website/readr/custom/block-renderer/info-box-block.js +103 -0
  76. package/lib/website/readr/custom/block-renderer/media-block.js +65 -0
  77. package/lib/website/readr/custom/block-renderer/related-post-block.js +51 -0
  78. package/lib/website/readr/custom/block-renderer/side-index-block.js +119 -0
  79. package/lib/website/readr/custom/block-renderer/slideshow-block.js +71 -0
  80. package/lib/website/readr/custom/block-renderer/table-block.js +455 -0
  81. package/lib/website/readr/custom/entity-decorator/annotation-decorator.js +86 -0
  82. package/lib/website/readr/custom/entity-decorator/link-decorator.js +39 -0
  83. package/lib/website/readr/custom/selector/align-selector.js +71 -0
  84. package/lib/website/readr/custom/selector/image-selector.js +427 -0
  85. package/lib/website/readr/custom/selector/pagination.js +82 -0
  86. package/lib/website/readr/custom/selector/post-selector.js +318 -0
  87. package/lib/website/readr/custom/selector/search-box.js +46 -0
  88. package/lib/website/readr/custom/selector/video-selector.js +282 -0
  89. package/lib/website/readr/draft-editor/block-renderer-fn.js +117 -0
  90. package/lib/website/readr/draft-editor/entity-decorator.js +16 -0
  91. package/lib/website/readr/draft-editor/index.js +799 -0
  92. package/lib/website/readr/draft-renderer/block-renderer-fn.js +117 -0
  93. package/lib/website/readr/draft-renderer/entity-decorator.js +16 -0
  94. package/lib/website/readr/draft-renderer/index.js +160 -0
  95. package/package.json +1 -1
  96. package/lib/draft-js/block-renderer/background-image-block.tsx +0 -113
  97. package/lib/draft-js/block-renderer/background-video-block.tsx +0 -120
  98. package/lib/draft-js/block-renderer/color-box-block.tsx +0 -85
  99. package/lib/draft-js/block-renderer/divider-block.tsx +0 -12
  100. package/lib/draft-js/block-renderer/embedded-code-block.tsx +0 -65
  101. package/lib/draft-js/block-renderer/image-block.tsx +0 -41
  102. package/lib/draft-js/block-renderer/info-box-block.tsx +0 -85
  103. package/lib/draft-js/block-renderer/media-block.tsx +0 -36
  104. package/lib/draft-js/block-renderer/related-post-block.tsx +0 -47
  105. package/lib/draft-js/block-renderer/side-index-block.tsx +0 -113
  106. package/lib/draft-js/block-renderer/slideshow-block.tsx +0 -62
  107. package/lib/draft-js/block-renderer/table-block.tsx +0 -488
  108. package/lib/draft-js/buttons/annotation.tsx +0 -113
  109. package/lib/draft-js/buttons/background-color.tsx +0 -125
  110. package/lib/draft-js/buttons/background-image.tsx +0 -276
  111. package/lib/draft-js/buttons/background-video.tsx +0 -275
  112. package/lib/draft-js/buttons/color-box.tsx +0 -207
  113. package/lib/draft-js/buttons/divider.tsx +0 -56
  114. package/lib/draft-js/buttons/embedded-code.tsx +0 -126
  115. package/lib/draft-js/buttons/enlarge.tsx +0 -11
  116. package/lib/draft-js/buttons/font-color.tsx +0 -113
  117. package/lib/draft-js/buttons/image.tsx +0 -71
  118. package/lib/draft-js/buttons/info-box.tsx +0 -170
  119. package/lib/draft-js/buttons/link.tsx +0 -103
  120. package/lib/draft-js/buttons/media.tsx +0 -120
  121. package/lib/draft-js/buttons/related-post.tsx +0 -81
  122. package/lib/draft-js/buttons/selector/align-selector.tsx +0 -65
  123. package/lib/draft-js/buttons/selector/image-selector.tsx +0 -485
  124. package/lib/draft-js/buttons/selector/pagination.tsx +0 -83
  125. package/lib/draft-js/buttons/selector/post-selector.tsx +0 -367
  126. package/lib/draft-js/buttons/selector/search-box.tsx +0 -39
  127. package/lib/draft-js/buttons/selector/video-selector.tsx +0 -312
  128. package/lib/draft-js/buttons/side-index.tsx +0 -257
  129. package/lib/draft-js/buttons/slideshow.tsx +0 -81
  130. package/lib/draft-js/buttons/table.tsx +0 -63
  131. package/lib/draft-js/buttons/text-align.tsx +0 -88
  132. package/lib/draft-js/editor/basic-editor.tsx +0 -384
  133. package/lib/draft-js/editor/block-redender-fn.tsx +0 -77
  134. package/lib/draft-js/editor/entity-decorator.tsx +0 -7
  135. package/lib/draft-js/editor/modifier.tsx +0 -71
  136. package/lib/draft-js/entity-decorator/annotation-decorator.tsx +0 -81
  137. package/lib/draft-js/entity-decorator/link-decorator.tsx +0 -27
  138. package/lib/website/mirrormedia/custom/block-renderer/background-image-block.tsx +0 -128
  139. package/lib/website/mirrormedia/custom/block-renderer/background-video-block.tsx +0 -135
  140. package/lib/website/mirrormedia/custom/block-renderer/color-box-block.tsx +0 -98
  141. package/lib/website/mirrormedia/custom/block-renderer/divider-block.tsx +0 -12
  142. package/lib/website/mirrormedia/custom/block-renderer/embedded-code-block.tsx +0 -65
  143. package/lib/website/mirrormedia/custom/block-renderer/image-block.tsx +0 -41
  144. package/lib/website/mirrormedia/custom/block-renderer/info-box-block.tsx +0 -98
  145. package/lib/website/mirrormedia/custom/block-renderer/media-block.tsx +0 -36
  146. package/lib/website/mirrormedia/custom/block-renderer/related-post-block.tsx +0 -47
  147. package/lib/website/mirrormedia/custom/block-renderer/side-index-block.tsx +0 -125
  148. package/lib/website/mirrormedia/custom/block-renderer/slideshow-block.tsx +0 -62
  149. package/lib/website/mirrormedia/custom/block-renderer/table-block.tsx +0 -537
  150. package/lib/website/mirrormedia/custom/entity-decorator/annotation-decorator.tsx +0 -81
  151. package/lib/website/mirrormedia/custom/entity-decorator/link-decorator.tsx +0 -27
  152. package/lib/website/mirrormedia/custom/selector/align-selector.tsx +0 -65
  153. package/lib/website/mirrormedia/custom/selector/image-selector.tsx +0 -485
  154. package/lib/website/mirrormedia/custom/selector/pagination.tsx +0 -83
  155. package/lib/website/mirrormedia/custom/selector/post-selector.tsx +0 -367
  156. package/lib/website/mirrormedia/custom/selector/search-box.tsx +0 -39
  157. package/lib/website/mirrormedia/custom/selector/video-selector.tsx +0 -310
  158. package/lib/website/mirrormedia/draft-editor/block-redender-fn.tsx +0 -77
  159. package/lib/website/mirrormedia/draft-editor/entity-decorator.tsx +0 -7
  160. package/lib/website/mirrormedia/draft-editor/index.tsx +0 -909
  161. package/lib/website/mirrormedia/draft-renderer/block-redender-fn.tsx +0 -77
  162. package/lib/website/mirrormedia/draft-renderer/entity-decorator.tsx +0 -7
  163. package/lib/website/mirrormedia/draft-renderer/index-deprecated.tsx +0 -43
  164. package/lib/website/mirrormedia/draft-renderer/index.tsx +0 -150
  165. package/lib/website/readr/custom/block-renderer/background-image-block.tsx +0 -128
  166. package/lib/website/readr/custom/block-renderer/background-video-block.tsx +0 -135
  167. package/lib/website/readr/custom/block-renderer/color-box-block.tsx +0 -98
  168. package/lib/website/readr/custom/block-renderer/divider-block.tsx +0 -12
  169. package/lib/website/readr/custom/block-renderer/embedded-code-block.tsx +0 -65
  170. package/lib/website/readr/custom/block-renderer/image-block.tsx +0 -41
  171. package/lib/website/readr/custom/block-renderer/info-box-block.tsx +0 -98
  172. package/lib/website/readr/custom/block-renderer/media-block.tsx +0 -36
  173. package/lib/website/readr/custom/block-renderer/related-post-block.tsx +0 -47
  174. package/lib/website/readr/custom/block-renderer/side-index-block.tsx +0 -125
  175. package/lib/website/readr/custom/block-renderer/slideshow-block.tsx +0 -62
  176. package/lib/website/readr/custom/block-renderer/table-block.tsx +0 -537
  177. package/lib/website/readr/custom/entity-decorator/annotation-decorator.tsx +0 -81
  178. package/lib/website/readr/custom/entity-decorator/link-decorator.tsx +0 -27
  179. package/lib/website/readr/custom/selector/align-selector.tsx +0 -65
  180. package/lib/website/readr/custom/selector/image-selector.tsx +0 -485
  181. package/lib/website/readr/custom/selector/pagination.tsx +0 -83
  182. package/lib/website/readr/custom/selector/post-selector.tsx +0 -367
  183. package/lib/website/readr/custom/selector/search-box.tsx +0 -39
  184. package/lib/website/readr/custom/selector/video-selector.tsx +0 -310
  185. package/lib/website/readr/draft-editor/block-redender-fn.tsx +0 -77
  186. package/lib/website/readr/draft-editor/entity-decorator.tsx +0 -7
  187. package/lib/website/readr/draft-editor/index.tsx +0 -909
  188. package/lib/website/readr/draft-renderer/block-redender-fn.tsx +0 -77
  189. package/lib/website/readr/draft-renderer/entity-decorator.tsx +0 -7
  190. package/lib/website/readr/draft-renderer/index-deprecated.tsx +0 -43
  191. package/lib/website/readr/draft-renderer/index.tsx +0 -150
@@ -0,0 +1,427 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ImageSelector = ImageSelector;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _fields = require("@keystone-ui/fields");
15
+
16
+ var _modals = require("@keystone-ui/modals");
17
+
18
+ var _apollo = require("@keystone-6/core/admin-ui/apollo");
19
+
20
+ var _alignSelector = require("./align-selector");
21
+
22
+ var _searchBox = require("./search-box");
23
+
24
+ var _pagination = require("./pagination");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
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
+
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
+
32
+ const imagesQuery = (0, _apollo.gql)`
33
+ query Photos($searchText: String!, $take: Int, $skip: Int) {
34
+ photosCount(where: { name: { contains: $searchText } })
35
+ photos(
36
+ where: { name: { contains: $searchText } }
37
+ take: $take
38
+ skip: $skip
39
+ ) {
40
+ id
41
+ name
42
+ imageFile {
43
+ url
44
+ }
45
+ resized {
46
+ original
47
+ w480
48
+ w800
49
+ w1200
50
+ w1600
51
+ w2400
52
+ }
53
+ }
54
+ }
55
+ `;
56
+ const _ = {
57
+ debounce: _debounce.default
58
+ };
59
+ const ImageSearchBox = (0, _styledComponents.default)(_searchBox.SearchBox)`
60
+ margin-top: 10px;
61
+ `;
62
+ const ImageSelectionWrapper = _styledComponents.default.div`
63
+ overflow: auto;
64
+ margin-top: 10px;
65
+ `;
66
+ const ImageBlockMetaWrapper = _styledComponents.default.div``;
67
+ const ImageGridsWrapper = _styledComponents.default.div`
68
+ display: flex;
69
+ flex-wrap: wrap;
70
+ overflow: auto;
71
+ margin-top: 5px;
72
+ `;
73
+ const ImageGridWrapper = _styledComponents.default.div`
74
+ flex: 0 0 33.3333%;
75
+ cursor: pointer;
76
+ padding: 0 10px 10px;
77
+ `;
78
+ const ImageMetaGridsWrapper = _styledComponents.default.div`
79
+ display: flex;
80
+ flex-wrap: wrap;
81
+ overflow: auto;
82
+ `;
83
+ const ImageMetaGridWrapper = _styledComponents.default.div`
84
+ flex: 0 0 33.3333%;
85
+ cursor: pointer;
86
+ padding: 0 10px 10px;
87
+ `;
88
+ const Image = _styledComponents.default.img`
89
+ display: block;
90
+ width: 100%;
91
+ aspect-ratio: 2;
92
+ object-fit: cover;
93
+ `;
94
+ const Label = _styledComponents.default.label`
95
+ display: block;
96
+ margin: 10px 0;
97
+ font-weight: 600;
98
+ `;
99
+ const SeparationLine = _styledComponents.default.div`
100
+ border: #e1e5e9 1px solid;
101
+ margin-top: 10px;
102
+ margin-bottom: 10px;
103
+ `;
104
+ const ImageSelected = _styledComponents.default.div`
105
+ height: 1.4rem;
106
+ `;
107
+ const ErrorWrapper = _styledComponents.default.div`
108
+ & * {
109
+ margin: 0;
110
+ }
111
+ `;
112
+
113
+ function ImageGrids(props) {
114
+ const {
115
+ images,
116
+ selected,
117
+ onSelect
118
+ } = props;
119
+ return /*#__PURE__*/_react.default.createElement(ImageGridsWrapper, null, images.map(image => {
120
+ return /*#__PURE__*/_react.default.createElement(ImageGrid, {
121
+ key: image.id,
122
+ isSelected: selected === null || selected === void 0 ? void 0 : selected.includes(image),
123
+ onSelect: () => onSelect(image),
124
+ image: image
125
+ });
126
+ }));
127
+ }
128
+
129
+ function ImageGrid(props) {
130
+ var _image$resized;
131
+
132
+ const {
133
+ image,
134
+ onSelect,
135
+ isSelected
136
+ } = props;
137
+ return /*#__PURE__*/_react.default.createElement(ImageGridWrapper, {
138
+ key: image === null || image === void 0 ? void 0 : image.id,
139
+ onClick: () => onSelect(image)
140
+ }, /*#__PURE__*/_react.default.createElement(ImageSelected, null, isSelected ? /*#__PURE__*/_react.default.createElement("i", {
141
+ className: "fas fa-check-circle"
142
+ }) : null), /*#__PURE__*/_react.default.createElement(Image, {
143
+ src: image === null || image === void 0 ? void 0 : (_image$resized = image.resized) === null || _image$resized === void 0 ? void 0 : _image$resized.w800,
144
+ onError: e => {
145
+ var _image$imageFile;
146
+
147
+ 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
+ }
149
+ }));
150
+ }
151
+
152
+ function ImageMetaGrids(props) {
153
+ const {
154
+ imageMetas,
155
+ onChange,
156
+ enableCaption,
157
+ enableUrl
158
+ } = props;
159
+ return /*#__PURE__*/_react.default.createElement(ImageMetaGridsWrapper, null, imageMetas.map(imageMeta => {
160
+ var _imageMeta$image;
161
+
162
+ return /*#__PURE__*/_react.default.createElement(ImageMetaGrid, {
163
+ key: imageMeta === null || imageMeta === void 0 ? void 0 : (_imageMeta$image = imageMeta.image) === null || _imageMeta$image === void 0 ? void 0 : _imageMeta$image.id,
164
+ imageMeta: imageMeta,
165
+ enableCaption: enableCaption,
166
+ enableUrl: enableUrl,
167
+ onChange: onChange
168
+ });
169
+ }));
170
+ }
171
+
172
+ function ImageMetaGrid(props) {
173
+ var _image$resized2;
174
+
175
+ const {
176
+ imageMeta,
177
+ enableCaption,
178
+ enableUrl,
179
+ onChange
180
+ } = props;
181
+ const {
182
+ image,
183
+ desc,
184
+ url
185
+ } = imageMeta;
186
+ return /*#__PURE__*/_react.default.createElement(ImageMetaGridWrapper, null, /*#__PURE__*/_react.default.createElement(Image, {
187
+ src: image === null || image === void 0 ? void 0 : (_image$resized2 = image.resized) === null || _image$resized2 === void 0 ? void 0 : _image$resized2.w800,
188
+ onError: e => {
189
+ var _image$imageFile2;
190
+
191
+ 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
+ }
193
+ }), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
194
+ htmlFor: "caption"
195
+ }, "Image Caption:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
196
+ id: "caption",
197
+ type: "text",
198
+ placeholder: image === null || image === void 0 ? void 0 : image.name,
199
+ defaultValue: desc,
200
+ onChange: _.debounce(e => {
201
+ onChange({
202
+ image,
203
+ desc: e.target.value,
204
+ url
205
+ });
206
+ })
207
+ })), enableUrl && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
208
+ htmlFor: "url"
209
+ }, "Url:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
210
+ id: "url",
211
+ type: "text",
212
+ placeholder: "(Optional)",
213
+ defaultValue: url,
214
+ onChange: _.debounce(e => {
215
+ onChange({
216
+ image,
217
+ desc,
218
+ url: e.target.value
219
+ });
220
+ })
221
+ })));
222
+ }
223
+
224
+ function DelayInput(props) {
225
+ const {
226
+ delay,
227
+ onChange
228
+ } = props;
229
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, null, "Slideshow delay:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
230
+ type: "number",
231
+ placeholder: "\u8ACB\u8F38\u5165\u81EA\u52D5\u5207\u63DB\u79D2\u6578",
232
+ step: "0.5",
233
+ min: "1",
234
+ value: delay,
235
+ onChange: e => {
236
+ onChange(e.target.value);
237
+ }
238
+ }));
239
+ }
240
+
241
+ function ImageSelector(props) {
242
+ const [queryImages, {
243
+ loading,
244
+ error,
245
+ data: {
246
+ photos: images = [],
247
+ photosCount: imagesCount = 0
248
+ } = {}
249
+ }] = (0, _apollo.useLazyQuery)(imagesQuery, {
250
+ fetchPolicy: 'no-cache'
251
+ });
252
+ const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
253
+
254
+ const [searchText, setSearchText] = (0, _react.useState)('');
255
+ const [selected, setSelected] = (0, _react.useState)([]);
256
+ const [delay, setDelay] = (0, _react.useState)('5');
257
+ const [align, setAlign] = (0, _react.useState)(undefined);
258
+ const contentWrapperRef = (0, _react.useRef)();
259
+ const pageSize = 6;
260
+ const options = [{
261
+ value: undefined,
262
+ label: 'default',
263
+ isDisabled: false
264
+ }, {
265
+ value: 'left',
266
+ label: 'left',
267
+ isDisabled: false
268
+ }, {
269
+ value: 'right',
270
+ label: 'right',
271
+ isDisabled: false
272
+ }];
273
+ const {
274
+ enableMultiSelect = false,
275
+ enableCaption = false,
276
+ enableUrl = false,
277
+ enableAlignment = false,
278
+ enableDelay = false,
279
+ onChange
280
+ } = props;
281
+
282
+ const onSave = () => {
283
+ let adjustedDelay = +delay;
284
+ adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
285
+ onChange(selected, align, adjustedDelay);
286
+ };
287
+
288
+ const onCancel = () => {
289
+ onChange([]);
290
+ };
291
+
292
+ const onSearchBoxChange = async searchInput => {
293
+ setSearchText(searchInput);
294
+ setCurrentPage(1);
295
+ };
296
+
297
+ const onDealyChange = delay => {
298
+ setDelay(delay);
299
+ };
300
+
301
+ const onAlignSelectChange = align => {
302
+ setAlign(align);
303
+ };
304
+
305
+ const onAlignSelectOpen = () => {
306
+ var _contentWrapperRef$cu;
307
+
308
+ const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
309
+ scrollWrapper.scrollTop = scrollWrapper.scrollHeight;
310
+ };
311
+
312
+ const onImageMetaChange = imageEntityWithMeta => {
313
+ if (enableMultiSelect) {
314
+ const foundIndex = selected.findIndex(ele => {
315
+ var _ele$image, _imageEntityWithMeta$;
316
+
317
+ 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
+ });
319
+
320
+ if (foundIndex !== -1) {
321
+ selected[foundIndex] = imageEntityWithMeta;
322
+ setSelected(selected);
323
+ }
324
+
325
+ return;
326
+ }
327
+
328
+ setSelected([imageEntityWithMeta]);
329
+ };
330
+
331
+ const onImagesGridSelect = imageEntity => {
332
+ setSelected(selected => {
333
+ const filterdSelected = selected.filter(ele => {
334
+ var _ele$image2;
335
+
336
+ return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
337
+ }); // deselect the image
338
+
339
+ if (filterdSelected.length !== selected.length) {
340
+ return filterdSelected;
341
+ } // add new selected one
342
+
343
+
344
+ if (enableMultiSelect) {
345
+ return selected.concat([{
346
+ image: imageEntity,
347
+ desc: ''
348
+ }]);
349
+ } // single select
350
+
351
+
352
+ return [{
353
+ image: imageEntity,
354
+ desc: ''
355
+ }];
356
+ });
357
+ };
358
+
359
+ const selectedImages = selected.map(ele => {
360
+ return ele.image;
361
+ });
362
+ (0, _react.useEffect)(() => {
363
+ if (currentPage !== 0) {
364
+ queryImages({
365
+ variables: {
366
+ searchText: searchText,
367
+ skip: (currentPage - 1) * pageSize,
368
+ take: pageSize
369
+ }
370
+ });
371
+ }
372
+ }, [currentPage, searchText]);
373
+
374
+ let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
375
+ images: images,
376
+ selected: selectedImages,
377
+ onSelect: onImagesGridSelect
378
+ }), /*#__PURE__*/_react.default.createElement(_pagination.Pagination, {
379
+ currentPage: currentPage,
380
+ total: imagesCount,
381
+ pageSize: pageSize,
382
+ onChange: pageIndex => {
383
+ setCurrentPage(pageIndex);
384
+ }
385
+ }));
386
+
387
+ if (loading) {
388
+ searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
389
+ }
390
+
391
+ if (error) {
392
+ 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
+ }
394
+
395
+ return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
396
+ isOpen: true
397
+ }, /*#__PURE__*/_react.default.createElement(_modals.Drawer, {
398
+ title: "Select image",
399
+ actions: {
400
+ cancel: {
401
+ label: 'Cancel',
402
+ action: onCancel
403
+ },
404
+ confirm: {
405
+ label: 'Confirm',
406
+ action: onSave
407
+ }
408
+ }
409
+ }, /*#__PURE__*/_react.default.createElement("div", {
410
+ ref: contentWrapperRef
411
+ }, /*#__PURE__*/_react.default.createElement(ImageSearchBox, {
412
+ onChange: onSearchBoxChange
413
+ }), /*#__PURE__*/_react.default.createElement(ImageSelectionWrapper, null, /*#__PURE__*/_react.default.createElement("div", null, searchResult), !!selected.length && /*#__PURE__*/_react.default.createElement(SeparationLine, null), /*#__PURE__*/_react.default.createElement(ImageMetaGrids, {
414
+ imageMetas: selected,
415
+ onChange: onImageMetaChange,
416
+ enableCaption: enableCaption,
417
+ enableUrl: enableUrl
418
+ })), /*#__PURE__*/_react.default.createElement(ImageBlockMetaWrapper, null, (enableDelay || enableAlignment) && /*#__PURE__*/_react.default.createElement(SeparationLine, null), enableDelay && /*#__PURE__*/_react.default.createElement(DelayInput, {
419
+ delay: delay,
420
+ onChange: onDealyChange
421
+ }), enableAlignment && /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
422
+ align: align,
423
+ options: options,
424
+ onChange: onAlignSelectChange,
425
+ onOpen: onAlignSelectOpen
426
+ })))));
427
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Pagination = Pagination;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ const PaginationWrapper = _styledComponents.default.div`
15
+ display: flex;
16
+ justify-content: end;
17
+ `;
18
+ const Arrows = _styledComponents.default.div`
19
+ display: flex;
20
+ `;
21
+ const ArrowButtonWrapper = _styledComponents.default.a`
22
+ color: #415269;
23
+ cursor: pointer;
24
+ ${({
25
+ disable
26
+ }) => {
27
+ if (disable) {
28
+ return `
29
+ pointer-events: none;
30
+ opacity: 0.65;
31
+ cursor: unset;
32
+ `;
33
+ }
34
+ }}
35
+ `;
36
+
37
+ function Pagination({
38
+ currentPage,
39
+ total,
40
+ pageSize,
41
+ onChange
42
+ }) {
43
+ const minPage = 1;
44
+ const limit = Math.ceil(total / pageSize);
45
+ const nextPage = 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.
47
+
48
+ if (total <= pageSize) return null;
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, {
50
+ onClick: () => {
51
+ onChange(prevPage);
52
+ },
53
+ disable: prevPage < minPage
54
+ }, /*#__PURE__*/_react.default.createElement("svg", {
55
+ "aria-hidden": "true",
56
+ focusable: "false",
57
+ height: "24px",
58
+ width: "24px",
59
+ role: "img",
60
+ viewBox: "0 0 24 24",
61
+ xmlns: "http://www.w3.org/2000/svg",
62
+ className: "css-bztyua"
63
+ }, /*#__PURE__*/_react.default.createElement("polyline", {
64
+ points: "15 18 9 12 15 6"
65
+ }), ' ')), /*#__PURE__*/_react.default.createElement(ArrowButtonWrapper, {
66
+ onClick: () => {
67
+ onChange(nextPage);
68
+ },
69
+ disable: nextPage > limit
70
+ }, /*#__PURE__*/_react.default.createElement("svg", {
71
+ "aria-hidden": "true",
72
+ focusable: "false",
73
+ height: "24px",
74
+ width: "24px",
75
+ role: "img",
76
+ viewBox: "0 0 24 24",
77
+ xmlns: "http://www.w3.org/2000/svg",
78
+ className: "css-bztyua"
79
+ }, /*#__PURE__*/_react.default.createElement("polyline", {
80
+ points: "9 18 15 12 9 6"
81
+ })))));
82
+ }