axj-ab_ 1.0.0

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 (3) hide show
  1. package/index.d.ts +686 -0
  2. package/index.js +1214 -0
  3. package/package.json +12 -0
package/index.js ADDED
@@ -0,0 +1,1214 @@
1
+ var ab_ = {
2
+
3
+ _ver: false,
4
+
5
+ local: true,
6
+
7
+ https: false,
8
+
9
+ fn(fn) {
10
+ ab_ = Object.assign(ab_, fn)
11
+ },
12
+
13
+ header() {
14
+ },
15
+
16
+ back() {
17
+ if (history.length > 1) {
18
+ history.back()
19
+
20
+ } else {
21
+ window.close()
22
+ }
23
+ },
24
+
25
+ push(uri, title) {
26
+ location.hash = uri
27
+ },
28
+
29
+ replace(uri, title) {
30
+ location.replace(uri)
31
+ },
32
+
33
+ open(uri, title, alone) {
34
+ window.open(uri)
35
+ },
36
+
37
+ get(name) {
38
+ var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
39
+ var r = window.location.search.substr(1).match(reg)
40
+ return r != null ? unescape(r[2]) : null
41
+ },
42
+
43
+ empty(o) {
44
+ if (o) {
45
+ if (typeof (o) === 'object') {
46
+ for (var k in o) {
47
+ return false
48
+ }
49
+
50
+ } else {
51
+ return o.length > 0
52
+ }
53
+ }
54
+
55
+ return true
56
+ },
57
+
58
+ urlRm(url, para) {
59
+ var i = url.indexOf('&' + para + '=')
60
+ var f = 0
61
+ if (i < 0) {
62
+ i = url.indexOf('?' + para + '=')
63
+ f = 1
64
+ }
65
+
66
+ if (i >= 0) {
67
+ var j = url.indexOf('&', i + 1)
68
+ if (j > i) {
69
+ if (f) {
70
+ url = url.substr(0, i + 1) + url.substr(j + 1)
71
+
72
+ } else {
73
+ url = url.substr(0, i) + url.substr(j)
74
+ }
75
+
76
+ } else {
77
+ url = url.substr(0, i)
78
+ }
79
+ }
80
+
81
+ return url
82
+ },
83
+
84
+ urlParas(url, paras, force) {
85
+ if (typeof (paras) === 'object') {
86
+ var s = ''
87
+ for (var k in paras) {
88
+ var v = paras[k]
89
+ if (v || force) {
90
+ s += (s ? '&' : '') + k + '=' + encodeURIComponent(v)
91
+ }
92
+ }
93
+
94
+ paras = s
95
+ }
96
+
97
+ if (url === undefined || url === null) {
98
+ return paras
99
+ }
100
+
101
+ var i = url.indexOf('?')
102
+ if (i >= 0) {
103
+ return url.substr(0, i + 1) + paras + '&' + url.substr(i + 1)
104
+
105
+ } else {
106
+ return url + '?' + paras
107
+ }
108
+ },
109
+
110
+ urlPath() {
111
+ return location.protocol + '//' + location.host + location.pathname
112
+ },
113
+
114
+ pathDir(path) {
115
+ var i = path && path.lastIndexOf('/')
116
+ return i ? path.substr(0, i + 1) : '/'
117
+ },
118
+
119
+ route(anch, url, set) {
120
+ var hash
121
+ if (url) {
122
+ hash = url.replace(/^[#]*[\/]*/, '')
123
+
124
+ } else {
125
+ hash = location.hash
126
+ hash = hash.replace(/^#[\/]*/, '')
127
+ }
128
+
129
+ var href = '/' + hash
130
+ var $route = ab_.$route
131
+ if ($route && $route.hash === href) {
132
+ return $route
133
+ }
134
+
135
+ $route = {
136
+ hash: href,
137
+ path: [],
138
+ search: {}
139
+ }
140
+
141
+ hash = hash.replace(/([^#])(#.*$)/, '$1')
142
+ if (anch) {
143
+ hash = hash.split('/') || []
144
+ var len = hash.length
145
+ for (var i = 0; i < len; i++) {
146
+ var path = hash[i]
147
+ var id = path.indexOf('=')
148
+ if (id >= 0) {
149
+ $route.search[path.substr(0, id)] = path.substr(id + 1)
150
+
151
+ } else {
152
+ $route.path.push(path)
153
+ }
154
+ }
155
+
156
+ $route.href = $route.path.join('/')
157
+
158
+ } else {
159
+ var id = hash.indexOf('?')
160
+ var path = id >= 0 ? hash.substr(0, id) : hash
161
+ $route.href = path
162
+ var paths = path.split('/') || []
163
+ var len = paths.length
164
+ for (var i = 0; i < len; i++) {
165
+ $route.path.push(paths[i])
166
+ }
167
+
168
+ paths = id >= 0 ? hash.substr(id) : ''
169
+ if (paths && paths[0] === '?') {
170
+ paths = paths.substr(1)
171
+ }
172
+
173
+ var search = location.search
174
+ if (search && search[0] === '?') {
175
+ search = search.substr(1)
176
+ }
177
+
178
+ if (search) {
179
+ paths = paths ? (paths + '&' + search) : search
180
+ }
181
+
182
+ $route.searchS = paths
183
+ if (paths && paths.length > 1) {
184
+ paths = paths.split('&') || []
185
+ len = paths.length
186
+ for (var i = 0; i < len; i++) {
187
+ path = paths[i]
188
+ id = path.indexOf('=')
189
+ if (id >= 0) {
190
+ $route.search[decodeURIComponent(path.substr(0, id))] = decodeURIComponent(path.substr(id + 1))
191
+
192
+ } else {
193
+ $route.search[decodeURIComponent(path)] = ''
194
+ }
195
+ }
196
+ }
197
+ }
198
+
199
+ if (url === undefined || set) {
200
+ ab_.$route = $route
201
+ }
202
+
203
+ return $route
204
+ },
205
+
206
+ el(el) {
207
+ return el || ab_.$el || (ab_.$el = document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[
208
+ 0] || document)
209
+ },
210
+
211
+ ver(url) {
212
+ if (ab_._ver && url) {
213
+ url = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'v=' + ab_._ver
214
+ }
215
+
216
+ return url
217
+ },
218
+
219
+ reqCss(href, el, media) {
220
+ var link = document.createElement('link')
221
+ link.href = ab_.ver(href)
222
+ link.rel = 'stylesheet'
223
+ link.type = 'text/css'
224
+ link.media = media || 'all'
225
+ ab_.el(el).appendChild(link)
226
+ },
227
+
228
+ call() {
229
+ var call = ab_.$call
230
+ if (call) {
231
+ delete ab_.$call
232
+ call.apply(this, arguments)
233
+ }
234
+ },
235
+
236
+ reqJs(js, el, call) {
237
+ var script = document.createElement('script')
238
+ script.type = 'text/javascript'
239
+ if (call) {
240
+ if (script.readyState) { //IE
241
+ script.onreadystatechange = call
242
+
243
+ } else { //Other
244
+ script.onload = call
245
+ }
246
+ }
247
+
248
+ script.src = ab_.ver(js)
249
+ ab_.el(el).appendChild(script)
250
+ },
251
+
252
+ reqModule(name, jses, csses) {
253
+ return function (call) {
254
+ if (!call) {
255
+ return
256
+ }
257
+
258
+ if (ab_['_' + name + '_']) {
259
+ call()
260
+ return
261
+ }
262
+
263
+ var calls = ab_['_' + name + '_s']
264
+ if (calls) {
265
+ calls.push(call)
266
+ return
267
+ }
268
+
269
+ ab_['_' + name + '_s'] = [call]
270
+ if (csses) {
271
+ var len = csses.length
272
+ for (var i = 0; i < len; i++) {
273
+ ab_.reqCss(csses[i])
274
+ }
275
+ }
276
+
277
+ var $i = 0
278
+ var $len = jses ? jses.length : 0
279
+
280
+ function next() {
281
+ if ($i < $len) {
282
+ var js = jses[$i++]
283
+ if (typeof (js) === 'function') {
284
+ try {
285
+ js = js()
286
+
287
+ } finally {
288
+ if (js && typeof (js) == 'string') {
289
+ ab_.reqJs(js, 0, next)
290
+
291
+ } else {
292
+ next()
293
+ }
294
+ }
295
+
296
+ } else {
297
+ ab_.reqJs(js, 0, next)
298
+ }
299
+
300
+ } else {
301
+ ab_['_' + name + '_'] = 1
302
+ var calls = ab_['_' + name + '_s']
303
+ if (calls) {
304
+ delete ab_['_' + name + '_s']
305
+ var len = calls.length
306
+ for (var i = 0; i < len; i++) {
307
+ try {
308
+ calls[i]()
309
+
310
+ } catch (e) {
311
+ console.error(e)
312
+ }
313
+ }
314
+ }
315
+ }
316
+ }
317
+
318
+ next()
319
+ }
320
+ },
321
+
322
+ eval(exp, $page, $this, res) {
323
+ var fn = eval(exp)
324
+ if (fn && typeof (fn) === 'function') {
325
+ fn()
326
+ }
327
+ },
328
+
329
+ $center: {},
330
+
331
+ args(args, off, len) {
332
+ if (off == undefined) {
333
+ return Array.prototype.slice.call(args)
334
+ }
335
+
336
+ if (len === undefined) {
337
+ len = args.length
338
+ }
339
+
340
+ var ary = []
341
+ for (; off < len; off++) {
342
+ ary.push(args[off])
343
+ }
344
+
345
+ return ary
346
+ },
347
+
348
+ swap(ary, from, to) {
349
+ if (ary[from] && ary[to]) {
350
+ ary[from] = ary.splice(to, 1, ary[from])[0]
351
+ }
352
+ return ary
353
+ },
354
+
355
+ reSort(ary, from, to) {
356
+ if (from === to) {
357
+ return
358
+ }
359
+
360
+ if (from === to + 1 || from == to - 1) {
361
+ ab_.swap(ary, from, to)
362
+ return
363
+ }
364
+
365
+ var fromE = ary[from]
366
+ ary.splice(from, 1)
367
+ ary.splice(to, 0, fromE)
368
+ return ary
369
+ },
370
+
371
+ resetEl(children, fromI, toI) {
372
+ if (toI == fromI) {
373
+ return
374
+ }
375
+
376
+ var to = children[toI]
377
+ var from = children[fromI]
378
+ if (to && from) {
379
+ if (toI < fromI) {
380
+ from.after(to)
381
+
382
+ } else {
383
+ from.before(to)
384
+ }
385
+ }
386
+ },
387
+
388
+ swapEl(from, to) {
389
+ var next = from.nextSibling
390
+ if (next === to) {
391
+ to.after(from)
392
+ return
393
+ }
394
+
395
+ var parent = from.parentElement
396
+ to.after(from)
397
+ if (next) {
398
+ next.before(to)
399
+
400
+ } else if (parent) {
401
+ parent.appendChild(to)
402
+ }
403
+ },
404
+
405
+ post(name) {
406
+ var args = false
407
+ if (arguments.length === 3 && arguments[0] === undefined) {
408
+ name = arguments[1]
409
+ args = true
410
+ }
411
+
412
+ var fn = ab_.$center[name]
413
+ if (fn) {
414
+ fn.apply(this, args ? arguments[2] : ab_.args(arguments, 1))
415
+ return
416
+ }
417
+
418
+ var i = name.indexOf('/')
419
+ if (i >= 0) {
420
+ fn = ab_.$center[name.substr(0, i)]
421
+ if (fn && typeof (fn) === 'object') {
422
+ fn = fn[name.substr(i + 1)]
423
+ if (fn) {
424
+ fn.apply(this, args ? arguments[2] : ab_.args(arguments, 1))
425
+ }
426
+ }
427
+ }
428
+ },
429
+
430
+ posts(data, i) {
431
+ var last = data.length - 1
432
+ for (i = i || 0; i < last; i += 2) {
433
+ try {
434
+ ab_.post(undefined, data[i], data[i + 1])
435
+
436
+ } catch (e) {
437
+ console.error(e)
438
+ }
439
+ }
440
+ },
441
+
442
+ langs: {},
443
+
444
+ langChange(lang, call) {
445
+ if (!lang) {
446
+ lang = navigator.language || navigator.userLanguage
447
+ if (!lang) {
448
+ call(false)
449
+ return
450
+ }
451
+ }
452
+
453
+ ab_.require('./i18n/lang_' + lang + '.json', true, function (data) {
454
+ if (data) {
455
+ ab_.langs = Object.assign(ab_.langs, data)
456
+ call(true)
457
+ return
458
+ }
459
+
460
+ var i = lang.indexOf('-')
461
+ if (i > 0) {
462
+ ab_.langChange(lang.substr(0, i), call)
463
+ return
464
+ }
465
+
466
+ call(false)
467
+ })
468
+ },
469
+
470
+ lang(key, lang) {
471
+ if (lang) {
472
+ if (!ab_.langs[key]) {
473
+ ab_.langs[key] = lang
474
+ }
475
+ }
476
+ },
477
+
478
+ i18n(key, par) {
479
+ var s = ab_.$i18n ? ab_.langs[key] || key : key
480
+ if (s && (Array.isArray(par) || typeof (par) === 'object')) {
481
+ s = s.replace(/(\\)?\{([^\{\}\\]+)(\\)?\}/g, function (word, slash1, token, slash2) {
482
+ // 如果有转义的\{或\}替换转义字符
483
+ if (slash1 || slash2) {
484
+ return word.replace('\\', '')
485
+ }
486
+
487
+ return par[token] || ''
488
+ })
489
+ }
490
+
491
+ return s
492
+ },
493
+
494
+ time() {
495
+ return parseInt(new Date().getTime() / 1000)
496
+ },
497
+
498
+ humTime(time, max) {
499
+ if (time < (max || 1000)) {
500
+ return time + 's'
501
+ }
502
+
503
+ if (time < 600) {
504
+ return Math.floor(time / 60) + 'm' + (time % 60) + 's'
505
+ }
506
+
507
+ if (time < (max ? max * 60 : 60000)) {
508
+ return Math.ceil(time / 60) + 'm'
509
+ }
510
+
511
+ if (time < 36000) {
512
+ return Math.floor(time / 3600) + 'h' + Math.ceil((time % 3600) / 60) + 'm'
513
+ }
514
+
515
+ return Math.ceil(time / 3600) + 'h'
516
+ },
517
+
518
+ humSize(size) {
519
+ var kb = size / 1024
520
+ if (kb < 10000) {
521
+ return kb.toFixed(2) + 'kb'
522
+ }
523
+
524
+ var mb = kb / 1024
525
+ if (mb < 10000) {
526
+ return mb.toFixed(2) + 'mb'
527
+ }
528
+
529
+ var gb = mb / 1024
530
+ if (gb < 10000) {
531
+ return gb.toFixed(2) + 'gb'
532
+ }
533
+
534
+ return (gb / 1024).toFixed(2) + 'tb'
535
+ },
536
+
537
+ parseJson(json) {
538
+ return typeof (json) === 'string' ? JSON.parse(json) : json
539
+ },
540
+
541
+ toJson(obj) {
542
+ return JSON.stringify(obj)
543
+ },
544
+
545
+ tplRender(tpl, render) {
546
+ // 被转义的的分隔符 { 和 } 不应该被渲染,分隔符与变量之间允许有空白字符
547
+ /*
548
+ "{greeting}! My name is { author.name }.".render({
549
+ greeting: "Hi",
550
+ author: {
551
+ name: "hsfzxjy"
552
+ }});
553
+ */
554
+ return tpl.replace(/(\\)?\{([^\{\}\\]+)(\\)?\}/g, function (word, slash1, token, slash2) {
555
+ // 如果有转义的\{或\}替换转义字符
556
+ if (slash1 || slash2) {
557
+ return word.replace('\\', '')
558
+ }
559
+
560
+ if (!render) {
561
+ return ''
562
+ }
563
+ // 切割 token ,实现级联的变量也可以展开
564
+ var tokens = token.replace(/\s/g, '').split('.')
565
+ var len = tokens.length
566
+ var curr = render
567
+ for (var i = 0; i < len; ++i) {
568
+ token = tokens[i]
569
+ curr = curr[token]
570
+ // 如果当前索引的对象不存在,则直接返回空字符串。
571
+ if (curr === undefined || curr === null) return ''
572
+ }
573
+
574
+ return curr
575
+ })
576
+ },
577
+
578
+ // 支持formData file var form = new FormData();form.append("file", fileObj);
579
+ xhrReq(loading, headers, url, posts, callback, init) {
580
+ var xhr = new XMLHttpRequest()
581
+ xhr.onreadystatechange = function () {
582
+ if (xhr.readyState === XMLHttpRequest.DONE) {
583
+ loading && loading()
584
+ if (callback) {
585
+ if (xhr.status === 200) {
586
+ callback(null, xhr.responseText)
587
+ } else {
588
+ callback(xhr.text || 'fail', null)
589
+ }
590
+ }
591
+ }
592
+ }
593
+ // 设置30s超时时间
594
+ // xhr.timeout = 30000
595
+ // xhr.ontimeout = ab_.xhrOntimeout()
596
+ if (posts) {
597
+ xhr.open('POST', url, true)
598
+
599
+ } else {
600
+ xhr.open('GET', url, true)
601
+ posts = undefined
602
+ }
603
+
604
+ if (headers) {
605
+ for (var name in headers) {
606
+ xhr.setRequestHeader(name, headers[name])
607
+ }
608
+ }
609
+
610
+ if (posts && posts._progress) {
611
+ // onprogress 事件在浏览器下载指定的视频/音频(audio/video)时触发
612
+ // xhr.onprogress = posts._progress
613
+ if (xhr.upload) {
614
+ xhr.upload.addEventListener('progress', posts._progress, false)
615
+ }
616
+
617
+ delete posts._progress
618
+ posts._abort = function () {
619
+ xhr.abort()
620
+ }
621
+ }
622
+
623
+ if (posts && posts._init) {
624
+ posts._init(xhr)
625
+ delete posts._init
626
+ }
627
+
628
+ init && init(xhr)
629
+ loading && loading(1)
630
+ xhr.send(posts)
631
+ },
632
+
633
+ uniReq(loading, headers, url, posts, files, callback, init) {
634
+ var req = {
635
+ url: url
636
+ }
637
+
638
+ if (headers) {
639
+ req.header = headers
640
+ }
641
+
642
+ req.success = function (rep) {
643
+ loading && loading()
644
+ if (callback) {
645
+ callback(undefined, rep.data)
646
+ }
647
+ }
648
+
649
+ req.fail = function (err) {
650
+ loading && loading()
651
+ if (callback) {
652
+ callback(err || 'fail', undefined)
653
+ }
654
+ }
655
+
656
+ init && init(req)
657
+ if (files) {
658
+ var len = files.length
659
+ if (!len) {
660
+ // 表单提交
661
+ var header = {
662
+ ...req.header
663
+ }
664
+
665
+ header['content-type'] = 'application/x-www-form-urlencoded'
666
+ req.header = header
667
+ req.method = 'post'
668
+ req.dataType = 'x-www-form-urlencoded'
669
+ req.data = posts
670
+ uni.request(req)
671
+ return
672
+ }
673
+
674
+ if (len === 1) {
675
+ // 单文件上传
676
+ var file = files[0]
677
+ req.name = file.name
678
+ req.filePath = file.filePath
679
+
680
+ } else {
681
+ // 多文件上传
682
+ req.files = files
683
+ }
684
+
685
+ if (posts) {
686
+ req.formData = posts
687
+ }
688
+
689
+ var header = {
690
+ ...req.header
691
+ }
692
+
693
+ header['Content-Type'] = 'multipart/form-data'
694
+ req.header = header
695
+ uni.uploadFile(req)
696
+
697
+ } else {
698
+ if (posts !== undefined && posts !== 0) {
699
+ // post请求
700
+ req.method = 'post'
701
+ if (posts !== '') {
702
+ req.data = posts
703
+ }
704
+ }
705
+
706
+ uni.request(req)
707
+ }
708
+ },
709
+
710
+ newReady(last) {
711
+ var backs = []
712
+
713
+ function ready(back) {
714
+ if (backs) {
715
+ backs.push(back)
716
+
717
+ } else {
718
+ back()
719
+ }
720
+ }
721
+
722
+ ready.start = function () {
723
+ if (backs) {
724
+ var calls = backs
725
+ backs = undefined
726
+ for (var i = 0; i < calls.length; i++) {
727
+ try {
728
+ calls[i]()
729
+
730
+ } catch (e) {
731
+ console.error(e)
732
+ }
733
+ }
734
+
735
+ if (last) {
736
+ var call = last
737
+ last = undefined
738
+ try {
739
+ call()
740
+
741
+ } catch (e) {
742
+ console.error(e)
743
+ }
744
+ }
745
+ }
746
+ }
747
+
748
+ return ready
749
+ },
750
+
751
+ newStart(run) {
752
+ var i = 0
753
+
754
+ function start(inited) {
755
+ if (++i > 0 || inited) {
756
+ if (run != null) {
757
+ var call = run
758
+ run = undefined
759
+ try {
760
+ call()
761
+
762
+ } catch (e) {
763
+ console.error(e)
764
+ }
765
+ }
766
+ }
767
+ }
768
+
769
+ start.waite = function () {
770
+ i--
771
+ }
772
+
773
+ return start
774
+ },
775
+
776
+ vConsole() {
777
+ if (!ab_.vconsoled) {
778
+ ab_.vconsoled = true
779
+ ab_.reqJs('https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js', 0, function () {
780
+ var script = document.createElement('script')
781
+ script.type = 'text/javascript'
782
+ script.appendChild(document.createTextNode('new VConsole()'))
783
+ document.body.appendChild(script)
784
+ })
785
+ }
786
+ },
787
+
788
+ getStyle($el, name) {
789
+ var style = $el.getAttribute ? $el.getAttribute('style') : $el.attr('style')
790
+ if (style) {
791
+ var match = style.match(new RegExp(name + '[\\s\\t\\r\\n]*:([^;]*)', 'i'))
792
+ if (match) {
793
+ return match[1]
794
+ }
795
+ }
796
+ },
797
+
798
+ cssSetRest($el, names) {
799
+ var len = names.length
800
+ var css = []
801
+ for (var i = 0; i < len; i++) {
802
+ css.push(ab_.getStyle($el, names[i]) || '')
803
+ }
804
+
805
+ return $el.style ? {
806
+ set(vals) {
807
+ for (var i = 0; i < len; i++) {
808
+ $el.style[names[i]] = vals[i] || ''
809
+ }
810
+ },
811
+ reset() {
812
+ for (var i = 0; i < len; i++) {
813
+ $el.style[names[i]] = css[i]
814
+ }
815
+ }
816
+ } : {
817
+ set(vals) {
818
+ for (var i = 0; i < len; i++) {
819
+ $el.css(names[i], vals[i] || '')
820
+ }
821
+ },
822
+ reset() {
823
+ for (var i = 0; i < len; i++) {
824
+ $el.css(names[i], css[i])
825
+ }
826
+ }
827
+ }
828
+ },
829
+
830
+ cloneElement(el, tag) {
831
+ if (el) {
832
+ var clone = document.createElement(tag || el.tagName)
833
+ var attrs = el.attributes
834
+ for (var i = 0; i < attrs.length; i++) {
835
+ var attr = attrs[i]
836
+ clone.setAttribute(attr.name, attr.value)
837
+ }
838
+
839
+ while (el.firstChild) {
840
+ clone.appendChild(el.firstChild)
841
+ }
842
+
843
+ return clone
844
+ }
845
+ },
846
+
847
+ objectMerge(to, from, depth) {
848
+ to = typeof (to) === 'object' ? to : {}
849
+ for (var k in from) {
850
+ var f = from[k]
851
+ if (depth > 0) {
852
+ if (f && typeof (f) === 'object') {
853
+ var t = to[k]
854
+ if (typeof (t) === 'object') {
855
+ ab_.objectMerge(t, f, depth - 1)
856
+ continue
857
+ }
858
+ }
859
+ }
860
+
861
+ to[k] = f
862
+ }
863
+
864
+ return to
865
+ },
866
+
867
+ keepAlive(inst) {
868
+ if (!inst) {
869
+ inst = $root.$route.matched
870
+ if (inst.length) {
871
+ inst = inst[inst.length - 1].instances.default
872
+ }
873
+
874
+ if (!inst) {
875
+ return
876
+ }
877
+ }
878
+
879
+ inst = inst.$vnode || inst
880
+ inst = inst.parent
881
+ return inst && inst.componentInstance
882
+ },
883
+
884
+ keepAliveClose(key) {
885
+ var matched = $root.$route.matched
886
+ if (matched.length > 1) {
887
+ ab_.keepAliveDel(ab_.keepAlive(matched[matched.length - 1].instances.default), key)
888
+ }
889
+ },
890
+
891
+ keepAliveDel($keepAlive, key, cKey) {
892
+ if ($keepAlive && (key || cKey)) {
893
+ $keepAlive = $keepAlive.componentInstance || $keepAlive
894
+ var cache = $keepAlive.cache
895
+ var keys = $keepAlive.keys
896
+ if (cache) {
897
+ if (!cKey && key) {
898
+ for (var k in cache) {
899
+ if (cache[k].data.key === key) {
900
+ cKey = k
901
+ break
902
+ }
903
+ }
904
+ }
905
+
906
+ if (cKey) {
907
+ if (keys.length) {
908
+ var index = keys.indexOf(cKey)
909
+ if (index >= 0) {
910
+ keys.splice(index, 1)
911
+ }
912
+ }
913
+
914
+ var c = cache[cKey]
915
+ if (c) {
916
+ try {
917
+ c.componentInstance.$destroy()
918
+
919
+ } catch (e) {
920
+ console.error(e)
921
+ }
922
+ }
923
+
924
+ delete cache[cKey]
925
+ }
926
+ }
927
+ }
928
+ },
929
+
930
+ getPaths(model, paths, fromI) {
931
+ if (typeof (model) === 'object' && typeof (paths) === 'string') {
932
+ var i = fromI = fromI > 0 ? fromI : 0
933
+ while ((i = paths.indexOf('.', i)) > 0) {
934
+ var j = paths[i - 1] === ']' ? paths.lastIndexOf('[', i - 1) : -1
935
+ j = j <= fromI ? -1 : j
936
+ var path = paths.substr(fromI, (j > 0 ? j : i) - fromI)
937
+ var m = model[path]
938
+ if (m) {
939
+ if (j > 0) {
940
+ m = m[paths.substr(j + 1, i - j - 2)]
941
+ }
942
+
943
+ return ab_.getPaths(m, paths, ++i)
944
+ }
945
+
946
+ i++
947
+ }
948
+
949
+ return model[fromI > 0 ? paths.substr(fromI) : paths]
950
+ }
951
+ },
952
+
953
+ setPaths(model, val, paths, fromI) {
954
+ if (typeof (model) === 'object' && typeof (paths) === 'string') {
955
+ var i = fromI = fromI > 0 ? fromI : 0
956
+ while ((i = paths.indexOf('.', i)) > 0) {
957
+ var j = paths[i - 1] === ']' ? paths.lastIndexOf('[', i - 1) : -1
958
+ j = j <= fromI ? -1 : j
959
+ var path = paths.substr(fromI, (j > 0 ? j : i) - fromI)
960
+ var m = model[path]
961
+ if (m) {
962
+ if (j > 0) {
963
+ m = m[paths.substr(j + 1, i - j - 2)]
964
+ }
965
+
966
+ return ab_.setPaths(m, val, paths, ++i)
967
+ }
968
+
969
+ i++
970
+ }
971
+
972
+ model[fromI > 0 ? paths.substr(fromI) : paths] = val
973
+ }
974
+ },
975
+
976
+ date(time) {
977
+ return time > 0 ? new Date(time > 2147483647 ? time : (time * 1000)) : null
978
+ },
979
+
980
+ formatTime(time, fmt) {
981
+ return ab_.formatDate(ab_.date(time), fmt)
982
+ },
983
+
984
+ formatDate(date, fmt) {
985
+ if (!date || !date.getFullYear) {
986
+ return ''
987
+ }
988
+
989
+ fmt = fmt || 'yyyy-MM-dd hh:mm:ss'
990
+ if (/(y+)/.test(fmt)) {
991
+ fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
992
+ }
993
+
994
+ var o = {
995
+ 'M+': date.getMonth() + 1,
996
+ 'd+': date.getDate(),
997
+ 'h+': date.getHours(),
998
+ 'm+': date.getMinutes(),
999
+ 's+': date.getSeconds()
1000
+ }
1001
+
1002
+ for (var k in o) {
1003
+ if (new RegExp(`(${k})`).test(fmt)) {
1004
+ var str = o[k] + ''
1005
+ fmt = fmt.replace(RegExp.$1, str.length > 1 ? str : ('0' + str))
1006
+ }
1007
+ }
1008
+
1009
+ return fmt
1010
+ },
1011
+
1012
+ xhrOntimeout() {
1013
+ // console.log('请求超时。。')
1014
+ },
1015
+
1016
+ aName(name) {
1017
+ if (typeof (name) !== 'string') {
1018
+ return ''
1019
+ }
1020
+
1021
+ var len = name && name.length
1022
+ var i = 0
1023
+ var c
1024
+ for (; i < len; i++) {
1025
+ c = name[i]
1026
+ if (c < 'a' || c > 'z') {
1027
+ break
1028
+ }
1029
+ }
1030
+
1031
+ return i >= len ? '' : name.substr(0, i)
1032
+ },
1033
+
1034
+ aNameC(a, name, underline) {
1035
+ if (!a || !name) {
1036
+ return name
1037
+ }
1038
+
1039
+ if (underline) {
1040
+ return a + '_' + name
1041
+ }
1042
+
1043
+ return (a === '@' ? '' : a) + name[0].toUpperCase() + name.substr(1)
1044
+ },
1045
+
1046
+ fullScreen($this, $el, fun) {
1047
+ var $parent = $this.parentNode
1048
+ var parentSetRest
1049
+ var thisSetRest
1050
+ var $fixeds
1051
+ return function () {
1052
+ if (!parentSetRest) {
1053
+ parentSetRest = ab_.cssSetRest($parent, ['position', 'z-index', 'top', 'right', 'bottom', 'left', 'background', 'width', 'height'])
1054
+ thisSetRest = ab_.cssSetRest($this, ['position', 'top', 'right', 'bottom', 'left', 'width', 'height'])
1055
+ }
1056
+
1057
+ if ($fixeds) {
1058
+ parentSetRest.reset()
1059
+ thisSetRest.reset()
1060
+ for (var i = 0; i < $fixeds.length; i++) {
1061
+ var $fixed = $fixeds[i]
1062
+ if ($fixed[1]) {
1063
+ $fixed[0].attr('style', $fixed[1])
1064
+
1065
+ } else {
1066
+ $fixed[0].removeAttr('style')
1067
+ }
1068
+ }
1069
+
1070
+ $fixeds = null
1071
+ if ($el && $el.classList) {
1072
+ $el.classList.remove('.abFullScreenReset')
1073
+ $el.classList.add('.abFullScreenTo')
1074
+ }
1075
+
1076
+ fun && fun()
1077
+
1078
+ } else {
1079
+ parentSetRest.set(['fixed', '19891024', '0', '0', '0', '0', '#FFF'])
1080
+ thisSetRest.set(['absolute', '0', '0', '0', '0'])
1081
+ $fixeds = []
1082
+ $fixed = $parent
1083
+ if ($fixed.style) {
1084
+ while (true) {
1085
+ $fixed = $fixed.parentNode
1086
+ if (!$fixed || !$fixed.length || $fixed[0] === document) {
1087
+ break
1088
+ }
1089
+
1090
+ if ($fixed.style.position === 'fixed') {
1091
+ $fixeds.push([$fixed, $fixed.getAttribute('style')])
1092
+ $fixed.style.position === 'static'
1093
+ }
1094
+ }
1095
+
1096
+ } else {
1097
+ while (true) {
1098
+ $fixed = $fixed.parent()
1099
+ if (!$fixed || !$fixed.length || $fixed[0] === document) {
1100
+ break
1101
+ }
1102
+
1103
+ if ($fixed.css('position') === 'fixed') {
1104
+ $fixeds.push([$fixed, $fixed.attr('style')])
1105
+ $fixed.css('position', 'static')
1106
+ }
1107
+ }
1108
+ }
1109
+
1110
+ if ($el && $el.classList) {
1111
+ $el.classList.remove('.abFullScreenTo')
1112
+ $el.classList.add('.abFullScreenReset')
1113
+ }
1114
+
1115
+ fun && fun(true)
1116
+ }
1117
+ }
1118
+ },
1119
+
1120
+ cvsVal(val) {
1121
+ if (typeof (val) === 'string') {
1122
+ if (val.indexOf(',') >= 0 || val.indexOf('"') >= 0) {
1123
+ val = '"' + val.replace('"', '""') + '"'
1124
+ }
1125
+ }
1126
+
1127
+ return val === undefined || val === null ? '' : val
1128
+ },
1129
+
1130
+ downloadTxt(txt, name, bom) {
1131
+ if (bom) {
1132
+ txt = '\uFEFF' + txt
1133
+ }
1134
+
1135
+ var element = document.createElement('a')
1136
+ element.setAttribute('href', 'data:text/plain;charset=' + document.characterSet + ',' + encodeURIComponent(txt))
1137
+ element.setAttribute('download', name)
1138
+ element.style.display = 'none'
1139
+ element.click()
1140
+ setTimeout(function () {
1141
+ if (element) {
1142
+ element.remove()
1143
+ }
1144
+
1145
+ }, 100)
1146
+ },
1147
+
1148
+ funTimer(fun) {
1149
+ var timer
1150
+ var timerI
1151
+ var self = {
1152
+ start(interval) {
1153
+ if (timer && timerI != interval) {
1154
+ self.stop()
1155
+ }
1156
+
1157
+ if (!timer) {
1158
+ timerI = interval
1159
+ timer = setInterval(fun, interval)
1160
+ }
1161
+ },
1162
+ stop() {
1163
+ if (timer) {
1164
+ try {
1165
+ clearInterval(timer)
1166
+
1167
+ } catch (e) {
1168
+ console.error(e)
1169
+ }
1170
+
1171
+ timer = null
1172
+ }
1173
+ }
1174
+ }
1175
+
1176
+ return self
1177
+ },
1178
+ loadState(bind, path, target, props) {
1179
+ var state = bind && bind['_$$state$$' + path]
1180
+ if (state && target) {
1181
+ var len = props && props.length
1182
+ for (var i = 0; i < len; i++) {
1183
+ var prop = props[i]
1184
+ target[prop] = state[prop]
1185
+ }
1186
+
1187
+ return true
1188
+ }
1189
+ },
1190
+ saveState(bind, path, target, props) {
1191
+ if (bind && target) {
1192
+ var state = {}
1193
+ var len = props && props.length
1194
+ for (var i = 0; i < len; i++) {
1195
+ var prop = props[i]
1196
+ state[prop] = target[prop]
1197
+ }
1198
+
1199
+ bind['_$$state$$' + path] = state
1200
+ }
1201
+ },
1202
+ }
1203
+
1204
+ try {
1205
+ if (typeof location !== undefined) {
1206
+ ab_.local = location.hostname == '127.0.0.1' || location.hostname == 'localhost'
1207
+ ab_.https = location.href.startsWith('https')
1208
+ }
1209
+
1210
+ } catch (e) {
1211
+ console.error(e)
1212
+ }
1213
+
1214
+ module.exports = ab_