@king-design/vue 3.8.0-beta.0 → 3.8.0-beta.2
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/__tests__/__snapshots__/Vue Next Demos.md +74 -74
- package/components/bubble/bubble.d.ts +3 -0
- package/components/bubble/bubble.vdt.js +6 -2
- package/components/bubble/index.spec.js +231 -5
- package/components/bubble/styles.js +1 -1
- package/components/bubble/useBubbleDisplay.d.ts +1 -0
- package/components/bubble/useBubbleDisplay.js +68 -22
- package/components/bubbleList/bubbleList.vdt.js +3 -1
- package/components/bubbleList/index.spec.js +378 -237
- package/components/bubbleList/styles.js +2 -2
- package/components/bubbleList/useBubbleList.js +7 -0
- package/components/fileCard/fileCard.vdt.js +4 -4
- package/components/fileCard/index.spec.js +179 -107
- package/components/fileCard/list.d.ts +2 -1
- package/components/fileCard/list.vdt.js +7 -5
- package/components/fileCard/styles.js +10 -8
- package/components/fileCard/useFileCard.d.ts +1 -1
- package/components/fileCard/useFileCard.js +6 -35
- package/components/media/index.spec.js +774 -585
- package/components/media/media.vdt.js +17 -6
- package/components/media/mediaAssets.d.ts +2 -0
- package/components/media/mediaAssets.js +4 -0
- package/components/media/styles.js +5 -3
- package/components/media/useMedia.d.ts +6 -2
- package/components/media/useMedia.js +28 -6
- package/components/sender/index.spec.js +1146 -476
- package/components/sender/sender.d.ts +28 -5
- package/components/sender/sender.js +17 -6
- package/components/sender/sender.vdt.js +121 -49
- package/components/sender/styles.js +18 -9
- package/components/sender/useAutoResize.js +7 -6
- package/components/sender/useSenderDrag.js +12 -3
- package/components/sender/useSenderInput.d.ts +3 -0
- package/components/sender/useSenderInput.js +20 -3
- package/components/sender/useSenderPaste.js +1 -1
- package/components/sender/useSenderUpload.js +38 -29
- package/components/xmarkdown/index.spec.js +492 -263
- package/components/xmarkdown/markdown/streaming.js +41 -8
- package/components/xmarkdown/styles.js +2 -2
- package/components/xmarkdown/useXMarkdownDisplay.d.ts +1 -0
- package/components/xmarkdown/useXMarkdownDisplay.js +69 -24
- package/components/xmarkdown/xmarkdown.d.ts +3 -0
- package/components/xmarkdown/xmarkdown.vdt.js +6 -2
- package/dist/i18n/en-US.js +1 -0
- package/dist/i18n/en-US.js.map +1 -1
- package/dist/i18n/en-US.min.js +1 -1
- package/dist/index.js +795 -512
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/i18n/en-US.d.ts +1 -0
- package/i18n/en-US.js +1 -0
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/package.json +1 -1
|
@@ -6,9 +6,11 @@ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/con
|
|
|
6
6
|
import { Component } from 'intact-vue-next';
|
|
7
7
|
import { dispatchEvent, getElement, mount, unmount, wait } from '../../test/utils';
|
|
8
8
|
import { Media, MediaGroup } from '.';
|
|
9
|
+
import { setTheme } from '../../styles/theme';
|
|
9
10
|
describe('Media', function () {
|
|
10
11
|
afterEach(function () {
|
|
11
12
|
unmount();
|
|
13
|
+
setTheme({});
|
|
12
14
|
});
|
|
13
15
|
function expectViewerClosed() {
|
|
14
16
|
var viewer = document.querySelector('.k-media-viewer');
|
|
@@ -70,13 +72,14 @@ describe('Media', function () {
|
|
|
70
72
|
expect(element.querySelector('.k-media-video')).not.to.eql(null);
|
|
71
73
|
expect(element.querySelector('.k-media-audio-loader')).not.to.eql(null);
|
|
72
74
|
expect(element.querySelector('.k-media-audio-card')).not.to.eql(null);
|
|
75
|
+
expect(getComputedStyle(element.querySelector('.k-media-audio-card')).backgroundColor).to.eql('rgb(243, 245, 246)');
|
|
73
76
|
expect(element.querySelector('.k-media-audio-card-icon').src).to.contain('data:image/svg+xml');
|
|
74
77
|
expect(element.querySelector('.k-media-audio-card-name')).to.eql(null);
|
|
75
78
|
expect(element.querySelectorAll('.k-media-loading').length).to.eql(3);
|
|
76
79
|
expect(element.querySelectorAll('.k-media-loading-indicator').length).to.eql(3);
|
|
77
80
|
expect(element.querySelectorAll('.k-media-loading-spinner').length).to.eql(3);
|
|
78
81
|
expect(element.querySelector('.k-media-status-layer')).to.eql(null);
|
|
79
|
-
case
|
|
82
|
+
case 15:
|
|
80
83
|
case "end":
|
|
81
84
|
return _context2.stop();
|
|
82
85
|
}
|
|
@@ -125,9 +128,9 @@ describe('Media', function () {
|
|
|
125
128
|
}
|
|
126
129
|
}, _callee2);
|
|
127
130
|
})));
|
|
128
|
-
//
|
|
129
|
-
it('should
|
|
130
|
-
var Demo, _mount3, element,
|
|
131
|
+
// 图片完成态展示 Icon 组件内置的可见图标。
|
|
132
|
+
it('should use visible icon for image preview trigger', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
133
|
+
var Demo, _mount3, element, trigger, icon;
|
|
131
134
|
return _regeneratorRuntime.wrap(function _callee3$(_context6) {
|
|
132
135
|
while (1) switch (_context6.prev = _context6.next) {
|
|
133
136
|
case 0:
|
|
@@ -145,38 +148,22 @@ describe('Media', function () {
|
|
|
145
148
|
}
|
|
146
149
|
return Demo;
|
|
147
150
|
}(Component);
|
|
148
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n
|
|
151
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n />\n </div>\n ";
|
|
149
152
|
_mount3 = mount(Demo), element = _mount3[1];
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
expect(
|
|
153
|
-
expect(
|
|
154
|
-
expect(
|
|
155
|
-
expect(
|
|
156
|
-
|
|
157
|
-
dispatchMediaEvent(video, 'loadedmetadata');
|
|
158
|
-
_context6.next = 13;
|
|
159
|
-
return wait();
|
|
160
|
-
case 13:
|
|
161
|
-
expect(media.className).to.contain('k-media-loading');
|
|
162
|
-
expect(media.className).not.to.contain('k-media-previewable');
|
|
163
|
-
expect(media.querySelector('.k-media-overlay')).not.to.eql(null);
|
|
164
|
-
expect(media.querySelector('.k-media-preview-trigger').disabled).to.eql(true);
|
|
165
|
-
dispatchMediaEvent(video, 'loadeddata');
|
|
166
|
-
_context6.next = 20;
|
|
167
|
-
return wait();
|
|
168
|
-
case 20:
|
|
169
|
-
expect(media.className).to.contain('k-media-done');
|
|
170
|
-
expect(media.className).to.contain('k-media-previewable');
|
|
171
|
-
expect(media.querySelector('.k-media-preview-trigger').disabled).to.eql(false);
|
|
172
|
-
case 23:
|
|
153
|
+
trigger = element.querySelector('.k-media-preview-trigger');
|
|
154
|
+
icon = trigger.querySelector('.k-media-preview-icon');
|
|
155
|
+
expect(trigger).not.to.eql(null);
|
|
156
|
+
expect(trigger.title).to.eql('查看图片');
|
|
157
|
+
expect(icon.className).to.contain('k-icon-visible');
|
|
158
|
+
expect(icon.className).not.to.contain('ion-ios-eye-outline');
|
|
159
|
+
case 9:
|
|
173
160
|
case "end":
|
|
174
161
|
return _context6.stop();
|
|
175
162
|
}
|
|
176
163
|
}, _callee3);
|
|
177
164
|
})));
|
|
178
|
-
//
|
|
179
|
-
it('should
|
|
165
|
+
// 无 poster 的视频需等首帧可用后才进入完成态,loading 时展示静态播放标识和加载蒙层,不展示播放 hover 入口。
|
|
166
|
+
it('should wait for video frame when poster is absent', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
180
167
|
var Demo, _mount4, element, media, video;
|
|
181
168
|
return _regeneratorRuntime.wrap(function _callee4$(_context8) {
|
|
182
169
|
while (1) switch (_context8.prev = _context8.next) {
|
|
@@ -195,25 +182,49 @@ describe('Media', function () {
|
|
|
195
182
|
}
|
|
196
183
|
return Demo;
|
|
197
184
|
}(Component);
|
|
198
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src=\"https://example.com/demo.mp4\"\n
|
|
185
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src=\"https://example.com/demo.mp4\"\n />\n </div>\n ";
|
|
199
186
|
_mount4 = mount(Demo), element = _mount4[1];
|
|
200
187
|
media = element.querySelector('.video-media');
|
|
201
188
|
video = element.querySelector('video.k-media-video');
|
|
202
|
-
expect(video.preload).to.eql('
|
|
189
|
+
expect(video.preload).to.eql('auto');
|
|
190
|
+
expect(media.className).to.contain('k-media-loading');
|
|
191
|
+
expect(media.className).not.to.contain('k-media-previewable');
|
|
192
|
+
expect(media.querySelector('.k-media-placeholder-asset')).not.to.eql(null);
|
|
193
|
+
expect(getComputedStyle(video).display).to.eql('none');
|
|
194
|
+
expect(media.querySelector('.k-media-loading-video-icon')).to.eql(null);
|
|
195
|
+
expect(media.querySelector('.k-media-loading-overlay')).to.eql(null);
|
|
196
|
+
expect(media.querySelector('.k-media-overlay')).to.eql(null);
|
|
197
|
+
expect(media.querySelector('.k-media-preview-trigger')).to.eql(null);
|
|
203
198
|
dispatchMediaEvent(video, 'loadedmetadata');
|
|
204
|
-
_context8.next =
|
|
199
|
+
_context8.next = 17;
|
|
205
200
|
return wait();
|
|
206
|
-
case
|
|
201
|
+
case 17:
|
|
202
|
+
expect(media.className).to.contain('k-media-loading');
|
|
203
|
+
expect(media.className).not.to.contain('k-media-previewable');
|
|
204
|
+
expect(media.querySelector('.k-media-placeholder-asset')).not.to.eql(null);
|
|
205
|
+
expect(getComputedStyle(video).display).to.eql('none');
|
|
206
|
+
expect(media.querySelector('.k-media-loading-video-icon')).to.eql(null);
|
|
207
|
+
expect(media.querySelector('.k-media-loading-overlay')).to.eql(null);
|
|
208
|
+
expect(media.querySelector('.k-media-overlay')).to.eql(null);
|
|
209
|
+
expect(media.querySelector('.k-media-preview-trigger')).to.eql(null);
|
|
210
|
+
dispatchMediaEvent(video, 'loadeddata');
|
|
211
|
+
_context8.next = 28;
|
|
212
|
+
return wait();
|
|
213
|
+
case 28:
|
|
207
214
|
expect(media.className).to.contain('k-media-done');
|
|
208
|
-
expect(media.
|
|
209
|
-
|
|
215
|
+
expect(media.className).to.contain('k-media-previewable');
|
|
216
|
+
expect(getComputedStyle(video).display).not.to.eql('none');
|
|
217
|
+
expect(media.querySelector('.k-media-placeholder')).to.eql(null);
|
|
218
|
+
expect(media.querySelector('.k-media-loading-video-icon')).to.eql(null);
|
|
219
|
+
expect(media.querySelector('.k-media-preview-trigger').disabled).to.eql(false);
|
|
220
|
+
case 34:
|
|
210
221
|
case "end":
|
|
211
222
|
return _context8.stop();
|
|
212
223
|
}
|
|
213
224
|
}, _callee4);
|
|
214
225
|
})));
|
|
215
|
-
//
|
|
216
|
-
it('should
|
|
226
|
+
// 有 poster 的视频在 metadata 可用后即可展示预览。
|
|
227
|
+
it('should complete video at metadata when poster is present', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
|
|
217
228
|
var Demo, _mount5, element, media, video;
|
|
218
229
|
return _regeneratorRuntime.wrap(function _callee5$(_context10) {
|
|
219
230
|
while (1) switch (_context10.prev = _context10.next) {
|
|
@@ -232,29 +243,26 @@ describe('Media', function () {
|
|
|
232
243
|
}
|
|
233
244
|
return Demo;
|
|
234
245
|
}(Component);
|
|
235
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src=\"https://example.com/demo.mp4\"\n
|
|
246
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src=\"https://example.com/demo.mp4\"\n poster=\"https://example.com/poster.png\"\n />\n </div>\n ";
|
|
236
247
|
_mount5 = mount(Demo), element = _mount5[1];
|
|
237
248
|
media = element.querySelector('.video-media');
|
|
238
249
|
video = element.querySelector('video.k-media-video');
|
|
239
|
-
expect(video.
|
|
240
|
-
expect(video.getAttribute('poster')).to.eql(null);
|
|
241
|
-
expect(video.controls).to.eql(true);
|
|
242
|
-
expect(video.getAttribute('data-native')).to.eql('video');
|
|
243
|
-
expect(video.preload).to.eql('auto');
|
|
250
|
+
expect(video.preload).to.eql('metadata');
|
|
244
251
|
dispatchMediaEvent(video, 'loadedmetadata');
|
|
245
|
-
_context10.next =
|
|
252
|
+
_context10.next = 9;
|
|
246
253
|
return wait();
|
|
247
|
-
case
|
|
248
|
-
expect(media.className).to.contain('k-media-
|
|
249
|
-
|
|
254
|
+
case 9:
|
|
255
|
+
expect(media.className).to.contain('k-media-done');
|
|
256
|
+
expect(media.querySelector('.k-media-preview-trigger')).not.to.eql(null);
|
|
257
|
+
case 11:
|
|
250
258
|
case "end":
|
|
251
259
|
return _context10.stop();
|
|
252
260
|
}
|
|
253
261
|
}, _callee5);
|
|
254
262
|
})));
|
|
255
|
-
// src
|
|
256
|
-
it('should
|
|
257
|
-
var Demo, _mount6,
|
|
263
|
+
// 顶层 src/poster 优先于原生 props 中的同名字段。
|
|
264
|
+
it('should keep media-level src and poster ahead of native props', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
|
|
265
|
+
var Demo, _mount6, element, media, video;
|
|
258
266
|
return _regeneratorRuntime.wrap(function _callee6$(_context12) {
|
|
259
267
|
while (1) switch (_context12.prev = _context12.next) {
|
|
260
268
|
case 0:
|
|
@@ -270,39 +278,31 @@ describe('Media', function () {
|
|
|
270
278
|
_this6.Media = Media;
|
|
271
279
|
return _this6;
|
|
272
280
|
}
|
|
273
|
-
Demo.defaults = function defaults() {
|
|
274
|
-
return {
|
|
275
|
-
src: 'https://example.com/demo.mp4'
|
|
276
|
-
};
|
|
277
|
-
};
|
|
278
281
|
return Demo;
|
|
279
282
|
}(Component);
|
|
280
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src={
|
|
281
|
-
_mount6 = mount(Demo),
|
|
283
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src=\"https://example.com/demo.mp4\"\n videoProps={{\n src: 'https://example.com/native.mp4',\n poster: 'https://example.com/native-poster.png',\n controls: true,\n 'data-native': 'video',\n }}\n />\n </div>\n ";
|
|
284
|
+
_mount6 = mount(Demo), element = _mount6[1];
|
|
282
285
|
media = element.querySelector('.video-media');
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
expect(
|
|
289
|
-
|
|
290
|
-
_context12.next =
|
|
286
|
+
video = element.querySelector('video.k-media-video');
|
|
287
|
+
expect(video.getAttribute('src')).to.eql('https://example.com/demo.mp4');
|
|
288
|
+
expect(video.getAttribute('poster')).to.eql(null);
|
|
289
|
+
expect(video.controls).to.eql(true);
|
|
290
|
+
expect(video.getAttribute('data-native')).to.eql('video');
|
|
291
|
+
expect(video.preload).to.eql('auto');
|
|
292
|
+
dispatchMediaEvent(video, 'loadedmetadata');
|
|
293
|
+
_context12.next = 13;
|
|
291
294
|
return wait();
|
|
292
|
-
case
|
|
293
|
-
nextVideo = element.querySelector('video.k-media-video');
|
|
294
|
-
expect(nextVideo).not.to.eql(firstVideo);
|
|
295
|
-
expect(nextVideo.getAttribute('src')).to.eql('https://example.com/next.mp4');
|
|
295
|
+
case 13:
|
|
296
296
|
expect(media.className).to.contain('k-media-loading');
|
|
297
|
-
case
|
|
297
|
+
case 14:
|
|
298
298
|
case "end":
|
|
299
299
|
return _context12.stop();
|
|
300
300
|
}
|
|
301
301
|
}, _callee6);
|
|
302
302
|
})));
|
|
303
|
-
//
|
|
304
|
-
it('should remount video when
|
|
305
|
-
var Demo, _mount7, instance, element, media,
|
|
303
|
+
// src 变化时重建 video,避免热更新保留旧资源状态。
|
|
304
|
+
it('should remount video when src changes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
|
|
305
|
+
var Demo, _mount7, instance, element, media, firstVideo, nextVideo;
|
|
306
306
|
return _regeneratorRuntime.wrap(function _callee7$(_context14) {
|
|
307
307
|
while (1) switch (_context14.prev = _context14.next) {
|
|
308
308
|
case 0:
|
|
@@ -320,46 +320,37 @@ describe('Media', function () {
|
|
|
320
320
|
}
|
|
321
321
|
Demo.defaults = function defaults() {
|
|
322
322
|
return {
|
|
323
|
-
|
|
323
|
+
src: 'https://example.com/demo.mp4'
|
|
324
324
|
};
|
|
325
325
|
};
|
|
326
326
|
return Demo;
|
|
327
327
|
}(Component);
|
|
328
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src
|
|
328
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src={this.get('src')}\n />\n </div>\n ";
|
|
329
329
|
_mount7 = mount(Demo), instance = _mount7[0], element = _mount7[1];
|
|
330
330
|
media = element.querySelector('.video-media');
|
|
331
|
-
|
|
332
|
-
dispatchMediaEvent(
|
|
331
|
+
firstVideo = element.querySelector('video.k-media-video');
|
|
332
|
+
dispatchMediaEvent(firstVideo, 'loadeddata');
|
|
333
333
|
_context14.next = 8;
|
|
334
334
|
return wait();
|
|
335
335
|
case 8:
|
|
336
336
|
expect(media.className).to.contain('k-media-done');
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
_context14.next = 13;
|
|
340
|
-
return wait();
|
|
341
|
-
case 13:
|
|
342
|
-
videoWithoutPoster = element.querySelector('video.k-media-video');
|
|
343
|
-
expect(videoWithoutPoster).not.to.eql(videoWithPoster);
|
|
344
|
-
expect(videoWithoutPoster.getAttribute('poster')).to.eql(null);
|
|
345
|
-
expect(media.className).to.contain('k-media-loading');
|
|
346
|
-
instance.set('poster', 'https://example.com/next-poster.png');
|
|
347
|
-
_context14.next = 20;
|
|
337
|
+
instance.set('src', 'https://example.com/next.mp4');
|
|
338
|
+
_context14.next = 12;
|
|
348
339
|
return wait();
|
|
349
|
-
case
|
|
350
|
-
|
|
351
|
-
expect(
|
|
352
|
-
expect(
|
|
340
|
+
case 12:
|
|
341
|
+
nextVideo = element.querySelector('video.k-media-video');
|
|
342
|
+
expect(nextVideo).not.to.eql(firstVideo);
|
|
343
|
+
expect(nextVideo.getAttribute('src')).to.eql('https://example.com/next.mp4');
|
|
353
344
|
expect(media.className).to.contain('k-media-loading');
|
|
354
|
-
case
|
|
345
|
+
case 16:
|
|
355
346
|
case "end":
|
|
356
347
|
return _context14.stop();
|
|
357
348
|
}
|
|
358
349
|
}, _callee7);
|
|
359
350
|
})));
|
|
360
|
-
//
|
|
361
|
-
it('should
|
|
362
|
-
var Demo, _mount8, element;
|
|
351
|
+
// poster 变化时重建 video,覆盖有封面和无封面互切。
|
|
352
|
+
it('should remount video when poster changes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {
|
|
353
|
+
var Demo, _mount8, instance, element, media, videoWithPoster, videoWithoutPoster, videoWithNextPoster;
|
|
363
354
|
return _regeneratorRuntime.wrap(function _callee8$(_context16) {
|
|
364
355
|
while (1) switch (_context16.prev = _context16.next) {
|
|
365
356
|
case 0:
|
|
@@ -375,25 +366,48 @@ describe('Media', function () {
|
|
|
375
366
|
_this8.Media = Media;
|
|
376
367
|
return _this8;
|
|
377
368
|
}
|
|
369
|
+
Demo.defaults = function defaults() {
|
|
370
|
+
return {
|
|
371
|
+
poster: 'https://example.com/poster.png'
|
|
372
|
+
};
|
|
373
|
+
};
|
|
378
374
|
return Demo;
|
|
379
375
|
}(Component);
|
|
380
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media
|
|
381
|
-
_mount8 = mount(Demo), element = _mount8[1];
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
376
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"video-media\"\n type=\"video\"\n src=\"https://example.com/demo.mp4\"\n poster={this.get('poster')}\n />\n </div>\n ";
|
|
377
|
+
_mount8 = mount(Demo), instance = _mount8[0], element = _mount8[1];
|
|
378
|
+
media = element.querySelector('.video-media');
|
|
379
|
+
videoWithPoster = element.querySelector('video.k-media-video');
|
|
380
|
+
dispatchMediaEvent(videoWithPoster, 'loadedmetadata');
|
|
381
|
+
_context16.next = 8;
|
|
382
|
+
return wait();
|
|
383
|
+
case 8:
|
|
384
|
+
expect(media.className).to.contain('k-media-done');
|
|
385
|
+
expect(videoWithPoster.getAttribute('poster')).to.eql('https://example.com/poster.png');
|
|
386
|
+
instance.set('poster', undefined);
|
|
387
|
+
_context16.next = 13;
|
|
388
|
+
return wait();
|
|
389
|
+
case 13:
|
|
390
|
+
videoWithoutPoster = element.querySelector('video.k-media-video');
|
|
391
|
+
expect(videoWithoutPoster).not.to.eql(videoWithPoster);
|
|
392
|
+
expect(videoWithoutPoster.getAttribute('poster')).to.eql(null);
|
|
393
|
+
expect(media.className).to.contain('k-media-loading');
|
|
394
|
+
instance.set('poster', 'https://example.com/next-poster.png');
|
|
395
|
+
_context16.next = 20;
|
|
396
|
+
return wait();
|
|
397
|
+
case 20:
|
|
398
|
+
videoWithNextPoster = element.querySelector('video.k-media-video');
|
|
399
|
+
expect(videoWithNextPoster).not.to.eql(videoWithoutPoster);
|
|
400
|
+
expect(videoWithNextPoster.getAttribute('poster')).to.eql('https://example.com/next-poster.png');
|
|
401
|
+
expect(media.className).to.contain('k-media-loading');
|
|
402
|
+
case 24:
|
|
389
403
|
case "end":
|
|
390
404
|
return _context16.stop();
|
|
391
405
|
}
|
|
392
406
|
}, _callee8);
|
|
393
407
|
})));
|
|
394
|
-
//
|
|
395
|
-
it('should
|
|
396
|
-
var Demo, _mount9, element
|
|
408
|
+
// 完成态媒体默认允许展示预览遮罩。
|
|
409
|
+
it('should render preview overlay for done media', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
|
|
410
|
+
var Demo, _mount9, element;
|
|
397
411
|
return _regeneratorRuntime.wrap(function _callee9$(_context18) {
|
|
398
412
|
while (1) switch (_context18.prev = _context18.next) {
|
|
399
413
|
case 0:
|
|
@@ -411,22 +425,23 @@ describe('Media', function () {
|
|
|
411
425
|
}
|
|
412
426
|
return Demo;
|
|
413
427
|
}(Component);
|
|
414
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media
|
|
428
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"done-image\" type=\"image\" status=\"done\" src=\"https://example.com/cover.png\" />\n <Media className=\"done-video\" type=\"video\" status=\"done\" src=\"https://example.com/demo.mp4\" />\n <Media className=\"done-audio\" type=\"audio\" status=\"done\" src=\"https://example.com/demo.mp3\" />\n </div>\n ";
|
|
415
429
|
_mount9 = mount(Demo), element = _mount9[1];
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
430
|
+
['done-image', 'done-video', 'done-audio'].forEach(function (className) {
|
|
431
|
+
var media = element.querySelector("." + className);
|
|
432
|
+
expect(media.className).to.contain('k-media-previewable');
|
|
433
|
+
expect(media.querySelector('.k-media-overlay')).not.to.eql(null);
|
|
434
|
+
expect(media.querySelector('.k-media-preview-trigger')).not.to.eql(null);
|
|
435
|
+
});
|
|
436
|
+
case 4:
|
|
421
437
|
case "end":
|
|
422
438
|
return _context18.stop();
|
|
423
439
|
}
|
|
424
440
|
}, _callee9);
|
|
425
441
|
})));
|
|
426
|
-
//
|
|
427
|
-
it('should render
|
|
428
|
-
var
|
|
429
|
-
var Demo, _mount10, element;
|
|
442
|
+
// loading 蒙层只覆盖已加载出的真实图片/视频资源;占位图和默认音频 loading 不额外压暗。
|
|
443
|
+
it('should render loading overlay only for visual media with source', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
|
|
444
|
+
var Demo, _mount10, element, image, video;
|
|
430
445
|
return _regeneratorRuntime.wrap(function _callee10$(_context20) {
|
|
431
446
|
while (1) switch (_context20.prev = _context20.next) {
|
|
432
447
|
case 0:
|
|
@@ -444,25 +459,37 @@ describe('Media', function () {
|
|
|
444
459
|
}
|
|
445
460
|
return Demo;
|
|
446
461
|
}(Component);
|
|
447
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"
|
|
462
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"loading-image\" type=\"image\" status=\"loading\" src=\"https://example.com/cover.png\" />\n <Media className=\"loading-video\" type=\"video\" status=\"loading\" src=\"https://example.com/demo.mp4\" />\n <Media className=\"placeholder-image\" type=\"image\" status=\"loading\" />\n <Media className=\"placeholder-video\" type=\"video\" status=\"loading\" />\n <Media className=\"loading-audio\" type=\"audio\" status=\"loading\" src=\"https://example.com/demo.mp3\" />\n </div>\n ";
|
|
448
463
|
_mount10 = mount(Demo), element = _mount10[1];
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
expect((
|
|
455
|
-
expect(
|
|
456
|
-
|
|
457
|
-
|
|
464
|
+
image = element.querySelector('.loading-image img.k-media-image');
|
|
465
|
+
video = element.querySelector('.loading-video video.k-media-video');
|
|
466
|
+
['loading-image', 'loading-video', 'placeholder-image', 'placeholder-video', 'loading-audio'].forEach(function (className) {
|
|
467
|
+
expect(element.querySelector("." + className + " .k-media-loading-overlay")).to.eql(null);
|
|
468
|
+
});
|
|
469
|
+
expect(getComputedStyle(image).display).to.eql('none');
|
|
470
|
+
expect(getComputedStyle(video).display).to.eql('none');
|
|
471
|
+
dispatchMediaEvent(image, 'load');
|
|
472
|
+
dispatchMediaEvent(video, 'loadeddata');
|
|
473
|
+
_context20.next = 12;
|
|
474
|
+
return wait();
|
|
475
|
+
case 12:
|
|
476
|
+
['loading-image', 'loading-video'].forEach(function (className) {
|
|
477
|
+
expect(element.querySelector("." + className + " .k-media-loading-overlay")).not.to.eql(null);
|
|
478
|
+
});
|
|
479
|
+
expect(element.querySelector('.loading-audio .k-media-loading-overlay')).to.eql(null);
|
|
480
|
+
expect(element.querySelector('.loading-image .k-media-placeholder')).to.eql(null);
|
|
481
|
+
expect(element.querySelector('.loading-video .k-media-placeholder')).to.eql(null);
|
|
482
|
+
expect(getComputedStyle(image).display).not.to.eql('none');
|
|
483
|
+
expect(getComputedStyle(video).display).not.to.eql('none');
|
|
484
|
+
case 18:
|
|
458
485
|
case "end":
|
|
459
486
|
return _context20.stop();
|
|
460
487
|
}
|
|
461
488
|
}, _callee10);
|
|
462
489
|
})));
|
|
463
|
-
//
|
|
464
|
-
it('should
|
|
465
|
-
var Demo, _mount11, element, media;
|
|
490
|
+
// 外部保持 loading 时,资源未加载出先展示占位图;资源加载出后再展示真实媒体。
|
|
491
|
+
it('should keep placeholder visible until visual source is loaded under loading status', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {
|
|
492
|
+
var Demo, _mount11, element, media, image;
|
|
466
493
|
return _regeneratorRuntime.wrap(function _callee11$(_context22) {
|
|
467
494
|
while (1) switch (_context22.prev = _context22.next) {
|
|
468
495
|
case 0:
|
|
@@ -480,25 +507,35 @@ describe('Media', function () {
|
|
|
480
507
|
}
|
|
481
508
|
return Demo;
|
|
482
509
|
}(Component);
|
|
483
|
-
Demo.template = "\n const { Media } = this;\n <
|
|
510
|
+
Demo.template = "\n const { Media } = this;\n <Media type=\"image\" status=\"loading\" src=\"https://example.com/loading.png\" />\n ";
|
|
484
511
|
_mount11 = mount(Demo), element = _mount11[1];
|
|
485
|
-
media = element.querySelector('.
|
|
486
|
-
|
|
487
|
-
expect(media.
|
|
488
|
-
|
|
512
|
+
media = element.classList.contains('k-media') ? element : element.querySelector('.k-media');
|
|
513
|
+
image = element.querySelector('img.k-media-image');
|
|
514
|
+
expect(media.className).to.contain('k-media-loading');
|
|
515
|
+
expect(image).not.to.eql(null);
|
|
516
|
+
expect(getComputedStyle(image).display).to.eql('none');
|
|
517
|
+
expect(media.querySelector('.k-media-placeholder-asset')).not.to.eql(null);
|
|
518
|
+
expect(media.querySelector('.k-media-loading-overlay')).to.eql(null);
|
|
519
|
+
dispatchMediaEvent(image, 'load');
|
|
520
|
+
_context22.next = 13;
|
|
521
|
+
return wait();
|
|
522
|
+
case 13:
|
|
523
|
+
expect(media.className).to.contain('k-media-loading');
|
|
524
|
+
expect(getComputedStyle(image).display).not.to.eql('none');
|
|
525
|
+
expect(media.querySelector('.k-media-placeholder')).to.eql(null);
|
|
526
|
+
expect(media.querySelector('.k-media-loading-overlay')).not.to.eql(null);
|
|
527
|
+
case 17:
|
|
489
528
|
case "end":
|
|
490
529
|
return _context22.stop();
|
|
491
530
|
}
|
|
492
531
|
}, _callee11);
|
|
493
532
|
})));
|
|
494
|
-
//
|
|
495
|
-
it('should
|
|
496
|
-
var
|
|
497
|
-
var previewCalls, Demo, _mount12, element, maskOpen;
|
|
533
|
+
// showPreview=false 时完成态也不生成预览入口。
|
|
534
|
+
it('should hide preview overlay when showPreview is false', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
|
|
535
|
+
var Demo, _mount12, element, media;
|
|
498
536
|
return _regeneratorRuntime.wrap(function _callee12$(_context24) {
|
|
499
537
|
while (1) switch (_context24.prev = _context24.next) {
|
|
500
538
|
case 0:
|
|
501
|
-
previewCalls = [];
|
|
502
539
|
Demo = /*#__PURE__*/function (_Component12) {
|
|
503
540
|
_inheritsLoose(Demo, _Component12);
|
|
504
541
|
function Demo() {
|
|
@@ -509,42 +546,26 @@ describe('Media', function () {
|
|
|
509
546
|
}
|
|
510
547
|
_this12 = _Component12.call.apply(_Component12, _concatInstanceProperty(_context23 = [this]).call(_context23, args)) || this;
|
|
511
548
|
_this12.Media = Media;
|
|
512
|
-
_this12.onPreview = function (media, e) {
|
|
513
|
-
previewCalls.push({
|
|
514
|
-
media: media,
|
|
515
|
-
eventType: e.type
|
|
516
|
-
});
|
|
517
|
-
};
|
|
518
549
|
return _this12;
|
|
519
550
|
}
|
|
520
551
|
return Demo;
|
|
521
552
|
}(Component);
|
|
522
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"
|
|
553
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"no-preview\"\n type=\"image\"\n status=\"done\"\n showPreview={false}\n src=\"https://example.com/cover.png\"\n />\n </div>\n ";
|
|
523
554
|
_mount12 = mount(Demo), element = _mount12[1];
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
case
|
|
529
|
-
expect(previewCalls.length).to.eql(1);
|
|
530
|
-
expect(previewCalls[0].eventType).to.eql('click');
|
|
531
|
-
expect(previewCalls[0].media).to.include({
|
|
532
|
-
name: '封面图',
|
|
533
|
-
resolvedType: 'image',
|
|
534
|
-
status: 'done',
|
|
535
|
-
src: 'https://example.com/cover.png'
|
|
536
|
-
});
|
|
537
|
-
expect(getElement('.k-media-viewer')).not.to.eql(null);
|
|
538
|
-
expect((_getElement = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement.textContent).to.contain('封面图');
|
|
539
|
-
case 13:
|
|
555
|
+
media = element.querySelector('.no-preview');
|
|
556
|
+
expect(media.className).not.to.contain('k-media-previewable');
|
|
557
|
+
expect(media.querySelector('.k-media-overlay')).to.eql(null);
|
|
558
|
+
expect(media.querySelector('.k-media-preview-trigger')).to.eql(null);
|
|
559
|
+
case 7:
|
|
540
560
|
case "end":
|
|
541
561
|
return _context24.stop();
|
|
542
562
|
}
|
|
543
563
|
}, _callee12);
|
|
544
564
|
})));
|
|
545
|
-
//
|
|
546
|
-
it('should render
|
|
547
|
-
var
|
|
565
|
+
// mask 插槽仅在 default/done 状态生效,loading/error 不展示。
|
|
566
|
+
it('should render mask slot only in default and done status', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13() {
|
|
567
|
+
var _element$querySelecto, _element$querySelecto2;
|
|
568
|
+
var Demo, _mount13, element;
|
|
548
569
|
return _regeneratorRuntime.wrap(function _callee13$(_context26) {
|
|
549
570
|
while (1) switch (_context26.prev = _context26.next) {
|
|
550
571
|
case 0:
|
|
@@ -562,26 +583,25 @@ describe('Media', function () {
|
|
|
562
583
|
}
|
|
563
584
|
return Demo;
|
|
564
585
|
}(Component);
|
|
565
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"
|
|
586
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"mask-default\" type=\"image\">\n <b:mask args=\"media\">\n <div class=\"mask-slot-default\">{media.status}</div>\n </b:mask>\n </Media>\n <Media className=\"mask-done\" type=\"image\" status=\"done\" src=\"https://example.com/cover.png\">\n <b:mask args=\"media\">\n <div class=\"mask-slot-done\">{media.status}</div>\n </b:mask>\n </Media>\n <Media className=\"mask-loading\" type=\"image\" status=\"loading\" src=\"https://example.com/cover.png\">\n <b:mask args=\"media\">\n <div class=\"mask-slot-loading\">{media.status}</div>\n </b:mask>\n </Media>\n <Media className=\"mask-error\" type=\"image\" status=\"error\" src=\"https://example.com/cover.png\">\n <b:mask args=\"media\">\n <div class=\"mask-slot-error\">{media.status}</div>\n </b:mask>\n </Media>\n </div>\n ";
|
|
566
587
|
_mount13 = mount(Demo), element = _mount13[1];
|
|
567
|
-
|
|
568
|
-
expect(
|
|
569
|
-
expect(
|
|
570
|
-
expect(
|
|
571
|
-
expect(
|
|
572
|
-
expect(
|
|
573
|
-
expect(
|
|
574
|
-
expect(
|
|
575
|
-
|
|
576
|
-
case
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
}, _callee13);
|
|
588
|
+
expect(element.querySelector('.mask-default').className).to.contain('k-media-custom-mask');
|
|
589
|
+
expect(element.querySelector('.mask-done').className).to.contain('k-media-custom-mask');
|
|
590
|
+
expect(element.querySelector('.mask-loading').className).not.to.contain('k-media-custom-mask');
|
|
591
|
+
expect(element.querySelector('.mask-error').className).not.to.contain('k-media-custom-mask');
|
|
592
|
+
expect((_element$querySelecto = element.querySelector('.mask-slot-default')) == null ? void 0 : _element$querySelecto.textContent).to.contain('default');
|
|
593
|
+
expect((_element$querySelecto2 = element.querySelector('.mask-slot-done')) == null ? void 0 : _element$querySelecto2.textContent).to.contain('done');
|
|
594
|
+
expect(element.querySelector('.mask-slot-loading')).to.eql(null);
|
|
595
|
+
expect(element.querySelector('.mask-slot-error')).to.eql(null);
|
|
596
|
+
case 11:
|
|
597
|
+
case "end":
|
|
598
|
+
return _context26.stop();
|
|
599
|
+
}
|
|
600
|
+
}, _callee13);
|
|
581
601
|
})));
|
|
582
|
-
//
|
|
583
|
-
it('should
|
|
584
|
-
var Demo, _mount14, element,
|
|
602
|
+
// mask 生效时接管预览入口,不再显示默认预览按钮。
|
|
603
|
+
it('should hide default preview trigger when mask slot is active', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14() {
|
|
604
|
+
var Demo, _mount14, element, media;
|
|
585
605
|
return _regeneratorRuntime.wrap(function _callee14$(_context28) {
|
|
586
606
|
while (1) switch (_context28.prev = _context28.next) {
|
|
587
607
|
case 0:
|
|
@@ -599,8 +619,140 @@ describe('Media', function () {
|
|
|
599
619
|
}
|
|
600
620
|
return Demo;
|
|
601
621
|
}(Component);
|
|
602
|
-
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"
|
|
622
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"mask-preview\" type=\"image\" status=\"done\" src=\"https://example.com/cover.png\">\n <b:mask args=\"media\">\n <button class=\"mask-action\" type=\"button\">{media.name || 'mask'}</button>\n </b:mask>\n </Media>\n </div>\n ";
|
|
603
623
|
_mount14 = mount(Demo), element = _mount14[1];
|
|
624
|
+
media = element.querySelector('.mask-preview');
|
|
625
|
+
expect(media.querySelector('.mask-action')).not.to.eql(null);
|
|
626
|
+
expect(media.querySelector('.k-media-preview-trigger')).to.eql(null);
|
|
627
|
+
case 6:
|
|
628
|
+
case "end":
|
|
629
|
+
return _context28.stop();
|
|
630
|
+
}
|
|
631
|
+
}, _callee14);
|
|
632
|
+
})));
|
|
633
|
+
// mask 插槽可以通过 preview(event) 主动触发预览。
|
|
634
|
+
it('should open preview by custom mask preview handler', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15() {
|
|
635
|
+
var _getElement;
|
|
636
|
+
var previewCalls, Demo, _mount15, element, maskOpen;
|
|
637
|
+
return _regeneratorRuntime.wrap(function _callee15$(_context30) {
|
|
638
|
+
while (1) switch (_context30.prev = _context30.next) {
|
|
639
|
+
case 0:
|
|
640
|
+
previewCalls = [];
|
|
641
|
+
Demo = /*#__PURE__*/function (_Component15) {
|
|
642
|
+
_inheritsLoose(Demo, _Component15);
|
|
643
|
+
function Demo() {
|
|
644
|
+
var _context29;
|
|
645
|
+
var _this15;
|
|
646
|
+
for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
|
|
647
|
+
args[_key15] = arguments[_key15];
|
|
648
|
+
}
|
|
649
|
+
_this15 = _Component15.call.apply(_Component15, _concatInstanceProperty(_context29 = [this]).call(_context29, args)) || this;
|
|
650
|
+
_this15.Media = Media;
|
|
651
|
+
_this15.onPreview = function (media, e) {
|
|
652
|
+
previewCalls.push({
|
|
653
|
+
media: media,
|
|
654
|
+
eventType: e.type
|
|
655
|
+
});
|
|
656
|
+
};
|
|
657
|
+
return _this15;
|
|
658
|
+
}
|
|
659
|
+
return Demo;
|
|
660
|
+
}(Component);
|
|
661
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"mask-preview-open\"\n type=\"image\"\n status=\"done\"\n name=\"\u5C01\u9762\u56FE\"\n src=\"https://example.com/cover.png\"\n ev-preview={this.onPreview}\n >\n <b:mask args=\"media\">\n <button\n class=\"mask-open\"\n type=\"button\"\n disabled={!media.canPreview}\n ev-click={media.preview}\n >open</button>\n </b:mask>\n </Media>\n </div>\n ";
|
|
662
|
+
_mount15 = mount(Demo), element = _mount15[1];
|
|
663
|
+
maskOpen = element.querySelector('.mask-open');
|
|
664
|
+
maskOpen.click();
|
|
665
|
+
_context30.next = 8;
|
|
666
|
+
return wait(0);
|
|
667
|
+
case 8:
|
|
668
|
+
expect(previewCalls.length).to.eql(1);
|
|
669
|
+
expect(previewCalls[0].eventType).to.eql('click');
|
|
670
|
+
expect(previewCalls[0].media).to.include({
|
|
671
|
+
name: '封面图',
|
|
672
|
+
resolvedType: 'image',
|
|
673
|
+
status: 'done',
|
|
674
|
+
src: 'https://example.com/cover.png'
|
|
675
|
+
});
|
|
676
|
+
expect(getElement('.k-media-viewer')).not.to.eql(null);
|
|
677
|
+
expect((_getElement = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement.textContent).to.contain('封面图');
|
|
678
|
+
case 13:
|
|
679
|
+
case "end":
|
|
680
|
+
return _context30.stop();
|
|
681
|
+
}
|
|
682
|
+
}, _callee15);
|
|
683
|
+
})));
|
|
684
|
+
// 无 src 且无外部状态时展示默认占位,不进入 loading;图片/视频使用内置 SVG 占位图。
|
|
685
|
+
it('should render default placeholder when src and status are absent', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee16() {
|
|
686
|
+
var Demo, _mount16, element, media, video, imageAsset, videoAsset;
|
|
687
|
+
return _regeneratorRuntime.wrap(function _callee16$(_context32) {
|
|
688
|
+
while (1) switch (_context32.prev = _context32.next) {
|
|
689
|
+
case 0:
|
|
690
|
+
Demo = /*#__PURE__*/function (_Component16) {
|
|
691
|
+
_inheritsLoose(Demo, _Component16);
|
|
692
|
+
function Demo() {
|
|
693
|
+
var _context31;
|
|
694
|
+
var _this16;
|
|
695
|
+
for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
|
|
696
|
+
args[_key16] = arguments[_key16];
|
|
697
|
+
}
|
|
698
|
+
_this16 = _Component16.call.apply(_Component16, _concatInstanceProperty(_context31 = [this]).call(_context31, args)) || this;
|
|
699
|
+
_this16.Media = Media;
|
|
700
|
+
return _this16;
|
|
701
|
+
}
|
|
702
|
+
return Demo;
|
|
703
|
+
}(Component);
|
|
704
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"empty-media\" />\n <Media className=\"empty-video\" type=\"video\" />\n </div>\n ";
|
|
705
|
+
_mount16 = mount(Demo), element = _mount16[1];
|
|
706
|
+
media = element.querySelector('.empty-media');
|
|
707
|
+
video = element.querySelector('.empty-video');
|
|
708
|
+
imageAsset = media.querySelector('.k-media-placeholder-asset');
|
|
709
|
+
videoAsset = video.querySelector('.k-media-placeholder-asset');
|
|
710
|
+
expect(media.className).to.contain('k-media-image');
|
|
711
|
+
expect(media.className).to.contain('k-media-default');
|
|
712
|
+
expect(media.className).not.to.contain('k-media-previewable');
|
|
713
|
+
expect(media.getAttribute('title')).to.eql('未命名文件');
|
|
714
|
+
expect(media.querySelector('.k-media-placeholder')).not.to.eql(null);
|
|
715
|
+
expect(imageAsset).not.to.eql(null);
|
|
716
|
+
expect(imageAsset.src).to.contain('data:image/svg+xml');
|
|
717
|
+
expect(imageAsset.src).to.contain('M4.5%207');
|
|
718
|
+
expect(getComputedStyle(imageAsset).width).to.eql('16px');
|
|
719
|
+
expect(getComputedStyle(imageAsset).height).to.eql('16px');
|
|
720
|
+
expect(videoAsset).not.to.eql(null);
|
|
721
|
+
expect(videoAsset.src).to.contain('data:image/svg+xml');
|
|
722
|
+
expect(videoAsset.src).to.contain('M1.33282%204.4165');
|
|
723
|
+
expect(getComputedStyle(videoAsset).width).to.eql('16px');
|
|
724
|
+
expect(getComputedStyle(videoAsset).height).to.eql('16px');
|
|
725
|
+
expect(media.querySelector('.k-media-image')).to.eql(null);
|
|
726
|
+
expect(media.querySelector('.k-media-loading-indicator')).to.eql(null);
|
|
727
|
+
expect(media.querySelector('.k-media-preview-trigger')).to.eql(null);
|
|
728
|
+
case 25:
|
|
729
|
+
case "end":
|
|
730
|
+
return _context32.stop();
|
|
731
|
+
}
|
|
732
|
+
}, _callee16);
|
|
733
|
+
})));
|
|
734
|
+
// 未传 type 时根据 name/src 文件名推断媒体类型。
|
|
735
|
+
it('should infer media type from name or src', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17() {
|
|
736
|
+
var Demo, _mount17, element, image, video, audio;
|
|
737
|
+
return _regeneratorRuntime.wrap(function _callee17$(_context34) {
|
|
738
|
+
while (1) switch (_context34.prev = _context34.next) {
|
|
739
|
+
case 0:
|
|
740
|
+
Demo = /*#__PURE__*/function (_Component17) {
|
|
741
|
+
_inheritsLoose(Demo, _Component17);
|
|
742
|
+
function Demo() {
|
|
743
|
+
var _context33;
|
|
744
|
+
var _this17;
|
|
745
|
+
for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
|
|
746
|
+
args[_key17] = arguments[_key17];
|
|
747
|
+
}
|
|
748
|
+
_this17 = _Component17.call.apply(_Component17, _concatInstanceProperty(_context33 = [this]).call(_context33, args)) || this;
|
|
749
|
+
_this17.Media = Media;
|
|
750
|
+
return _this17;
|
|
751
|
+
}
|
|
752
|
+
return Demo;
|
|
753
|
+
}(Component);
|
|
754
|
+
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"infer-image\" status=\"done\" src=\"https://example.com/cover.webp?x=1\" />\n <Media className=\"infer-video\" name=\"clip.webm\" status=\"done\" src=\"https://example.com/resource\" />\n <Media className=\"infer-audio\" status=\"done\" src=\"https://example.com/audio.m4a#hash\" />\n </div>\n ";
|
|
755
|
+
_mount17 = mount(Demo), element = _mount17[1];
|
|
604
756
|
image = element.querySelector('.infer-image');
|
|
605
757
|
video = element.querySelector('.infer-video');
|
|
606
758
|
audio = element.querySelector('.infer-audio');
|
|
@@ -612,51 +764,51 @@ describe('Media', function () {
|
|
|
612
764
|
expect(audio.querySelector('.k-media-audio-card')).not.to.eql(null);
|
|
613
765
|
case 12:
|
|
614
766
|
case "end":
|
|
615
|
-
return
|
|
767
|
+
return _context34.stop();
|
|
616
768
|
}
|
|
617
|
-
},
|
|
769
|
+
}, _callee17);
|
|
618
770
|
})));
|
|
619
771
|
// click 和 preview 事件分别返回缩略图信息和预览信息。
|
|
620
|
-
it('should trigger click and preview events with media payload', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
772
|
+
it('should trigger click and preview events with media payload', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee18() {
|
|
621
773
|
var _getElement2;
|
|
622
|
-
var clickCalls, previewCalls, Demo,
|
|
623
|
-
return _regeneratorRuntime.wrap(function
|
|
624
|
-
while (1) switch (
|
|
774
|
+
var clickCalls, previewCalls, Demo, _mount18, element, media, trigger;
|
|
775
|
+
return _regeneratorRuntime.wrap(function _callee18$(_context36) {
|
|
776
|
+
while (1) switch (_context36.prev = _context36.next) {
|
|
625
777
|
case 0:
|
|
626
778
|
clickCalls = [];
|
|
627
779
|
previewCalls = [];
|
|
628
|
-
Demo = /*#__PURE__*/function (
|
|
629
|
-
_inheritsLoose(Demo,
|
|
780
|
+
Demo = /*#__PURE__*/function (_Component18) {
|
|
781
|
+
_inheritsLoose(Demo, _Component18);
|
|
630
782
|
function Demo() {
|
|
631
|
-
var
|
|
632
|
-
var
|
|
633
|
-
for (var
|
|
634
|
-
args[
|
|
783
|
+
var _context35;
|
|
784
|
+
var _this18;
|
|
785
|
+
for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {
|
|
786
|
+
args[_key18] = arguments[_key18];
|
|
635
787
|
}
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
788
|
+
_this18 = _Component18.call.apply(_Component18, _concatInstanceProperty(_context35 = [this]).call(_context35, args)) || this;
|
|
789
|
+
_this18.Media = Media;
|
|
790
|
+
_this18.onClick = function (media, e) {
|
|
639
791
|
clickCalls.push({
|
|
640
792
|
media: media,
|
|
641
793
|
eventType: e.type
|
|
642
794
|
});
|
|
643
795
|
};
|
|
644
|
-
|
|
796
|
+
_this18.onPreview = function (media, e) {
|
|
645
797
|
previewCalls.push({
|
|
646
798
|
media: media,
|
|
647
799
|
eventType: e.type
|
|
648
800
|
});
|
|
649
801
|
};
|
|
650
|
-
return
|
|
802
|
+
return _this18;
|
|
651
803
|
}
|
|
652
804
|
return Demo;
|
|
653
805
|
}(Component);
|
|
654
806
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"event-media\"\n name=\"\u5C01\u9762\u56FE\"\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n ev-click={this.onClick}\n ev-preview={this.onPreview}\n />\n </div>\n ";
|
|
655
|
-
|
|
807
|
+
_mount18 = mount(Demo), element = _mount18[1];
|
|
656
808
|
media = element.querySelector('.event-media');
|
|
657
809
|
trigger = element.querySelector('.k-media-preview-trigger');
|
|
658
810
|
media.click();
|
|
659
|
-
|
|
811
|
+
_context36.next = 10;
|
|
660
812
|
return wait();
|
|
661
813
|
case 10:
|
|
662
814
|
expect(clickCalls.length).to.eql(1);
|
|
@@ -670,7 +822,7 @@ describe('Media', function () {
|
|
|
670
822
|
});
|
|
671
823
|
expect(clickCalls[0].eventType).to.eql('click');
|
|
672
824
|
trigger.click();
|
|
673
|
-
|
|
825
|
+
_context36.next = 16;
|
|
674
826
|
return wait();
|
|
675
827
|
case 16:
|
|
676
828
|
expect(clickCalls.length).to.eql(1);
|
|
@@ -687,39 +839,39 @@ describe('Media', function () {
|
|
|
687
839
|
expect((_getElement2 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement2.textContent).to.contain('封面图');
|
|
688
840
|
case 21:
|
|
689
841
|
case "end":
|
|
690
|
-
return
|
|
842
|
+
return _context36.stop();
|
|
691
843
|
}
|
|
692
|
-
},
|
|
844
|
+
}, _callee18);
|
|
693
845
|
})));
|
|
694
846
|
// imageProps/audioProps 透传原生属性,并移除被组件接管的事件属性。
|
|
695
|
-
it('should pass native image and audio props without leaking handled events', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
696
|
-
var calls, Demo,
|
|
697
|
-
return _regeneratorRuntime.wrap(function
|
|
698
|
-
while (1) switch (
|
|
847
|
+
it('should pass native image and audio props without leaking handled events', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19() {
|
|
848
|
+
var calls, Demo, _mount19, element, image, audio;
|
|
849
|
+
return _regeneratorRuntime.wrap(function _callee19$(_context38) {
|
|
850
|
+
while (1) switch (_context38.prev = _context38.next) {
|
|
699
851
|
case 0:
|
|
700
852
|
calls = [];
|
|
701
|
-
Demo = /*#__PURE__*/function (
|
|
702
|
-
_inheritsLoose(Demo,
|
|
853
|
+
Demo = /*#__PURE__*/function (_Component19) {
|
|
854
|
+
_inheritsLoose(Demo, _Component19);
|
|
703
855
|
function Demo() {
|
|
704
|
-
var
|
|
705
|
-
var
|
|
706
|
-
for (var
|
|
707
|
-
args[
|
|
856
|
+
var _context37;
|
|
857
|
+
var _this19;
|
|
858
|
+
for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
|
|
859
|
+
args[_key19] = arguments[_key19];
|
|
708
860
|
}
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
861
|
+
_this19 = _Component19.call.apply(_Component19, _concatInstanceProperty(_context37 = [this]).call(_context37, args)) || this;
|
|
862
|
+
_this19.Media = Media;
|
|
863
|
+
_this19.onImageError = function () {
|
|
712
864
|
calls.push('image-error');
|
|
713
865
|
};
|
|
714
|
-
|
|
866
|
+
_this19.onAudioLoad = function () {
|
|
715
867
|
calls.push('audio-load');
|
|
716
868
|
};
|
|
717
|
-
return
|
|
869
|
+
return _this19;
|
|
718
870
|
}
|
|
719
871
|
return Demo;
|
|
720
872
|
}(Component);
|
|
721
873
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n type=\"image\"\n src=\"https://example.com/cover.png\"\n imageProps={{\n onerror: this.onImageError,\n 'data-native': 'image',\n }}\n />\n <Media\n type=\"audio\"\n src=\"https://example.com/demo.mp3\"\n audioProps={{\n onloadedmetadata: this.onAudioLoad,\n preload: 'auto',\n 'data-native': 'audio',\n }}\n />\n </div>\n ";
|
|
722
|
-
|
|
874
|
+
_mount19 = mount(Demo), element = _mount19[1];
|
|
723
875
|
image = element.querySelector('img.k-media-image');
|
|
724
876
|
audio = element.querySelector('audio.k-media-audio-loader');
|
|
725
877
|
expect(image.getAttribute('data-native')).to.eql('image');
|
|
@@ -729,45 +881,45 @@ describe('Media', function () {
|
|
|
729
881
|
expect(audio.getAttribute('onloadedmetadata')).to.eql(null);
|
|
730
882
|
dispatchMediaEvent(image, 'error');
|
|
731
883
|
dispatchMediaEvent(audio, 'loadedmetadata');
|
|
732
|
-
|
|
884
|
+
_context38.next = 15;
|
|
733
885
|
return wait();
|
|
734
886
|
case 15:
|
|
735
887
|
expect(calls).to.eql(['image-error', 'audio-load']);
|
|
736
888
|
case 16:
|
|
737
889
|
case "end":
|
|
738
|
-
return
|
|
890
|
+
return _context38.stop();
|
|
739
891
|
}
|
|
740
|
-
},
|
|
892
|
+
}, _callee19);
|
|
741
893
|
})));
|
|
742
894
|
// 原生媒体事件驱动内部自动状态切换。
|
|
743
|
-
it('should update automatic status from native media events', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
744
|
-
var calls, Demo,
|
|
745
|
-
return _regeneratorRuntime.wrap(function
|
|
746
|
-
while (1) switch (
|
|
895
|
+
it('should update automatic status from native media events', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20() {
|
|
896
|
+
var calls, Demo, _mount20, element, imageMedia, videoMedia, audioMedia;
|
|
897
|
+
return _regeneratorRuntime.wrap(function _callee20$(_context40) {
|
|
898
|
+
while (1) switch (_context40.prev = _context40.next) {
|
|
747
899
|
case 0:
|
|
748
900
|
calls = [];
|
|
749
|
-
Demo = /*#__PURE__*/function (
|
|
750
|
-
_inheritsLoose(Demo,
|
|
901
|
+
Demo = /*#__PURE__*/function (_Component20) {
|
|
902
|
+
_inheritsLoose(Demo, _Component20);
|
|
751
903
|
function Demo() {
|
|
752
|
-
var
|
|
753
|
-
var
|
|
754
|
-
for (var
|
|
755
|
-
args[
|
|
904
|
+
var _context39;
|
|
905
|
+
var _this20;
|
|
906
|
+
for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {
|
|
907
|
+
args[_key20] = arguments[_key20];
|
|
756
908
|
}
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
909
|
+
_this20 = _Component20.call.apply(_Component20, _concatInstanceProperty(_context39 = [this]).call(_context39, args)) || this;
|
|
910
|
+
_this20.Media = Media;
|
|
911
|
+
_this20.onLoad = function (media) {
|
|
760
912
|
calls.push("load:" + media.resolvedType);
|
|
761
913
|
};
|
|
762
|
-
|
|
914
|
+
_this20.onLoadError = function (media) {
|
|
763
915
|
calls.push("error:" + media.resolvedType);
|
|
764
916
|
};
|
|
765
|
-
return
|
|
917
|
+
return _this20;
|
|
766
918
|
}
|
|
767
919
|
return Demo;
|
|
768
920
|
}(Component);
|
|
769
921
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"image-media\" type=\"image\" src=\"https://example.com/cover.png\" ev-load={this.onLoad} ev-loadError={this.onLoadError} />\n <Media className=\"video-media\" type=\"video\" src=\"https://example.com/demo.mp4\" ev-load={this.onLoad} />\n <Media className=\"audio-media\" type=\"audio\" src=\"https://example.com/demo.mp3\" ev-load={this.onLoad} />\n </div>\n ";
|
|
770
|
-
|
|
922
|
+
_mount20 = mount(Demo), element = _mount20[1];
|
|
771
923
|
imageMedia = element.querySelector('.image-media');
|
|
772
924
|
videoMedia = element.querySelector('.video-media');
|
|
773
925
|
audioMedia = element.querySelector('.audio-media');
|
|
@@ -777,7 +929,7 @@ describe('Media', function () {
|
|
|
777
929
|
dispatchMediaEvent(element.querySelector('img.k-media-image'), 'load');
|
|
778
930
|
dispatchMediaEvent(element.querySelector('video.k-media-video'), 'loadeddata');
|
|
779
931
|
dispatchMediaEvent(element.querySelector('audio.k-media-audio-loader'), 'loadedmetadata');
|
|
780
|
-
|
|
932
|
+
_context40.next = 15;
|
|
781
933
|
return wait();
|
|
782
934
|
case 15:
|
|
783
935
|
expect(imageMedia.className).to.contain('k-media-done');
|
|
@@ -786,7 +938,7 @@ describe('Media', function () {
|
|
|
786
938
|
expect(element.querySelector('.k-media-loading-indicator')).to.eql(null);
|
|
787
939
|
expect(calls).to.eql(['load:image', 'load:video', 'load:audio']);
|
|
788
940
|
dispatchMediaEvent(element.querySelector('img.k-media-image'), 'error');
|
|
789
|
-
|
|
941
|
+
_context40.next = 23;
|
|
790
942
|
return wait();
|
|
791
943
|
case 23:
|
|
792
944
|
expect(imageMedia.className).to.contain('k-media-error');
|
|
@@ -797,39 +949,39 @@ describe('Media', function () {
|
|
|
797
949
|
expect(calls).to.eql(['load:image', 'load:video', 'load:audio', 'error:image']);
|
|
798
950
|
case 29:
|
|
799
951
|
case "end":
|
|
800
|
-
return
|
|
952
|
+
return _context40.stop();
|
|
801
953
|
}
|
|
802
|
-
},
|
|
954
|
+
}, _callee20);
|
|
803
955
|
})));
|
|
804
956
|
// 原生事件先更新内部状态,再调用用户传入的回调。
|
|
805
|
-
it('should merge native handlers', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
806
|
-
var calls, imageMedia, Demo,
|
|
807
|
-
return _regeneratorRuntime.wrap(function
|
|
808
|
-
while (1) switch (
|
|
957
|
+
it('should merge native handlers', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21() {
|
|
958
|
+
var calls, imageMedia, Demo, _mount21, element;
|
|
959
|
+
return _regeneratorRuntime.wrap(function _callee21$(_context42) {
|
|
960
|
+
while (1) switch (_context42.prev = _context42.next) {
|
|
809
961
|
case 0:
|
|
810
962
|
calls = [];
|
|
811
|
-
Demo = /*#__PURE__*/function (
|
|
812
|
-
_inheritsLoose(Demo,
|
|
963
|
+
Demo = /*#__PURE__*/function (_Component21) {
|
|
964
|
+
_inheritsLoose(Demo, _Component21);
|
|
813
965
|
function Demo() {
|
|
814
|
-
var
|
|
815
|
-
var
|
|
816
|
-
for (var
|
|
817
|
-
args[
|
|
966
|
+
var _context41;
|
|
967
|
+
var _this21;
|
|
968
|
+
for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {
|
|
969
|
+
args[_key21] = arguments[_key21];
|
|
818
970
|
}
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
971
|
+
_this21 = _Component21.call.apply(_Component21, _concatInstanceProperty(_context41 = [this]).call(_context41, args)) || this;
|
|
972
|
+
_this21.Media = Media;
|
|
973
|
+
_this21.onImageLoad = function () {
|
|
822
974
|
calls.push('load');
|
|
823
975
|
};
|
|
824
|
-
return
|
|
976
|
+
return _this21;
|
|
825
977
|
}
|
|
826
978
|
return Demo;
|
|
827
979
|
}(Component);
|
|
828
980
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"image-media\"\n type=\"image\"\n src=\"https://example.com/cover.png\"\n imageProps={{\n onload: this.onImageLoad,\n }}\n />\n </div>\n ";
|
|
829
|
-
|
|
981
|
+
_mount21 = mount(Demo), element = _mount21[1];
|
|
830
982
|
imageMedia = element.querySelector('.image-media');
|
|
831
983
|
dispatchMediaEvent(element.querySelector('img.k-media-image'), 'load');
|
|
832
|
-
|
|
984
|
+
_context42.next = 8;
|
|
833
985
|
return wait();
|
|
834
986
|
case 8:
|
|
835
987
|
expect(imageMedia.className).to.contain('k-media-done');
|
|
@@ -837,35 +989,35 @@ describe('Media', function () {
|
|
|
837
989
|
expect(element.querySelector('img.k-media-image').getAttribute('onload')).to.eql(null);
|
|
838
990
|
case 11:
|
|
839
991
|
case "end":
|
|
840
|
-
return
|
|
992
|
+
return _context42.stop();
|
|
841
993
|
}
|
|
842
|
-
},
|
|
994
|
+
}, _callee21);
|
|
843
995
|
})));
|
|
844
996
|
// 缓存资源错过事件时,通过原生 ready 状态补齐完成态。
|
|
845
|
-
it('should sync automatic status from native media state', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
846
|
-
var restores, Demo,
|
|
847
|
-
return _regeneratorRuntime.wrap(function
|
|
848
|
-
while (1) switch (
|
|
997
|
+
it('should sync automatic status from native media state', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22() {
|
|
998
|
+
var restores, Demo, _mount22, element;
|
|
999
|
+
return _regeneratorRuntime.wrap(function _callee22$(_context44) {
|
|
1000
|
+
while (1) switch (_context44.prev = _context44.next) {
|
|
849
1001
|
case 0:
|
|
850
1002
|
restores = [stubNativeGetter(HTMLImageElement.prototype, 'complete', true), stubNativeGetter(HTMLImageElement.prototype, 'naturalWidth', 120), stubNativeGetter(HTMLImageElement.prototype, 'naturalHeight', 80), stubNativeGetter(HTMLMediaElement.prototype, 'readyState', 2)];
|
|
851
|
-
|
|
852
|
-
Demo = /*#__PURE__*/function (
|
|
853
|
-
_inheritsLoose(Demo,
|
|
1003
|
+
_context44.prev = 1;
|
|
1004
|
+
Demo = /*#__PURE__*/function (_Component22) {
|
|
1005
|
+
_inheritsLoose(Demo, _Component22);
|
|
854
1006
|
function Demo() {
|
|
855
|
-
var
|
|
856
|
-
var
|
|
857
|
-
for (var
|
|
858
|
-
args[
|
|
1007
|
+
var _context43;
|
|
1008
|
+
var _this22;
|
|
1009
|
+
for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {
|
|
1010
|
+
args[_key22] = arguments[_key22];
|
|
859
1011
|
}
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
return
|
|
1012
|
+
_this22 = _Component22.call.apply(_Component22, _concatInstanceProperty(_context43 = [this]).call(_context43, args)) || this;
|
|
1013
|
+
_this22.Media = Media;
|
|
1014
|
+
return _this22;
|
|
863
1015
|
}
|
|
864
1016
|
return Demo;
|
|
865
1017
|
}(Component);
|
|
866
1018
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"image-media\" type=\"image\" src=\"https://example.com/cover.png\" />\n <Media className=\"video-media\" type=\"video\" src=\"https://example.com/demo.mp4\" />\n <Media className=\"audio-media\" type=\"audio\" src=\"https://example.com/demo.mp3\" />\n </div>\n ";
|
|
867
|
-
|
|
868
|
-
|
|
1019
|
+
_mount22 = mount(Demo), element = _mount22[1];
|
|
1020
|
+
_context44.next = 7;
|
|
869
1021
|
return wait();
|
|
870
1022
|
case 7:
|
|
871
1023
|
expect(element.querySelector('.image-media').className).to.contain('k-media-done');
|
|
@@ -874,45 +1026,45 @@ describe('Media', function () {
|
|
|
874
1026
|
expect(element.querySelector('.k-media-loading-indicator')).to.eql(null);
|
|
875
1027
|
expect(element.querySelectorAll('.k-media-preview-trigger').length).to.eql(3);
|
|
876
1028
|
case 12:
|
|
877
|
-
|
|
1029
|
+
_context44.prev = 12;
|
|
878
1030
|
restores.forEach(function (restore) {
|
|
879
1031
|
return restore();
|
|
880
1032
|
});
|
|
881
|
-
return
|
|
1033
|
+
return _context44.finish(12);
|
|
882
1034
|
case 15:
|
|
883
1035
|
case "end":
|
|
884
|
-
return
|
|
1036
|
+
return _context44.stop();
|
|
885
1037
|
}
|
|
886
|
-
},
|
|
1038
|
+
}, _callee22, null, [[1,, 12, 15]]);
|
|
887
1039
|
})));
|
|
888
1040
|
// 外部 status 优先级高于内部自动状态。
|
|
889
|
-
it('should let status prop override internal status', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
890
|
-
var Demo,
|
|
891
|
-
return _regeneratorRuntime.wrap(function
|
|
892
|
-
while (1) switch (
|
|
1041
|
+
it('should let status prop override internal status', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23() {
|
|
1042
|
+
var Demo, _mount23, element, loadingMedia, errorMedia, doneMedia;
|
|
1043
|
+
return _regeneratorRuntime.wrap(function _callee23$(_context46) {
|
|
1044
|
+
while (1) switch (_context46.prev = _context46.next) {
|
|
893
1045
|
case 0:
|
|
894
|
-
Demo = /*#__PURE__*/function (
|
|
895
|
-
_inheritsLoose(Demo,
|
|
1046
|
+
Demo = /*#__PURE__*/function (_Component23) {
|
|
1047
|
+
_inheritsLoose(Demo, _Component23);
|
|
896
1048
|
function Demo() {
|
|
897
|
-
var
|
|
898
|
-
var
|
|
899
|
-
for (var
|
|
900
|
-
args[
|
|
1049
|
+
var _context45;
|
|
1050
|
+
var _this23;
|
|
1051
|
+
for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {
|
|
1052
|
+
args[_key23] = arguments[_key23];
|
|
901
1053
|
}
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
return
|
|
1054
|
+
_this23 = _Component23.call.apply(_Component23, _concatInstanceProperty(_context45 = [this]).call(_context45, args)) || this;
|
|
1055
|
+
_this23.Media = Media;
|
|
1056
|
+
return _this23;
|
|
905
1057
|
}
|
|
906
1058
|
return Demo;
|
|
907
1059
|
}(Component);
|
|
908
1060
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"loading-media\" type=\"image\" status=\"loading\" src=\"https://example.com/loading.png\" />\n <Media className=\"error-media\" type=\"video\" status=\"error\" src=\"https://example.com/error.mp4\" />\n <Media className=\"done-media\" type=\"audio\" status=\"done\" src=\"https://example.com/done.mp3\" />\n </div>\n ";
|
|
909
|
-
|
|
1061
|
+
_mount23 = mount(Demo), element = _mount23[1];
|
|
910
1062
|
loadingMedia = element.querySelector('.loading-media');
|
|
911
1063
|
errorMedia = element.querySelector('.error-media');
|
|
912
1064
|
doneMedia = element.querySelector('.done-media');
|
|
913
1065
|
dispatchMediaEvent(loadingMedia.querySelector('img.k-media-image'), 'load');
|
|
914
1066
|
dispatchMediaEvent(doneMedia.querySelector('audio.k-media-audio-loader'), 'error');
|
|
915
|
-
|
|
1067
|
+
_context46.next = 10;
|
|
916
1068
|
return wait();
|
|
917
1069
|
case 10:
|
|
918
1070
|
expect(loadingMedia.className).to.contain('k-media-loading');
|
|
@@ -927,32 +1079,32 @@ describe('Media', function () {
|
|
|
927
1079
|
expect(doneMedia.querySelector('.k-media-preview-trigger').disabled).to.eql(false);
|
|
928
1080
|
case 20:
|
|
929
1081
|
case "end":
|
|
930
|
-
return
|
|
1082
|
+
return _context46.stop();
|
|
931
1083
|
}
|
|
932
|
-
},
|
|
1084
|
+
}, _callee23);
|
|
933
1085
|
})));
|
|
934
1086
|
// 音频 loading 展示居中的音频图标,并和图片/视频一致展示左上角加载圆圈。
|
|
935
|
-
it('should render centered audio icon and loading indicator for loading audio card', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
936
|
-
var Demo,
|
|
937
|
-
return _regeneratorRuntime.wrap(function
|
|
938
|
-
while (1) switch (
|
|
1087
|
+
it('should render centered audio icon and loading indicator for loading audio card', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24() {
|
|
1088
|
+
var Demo, _mount24, element, audio, mini, compact, singleWidth, customSize, wide, icon, miniIcon, compactIcon, singleWidthIcon, customSizeIcon, wideIcon;
|
|
1089
|
+
return _regeneratorRuntime.wrap(function _callee24$(_context48) {
|
|
1090
|
+
while (1) switch (_context48.prev = _context48.next) {
|
|
939
1091
|
case 0:
|
|
940
|
-
Demo = /*#__PURE__*/function (
|
|
941
|
-
_inheritsLoose(Demo,
|
|
1092
|
+
Demo = /*#__PURE__*/function (_Component24) {
|
|
1093
|
+
_inheritsLoose(Demo, _Component24);
|
|
942
1094
|
function Demo() {
|
|
943
|
-
var
|
|
944
|
-
var
|
|
945
|
-
for (var
|
|
946
|
-
args[
|
|
1095
|
+
var _context47;
|
|
1096
|
+
var _this24;
|
|
1097
|
+
for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
|
|
1098
|
+
args[_key24] = arguments[_key24];
|
|
947
1099
|
}
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
return
|
|
1100
|
+
_this24 = _Component24.call.apply(_Component24, _concatInstanceProperty(_context47 = [this]).call(_context47, args)) || this;
|
|
1101
|
+
_this24.Media = Media;
|
|
1102
|
+
return _this24;
|
|
951
1103
|
}
|
|
952
1104
|
return Demo;
|
|
953
1105
|
}(Component);
|
|
954
1106
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"audio-loading\" type=\"audio\" status=\"loading\" src=\"https://example.com/loading.mp3\" />\n <Media className=\"audio-loading-mini\" type=\"audio\" size=\"mini\" status=\"loading\" src=\"https://example.com/loading.mp3\" />\n <Media className=\"audio-loading-compact\" type=\"audio\" width={20} height={28} status=\"loading\" src=\"https://example.com/loading.mp3\" />\n <Media className=\"audio-loading-single-width\" type=\"audio\" width={18} status=\"loading\" src=\"https://example.com/loading.mp3\" />\n <Media className=\"audio-loading-custom-size\" type=\"audio\" size={22} status=\"loading\" src=\"https://example.com/loading.mp3\" />\n <Media className=\"audio-loading-wide\" type=\"audio\" width={36} height={40} status=\"loading\" src=\"https://example.com/loading.mp3\" />\n </div>\n ";
|
|
955
|
-
|
|
1107
|
+
_mount24 = mount(Demo), element = _mount24[1];
|
|
956
1108
|
audio = element.querySelector('.audio-loading');
|
|
957
1109
|
mini = element.querySelector('.audio-loading-mini');
|
|
958
1110
|
compact = element.querySelector('.audio-loading-compact');
|
|
@@ -983,32 +1135,32 @@ describe('Media', function () {
|
|
|
983
1135
|
expect(getComputedStyle(wideIcon).height).to.eql('32px');
|
|
984
1136
|
case 31:
|
|
985
1137
|
case "end":
|
|
986
|
-
return
|
|
1138
|
+
return _context48.stop();
|
|
987
1139
|
}
|
|
988
|
-
},
|
|
1140
|
+
}, _callee24);
|
|
989
1141
|
})));
|
|
990
1142
|
// 图片/视频 loading 使用骨架底图和小型加载圆圈。
|
|
991
|
-
it('should render skeleton loading styles with spinner', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
992
|
-
var Demo,
|
|
993
|
-
return _regeneratorRuntime.wrap(function
|
|
994
|
-
while (1) switch (
|
|
1143
|
+
it('should render skeleton loading styles with spinner', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25() {
|
|
1144
|
+
var Demo, _mount25, element, shell, indicator, spinner, miniIndicator, miniSpinner, shellStyle;
|
|
1145
|
+
return _regeneratorRuntime.wrap(function _callee25$(_context50) {
|
|
1146
|
+
while (1) switch (_context50.prev = _context50.next) {
|
|
995
1147
|
case 0:
|
|
996
|
-
Demo = /*#__PURE__*/function (
|
|
997
|
-
_inheritsLoose(Demo,
|
|
1148
|
+
Demo = /*#__PURE__*/function (_Component25) {
|
|
1149
|
+
_inheritsLoose(Demo, _Component25);
|
|
998
1150
|
function Demo() {
|
|
999
|
-
var
|
|
1000
|
-
var
|
|
1001
|
-
for (var
|
|
1002
|
-
args[
|
|
1151
|
+
var _context49;
|
|
1152
|
+
var _this25;
|
|
1153
|
+
for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {
|
|
1154
|
+
args[_key25] = arguments[_key25];
|
|
1003
1155
|
}
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
return
|
|
1156
|
+
_this25 = _Component25.call.apply(_Component25, _concatInstanceProperty(_context49 = [this]).call(_context49, args)) || this;
|
|
1157
|
+
_this25.Media = Media;
|
|
1158
|
+
return _this25;
|
|
1007
1159
|
}
|
|
1008
1160
|
return Demo;
|
|
1009
1161
|
}(Component);
|
|
1010
1162
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"loading-media\" type=\"image\" status=\"loading\" src=\"https://example.com/loading.png\" />\n <Media className=\"mini-loading-media\" type=\"image\" size=\"mini\" status=\"loading\" src=\"https://example.com/loading.png\" />\n </div>\n ";
|
|
1011
|
-
|
|
1163
|
+
_mount25 = mount(Demo), element = _mount25[1];
|
|
1012
1164
|
shell = element.querySelector('.loading-media .k-media-shell');
|
|
1013
1165
|
indicator = element.querySelector('.loading-media .k-media-loading-indicator');
|
|
1014
1166
|
spinner = element.querySelector('.loading-media .k-media-loading-spinner');
|
|
@@ -1025,33 +1177,70 @@ describe('Media', function () {
|
|
|
1025
1177
|
expect(getComputedStyle(miniSpinner).width).to.eql('10px');
|
|
1026
1178
|
case 17:
|
|
1027
1179
|
case "end":
|
|
1028
|
-
return
|
|
1180
|
+
return _context50.stop();
|
|
1181
|
+
}
|
|
1182
|
+
}, _callee25);
|
|
1183
|
+
})));
|
|
1184
|
+
// loading 圆圈颜色跟随主题主色,和 Bubble loading 点一致。
|
|
1185
|
+
it('should use theme primary color for loading spinner', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee26() {
|
|
1186
|
+
var Demo, _mount26, element, spinner, style;
|
|
1187
|
+
return _regeneratorRuntime.wrap(function _callee26$(_context52) {
|
|
1188
|
+
while (1) switch (_context52.prev = _context52.next) {
|
|
1189
|
+
case 0:
|
|
1190
|
+
setTheme({
|
|
1191
|
+
color: {
|
|
1192
|
+
primary: '#7c3aed'
|
|
1193
|
+
}
|
|
1194
|
+
});
|
|
1195
|
+
Demo = /*#__PURE__*/function (_Component26) {
|
|
1196
|
+
_inheritsLoose(Demo, _Component26);
|
|
1197
|
+
function Demo() {
|
|
1198
|
+
var _context51;
|
|
1199
|
+
var _this26;
|
|
1200
|
+
for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
|
|
1201
|
+
args[_key26] = arguments[_key26];
|
|
1202
|
+
}
|
|
1203
|
+
_this26 = _Component26.call.apply(_Component26, _concatInstanceProperty(_context51 = [this]).call(_context51, args)) || this;
|
|
1204
|
+
_this26.Media = Media;
|
|
1205
|
+
return _this26;
|
|
1206
|
+
}
|
|
1207
|
+
return Demo;
|
|
1208
|
+
}(Component);
|
|
1209
|
+
Demo.template = "\n const { Media } = this;\n <Media type=\"image\" status=\"loading\" src=\"https://example.com/loading.png\" />\n ";
|
|
1210
|
+
_mount26 = mount(Demo), element = _mount26[1];
|
|
1211
|
+
spinner = element.querySelector('.k-media-loading-spinner');
|
|
1212
|
+
style = getComputedStyle(spinner);
|
|
1213
|
+
expect(style.borderTopColor).to.eql('rgb(124, 58, 237)');
|
|
1214
|
+
expect(style.borderRightColor).to.eql('rgba(124, 58, 237, 0.22)');
|
|
1215
|
+
case 8:
|
|
1216
|
+
case "end":
|
|
1217
|
+
return _context52.stop();
|
|
1029
1218
|
}
|
|
1030
|
-
},
|
|
1219
|
+
}, _callee26);
|
|
1031
1220
|
})));
|
|
1032
1221
|
// loading/error 插槽可接管默认状态层展示。
|
|
1033
|
-
it('should render custom loading and error slots', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1222
|
+
it('should render custom loading and error slots', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27() {
|
|
1034
1223
|
var _loading$querySelecto, _error$querySelector, _audioLoading$querySe, _audioError$querySele;
|
|
1035
|
-
var Demo,
|
|
1036
|
-
return _regeneratorRuntime.wrap(function
|
|
1037
|
-
while (1) switch (
|
|
1224
|
+
var Demo, _mount27, element, loading, error, audioLoading, audioError;
|
|
1225
|
+
return _regeneratorRuntime.wrap(function _callee27$(_context54) {
|
|
1226
|
+
while (1) switch (_context54.prev = _context54.next) {
|
|
1038
1227
|
case 0:
|
|
1039
|
-
Demo = /*#__PURE__*/function (
|
|
1040
|
-
_inheritsLoose(Demo,
|
|
1228
|
+
Demo = /*#__PURE__*/function (_Component27) {
|
|
1229
|
+
_inheritsLoose(Demo, _Component27);
|
|
1041
1230
|
function Demo() {
|
|
1042
|
-
var
|
|
1043
|
-
var
|
|
1044
|
-
for (var
|
|
1045
|
-
args[
|
|
1231
|
+
var _context53;
|
|
1232
|
+
var _this27;
|
|
1233
|
+
for (var _len27 = arguments.length, args = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
|
|
1234
|
+
args[_key27] = arguments[_key27];
|
|
1046
1235
|
}
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
return
|
|
1236
|
+
_this27 = _Component27.call.apply(_Component27, _concatInstanceProperty(_context53 = [this]).call(_context53, args)) || this;
|
|
1237
|
+
_this27.Media = Media;
|
|
1238
|
+
return _this27;
|
|
1050
1239
|
}
|
|
1051
1240
|
return Demo;
|
|
1052
1241
|
}(Component);
|
|
1053
1242
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"custom-loading\"\n name=\"\u4E0A\u4F20\u4E2D.png\"\n type=\"image\"\n status=\"loading\"\n src=\"https://example.com/loading.png\"\n >\n <b:loading args=\"media\">\n <div class=\"custom-loading-slot\">\n {media.status} / {media.resolvedType} / {media.name}\n </div>\n </b:loading>\n </Media>\n <Media\n className=\"custom-error\"\n name=\"\u52A0\u8F7D\u5931\u8D25.mp4\"\n type=\"video\"\n status=\"error\"\n src=\"https://example.com/error.mp4\"\n >\n <b:error args=\"media\">\n <button class=\"custom-error-slot\" type=\"button\">\n {media.status} / {media.resolvedType} / {media.name}\n </button>\n </b:error>\n </Media>\n <Media\n className=\"custom-audio-loading\"\n name=\"\u4E0A\u4F20\u4E2D.mp3\"\n type=\"audio\"\n status=\"loading\"\n src=\"https://example.com/loading.mp3\"\n >\n <b:loading args=\"media\">\n <div class=\"custom-audio-loading-slot\">\n {media.status} / {media.resolvedType} / {media.name}\n </div>\n </b:loading>\n </Media>\n <Media\n className=\"custom-audio-error\"\n name=\"\u52A0\u8F7D\u5931\u8D25.mp3\"\n type=\"audio\"\n status=\"error\"\n src=\"https://example.com/error.mp3\"\n >\n <b:error args=\"media\">\n <div class=\"custom-audio-error-slot\">\n {media.status} / {media.resolvedType} / {media.name}\n </div>\n </b:error>\n </Media>\n </div>\n ";
|
|
1054
|
-
|
|
1243
|
+
_mount27 = mount(Demo), element = _mount27[1];
|
|
1055
1244
|
loading = element.querySelector('.custom-loading');
|
|
1056
1245
|
error = element.querySelector('.custom-error');
|
|
1057
1246
|
audioLoading = element.querySelector('.custom-audio-loading');
|
|
@@ -1073,32 +1262,32 @@ describe('Media', function () {
|
|
|
1073
1262
|
expect(audioError.querySelector('.k-media-audio-card')).to.eql(null);
|
|
1074
1263
|
case 22:
|
|
1075
1264
|
case "end":
|
|
1076
|
-
return
|
|
1265
|
+
return _context54.stop();
|
|
1077
1266
|
}
|
|
1078
|
-
},
|
|
1267
|
+
}, _callee27);
|
|
1079
1268
|
})));
|
|
1080
1269
|
// loading/error/mask 插槽为空时,不接管默认状态和预览入口。
|
|
1081
|
-
it('should ignore empty state and mask slots', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1082
|
-
var Demo,
|
|
1083
|
-
return _regeneratorRuntime.wrap(function
|
|
1084
|
-
while (1) switch (
|
|
1270
|
+
it('should ignore empty state and mask slots', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee28() {
|
|
1271
|
+
var Demo, _mount28, element, loading, error, mask;
|
|
1272
|
+
return _regeneratorRuntime.wrap(function _callee28$(_context56) {
|
|
1273
|
+
while (1) switch (_context56.prev = _context56.next) {
|
|
1085
1274
|
case 0:
|
|
1086
|
-
Demo = /*#__PURE__*/function (
|
|
1087
|
-
_inheritsLoose(Demo,
|
|
1275
|
+
Demo = /*#__PURE__*/function (_Component28) {
|
|
1276
|
+
_inheritsLoose(Demo, _Component28);
|
|
1088
1277
|
function Demo() {
|
|
1089
|
-
var
|
|
1090
|
-
var
|
|
1091
|
-
for (var
|
|
1092
|
-
args[
|
|
1278
|
+
var _context55;
|
|
1279
|
+
var _this28;
|
|
1280
|
+
for (var _len28 = arguments.length, args = new Array(_len28), _key28 = 0; _key28 < _len28; _key28++) {
|
|
1281
|
+
args[_key28] = arguments[_key28];
|
|
1093
1282
|
}
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
return
|
|
1283
|
+
_this28 = _Component28.call.apply(_Component28, _concatInstanceProperty(_context55 = [this]).call(_context55, args)) || this;
|
|
1284
|
+
_this28.Media = Media;
|
|
1285
|
+
return _this28;
|
|
1097
1286
|
}
|
|
1098
1287
|
return Demo;
|
|
1099
1288
|
}(Component);
|
|
1100
1289
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"empty-loading\" type=\"image\" status=\"loading\" src=\"https://example.com/loading.png\">\n <b:loading>\n <span v-if={false} class=\"empty-loading-slot\">loading</span>\n </b:loading>\n </Media>\n <Media className=\"empty-error\" type=\"image\" status=\"error\" src=\"https://example.com/error.png\">\n <b:error>\n <span v-if={false} class=\"empty-error-slot\">error</span>\n </b:error>\n </Media>\n <Media className=\"empty-mask\" type=\"image\" status=\"done\" src=\"https://example.com/cover.png\">\n <b:mask>\n <button v-if={false} class=\"empty-mask-slot\" type=\"button\">open</button>\n </b:mask>\n </Media>\n </div>\n ";
|
|
1101
|
-
|
|
1290
|
+
_mount28 = mount(Demo), element = _mount28[1];
|
|
1102
1291
|
loading = element.querySelector('.empty-loading');
|
|
1103
1292
|
error = element.querySelector('.empty-error');
|
|
1104
1293
|
mask = element.querySelector('.empty-mask');
|
|
@@ -1113,32 +1302,32 @@ describe('Media', function () {
|
|
|
1113
1302
|
expect(mask.querySelector('.k-media-preview-trigger')).not.to.eql(null);
|
|
1114
1303
|
case 15:
|
|
1115
1304
|
case "end":
|
|
1116
|
-
return
|
|
1305
|
+
return _context56.stop();
|
|
1117
1306
|
}
|
|
1118
|
-
},
|
|
1307
|
+
}, _callee28);
|
|
1119
1308
|
})));
|
|
1120
1309
|
// 图片/视频/音频 error 展示居中的灰色类型图标,不展示默认失败文案。
|
|
1121
|
-
it('should render centered gray media icons for failed media cards', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1122
|
-
var Demo,
|
|
1123
|
-
return _regeneratorRuntime.wrap(function
|
|
1124
|
-
while (1) switch (
|
|
1310
|
+
it('should render centered gray media icons for failed media cards', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee29() {
|
|
1311
|
+
var Demo, _mount29, element, image, imageCompact, video, audio, mini, imageIcon, compactIcon, videoIcon, audioIcon, miniIcon;
|
|
1312
|
+
return _regeneratorRuntime.wrap(function _callee29$(_context58) {
|
|
1313
|
+
while (1) switch (_context58.prev = _context58.next) {
|
|
1125
1314
|
case 0:
|
|
1126
|
-
Demo = /*#__PURE__*/function (
|
|
1127
|
-
_inheritsLoose(Demo,
|
|
1315
|
+
Demo = /*#__PURE__*/function (_Component29) {
|
|
1316
|
+
_inheritsLoose(Demo, _Component29);
|
|
1128
1317
|
function Demo() {
|
|
1129
|
-
var
|
|
1130
|
-
var
|
|
1131
|
-
for (var
|
|
1132
|
-
args[
|
|
1318
|
+
var _context57;
|
|
1319
|
+
var _this29;
|
|
1320
|
+
for (var _len29 = arguments.length, args = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {
|
|
1321
|
+
args[_key29] = arguments[_key29];
|
|
1133
1322
|
}
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
return
|
|
1323
|
+
_this29 = _Component29.call.apply(_Component29, _concatInstanceProperty(_context57 = [this]).call(_context57, args)) || this;
|
|
1324
|
+
_this29.Media = Media;
|
|
1325
|
+
return _this29;
|
|
1137
1326
|
}
|
|
1138
1327
|
return Demo;
|
|
1139
1328
|
}(Component);
|
|
1140
1329
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"image-error\" type=\"image\" status=\"error\" src=\"https://example.com/error.png\" />\n <Media className=\"image-error-compact\" type=\"image\" width={20} height={28} status=\"error\" src=\"https://example.com/error.png\" />\n <Media className=\"video-error\" type=\"video\" status=\"error\" src=\"https://example.com/error.mp4\" />\n <Media className=\"audio-error\" type=\"audio\" status=\"error\" src=\"https://example.com/error.mp3\" />\n <Media className=\"audio-error-mini\" type=\"audio\" size=\"mini\" status=\"error\" src=\"https://example.com/error.mp3\" />\n </div>\n ";
|
|
1141
|
-
|
|
1330
|
+
_mount29 = mount(Demo), element = _mount29[1];
|
|
1142
1331
|
image = element.querySelector('.image-error');
|
|
1143
1332
|
imageCompact = element.querySelector('.image-error-compact');
|
|
1144
1333
|
video = element.querySelector('.video-error');
|
|
@@ -1166,32 +1355,32 @@ describe('Media', function () {
|
|
|
1166
1355
|
expect(element.querySelector('.k-media-status-layer')).to.eql(null);
|
|
1167
1356
|
case 28:
|
|
1168
1357
|
case "end":
|
|
1169
|
-
return
|
|
1358
|
+
return _context58.stop();
|
|
1170
1359
|
}
|
|
1171
|
-
},
|
|
1360
|
+
}, _callee29);
|
|
1172
1361
|
})));
|
|
1173
1362
|
// 名称 Tooltip 默认关闭,显式开启后图片/视频/音频缩略图 hover 时展示最大 160px 的名称。
|
|
1174
|
-
it('should hide media name tooltip by default and allow enabling it', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1175
|
-
var Demo,
|
|
1176
|
-
return _regeneratorRuntime.wrap(function
|
|
1177
|
-
while (1) switch (
|
|
1363
|
+
it('should hide media name tooltip by default and allow enabling it', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee30() {
|
|
1364
|
+
var Demo, _mount30, element, imageWithTooltip, videoWithTooltip, audioWithTooltip, withoutTooltip, imageTooltipTrigger, videoTooltipTrigger, audioTooltipTrigger, icon, content, name, videoPreviewTrigger;
|
|
1365
|
+
return _regeneratorRuntime.wrap(function _callee30$(_context60) {
|
|
1366
|
+
while (1) switch (_context60.prev = _context60.next) {
|
|
1178
1367
|
case 0:
|
|
1179
|
-
Demo = /*#__PURE__*/function (
|
|
1180
|
-
_inheritsLoose(Demo,
|
|
1368
|
+
Demo = /*#__PURE__*/function (_Component30) {
|
|
1369
|
+
_inheritsLoose(Demo, _Component30);
|
|
1181
1370
|
function Demo() {
|
|
1182
|
-
var
|
|
1183
|
-
var
|
|
1184
|
-
for (var
|
|
1185
|
-
args[
|
|
1371
|
+
var _context59;
|
|
1372
|
+
var _this30;
|
|
1373
|
+
for (var _len30 = arguments.length, args = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {
|
|
1374
|
+
args[_key30] = arguments[_key30];
|
|
1186
1375
|
}
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
return
|
|
1376
|
+
_this30 = _Component30.call.apply(_Component30, _concatInstanceProperty(_context59 = [this]).call(_context59, args)) || this;
|
|
1377
|
+
_this30.Media = Media;
|
|
1378
|
+
return _this30;
|
|
1190
1379
|
}
|
|
1191
1380
|
return Demo;
|
|
1192
1381
|
}(Component);
|
|
1193
1382
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"image-with-tooltip\"\n name=\"\u5F88\u957F\u5F88\u957F\u5F88\u957F\u5F88\u957F\u5F88\u957F\u5F88\u957F\u7684\u56FE\u7247\u540D\u79F0.png\"\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n showNameTooltip={true}\n nameTooltipProps={{position: 'bottom'}}\n />\n <Media\n className=\"video-with-tooltip\"\n name=\"\u4EA7\u54C1\u9884\u544A.mp4\"\n type=\"video\"\n status=\"done\"\n src=\"https://example.com/demo.mp4\"\n showNameTooltip={true}\n />\n <Media\n className=\"audio-with-tooltip\"\n name=\"\u5F88\u957F\u5F88\u957F\u5F88\u957F\u5F88\u957F\u5F88\u957F\u5F88\u957F\u7684\u97F3\u9891\u540D\u79F0.mp3\"\n type=\"audio\"\n status=\"done\"\n src=\"https://example.com/demo.mp3\"\n showNameTooltip={true}\n />\n <Media\n className=\"audio-without-tooltip\"\n name=\"\u666E\u901A\u97F3\u9891.mp3\"\n type=\"audio\"\n status=\"done\"\n src=\"https://example.com/normal.mp3\"\n showNameTooltip={false}\n />\n </div>\n ";
|
|
1194
|
-
|
|
1383
|
+
_mount30 = mount(Demo), element = _mount30[1];
|
|
1195
1384
|
imageWithTooltip = element.querySelector('.image-with-tooltip');
|
|
1196
1385
|
videoWithTooltip = element.querySelector('.video-with-tooltip');
|
|
1197
1386
|
audioWithTooltip = element.querySelector('.audio-with-tooltip');
|
|
@@ -1212,7 +1401,7 @@ describe('Media', function () {
|
|
|
1212
1401
|
expect(getComputedStyle(icon).width).to.eql('32px');
|
|
1213
1402
|
expect(getComputedStyle(icon).height).to.eql('32px');
|
|
1214
1403
|
dispatchEvent(imageTooltipTrigger, 'mouseenter');
|
|
1215
|
-
|
|
1404
|
+
_context60.next = 25;
|
|
1216
1405
|
return wait(0);
|
|
1217
1406
|
case 25:
|
|
1218
1407
|
content = getElement('.k-tooltip-content');
|
|
@@ -1224,23 +1413,23 @@ describe('Media', function () {
|
|
|
1224
1413
|
expect(getComputedStyle(name).textOverflow).to.eql('ellipsis');
|
|
1225
1414
|
expect(content.querySelector('.k-tooltip-arrow').className).to.contain('k-top');
|
|
1226
1415
|
dispatchEvent(imageTooltipTrigger, 'mouseleave');
|
|
1227
|
-
|
|
1416
|
+
_context60.next = 36;
|
|
1228
1417
|
return wait(0);
|
|
1229
1418
|
case 36:
|
|
1230
1419
|
videoPreviewTrigger = videoWithTooltip.querySelector('.k-media-video-preview-trigger');
|
|
1231
1420
|
dispatchEvent(videoPreviewTrigger, 'mouseenter');
|
|
1232
|
-
|
|
1421
|
+
_context60.next = 40;
|
|
1233
1422
|
return wait(0);
|
|
1234
1423
|
case 40:
|
|
1235
1424
|
content = getElement('.k-tooltip-content');
|
|
1236
1425
|
expect(content.textContent).to.contain('产品预告.mp4');
|
|
1237
1426
|
expect(content.className).to.contain('k-light');
|
|
1238
1427
|
dispatchEvent(videoPreviewTrigger, 'mouseleave');
|
|
1239
|
-
|
|
1428
|
+
_context60.next = 46;
|
|
1240
1429
|
return wait(0);
|
|
1241
1430
|
case 46:
|
|
1242
1431
|
dispatchEvent(audioTooltipTrigger, 'mouseenter');
|
|
1243
|
-
|
|
1432
|
+
_context60.next = 49;
|
|
1244
1433
|
return wait(0);
|
|
1245
1434
|
case 49:
|
|
1246
1435
|
content = getElement('.k-tooltip-content');
|
|
@@ -1249,32 +1438,32 @@ describe('Media', function () {
|
|
|
1249
1438
|
expect(name.style.maxWidth).to.eql('160px');
|
|
1250
1439
|
case 53:
|
|
1251
1440
|
case "end":
|
|
1252
|
-
return
|
|
1441
|
+
return _context60.stop();
|
|
1253
1442
|
}
|
|
1254
|
-
},
|
|
1443
|
+
}, _callee30);
|
|
1255
1444
|
})));
|
|
1256
1445
|
// size 支持预设尺寸和自定义正方形尺寸。
|
|
1257
|
-
it('should support named and custom sizes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1258
|
-
var Demo,
|
|
1259
|
-
return _regeneratorRuntime.wrap(function
|
|
1260
|
-
while (1) switch (
|
|
1446
|
+
it('should support named and custom sizes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee31() {
|
|
1447
|
+
var Demo, _mount31, element, small, custom;
|
|
1448
|
+
return _regeneratorRuntime.wrap(function _callee31$(_context62) {
|
|
1449
|
+
while (1) switch (_context62.prev = _context62.next) {
|
|
1261
1450
|
case 0:
|
|
1262
|
-
Demo = /*#__PURE__*/function (
|
|
1263
|
-
_inheritsLoose(Demo,
|
|
1451
|
+
Demo = /*#__PURE__*/function (_Component31) {
|
|
1452
|
+
_inheritsLoose(Demo, _Component31);
|
|
1264
1453
|
function Demo() {
|
|
1265
|
-
var
|
|
1266
|
-
var
|
|
1267
|
-
for (var
|
|
1268
|
-
args[
|
|
1454
|
+
var _context61;
|
|
1455
|
+
var _this31;
|
|
1456
|
+
for (var _len31 = arguments.length, args = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {
|
|
1457
|
+
args[_key31] = arguments[_key31];
|
|
1269
1458
|
}
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
return
|
|
1459
|
+
_this31 = _Component31.call.apply(_Component31, _concatInstanceProperty(_context61 = [this]).call(_context61, args)) || this;
|
|
1460
|
+
_this31.Media = Media;
|
|
1461
|
+
return _this31;
|
|
1273
1462
|
}
|
|
1274
1463
|
return Demo;
|
|
1275
1464
|
}(Component);
|
|
1276
1465
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"small-media\" type=\"image\" size=\"small\" src=\"https://example.com/a.png\" />\n <Media className=\"custom-media\" type=\"image\" size={88} src=\"https://example.com/b.png\" />\n </div>\n ";
|
|
1277
|
-
|
|
1466
|
+
_mount31 = mount(Demo), element = _mount31[1];
|
|
1278
1467
|
small = element.querySelector('.small-media');
|
|
1279
1468
|
custom = element.querySelector('.custom-media');
|
|
1280
1469
|
expect(small.className).to.contain('k-media-small');
|
|
@@ -1282,32 +1471,32 @@ describe('Media', function () {
|
|
|
1282
1471
|
expect(custom.style.height).to.eql('88px');
|
|
1283
1472
|
case 8:
|
|
1284
1473
|
case "end":
|
|
1285
|
-
return
|
|
1474
|
+
return _context62.stop();
|
|
1286
1475
|
}
|
|
1287
|
-
},
|
|
1476
|
+
}, _callee31);
|
|
1288
1477
|
})));
|
|
1289
1478
|
// width/height 单边传入时镜像另一边,双边传入时各自生效。
|
|
1290
|
-
it('should mirror single width or height and respect explicit dimensions', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1291
|
-
var Demo,
|
|
1292
|
-
return _regeneratorRuntime.wrap(function
|
|
1293
|
-
while (1) switch (
|
|
1479
|
+
it('should mirror single width or height and respect explicit dimensions', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee32() {
|
|
1480
|
+
var Demo, _mount32, element, widthOnly, heightOnly, both;
|
|
1481
|
+
return _regeneratorRuntime.wrap(function _callee32$(_context64) {
|
|
1482
|
+
while (1) switch (_context64.prev = _context64.next) {
|
|
1294
1483
|
case 0:
|
|
1295
|
-
Demo = /*#__PURE__*/function (
|
|
1296
|
-
_inheritsLoose(Demo,
|
|
1484
|
+
Demo = /*#__PURE__*/function (_Component32) {
|
|
1485
|
+
_inheritsLoose(Demo, _Component32);
|
|
1297
1486
|
function Demo() {
|
|
1298
|
-
var
|
|
1299
|
-
var
|
|
1300
|
-
for (var
|
|
1301
|
-
args[
|
|
1487
|
+
var _context63;
|
|
1488
|
+
var _this32;
|
|
1489
|
+
for (var _len32 = arguments.length, args = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {
|
|
1490
|
+
args[_key32] = arguments[_key32];
|
|
1302
1491
|
}
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
return
|
|
1492
|
+
_this32 = _Component32.call.apply(_Component32, _concatInstanceProperty(_context63 = [this]).call(_context63, args)) || this;
|
|
1493
|
+
_this32.Media = Media;
|
|
1494
|
+
return _this32;
|
|
1306
1495
|
}
|
|
1307
1496
|
return Demo;
|
|
1308
1497
|
}(Component);
|
|
1309
1498
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media className=\"width-only\" type=\"image\" width={120} src=\"https://example.com/a.png\" />\n <Media className=\"height-only\" type=\"image\" height=\"48px\" src=\"https://example.com/b.png\" />\n <Media className=\"both-dimensions\" type=\"image\" width={120} height={80} src=\"https://example.com/c.png\" />\n </div>\n ";
|
|
1310
|
-
|
|
1499
|
+
_mount32 = mount(Demo), element = _mount32[1];
|
|
1311
1500
|
widthOnly = element.querySelector('.width-only');
|
|
1312
1501
|
heightOnly = element.querySelector('.height-only');
|
|
1313
1502
|
both = element.querySelector('.both-dimensions');
|
|
@@ -1319,68 +1508,68 @@ describe('Media', function () {
|
|
|
1319
1508
|
expect(both.style.height).to.eql('80px');
|
|
1320
1509
|
case 12:
|
|
1321
1510
|
case "end":
|
|
1322
|
-
return
|
|
1511
|
+
return _context64.stop();
|
|
1323
1512
|
}
|
|
1324
|
-
},
|
|
1513
|
+
}, _callee32);
|
|
1325
1514
|
})));
|
|
1326
1515
|
// 根节点透传 class/style/data/aria 等通用属性。
|
|
1327
|
-
it('should pass rest props to root element', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1328
|
-
var Demo,
|
|
1329
|
-
return _regeneratorRuntime.wrap(function
|
|
1330
|
-
while (1) switch (
|
|
1516
|
+
it('should pass rest props to root element', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee33() {
|
|
1517
|
+
var Demo, _mount33, element, media;
|
|
1518
|
+
return _regeneratorRuntime.wrap(function _callee33$(_context66) {
|
|
1519
|
+
while (1) switch (_context66.prev = _context66.next) {
|
|
1331
1520
|
case 0:
|
|
1332
|
-
Demo = /*#__PURE__*/function (
|
|
1333
|
-
_inheritsLoose(Demo,
|
|
1521
|
+
Demo = /*#__PURE__*/function (_Component33) {
|
|
1522
|
+
_inheritsLoose(Demo, _Component33);
|
|
1334
1523
|
function Demo() {
|
|
1335
|
-
var
|
|
1336
|
-
var
|
|
1337
|
-
for (var
|
|
1338
|
-
args[
|
|
1524
|
+
var _context65;
|
|
1525
|
+
var _this33;
|
|
1526
|
+
for (var _len33 = arguments.length, args = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {
|
|
1527
|
+
args[_key33] = arguments[_key33];
|
|
1339
1528
|
}
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
return
|
|
1529
|
+
_this33 = _Component33.call.apply(_Component33, _concatInstanceProperty(_context65 = [this]).call(_context65, args)) || this;
|
|
1530
|
+
_this33.Media = Media;
|
|
1531
|
+
return _this33;
|
|
1343
1532
|
}
|
|
1344
1533
|
return Demo;
|
|
1345
1534
|
}(Component);
|
|
1346
1535
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n className=\"rest-media\"\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n style={{marginTop: '3px'}}\n data-id=\"media\"\n aria-label=\"\u5A92\u4F53\u7F29\u7565\u56FE\"\n />\n </div>\n ";
|
|
1347
|
-
|
|
1536
|
+
_mount33 = mount(Demo), element = _mount33[1];
|
|
1348
1537
|
media = element.querySelector('.rest-media');
|
|
1349
1538
|
expect(media.style.marginTop).to.eql('3px');
|
|
1350
1539
|
expect(media.getAttribute('data-id')).to.eql('media');
|
|
1351
1540
|
expect(media.getAttribute('aria-label')).to.eql('媒体缩略图');
|
|
1352
1541
|
case 7:
|
|
1353
1542
|
case "end":
|
|
1354
|
-
return
|
|
1543
|
+
return _context66.stop();
|
|
1355
1544
|
}
|
|
1356
|
-
},
|
|
1545
|
+
}, _callee33);
|
|
1357
1546
|
})));
|
|
1358
1547
|
// 单项预览可打开并通过关闭按钮关闭。
|
|
1359
|
-
it('should open and close standalone preview', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1548
|
+
it('should open and close standalone preview', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee34() {
|
|
1360
1549
|
var _getElement3;
|
|
1361
|
-
var Demo,
|
|
1362
|
-
return _regeneratorRuntime.wrap(function
|
|
1363
|
-
while (1) switch (
|
|
1550
|
+
var Demo, _mount34, element, trigger, viewer;
|
|
1551
|
+
return _regeneratorRuntime.wrap(function _callee34$(_context68) {
|
|
1552
|
+
while (1) switch (_context68.prev = _context68.next) {
|
|
1364
1553
|
case 0:
|
|
1365
|
-
Demo = /*#__PURE__*/function (
|
|
1366
|
-
_inheritsLoose(Demo,
|
|
1554
|
+
Demo = /*#__PURE__*/function (_Component34) {
|
|
1555
|
+
_inheritsLoose(Demo, _Component34);
|
|
1367
1556
|
function Demo() {
|
|
1368
|
-
var
|
|
1369
|
-
var
|
|
1370
|
-
for (var
|
|
1371
|
-
args[
|
|
1557
|
+
var _context67;
|
|
1558
|
+
var _this34;
|
|
1559
|
+
for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {
|
|
1560
|
+
args[_key34] = arguments[_key34];
|
|
1372
1561
|
}
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
return
|
|
1562
|
+
_this34 = _Component34.call.apply(_Component34, _concatInstanceProperty(_context67 = [this]).call(_context67, args)) || this;
|
|
1563
|
+
_this34.Media = Media;
|
|
1564
|
+
return _this34;
|
|
1376
1565
|
}
|
|
1377
1566
|
return Demo;
|
|
1378
1567
|
}(Component);
|
|
1379
1568
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n name=\"\u5C01\u9762\u56FE\"\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n />\n </div>\n ";
|
|
1380
|
-
|
|
1569
|
+
_mount34 = mount(Demo), element = _mount34[1];
|
|
1381
1570
|
trigger = element.querySelector('.k-media-preview-trigger');
|
|
1382
1571
|
trigger.click();
|
|
1383
|
-
|
|
1572
|
+
_context68.next = 7;
|
|
1384
1573
|
return wait();
|
|
1385
1574
|
case 7:
|
|
1386
1575
|
viewer = getElement('.k-media-viewer');
|
|
@@ -1389,76 +1578,76 @@ describe('Media', function () {
|
|
|
1389
1578
|
expect(getComputedStyle(viewer).display).to.eql('flex');
|
|
1390
1579
|
expect((_getElement3 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement3.textContent).to.contain('封面图');
|
|
1391
1580
|
getElement('.k-media-viewer-close').click();
|
|
1392
|
-
|
|
1581
|
+
_context68.next = 15;
|
|
1393
1582
|
return wait(400);
|
|
1394
1583
|
case 15:
|
|
1395
1584
|
expectViewerClosed();
|
|
1396
1585
|
case 16:
|
|
1397
1586
|
case "end":
|
|
1398
|
-
return
|
|
1587
|
+
return _context68.stop();
|
|
1399
1588
|
}
|
|
1400
|
-
},
|
|
1589
|
+
}, _callee34);
|
|
1401
1590
|
})));
|
|
1402
1591
|
// 单项预览支持挂载到指定 Portal 容器。
|
|
1403
|
-
it('should mount standalone preview into custom container', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1404
|
-
var Demo,
|
|
1405
|
-
return _regeneratorRuntime.wrap(function
|
|
1406
|
-
while (1) switch (
|
|
1592
|
+
it('should mount standalone preview into custom container', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee35() {
|
|
1593
|
+
var Demo, _mount35, element, container;
|
|
1594
|
+
return _regeneratorRuntime.wrap(function _callee35$(_context70) {
|
|
1595
|
+
while (1) switch (_context70.prev = _context70.next) {
|
|
1407
1596
|
case 0:
|
|
1408
|
-
Demo = /*#__PURE__*/function (
|
|
1409
|
-
_inheritsLoose(Demo,
|
|
1597
|
+
Demo = /*#__PURE__*/function (_Component35) {
|
|
1598
|
+
_inheritsLoose(Demo, _Component35);
|
|
1410
1599
|
function Demo() {
|
|
1411
|
-
var
|
|
1412
|
-
var
|
|
1413
|
-
for (var
|
|
1414
|
-
args[
|
|
1600
|
+
var _context69;
|
|
1601
|
+
var _this35;
|
|
1602
|
+
for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {
|
|
1603
|
+
args[_key35] = arguments[_key35];
|
|
1415
1604
|
}
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
return
|
|
1605
|
+
_this35 = _Component35.call.apply(_Component35, _concatInstanceProperty(_context69 = [this]).call(_context69, args)) || this;
|
|
1606
|
+
_this35.Media = Media;
|
|
1607
|
+
return _this35;
|
|
1419
1608
|
}
|
|
1420
1609
|
return Demo;
|
|
1421
1610
|
}(Component);
|
|
1422
1611
|
Demo.template = "\n const { Media } = this;\n <div>\n <div id=\"media-preview-container\"></div>\n <Media\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n container=\"#media-preview-container\"\n />\n </div>\n ";
|
|
1423
|
-
|
|
1612
|
+
_mount35 = mount(Demo), element = _mount35[1];
|
|
1424
1613
|
element.querySelector('.k-media-preview-trigger').click();
|
|
1425
|
-
|
|
1614
|
+
_context70.next = 6;
|
|
1426
1615
|
return wait();
|
|
1427
1616
|
case 6:
|
|
1428
1617
|
container = element.querySelector('#media-preview-container');
|
|
1429
1618
|
expect(container.querySelector('.k-media-viewer')).not.to.eql(null);
|
|
1430
1619
|
case 8:
|
|
1431
1620
|
case "end":
|
|
1432
|
-
return
|
|
1621
|
+
return _context70.stop();
|
|
1433
1622
|
}
|
|
1434
|
-
},
|
|
1623
|
+
}, _callee35);
|
|
1435
1624
|
})));
|
|
1436
1625
|
// 点击真实预览内容不关闭,点击内容空白区或遮罩关闭。
|
|
1437
|
-
it('should close standalone preview on mask click only', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1438
|
-
var Demo,
|
|
1439
|
-
return _regeneratorRuntime.wrap(function
|
|
1440
|
-
while (1) switch (
|
|
1626
|
+
it('should close standalone preview on mask click only', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee36() {
|
|
1627
|
+
var Demo, _mount36, element, previewTrigger, stage, content, viewer;
|
|
1628
|
+
return _regeneratorRuntime.wrap(function _callee36$(_context72) {
|
|
1629
|
+
while (1) switch (_context72.prev = _context72.next) {
|
|
1441
1630
|
case 0:
|
|
1442
|
-
Demo = /*#__PURE__*/function (
|
|
1443
|
-
_inheritsLoose(Demo,
|
|
1631
|
+
Demo = /*#__PURE__*/function (_Component36) {
|
|
1632
|
+
_inheritsLoose(Demo, _Component36);
|
|
1444
1633
|
function Demo() {
|
|
1445
|
-
var
|
|
1446
|
-
var
|
|
1447
|
-
for (var
|
|
1448
|
-
args[
|
|
1634
|
+
var _context71;
|
|
1635
|
+
var _this36;
|
|
1636
|
+
for (var _len36 = arguments.length, args = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {
|
|
1637
|
+
args[_key36] = arguments[_key36];
|
|
1449
1638
|
}
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
return
|
|
1639
|
+
_this36 = _Component36.call.apply(_Component36, _concatInstanceProperty(_context71 = [this]).call(_context71, args)) || this;
|
|
1640
|
+
_this36.Media = Media;
|
|
1641
|
+
return _this36;
|
|
1453
1642
|
}
|
|
1454
1643
|
return Demo;
|
|
1455
1644
|
}(Component);
|
|
1456
1645
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n type=\"image\"\n status=\"done\"\n src=\"https://example.com/cover.png\"\n />\n </div>\n ";
|
|
1457
|
-
|
|
1646
|
+
_mount36 = mount(Demo), element = _mount36[1];
|
|
1458
1647
|
previewTrigger = element.querySelector('.k-media-preview-trigger');
|
|
1459
1648
|
expect(previewTrigger).to.exist;
|
|
1460
1649
|
previewTrigger.click();
|
|
1461
|
-
|
|
1650
|
+
_context72.next = 8;
|
|
1462
1651
|
return wait(60);
|
|
1463
1652
|
case 8:
|
|
1464
1653
|
stage = getElement('.k-media-viewer-stage');
|
|
@@ -1466,48 +1655,48 @@ describe('Media', function () {
|
|
|
1466
1655
|
content = stage.querySelector('.k-media-viewer-image, .k-media-viewer-video, .k-media-viewer-audio');
|
|
1467
1656
|
expect(content).to.exist;
|
|
1468
1657
|
content.click();
|
|
1469
|
-
|
|
1658
|
+
_context72.next = 15;
|
|
1470
1659
|
return wait();
|
|
1471
1660
|
case 15:
|
|
1472
1661
|
expect(getElement('.k-media-viewer')).not.to.eql(null);
|
|
1473
1662
|
viewer = getElement('.k-media-viewer');
|
|
1474
1663
|
expect(viewer).to.exist;
|
|
1475
1664
|
viewer.click();
|
|
1476
|
-
|
|
1665
|
+
_context72.next = 21;
|
|
1477
1666
|
return wait(400);
|
|
1478
1667
|
case 21:
|
|
1479
1668
|
expectViewerClosed();
|
|
1480
1669
|
case 22:
|
|
1481
1670
|
case "end":
|
|
1482
|
-
return
|
|
1671
|
+
return _context72.stop();
|
|
1483
1672
|
}
|
|
1484
|
-
},
|
|
1673
|
+
}, _callee36);
|
|
1485
1674
|
})));
|
|
1486
1675
|
// 预览层关闭、上一张、下一张按钮带有无障碍文案。
|
|
1487
|
-
it('should render accessibility labels for viewer buttons', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1488
|
-
var Demo,
|
|
1489
|
-
return _regeneratorRuntime.wrap(function
|
|
1490
|
-
while (1) switch (
|
|
1676
|
+
it('should render accessibility labels for viewer buttons', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee37() {
|
|
1677
|
+
var Demo, _mount37, element;
|
|
1678
|
+
return _regeneratorRuntime.wrap(function _callee37$(_context74) {
|
|
1679
|
+
while (1) switch (_context74.prev = _context74.next) {
|
|
1491
1680
|
case 0:
|
|
1492
|
-
Demo = /*#__PURE__*/function (
|
|
1493
|
-
_inheritsLoose(Demo,
|
|
1681
|
+
Demo = /*#__PURE__*/function (_Component37) {
|
|
1682
|
+
_inheritsLoose(Demo, _Component37);
|
|
1494
1683
|
function Demo() {
|
|
1495
|
-
var
|
|
1496
|
-
var
|
|
1497
|
-
for (var
|
|
1498
|
-
args[
|
|
1684
|
+
var _context73;
|
|
1685
|
+
var _this37;
|
|
1686
|
+
for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {
|
|
1687
|
+
args[_key37] = arguments[_key37];
|
|
1499
1688
|
}
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
return
|
|
1689
|
+
_this37 = _Component37.call.apply(_Component37, _concatInstanceProperty(_context73 = [this]).call(_context73, args)) || this;
|
|
1690
|
+
_this37.Media = Media;
|
|
1691
|
+
_this37.MediaGroup = MediaGroup;
|
|
1692
|
+
return _this37;
|
|
1504
1693
|
}
|
|
1505
1694
|
return Demo;
|
|
1506
1695
|
}(Component);
|
|
1507
1696
|
Demo.template = "\n const { Media, MediaGroup } = this;\n <MediaGroup>\n <Media name=\"\u7B2C\u4E00\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/1.png\" />\n <Media name=\"\u7B2C\u4E8C\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/2.png\" />\n </MediaGroup>\n ";
|
|
1508
|
-
|
|
1697
|
+
_mount37 = mount(Demo), element = _mount37[1];
|
|
1509
1698
|
element.querySelector('.k-media-preview-trigger').click();
|
|
1510
|
-
|
|
1699
|
+
_context74.next = 6;
|
|
1511
1700
|
return wait();
|
|
1512
1701
|
case 6:
|
|
1513
1702
|
expect(getViewerButton('.k-media-viewer-close').getAttribute('aria-label')).to.eql('关闭预览');
|
|
@@ -1518,75 +1707,75 @@ describe('Media', function () {
|
|
|
1518
1707
|
expect(getViewerButton('.k-media-viewer-next').title).to.eql('下一个');
|
|
1519
1708
|
case 12:
|
|
1520
1709
|
case "end":
|
|
1521
|
-
return
|
|
1710
|
+
return _context74.stop();
|
|
1522
1711
|
}
|
|
1523
|
-
},
|
|
1712
|
+
}, _callee37);
|
|
1524
1713
|
})));
|
|
1525
1714
|
// 音频预览复用缩略图中的默认音频封面素材。
|
|
1526
|
-
it('should use the same audio asset in standalone preview', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1527
|
-
var Demo,
|
|
1528
|
-
return _regeneratorRuntime.wrap(function
|
|
1529
|
-
while (1) switch (
|
|
1715
|
+
it('should use the same audio asset in standalone preview', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee38() {
|
|
1716
|
+
var Demo, _mount38, element, trigger, cover;
|
|
1717
|
+
return _regeneratorRuntime.wrap(function _callee38$(_context76) {
|
|
1718
|
+
while (1) switch (_context76.prev = _context76.next) {
|
|
1530
1719
|
case 0:
|
|
1531
|
-
Demo = /*#__PURE__*/function (
|
|
1532
|
-
_inheritsLoose(Demo,
|
|
1720
|
+
Demo = /*#__PURE__*/function (_Component38) {
|
|
1721
|
+
_inheritsLoose(Demo, _Component38);
|
|
1533
1722
|
function Demo() {
|
|
1534
|
-
var
|
|
1535
|
-
var
|
|
1536
|
-
for (var
|
|
1537
|
-
args[
|
|
1723
|
+
var _context75;
|
|
1724
|
+
var _this38;
|
|
1725
|
+
for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {
|
|
1726
|
+
args[_key38] = arguments[_key38];
|
|
1538
1727
|
}
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
return
|
|
1728
|
+
_this38 = _Component38.call.apply(_Component38, _concatInstanceProperty(_context75 = [this]).call(_context75, args)) || this;
|
|
1729
|
+
_this38.Media = Media;
|
|
1730
|
+
return _this38;
|
|
1542
1731
|
}
|
|
1543
1732
|
return Demo;
|
|
1544
1733
|
}(Component);
|
|
1545
1734
|
Demo.template = "\n const { Media } = this;\n <div>\n <Media\n name=\"\u64AD\u5BA2\u7247\u6BB5.mp3\"\n type=\"audio\"\n status=\"done\"\n src=\"https://example.com/demo.mp3\"\n />\n </div>\n ";
|
|
1546
|
-
|
|
1735
|
+
_mount38 = mount(Demo), element = _mount38[1];
|
|
1547
1736
|
trigger = element.querySelector('.k-media-preview-trigger');
|
|
1548
1737
|
trigger.click();
|
|
1549
|
-
|
|
1738
|
+
_context76.next = 7;
|
|
1550
1739
|
return wait();
|
|
1551
1740
|
case 7:
|
|
1552
1741
|
cover = getElement('.k-media-viewer-audio-cover-image');
|
|
1553
1742
|
expect(cover).not.to.eql(null);
|
|
1554
1743
|
expect(cover.src).to.contain('data:image/svg+xml');
|
|
1555
1744
|
getElement('.k-media-viewer-close').click();
|
|
1556
|
-
|
|
1745
|
+
_context76.next = 13;
|
|
1557
1746
|
return wait(400);
|
|
1558
1747
|
case 13:
|
|
1559
1748
|
expectViewerClosed();
|
|
1560
1749
|
case 14:
|
|
1561
1750
|
case "end":
|
|
1562
|
-
return
|
|
1751
|
+
return _context76.stop();
|
|
1563
1752
|
}
|
|
1564
|
-
},
|
|
1753
|
+
}, _callee38);
|
|
1565
1754
|
})));
|
|
1566
1755
|
// MediaGroup 支持前后切换,并在首尾正确禁用按钮。
|
|
1567
|
-
it('should switch preview items in media group and disable boundary buttons', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1756
|
+
it('should switch preview items in media group and disable boundary buttons', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee39() {
|
|
1568
1757
|
var _getElement4, _getElement5, _getElement6, _getElement7, _getElement8, _getElement9, _getElement10, _getElement11;
|
|
1569
|
-
var Demo,
|
|
1570
|
-
return _regeneratorRuntime.wrap(function
|
|
1571
|
-
while (1) switch (
|
|
1758
|
+
var Demo, _mount39, element, group, firstMedia, triggers;
|
|
1759
|
+
return _regeneratorRuntime.wrap(function _callee39$(_context78) {
|
|
1760
|
+
while (1) switch (_context78.prev = _context78.next) {
|
|
1572
1761
|
case 0:
|
|
1573
|
-
Demo = /*#__PURE__*/function (
|
|
1574
|
-
_inheritsLoose(Demo,
|
|
1762
|
+
Demo = /*#__PURE__*/function (_Component39) {
|
|
1763
|
+
_inheritsLoose(Demo, _Component39);
|
|
1575
1764
|
function Demo() {
|
|
1576
|
-
var
|
|
1577
|
-
var
|
|
1578
|
-
for (var
|
|
1579
|
-
args[
|
|
1765
|
+
var _context77;
|
|
1766
|
+
var _this39;
|
|
1767
|
+
for (var _len39 = arguments.length, args = new Array(_len39), _key39 = 0; _key39 < _len39; _key39++) {
|
|
1768
|
+
args[_key39] = arguments[_key39];
|
|
1580
1769
|
}
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
return
|
|
1770
|
+
_this39 = _Component39.call.apply(_Component39, _concatInstanceProperty(_context77 = [this]).call(_context77, args)) || this;
|
|
1771
|
+
_this39.Media = Media;
|
|
1772
|
+
_this39.MediaGroup = MediaGroup;
|
|
1773
|
+
return _this39;
|
|
1585
1774
|
}
|
|
1586
1775
|
return Demo;
|
|
1587
1776
|
}(Component);
|
|
1588
1777
|
Demo.template = "\n const { Media, MediaGroup } = this;\n <MediaGroup>\n <Media name=\"\u7B2C\u4E00\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/1.png\" />\n <Media name=\"\u7B2C\u4E8C\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/2.png\" />\n <Media name=\"\u7B2C\u4E09\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/3.png\" />\n </MediaGroup>\n ";
|
|
1589
|
-
|
|
1778
|
+
_mount39 = mount(Demo), element = _mount39[1];
|
|
1590
1779
|
group = getElement('.k-media-group');
|
|
1591
1780
|
firstMedia = element.querySelector('.k-media');
|
|
1592
1781
|
triggers = element.querySelectorAll('.k-media-preview-trigger');
|
|
@@ -1594,7 +1783,7 @@ describe('Media', function () {
|
|
|
1594
1783
|
expect(getComputedStyle(firstMedia).width).to.eql('64px');
|
|
1595
1784
|
expect(getComputedStyle(firstMedia).height).to.eql('64px');
|
|
1596
1785
|
triggers[0].click();
|
|
1597
|
-
|
|
1786
|
+
_context78.next = 12;
|
|
1598
1787
|
return wait();
|
|
1599
1788
|
case 12:
|
|
1600
1789
|
expect((_getElement4 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement4.textContent).to.contain('第一张');
|
|
@@ -1602,31 +1791,31 @@ describe('Media', function () {
|
|
|
1602
1791
|
expect(getViewerButton('.k-media-viewer-prev').disabled).to.eql(true);
|
|
1603
1792
|
expect(getViewerButton('.k-media-viewer-next').disabled).to.eql(false);
|
|
1604
1793
|
getViewerButton('.k-media-viewer-prev').click();
|
|
1605
|
-
|
|
1794
|
+
_context78.next = 19;
|
|
1606
1795
|
return wait();
|
|
1607
1796
|
case 19:
|
|
1608
1797
|
expect((_getElement6 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement6.textContent).to.contain('第一张');
|
|
1609
1798
|
getViewerButton('.k-media-viewer-next').click();
|
|
1610
|
-
|
|
1799
|
+
_context78.next = 23;
|
|
1611
1800
|
return wait();
|
|
1612
1801
|
case 23:
|
|
1613
1802
|
expect((_getElement7 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement7.textContent).to.contain('第二张');
|
|
1614
1803
|
expect(getViewerButton('.k-media-viewer-prev').disabled).to.eql(false);
|
|
1615
1804
|
expect(getViewerButton('.k-media-viewer-next').disabled).to.eql(false);
|
|
1616
1805
|
getViewerButton('.k-media-viewer-prev').click();
|
|
1617
|
-
|
|
1806
|
+
_context78.next = 29;
|
|
1618
1807
|
return wait();
|
|
1619
1808
|
case 29:
|
|
1620
1809
|
expect((_getElement8 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement8.textContent).to.contain('第一张');
|
|
1621
1810
|
expect(getViewerButton('.k-media-viewer-prev').disabled).to.eql(true);
|
|
1622
1811
|
getViewerButton('.k-media-viewer-next').click();
|
|
1623
|
-
|
|
1812
|
+
_context78.next = 34;
|
|
1624
1813
|
return wait();
|
|
1625
1814
|
case 34:
|
|
1626
1815
|
dispatchEvent(document, 'keydown', {
|
|
1627
1816
|
keyCode: 39
|
|
1628
1817
|
});
|
|
1629
|
-
|
|
1818
|
+
_context78.next = 37;
|
|
1630
1819
|
return wait();
|
|
1631
1820
|
case 37:
|
|
1632
1821
|
expect((_getElement9 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement9.textContent).to.contain('第三张');
|
|
@@ -1634,49 +1823,49 @@ describe('Media', function () {
|
|
|
1634
1823
|
expect(getViewerButton('.k-media-viewer-prev').disabled).to.eql(false);
|
|
1635
1824
|
expect(getViewerButton('.k-media-viewer-next').disabled).to.eql(true);
|
|
1636
1825
|
getViewerButton('.k-media-viewer-next').click();
|
|
1637
|
-
|
|
1826
|
+
_context78.next = 44;
|
|
1638
1827
|
return wait();
|
|
1639
1828
|
case 44:
|
|
1640
1829
|
expect((_getElement11 = getElement('.k-media-viewer-title')) == null ? void 0 : _getElement11.textContent).to.contain('第三张');
|
|
1641
1830
|
dispatchEvent(document, 'keydown', {
|
|
1642
1831
|
keyCode: 27
|
|
1643
1832
|
});
|
|
1644
|
-
|
|
1833
|
+
_context78.next = 48;
|
|
1645
1834
|
return wait(400);
|
|
1646
1835
|
case 48:
|
|
1647
1836
|
expectViewerClosed();
|
|
1648
1837
|
case 49:
|
|
1649
1838
|
case "end":
|
|
1650
|
-
return
|
|
1839
|
+
return _context78.stop();
|
|
1651
1840
|
}
|
|
1652
|
-
},
|
|
1841
|
+
}, _callee39);
|
|
1653
1842
|
})));
|
|
1654
1843
|
// MediaGroup 的预览层同样支持挂载到指定 Portal 容器。
|
|
1655
|
-
it('should mount media group preview into custom container', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
1844
|
+
it('should mount media group preview into custom container', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee40() {
|
|
1656
1845
|
var _container$querySelec;
|
|
1657
|
-
var Demo,
|
|
1658
|
-
return _regeneratorRuntime.wrap(function
|
|
1659
|
-
while (1) switch (
|
|
1846
|
+
var Demo, _mount40, element, container;
|
|
1847
|
+
return _regeneratorRuntime.wrap(function _callee40$(_context80) {
|
|
1848
|
+
while (1) switch (_context80.prev = _context80.next) {
|
|
1660
1849
|
case 0:
|
|
1661
|
-
Demo = /*#__PURE__*/function (
|
|
1662
|
-
_inheritsLoose(Demo,
|
|
1850
|
+
Demo = /*#__PURE__*/function (_Component40) {
|
|
1851
|
+
_inheritsLoose(Demo, _Component40);
|
|
1663
1852
|
function Demo() {
|
|
1664
|
-
var
|
|
1665
|
-
var
|
|
1666
|
-
for (var
|
|
1667
|
-
args[
|
|
1853
|
+
var _context79;
|
|
1854
|
+
var _this40;
|
|
1855
|
+
for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {
|
|
1856
|
+
args[_key40] = arguments[_key40];
|
|
1668
1857
|
}
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
return
|
|
1858
|
+
_this40 = _Component40.call.apply(_Component40, _concatInstanceProperty(_context79 = [this]).call(_context79, args)) || this;
|
|
1859
|
+
_this40.Media = Media;
|
|
1860
|
+
_this40.MediaGroup = MediaGroup;
|
|
1861
|
+
return _this40;
|
|
1673
1862
|
}
|
|
1674
1863
|
return Demo;
|
|
1675
1864
|
}(Component);
|
|
1676
1865
|
Demo.template = "\n const { Media, MediaGroup } = this;\n <div>\n <div id=\"media-group-preview-container\"></div>\n <MediaGroup container=\"#media-group-preview-container\">\n <Media name=\"\u7B2C\u4E00\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/1.png\" />\n <Media name=\"\u7B2C\u4E8C\u5F20\" type=\"image\" status=\"done\" src=\"https://example.com/2.png\" />\n </MediaGroup>\n </div>\n ";
|
|
1677
|
-
|
|
1866
|
+
_mount40 = mount(Demo), element = _mount40[1];
|
|
1678
1867
|
element.querySelector('.k-media-preview-trigger').click();
|
|
1679
|
-
|
|
1868
|
+
_context80.next = 6;
|
|
1680
1869
|
return wait();
|
|
1681
1870
|
case 6:
|
|
1682
1871
|
container = element.querySelector('#media-group-preview-container');
|
|
@@ -1684,8 +1873,8 @@ describe('Media', function () {
|
|
|
1684
1873
|
expect((_container$querySelec = container.querySelector('.k-media-viewer-counter')) == null ? void 0 : _container$querySelec.textContent).to.contain('1 / 2');
|
|
1685
1874
|
case 9:
|
|
1686
1875
|
case "end":
|
|
1687
|
-
return
|
|
1876
|
+
return _context80.stop();
|
|
1688
1877
|
}
|
|
1689
|
-
},
|
|
1878
|
+
}, _callee40);
|
|
1690
1879
|
})));
|
|
1691
1880
|
});
|