@zykjcommon/questions 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/.browserslistrc +3 -0
  2. package/.env +7 -0
  3. package/.env.buildTest +9 -0
  4. package/.env.development +9 -0
  5. package/.env.production +13 -0
  6. package/.env.test +12 -0
  7. package/@types/global.d.ts +33 -0
  8. package/@types/shims-vue.d.ts +6 -0
  9. package/@types/shims-vuex.d.ts +15 -0
  10. package/auto-imports.d.ts +6 -0
  11. package/babel.config.js +5 -0
  12. package/components.d.ts +23 -0
  13. package/design/App.vue +60 -0
  14. package/design/main.js +23 -0
  15. package/design/views/dialog/contentDialog.vue +18 -0
  16. package/design/views/dialog/contentDialog2.vue +18 -0
  17. package/design/views/dialog/contentDialog3.vue +19 -0
  18. package/design/views/exam/analysis.vue +208 -0
  19. package/design/views/exam/exam.vue +355 -0
  20. package/design/views/home/illustrate.vue +45 -0
  21. package/design/views/home/login.vue +43 -0
  22. package/design/vueMapper.js +8 -0
  23. package/design/vueMapperTree.js +2 -0
  24. package/dist/demo.html +1 -0
  25. package/dist/zykjcommon-questions.common.js +12817 -0
  26. package/dist/zykjcommon-questions.css +1 -0
  27. package/dist/zykjcommon-questions.umd.js +12836 -0
  28. package/dist/zykjcommon-questions.umd.min.js +18 -0
  29. package/index.js +10 -0
  30. package/package.json +61 -0
  31. package/public/favicon.ico +0 -0
  32. package/public/index.html +19 -0
  33. package/public/static/js/jquery.html2json.js +169 -0
  34. package/public/static/js/jquery.json2html.js +137 -0
  35. package/public/static/js/jquery.min.js +2 -0
  36. package/public/static/js/json2html.js +447 -0
  37. package/readme +8 -0
  38. package/src/App.vue +37 -0
  39. package/src/assets/img/afei.jpg +0 -0
  40. package/src/assets/img/audio-ico.gif +0 -0
  41. package/src/assets/img/audio-ico.png +0 -0
  42. package/src/assets/img/bc-type-bg.png +0 -0
  43. package/src/assets/img/big-close.png +0 -0
  44. package/src/assets/img/big-next.png +0 -0
  45. package/src/assets/img/big-pre.png +0 -0
  46. package/src/assets/img/book-bg.png +0 -0
  47. package/src/assets/img/checkbox-cur.png +0 -0
  48. package/src/assets/img/checkbox.png +0 -0
  49. package/src/assets/img/cpp-bg.png +0 -0
  50. package/src/assets/img/deer-logo.png +0 -0
  51. package/src/assets/img/header-bg-2.png +0 -0
  52. package/src/assets/img/header-bg.png +0 -0
  53. package/src/assets/img/illustrate-bg.png +0 -0
  54. package/src/assets/img/loading.gif +0 -0
  55. package/src/assets/img/login-bg.png +0 -0
  56. package/src/assets/img/login-box-bg.png +0 -0
  57. package/src/assets/img/login-box-logo.png +0 -0
  58. package/src/assets/img/logo.png +0 -0
  59. package/src/assets/img/logoByText.png +0 -0
  60. package/src/assets/img/py-bg.png +0 -0
  61. package/src/assets/img/pygame-bg.png +0 -0
  62. package/src/assets/img/radio-cur.png +0 -0
  63. package/src/assets/img/radio.png +0 -0
  64. package/src/assets/img/return-top-hover.png +0 -0
  65. package/src/assets/img/return-top.png +0 -0
  66. package/src/assets/img/sb3-bg.png +0 -0
  67. package/src/assets/img/star-ico.png +0 -0
  68. package/src/assets/img/tab-mark.png +0 -0
  69. package/src/assets/img/video-play-btn.png +0 -0
  70. package/src/assets/js/arms.js +16 -0
  71. package/src/assets/js/bus.js +14 -0
  72. package/src/assets/js/fun.js +883 -0
  73. package/src/assets/js/helper.js +575 -0
  74. package/src/assets/js/http.js +219 -0
  75. package/src/assets/js/md5.js +260 -0
  76. package/src/assets/js/rem.js +33 -0
  77. package/src/assets/js/validation.js +216 -0
  78. package/src/assets/js/zykjcommon-questions.umd.min.js +18 -0
  79. package/src/assets/logo.png +0 -0
  80. package/src/assets/scss/dialog/dialog.scss +144 -0
  81. package/src/assets/scss/exam/exam.scss +256 -0
  82. package/src/assets/scss/home/home.scss +222 -0
  83. package/src/assets/scss/index.scss +80 -0
  84. package/src/assets/scss/questions/index.scss +345 -0
  85. package/src/common/const.ts +15 -0
  86. package/src/components/common/ContentDialog.vue +172 -0
  87. package/src/components/common/IframeComponent.vue +101 -0
  88. package/src/components/common/Loading.vue +45 -0
  89. package/src/components/common/MediaLooker.vue +171 -0
  90. package/src/components/common/TextAreaEditor.vue +121 -0
  91. package/src/components/exam/QuestionCard.vue +494 -0
  92. package/src/components/exam/QuestionHeader.vue +87 -0
  93. package/src/components/exam/TimeCounter.vue +107 -0
  94. package/src/components/questions/QuestionReader.js +20 -0
  95. package/src/components/questions/Question_SingleChoice.vue +208 -0
  96. package/src/components/questions/buildEntry.js +12 -0
  97. package/src/components/questions/developmentEntry.js +11 -0
  98. package/src/components/questions/mixin.js +64 -0
  99. package/src/main.ts +176 -0
  100. package/src/router/exam.ts +50 -0
  101. package/src/router/index.ts +33 -0
  102. package/src/store/exam.ts +199 -0
  103. package/src/store/index.ts +22 -0
  104. package/src/types/common/index.ts +4 -0
  105. package/src/types/exam/exam.ts +10 -0
  106. package/src/views/exam/Analysis.vue +516 -0
  107. package/src/views/exam/Default.vue +28 -0
  108. package/src/views/exam/Exam.vue +594 -0
  109. package/src/views/exam/ReviewPaper.vue +178 -0
  110. package/src/views/exam/ReviewQuestion.vue +167 -0
  111. package/tasks/vueMapper.js +37 -0
  112. package/tasks/vueMapperTree.js +42 -0
  113. package/tsconfig.json +46 -0
  114. package/tslint.json +19 -0
  115. package/vue.config.js +107 -0
@@ -0,0 +1,575 @@
1
+ /*****************************************************
2
+ * JS辅助工具类
3
+ ****************************************************/
4
+ import {postWeb} from './http';
5
+
6
+
7
+ var mediadevice = function () {
8
+
9
+ var getDevices,
10
+ getUserMedia,
11
+ setVolume,
12
+ getHeadphones,
13
+ dispose;
14
+ window.AudioContext = window.AudioContext || window.webkitAudioContext;
15
+
16
+
17
+ getDevices = function () {
18
+
19
+ return new Promise(function (callback, reject) {
20
+ if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
21
+ navigator.mediaDevices.enumerateDevices().then(function (MediaDeviceInfo) {
22
+ var _devices = {
23
+ audio: [],
24
+ video: [],
25
+ headphones: []
26
+ };
27
+ var p1 = 1, p2 = 1, p3 = 1;
28
+ for (var mediaDeviceInfo in MediaDeviceInfo) {
29
+ var thisdevice = MediaDeviceInfo[mediaDeviceInfo],
30
+ temp = {};
31
+
32
+ temp.deviceId = thisdevice.deviceId;
33
+ temp.groupId = thisdevice.groupId;
34
+ temp.label = thisdevice.label;
35
+
36
+ // if(temp.label=='默认'||temp.label=='通讯')
37
+ // continue;
38
+ if (thisdevice.kind === 'videoinput') {
39
+ if (temp.label === '') {
40
+ temp.label = '摄像头' + p2;
41
+ p2++;
42
+ }
43
+ if (temp.label.indexOf('前') >= 0 || temp.label.indexOf('正') >= 0)
44
+ _devices.video.splice(0, 0, temp);
45
+ else
46
+ _devices.video.push(temp);
47
+ }
48
+
49
+
50
+ /*麦克风*/
51
+ if (thisdevice.kind === 'audioinput'
52
+ && thisdevice.deviceId !== 'communications' && thisdevice.deviceId !== 'default') {
53
+ if (temp.label === '') {
54
+ temp.label = '麦克风' + p1;
55
+ p1++;
56
+ }
57
+
58
+ _devices.audio.push(temp)
59
+ }
60
+
61
+ /*耳机*/
62
+ if (thisdevice.kind === 'audiooutput'
63
+ && thisdevice.deviceId !== 'communications' && thisdevice.deviceId !== 'default') {
64
+ if (temp.label === '') {
65
+ temp.label = '扬声器' + p3;
66
+ p3++;
67
+ }
68
+ _devices.headphones.push(temp);
69
+ }
70
+ }
71
+ if (callback && typeof callback === 'function') callback(_devices);
72
+ });
73
+ } else {
74
+ reject()
75
+ }
76
+ });
77
+ };
78
+
79
+ getUserMedia = function (option) {
80
+ var _constraints = option || {
81
+ audio: true,
82
+ video: true
83
+ };
84
+
85
+ return new Promise(function (callback, reject) {
86
+ if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
87
+ navigator.mediaDevices.getUserMedia(_constraints).then(function (mediaStream) {
88
+ // window.console.debug(1, mediaStream);
89
+
90
+ //1占用2没权限3没设备4未知
91
+ if (_constraints.video) {
92
+ var videoTracks = mediaStream.getVideoTracks();
93
+ if (!videoTracks.length) {
94
+ //无摄像头
95
+
96
+ callback(3)
97
+ return;
98
+ }
99
+ // window.console.debug('videoTracks[0].readyState : ' + videoTracks[0].readyState);
100
+ var createTime = Date.now();
101
+ videoTracks[0].onended = function () {
102
+ var diff = Date.now() - createTime;
103
+ window.console.debug('videoTracks[0].readyState : ' + diff);
104
+ if (diff > 2000) {
105
+ callback(mediaStream);
106
+ return;
107
+ }
108
+
109
+ callback(1);
110
+ return;
111
+ };
112
+ }
113
+ if (callback && typeof callback === 'function') callback(mediaStream);
114
+ // window.console.debug(2, mediaStream);
115
+ }).catch(function (error) {
116
+ if (error) {
117
+ // window.console.error('getUserMedia error : ' + error.name);
118
+ var v;
119
+ switch (error.name) {
120
+ case 'NotAllowedError':
121
+ case 'PermissionDeniedError':
122
+ v = 2
123
+ break;
124
+ case 'TrackStartError':
125
+ v = 1
126
+
127
+ break;
128
+ case 'DevicesNotFoundError':
129
+ v = 3;
130
+ break;
131
+ case 'MediaStreamError':
132
+ //codova
133
+ if (error.message == 'getUserMedia() failed: video denied') {
134
+ v = 2;
135
+ }
136
+ if (error.message == 'getUserMedia() failed: audio denied') {
137
+ v = 2;
138
+ }
139
+ break;
140
+ default:
141
+ v = 4;
142
+ break;
143
+ }
144
+ callback(v);
145
+ return;
146
+ }
147
+
148
+ callback(4);
149
+ return;
150
+ });
151
+ } else {
152
+ reject()
153
+ }
154
+ });
155
+ };
156
+
157
+
158
+ /**
159
+ * 初始化 AudioContext 返回 mediaStreamSource && scriptProcessor
160
+ * @param stream
161
+ * @returns {Promise}
162
+ */
163
+ function initAudioContext(stream) {
164
+ return new Promise(function (callback) {
165
+ var mediaStreamSource, scriptProcessor, audioContext;
166
+ try {
167
+ audioContext = new (window.AudioContext || window.webkitAudioContext)();
168
+ } catch (e) {
169
+ return window.console.warn('Web Audio API not supported.');
170
+ }
171
+
172
+ mediaStreamSource = audioContext.createMediaStreamSource(stream);
173
+ scriptProcessor = audioContext.createScriptProcessor(0, 1, 1);
174
+ mediaStreamSource.connect(scriptProcessor);
175
+ scriptProcessor.connect(audioContext.destination);
176
+
177
+
178
+ if (callback && typeof callback === 'function' && !!mediaStreamSource && !!scriptProcessor) callback({
179
+ mediaStreamSource: mediaStreamSource,
180
+ scriptProcessor: scriptProcessor,
181
+ audioContext: audioContext
182
+
183
+ });
184
+ });
185
+ }
186
+
187
+ /**
188
+ * 监听声音scriptProcessor
189
+ * @param scriptProcessor
190
+ * @param onprocess
191
+ */
192
+ function onAudioProcess(scriptProcessor, onprocess) {
193
+
194
+ if (scriptProcessor)
195
+ scriptProcessor.onaudioprocess = function (audioProcessingEvent) {
196
+
197
+ var inputBuffer = audioProcessingEvent.inputBuffer;
198
+ var outputBuffer = audioProcessingEvent.outputBuffer;
199
+
200
+ for (var channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
201
+ var inputData = inputBuffer.getChannelData(channel);
202
+ var outputData = outputBuffer.getChannelData(channel);
203
+
204
+ for (var sample = 0; sample < inputBuffer.length; sample++) {
205
+ outputData[sample] = inputData[sample];
206
+ }
207
+ }
208
+ if (onprocess) {
209
+ var input = audioProcessingEvent.inputBuffer.getChannelData(0);
210
+ var len = input.length;
211
+ var sum = 0.0;
212
+ for (var i = 0; i < len; ++i) {
213
+ sum += input[i] * input[i];
214
+ }
215
+ var volumeValue = Math.sqrt(sum / len);
216
+ volumeValue = (Math.sin(volumeValue * 3.1415 / 2)) * 100 >> 0;
217
+
218
+ onprocess(volumeValue);
219
+ }
220
+
221
+
222
+ }
223
+ }
224
+
225
+ /**
226
+ * 声音显示
227
+ * @param stream
228
+ * @param dom
229
+ * @returns {Promise}
230
+ */
231
+ setVolume = function (stream, onprocess) {
232
+ return new Promise(function (callback) {
233
+ initAudioContext(stream).then(function () {
234
+
235
+ var mediaStreamSource = arguments[0].mediaStreamSource,
236
+ scriptProcessor = arguments[0].scriptProcessor,
237
+ audiocontext = arguments[0].audioContext;
238
+
239
+ onAudioProcess(scriptProcessor, onprocess);
240
+ var Acontext = {
241
+ mediaStreamSource: mediaStreamSource,
242
+ scriptProcessor: scriptProcessor,
243
+ audiocontext: audiocontext
244
+
245
+ }
246
+ callback(Acontext);
247
+
248
+ });
249
+ });
250
+ };
251
+
252
+ function initHeadphonesContext(stream) {
253
+ return new Promise(function (callback) {
254
+ var mediaStreamSource, scriptProcessor, audioContext;
255
+ try {
256
+ audioContext = new (window.AudioContext || window.webkitAudioContext)();
257
+ } catch (e) {
258
+ return window.console.warn('Web Audio API not supported.');
259
+ }
260
+
261
+ mediaStreamSource = audioContext.createMediaStreamSource(stream);
262
+ // scriptProcessor = audioContext.createScriptProcessor(0, 1, 1);
263
+ // mediaStreamSource.connect(scriptProcessor);
264
+ // scriptProcessor.connect(audioContext.destination);
265
+
266
+ var biquadFilter = audioContext.createBiquadFilter();
267
+ biquadFilter.type = "lowshelf";
268
+ biquadFilter.frequency.value = 1000;
269
+ biquadFilter.gain.value = 25;
270
+
271
+
272
+ mediaStreamSource.connect(biquadFilter);
273
+ biquadFilter.connect(audioContext.destination);
274
+
275
+
276
+ if (callback && typeof callback === 'function' && !!mediaStreamSource && !!scriptProcessor) callback({
277
+ mediaStreamSource: mediaStreamSource,
278
+ scriptProcessor: scriptProcessor,
279
+ audioContext: audioContext
280
+
281
+ });
282
+ });
283
+ }
284
+
285
+ function onHeadProcess(scriptProcessor, onprocess) {
286
+
287
+ if (scriptProcessor)
288
+ scriptProcessor.onaudioprocess = function (audioProcessingEvent) {
289
+
290
+ if (onprocess) {
291
+ var input = audioProcessingEvent.inputBuffer.getChannelData(0);
292
+ var len = input.length;
293
+ var sum = 0.0;
294
+ for (var i = 0; i < len; ++i) {
295
+ sum += input[i] * input[i];
296
+ }
297
+ var volumeValue = Math.sqrt(sum / len);
298
+ volumeValue = (Math.sin(volumeValue * 3.1415 / 2)) * 100 >> 0;
299
+
300
+ onprocess(volumeValue);
301
+ }
302
+
303
+ }
304
+ }
305
+
306
+ getHeadphones = function (stream, onprocess) {
307
+
308
+ return new Promise(function (callback) {
309
+ initAudioContext(stream).then(function () {
310
+
311
+ var mediaStreamSource = arguments[0].mediaStreamSource,
312
+ scriptProcessor = arguments[0].scriptProcessor,
313
+ audiocontext = arguments[0].audioContext;
314
+
315
+ onHeadProcess(scriptProcessor, onprocess);
316
+ let Acontext = {
317
+ mediaStreamSource: mediaStreamSource,
318
+ scriptProcessor: scriptProcessor,
319
+ audiocontext: audiocontext
320
+
321
+ }
322
+ callback(Acontext);
323
+
324
+ });
325
+ });
326
+ }
327
+
328
+ dispose = function (stream, audiocontext) {
329
+
330
+
331
+ return new Promise(function (callback) {
332
+ if (stream) {
333
+ var trackList = stream.getTracks();
334
+ for (var index in trackList) {
335
+ trackList[index].stop();
336
+ }
337
+ stream = null;
338
+ }
339
+
340
+ if (audiocontext) {
341
+ if (audiocontext.mediaStreamSource) audiocontext.mediaStreamSource.disconnect();
342
+ if (audiocontext.scriptProcessor) {
343
+ audiocontext.scriptProcessor.disconnect();
344
+ audiocontext.scriptProcessor.onaudioprocess = null;
345
+ }
346
+ if (audiocontext.audiocontext) {
347
+ audiocontext.audiocontext.close();
348
+ audiocontext.audiocontext = null;
349
+ }
350
+ audiocontext = null;
351
+ }
352
+ callback();
353
+ });
354
+ };
355
+
356
+
357
+ return {
358
+ getDevices: getDevices,
359
+ getUserMedia: getUserMedia,
360
+ setVolume: setVolume,
361
+ getHeadphones: getHeadphones,
362
+ dispose: dispose
363
+
364
+ };
365
+ }();
366
+
367
+ var pdfHelper = function () {
368
+
369
+
370
+ function getBrowserName() {
371
+
372
+ var userAgent = navigator ? navigator.userAgent.toLowerCase() : "other";
373
+ if (userAgent.indexOf("chrome") > -1) return "chrome";
374
+
375
+ else if (userAgent.indexOf("safari") > -1) return "safari";
376
+
377
+ else if (userAgent.indexOf("msie") > -1 || userAgent.indexOf("trident") > -1)
378
+
379
+ return "ie";
380
+
381
+ else if (userAgent.indexOf("firefox") > -1) return "firefox";
382
+
383
+ return userAgent;
384
+
385
+ }
386
+
387
+
388
+ function getActiveXObject(name) {
389
+
390
+ try {
391
+ return new ActiveXObject(name);
392
+ } catch (e) {
393
+ window.console.log(e)
394
+ }
395
+
396
+ }
397
+
398
+
399
+ function getNavigatorPlugin(name) {
400
+
401
+ for (let key in navigator.plugins) {
402
+
403
+ var plugin = navigator.plugins[key];
404
+
405
+ if (plugin.name == name)
406
+
407
+ return plugin;
408
+
409
+ }
410
+
411
+ }
412
+
413
+
414
+ function getPDFPlugin() {
415
+
416
+ if (getBrowserName() == 'ie') {
417
+ return getActiveXObject('AcroPDF.PDF')
418
+ || getActiveXObject('PDF.PdfCtrl');
419
+ } else {
420
+ return getNavigatorPlugin('Adobe Acrobat') || getNavigatorPlugin('Chrome PDF Viewer') || getNavigatorPlugin('WebKit built-in PDF');
421
+ }
422
+
423
+ }
424
+
425
+
426
+ function isAcrobatInstalled() {
427
+ return getPDFPlugin();
428
+ }
429
+
430
+
431
+ function getAcrobatVersion() {
432
+
433
+ try {
434
+
435
+ var plugin = getPDFPlugin();
436
+
437
+ if (getBrowserName() == 'ie') {
438
+
439
+ var versions = plugin.GetVersions().split(',');
440
+
441
+ var latest = versions[0].split('=');
442
+
443
+ return parseFloat(latest[1]);
444
+
445
+ }
446
+
447
+ if (plugin.version)
448
+
449
+ return parseInt(plugin.version);
450
+
451
+ return plugin.name;
452
+
453
+ } catch (e) {
454
+
455
+ return null;
456
+
457
+ }
458
+
459
+ }
460
+
461
+
462
+ return {
463
+ goPdf(path) {
464
+ if (isAcrobatInstalled) {
465
+ let popup = window.open('about:blank', '_blank')
466
+ popup.document.write('<h2>加载中</h2>')
467
+ popup.location = path
468
+ } else {
469
+ alert("你可能还没有安装pdf阅读器,为了方便你查看pdf文档,请下载!");
470
+ window.location.href = "http://ardownload.adobe.com/pub/adobe/reader/win/9.x/9.3/chs/AdbeRdr930_zh_CN.exe";
471
+ }
472
+ }
473
+ }
474
+ }()
475
+
476
+ var browserTester = {
477
+ chrome() {
478
+ return navigator.userAgent.indexOf("Chrome") > -1
479
+ },
480
+ safari() {
481
+ return navigator.userAgent.indexOf("Safari") > -1
482
+ },
483
+ edge() {
484
+ return navigator.userAgent.indexOf("Edge") > -1
485
+ }
486
+ }
487
+
488
+ var cookieUtils = {
489
+ setItem(key, value, expires) {
490
+ let result = {key: key}
491
+ let method = expires ? 'localStorage' : 'sessionStorage'
492
+ result.value = value
493
+ setExpires()
494
+ window[method].setItem(key, JSON.stringify(result))
495
+
496
+ function setExpires() {
497
+ if (method === 'localStorage') {
498
+ result.expires = expires
499
+ }
500
+ }
501
+ },
502
+ getItem(key,hasExpires){
503
+ let res = null
504
+ let method = hasExpires ? 'localStorage' : 'sessionStorage'
505
+ let result = window[method].getItem(key)
506
+ if(result){
507
+ result = JSON.parse(result)
508
+ if(Object.prototype.toString.call(result)==='[object Object]'){
509
+ let value = result.value
510
+ if(method==='localStorage'){
511
+ let expireTime = result.expires
512
+ if(expireTime - new Date().getTime() <= 0){
513
+ this.removeItem(key)
514
+ }else{
515
+ res = value
516
+ }
517
+ }else{
518
+ res = value
519
+ }
520
+ }
521
+ }
522
+ return res
523
+ },
524
+ removeItem(key){
525
+ window.localStorage.removeItem(key)
526
+ window.sessionStorage.removeItem(key)
527
+ }
528
+ }
529
+
530
+
531
+ function deepCopy(target){
532
+ var result
533
+ var objType = isObj(target)?'object':(Array.isArray(target)?'array':'')
534
+ if(typeof target!=='object'&&target!==null){
535
+ result = target
536
+ }else if(objType==='object'){
537
+ result = {}
538
+ for(let key in target){
539
+ if(typeof target[key]==='object'){
540
+ result[key] = deepCopy(target[key])
541
+ }else{
542
+ result[key] = target[key]
543
+ }
544
+ }
545
+ }else if(objType==='array'){
546
+ result = []
547
+ for(let i = 0;i<target.length;i++){
548
+ if(typeof target[i]==='object'){
549
+ result[i] = deepCopy(target[i])
550
+ }else{
551
+ result[i] = target[i]
552
+ }
553
+ }
554
+ }else{
555
+ result = target
556
+ }
557
+ return result
558
+ }
559
+ function isObj(obj){
560
+ var type = Object.prototype.toString.call(obj)
561
+ if(type==='[object Object]'){
562
+ return true
563
+ }else{
564
+ return false
565
+ }
566
+ }
567
+
568
+ export default {
569
+ mediadevice,
570
+ pdfHelper,
571
+ browserTester,
572
+ cookieUtils,
573
+ isObj,
574
+ deepCopy
575
+ }