diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..9a6ebc0 --- /dev/null +++ b/App.vue @@ -0,0 +1,21 @@ + + + diff --git a/api/goods-edit.js b/api/goods-edit.js new file mode 100644 index 0000000..1499836 --- /dev/null +++ b/api/goods-edit.js @@ -0,0 +1,157 @@ +export default [{ + "id": "3", + "goodImg": "https://www.mescroll.com/demo/res/img/pd3.jpg", + "goodName": "【3】 美素佳儿Friso婴儿配方奶粉3段 ( 商品【1】【2】 已删除 )", + "goodPrice": 195.00, + "goodSold": 968 +}, { + "id": "4", + "goodImg": "https://www.mescroll.com/demo/res/img/pd4.jpg", + "goodName": "【4】 Fisher goodPrice费雪 费雪三轮儿童滑行车", + "goodPrice": 298.00, + "goodSold": 65 +}, { + "id": "5", + "goodImg": "https://www.mescroll.com/demo/res/img/pd5.jpg", + "goodName": "【5】 Babylee巴布力 实木婴儿床 雷卡拉130*70cm", + "goodPrice": 1789.00, + "goodSold": 20 +}, { + "id": "6", + "goodImg": "https://www.mescroll.com/demo/res/img/pd6.jpg", + "goodName": "【6】 Pigeon贝亲 独立三层奶粉盒 送小罐奶粉1段200g", + "goodPrice": 70.00, + "goodSold": 658 +}, { + "id": "7", + "goodImg": "https://www.mescroll.com/demo/res/img/pd7.jpg", + "goodName": "【7】 TTBOO兔兔小布 肩纽扣套装", + "goodPrice": 268.00, + "goodSold": 128 +}, { + "id": "8", + "goodImg": "https://www.mescroll.com/demo/res/img/pd8.jpg", + "goodName": "【8】 Nuna璐拉 婴儿布里奇果精纯嫩肤沐浴露婴儿精纯芦荟胶", + "goodPrice": 140.00, + "goodSold": 366 +}, { + "id": "9", + "goodImg": "https://www.mescroll.com/demo/res/img/pd9.jpg", + "goodName": "【9】 illuma启赋 奶粉3段900g", + "goodPrice": 252.00, + "goodSold": 98 +}, { + "id": "10", + "goodImg": "https://www.mescroll.com/demo/res/img/pd10.jpg", + "goodName": "【10】 Abbott雅培乳蛋白部分水解婴儿配方奶粉3段820g", + "goodPrice": 89.00, + "goodSold": 128 +}, { + "id": "11", + "goodImg": "https://www.mescroll.com/demo/res/img/pd11.jpg", + "goodName": "【11】 韩蜜 酷炫唇蜜(礼盒套装)2.8g*4", + "goodPrice": 179.00, + "goodSold": 35 +}, { + "id": "12", + "goodImg": "https://www.mescroll.com/demo/res/img/pd12.jpg", + "goodName": "【12】 保税区直发【3包装】日本Merries花王纸尿裤NB90", + "goodPrice": 289.00, + "goodSold": 1928 +}, { + "id": "13", + "goodImg": "https://www.mescroll.com/demo/res/img/pd13.jpg", + "goodName": "【13】 Comotomo可么多么 硅胶奶瓶(0-3月奶嘴)150ml绿色", + "goodPrice": 203.00, + "goodSold": 87 +}, { + "id": "14", + "goodImg": "https://www.mescroll.com/demo/res/img/pd14.jpg", + "goodName": "【14】 香港直邮德国瑞德露Rival de Loop芦荟精华安瓶", + "goodPrice": 152.00, + "goodSold": 61 +}, { + "id": "15", + "goodImg": "https://www.mescroll.com/demo/res/img/pd15.jpg", + "goodName": "【15】 保税区直发药师堂尊马油香草味温和保湿无刺激面霜", + "goodPrice": 269.00, + "goodSold": 73 +}, { + "id": "16", + "goodImg": "https://www.mescroll.com/demo/res/img/pd16.jpg", + "goodName": "【16】 香港直邮日本Spatreatment眼膜保湿去细纹法令纹", + "goodPrice": 219.00, + "goodSold": 13 +}, { + "id": "17", + "goodImg": "https://www.mescroll.com/demo/res/img/pd17.jpg", + "goodName": "【17】 韩国MEDIHEALNMF可莱丝针剂睡眠面膜", + "goodPrice": 81.00, + "goodSold": 128 +}, { + "id": "18", + "goodImg": "https://www.mescroll.com/demo/res/img/pd18.jpg", + "goodName": "【18】 DHC蝶翠诗橄榄蜂蜜滋养洗脸手工皂90g", + "goodPrice": 123.00, + "goodSold": 77 +}, { + "id": "19", + "goodImg": "https://www.mescroll.com/demo/res/img/pd19.jpg", + "goodName": "【19】 日本资生堂CPB肌肤之钥新版隔离霜 清爽型 30ml", + "goodPrice": 429.00, + "goodSold": 36 +}, { + "id": "20", + "goodImg": "https://www.mescroll.com/demo/res/img/pd20.jpg", + "goodName": "【20】 Heinz亨氏 婴儿面条优加面条全素套餐组合3口味3盒", + "goodPrice": 39.00, + "goodSold": 61 +}, { + "id": "21", + "goodImg": "https://www.mescroll.com/demo/res/img/pd21.jpg", + "goodName": "【21】 Heinz亨氏 乐维滋果汁泥组合5口味15袋", + "goodPrice": 69.00, + "goodSold": 55 +}, { + "id": "22", + "goodImg": "https://www.mescroll.com/demo/res/img/pd22.jpg", + "goodName": "【22】 保税区直发澳大利亚Swisse高浓度蔓越莓胶囊30粒", + "goodPrice": 271.00, + "goodSold": 19 +}, { + "id": "23", + "goodImg": "https://www.mescroll.com/demo/res/img/pd23.jpg", + "goodName": "【23】 挪威Nordic Naturals小鱼婴幼儿鱼油DHA滴剂", + "goodPrice": 102.00, + "goodSold": 125 +}, { + "id": "24", + "goodImg": "https://www.mescroll.com/demo/res/img/pd24.jpg", + "goodName": "【24】 澳大利亚Bio island DHA for Pregnancy海藻油DHA", + "goodPrice": 289.00, + "goodSold": 28 +}, { + "id": "25", + "goodImg": "https://www.mescroll.com/demo/res/img/pd25.jpg", + "goodName": "【25】 澳大利亚Fatblaster Coconut Detox椰子水", + "goodPrice": 152.00, + "goodSold": 17 +}, { + "id": "26", + "goodImg": "https://www.mescroll.com/demo/res/img/pd26.jpg", + "goodName": "【26】 Suitsky舒比奇 高护极薄舒爽纸尿片尿不湿XL60", + "goodPrice": 99.00, + "goodSold": 181 +}, { + "id": "27", + "goodImg": "https://www.mescroll.com/demo/res/img/pd27.jpg", + "goodName": "【27】 英国JUST SOAP手工皂 玫瑰天竺葵蛋糕皂", + "goodPrice": 72.00, + "goodSold": 66 +}, { + "id": "28", + "goodImg": "https://www.mescroll.com/demo/res/img/pd28.jpg", + "goodName": "【28】 德国NUK 多色婴幼儿带盖学饮杯", + "goodPrice": 92.00, + "goodSold": 138 +}] diff --git a/api/goods.js b/api/goods.js new file mode 100644 index 0000000..4672f74 --- /dev/null +++ b/api/goods.js @@ -0,0 +1,169 @@ +export default [{ + "id": "1", + "goodImg": "https://www.mescroll.com/demo/res/img/pd1.jpg", + "goodName": "【1】 六罐装荷兰美素佳儿金装2段900g", + "goodPrice": 1149.00, + "goodSold": 648 +}, { + "id": "2", + "goodImg": "https://www.mescroll.com/demo/res/img/pd2.jpg", + "goodName": "【2】 韩国Amore爱茉莉红吕洗发水套装修复受损发质", + "goodPrice": 89.00, + "goodSold": 128 +}, { + "id": "3", + "goodImg": "https://www.mescroll.com/demo/res/img/pd3.jpg", + "goodName": "【3】 Friso美素佳儿 金装婴儿配方奶粉3段900g", + "goodPrice": 195.00, + "goodSold": 968 +}, { + "id": "4", + "goodImg": "https://www.mescroll.com/demo/res/img/pd4.jpg", + "goodName": "【4】 Fisher goodPrice费雪 费雪三轮儿童滑行车", + "goodPrice": 299.00, + "goodSold": 85 +}, { + "id": "5", + "goodImg": "https://www.mescroll.com/demo/res/img/pd5.jpg", + "goodName": "【5】 Babylee巴布力 实木婴儿床 雷卡拉130*70cm", + "goodPrice": 1889.00, + "goodSold": 18 +}, { + "id": "6", + "goodImg": "https://www.mescroll.com/demo/res/img/pd6.jpg", + "goodName": "【6】 Pigeon贝亲 独立三层奶粉盒 送小罐奶粉1段200g", + "goodPrice": 70.00, + "goodSold": 658 +}, { + "id": "7", + "goodImg": "https://www.mescroll.com/demo/res/img/pd7.jpg", + "goodName": "【7】 TTBOO兔兔小布 肩纽扣套装", + "goodPrice": 268.00, + "goodSold": 128 +}, { + "id": "8", + "goodImg": "https://www.mescroll.com/demo/res/img/pd8.jpg", + "goodName": "【8】 Nuna璐拉 婴儿布里奇果精纯嫩肤沐浴露婴儿精纯芦荟胶", + "goodPrice": 140.00, + "goodSold": 366 +}, { + "id": "9", + "goodImg": "https://www.mescroll.com/demo/res/img/pd9.jpg", + "goodName": "【9】 illuma启赋 奶粉3段900g", + "goodPrice": 252.00, + "goodSold": 98 +}, { + "id": "10", + "goodImg": "https://www.mescroll.com/demo/res/img/pd10.jpg", + "goodName": "【10】 Abbott雅培乳蛋白部分水解婴儿配方奶粉3段820g", + "goodPrice": 89.00, + "goodSold": 128 +}, { + "id": "11", + "goodImg": "https://www.mescroll.com/demo/res/img/pd11.jpg", + "goodName": "【11】 韩蜜 酷炫唇蜜(礼盒套装)2.8g*4", + "goodPrice": 179.00, + "goodSold": 35 +}, { + "id": "12", + "goodImg": "https://www.mescroll.com/demo/res/img/pd12.jpg", + "goodName": "【12】 保税区直发【3包装】日本Merries花王纸尿裤NB90", + "goodPrice": 289.00, + "goodSold": 1928 +}, { + "id": "13", + "goodImg": "https://www.mescroll.com/demo/res/img/pd13.jpg", + "goodName": "【13】 Comotomo可么多么 硅胶奶瓶(0-3月奶嘴)150ml绿色", + "goodPrice": 203.00, + "goodSold": 87 +}, { + "id": "14", + "goodImg": "https://www.mescroll.com/demo/res/img/pd14.jpg", + "goodName": "【14】 香港直邮德国瑞德露Rival de Loop芦荟精华安瓶", + "goodPrice": 152.00, + "goodSold": 61 +}, { + "id": "15", + "goodImg": "https://www.mescroll.com/demo/res/img/pd15.jpg", + "goodName": "【15】 保税区直发药师堂尊马油香草味温和保湿无刺激面霜", + "goodPrice": 269.00, + "goodSold": 73 +}, { + "id": "16", + "goodImg": "https://www.mescroll.com/demo/res/img/pd16.jpg", + "goodName": "【16】 香港直邮日本Spatreatment眼膜保湿去细纹法令纹", + "goodPrice": 219.00, + "goodSold": 13 +}, { + "id": "17", + "goodImg": "https://www.mescroll.com/demo/res/img/pd17.jpg", + "goodName": "【17】 韩国MEDIHEALNMF可莱丝针剂睡眠面膜", + "goodPrice": 81.00, + "goodSold": 128 +}, { + "id": "18", + "goodImg": "https://www.mescroll.com/demo/res/img/pd18.jpg", + "goodName": "【18】 DHC蝶翠诗橄榄蜂蜜滋养洗脸手工皂90g", + "goodPrice": 123.00, + "goodSold": 77 +}, { + "id": "19", + "goodImg": "https://www.mescroll.com/demo/res/img/pd19.jpg", + "goodName": "【19】 日本资生堂CPB肌肤之钥新版隔离霜 清爽型 30ml", + "goodPrice": 429.00, + "goodSold": 36 +}, { + "id": "20", + "goodImg": "https://www.mescroll.com/demo/res/img/pd20.jpg", + "goodName": "【20】 Heinz亨氏 婴儿面条优加面条全素套餐组合3口味3盒", + "goodPrice": 39.00, + "goodSold": 61 +}, { + "id": "21", + "goodImg": "https://www.mescroll.com/demo/res/img/pd21.jpg", + "goodName": "【21】 Heinz亨氏 乐维滋果汁泥组合5口味15袋", + "goodPrice": 69.00, + "goodSold": 55 +}, { + "id": "22", + "goodImg": "https://www.mescroll.com/demo/res/img/pd22.jpg", + "goodName": "【22】 保税区直发澳大利亚Swisse高浓度蔓越莓胶囊30粒", + "goodPrice": 271.00, + "goodSold": 19 +}, { + "id": "23", + "goodImg": "https://www.mescroll.com/demo/res/img/pd23.jpg", + "goodName": "【23】 挪威Nordic Naturals小鱼婴幼儿鱼油DHA滴剂", + "goodPrice": 102.00, + "goodSold": 125 +}, { + "id": "24", + "goodImg": "https://www.mescroll.com/demo/res/img/pd24.jpg", + "goodName": "【24】 澳大利亚Bio island DHA for Pregnancy海藻油DHA", + "goodPrice": 289.00, + "goodSold": 28 +}, { + "id": "25", + "goodImg": "https://www.mescroll.com/demo/res/img/pd25.jpg", + "goodName": "【25】 澳大利亚Fatblaster Coconut Detox椰子水", + "goodPrice": 152.00, + "goodSold": 17 +}, { + "id": "26", + "goodImg": "https://www.mescroll.com/demo/res/img/pd26.jpg", + "goodName": "【26】 Suitsky舒比奇 高护极薄舒爽纸尿片尿不湿XL60", + "goodPrice": 99.00, + "goodSold": 181 +}, { + "id": "27", + "goodImg": "https://www.mescroll.com/demo/res/img/pd27.jpg", + "goodName": "【27】 英国JUST SOAP手工皂 玫瑰天竺葵蛋糕皂", + "goodPrice": 72.00, + "goodSold": 66 +}, { + "id": "28", + "goodImg": "https://www.mescroll.com/demo/res/img/pd28.jpg", + "goodName": "【28】 德国NUK 多色婴幼儿带盖学饮杯", + "goodPrice": 92.00, + "goodSold": 138 +}] diff --git a/api/mock.js b/api/mock.js new file mode 100644 index 0000000..9eb990c --- /dev/null +++ b/api/mock.js @@ -0,0 +1,169 @@ +/* +本地模拟接口请求, 仅demo演示用. +实际项目以您服务器接口返回的数据为准,无需本地处理分页. +请参考官方写法: https://www.mescroll.com/uni.html?v=20200210#tagUpCallback +* */ + +// 模拟数据 +import goods from "./goods.js"; +import goodsEdit from "./goods-edit.js"; + +// 获取新闻列表 +export function apiNewList(pageNum, pageSize) { + return new Promise((resolute, reject)=>{ + //延时一秒,模拟联网 + setTimeout(function() { + try { + let list = []; + if (!pageNum) { + //模拟下拉刷新返回的数据 + let id=new Date().getTime(); + let newObj = { + id:id, + title: "【新增新闻" + id + "】 标题", + content: "新增新闻的内容" + }; + list.push(newObj); + } else { + //模拟上拉加载返回的数据 + for (let i = 0; i < pageSize; i++) { + let upIndex = (pageNum - 1) * pageSize + i + 1; + let newObj = { + id:upIndex, + title: "【新闻" + upIndex + "】 标题标题标题标题标题", + content: "内容内容内容内容内容内容内容内容内容" + }; + list.push(newObj); + } + console.log("page.num=" + pageNum + ", page.size=" + pageSize + ", curPageData.length=" + list.length); + } + //模拟接口请求成功 + resolute(list); + } catch (e) { + //模拟接口请求失败 + reject(e); + } + }, 1000) + }) +} + +// 获取商品列表数据 +export function apiGoods(pageNum, pageSize, isGoodsEdit) { + return new Promise((resolute, reject)=>{ + //延时一秒,模拟联网 + setTimeout(()=> { + try{ + let data = isGoodsEdit ? goodsEdit : goods; + //模拟分页数据 + let list=[]; + for (let i = (pageNum-1)*pageSize; i < pageNum*pageSize; i++) { + if(i==data.length) break; + list.push(data[i]); + } + //模拟接口请求成功 + console.log("page.num=" + pageNum + ", page.size=" + pageSize + ", curPageData.length=" + list.length); + resolute(list); + } catch (e) { + //模拟接口请求失败 + reject(e); + } + },1000) + }) +} + +// 搜索商品 +export function apiSearch(pageNum, pageSize, keyword) { + return new Promise((resolute, reject)=>{ + //延时一秒,模拟联网 + setTimeout(()=> { + try{ + // 模拟搜索 + let list = [] + if (!keyword || keyword == "全部") { + // 模拟搜索全部商品 + for (let i = (pageNum - 1) * pageSize; i < pageNum * pageSize; i++) { + if (i === goods.length) break + list.push(goods[i]) + } + } else{ + // 模拟关键词搜索 + if(keyword=="母婴") keyword="婴"; // 为这个关键词展示多几条数据 + for (let i = 0; i < goods.length; i++) { + if (goods[i].goodName.indexOf(keyword) !== -1) { + list.push(goods[i]) + } + } + } + //模拟接口请求成功 + console.log("page.num=" + pageNum + ", page.size=" + pageSize + ", curPageData.length=" + list.length+", keyword="+keyword); + resolute(list); + } catch (e) { + //模拟接口请求失败 + reject(e); + } + },1000) + }) +} + +// 获取微博列表 +export function apiWeiboList(pageNum, pageSize) { + return new Promise((resolute, reject)=>{ + //延时2秒,模拟联网 + setTimeout(function() { + try { + let list = []; + if(!pageNum){ + //此处模拟下拉刷新返回的数据 + let id=new Date().getTime(); + let newObj={id:id, title:"【新增微博"+id+"】 新增微博", content:"新增微博的内容,新增微博的内容"}; + list.push(newObj); + }else{ + //此处模拟上拉加载返回的数据 + for (let i = 0; i < pageSize; i++) { + let upIndex=(pageNum-1)*pageSize+i+1; + let newObj={id:upIndex, title:"【微博"+upIndex+"】 标题标题标题标题标题标题", content:"内容内容内容内容内容内容内容内容内容内容"}; + list.push(newObj); + } + console.log("page.num=" + pageNum + ", page.size=" + pageSize + ", curPageData.length=" + list.length); + } + //模拟接口请求成功 + resolute(list); + } catch (e) { + //模拟接口请求失败 + reject(e); + } + }, 2000) + }) +} + + +// 获取消息列表(共5页消息) +export function apiMsgList(pageNum, pageSize) { + return new Promise((resolute, reject)=>{ + //延时一秒,模拟联网 + setTimeout(function() { + try { + let list = []; + //模拟下拉加载更多记录 + for (let i = 0; i < pageSize; i++) { + let msgId = (pageNum - 1) * pageSize + i + 1; + let newObj = { + id: msgId, + title: "【消息" + msgId + "】", + content: "内容: 下拉获取聊天记录" + }; + // 此处模拟只有5页的消息 (第5页只有3条) + if(pageNum>=5 && i>=3){}else{ + list.unshift(newObj); + } + } + console.log("page.num=" + pageNum + ", page.size=" + pageSize + ", curPageData.length=" + list.length); + //模拟接口请求成功 + resolute(list); + } catch (e) { + //模拟接口请求失败 + reject(e); + } + }, 1000) + }) +} \ No newline at end of file diff --git a/colorui/animation.css b/colorui/animation.css new file mode 100644 index 0000000..931bb51 --- /dev/null +++ b/colorui/animation.css @@ -0,0 +1,184 @@ +/* + Animation 微动画 + 基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28 + */ + +/* css 滤镜 控制黑白底色gif的 */ +.gif-black{ + mix-blend-mode: screen; +} +.gif-white{ + mix-blend-mode: multiply; +} + + +/* Animation css */ +[class*=animation-] { + animation-duration: .5s; + animation-timing-function: ease-out; + animation-fill-mode: both +} + +.animation-fade { + animation-name: fade; + animation-duration: .8s; + animation-timing-function: linear +} + +.animation-scale-up { + animation-name: scale-up +} + +.animation-scale-down { + animation-name: scale-down +} + +.animation-slide-top { + animation-name: slide-top +} + +.animation-slide-bottom { + animation-name: slide-bottom +} + +.animation-slide-left { + animation-name: slide-left +} + +.animation-slide-right { + animation-name: slide-right +} + +.animation-shake { + animation-name: shake +} + +.animation-reverse { + animation-direction: reverse +} + +@keyframes fade { + 0% { + opacity: 0 + } + + 100% { + opacity: 1 + } +} + +@keyframes scale-up { + 0% { + opacity: 0; + transform: scale(.2) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +@keyframes scale-down { + 0% { + opacity: 0; + transform: scale(1.8) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +@keyframes slide-top { + 0% { + opacity: 0; + transform: translateY(-100%) + } + + 100% { + opacity: 1; + transform: translateY(0) + } +} + +@keyframes slide-bottom { + 0% { + opacity: 0; + transform: translateY(100%) + } + + 100% { + opacity: 1; + transform: translateY(0) + } +} + +@keyframes shake { + + 0%, + 100% { + transform: translateX(0) + } + + 10% { + transform: translateX(-9px) + } + + 20% { + transform: translateX(8px) + } + + 30% { + transform: translateX(-7px) + } + + 40% { + transform: translateX(6px) + } + + 50% { + transform: translateX(-5px) + } + + 60% { + transform: translateX(4px) + } + + 70% { + transform: translateX(-3px) + } + + 80% { + transform: translateX(2px) + } + + 90% { + transform: translateX(-1px) + } +} + +@keyframes slide-left { + 0% { + opacity: 0; + transform: translateX(-100%) + } + + 100% { + opacity: 1; + transform: translateX(0) + } +} + +@keyframes slide-right { + 0% { + opacity: 0; + transform: translateX(100%) + } + + 100% { + opacity: 1; + transform: translateX(0) + } +} \ No newline at end of file diff --git a/colorui/components/cu-custom.vue b/colorui/components/cu-custom.vue new file mode 100644 index 0000000..a4e1773 --- /dev/null +++ b/colorui/components/cu-custom.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/colorui/icon.css b/colorui/icon.css new file mode 100644 index 0000000..16ed121 --- /dev/null +++ b/colorui/icon.css @@ -0,0 +1,1226 @@ +@keyframes cuIcon-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +.cuIconfont-spin { + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: inline-block; +} + +.cuIconfont-pulse { + -webkit-animation: cuIcon-spin 1s infinite steps(8); + animation: cuIcon-spin 1s infinite steps(8); + display: inline-block; +} + +[class*="cuIcon-"] { + font-family: "cuIcon"; + font-size: inherit; + font-style: normal; +} + +@font-face { + font-family: "cuIcon"; + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831'); + /* IE9*/ + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831#iefix') format('embedded-opentype'), + /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.ttf?t=1545239985831') format('truetype'), + /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.svg?t=1545239985831#cuIconfont') format('svg'); + /* iOS 4.1- */ +} + +.cuIcon-appreciate:before { + content: "\e644"; +} + +.cuIcon-check:before { + content: "\e645"; +} + +.cuIcon-close:before { + content: "\e646"; +} + +.cuIcon-edit:before { + content: "\e649"; +} + +.cuIcon-emoji:before { + content: "\e64a"; +} + +.cuIcon-favorfill:before { + content: "\e64b"; +} + +.cuIcon-favor:before { + content: "\e64c"; +} + +.cuIcon-loading:before { + content: "\e64f"; +} + +.cuIcon-locationfill:before { + content: "\e650"; +} + +.cuIcon-location:before { + content: "\e651"; +} + +.cuIcon-phone:before { + content: "\e652"; +} + +.cuIcon-roundcheckfill:before { + content: "\e656"; +} + +.cuIcon-roundcheck:before { + content: "\e657"; +} + +.cuIcon-roundclosefill:before { + content: "\e658"; +} + +.cuIcon-roundclose:before { + content: "\e659"; +} + +.cuIcon-roundrightfill:before { + content: "\e65a"; +} + +.cuIcon-roundright:before { + content: "\e65b"; +} + +.cuIcon-search:before { + content: "\e65c"; +} + +.cuIcon-taxi:before { + content: "\e65d"; +} + +.cuIcon-timefill:before { + content: "\e65e"; +} + +.cuIcon-time:before { + content: "\e65f"; +} + +.cuIcon-unfold:before { + content: "\e661"; +} + +.cuIcon-warnfill:before { + content: "\e662"; +} + +.cuIcon-warn:before { + content: "\e663"; +} + +.cuIcon-camerafill:before { + content: "\e664"; +} + +.cuIcon-camera:before { + content: "\e665"; +} + +.cuIcon-commentfill:before { + content: "\e666"; +} + +.cuIcon-comment:before { + content: "\e667"; +} + +.cuIcon-likefill:before { + content: "\e668"; +} + +.cuIcon-like:before { + content: "\e669"; +} + +.cuIcon-notificationfill:before { + content: "\e66a"; +} + +.cuIcon-notification:before { + content: "\e66b"; +} + +.cuIcon-order:before { + content: "\e66c"; +} + +.cuIcon-samefill:before { + content: "\e66d"; +} + +.cuIcon-same:before { + content: "\e66e"; +} + +.cuIcon-deliver:before { + content: "\e671"; +} + +.cuIcon-evaluate:before { + content: "\e672"; +} + +.cuIcon-pay:before { + content: "\e673"; +} + +.cuIcon-send:before { + content: "\e675"; +} + +.cuIcon-shop:before { + content: "\e676"; +} + +.cuIcon-ticket:before { + content: "\e677"; +} + +.cuIcon-back:before { + content: "\e679"; +} + +.cuIcon-cascades:before { + content: "\e67c"; +} + +.cuIcon-discover:before { + content: "\e67e"; +} + +.cuIcon-list:before { + content: "\e682"; +} + +.cuIcon-more:before { + content: "\e684"; +} + +.cuIcon-scan:before { + content: "\e689"; +} + +.cuIcon-settings:before { + content: "\e68a"; +} + +.cuIcon-questionfill:before { + content: "\e690"; +} + +.cuIcon-question:before { + content: "\e691"; +} + +.cuIcon-shopfill:before { + content: "\e697"; +} + +.cuIcon-form:before { + content: "\e699"; +} + +.cuIcon-pic:before { + content: "\e69b"; +} + +.cuIcon-filter:before { + content: "\e69c"; +} + +.cuIcon-footprint:before { + content: "\e69d"; +} + +.cuIcon-top:before { + content: "\e69e"; +} + +.cuIcon-pulldown:before { + content: "\e69f"; +} + +.cuIcon-pullup:before { + content: "\e6a0"; +} + +.cuIcon-right:before { + content: "\e6a3"; +} + +.cuIcon-refresh:before { + content: "\e6a4"; +} + +.cuIcon-moreandroid:before { + content: "\e6a5"; +} + +.cuIcon-deletefill:before { + content: "\e6a6"; +} + +.cuIcon-refund:before { + content: "\e6ac"; +} + +.cuIcon-cart:before { + content: "\e6af"; +} + +.cuIcon-qrcode:before { + content: "\e6b0"; +} + +.cuIcon-remind:before { + content: "\e6b2"; +} + +.cuIcon-delete:before { + content: "\e6b4"; +} + +.cuIcon-profile:before { + content: "\e6b7"; +} + +.cuIcon-home:before { + content: "\e6b8"; +} + +.cuIcon-cartfill:before { + content: "\e6b9"; +} + +.cuIcon-discoverfill:before { + content: "\e6ba"; +} + +.cuIcon-homefill:before { + content: "\e6bb"; +} + +.cuIcon-message:before { + content: "\e6bc"; +} + +.cuIcon-addressbook:before { + content: "\e6bd"; +} + +.cuIcon-link:before { + content: "\e6bf"; +} + +.cuIcon-lock:before { + content: "\e6c0"; +} + +.cuIcon-unlock:before { + content: "\e6c2"; +} + +.cuIcon-vip:before { + content: "\e6c3"; +} + +.cuIcon-weibo:before { + content: "\e6c4"; +} + +.cuIcon-activity:before { + content: "\e6c5"; +} + +.cuIcon-friendaddfill:before { + content: "\e6c9"; +} + +.cuIcon-friendadd:before { + content: "\e6ca"; +} + +.cuIcon-friendfamous:before { + content: "\e6cb"; +} + +.cuIcon-friend:before { + content: "\e6cc"; +} + +.cuIcon-goods:before { + content: "\e6cd"; +} + +.cuIcon-selection:before { + content: "\e6ce"; +} + +.cuIcon-explore:before { + content: "\e6d2"; +} + +.cuIcon-present:before { + content: "\e6d3"; +} + +.cuIcon-squarecheckfill:before { + content: "\e6d4"; +} + +.cuIcon-square:before { + content: "\e6d5"; +} + +.cuIcon-squarecheck:before { + content: "\e6d6"; +} + +.cuIcon-round:before { + content: "\e6d7"; +} + +.cuIcon-roundaddfill:before { + content: "\e6d8"; +} + +.cuIcon-roundadd:before { + content: "\e6d9"; +} + +.cuIcon-add:before { + content: "\e6da"; +} + +.cuIcon-notificationforbidfill:before { + content: "\e6db"; +} + +.cuIcon-explorefill:before { + content: "\e6dd"; +} + +.cuIcon-fold:before { + content: "\e6de"; +} + +.cuIcon-game:before { + content: "\e6df"; +} + +.cuIcon-redpacket:before { + content: "\e6e0"; +} + +.cuIcon-selectionfill:before { + content: "\e6e1"; +} + +.cuIcon-similar:before { + content: "\e6e2"; +} + +.cuIcon-appreciatefill:before { + content: "\e6e3"; +} + +.cuIcon-infofill:before { + content: "\e6e4"; +} + +.cuIcon-info:before { + content: "\e6e5"; +} + +.cuIcon-forwardfill:before { + content: "\e6ea"; +} + +.cuIcon-forward:before { + content: "\e6eb"; +} + +.cuIcon-rechargefill:before { + content: "\e6ec"; +} + +.cuIcon-recharge:before { + content: "\e6ed"; +} + +.cuIcon-vipcard:before { + content: "\e6ee"; +} + +.cuIcon-voice:before { + content: "\e6ef"; +} + +.cuIcon-voicefill:before { + content: "\e6f0"; +} + +.cuIcon-friendfavor:before { + content: "\e6f1"; +} + +.cuIcon-wifi:before { + content: "\e6f2"; +} + +.cuIcon-share:before { + content: "\e6f3"; +} + +.cuIcon-wefill:before { + content: "\e6f4"; +} + +.cuIcon-we:before { + content: "\e6f5"; +} + +.cuIcon-lightauto:before { + content: "\e6f6"; +} + +.cuIcon-lightforbid:before { + content: "\e6f7"; +} + +.cuIcon-lightfill:before { + content: "\e6f8"; +} + +.cuIcon-camerarotate:before { + content: "\e6f9"; +} + +.cuIcon-light:before { + content: "\e6fa"; +} + +.cuIcon-barcode:before { + content: "\e6fb"; +} + +.cuIcon-flashlightclose:before { + content: "\e6fc"; +} + +.cuIcon-flashlightopen:before { + content: "\e6fd"; +} + +.cuIcon-searchlist:before { + content: "\e6fe"; +} + +.cuIcon-service:before { + content: "\e6ff"; +} + +.cuIcon-sort:before { + content: "\e700"; +} + +.cuIcon-down:before { + content: "\e703"; +} + +.cuIcon-mobile:before { + content: "\e704"; +} + +.cuIcon-mobilefill:before { + content: "\e705"; +} + +.cuIcon-copy:before { + content: "\e706"; +} + +.cuIcon-countdownfill:before { + content: "\e707"; +} + +.cuIcon-countdown:before { + content: "\e708"; +} + +.cuIcon-noticefill:before { + content: "\e709"; +} + +.cuIcon-notice:before { + content: "\e70a"; +} + +.cuIcon-upstagefill:before { + content: "\e70e"; +} + +.cuIcon-upstage:before { + content: "\e70f"; +} + +.cuIcon-babyfill:before { + content: "\e710"; +} + +.cuIcon-baby:before { + content: "\e711"; +} + +.cuIcon-brandfill:before { + content: "\e712"; +} + +.cuIcon-brand:before { + content: "\e713"; +} + +.cuIcon-choicenessfill:before { + content: "\e714"; +} + +.cuIcon-choiceness:before { + content: "\e715"; +} + +.cuIcon-clothesfill:before { + content: "\e716"; +} + +.cuIcon-clothes:before { + content: "\e717"; +} + +.cuIcon-creativefill:before { + content: "\e718"; +} + +.cuIcon-creative:before { + content: "\e719"; +} + +.cuIcon-female:before { + content: "\e71a"; +} + +.cuIcon-keyboard:before { + content: "\e71b"; +} + +.cuIcon-male:before { + content: "\e71c"; +} + +.cuIcon-newfill:before { + content: "\e71d"; +} + +.cuIcon-new:before { + content: "\e71e"; +} + +.cuIcon-pullleft:before { + content: "\e71f"; +} + +.cuIcon-pullright:before { + content: "\e720"; +} + +.cuIcon-rankfill:before { + content: "\e721"; +} + +.cuIcon-rank:before { + content: "\e722"; +} + +.cuIcon-bad:before { + content: "\e723"; +} + +.cuIcon-cameraadd:before { + content: "\e724"; +} + +.cuIcon-focus:before { + content: "\e725"; +} + +.cuIcon-friendfill:before { + content: "\e726"; +} + +.cuIcon-cameraaddfill:before { + content: "\e727"; +} + +.cuIcon-apps:before { + content: "\e729"; +} + +.cuIcon-paintfill:before { + content: "\e72a"; +} + +.cuIcon-paint:before { + content: "\e72b"; +} + +.cuIcon-picfill:before { + content: "\e72c"; +} + +.cuIcon-refresharrow:before { + content: "\e72d"; +} + +.cuIcon-colorlens:before { + content: "\e6e6"; +} + +.cuIcon-markfill:before { + content: "\e730"; +} + +.cuIcon-mark:before { + content: "\e731"; +} + +.cuIcon-presentfill:before { + content: "\e732"; +} + +.cuIcon-repeal:before { + content: "\e733"; +} + +.cuIcon-album:before { + content: "\e734"; +} + +.cuIcon-peoplefill:before { + content: "\e735"; +} + +.cuIcon-people:before { + content: "\e736"; +} + +.cuIcon-servicefill:before { + content: "\e737"; +} + +.cuIcon-repair:before { + content: "\e738"; +} + +.cuIcon-file:before { + content: "\e739"; +} + +.cuIcon-repairfill:before { + content: "\e73a"; +} + +.cuIcon-taoxiaopu:before { + content: "\e73b"; +} + +.cuIcon-weixin:before { + content: "\e612"; +} + +.cuIcon-attentionfill:before { + content: "\e73c"; +} + +.cuIcon-attention:before { + content: "\e73d"; +} + +.cuIcon-commandfill:before { + content: "\e73e"; +} + +.cuIcon-command:before { + content: "\e73f"; +} + +.cuIcon-communityfill:before { + content: "\e740"; +} + +.cuIcon-community:before { + content: "\e741"; +} + +.cuIcon-read:before { + content: "\e742"; +} + +.cuIcon-calendar:before { + content: "\e74a"; +} + +.cuIcon-cut:before { + content: "\e74b"; +} + +.cuIcon-magic:before { + content: "\e74c"; +} + +.cuIcon-backwardfill:before { + content: "\e74d"; +} + +.cuIcon-playfill:before { + content: "\e74f"; +} + +.cuIcon-stop:before { + content: "\e750"; +} + +.cuIcon-tagfill:before { + content: "\e751"; +} + +.cuIcon-tag:before { + content: "\e752"; +} + +.cuIcon-group:before { + content: "\e753"; +} + +.cuIcon-all:before { + content: "\e755"; +} + +.cuIcon-backdelete:before { + content: "\e756"; +} + +.cuIcon-hotfill:before { + content: "\e757"; +} + +.cuIcon-hot:before { + content: "\e758"; +} + +.cuIcon-post:before { + content: "\e759"; +} + +.cuIcon-radiobox:before { + content: "\e75b"; +} + +.cuIcon-rounddown:before { + content: "\e75c"; +} + +.cuIcon-upload:before { + content: "\e75d"; +} + +.cuIcon-writefill:before { + content: "\e760"; +} + +.cuIcon-write:before { + content: "\e761"; +} + +.cuIcon-radioboxfill:before { + content: "\e763"; +} + +.cuIcon-punch:before { + content: "\e764"; +} + +.cuIcon-shake:before { + content: "\e765"; +} + +.cuIcon-move:before { + content: "\e768"; +} + +.cuIcon-safe:before { + content: "\e769"; +} + +.cuIcon-activityfill:before { + content: "\e775"; +} + +.cuIcon-crownfill:before { + content: "\e776"; +} + +.cuIcon-crown:before { + content: "\e777"; +} + +.cuIcon-goodsfill:before { + content: "\e778"; +} + +.cuIcon-messagefill:before { + content: "\e779"; +} + +.cuIcon-profilefill:before { + content: "\e77a"; +} + +.cuIcon-sound:before { + content: "\e77b"; +} + +.cuIcon-sponsorfill:before { + content: "\e77c"; +} + +.cuIcon-sponsor:before { + content: "\e77d"; +} + +.cuIcon-upblock:before { + content: "\e77e"; +} + +.cuIcon-weblock:before { + content: "\e77f"; +} + +.cuIcon-weunblock:before { + content: "\e780"; +} + +.cuIcon-my:before { + content: "\e78b"; +} + +.cuIcon-myfill:before { + content: "\e78c"; +} + +.cuIcon-emojifill:before { + content: "\e78d"; +} + +.cuIcon-emojiflashfill:before { + content: "\e78e"; +} + +.cuIcon-flashbuyfill:before { + content: "\e78f"; +} + +.cuIcon-text:before { + content: "\e791"; +} + +.cuIcon-goodsfavor:before { + content: "\e794"; +} + +.cuIcon-musicfill:before { + content: "\e795"; +} + +.cuIcon-musicforbidfill:before { + content: "\e796"; +} + +.cuIcon-card:before { + content: "\e624"; +} + +.cuIcon-triangledownfill:before { + content: "\e79b"; +} + +.cuIcon-triangleupfill:before { + content: "\e79c"; +} + +.cuIcon-roundleftfill-copy:before { + content: "\e79e"; +} + +.cuIcon-font:before { + content: "\e76a"; +} + +.cuIcon-title:before { + content: "\e82f"; +} + +.cuIcon-recordfill:before { + content: "\e7a4"; +} + +.cuIcon-record:before { + content: "\e7a6"; +} + +.cuIcon-cardboardfill:before { + content: "\e7a9"; +} + +.cuIcon-cardboard:before { + content: "\e7aa"; +} + +.cuIcon-formfill:before { + content: "\e7ab"; +} + +.cuIcon-coin:before { + content: "\e7ac"; +} + +.cuIcon-cardboardforbid:before { + content: "\e7af"; +} + +.cuIcon-circlefill:before { + content: "\e7b0"; +} + +.cuIcon-circle:before { + content: "\e7b1"; +} + +.cuIcon-attentionforbid:before { + content: "\e7b2"; +} + +.cuIcon-attentionforbidfill:before { + content: "\e7b3"; +} + +.cuIcon-attentionfavorfill:before { + content: "\e7b4"; +} + +.cuIcon-attentionfavor:before { + content: "\e7b5"; +} + +.cuIcon-titles:before { + content: "\e701"; +} + +.cuIcon-icloading:before { + content: "\e67a"; +} + +.cuIcon-full:before { + content: "\e7bc"; +} + +.cuIcon-mail:before { + content: "\e7bd"; +} + +.cuIcon-peoplelist:before { + content: "\e7be"; +} + +.cuIcon-goodsnewfill:before { + content: "\e7bf"; +} + +.cuIcon-goodsnew:before { + content: "\e7c0"; +} + +.cuIcon-medalfill:before { + content: "\e7c1"; +} + +.cuIcon-medal:before { + content: "\e7c2"; +} + +.cuIcon-newsfill:before { + content: "\e7c3"; +} + +.cuIcon-newshotfill:before { + content: "\e7c4"; +} + +.cuIcon-newshot:before { + content: "\e7c5"; +} + +.cuIcon-news:before { + content: "\e7c6"; +} + +.cuIcon-videofill:before { + content: "\e7c7"; +} + +.cuIcon-video:before { + content: "\e7c8"; +} + +.cuIcon-exit:before { + content: "\e7cb"; +} + +.cuIcon-skinfill:before { + content: "\e7cc"; +} + +.cuIcon-skin:before { + content: "\e7cd"; +} + +.cuIcon-moneybagfill:before { + content: "\e7ce"; +} + +.cuIcon-usefullfill:before { + content: "\e7cf"; +} + +.cuIcon-usefull:before { + content: "\e7d0"; +} + +.cuIcon-moneybag:before { + content: "\e7d1"; +} + +.cuIcon-redpacket_fill:before { + content: "\e7d3"; +} + +.cuIcon-subscription:before { + content: "\e7d4"; +} + +.cuIcon-loading1:before { + content: "\e633"; +} + +.cuIcon-github:before { + content: "\e692"; +} + +.cuIcon-global:before { + content: "\e7eb"; +} + +.cuIcon-settingsfill:before { + content: "\e6ab"; +} + +.cuIcon-back_android:before { + content: "\e7ed"; +} + +.cuIcon-expressman:before { + content: "\e7ef"; +} + +.cuIcon-evaluate_fill:before { + content: "\e7f0"; +} + +.cuIcon-group_fill:before { + content: "\e7f5"; +} + +.cuIcon-play_forward_fill:before { + content: "\e7f6"; +} + +.cuIcon-deliver_fill:before { + content: "\e7f7"; +} + +.cuIcon-notice_forbid_fill:before { + content: "\e7f8"; +} + +.cuIcon-fork:before { + content: "\e60c"; +} + +.cuIcon-pick:before { + content: "\e7fa"; +} + +.cuIcon-wenzi:before { + content: "\e6a7"; +} + +.cuIcon-ellipse:before { + content: "\e600"; +} + +.cuIcon-qr_code:before { + content: "\e61b"; +} + +.cuIcon-dianhua:before { + content: "\e64d"; +} + +.cuIcon-cuIcon:before { + content: "\e602"; +} + +.cuIcon-loading2:before { + content: "\e7f1"; +} + +.cuIcon-btn:before { + content: "\e601"; +} diff --git a/colorui/main.css b/colorui/main.css new file mode 100644 index 0000000..6369c8a --- /dev/null +++ b/colorui/main.css @@ -0,0 +1,3927 @@ +/* + ColorUi for uniApp v2.1.6 | by 文晓港 2019-05-31 10:44:24 + 仅供学习交流,如作它用所承受的法律责任一概与作者无关 + + *使用ColorUi开发扩展与插件时,请注明基于ColorUi开发 + + (QQ交流群:240787041) +*/ + +/* ================== + 初始化 + ==================== */ +body { + background-color: #fff; + font-size: 28upx; + color: #333333; + font-family: Helvetica Neue, Helvetica, sans-serif; +} + +view, +scroll-view, +swiper, +button, +input, +textarea, +label, +navigator, +image { + box-sizing: border-box; +} + +.round { + border-radius: 5000upx; +} + +.radius { + border-radius: 6upx; +} + +/* ================== + 图片 + ==================== */ + +image { + max-width: 100%; + display: inline-block; + position: relative; + z-index: 0; +} + +image.loading::before { + content: ""; + background-color: #f5f5f5; + display: block; + position: absolute; + width: 100%; + height: 100%; + z-index: -2; +} + +image.loading::after { + content: "\e7f1"; + font-family: "cuIcon"; + position: absolute; + top: 0; + left: 0; + width: 32upx; + height: 32upx; + line-height: 32upx; + right: 0; + bottom: 0; + z-index: -1; + font-size: 32upx; + margin: auto; + color: #ccc; + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: block; +} + +.response { + width: 100%; +} + +/* ================== + 开关 + ==================== */ + +switch, +checkbox, +radio { + position: relative; +} + +switch::after, +switch::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 0%; + left: 0upx; + font-size: 26upx; + line-height: 26px; + width: 50%; + text-align: center; + pointer-events: none; + transform: scale(0, 0); + transition: all 0.3s ease-in-out 0s; + z-index: 9; + bottom: 0; + height: 26px; + margin: auto; +} + +switch::before { + content: "\e646"; + right: 0; + transform: scale(1, 1); + left: auto; +} + +switch[checked]::after, +switch.checked::after { + transform: scale(1, 1); +} + +switch[checked]::before, +switch.checked::before { + transform: scale(0, 0); +} + +/* #ifndef MP-ALIPAY */ +radio::before, +checkbox::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 50%; + margin-top: -8px; + right: 5px; + font-size: 32upx; + line-height: 16px; + pointer-events: none; + transform: scale(1, 1); + transition: all 0.3s ease-in-out 0s; + z-index: 9; +} + +radio .wx-radio-input, +checkbox .wx-checkbox-input, +radio .uni-radio-input, +checkbox .uni-checkbox-input { + margin: 0; + width: 24px; + height: 24px; +} + +checkbox.round .wx-checkbox-input, +checkbox.round .uni-checkbox-input { + border-radius: 100upx; +} + +/* #endif */ + +switch[checked]::before { + transform: scale(0, 0); +} + +switch .wx-switch-input, +switch .uni-switch-input { + border: none; + padding: 0 24px; + width: 48px; + height: 26px; + margin: 0; + border-radius: 100upx; +} + +switch .wx-switch-input:not([class*="bg-"]), +switch .uni-switch-input:not([class*="bg-"]) { + background: #8799a3 !important; +} + +switch .wx-switch-input::after, +switch .uni-switch-input::after { + margin: auto; + width: 26px; + height: 26px; + border-radius: 100upx; + left: 0upx; + top: 0upx; + bottom: 0upx; + position: absolute; + transform: scale(0.9, 0.9); + transition: all 0.1s ease-in-out 0s; +} + +switch .wx-switch-input.wx-switch-input-checked::after, +switch .uni-switch-input.uni-switch-input-checked::after { + margin: auto; + left: 22px; + box-shadow: none; + transform: scale(0.9, 0.9); +} + +radio-group { + display: inline-block; +} + + + +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::before, +switch.radius .uni-switch-input::after, +switch.radius .uni-switch-input, +switch.radius .uni-switch-input::before { + border-radius: 10upx; +} + +switch .wx-switch-input::before, +radio.radio::before, +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +switch .uni-switch-input::before, +radio.radio::before, +checkbox .uni-checkbox-input::before, +radio .uni-radio-input::before { + display: none; +} + +radio.radio[checked]::after, +radio.radio .uni-radio-input-checked::after { + content: ""; + background-color: transparent; + display: block; + position: absolute; + width: 8px; + height: 8px; + z-index: 999; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + border-radius: 200upx; + /* #ifndef MP */ + border: 7px solid #ffffff !important; + /* #endif */ + + /* #ifdef MP */ + border: 8px solid #ffffff !important; + /* #endif */ +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input, +.switch-sex .uni-switch-input { + background: #e54d42 !important; + border-color: #e54d42 !important; +} + +.switch-sex[checked] .wx-switch-input, +.switch-sex.checked .uni-switch-input { + background: #0081ff !important; + border-color: #0081ff !important; +} + +switch.red[checked] .wx-switch-input.wx-switch-input-checked, +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red.checked .uni-switch-input.uni-switch-input-checked, +checkbox.red.checked .uni-checkbox-input, +radio.red.checked .uni-radio-input { + background-color: #e54d42 !important; + border-color: #e54d42 !important; + color: #ffffff !important; +} + +switch.orange[checked] .wx-switch-input, +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange.checked .uni-switch-input, +checkbox.orange.checked .uni-checkbox-input, +radio.orange.checked .uni-radio-input { + background-color: #f37b1d !important; + border-color: #f37b1d !important; + color: #ffffff !important; +} + +switch.yellow[checked] .wx-switch-input, +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow.checked .uni-switch-input, +checkbox.yellow.checked .uni-checkbox-input, +radio.yellow.checked .uni-radio-input { + background-color: #fbbd08 !important; + border-color: #fbbd08 !important; + color: #333333 !important; +} + +switch.olive[checked] .wx-switch-input, +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive.checked .uni-switch-input, +checkbox.olive.checked .uni-checkbox-input, +radio.olive.checked .uni-radio-input { + background-color: #8dc63f !important; + border-color: #8dc63f !important; + color: #ffffff !important; +} + +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input, +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input, +switch.green.checked .uni-switch-input, +switch.checked .uni-switch-input, +checkbox.green.checked .uni-checkbox-input, +checkbox.checked .uni-checkbox-input, +radio.green.checked .uni-radio-input, +radio.checked .uni-radio-input { + background-color: #39b54a !important; + border-color: #39b54a !important; + color: #ffffff !important; + border-color: #39B54A !important; +} + +switch.cyan[checked] .wx-switch-input, +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan.checked .uni-switch-input, +checkbox.cyan.checked .uni-checkbox-input, +radio.cyan.checked .uni-radio-input { + background-color: #1cbbb4 !important; + border-color: #1cbbb4 !important; + color: #ffffff !important; +} + +switch.blue[checked] .wx-switch-input, +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue.checked .uni-switch-input, +checkbox.blue.checked .uni-checkbox-input, +radio.blue.checked .uni-radio-input { + background-color: #0081ff !important; + border-color: #0081ff !important; + color: #ffffff !important; +} + +switch.purple[checked] .wx-switch-input, +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple.checked .uni-switch-input, +checkbox.purple.checked .uni-checkbox-input, +radio.purple.checked .uni-radio-input { + background-color: #6739b6 !important; + border-color: #6739b6 !important; + color: #ffffff !important; +} + +switch.mauve[checked] .wx-switch-input, +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve.checked .uni-switch-input, +checkbox.mauve.checked .uni-checkbox-input, +radio.mauve.checked .uni-radio-input { + background-color: #9c26b0 !important; + border-color: #9c26b0 !important; + color: #ffffff !important; +} + +switch.pink[checked] .wx-switch-input, +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink.checked .uni-switch-input, +checkbox.pink.checked .uni-checkbox-input, +radio.pink.checked .uni-radio-input { + background-color: #e03997 !important; + border-color: #e03997 !important; + color: #ffffff !important; +} + +switch.brown[checked] .wx-switch-input, +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown.checked .uni-switch-input, +checkbox.brown.checked .uni-checkbox-input, +radio.brown.checked .uni-radio-input { + background-color: #a5673f !important; + border-color: #a5673f !important; + color: #ffffff !important; +} + +switch.grey[checked] .wx-switch-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input, +switch.grey.checked .uni-switch-input, +checkbox.grey.checked .uni-checkbox-input, +radio.grey.checked .uni-radio-input { + background-color: #8799a3 !important; + border-color: #8799a3 !important; + color: #ffffff !important; +} + +switch.gray[checked] .wx-switch-input, +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +switch.gray.checked .uni-switch-input, +checkbox.gray.checked .uni-checkbox-input, +radio.gray.checked .uni-radio-input { + background-color: #f0f0f0 !important; + border-color: #f0f0f0 !important; + color: #333333 !important; +} + +switch.black[checked] .wx-switch-input, +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black.checked .uni-switch-input, +checkbox.black.checked .uni-checkbox-input, +radio.black.checked .uni-radio-input { + background-color: #333333 !important; + border-color: #333333 !important; + color: #ffffff !important; +} + +switch.white[checked] .wx-switch-input, +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white.checked .uni-switch-input, +checkbox.white.checked .uni-checkbox-input, +radio.white.checked .uni-radio-input { + background-color: #ffffff !important; + border-color: #ffffff !important; + color: #333333 !important; +} + +/* ================== + 边框 + ==================== */ + +/* -- 实线 -- */ + +.solid, +.solid-top, +.solid-right, +.solid-bottom, +.solid-left, +.solids, +.solids-top, +.solids-right, +.solids-bottom, +.solids-left, +.dashed, +.dashed-top, +.dashed-right, +.dashed-bottom, +.dashed-left { + position: relative; +} + +.solid::after, +.solid-top::after, +.solid-right::after, +.solid-bottom::after, +.solid-left::after, +.solids::after, +.solids-top::after, +.solids-right::after, +.solids-bottom::after, +.solids-left::after, +.dashed::after, +.dashed-top::after, +.dashed-right::after, +.dashed-bottom::after, +.dashed-left::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; +} + +.solid::after { + border: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-top::after { + border-top: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-right::after { + border-right: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-bottom::after { + border-bottom: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-left::after { + border-left: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solids::after { + border: 8upx solid #eee; +} + +.solids-top::after { + border-top: 8upx solid #eee; +} + +.solids-right::after { + border-right: 8upx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8upx solid #eee; +} + +.solids-left::after { + border-left: 8upx solid #eee; +} + +/* -- 虚线 -- */ + +.dashed::after { + border: 1upx dashed #ddd; +} + +.dashed-top::after { + border-top: 1upx dashed #ddd; +} + +.dashed-right::after { + border-right: 1upx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1upx dashed #ddd; +} + +.dashed-left::after { + border-left: 1upx dashed #ddd; +} + +/* -- 阴影 -- */ + +.shadow[class*='white'] { + --ShadowSize: 0 1upx 6upx; +} + +.shadow-lg { + --ShadowSize: 0upx 40upx 100upx 0upx; +} + +.shadow-warp { + position: relative; + box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); +} + +.shadow-warp:before, +.shadow-warp:after { + position: absolute; + content: ""; + top: 20upx; + bottom: 30upx; + left: 20upx; + width: 50%; + box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2); + transform: rotate(-3deg); + z-index: -1; +} + +.shadow-warp:after { + right: 20upx; + left: auto; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + content: ""; + display: block; + background: inherit; + filter: blur(10upx); + position: absolute; + width: 100%; + height: 100%; + top: 10upx; + left: 10upx; + z-index: -1; + opacity: 0.4; + transform-origin: 0 0; + border-radius: inherit; + transform: scale(1, 1); +} + +/* ================== + 按钮 + ==================== */ + +.cu-btn { + position: relative; + border: 0upx; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0 30upx; + font-size: 28upx; + height: 64upx; + line-height: 1; + text-align: center; + text-decoration: none; + overflow: visible; + margin-left: initial; + transform: translate(0upx, 0upx); + margin-right: initial; +} + +.cu-btn::after { + display: none; +} + +/* .cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} */ + +.cu-btn[class*="line"] { + background-color: transparent; +} + +.cu-btn[class*="line"]::after { + content: " "; + display: block; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: 12upx; + z-index: 1; + pointer-events: none; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-btn[class*="lines"]::after { + border: 6upx solid currentColor; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + padding: 0 20upx; + font-size: 20upx; + height: 48upx; +} + +.cu-btn.lg { + padding: 0 40upx; + font-size: 32upx; + height: 80upx; +} + +.cu-btn.cuIcon.sm { + width: 48upx; + height: 48upx; +} + +.cu-btn.cuIcon { + width: 64upx; + height: 64upx; + border-radius: 500upx; + padding: 0; +} + +button.cuIcon.lg { + width: 80upx; + height: 80upx; +} + +.cu-btn.shadow-blur::before { + top: 4upx; + left: 4upx; + filter: blur(6upx); + opacity: 0.6; +} + +.cu-btn.button-hover { + transform: translate(1upx, 1upx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + opacity: 0.6; + color: #ffffff; +} + +/* ================== + 徽章 + ==================== */ + +.cu-tag { + font-size: 24upx; + vertical-align: middle; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0upx 16upx; + height: 48upx; + font-family: Helvetica Neue, Helvetica, sans-serif; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: #f1f1f1; +} + +.cu-tag[class*="line-"]::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: inherit; + z-index: 1; + pointer-events: none; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12upx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10upx; +} + +.cu-tag.sm { + font-size: 20upx; + padding: 0upx 12upx; + height: 32upx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 10upx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0upx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0upx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-top-left-radius: 6upx; + border-bottom-left-radius: 6upx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-top-right-radius: 12upx; + border-bottom-right-radius: 12upx; +} + +.cu-capsule.round .cu-tag:first-child { + border-top-left-radius: 200upx; + border-bottom-left-radius: 200upx; + text-indent: 4upx; +} + +.cu-capsule.round .cu-tag:last-child::after, +.cu-capsule.round .cu-tag:last-child { + border-top-right-radius: 200upx; + border-bottom-right-radius: 200upx; + text-indent: -4upx; +} + +.cu-tag.badge { + border-radius: 200upx; + position: absolute; + top: -10upx; + right: -10upx; + font-size: 20upx; + padding: 0upx 10upx; + height: 28upx; + color: #ffffff; +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + padding: 0upx; + width: 16upx; + height: 16upx; + top: -4upx; + right: -4upx; +} + +.cu-tag[class*="cuIcon-"] { + width: 32upx; + height: 32upx; + top: -4upx; + right: -4upx; +} + +/* ================== + 头像 + ==================== */ + +.cu-avatar { + font-variant: small-caps; + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + background-color: #ccc; + color: #ffffff; + white-space: nowrap; + position: relative; + width: 64upx; + height: 64upx; + background-size: cover; + background-position: center; + vertical-align: middle; + font-size: 1.5em; +} + +.cu-avatar.sm { + width: 48upx; + height: 48upx; + font-size: 1em; +} + +.cu-avatar.lg { + width: 96upx; + height: 96upx; + font-size: 2em; +} + +.cu-avatar.xl { + width: 128upx; + height: 128upx; + font-size: 2.5em; +} + +.cu-avatar .avatar-text { + font-size: 0.4em; +} + +.cu-avatar-group { + direction: rtl; + unicode-bidi: bidi-override; + padding: 0 10upx 0 40upx; + display: inline-block; +} + +.cu-avatar-group .cu-avatar { + margin-left: -30upx; + border: 4upx solid #f1f1f1; + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + margin-left: -20upx; + border: 1upx solid #f1f1f1; +} + +/* ================== + 进度条 + ==================== */ + +.cu-progress { + overflow: hidden; + height: 28upx; + background-color: #ebeef5; + display: inline-flex; + align-items: center; + width: 100%; +} + +.cu-progress+view, +.cu-progress+text { + line-height: 1; +} + +.cu-progress.xs { + height: 10upx; +} + +.cu-progress.sm { + height: 20upx; +} + +.cu-progress view { + width: 0; + height: 100%; + align-items: center; + display: flex; + justify-items: flex-end; + justify-content: space-around; + font-size: 20upx; + color: #ffffff; + transition: width 0.6s ease; +} + +.cu-progress text { + align-items: center; + display: flex; + font-size: 20upx; + color: #333333; + text-indent: 10upx; +} + +.cu-progress.text-progress { + padding-right: 60upx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 72upx 72upx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@keyframes progress-stripes { + from { + background-position: 72upx 0; + } + + to { + background-position: 0 0; + } +} + +/* ================== + 加载 + ==================== */ + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + font-family: "cuIcon"; + display: inline-block; + margin-right: 6upx; +} + +.cu-load.loading::before { + content: "\e67a"; + animation: cuIcon-spin 2s infinite linear; +} + +.cu-load.loading::after { + content: "加载中..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "没有更多了"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "加载失败"; +} + +.cu-load.load-cuIcon::before { + font-size: 32upx; +} + +.cu-load.load-cuIcon::after { + display: none; +} + +.cu-load.load-cuIcon.over { + display: none; +} + +.cu-load.load-modal { + position: fixed; + top: 0; + right: 0; + bottom: 140upx; + left: 0; + margin: auto; + width: 260upx; + height: 260upx; + background-color: #ffffff; + border-radius: 10upx; + box-shadow: 0 0 0upx 2000upx rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + font-size: 28upx; + z-index: 9999; + line-height: 2.4em; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60upx; +} + +.cu-load.load-modal image { + width: 70upx; + height: 70upx; +} + +.cu-load.load-modal::after { + content: ""; + position: absolute; + background-color: #ffffff; + border-radius: 50%; + width: 200upx; + height: 200upx; + font-size: 10px; + border-top: 6upx solid rgba(0, 0, 0, 0.05); + border-right: 6upx solid rgba(0, 0, 0, 0.05); + border-bottom: 6upx solid rgba(0, 0, 0, 0.05); + border-left: 6upx solid #f37b1d; + animation: cuIcon-spin 1s infinite linear; + z-index: -1; +} + +.load-progress { + pointer-events: none; + top: 0; + position: fixed; + width: 100%; + left: 0; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + position: relative; + width: 100%; + height: 4upx; + overflow: hidden; + transition: all 200ms ease 0s; +} + +.load-progress .load-progress-spinner { + position: absolute; + top: 10upx; + right: 10upx; + z-index: 2000; + display: block; +} + +.load-progress .load-progress-spinner::after { + content: ""; + display: block; + width: 24upx; + height: 24upx; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 4upx transparent; + border-top-color: inherit; + border-left-color: inherit; + border-radius: 50%; + -webkit-animation: load-progress-spinner 0.4s linear infinite; + animation: load-progress-spinner 0.4s linear infinite; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* ================== + 列表 + ==================== */ +.grayscale { + filter: grayscale(1); +} + +.cu-list+.cu-list { + margin-top: 30upx +} + +.cu-list>.cu-item { + transition: all .6s ease-in-out 0s; + transform: translateX(0upx) +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-260upx) +} + +.cu-list>.cu-item.move-cur1 { + transform: translateX(-160upx) +} + +.cu-list>.cu-item .move { + position: absolute; + top: 40%; + right: 0; + display: flex; + width: 260upx; + /* height: 100%; */ + transform: translateX(100%) +} + +.cu-list>.cu-item .move1 { + position: absolute; + top: 40%; + right: 0; + display: flex; + width: 160upx; + /* height: 100%; */ + transform: translateX(100%) +} + +.cu-list>.cu-item .move view { + display: flex; + flex: 1; + justify-content: center; + align-items: center +} + +.cu-list.menu-avatar { + /* overflow: hidden; */ +} + +.cu-list.menu-avatar>.cu-item { + position: relative; + /* display: flex; */ + /* padding-right: 10upx; */ + /* height: 140upx; + background-color: #ffffff; + justify-content: flex-end; */ + /* align-items: center */ +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + position: absolute; + left: 30upx +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510upx +} + +.cu-list.menu-avatar>.cu-item .content { + position: absolute; + left: 146upx; + width: calc(100% - 96upx - 60upx - 120upx - 20upx); + line-height: 1.6em; +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96upx - 60upx - 20upx); +} + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + font-size: 30upx; + display: flex; + align-items: center +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu-avatar>.cu-item .action { + width: 100upx; + text-align: center +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10upx +} + +.cu-list.menu-avatar.comment>.cu-item .content { + position: relative; + left: 0; + width: auto; + flex: 1; +} + +.cu-list.menu-avatar.comment>.cu-item { + padding: 30upx 30upx 30upx 120upx; + height: auto +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start +} + +.cu-list.menu>.cu-item { + position: relative; + display: flex; + padding: 0 30upx; + min-height: 100upx; + background-color: #ffffff; + justify-content: space-between; + align-items: center +} + +.cu-list.menu>.cu-item:last-child:after { + border: none +} + +.cu-list.menu-avatar>.cu-item:after, +.cu-list.menu>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-bottom: 1upx solid #ddd; + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5 +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9 +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90upx +} + +.cu-list.menu>.cu-item.arrow:before { + position: absolute; + top: 0; + right: 30upx; + bottom: 0; + display: block; + margin: auto; + width: 30upx; + height: 30upx; + color: #8799a3; + content: "\e6a3"; + text-align: center; + font-size: 34upx; + font-family: cuIcon; + line-height: 30upx +} + +.cu-list.menu>.cu-item button.content { + padding: 0; + background-color: transparent; + justify-content: flex-start +} + +.cu-list.menu>.cu-item button.content:after { + display: none +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: #ffffff +} + +.cu-list.menu>.cu-item .content>view:first-child { + display: flex; + align-items: center +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + text-align: center +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + height: 1.6em; + vertical-align: middle +} + +.cu-list.menu>.cu-item .content { + font-size: 30upx; + line-height: 1.6em; + flex: 1 +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10upx +} + +.cu-list.menu { + display: block; + overflow: hidden +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30upx; + width: calc(200% - 120upx) +} + +.cu-list.grid>.cu-item { + position: relative; + display: flex; + padding: 20upx 0 30upx; + transition-duration: 0s; + flex-direction: column +} + +.cu-list.grid>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-right: 1px solid rgba(0, 0, 0, .1); + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.grid>.cu-item text { + display: block; + margin-top: 10upx; + color: #888; + font-size: 26upx; + line-height: 40upx +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + position: relative; + display: block; + margin-top: 20upx; + width: 100%; + font-size: 48upx +} + +.cu-list.grid>.cu-item .cu-tag { + right: auto; + left: 50%; + margin-left: 20upx +} + +.cu-list.grid { + background-color: #ffffff; + text-align: center +} + +.cu-list.grid.no-border>.cu-item { + padding-top: 10upx; + padding-bottom: 20upx +} + +.cu-list.grid.no-border>.cu-item:after { + border: none +} + +.cu-list.grid.no-border { + padding: 20upx 10upx +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0 +} + +.cu-list.card-menu { + overflow: hidden; + margin-right: 30upx; + margin-left: 30upx; + border-radius: 20upx +} + + +/* ================== + 操作条 + ==================== */ + +.cu-bar { + display: flex; + position: relative; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-bar .action { + display: flex; + align-items: center; + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10upx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + position: absolute; + bottom: -0.5rem; + min-width: 2rem; + height: 6upx; + left: 0; +} + +.cu-bar .action.sub-title { + position: relative; + top: -0.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.2rem; + border-radius: 6upx; + width: 100%; + height: 0.6rem; + left: 0.6rem; + opacity: 0.3; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.7rem; + left: 0.5rem; + opacity: 0.2; + z-index: 0; + text-align: right; + font-weight: 900; + font-size: 36upx; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + right: 0; + margin: auto; + text-align: center; +} + +.cu-bar .action:first-child { + margin-left: 30upx; + font-size: 30upx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20upx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -0.3em; + margin-right: 0.3em; +} + +.cu-bar .action:last-child { + margin-right: 30upx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36upx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: 0.5em; +} + +.cu-bar .content { + position: absolute; + text-align: center; + width: calc(100% - 340upx); + left: 0; + right: 0; + bottom: 0; + top: 0; + margin: auto; + height: 60upx; + font-size: 32upx; + line-height: 60upx; + cursor: none; + pointer-events: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.cu-bar.ios .content { + bottom: 7px; + height: 30px; + font-size: 32upx; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + padding: 20upx 32upx; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20upx; + max-width: 50%; +} + +.cu-bar .search-form { + background-color: #f5f5f5; + line-height: 64upx; + height: 64upx; + font-size: 24upx; + color: #333333; + flex: 1; + display: flex; + align-items: center; + margin: 0 30upx; +} + +.cu-bar .search-form+.action { + margin-right: 30upx; +} + +.cu-bar .search-form input { + flex: 1; + padding-right: 30upx; + height: 64upx; + line-height: 64upx; + font-size: 26upx; + background-color: transparent; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 0.5em 0 0.8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0upx; +} + +.cu-bar.fixed, +.nav.fixed { + position: fixed; + width: 100%; + top: 0; + z-index: 1024; + box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar { + padding: 0; + height: calc(100upx + env(safe-area-inset-bottom) / 2); + padding-bottom: calc(env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100upx; + height: calc(100upx + env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar .action { + font-size: 22upx; + position: relative; + flex: 1; + text-align: center; + padding: 0; + display: block; + height: auto; + line-height: 1; + margin: 0; + background-color: inherit; + overflow: initial; +} + +.cu-bar.tabbar.shop .action { + width: 140upx; + flex: initial; +} + +.cu-bar.tabbar .action.add-action { + position: relative; + z-index: 2; + padding-top: 50upx; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + position: absolute; + width: 70upx; + z-index: 2; + height: 70upx; + border-radius: 50%; + line-height: 70upx; + font-size: 50upx; + top: -35upx; + left: 0; + right: 0; + margin: auto; + padding: 0; +} + +.cu-bar.tabbar .action.add-action::after { + content: ""; + position: absolute; + width: 100upx; + height: 100upx; + top: -50upx; + left: 0; + right: 0; + margin: auto; + box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08); + border-radius: 50upx; + background-color: inherit; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::before { + content: ""; + position: absolute; + width: 100upx; + height: 30upx; + bottom: 30upx; + left: 0; + right: 0; + margin: auto; + background-color: inherit; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + flex: 1; + display: flex; + justify-content: space-around; + align-items: center; + padding: 0 10upx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + width: 100upx; + position: relative; + display: block; + height: auto; + margin: 0 auto 10upx; + text-align: center; + font-size: 40upx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + width: 50upx; + height: 50upx; + display: inline-block; +} + +.cu-bar.tabbar .submit { + align-items: center; + display: flex; + justify-content: center; + text-align: center; + position: relative; + flex: 2; + align-self: stretch; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + transform: scale(0.5); + transform-origin: 0 0; + border-right: 1upx solid rgba(0, 0, 0, 0.1); + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + padding-right: 20upx; + background-color: #ffffff; +} + +.cu-bar.input input { + overflow: initial; + line-height: 64upx; + height: 64upx; + min-height: 64upx; + flex: 1; + font-size: 30upx; + margin: 0 20upx; +} + +.cu-bar.input .action { + margin-left: 20upx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48upx; +} + +.cu-bar.input input+.action { + margin-right: 20upx; + margin-left: 0upx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0upx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + width: calc(100% - 440upx); +} + +/* #ifdef MP-ALIPAY */ +.cu-custom .cu-bar .action .cuIcon-back { + opacity: 0; +} + +/* #endif */ + +.cu-custom .cu-bar .content image { + height: 60upx; + width: 240upx; +} + +.cu-custom .cu-bar { + min-height: 0px; + /* #ifdef MP-WEIXIN */ + padding-right: 220upx; + /* #endif */ + /* #ifdef MP-ALIPAY */ + padding-right: 150upx; + /* #endif */ + box-shadow: 0upx 0upx 0upx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + position: relative; + background: rgba(0, 0, 0, 0.15); + border-radius: 1000upx; + height: 30px; +} + +.cu-custom .cu-bar .border-custom::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + border: 1upx solid #ffffff; + opacity: 0.5; +} + +.cu-custom .cu-bar .border-custom::before { + content: " "; + width: 1upx; + height: 110%; + position: absolute; + top: 22.5%; + left: 0; + right: 0; + margin: auto; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + opacity: 0.6; + background-color: #ffffff; +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + margin: auto !important; + text-align: center; + font-size: 34upx; +} + +/* ================== + 导航栏 + ==================== */ + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + height: 90upx; + display: inline-block; + line-height: 90upx; + margin: 0 10upx; + padding: 0 20upx; +} + +.nav .cu-item.cur { + border-bottom: 4upx solid; +} + +/* ================== + 时间轴 + ==================== */ + +.cu-timeline { + display: block; + background-color: #ffffff; +} + +.cu-timeline .cu-time { + width: 120upx; + text-align: center; + padding: 20upx 0; + font-size: 26upx; + color: #888; + display: block; +} + +.cu-timeline>.cu-item { + padding: 30upx 30upx 30upx 120upx; + position: relative; + display: block; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + content: ""; + display: block; + position: absolute; + width: 1upx; + background-color: #ddd; + left: 60upx; + height: 100%; + top: 0; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + font-family: "cuIcon"; + display: block; + position: absolute; + top: 36upx; + z-index: 9; + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item>.content { + padding: 30upx; + border-radius: 6upx; + display: block; + line-height: 1.6; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: #f1f1f1; + color: #333333; +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20upx; +} + +/* ================== + 聊天 + ==================== */ + +.cu-chat { + display: flex; + flex-direction: column; +} + +.cu-chat .cu-item { + display: flex; + padding: 30upx 30upx 70upx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + width: 80upx; + height: 80upx; +} + +.cu-chat .cu-item>.main { + max-width: calc(100% - 260upx); + margin: 0 40upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>image { + height: 320upx; +} + +.cu-chat .cu-item>.main .content { + padding: 20upx; + border-radius: 6upx; + display: inline-flex; + max-width: 100%; + align-items: center; + font-size: 30upx; + position: relative; + min-height: 80upx; + line-height: 40upx; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: #ffffff; + color: #333333; +} + +.cu-chat .cu-item .date { + position: absolute; + font-size: 24upx; + color: #8799a3; + width: calc(100% - 320upx); + bottom: 20upx; + left: 160upx; +} + +.cu-chat .cu-item .action { + padding: 0 30upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>.main .content::after { + content: ""; + top: 27upx; + transform: rotate(45deg); + position: absolute; + z-index: 100; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item>.main .content::before { + content: ""; + top: 30upx; + transform: rotate(45deg); + position: absolute; + z-index: -1; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; + filter: blur(5upx); + opacity: 0.3; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: #333333; + opacity: 0.1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + display: inline-block; + margin: 20upx auto; + font-size: 24upx; + padding: 8upx 12upx; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 6upx; + color: #ffffff; + max-width: 400upx; + line-height: 1.4; +} + +/* ================== + 卡片 + ==================== */ + +.cu-card { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; + border-radius: 10upx; + margin: 30upx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + margin: 0upx; + border-radius: 0upx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20upx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + position: absolute; + right: 0; + top: 0; +} + +.cu-card.case .image .cu-bar { + position: absolute; + bottom: 0; + width: 100%; + background-color: transparent; + padding: 0upx 30upx; +} + +.cu-card.case.no-card .image { + margin: 30upx 30upx 0; + overflow: hidden; + border-radius: 10upx; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + padding: 0 30upx 0; + max-height: 6.4em; + overflow: hidden; + font-size: 30upx; + margin-bottom: 20upx; +} + +.cu-card.dynamic>.cu-item .square-img { + width: 100%; + height: 200upx; + border-radius: 6upx; +} + +.cu-card.dynamic>.cu-item .only-img { + width: 100%; + height: 320upx; + border-radius: 6upx; +} + +/* card.dynamic>.cu-item .comment { + padding: 20upx; + background-color: #f1f1f1; + margin: 0 30upx 30upx; + border-radius: 6upx; +} */ + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30upx; +} + +.cu-card.article>.cu-item .title { + font-size: 30upx; + font-weight: 900; + color: #333333; + line-height: 100upx; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content>image { + width: 240upx; + height: 6.4em; + margin-right: 20upx; + border-radius: 6upx; +} + +.cu-card.article>.cu-item .content .desc { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + font-size: 28upx; + color: #888; + height: 4.8em; + overflow: hidden; +} + +/* ================== + 表单 + ==================== */ + +.cu-form-group { + background-color: #ffffff; + padding: 1upx 30upx; + display: flex; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-form-group+.cu-form-group { + border-top: 1upx solid #eee; +} + +.cu-form-group .title { + text-align: justify; + padding-right: 30upx; + font-size: 30upx; + position: relative; + height: 60upx; + line-height: 60upx; +} + +.cu-form-group input { + flex: 1; + font-size: 30upx; + color: #555; + padding-right: 20upx; +} + +.cu-form-group>text[class*="cuIcon-"] { + font-size: 36upx; + padding: 0; + box-sizing: border-box; +} + +.cu-form-group textarea { + margin: 32upx 0 30upx; + height: 4.6em; + width: 100%; + line-height: 1.2em; + flex: 1; + font-size: 28upx; + padding: 0; +} + +.cu-form-group.align-start .title { + height: 1em; + margin-top: 32upx; + line-height: 1em; +} + +.cu-form-group picker { + flex: 1; + padding-right: 40upx; + overflow: hidden; + position: relative; +} + +.cu-form-group picker .picker { + line-height: 100upx; + font-size: 28upx; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + text-align: right; +} + +.cu-form-group picker::after { + font-family: cuIcon; + display: block; + content: "\e6a3"; + position: absolute; + font-size: 34upx; + color: #8799a3; + line-height: 100upx; + width: 60upx; + text-align: center; + top: 0; + bottom: 0; + right: -20upx; + margin: auto; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +/* ================== + 模态窗口 + ==================== */ + +.cu-modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1110; + opacity: 0; + outline: 0; + text-align: center; + -ms-transform: scale(1.185); + transform: scale(1.185); + backface-visibility: hidden; + perspective: 2000upx; + background: rgba(0, 0, 0, 0.6); + transition: all 0.3s ease-in-out 0s; + pointer-events: none; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + transition-duration: 0.3s; + -ms-transform: scale(1); + transform: scale(1); + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; +} + +.cu-dialog { + position: relative; + display: inline-block; + vertical-align: middle; + margin-left: auto; + margin-right: auto; + width: 680upx; + max-width: 100%; + background-color: #f8f8f8; + border-radius: 10upx; + overflow: hidden; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + width: 100%; + border-radius: 0; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000upx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + transform: scale(1); + display: flex; +} + +.cu-modal.drawer-modal .cu-dialog { + height: 100%; + min-width: 200upx; + border-radius: 0; + margin: initial; + transition-duration: 0.3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0%); +} +.cu-modal .cu-dialog>.cu-bar:first-child .action{ + min-width: 100rpx; + margin-right: 0; + min-height: 100rpx; +} +/* ================== + 轮播 + ==================== */ +swiper .a-swiper-dot { + display: inline-block; + width: 16upx; + height: 16upx; + background: rgba(0, 0, 0, .3); + border-radius: 50%; + vertical-align: middle; +} + +swiper[class*="-dot"] .wx-swiper-dots, +swiper[class*="-dot"] .a-swiper-dots, +swiper[class*="-dot"] .uni-swiper-dots { + display: flex; + align-items: center; + width: 100%; + justify-content: center; +} + +swiper.square-dot .wx-swiper-dot, +swiper.square-dot .a-swiper-dot, +swiper.square-dot .uni-swiper-dot { + background-color: #ffffff; + opacity: 0.4; + width: 10upx; + height: 10upx; + border-radius: 20upx; + margin: 0 8upx !important; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.square-dot .a-swiper-dot.a-swiper-dot-active, +swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active { + opacity: 1; + width: 30upx; +} + +swiper.round-dot .wx-swiper-dot, +swiper.round-dot .a-swiper-dot, +swiper.round-dot .uni-swiper-dot { + width: 10upx; + height: 10upx; + position: relative; + margin: 4upx 8upx !important; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after { + content: ""; + position: absolute; + width: 10upx; + height: 10upx; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + background-color: #ffffff; + border-radius: 20upx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active { + width: 18upx; + height: 18upx; +} + +.screen-swiper { + min-height: 375upx; +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + width: 100%; + display: block; + height: 100%; + margin: 0; + pointer-events: none; +} + +.card-swiper { + height: 420upx !important; +} + +.card-swiper swiper-item { + width: 610upx !important; + left: 70upx; + box-sizing: border-box; + padding: 40upx 0upx 70upx; + overflow: initial; +} + +.card-swiper swiper-item .swiper-item { + width: 100%; + display: block; + height: 100%; + border-radius: 10upx; + transform: scale(0.9); + transition: all 0.2s ease-in 0s; + overflow: hidden; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all 0.2s ease-in 0s; +} + + +.tower-swiper { + height: 420upx; + position: relative; + max-width: 750upx; + overflow: hidden; +} + +.tower-swiper .tower-item { + position: absolute; + width: 300upx; + height: 380upx; + top: 0; + bottom: 0; + left: 50%; + margin: auto; + transition: all 0.2s ease-in 0s; + opacity: 1; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + width: 100%; + height: 100%; + border-radius: 6upx; + overflow: hidden; +} + +/* ================== + 步骤条 + ==================== */ + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + text-align: center; + position: relative; + min-width: 100upx; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: #8799a3; +} + +.cu-steps .cu-item [class*="cuIcon-"], +.cu-steps .cu-item .num { + display: block; + font-size: 40upx; + line-height: 80upx; +} + +.cu-steps .cu-item::before, +.cu-steps .cu-item::after, +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: ""; + display: block; + position: absolute; + height: 0px; + width: calc(100% - 80upx); + border-bottom: 1px solid #ccc; + left: calc(0px - (100% - 80upx) / 2); + top: 40upx; + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: "\e6a3"; + font-family: 'cuIcon'; + height: 30upx; + border-bottom-width: 0px; + line-height: 30upx; + top: 0; + bottom: 0; + margin: auto; + color: #ccc; +} + +.cu-steps.steps-bottom .cu-item::before, +.cu-steps.steps-bottom .cu-item::after { + bottom: 40upx; + top: initial; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid currentColor; + width: 0px; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"]::after { + width: calc(100% - 80upx); + color: currentColor; +} + +.cu-steps .cu-item:first-child::before, +.cu-steps .cu-item:first-child::after { + display: none; +} + +.cu-steps .cu-item .num { + width: 40upx; + height: 40upx; + border-radius: 50%; + line-height: 40upx; + margin: 20upx auto; + font-size: 24upx; + border: 1px solid currentColor; + position: relative; + overflow: hidden; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::before, +.cu-steps .cu-item .num::after { + content: attr(data-index); + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + transition: all 0.3s ease-in-out 0s; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num::before { + transform: translateY(-40upx); + color: #ffffff; +} + +.cu-steps .cu-item .num::after { + transform: translateY(40upx); + color: #ffffff; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + content: "\e645"; + font-family: 'cuIcon'; + color: #ffffff; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +/* ================== + 布局 + ==================== */ + +/* -- flex弹性布局 -- */ + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +/* grid布局 */ + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + position: absolute; + right: 0; + top: 0; + border-bottom-left-radius: 6upx; + padding: 6upx 12upx; + height: auto; + background-color: rgba(0, 0, 0, 0.5); +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + font-size: 52upx; + position: absolute; + color: #8799a3; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.grid.grid-square>view { + margin-right: 20upx; + margin-bottom: 20upx; + border-radius: 6upx; + position: relative; + overflow: hidden; +} +.grid.grid-square>view.bg-img image { + width: 100%; + height: 100%; + position: absolute; +} +.grid.col-1.grid-square>view { + padding-bottom: 100%; + height: 0; + margin-right: 0; +} + +.grid.col-2.grid-square>view { + padding-bottom: calc((100% - 20upx)/2); + height: 0; + width: calc((100% - 20upx)/2); +} + +.grid.col-3.grid-square>view { + padding-bottom: calc((100% - 40upx)/3); + height: 0; + width: calc((100% - 40upx)/3); +} + +.grid.col-4.grid-square>view { + padding-bottom: calc((100% - 60upx)/4); + height: 0; + width: calc((100% - 60upx)/4); +} + +.grid.col-5.grid-square>view { + padding-bottom: calc((100% - 80upx)/5); + height: 0; + width: calc((100% - 80upx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +/* -- 内外边距 -- */ + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10upx; +} + +.margin-sm { + margin: 20upx; +} + +.margin { + margin: 30upx; +} + +.margin-lg { + margin: 40upx; +} + +.margin-xl { + margin: 50upx; +} + +.margin-top-xs { + margin-top: 10upx; +} + +.margin-top-sm { + margin-top: 20upx; +} + +.margin-top { + margin-top: 30upx; +} + +.margin-top-lg { + margin-top: 40upx; +} + +.margin-top-xl { + margin-top: 50upx; +} + +.margin-right-xs { + margin-right: 10upx; +} + +.margin-right-sm { + margin-right: 20upx; +} + +.margin-right { + margin-right: 30upx; +} + +.margin-right-lg { + margin-right: 40upx; +} + +.margin-right-xl { + margin-right: 50upx; +} + +.margin-bottom-xs { + margin-bottom: 10upx; +} + +.margin-bottom-sm { + margin-bottom: 20upx; +} + +.margin-bottom { + margin-bottom: 30upx; +} + +.margin-bottom-lg { + margin-bottom: 40upx; +} + +.margin-bottom-xl { + margin-bottom: 50upx; +} + +.margin-left-xs { + margin-left: 10upx; +} + +.margin-left-sm { + margin-left: 20upx; +} + +.margin-left { + margin-left: 30upx; +} + +.margin-left-lg { + margin-left: 40upx; +} + +.margin-left-xl { + margin-left: 50upx; +} + +.margin-lr-xs { + margin-left: 10upx; + margin-right: 10upx; +} + +.margin-lr-sm { + margin-left: 20upx; + margin-right: 20upx; +} + +.margin-lr { + margin-left: 30upx; + margin-right: 30upx; +} + +.margin-lr-lg { + margin-left: 40upx; + margin-right: 40upx; +} + +.margin-lr-xl { + margin-left: 50upx; + margin-right: 50upx; +} + +.margin-tb-xs { + margin-top: 10upx; + margin-bottom: 10upx; +} + +.margin-tb-sm { + margin-top: 20upx; + margin-bottom: 20upx; +} + +.margin-tb { + margin-top: 30upx; + margin-bottom: 30upx; +} + +.margin-tb-lg { + margin-top: 40upx; + margin-bottom: 40upx; +} + +.margin-tb-xl { + margin-top: 50upx; + margin-bottom: 50upx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10upx; +} + +.padding-sm { + padding: 20upx; +} + +.padding { + padding: 30upx; +} + +.padding-lg { + padding: 40upx; +} + +.padding-xl { + padding: 50upx; +} + +.padding-top-xs { + padding-top: 10upx; +} + +.padding-top-sm { + padding-top: 20upx; +} + +.padding-top { + padding-top: 30upx; +} + +.padding-top-lg { + padding-top: 40upx; +} + +.padding-top-xl { + padding-top: 50upx; +} + +.padding-right-xs { + padding-right: 10upx; +} + +.padding-right-sm { + padding-right: 20upx; +} + +.padding-right { + padding-right: 30upx; +} + +.padding-right-lg { + padding-right: 40upx; +} + +.padding-right-xl { + padding-right: 50upx; +} + +.padding-bottom-xs { + padding-bottom: 10upx; +} + +.padding-bottom-sm { + padding-bottom: 20upx; +} + +.padding-bottom { + padding-bottom: 30upx; +} + +.padding-bottom-lg { + padding-bottom: 40upx; +} + +.padding-bottom-xl { + padding-bottom: 50upx; +} + +.padding-left-xs { + padding-left: 10upx; +} + +.padding-left-sm { + padding-left: 20upx; +} + +.padding-left { + padding-left: 30upx; +} + +.padding-left-lg { + padding-left: 40upx; +} + +.padding-left-xl { + padding-left: 50upx; +} + +.padding-lr-xs { + padding-left: 10upx; + padding-right: 10upx; +} + +.padding-lr-sm { + padding-left: 20upx; + padding-right: 20upx; +} + +.padding-lr { + padding-left: 30upx; + padding-right: 30upx; +} + +.padding-lr-lg { + padding-left: 40upx; + padding-right: 40upx; +} + +.padding-lr-xl { + padding-left: 50upx; + padding-right: 50upx; +} + +.padding-tb-xs { + padding-top: 10upx; + padding-bottom: 10upx; +} + +.padding-tb-sm { + padding-top: 20upx; + padding-bottom: 20upx; +} + +.padding-tb { + padding-top: 30upx; + padding-bottom: 30upx; +} + +.padding-tb-lg { + padding-top: 40upx; + padding-bottom: 40upx; +} + +.padding-tb-xl { + padding-top: 50upx; + padding-bottom: 50upx; +} + +/* -- 浮动 -- */ + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +/* ================== + 背景 + ==================== */ + +.line-red::after, +.lines-red::after { + border-color: #e54d42; +} + +.line-orange::after, +.lines-orange::after { + border-color: #f37b1d; +} + +.line-yellow::after, +.lines-yellow::after { + border-color: #fbbd08; +} + +.line-olive::after, +.lines-olive::after { + border-color: #8dc63f; +} + +.line-green::after, +.lines-green::after { + border-color: #39b54a; +} + +.line-cyan::after, +.lines-cyan::after { + border-color: #1cbbb4; +} + +.line-blue::after, +.lines-blue::after { + border-color: #0081ff; +} + +.line-purple::after, +.lines-purple::after { + border-color: #6739b6; +} + +.line-mauve::after, +.lines-mauve::after { + border-color: #9c26b0; +} + +.line-pink::after, +.lines-pink::after { + border-color: #e03997; +} + +.line-brown::after, +.lines-brown::after { + border-color: #a5673f; +} + +.line-grey::after, +.lines-grey::after { + border-color: #8799a3; +} + +.line-gray::after, +.lines-gray::after { + border-color: #aaaaaa; +} + +.line-black::after, +.lines-black::after { + border-color: #333333; +} + +.line-white::after, +.lines-white::after { + border-color: #ffffff; +} + +.bg-red { + background-color: #e54d42; + color: #ffffff; +} + +.bg-orange { + background-color: #f37b1d; + color: #ffffff; +} + +.bg-yellow { + background-color: #fbbd08; + color: #333333; +} + +.bg-olive { + background-color: #8dc63f; + color: #ffffff; +} + +.bg-green { + background-color: #39b54a; + color: #ffffff; +} + +.bg-cyan { + background-color: #1cbbb4; + color: #ffffff; +} + +.bg-blue { + background-color: #0081ff; + color: #ffffff; +} + +.bg-purple { + background-color: #6739b6; + color: #ffffff; +} + +.bg-mauve { + background-color: #9c26b0; + color: #ffffff; +} + +.bg-pink { + background-color: #e03997; + color: #ffffff; +} + +.bg-brown { + background-color: #a5673f; + color: #ffffff; +} + +.bg-grey { + background-color: #8799a3; + color: #ffffff; +} + +.bg-gray { + background-color: #f0f0f0; + color: #333333; +} + +.bg-black { + background-color: #333333; + color: #ffffff; +} + +.bg-white { + background-color: #ffffff; + color: #666666; +} + +.bg-shadeTop { + background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); + color: #ffffff; +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); + color: #ffffff; +} + +.bg-red.light { + color: #e54d42; + background-color: #fadbd9; +} + +.bg-orange.light { + color: #f37b1d; + background-color: #fde6d2; +} + +.bg-yellow.light { + color: #fbbd08; + background-color: #fef2ced2; +} + +.bg-olive.light { + color: #8dc63f; + background-color: #e8f4d9; +} + +.bg-green.light { + color: #39b54a; + background-color: #d7f0dbff; +} + +.bg-cyan.light { + color: #1cbbb4; + background-color: #d2f1f0; +} + +.bg-blue.light { + color: #0081ff; + background-color: #cce6ff; +} + +.bg-purple.light { + color: #6739b6; + background-color: #e1d7f0; +} + +.bg-mauve.light { + color: #9c26b0; + background-color: #ebd4ef; +} + +.bg-pink.light { + color: #e03997; + background-color: #f9d7ea; +} + +.bg-brown.light { + color: #a5673f; + background-color: #ede1d9; +} + +.bg-grey.light { + color: #8799a3; + background-color: #e7ebed; +} + +.bg-gradual-red { + background-image: linear-gradient(45deg, #f43f3b, #ec008c); + color: #ffffff; +} + +.bg-gradual-orange { + background-image: linear-gradient(45deg, #ff9700, #ed1c24); + color: #ffffff; +} + +.bg-gradual-green { + background-image: linear-gradient(45deg, #39b54a, #8dc63f); + color: #ffffff; +} + +.bg-gradual-purple { + background-image: linear-gradient(45deg, #9000ff, #5e00ff); + color: #ffffff; +} + +.bg-gradual-pink { + background-image: linear-gradient(45deg, #ec008c, #6739b6); + color: #ffffff; +} + +.bg-gradual-blue { + background-image: linear-gradient(45deg, #0081ff, #1cbbb4); + color: #ffffff; +} + +.shadow[class*="-red"] { + box-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.shadow[class*="-orange"] { + box-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.shadow[class*="-yellow"] { + box-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.shadow[class*="-olive"] { + box-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.shadow[class*="-green"] { + box-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.shadow[class*="-cyan"] { + box-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.shadow[class*="-blue"] { + box-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.shadow[class*="-purple"] { + box-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.shadow[class*="-mauve"] { + box-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.shadow[class*="-pink"] { + box-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.shadow[class*="-brown"] { + box-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.shadow[class*="-grey"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-gray"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-black"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.shadow[class*="-white"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.text-shadow[class*="-red"] { + text-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.text-shadow[class*="-orange"] { + text-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.text-shadow[class*="-yellow"] { + text-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.text-shadow[class*="-olive"] { + text-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.text-shadow[class*="-green"] { + text-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.text-shadow[class*="-cyan"] { + text-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.text-shadow[class*="-blue"] { + text-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.text-shadow[class*="-purple"] { + text-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.text-shadow[class*="-mauve"] { + text-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.text-shadow[class*="-pink"] { + text-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.text-shadow[class*="-brown"] { + text-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.text-shadow[class*="-grey"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-gray"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-black"] { + text-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.bg-img { + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +.bg-mask { + background-color: #333333; + position: relative; +} + +.bg-mask::after { + content: ""; + border-radius: inherit; + width: 100%; + height: 100%; + display: block; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; +} + +.bg-mask view, +.bg-mask cover-view { + z-index: 5; + position: relative; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + position: absolute; + top: 0; + z-index: 0; + pointer-events: none; +} + +/* ================== + 文本 + ==================== */ + +.text-xs { + font-size: 20upx; +} + +.text-sm { + font-size: 24upx; +} + +.text-df { + font-size: 28upx; +} + +.text-lg { + font-size: 32upx; +} + +.text-xl { + font-size: 36upx; +} + +.text-xxl { + font-size: 44upx; +} + +.text-sl { + font-size: 80upx; +} + +.text-xsl { + font-size: 120upx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "¥"; + font-size: 80%; + margin-right: 4upx; +} + +.text-cut { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.text-bold { + font-weight: bold; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-red, +.line-red, +.lines-red { + color: #e54d42; +} + +.text-orange, +.line-orange, +.lines-orange { + color: #f37b1d; +} + +.text-yellow, +.line-yellow, +.lines-yellow { + color: #fbbd08; +} + +.text-olive, +.line-olive, +.lines-olive { + color: #8dc63f; +} + +.text-green, +.line-green, +.lines-green { + color: #39b54a; +} + +.text-cyan, +.line-cyan, +.lines-cyan { + color: #1cbbb4; +} + +.text-blue, +.line-blue, +.lines-blue { + color: #0081ff; +} + +.text-purple, +.line-purple, +.lines-purple { + color: #6739b6; +} + +.text-mauve, +.line-mauve, +.lines-mauve { + color: #9c26b0; +} + +.text-pink, +.line-pink, +.lines-pink { + color: #e03997; +} + +.text-brown, +.line-brown, +.lines-brown { + color: #a5673f; +} + +.text-grey, +.line-grey, +.lines-grey { + color: #8799a3; +} + +.text-gray, +.line-gray, +.lines-gray { + color: #aaaaaa; +} + +.text-black, +.line-black, +.lines-black { + color: #333333; +} + +.text-white, +.line-white, +.lines-white { + color: #ffffff; +} diff --git a/components/cuihai-combox/cuihai-combox.vue b/components/cuihai-combox/cuihai-combox.vue new file mode 100644 index 0000000..7c78fbf --- /dev/null +++ b/components/cuihai-combox/cuihai-combox.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/components/customer-list/customer-list.vue b/components/customer-list/customer-list.vue new file mode 100644 index 0000000..d94728d --- /dev/null +++ b/components/customer-list/customer-list.vue @@ -0,0 +1,87 @@ + + + + + + diff --git a/components/evan-form-item/evan-form-item.vue b/components/evan-form-item/evan-form-item.vue new file mode 100644 index 0000000..abe1517 --- /dev/null +++ b/components/evan-form-item/evan-form-item.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/components/evan-form/evan-form.vue b/components/evan-form/evan-form.vue new file mode 100644 index 0000000..a22f436 --- /dev/null +++ b/components/evan-form/evan-form.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/components/evan-form/utils.js b/components/evan-form/utils.js new file mode 100644 index 0000000..0ed3e7e --- /dev/null +++ b/components/evan-form/utils.js @@ -0,0 +1,148 @@ +import AsyncValidator from 'async-validator' +const utils = { + validate: (model, rules, callback, options) => { + const initOptions = { + showMessage: true + } + options = Object.assign({}, initOptions, options || {}) + let promise = null; + if (typeof callback !== 'function') { + promise = new Promise((resolve, reject) => { + callback = function(valid) { + valid ? resolve(valid) : reject(valid) + } + }) + } + // 如果需要验证的fields为空,调用验证时立刻返回callback + if (!rules || (Array.isArray(rules) && rules.length === 0) || (typeof rules === 'object' && Object.keys(rules).length === + 0)) { + callback(true, null); + if(promise){ + return promise + } + return + } + let errors = [] + const props = Object.keys(rules) + let count = 0 + for (let i in props) { + const prop = props[i] + const value = utils.getValueByProp(model, prop) + utils.validateItem(rules, prop, value, (err) => { + if (err && err.length > 0) { + errors = errors.concat(err) + } + // 处理异步校验,等所有校验都结束时再callback + count++ + if (count === props.length) { + if (errors.length > 0) { + if (options.showMessage) { + utils.showToast(errors[0].message) + } + callback(false, errors) + } else { + callback(true, null) + } + } + }) + } + if (promise) { + return promise + } + }, + validateField: (model, rules, props, callback, options) => { + const initOptions = { + showMessage: true + } + options = Object.assign({}, initOptions, options || {}) + let promise = null; + if (typeof callback !== 'function') { + promise = new Promise((resolve, reject) => { + callback = function(valid) { + valid ? resolve(valid) : reject(valid) + } + }) + } + props = [].concat(props) + if (props.length === 0) { + return + } + let errors = [] + let count = 0 + for (let i in props) { + const prop = props[i] + const value = utils.getValueByProp(model, prop) + utils.validateItem(rules, prop, value, (err) => { + if (err && err.length > 0) { + errors = errors.concat(err) + } + // 处理异步校验,等所有校验都结束时再callback + count++ + if (count === props.length) { + if (errors.length > 0) { + if (options.showMessage) { + utils.showToast(errors[0].message) + } + callback(false, errors) + } else { + callback(true, null) + } + } + }) + } + if (promise) { + return promise + } + }, + validateItem(rules, prop, value, callback) { + if (!rules || JSON.stringify(rules) === '{}') { + if (callback instanceof Function) { + callback(); + } + return true; + } + const propRules = [].concat(rules[prop] || []); + propRules.forEach((rule) => { + if (rule.pattern) { + rule.pattern = new RegExp(rule.pattern) + } + }) + const descriptor = { + [prop]: propRules + }; + const validator = new AsyncValidator(descriptor); + const model = { + [prop]: value + }; + validator.validate(model, { + firstFields: true + }, (errors) => { + callback(errors); + }); + }, + getValueByProp: (obj, prop) => { + let tempObj = obj; + prop = prop.replace(/\[(\w+)\]/g, '.$1').replace(/^\./, ''); + let keyArr = prop.split('.'); + let i = 0; + for (let len = keyArr.length; i < len - 1; ++i) { + if (!tempObj) break; + let key = keyArr[i]; + if (key in tempObj) { + tempObj = tempObj[key]; + } else { + break; + } + } + return tempObj ? (typeof tempObj[keyArr[i]] === 'string' ? tempObj[keyArr[i]].trim() : tempObj[keyArr[i]]) : + null + }, + showToast: (message) => { + uni.showToast({ + title: message, + icon: 'none' + }) + } +} + +export default utils diff --git a/components/index-list/index-list.vue b/components/index-list/index-list.vue new file mode 100644 index 0000000..1d94669 --- /dev/null +++ b/components/index-list/index-list.vue @@ -0,0 +1,110 @@ + + + + + + diff --git a/components/ly-tree/components/ly-checkbox.vue b/components/ly-tree/components/ly-checkbox.vue new file mode 100644 index 0000000..94a37ed --- /dev/null +++ b/components/ly-tree/components/ly-checkbox.vue @@ -0,0 +1,200 @@ + + + + + \ No newline at end of file diff --git a/components/ly-tree/ly-tree-node.vue b/components/ly-tree/ly-tree-node.vue new file mode 100644 index 0000000..d4ce1bf --- /dev/null +++ b/components/ly-tree/ly-tree-node.vue @@ -0,0 +1,424 @@ + + + + + \ No newline at end of file diff --git a/components/ly-tree/ly-tree.vue b/components/ly-tree/ly-tree.vue new file mode 100644 index 0000000..2470f2f --- /dev/null +++ b/components/ly-tree/ly-tree.vue @@ -0,0 +1,605 @@ + + + + + diff --git a/components/ly-tree/model/node.js b/components/ly-tree/model/node.js new file mode 100644 index 0000000..8d5e7e8 --- /dev/null +++ b/components/ly-tree/model/node.js @@ -0,0 +1,538 @@ +import { + markNodeData, + objectAssign, + arrayFindIndex, + getChildState, + reInitChecked, + getPropertyFromData, + isNull, + NODE_KEY +} from '../tool/util'; + +const getStore = function(store) { + let thisStore = store; + + return function() { + return thisStore; + } +} + +let nodeIdSeed = 0; + +export default class Node { + constructor(options) { + this.time = new Date().getTime(); + this.id = nodeIdSeed++; + this.text = null; + this.checked = false; + this.indeterminate = false; + this.data = null; + this.expanded = false; + this.parentId = null; + this.visible = true; + this.isCurrent = false; + + for (let name in options) { + if (options.hasOwnProperty(name)) { + if (name === 'store') { + this.store = getStore(options[name]); + } else { + this[name] = options[name]; + } + } + } + + if (!this.store()) { + throw new Error('[Node]store is required!'); + } + + // internal + this.level = 0; + this.loaded = false; + this.childNodesId = []; + this.loading = false; + this.label = getPropertyFromData(this, 'label'); + this.key = this._getKey(); + this.disabled = getPropertyFromData(this, 'disabled'); + this.nextSibling = null; + this.previousSibling = null; + this.icon = ''; + + this._handleParentAndLevel(); + this._handleProps(); + this._handleExpand(); + this._handleCurrent(); + + if (this.store().lazy) { + this.store()._initDefaultCheckedNode(this); + } + + this.updateLeafState(); + } + + _getKey() { + if (!this.data || Array.isArray(this.data)) return null; + + if (typeof this.data === 'object') { + const nodeKey = this.store().key; + const key = this.data[nodeKey]; + + if (typeof key === 'undefined') { + throw new Error(`您配置的node-key为"${nodeKey}",但数据中并未找到对应"${nodeKey}"属性的值,请检查node-key的配置是否合理`) + } + + return key; + } + + throw new Error('不合法的data数据'); + } + + _handleParentAndLevel() { + if (this.parentId !== null) { + let parent = this.getParent(this.parentId); + + if (this.store().isInjectParentInNode) { + this.parent = parent; + } + + // 由于这里做了修改,默认第一个对象不会被注册到nodesMap中,所以找不到parent会报错,所以默认parent的level是0 + if (!parent) { + parent = { + level: 0 + } + } else { + const parentChildNodes = parent.getChildNodes(parent.childNodesId); + const index = parent.childNodesId.indexOf(this.key); + this.nextSibling = index > -1 ? parentChildNodes[index + 1] : null; + this.previousSibling = index > 0 ? parentChildNodes[index - 1] : null; + } + this.level = parent.level + 1; + } + } + + _handleProps() { + const props = this.store().props; + + if (this.store().showNodeIcon) { + if (props && typeof props.icon !== 'undefined') { + this.icon = getPropertyFromData(this, 'icon'); + } else { + console.warn('请配置props属性中的"icon"字段') + } + } + + this.store().registerNode(this); + + if (props && typeof props.isLeaf !== 'undefined') { + const isLeaf = getPropertyFromData(this, 'isLeaf'); + if (typeof isLeaf === 'boolean') { + this.isLeafByUser = isLeaf; + } + } + } + + _handleExpand() { + if (this.store().lazy !== true && this.data) { + this.setData(this.data); + + if (this.store().defaultExpandAll) { + this.expanded = true; + } + } else if (this.level > 0 && this.store().lazy && this.store().defaultExpandAll) { + this.expand(); + } + + if (!Array.isArray(this.data)) { + markNodeData(this, this.data); + } + + if (!this.data) return; + + const defaultExpandedKeys = this.store().defaultExpandedKeys; + const key = this.store().key; + if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) { + this.expand(null, this.store().autoExpandparent); + } + } + + _handleCurrent() { + const key = this.store().key; + + if (key && this.store().currentNodeKey !== undefined && this.key === this.store().currentNodeKey) { + this.store().currentNode = this; + this.store().currentNode.isCurrent = true; + } + } + + destroyStore() { + getStore(null) + } + + setData(data) { + if (!Array.isArray(data)) { + markNodeData(this, data); + } + + this.data = data; + this.childNodesId = []; + + let children; + if (this.level === 0 && Array.isArray(this.data)) { + children = this.data; + } else { + children = getPropertyFromData(this, 'children') || []; + } + + for (let i = 0, j = children.length; i < j; i++) { + this.insertChild({ + data: children[i] + }); + } + } + + contains(target, deep = true) { + const walk = function(parent) { + const children = parent.getChildNodes(parent.childNodesId) || []; + let result = false; + for (let i = 0, j = children.length; i < j; i++) { + const child = children[i]; + if (child === target || (deep && walk(child))) { + result = true; + break; + } + } + return result; + }; + + return walk(this); + } + + remove() { + if (this.parentId !== null) { + const parent = this.getParent(this.parentId); + parent.removeChild(this); + } + } + + insertChild(child, index, batch) { + if (!child) throw new Error('insertChild error: child is required.'); + + if (!(child instanceof Node)) { + if (!batch) { + const children = this.getChildren(true); + if (children.indexOf(child.data) === -1) { + if (typeof index === 'undefined' || index < 0) { + children.push(child.data); + } else { + children.splice(index, 0, child.data); + } + } + } + + objectAssign(child, { + parentId: isNull(this.key) ? '' : this.key, + store: this.store() + }); + child = new Node(child); + } + + child.level = this.level + 1; + + if (typeof index === 'undefined' || index < 0) { + this.childNodesId.push(child.key); + } else { + this.childNodesId.splice(index, 0, child.key); + } + + this.updateLeafState(); + } + + insertBefore(child, ref) { + let index; + if (ref) { + index = this.childNodesId.indexOf(ref.id); + } + this.insertChild(child, index); + } + + insertAfter(child, ref) { + let index; + if (ref) { + index = this.childNodesId.indexOf(ref.id); + if (index !== -1) index += 1; + } + this.insertChild(child, index); + } + + removeChild(child) { + const children = this.getChildren() || []; + const dataIndex = children.indexOf(child.data); + if (dataIndex > -1) { + children.splice(dataIndex, 1); + } + + const index = this.childNodesId.indexOf(child.key); + + if (index > -1) { + this.store() && this.store().deregisterNode(child); + child.parentId = null; + this.childNodesId.splice(index, 1); + } + + this.updateLeafState(); + } + + removeChildByData(data) { + let targetNode = null; + + for (let i = 0; i < this.childNodesId.length; i++) { + let node = this.getChildNodes(this.childNodesId); + if (node[i].data === data) { + targetNode = node[i]; + break; + } + } + + if (targetNode) { + this.removeChild(targetNode); + } + } + + // 为了避免APP端parent嵌套结构导致报错,这里parent需要从nodesMap中获取 + getParent(parentId) { + try { + if (!parentId.toString()) return null; + return this.store().nodesMap[parentId]; + } catch (error) { + return null; + } + } + + // 为了避免APP端childNodes嵌套结构导致报错,这里childNodes需要从nodesMap中获取 + getChildNodes(childNodesId) { + let childNodes = []; + if (childNodesId.length === 0) return childNodes; + childNodesId.forEach((key) => { + childNodes.push(this.store().nodesMap[key]); + }) + return childNodes; + } + + expand(callback, expandparent) { + const done = () => { + if (expandparent) { + let parent = this.getParent(this.parentId); + while (parent && parent.level > 0) { + parent.expanded = true; + parent = this.getParent(parent.parentId); + } + } + this.expanded = true; + if (callback) callback(); + }; + + if (this.shouldLoadData()) { + this.loadData(function(data) { + if (Array.isArray(data)) { + if (this.checked) { + this.setChecked(true, true); + } else if (!this.store().checkStrictly) { + reInitChecked(this); + } + done(); + } + }); + } else { + done(); + } + } + + doCreateChildren(array, defaultProps = {}) { + array.forEach((item) => { + this.insertChild(objectAssign({ + data: item + }, defaultProps), undefined, true); + }); + } + + collapse() { + this.expanded = false; + } + + shouldLoadData() { + return this.store().lazy === true && this.store().load && !this.loaded; + } + + updateLeafState() { + if (this.store().lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') { + this.isLeaf = this.isLeafByUser; + return; + } + const childNodesId = this.childNodesId; + if (!this.store().lazy || (this.store().lazy === true && this.loaded === true)) { + this.isLeaf = !childNodesId || childNodesId.length === 0; + return; + } + this.isLeaf = false; + } + + setChecked(value, deep, recursion, passValue) { + this.indeterminate = value === 'half'; + this.checked = value === true; + + if (this.checked && this.store().expandOnCheckNode) { + this.expand(null, true) + } + + if (this.store().checkStrictly) return; + if (this.store().showRadio) return; + + if (!(this.shouldLoadData() && !this.store().checkDescendants)) { + let childNodes = this.getChildNodes(this.childNodesId); + let { + all, + allWithoutDisable + } = getChildState(childNodes); + + if (!this.isLeaf && (!all && allWithoutDisable)) { + this.checked = false; + value = false; + } + + const handleDescendants = () => { + if (deep) { + let childNodes = this.getChildNodes(this.childNodesId) + for (let i = 0, j = childNodes.length; i < j; i++) { + const child = childNodes[i]; + passValue = passValue || value !== false; + const isCheck = child.disabled ? child.checked : passValue; + child.setChecked(isCheck, deep, true, passValue); + } + const { + half, + all + } = getChildState(childNodes); + + if (!all) { + this.checked = all; + this.indeterminate = half; + } + } + }; + + if (this.shouldLoadData()) { + this.loadData(() => { + handleDescendants(); + reInitChecked(this); + }, { + checked: value !== false + }); + return; + } else { + handleDescendants(); + } + } + + if (!this.parentId) return; + + let parent = this.getParent(this.parentId); + if (parent && parent.level === 0) return; + + if (!recursion) { + reInitChecked(parent); + } + } + + setRadioChecked(value) { + const allNodes = this.store()._getAllNodes().sort((a, b) => b.level - a.level); + allNodes.forEach(node => node.setChecked(false, false)); + this.checked = value === true; + } + + getChildren(forceInit = false) { + if (this.level === 0) return this.data; + const data = this.data; + if (!data) return null; + + const props = this.store().props; + let children = 'children'; + if (props) { + children = props.children || 'children'; + } + + if (data[children] === undefined) { + data[children] = null; + } + + if (forceInit && !data[children]) { + data[children] = []; + } + + return data[children]; + } + + updateChildren() { + let childNodes = this.getChildNodes(this.childNodesId); + const newData = this.getChildren() || []; + const oldData = childNodes.map((node) => node.data); + + const newDataMap = {}; + const newNodes = []; + + newData.forEach((item, index) => { + const key = item[NODE_KEY]; + const isNodeExists = !!key && arrayFindIndex(oldData, data => data[NODE_KEY] === key) >= 0; + if (isNodeExists) { + newDataMap[key] = { + index, + data: item + }; + } else { + newNodes.push({ + index, + data: item + }); + } + }); + + if (!this.store().lazy) { + oldData.forEach((item) => { + if (!newDataMap[item[NODE_KEY]]) this.removeChildByData(item); + }); + } + + newNodes.forEach(({ + index, + data + }) => { + this.insertChild({ + data + }, index); + }); + + this.updateLeafState(); + } + + loadData(callback, defaultProps = {}) { + if (this.store().lazy === true && + this.store().load && !this.loaded && + (!this.loading || Object.keys(defaultProps).length) + ) { + this.loading = true; + + const resolve = (children) => { + this.loaded = true; + this.loading = false; + this.childNodesId = []; + this.doCreateChildren(children, defaultProps); + this.updateLeafState(); + + callback && callback.call(this,children); + }; + + this.store().load(this, resolve); + } else { + callback && callback.call(this); + } + } +} diff --git a/components/ly-tree/model/tree-store.js b/components/ly-tree/model/tree-store.js new file mode 100644 index 0000000..5424cd8 --- /dev/null +++ b/components/ly-tree/model/tree-store.js @@ -0,0 +1,419 @@ +import Node from './node'; +import { + getNodeKey, + getPropertyFromData +} from '../tool/util'; + +export default class TreeStore { + constructor(options) { + this.ready = false; + this.currentNode = null; + this.currentNodeKey = null; + + Object.assign(this, options); + + if (!this.key) { + throw new Error('[Tree] nodeKey is required'); + } + + this.nodesMap = {}; + this.root = new Node({ + data: this.data, + store: this + }); + + if (this.lazy && this.load) { + const loadFn = this.load; + loadFn(this.root, (data) => { + this.root.doCreateChildren(data); + this._initDefaultCheckedNodes(); + this.ready = true; + }); + } else { + this._initDefaultCheckedNodes(); + this.ready = true; + } + } + + filter(value, data) { + const filterNodeMethod = this.filterNodeMethod; + const lazy = this.lazy; + const _self = this; + const traverse = function(node) { + const childNodes = node.root ? node.root.getChildNodes(node.root.childNodesId) : node.getChildNodes(node.childNodesId); + + childNodes.forEach((child) => { + if (data && typeof data === 'object') { + let nodePath = _self.getNodePath(child.data); + if (!nodePath.some(pathItem => pathItem[_self.key] === data[_self.key])) { + child.visible = false; + traverse(child); + return; + } + } + + if (_self.childVisibleForFilterNode) { + let parent = child.getParent(child.parentId); + child.visible = filterNodeMethod.call(child, value, child.data, child) || (parent && parent.visible); + } else { + child.visible = filterNodeMethod.call(child, value, child.data, child); + } + + traverse(child); + }); + + if (!node.visible && childNodes.length) { + let allHidden = true; + allHidden = !childNodes.some(child => child.visible); + + if (node.root) { + node.root.visible = allHidden === false; + } else { + node.visible = allHidden === false; + } + } + + if (!value) return; + + if (node.visible && !node.isLeaf && !lazy) node.expand(); + }; + + traverse(this); + } + + setData(newVal) { + const instanceChanged = newVal !== this.root.data; + if (instanceChanged) { + this.root.setData(newVal); + this._initDefaultCheckedNodes(); + } else { + this.root.updateChildren(); + } + } + + getNode(data) { + if (data instanceof Node) return data; + const key = typeof data !== 'object' ? data : getNodeKey(this.key, data); + if (!key) return null; + return this.nodesMap[key] || null; + } + + insertBefore(data, refData) { + const refNode = this.getNode(refData); + let parent = refNode.getParent(refNode.parentId); + parent.insertBefore({ + data + }, refNode); + } + + insertAfter(data, refData) { + const refNode = this.getNode(refData); + let parent = refNode.getParent(refNode.parentId); + parent.insertAfter({ + data + }, refNode); + } + + remove(data) { + const node = this.getNode(data); + + if (node && node.parentId !== null) { + let parent = node.getParent(node.parentId); + if (node === this.currentNode) { + this.currentNode = null; + } + parent.removeChild(node); + } + } + + append(data, parentData) { + const parentNode = parentData ? this.getNode(parentData) : this.root; + + if (parentNode) { + parentNode.insertChild({ + data + }); + } + } + + _initDefaultCheckedNodes() { + const defaultCheckedKeys = this.defaultCheckedKeys || []; + const nodesMap = this.nodesMap; + let checkedKeyfromData = []; + let totalCheckedKeys = [] + + for (let key in nodesMap) { + let checked = getPropertyFromData(nodesMap[key], 'checked') || false; + checked && checkedKeyfromData.push(key); + } + + totalCheckedKeys = Array.from(new Set([...defaultCheckedKeys, ...checkedKeyfromData])); + totalCheckedKeys.forEach((checkedKey) => { + const node = nodesMap[checkedKey]; + + if (node) { + node.setChecked(true, !this.checkStrictly); + } + }); + } + + _initDefaultCheckedNode(node) { + const defaultCheckedKeys = this.defaultCheckedKeys || []; + + if (defaultCheckedKeys.indexOf(node.key) !== -1) { + node.setChecked(true, !this.checkStrictly); + } + } + + toggleExpendAll(isExpandAll) { + const allNodes = this._getAllNodes(); + + allNodes.forEach(item => { + const node = this.getNode(item.key); + + if (node) isExpandAll ? node.expand() : node.collapse(); + }); + } + + setCheckAll(isCkeckAll) { + const allNodes = this._getAllNodes(); + + allNodes.forEach(item => { + item.setChecked(isCkeckAll, false); + }); + } + + setDefaultCheckedKey(newVal) { + if (newVal !== this.defaultCheckedKeys) { + this.defaultCheckedKeys = newVal; + this._initDefaultCheckedNodes(); + } + } + + registerNode(node) { + + const key = this.key; + if (!key || !node || !node.data) return; + + const nodeKey = node.key; + if (nodeKey !== undefined) this.nodesMap[node.key] = node; + } + + deregisterNode(node) { + const key = this.key; + if (!key || !node || !node.data) return; + + let childNodes = node.getChildNodes(node.childNodesId); + childNodes.forEach(child => { + this.deregisterNode(child); + }); + + delete this.nodesMap[node.key]; + } + + getNodePath(data) { + if (!this.key) throw new Error('[Tree] nodeKey is required in getNodePath'); + const node = this.getNode(data); + if (!node) return []; + + const path = [node.data]; + let parent = node.getParent(node.parentId); + while (parent && parent !== this.root) { + path.push(parent.data); + parent = parent.getParent(parent.parentId); + } + return path.reverse(); + } + + getCheckedNodes(leafOnly = false, includeHalfChecked = false) { + const checkedNodes = []; + const traverse = function(node) { + const childNodes = node.root ? node.root.getChildNodes(node.root.childNodesId) : node.getChildNodes(node.childNodesId); + + childNodes.forEach((child) => { + if ((child.checked || (includeHalfChecked && child.indeterminate)) && (!leafOnly || (leafOnly && child.isLeaf))) { + checkedNodes.push(child.data); + } + + traverse(child); + }); + }; + + traverse(this); + + return checkedNodes; + } + + getCheckedKeys(leafOnly = false, includeHalfChecked = false) { + return this.getCheckedNodes(leafOnly, includeHalfChecked).map((data) => (data || {})[this.key]); + } + + getHalfCheckedNodes() { + const nodes = []; + const traverse = function(node) { + const childNodes = node.root ? node.root.getChildNodes(node.root.childNodesId) : node.getChildNodes(node.childNodesId); + + childNodes.forEach((child) => { + if (child.indeterminate) { + nodes.push(child.data); + } + + traverse(child); + }); + }; + + traverse(this); + + return nodes; + } + + getHalfCheckedKeys() { + return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]); + } + + _getAllNodes() { + const allNodes = []; + const nodesMap = this.nodesMap; + for (let nodeKey in nodesMap) { + if (nodesMap.hasOwnProperty(nodeKey)) { + allNodes.push(nodesMap[nodeKey]); + } + } + + return allNodes; + } + + updateChildren(key, data) { + const node = this.nodesMap[key]; + if (!node) return; + const childNodes = node.getChildNodes(node.childNodesId); + for (let i = childNodes.length - 1; i >= 0; i--) { + const child = childNodes[i]; + this.remove(child.data); + } + for (let i = 0, j = data.length; i < j; i++) { + const child = data[i]; + this.append(child, node.data); + } + } + + _setCheckedKeys(key, leafOnly = false, checkedKeys) { + const allNodes = this._getAllNodes().sort((a, b) => b.level - a.level); + const cache = Object.create(null); + const keys = Object.keys(checkedKeys); + allNodes.forEach(node => node.setChecked(false, false)); + for (let i = 0, j = allNodes.length; i < j; i++) { + const node = allNodes[i]; + let nodeKey = node.data[key]; + + if (typeof nodeKey === 'undefined') continue; + + nodeKey = nodeKey.toString(); + let checked = keys.indexOf(nodeKey) > -1; + if (!checked) { + if (node.checked && !cache[nodeKey]) { + node.setChecked(false, false); + } + continue; + } + + let parent = node.getParent(node.parentId); + while (parent && parent.level > 0) { + cache[parent.data[key]] = true; + parent = parent.getParent(parent.parentId); + } + + if (node.isLeaf || this.checkStrictly) { + node.setChecked(true, false); + continue; + } + node.setChecked(true, true); + + if (leafOnly) { + node.setChecked(false, false); + const traverse = function(node) { + const childNodes = node.getChildNodes(node.childNodesId); + childNodes.forEach((child) => { + if (!child.isLeaf) { + child.setChecked(false, false); + } + traverse(child); + }); + }; + traverse(node); + } + } + } + + setCheckedNodes(array, leafOnly = false) { + const key = this.key; + const checkedKeys = {}; + array.forEach((item) => { + checkedKeys[(item || {})[key]] = true; + }); + + this._setCheckedKeys(key, leafOnly, checkedKeys); + } + + setCheckedKeys(keys, leafOnly = false) { + this.defaultCheckedKeys = keys; + const key = this.key; + const checkedKeys = {}; + keys.forEach((key) => { + checkedKeys[key] = true; + }); + + this._setCheckedKeys(key, leafOnly, checkedKeys); + } + + setDefaultExpandedKeys(keys) { + keys = keys || []; + this.defaultExpandedKeys = keys; + + keys.forEach((key) => { + const node = this.getNode(key); + if (node) node.expand(null, this.autoExpandParent); + }); + } + + setChecked(data, checked, deep) { + const node = this.getNode(data); + + if (node) { + node.setChecked(!!checked, deep); + } + } + + getCurrentNode() { + return this.currentNode; + } + + setCurrentNode(currentNode) { + const prevCurrentNode = this.currentNode; + if (prevCurrentNode) { + prevCurrentNode.isCurrent = false; + } + this.currentNode = currentNode; + this.currentNode.isCurrent = true; + + this.expandCurrentNodeParent && this.currentNode.expand(null, true) + } + + setUserCurrentNode(node) { + const key = node[this.key]; + const currNode = this.nodesMap[key]; + this.setCurrentNode(currNode); + } + + setCurrentNodeKey(key) { + if (key === null || key === undefined) { + this.currentNode && (this.currentNode.isCurrent = false); + this.currentNode = null; + return; + } + const node = this.getNode(key); + if (node) { + this.setCurrentNode(node); + } + } +}; diff --git a/components/ly-tree/tool/util.js b/components/ly-tree/tool/util.js new file mode 100644 index 0000000..1118c5c --- /dev/null +++ b/components/ly-tree/tool/util.js @@ -0,0 +1,115 @@ +export const NODE_KEY = '$treeNodeId'; + +export const markNodeData = function(node, data) { + if (!data || data[NODE_KEY]) return; + Object.defineProperty(data, NODE_KEY, { + value: node.id, + enumerable: false, + configurable: false, + writable: false + }); +}; + +export const getNodeKey = function(key, data) { + if (!data) return null; + if (!key) return data[NODE_KEY]; + return data[key]; +}; + +export const objectAssign = function(target) { + for (let i = 1, j = arguments.length; i < j; i++) { + let source = arguments[i] || {}; + for (let prop in source) { + if (source.hasOwnProperty(prop)) { + let value = source[prop]; + if (value !== undefined) { + target[prop] = value; + } + } + } + } + + return target; +}; + +// TODO: use native Array.find, Array.findIndex when IE support is dropped +export const arrayFindIndex = function(arr, pred) { + for (let i = 0; i !== arr.length; ++i) { + if (pred(arr[i])) { + return i; + } + } + return -1; +}; + +export const getChildState = function(node) { + let all = true; + let none = true; + let allWithoutDisable = true; + for (let i = 0, j = node.length; i < j; i++) { + const n = node[i]; + if (n.checked !== true || n.indeterminate) { + all = false; + if (!n.disabled) { + allWithoutDisable = false; + } + } + if (n.checked !== false || n.indeterminate) { + none = false; + } + } + + return { + all, + none, + allWithoutDisable, + half: !all && !none + }; +}; + +export const reInitChecked = function(node) { + if (!node || node.childNodesId.length === 0) return; + + let childNodes = node.getChildNodes(node.childNodesId); + const { + all, + none, + half + } = getChildState(childNodes); + if (all) { + node.checked = true; + node.indeterminate = false; + } else if (half) { + node.checked = false; + node.indeterminate = true; + } else if (none) { + node.checked = false; + node.indeterminate = false; + } + + let parent = node.getParent(node.parentId); + if (!parent || parent.level === 0) return; + + if (!node.store().checkStrictly) { + reInitChecked(parent); + } +}; + +export const getPropertyFromData = function(node, prop) { + const props = node.store().props; + const data = node.data || {}; + const config = props[prop]; + + if (typeof config === 'function') { + return config(data, node); + } else if (typeof config === 'string') { + return data[config]; + } else if (typeof config === 'undefined') { + const dataProp = data[prop]; + return dataProp === undefined ? '' : dataProp; + } +}; + +export const isNull = function(v) { + return v === undefined || v === null || v === ''; +} diff --git a/components/me-tabs/me-tabs.vue b/components/me-tabs/me-tabs.vue new file mode 100644 index 0000000..c6ae5fb --- /dev/null +++ b/components/me-tabs/me-tabs.vue @@ -0,0 +1,184 @@ + + + + + + diff --git a/components/me-video/me-video.vue b/components/me-video/me-video.vue new file mode 100644 index 0000000..acaf660 --- /dev/null +++ b/components/me-video/me-video.vue @@ -0,0 +1,179 @@ + + + + + + diff --git a/components/mescroll-diy/beibei/components/mescroll-down.css b/components/mescroll-diy/beibei/components/mescroll-down.css new file mode 100644 index 0000000..dcefe2d --- /dev/null +++ b/components/mescroll-diy/beibei/components/mescroll-down.css @@ -0,0 +1,47 @@ +/*下拉刷新--标语*/ +.mescroll-downwarp .downwarp-slogan{ + display: block; + width: 420rpx; + height: 168rpx; + margin: auto; +} +/*下拉刷新--向下进度动画*/ +.mescroll-downwarp .downwarp-progress{ + display: inline-block; + width: 40rpx; + height: 40rpx; + border: none; + margin: auto; + background-size: contain; + background-repeat: no-repeat; + background-position: center; + background-image: url(https://www.mescroll.com/img/beibei/mescroll-progress.png); + transition: all 300ms; +} +/*下拉刷新--进度条*/ +.mescroll-downwarp .downwarp-loading{ + display: inline-block; + width: 32rpx; + height: 32rpx; + border-radius: 50%; + border: 2rpx solid #FF8095; + border-bottom-color: transparent; +} +/*下拉刷新--吉祥物*/ +.mescroll-downwarp .downwarp-mascot{ + position: absolute; + right: 16rpx; + bottom: 0; + width: 100rpx; + height: 100rpx; + background-size: contain; + background-repeat: no-repeat; + animation: animMascot .6s steps(1,end) infinite; +} +@keyframes animMascot { + 0% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb1.png)} + 25% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb2.png)} + 50% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb3.png)} + 75% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb4.png)} + 100% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb1.png)} +} \ No newline at end of file diff --git a/components/mescroll-diy/beibei/components/mescroll-down.vue b/components/mescroll-diy/beibei/components/mescroll-down.vue new file mode 100644 index 0000000..ee1d321 --- /dev/null +++ b/components/mescroll-diy/beibei/components/mescroll-down.vue @@ -0,0 +1,39 @@ + + + + + + diff --git a/components/mescroll-diy/beibei/mescroll-body.vue b/components/mescroll-diy/beibei/mescroll-body.vue new file mode 100644 index 0000000..29d5c79 --- /dev/null +++ b/components/mescroll-diy/beibei/mescroll-body.vue @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + diff --git a/components/mescroll-diy/beibei/mescroll-uni-option.js b/components/mescroll-diy/beibei/mescroll-uni-option.js new file mode 100644 index 0000000..3fb723f --- /dev/null +++ b/components/mescroll-diy/beibei/mescroll-uni-option.js @@ -0,0 +1,29 @@ +// mescroll-uni和mescroll-body 的全局配置 +const GlobalOption = { + down: { + // 其他down的配置参数也可以写,这里只展示了常用的配置: + offset: uni.upx2px(140), // 在列表顶部,下拉大于140upx,松手即可触发下拉刷新的回调 + native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + }, + up: { + // 其他up的配置参数也可以写,这里只展示了常用的配置: + textLoading: '加载中 ...', // 加载中的提示文本 + textNoMore: '-- END --', // 没有更多数据的提示文本 + offset: 150, // 距底部多远时,触发upCallback + toTop: { + // 回到顶部按钮,需配置src才显示 + src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) + offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px + right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + }, + empty: { + use: true, // 是否显示空布局 + icon: "https://www.mescroll.com/img/mescroll-empty.png", // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) + tip: '~ 暂无相关数据 ~' // 提示 + } + } +} + +export default GlobalOption \ No newline at end of file diff --git a/components/mescroll-diy/beibei/mescroll-uni.vue b/components/mescroll-diy/beibei/mescroll-uni.vue new file mode 100644 index 0000000..5d3f2e4 --- /dev/null +++ b/components/mescroll-diy/beibei/mescroll-uni.vue @@ -0,0 +1,406 @@ + + + + + + + + + + + + + + + diff --git a/components/mescroll-diy/xinlang/components/mescroll-down.css b/components/mescroll-diy/xinlang/components/mescroll-down.css new file mode 100644 index 0000000..b62ed40 --- /dev/null +++ b/components/mescroll-diy/xinlang/components/mescroll-down.css @@ -0,0 +1,44 @@ +/*下拉刷新--上下箭头*/ +.mescroll-downwarp .downwarp-arrow { + display: inline-block; + width: 20px; + height: 20px; + margin: 10px; + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-arrow.png); + background-size: contain; + vertical-align: middle; + transition: all 300ms; +} + +/*下拉刷新--旋转进度条*/ +.mescroll-downwarp .downwarp-progress{ + width: 36px; + height: 36px; + border: none; + margin: auto; + background-size: contain; + animation: progressRotate 0.6s steps(6, start) infinite; +} +@keyframes progressRotate { + 0% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); + } + 16% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress2.png); + } + 32% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress3.png); + } + 48% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress4.png); + } + 64% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress5.png); + } + 80% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress6.png); + } + 100% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); + } +} \ No newline at end of file diff --git a/components/mescroll-diy/xinlang/components/mescroll-down.vue b/components/mescroll-diy/xinlang/components/mescroll-down.vue new file mode 100644 index 0000000..745d903 --- /dev/null +++ b/components/mescroll-diy/xinlang/components/mescroll-down.vue @@ -0,0 +1,53 @@ + + + + + + diff --git a/components/mescroll-diy/xinlang/components/mescroll-up.css b/components/mescroll-diy/xinlang/components/mescroll-up.css new file mode 100644 index 0000000..abf51f1 --- /dev/null +++ b/components/mescroll-diy/xinlang/components/mescroll-up.css @@ -0,0 +1,32 @@ +/*上拉加载--旋转进度条*/ +.mescroll-upwarp .upwarp-progress { + width: 36px; + height: 36px; + border: none; + margin: auto; + background-size: contain; + animation: progressRotate 0.6s steps(6, start) infinite; +} +@keyframes progressRotate { + 0% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); + } + 16% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress2.png); + } + 32% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress3.png); + } + 48% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress4.png); + } + 64% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress5.png); + } + 80% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress6.png); + } + 100% { + background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png); + } +} \ No newline at end of file diff --git a/components/mescroll-diy/xinlang/components/mescroll-up.vue b/components/mescroll-diy/xinlang/components/mescroll-up.vue new file mode 100644 index 0000000..31bd42a --- /dev/null +++ b/components/mescroll-diy/xinlang/components/mescroll-up.vue @@ -0,0 +1,40 @@ + + + + + + diff --git a/components/mescroll-diy/xinlang/mescroll-body.vue b/components/mescroll-diy/xinlang/mescroll-body.vue new file mode 100644 index 0000000..a7de692 --- /dev/null +++ b/components/mescroll-diy/xinlang/mescroll-body.vue @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + diff --git a/components/mescroll-diy/xinlang/mescroll-uni-option.js b/components/mescroll-diy/xinlang/mescroll-uni-option.js new file mode 100644 index 0000000..8424b85 --- /dev/null +++ b/components/mescroll-diy/xinlang/mescroll-uni-option.js @@ -0,0 +1,36 @@ +// 全局配置 +// mescroll-body 和 mescroll-uni 通用 +const GlobalOption = { + down: { + // 其他down的配置参数也可以写,这里只展示了常用的配置: + textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 + textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 + textLoading: '加载中 ...', // 加载中的提示文本 + textSuccess: '加载成功', // 加载成功的文本 + textErr: '加载失败', // 加载失败的文本 + beforeEndDelay: 0, // 延时结束的时长 (此处设置为0) + offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 + native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + }, + up: { + // 其他up的配置参数也可以写,这里只展示了常用的配置: + textLoading: '加载中 ...', // 加载中的提示文本 + textNoMore: '-- END --', // 没有更多数据的提示文本 + offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) + toTop: { + // 回到顶部按钮,需配置src才显示 + src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) + offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px + right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + }, + empty: { + use: true, // 是否显示空布局 + icon: "https://www.mescroll.com/img/mescroll-empty.png", // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) + tip: '~ 空空如也 ~' // 提示 + } + } +} + +export default GlobalOption diff --git a/components/mescroll-diy/xinlang/mescroll-uni.vue b/components/mescroll-diy/xinlang/mescroll-uni.vue new file mode 100644 index 0000000..f334c75 --- /dev/null +++ b/components/mescroll-diy/xinlang/mescroll-uni.vue @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + diff --git a/components/mescroll-uni/components/mescroll-down.css b/components/mescroll-uni/components/mescroll-down.css new file mode 100644 index 0000000..72bf106 --- /dev/null +++ b/components/mescroll-uni/components/mescroll-down.css @@ -0,0 +1,55 @@ +/* 下拉刷新区域 */ +.mescroll-downwarp { + position: absolute; + top: -100%; + left: 0; + width: 100%; + height: 100%; + text-align: center; +} + +/* 下拉刷新--内容区,定位于区域底部 */ +.mescroll-downwarp .downwarp-content { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + min-height: 60rpx; + padding: 20rpx 0; + text-align: center; +} + +/* 下拉刷新--提示文本 */ +.mescroll-downwarp .downwarp-tip { + display: inline-block; + font-size: 28rpx; + vertical-align: middle; + margin-left: 16rpx; + /* color: gray; 已在style设置color,此处删去*/ +} + +/* 下拉刷新--旋转进度条 */ +.mescroll-downwarp .downwarp-progress { + display: inline-block; + width: 32rpx; + height: 32rpx; + border-radius: 50%; + border: 2rpx solid gray; + border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/ + vertical-align: middle; +} + +/* 旋转动画 */ +.mescroll-downwarp .mescroll-rotate { + animation: mescrollDownRotate 0.6s linear infinite; +} + +@keyframes mescrollDownRotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/components/mescroll-uni/components/mescroll-down.vue b/components/mescroll-uni/components/mescroll-down.vue new file mode 100644 index 0000000..9fd1567 --- /dev/null +++ b/components/mescroll-uni/components/mescroll-down.vue @@ -0,0 +1,47 @@ + + + + + + diff --git a/components/mescroll-uni/components/mescroll-empty.vue b/components/mescroll-uni/components/mescroll-empty.vue new file mode 100644 index 0000000..ff0c01c --- /dev/null +++ b/components/mescroll-uni/components/mescroll-empty.vue @@ -0,0 +1,90 @@ + + + + + + diff --git a/components/mescroll-uni/components/mescroll-top.vue b/components/mescroll-uni/components/mescroll-top.vue new file mode 100644 index 0000000..5115fd8 --- /dev/null +++ b/components/mescroll-uni/components/mescroll-top.vue @@ -0,0 +1,83 @@ + + + + + + diff --git a/components/mescroll-uni/components/mescroll-up.css b/components/mescroll-uni/components/mescroll-up.css new file mode 100644 index 0000000..cbf48cd --- /dev/null +++ b/components/mescroll-uni/components/mescroll-up.css @@ -0,0 +1,47 @@ +/* 上拉加载区域 */ +.mescroll-upwarp { + box-sizing: border-box; + min-height: 110rpx; + padding: 30rpx 0; + text-align: center; + clear: both; +} + +/*提示文本 */ +.mescroll-upwarp .upwarp-tip, +.mescroll-upwarp .upwarp-nodata { + display: inline-block; + font-size: 28rpx; + vertical-align: middle; + /* color: gray; 已在style设置color,此处删去*/ +} + +.mescroll-upwarp .upwarp-tip { + margin-left: 16rpx; +} + +/*旋转进度条 */ +.mescroll-upwarp .upwarp-progress { + display: inline-block; + width: 32rpx; + height: 32rpx; + border-radius: 50%; + border: 2rpx solid gray; + border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/ + vertical-align: middle; +} + +/* 旋转动画 */ +.mescroll-upwarp .mescroll-rotate { + animation: mescrollUpRotate 0.6s linear infinite; +} + +@keyframes mescrollUpRotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/components/mescroll-uni/components/mescroll-up.vue b/components/mescroll-uni/components/mescroll-up.vue new file mode 100644 index 0000000..11c2e1f --- /dev/null +++ b/components/mescroll-uni/components/mescroll-up.vue @@ -0,0 +1,39 @@ + + + + + + diff --git a/components/mescroll-uni/mescroll-body.css b/components/mescroll-uni/mescroll-body.css new file mode 100644 index 0000000..1107710 --- /dev/null +++ b/components/mescroll-uni/mescroll-body.css @@ -0,0 +1,19 @@ +.mescroll-body { + position: relative; /* 下拉刷新区域相对自身定位 */ + height: auto; /* 不可固定高度,否则overflow:hidden导致无法滑动; 同时使设置的最小高生效,实现列表不满屏仍可下拉*/ + overflow: hidden; /* 当有元素写在mescroll-body标签前面时,可遮住下拉刷新区域 */ + box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */ +} + +/* 使sticky生效: 父元素不能overflow:hidden或者overflow:auto属性 */ +.mescroll-body.mescorll-sticky{ + overflow: unset !important +} + +/* 适配 iPhoneX */ +@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { + .mescroll-safearea { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } +} \ No newline at end of file diff --git a/components/mescroll-uni/mescroll-body.vue b/components/mescroll-uni/mescroll-body.vue new file mode 100644 index 0000000..ede7fae --- /dev/null +++ b/components/mescroll-uni/mescroll-body.vue @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + diff --git a/components/mescroll-uni/mescroll-mixins.js b/components/mescroll-uni/mescroll-mixins.js new file mode 100644 index 0000000..71360c7 --- /dev/null +++ b/components/mescroll-uni/mescroll-mixins.js @@ -0,0 +1,65 @@ +// mescroll-body 和 mescroll-uni 通用 + +// import MescrollUni from "./mescroll-uni.vue"; +// import MescrollBody from "./mescroll-body.vue"; + +const MescrollMixin = { + // components: { // 非H5端无法通过mixin注册组件, 只能在main.js中注册全局组件或具体界面中注册 + // MescrollUni, + // MescrollBody + // }, + data() { + return { + mescroll: null //mescroll实例对象 + } + }, + // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + onPullDownRefresh(){ + this.mescroll && this.mescroll.onPullDownRefresh(); + }, + // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) + onPageScroll(e) { + this.mescroll && this.mescroll.onPageScroll(e); + }, + // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效) + onReachBottom() { + this.mescroll && this.mescroll.onReachBottom(); + }, + methods: { + // mescroll组件初始化的回调,可获取到mescroll对象 + mescrollInit(mescroll) { + this.mescroll = mescroll; + this.mescrollInitByRef(); // 兼容字节跳动小程序 + }, + // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序) + mescrollInitByRef() { + if(!this.mescroll || !this.mescroll.resetUpScroll){ + let mescrollRef = this.$refs.mescrollRef; + if(mescrollRef) this.mescroll = mescrollRef.mescroll + } + }, + // 下拉刷新的回调 (mixin默认resetUpScroll) + downCallback() { + if(this.mescroll.optUp.use){ + this.mescroll.resetUpScroll() + }else{ + setTimeout(()=>{ + this.mescroll.endSuccess(); + }, 500) + } + }, + // 上拉加载的回调 + upCallback() { + // mixin默认延时500自动结束加载 + setTimeout(()=>{ + this.mescroll.endErr(); + }, 500) + } + }, + mounted() { + this.mescrollInitByRef(); // 兼容字节跳动小程序, 避免未设置@init或@init此时未能取到ref的情况 + } + +} + +export default MescrollMixin; diff --git a/components/mescroll-uni/mescroll-uni-option.js b/components/mescroll-uni/mescroll-uni-option.js new file mode 100644 index 0000000..42d175c --- /dev/null +++ b/components/mescroll-uni/mescroll-uni-option.js @@ -0,0 +1,36 @@ +// 全局配置 +// mescroll-body 和 mescroll-uni 通用 +const GlobalOption = { + down: { + // 其他down的配置参数也可以写,这里只展示了常用的配置: + textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 + textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 + textLoading: '加载中 ...', // 加载中的提示文本 + textSuccess: '加载成功', // 加载成功的文本 + textErr: '加载失败', // 加载失败的文本 + beforeEndDelay: 100, // 延时结束的时长 (显示加载成功/失败的时长) + offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 + native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + }, + up: { + // 其他up的配置参数也可以写,这里只展示了常用的配置: + textLoading: '加载中 ...', // 加载中的提示文本 + textNoMore: '-- END --', // 没有更多数据的提示文本 + offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) + toTop: { + // 回到顶部按钮,需配置src才显示 + src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png ) + offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px + right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx) + }, + empty: { + use: true, // 是否显示空布局 + icon: "https://www.mescroll.com/img/mescroll-empty.png", // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) + tip: '~ 空空如也 ~' // 提示 + } + } +} + +export default GlobalOption diff --git a/components/mescroll-uni/mescroll-uni.css b/components/mescroll-uni/mescroll-uni.css new file mode 100644 index 0000000..39438cd --- /dev/null +++ b/components/mescroll-uni/mescroll-uni.css @@ -0,0 +1,36 @@ +.mescroll-uni-warp{ + height: 100%; +} + +.mescroll-uni-content{ + height: 100%; +} + +.mescroll-uni { + position: relative; + width: 100%; + height: 100%; + min-height: 200rpx; + overflow-y: auto; + box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */ +} + +/* 定位的方式固定高度 */ +.mescroll-uni-fixed{ + z-index: 1; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: auto; /* 使right生效 */ + height: auto; /* 使bottom生效 */ +} + +/* 适配 iPhoneX */ +@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) { + .mescroll-safearea { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + } +} diff --git a/components/mescroll-uni/mescroll-uni.js b/components/mescroll-uni/mescroll-uni.js new file mode 100644 index 0000000..01bdbb6 --- /dev/null +++ b/components/mescroll-uni/mescroll-uni.js @@ -0,0 +1,799 @@ +/* mescroll + * version 1.3.3 + * 2020-09-15 wenju + * https://www.mescroll.com + */ + +export default function MeScroll(options, isScrollBody) { + let me = this; + me.version = '1.3.3'; // mescroll版本号 + me.options = options || {}; // 配置 + me.isScrollBody = isScrollBody || false; // 滚动区域是否为原生页面滚动; 默认为scroll-view + + me.isDownScrolling = false; // 是否在执行下拉刷新的回调 + me.isUpScrolling = false; // 是否在执行上拉加载的回调 + let hasDownCallback = me.options.down && me.options.down.callback; // 是否配置了down的callback + + // 初始化下拉刷新 + me.initDownScroll(); + // 初始化上拉加载,则初始化 + me.initUpScroll(); + + // 自动加载 + setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例 + // 自动触发下拉刷新 (只有配置了down的callback才自动触发下拉刷新) + if ((me.optDown.use || me.optDown.native) && me.optDown.auto && hasDownCallback) { + if (me.optDown.autoShowLoading) { + me.triggerDownScroll(); // 显示下拉进度,执行下拉回调 + } else { + me.optDown.callback && me.optDown.callback(me); // 不显示下拉进度,直接执行下拉回调 + } + } + // 自动触发上拉加载 + if(!me.isUpAutoLoad){ // 部分小程序(头条小程序)emit是异步, 会导致isUpAutoLoad判断有误, 先延时确保先执行down的callback,再执行up的callback + setTimeout(function(){ + me.optUp.use && me.optUp.auto && !me.isUpAutoLoad && me.triggerUpScroll(); + },100) + } + }, 30); // 需让me.optDown.inited和me.optUp.inited先执行 +} + +/* 配置参数:下拉刷新 */ +MeScroll.prototype.extendDownScroll = function(optDown) { + // 下拉刷新的配置 + MeScroll.extend(optDown, { + use: true, // 是否启用下拉刷新; 默认true + auto: true, // 是否在初始化完毕之后自动执行下拉刷新的回调; 默认true + native: false, // 是否使用系统自带的下拉刷新; 默认false; 仅mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例) + autoShowLoading: false, // 如果设置auto=true(在初始化完毕之后自动执行下拉刷新的回调),那么是否显示下拉刷新的进度; 默认false + isLock: false, // 是否锁定下拉刷新,默认false; + offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调 + startTop: 100, // scroll-view快速滚动到顶部时,此时的scroll-top可能大于0, 此值用于控制最大的误差 + inOffsetRate: 1, // 在列表顶部,下拉的距离小于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉 + outOffsetRate: 0.2, // 在列表顶部,下拉的距离大于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉 + bottomOffset: 20, // 当手指touchmove位置在距离body底部20px范围内的时候结束上拉刷新,避免Webview嵌套导致touchend事件不执行 + minAngle: 45, // 向下滑动最少偏移的角度,取值区间 [0,90];默认45度,即向下滑动的角度大于45度则触发下拉;而小于45度,将不触发下拉,避免与左右滑动的轮播等组件冲突; + textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本 + textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本 + textLoading: '加载中 ...', // 加载中的提示文本 + textSuccess: '加载成功', // 加载成功的文本 + textErr: '加载失败', // 加载失败的文本 + beforeEndDelay: 100, // 延时结束的时长 (显示加载成功/失败的时长) + bgColor: "transparent", // 背景颜色 (建议在pages.json中再设置一下backgroundColorTop) + textColor: "gray", // 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色) + inited: null, // 下拉刷新初始化完毕的回调 + inOffset: null, // 下拉的距离进入offset范围内那一刻的回调 + outOffset: null, // 下拉的距离大于offset那一刻的回调 + onMoving: null, // 下拉过程中的回调,滑动过程一直在执行; rate下拉区域当前高度与指定距离的比值(inOffset: rate<1; outOffset: rate>=1); downHight当前下拉区域的高度 + beforeLoading: null, // 准备触发下拉刷新的回调: 如果return true,将不触发showLoading和callback回调; 常用来完全自定义下拉刷新, 参考案例【淘宝 v6.8.0】 + showLoading: null, // 显示下拉刷新进度的回调 + afterLoading: null, // 显示下拉刷新进度的回调之后,马上要执行的代码 (如: 在wxs中使用) + beforeEndDownScroll: null, // 准备结束下拉的回调. 返回结束下拉的延时执行时间,默认0ms; 常用于结束下拉之前再显示另外一小段动画,才去隐藏下拉刷新的场景, 参考案例【dotJump】 + endDownScroll: null, // 结束下拉刷新的回调 + afterEndDownScroll: null, // 结束下拉刷新的回调,马上要执行的代码 (如: 在wxs中使用) + callback: function(mescroll) { + // 下拉刷新的回调;默认重置上拉加载列表为第一页 + mescroll.resetUpScroll(); + } + }) +} + +/* 配置参数:上拉加载 */ +MeScroll.prototype.extendUpScroll = function(optUp) { + // 上拉加载的配置 + MeScroll.extend(optUp, { + use: true, // 是否启用上拉加载; 默认true + auto: true, // 是否在初始化完毕之后自动执行上拉加载的回调; 默认true + isLock: false, // 是否锁定上拉加载,默认false; + isBoth: true, // 上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认true,两者可同时触发; + callback: null, // 上拉加载的回调;function(page,mescroll){ } + page: { + num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始 + size: 10, // 每页数据的数量 + time: null // 加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复; + }, + noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看 + offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance ) + textLoading: '加载中 ...', // 加载中的提示文本 + textNoMore: '-- END --', // 没有更多数据的提示文本 + bgColor: "transparent", // 背景颜色 (建议在pages.json中再设置一下backgroundColorBottom) + textColor: "gray", // 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色) + inited: null, // 初始化完毕的回调 + showLoading: null, // 显示加载中的回调 + showNoMore: null, // 显示无更多数据的回调 + hideUpScroll: null, // 隐藏上拉加载的回调 + errDistance: 60, // endErr的时候需往上滑动一段距离,使其往下滑动时再次触发onReachBottom,仅mescroll-body生效 + toTop: { + // 回到顶部按钮,需配置src才显示 + src: null, // 图片路径,默认null (绝对路径或网络图) + offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000 + duration: 300, // 回到顶部的动画时长,默认300ms (当值为0或300则使用系统自带回到顶部,更流畅; 其他值则通过step模拟,部分机型可能不够流畅,所以非特殊情况不建议修改此项) + btnClick: null, // 点击按钮的回调 + onShow: null, // 是否显示的回调 + zIndex: 9990, // fixed定位z-index值 + left: null, // 到左边的距离, 默认null. 此项有值时,right不生效. (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + right: 20, // 到右边的距离, 默认20 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + bottom: 120, // 到底部的距离, 默认120 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + safearea: false, // bottom的偏移量是否加上底部安全区的距离, 默认false, 需要适配iPhoneX时使用 (具体的界面如果不配置此项,则取本vue的safearea值) + width: 72, // 回到顶部图标的宽度, 默认72 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + radius: "50%" // 圆角, 默认"50%" (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx) + }, + empty: { + use: true, // 是否显示空布局 + icon: null, // 图标路径 + tip: '~ 暂无相关数据 ~', // 提示 + btnText: '', // 按钮 + btnClick: null, // 点击按钮的回调 + onShow: null, // 是否显示的回调 + fixed: false, // 是否使用fixed定位,默认false; 配置fixed为true,以下的top和zIndex才生效 (transform会使fixed失效,最终会降级为absolute) + top: "100rpx", // fixed定位的top值 (完整的单位值,如 "10%"; "100rpx") + zIndex: 99 // fixed定位z-index值 + }, + onScroll: false // 是否监听滚动事件 + }) +} + +/* 配置参数 */ +MeScroll.extend = function(userOption, defaultOption) { + if (!userOption) return defaultOption; + for (let key in defaultOption) { + if (userOption[key] == null) { + let def = defaultOption[key]; + if (def != null && typeof def === 'object') { + userOption[key] = MeScroll.extend({}, def); // 深度匹配 + } else { + userOption[key] = def; + } + } else if (typeof userOption[key] === 'object') { + MeScroll.extend(userOption[key], defaultOption[key]); // 深度匹配 + } + } + return userOption; +} + +/* 简单判断是否配置了颜色 (非透明,非白色) */ +MeScroll.prototype.hasColor = function(color) { + if(!color) return false; + let c = color.toLowerCase(); + return c != "#fff" && c != "#ffffff" && c != "transparent" && c != "white" +} + +/* -------初始化下拉刷新------- */ +MeScroll.prototype.initDownScroll = function() { + let me = this; + // 配置参数 + me.optDown = me.options.down || {}; + if(!me.optDown.textColor && me.hasColor(me.optDown.bgColor)) me.optDown.textColor = "#fff"; // 当bgColor有值且textColor未设置,则textColor默认白色 + me.extendDownScroll(me.optDown); + + // 如果是mescroll-body且配置了native,则禁止自定义的下拉刷新 + if(me.isScrollBody && me.optDown.native){ + me.optDown.use = false + }else{ + me.optDown.native = false // 仅mescroll-body支持,mescroll-uni不支持 + } + + me.downHight = 0; // 下拉区域的高度 + + // 在页面中加入下拉布局 + if (me.optDown.use && me.optDown.inited) { + // 初始化完毕的回调 + setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例 + me.optDown.inited(me); + }, 0) + } +} + +/* 列表touchstart事件 */ +MeScroll.prototype.touchstartEvent = function(e) { + if (!this.optDown.use) return; + + this.startPoint = this.getPoint(e); // 记录起点 + this.startTop = this.getScrollTop(); // 记录此时的滚动条位置 + this.startAngle = 0; // 初始角度 + this.lastPoint = this.startPoint; // 重置上次move的点 + this.maxTouchmoveY = this.getBodyHeight() - this.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况) + this.inTouchend = false; // 标记不是touchend +} + +/* 列表touchmove事件 */ +MeScroll.prototype.touchmoveEvent = function(e) { + if (!this.optDown.use) return; + let me = this; + + let scrollTop = me.getScrollTop(); // 当前滚动条的距离 + let curPoint = me.getPoint(e); // 当前点 + + let moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + + // 向下拉 && 在顶部 + // mescroll-body,直接判定在顶部即可 + // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove + // scroll-view滚动到顶部时,scrollTop不一定为0,也有可能大于0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等 + if (moveY > 0 && ( + (me.isScrollBody && scrollTop <= 0) + || + (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)) ) + )) { + // 可下拉的条件 + if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && + me.optUp.isBoth))) { + + // 下拉的初始角度是否在配置的范围内 + if(!me.startAngle) me.startAngle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90] + if (me.startAngle < me.optDown.minAngle) return; // 如果小于配置的角度,则不往下执行下拉刷新 + + // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发 + if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) { + me.inTouchend = true; // 标记执行touchend + me.touchendEvent(); // 提前触发touchend + return; + } + + me.preventDefault(e); // 阻止默认事件 + + let diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上) + + // 下拉距离 < 指定距离 + if (me.downHight < me.optDown.offset) { + if (me.movetype !== 1) { + me.movetype = 1; // 加入标记,保证只执行一次 + me.isDownEndSuccess = null; // 重置是否加载成功的状态 (wxs执行的是wxs.wxs) + me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次 + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小 + + // 指定距离 <= 下拉距离 + } else { + if (me.movetype !== 2) { + me.movetype = 2; // 加入标记,保证只执行一次 + me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次 + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + if (diff > 0) { // 向下拉 + me.downHight += diff * me.optDown.outOffsetRate; // 越往下,高度变化越小 + } else { // 向上收 + me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度 + } + } + + me.downHight = Math.round(me.downHight) // 取整 + let rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值 + me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行 + } + } + + me.lastPoint = curPoint; // 记录本次移动的点 +} + +/* 列表touchend事件 */ +MeScroll.prototype.touchendEvent = function(e) { + if (!this.optDown.use) return; + // 如果下拉区域高度已改变,则需重置回来 + if (this.isMoveDown) { + if (this.downHight >= this.optDown.offset) { + // 符合触发刷新的条件 + this.triggerDownScroll(); + } else { + // 不符合的话 则重置 + this.downHight = 0; + this.endDownScrollCall(this); + } + this.movetype = 0; + this.isMoveDown = false; + } else if (!this.isScrollBody && this.getScrollTop() === this.startTop) { // scroll-view到顶/左/右/底的滑动事件 + let isScrollUp = this.getPoint(e).y - this.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + // 上滑 + if (isScrollUp) { + // 需检查滑动的角度 + let angle = this.getAngle(this.getPoint(e), this.startPoint); // 两点之间的角度,区间 [0,90] + if (angle > 80) { + // 检查并触发上拉 + this.triggerUpScroll(true); + } + } + } +} + +/* 根据点击滑动事件获取第一个手指的坐标 */ +MeScroll.prototype.getPoint = function(e) { + if (!e) { + return { + x: 0, + y: 0 + } + } + if (e.touches && e.touches[0]) { + return { + x: e.touches[0].pageX, + y: e.touches[0].pageY + } + } else if (e.changedTouches && e.changedTouches[0]) { + return { + x: e.changedTouches[0].pageX, + y: e.changedTouches[0].pageY + } + } else { + return { + x: e.clientX, + y: e.clientY + } + } +} + +/* 计算两点之间的角度: 区间 [0,90]*/ +MeScroll.prototype.getAngle = function(p1, p2) { + let x = Math.abs(p1.x - p2.x); + let y = Math.abs(p1.y - p2.y); + let z = Math.sqrt(x * x + y * y); + let angle = 0; + if (z !== 0) { + angle = Math.asin(y / z) / Math.PI * 180; + } + return angle +} + +/* 触发下拉刷新 */ +MeScroll.prototype.triggerDownScroll = function() { + if (this.optDown.beforeLoading && this.optDown.beforeLoading(this)) { + //return true则处于完全自定义状态 + } else { + this.showDownScroll(); // 下拉刷新中... + !this.optDown.native && this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据 + } +} + +/* 显示下拉进度布局 */ +MeScroll.prototype.showDownScroll = function() { + this.isDownScrolling = true; // 标记下拉中 + if (this.optDown.native) { + uni.startPullDownRefresh(); // 系统自带的下拉刷新 + this.showDownLoadingCall(0); // 仍触发showLoading,因为上拉加载用到 + } else{ + this.downHight = this.optDown.offset; // 更新下拉区域高度 + this.showDownLoadingCall(this.downHight); // 下拉刷新中... + } +} + +MeScroll.prototype.showDownLoadingCall = function(downHight) { + this.optDown.showLoading && this.optDown.showLoading(this, downHight); // 下拉刷新中... + this.optDown.afterLoading && this.optDown.afterLoading(this, downHight); // 下拉刷新中...触发之后马上要执行的代码 +} + +/* 显示系统自带的下拉刷新时需要处理的业务 */ +MeScroll.prototype.onPullDownRefresh = function() { + this.isDownScrolling = true; // 标记下拉中 + this.showDownLoadingCall(0); // 仍触发showLoading,因为上拉加载用到 + this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据 +} + +/* 结束下拉刷新 */ +MeScroll.prototype.endDownScroll = function() { + if (this.optDown.native) { // 结束原生下拉刷新 + this.isDownScrolling = false; + this.endDownScrollCall(this); + uni.stopPullDownRefresh(); + return + } + let me = this; + // 结束下拉刷新的方法 + let endScroll = function() { + me.downHight = 0; + me.isDownScrolling = false; + me.endDownScrollCall(me); + if(!me.isScrollBody){ + me.setScrollHeight(0) // scroll-view重置滚动区域,使数据不满屏时仍可检查触发翻页 + me.scrollTo(0,0) // scroll-view需重置滚动条到顶部,避免startTop大于0时,对下拉刷新的影响 + } + } + // 结束下拉刷新时的回调 + let delay = 0; + if (me.optDown.beforeEndDownScroll) { + delay = me.optDown.beforeEndDownScroll(me); // 结束下拉刷新的延时,单位ms + if(me.isDownEndSuccess == null) delay = 0; // 没有执行加载中,则不延时 + } + if (typeof delay === 'number' && delay > 0) { + setTimeout(endScroll, delay); + } else { + endScroll(); + } +} + +MeScroll.prototype.endDownScrollCall = function() { + this.optDown.endDownScroll && this.optDown.endDownScroll(this); + this.optDown.afterEndDownScroll && this.optDown.afterEndDownScroll(this); +} + +/* 锁定下拉刷新:isLock=ture,null锁定;isLock=false解锁 */ +MeScroll.prototype.lockDownScroll = function(isLock) { + if (isLock == null) isLock = true; + this.optDown.isLock = isLock; +} + +/* 锁定上拉加载:isLock=ture,null锁定;isLock=false解锁 */ +MeScroll.prototype.lockUpScroll = function(isLock) { + if (isLock == null) isLock = true; + this.optUp.isLock = isLock; +} + +/* -------初始化上拉加载------- */ +MeScroll.prototype.initUpScroll = function() { + let me = this; + // 配置参数 + me.optUp = me.options.up || {use: false} + if(!me.optUp.textColor && me.hasColor(me.optUp.bgColor)) me.optUp.textColor = "#fff"; // 当bgColor有值且textColor未设置,则textColor默认白色 + me.extendUpScroll(me.optUp); + + if (me.optUp.use === false) return; // 配置不使用上拉加载时,则不初始化上拉布局 + me.optUp.hasNext = true; // 如果使用上拉,则默认有下一页 + me.startNum = me.optUp.page.num + 1; // 记录page开始的页码 + + // 初始化完毕的回调 + if (me.optUp.inited) { + setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例 + me.optUp.inited(me); + }, 0) + } +} + +/*滚动到底部的事件 (仅mescroll-body生效)*/ +MeScroll.prototype.onReachBottom = function() { + if (this.isScrollBody && !this.isUpScrolling) { // 只能支持下拉刷新的时候同时可以触发上拉加载,否则滚动到底部就需要上滑一点才能触发onReachBottom + if (!this.optUp.isLock && this.optUp.hasNext) { + this.triggerUpScroll(); + } + } +} + +/*列表滚动事件 (仅mescroll-body生效)*/ +MeScroll.prototype.onPageScroll = function(e) { + if (!this.isScrollBody) return; + + // 更新滚动条的位置 (主要用于判断下拉刷新时,滚动条是否在顶部) + this.setScrollTop(e.scrollTop); + + // 顶部按钮的显示隐藏 + if (e.scrollTop >= this.optUp.toTop.offset) { + this.showTopBtn(); + } else { + this.hideTopBtn(); + } +} + +/*列表滚动事件*/ +MeScroll.prototype.scroll = function(e, onScroll) { + // 更新滚动条的位置 + this.setScrollTop(e.scrollTop); + // 更新滚动内容高度 + this.setScrollHeight(e.scrollHeight); + + // 向上滑还是向下滑动 + if (this.preScrollY == null) this.preScrollY = 0; + this.isScrollUp = e.scrollTop - this.preScrollY > 0; + this.preScrollY = e.scrollTop; + + // 上滑 && 检查并触发上拉 + this.isScrollUp && this.triggerUpScroll(true); + + // 顶部按钮的显示隐藏 + if (e.scrollTop >= this.optUp.toTop.offset) { + this.showTopBtn(); + } else { + this.hideTopBtn(); + } + + // 滑动监听 + this.optUp.onScroll && onScroll && onScroll() +} + +/* 触发上拉加载 */ +MeScroll.prototype.triggerUpScroll = function(isCheck) { + if (!this.isUpScrolling && this.optUp.use && this.optUp.callback) { + // 是否校验在底部; 默认不校验 + if (isCheck === true) { + let canUp = false; + // 还有下一页 && 没有锁定 && 不在下拉中 + if (this.optUp.hasNext && !this.optUp.isLock && !this.isDownScrolling) { + if (this.getScrollBottom() <= this.optUp.offset) { // 到底部 + canUp = true; // 标记可上拉 + } + } + if (canUp === false) return; + } + this.showUpScroll(); // 上拉加载中... + this.optUp.page.num++; // 预先加一页,如果失败则减回 + this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调 + this.num = this.optUp.page.num; // 把最新的页数赋值在mescroll上,避免对page的影响 + this.size = this.optUp.page.size; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.time = this.optUp.page.time; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.optUp.callback(this); // 执行回调,联网加载数据 + } +} + +/* 显示上拉加载中 */ +MeScroll.prototype.showUpScroll = function() { + this.isUpScrolling = true; // 标记上拉加载中 + this.optUp.showLoading && this.optUp.showLoading(this); // 回调 +} + +/* 显示上拉无更多数据 */ +MeScroll.prototype.showNoMore = function() { + this.optUp.hasNext = false; // 标记无更多数据 + this.optUp.showNoMore && this.optUp.showNoMore(this); // 回调 +} + +/* 隐藏上拉区域**/ +MeScroll.prototype.hideUpScroll = function() { + this.optUp.hideUpScroll && this.optUp.hideUpScroll(this); // 回调 +} + +/* 结束上拉加载 */ +MeScroll.prototype.endUpScroll = function(isShowNoMore) { + if (isShowNoMore != null) { // isShowNoMore=null,不处理下拉状态,下拉刷新的时候调用 + if (isShowNoMore) { + this.showNoMore(); // isShowNoMore=true,显示无更多数据 + } else { + this.hideUpScroll(); // isShowNoMore=false,隐藏上拉加载 + } + } + this.isUpScrolling = false; // 标记结束上拉加载 +} + +/* 重置上拉加载列表为第一页 + *isShowLoading 是否显示进度布局; + * 1.默认null,不传参,则显示上拉加载的进度布局 + * 2.传参true, 则显示下拉刷新的进度布局 + * 3.传参false,则不显示上拉和下拉的进度 (常用于静默更新列表数据) + */ +MeScroll.prototype.resetUpScroll = function(isShowLoading) { + if (this.optUp && this.optUp.use) { + let page = this.optUp.page; + this.prePageNum = page.num; // 缓存重置前的页码,加载失败可退回 + this.prePageTime = page.time; // 缓存重置前的时间,加载失败可退回 + page.num = this.startNum; // 重置为第一页 + page.time = null; // 重置时间为空 + if (!this.isDownScrolling && isShowLoading !== false) { // 如果不是下拉刷新触发的resetUpScroll并且不配置列表静默更新,则显示进度; + if (isShowLoading == null) { + this.removeEmpty(); // 移除空布局 + this.showUpScroll(); // 不传参,默认显示上拉加载的进度布局 + } else { + this.showDownScroll(); // 传true,显示下拉刷新的进度布局,不清空列表 + } + } + this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调 + this.num = page.num; // 把最新的页数赋值在mescroll上,避免对page的影响 + this.size = page.size; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.time = page.time; // 把最新的页码赋值在mescroll上,避免对page的影响 + this.optUp.callback && this.optUp.callback(this); // 执行上拉回调 + } +} + +/* 设置page.num的值 */ +MeScroll.prototype.setPageNum = function(num) { + this.optUp.page.num = num - 1; +} + +/* 设置page.size的值 */ +MeScroll.prototype.setPageSize = function(size) { + this.optUp.page.size = size; +} + +/* 联网回调成功,结束下拉刷新和上拉加载 + * dataSize: 当前页的数据量(必传) + * totalPage: 总页数(必传) + * systime: 服务器时间 (可空) + */ +MeScroll.prototype.endByPage = function(dataSize, totalPage, systime) { + let hasNext; + if (this.optUp.use && totalPage != null) hasNext = this.optUp.page.num < totalPage; // 是否还有下一页 + this.endSuccess(dataSize, hasNext, systime); +} + +/* 联网回调成功,结束下拉刷新和上拉加载 + * dataSize: 当前页的数据量(必传) + * totalSize: 列表所有数据总数量(必传) + * systime: 服务器时间 (可空) + */ +MeScroll.prototype.endBySize = function(dataSize, totalSize, systime) { + let hasNext; + if (this.optUp.use && totalSize != null) { + let loadSize = (this.optUp.page.num - 1) * this.optUp.page.size + dataSize; // 已加载的数据总数 + hasNext = loadSize < totalSize; // 是否还有下一页 + } + this.endSuccess(dataSize, hasNext, systime); +} + +/* 联网回调成功,结束下拉刷新和上拉加载 + * dataSize: 当前页的数据个数(不是所有页的数据总和),用于上拉加载判断是否还有下一页.如果不传,则会判断还有下一页 + * hasNext: 是否还有下一页,布尔类型;用来解决这个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据dataSize判断,则需翻到第三页才会知道无更多数据,如果传了hasNext,则翻到第二页即可显示无更多数据. + * systime: 服务器时间(可空);用来解决这个小问题:当准备翻下一页时,数据库新增了几条记录,此时翻下一页,前面的几条数据会和上一页的重复;这里传入了systime,那么upCallback的page.time就会有值,把page.time传给服务器,让后台过滤新加入的那几条记录 + */ +MeScroll.prototype.endSuccess = function(dataSize, hasNext, systime) { + let me = this; + // 结束下拉刷新 + if (me.isDownScrolling) { + me.isDownEndSuccess = true + me.endDownScroll(); + } + + // 结束上拉加载 + if (me.optUp.use) { + let isShowNoMore; // 是否已无更多数据 + if (dataSize != null) { + let pageNum = me.optUp.page.num; // 当前页码 + let pageSize = me.optUp.page.size; // 每页长度 + // 如果是第一页 + if (pageNum === 1) { + if (systime) me.optUp.page.time = systime; // 设置加载列表数据第一页的时间 + } + if (dataSize < pageSize || hasNext === false) { + // 返回的数据不满一页时,则说明已无更多数据 + me.optUp.hasNext = false; + if (dataSize === 0 && pageNum === 1) { + // 如果第一页无任何数据且配置了空布局 + isShowNoMore = false; + me.showEmpty(); + } else { + // 总列表数少于配置的数量,则不显示无更多数据 + let allDataSize = (pageNum - 1) * pageSize + dataSize; + if (allDataSize < me.optUp.noMoreSize) { + isShowNoMore = false; + } else { + isShowNoMore = true; + } + me.removeEmpty(); // 移除空布局 + } + } else { + // 还有下一页 + isShowNoMore = false; + me.optUp.hasNext = true; + me.removeEmpty(); // 移除空布局 + } + } + + // 隐藏上拉 + me.endUpScroll(isShowNoMore); + } +} + +/* 回调失败,结束下拉刷新和上拉加载 */ +MeScroll.prototype.endErr = function(errDistance) { + // 结束下拉,回调失败重置回原来的页码和时间 + if (this.isDownScrolling) { + this.isDownEndSuccess = false + let page = this.optUp.page; + if (page && this.prePageNum) { + page.num = this.prePageNum; + page.time = this.prePageTime; + } + this.endDownScroll(); + } + // 结束上拉,回调失败重置回原来的页码 + if (this.isUpScrolling) { + this.optUp.page.num--; + this.endUpScroll(false); + // 如果是mescroll-body,则需往回滚一定距离 + if(this.isScrollBody && errDistance !== 0){ // 不处理0 + if(!errDistance) errDistance = this.optUp.errDistance; // 不传,则取默认 + this.scrollTo(this.getScrollTop() - errDistance, 0) // 往上回滚的距离 + } + } +} + +/* 显示空布局 */ +MeScroll.prototype.showEmpty = function() { + this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(true) +} + +/* 移除空布局 */ +MeScroll.prototype.removeEmpty = function() { + this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(false) +} + +/* 显示回到顶部的按钮 */ +MeScroll.prototype.showTopBtn = function() { + if (!this.topBtnShow) { + this.topBtnShow = true; + this.optUp.toTop.onShow && this.optUp.toTop.onShow(true); + } +} + +/* 隐藏回到顶部的按钮 */ +MeScroll.prototype.hideTopBtn = function() { + if (this.topBtnShow) { + this.topBtnShow = false; + this.optUp.toTop.onShow && this.optUp.toTop.onShow(false); + } +} + +/* 获取滚动条的位置 */ +MeScroll.prototype.getScrollTop = function() { + return this.scrollTop || 0 +} + +/* 记录滚动条的位置 */ +MeScroll.prototype.setScrollTop = function(y) { + this.scrollTop = y; +} + +/* 滚动到指定位置 */ +MeScroll.prototype.scrollTo = function(y, t) { + this.myScrollTo && this.myScrollTo(y, t) // scrollview需自定义回到顶部方法 +} + +/* 自定义scrollTo */ +MeScroll.prototype.resetScrollTo = function(myScrollTo) { + this.myScrollTo = myScrollTo +} + +/* 滚动条到底部的距离 */ +MeScroll.prototype.getScrollBottom = function() { + return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop() +} + +/* 计步器 + star: 开始值 + end: 结束值 + callback(step,timer): 回调step值,计步器timer,可自行通过window.clearInterval(timer)结束计步器; + t: 计步时长,传0则直接回调end值;不传则默认300ms + rate: 周期;不传则默认30ms计步一次 + * */ +MeScroll.prototype.getStep = function(star, end, callback, t, rate) { + let diff = end - star; // 差值 + if (t === 0 || diff === 0) { + callback && callback(end); + return; + } + t = t || 300; // 时长 300ms + rate = rate || 30; // 周期 30ms + let count = t / rate; // 次数 + let step = diff / count; // 步长 + let i = 0; // 计数 + let timer = setInterval(function() { + if (i < count - 1) { + star += step; + callback && callback(star, timer); + i++; + } else { + callback && callback(end, timer); // 最后一次直接设置end,避免计算误差 + clearInterval(timer); + } + }, rate); +} + +/* 滚动容器的高度 */ +MeScroll.prototype.getClientHeight = function(isReal) { + let h = this.clientHeight || 0 + if (h === 0 && isReal !== true) { // 未获取到容器的高度,可临时取body的高度 (可能会有误差) + h = this.getBodyHeight() + } + return h +} +MeScroll.prototype.setClientHeight = function(h) { + this.clientHeight = h; +} + +/* 滚动内容的高度 */ +MeScroll.prototype.getScrollHeight = function() { + return this.scrollHeight || 0; +} +MeScroll.prototype.setScrollHeight = function(h) { + this.scrollHeight = h; +} + +/* body的高度 */ +MeScroll.prototype.getBodyHeight = function() { + return this.bodyHeight || 0; +} +MeScroll.prototype.setBodyHeight = function(h) { + this.bodyHeight = h; +} + +/* 阻止浏览器默认滚动事件 */ +MeScroll.prototype.preventDefault = function(e) { + // 小程序不支持e.preventDefault, 已在wxs中禁止 + // app的bounce只能通过配置pages.json的style.app-plus.bounce为"none"来禁止, 或使用renderjs禁止 + // cancelable:是否可以被禁用; defaultPrevented:是否已经被禁用 + if (e && e.cancelable && !e.defaultPrevented) e.preventDefault() +} \ No newline at end of file diff --git a/components/mescroll-uni/mescroll-uni.vue b/components/mescroll-uni/mescroll-uni.vue new file mode 100644 index 0000000..402c995 --- /dev/null +++ b/components/mescroll-uni/mescroll-uni.vue @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + diff --git a/components/mescroll-uni/mixins/mescroll-comp.js b/components/mescroll-uni/mixins/mescroll-comp.js new file mode 100644 index 0000000..b504894 --- /dev/null +++ b/components/mescroll-uni/mixins/mescroll-comp.js @@ -0,0 +1,48 @@ +/** + * mescroll-body写在子组件时,需通过mescroll的mixins补充子组件缺少的生命周期 + */ +const MescrollCompMixin = { + // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 (一级) + onPageScroll(e) { + this.handlePageScroll(e) + }, + onReachBottom() { + this.handleReachBottom() + }, + // 当down的native: true时, 还需传递此方法进到子组件 + onPullDownRefresh(){ + this.handlePullDownRefresh() + }, + // mescroll-body写在子子子...组件的情况 (多级) + data() { + return { + mescroll: { + onPageScroll: e=>{ + this.handlePageScroll(e) + }, + onReachBottom: ()=>{ + this.handleReachBottom() + }, + onPullDownRefresh: ()=>{ + this.handlePullDownRefresh() + } + } + } + }, + methods:{ + handlePageScroll(e){ + let item = this.$refs["mescrollItem"]; + if(item && item.mescroll) item.mescroll.onPageScroll(e); + }, + handleReachBottom(){ + let item = this.$refs["mescrollItem"]; + if(item && item.mescroll) item.mescroll.onReachBottom(); + }, + handlePullDownRefresh(){ + let item = this.$refs["mescrollItem"]; + if(item && item.mescroll) item.mescroll.onPullDownRefresh(); + } + } +} + +export default MescrollCompMixin; diff --git a/components/mescroll-uni/mixins/mescroll-more-item.js b/components/mescroll-uni/mixins/mescroll-more-item.js new file mode 100644 index 0000000..5cb920b --- /dev/null +++ b/components/mescroll-uni/mixins/mescroll-more-item.js @@ -0,0 +1,59 @@ +/** + * mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例) + */ +const MescrollMoreItemMixin = { + // 支付宝小程序不支持props的mixin,需写在具体的页面中 + // #ifndef MP-ALIPAY || MP-DINGTALK + props:{ + i: Number, // 每个tab页的专属下标 + index: { // 当前tab的下标 + type: Number, + default(){ + return 0 + } + } + }, + // #endif + data() { + return { + downOption:{ + auto:false // 不自动加载 + }, + upOption:{ + auto:false // 不自动加载 + }, + isInit: false // 当前tab是否已初始化 + } + }, + watch:{ + // 监听下标的变化 + index(val){ + if (this.i === val && !this.isInit) { + this.isInit = true; // 标记为true + this.mescroll && this.mescroll.triggerDownScroll(); + } + } + }, + methods: { + // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序) + mescrollInitByRef() { + if(!this.mescroll || !this.mescroll.resetUpScroll){ + // 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标' + let mescrollRef = this.$refs.mescrollRef || this.$refs['mescrollRef'+this.i]; + if(mescrollRef) this.mescroll = mescrollRef.mescroll + } + }, + // mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit) + mescrollInit(mescroll) { + this.mescroll = mescroll; + this.mescrollInitByRef && this.mescrollInitByRef(); // 兼容字节跳动小程序 + // 自动加载当前tab的数据 + if(this.i === this.index){ + this.isInit = true; // 标记为true + this.mescroll.triggerDownScroll(); + } + }, + } +} + +export default MescrollMoreItemMixin; diff --git a/components/mescroll-uni/mixins/mescroll-more.js b/components/mescroll-uni/mixins/mescroll-more.js new file mode 100644 index 0000000..d765088 --- /dev/null +++ b/components/mescroll-uni/mixins/mescroll-more.js @@ -0,0 +1,74 @@ +/** + * mescroll-body写在子组件时, 需通过mescroll的mixins补充子组件缺少的生命周期 + */ +const MescrollMoreMixin = { + data() { + return { + tabIndex: 0, // 当前tab下标 + mescroll: { + onPageScroll: e=>{ + this.handlePageScroll(e) + }, + onReachBottom: ()=>{ + this.handleReachBottom() + }, + onPullDownRefresh: ()=>{ + this.handlePullDownRefresh() + } + } + } + }, + // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 + onPageScroll(e) { + this.handlePageScroll(e) + }, + onReachBottom() { + this.handleReachBottom() + }, + // 当down的native: true时, 还需传递此方法进到子组件 + onPullDownRefresh(){ + this.handlePullDownRefresh() + }, + methods:{ + handlePageScroll(e){ + let mescroll = this.getMescroll(this.tabIndex); + mescroll && mescroll.onPageScroll(e); + }, + handleReachBottom(){ + let mescroll = this.getMescroll(this.tabIndex); + mescroll && mescroll.onReachBottom(); + }, + handlePullDownRefresh(){ + let mescroll = this.getMescroll(this.tabIndex); + mescroll && mescroll.onPullDownRefresh(); + }, + // 根据下标获取对应子组件的mescroll + getMescroll(i){ + if(!this.mescrollItems) this.mescrollItems = []; + if(!this.mescrollItems[i]) { + // v-for中的refs + let vForItem = this.$refs["mescrollItem"]; + if(vForItem){ + this.mescrollItems[i] = vForItem[i] + }else{ + // 普通的refs,不可重复 + this.mescrollItems[i] = this.$refs["mescrollItem"+i]; + } + } + let item = this.mescrollItems[i] + return item ? item.mescroll : null + }, + // 切换tab,恢复滚动条位置 + tabChange(i){ + let mescroll = this.getMescroll(i); + if(mescroll){ + // 延时(比$nextTick靠谱一些),确保元素已渲染 + setTimeout(()=>{ + mescroll.scrollTo(mescroll.getScrollTop(),0) + },30) + } + } + } +} + +export default MescrollMoreMixin; diff --git a/components/mescroll-uni/wxs/mixins.js b/components/mescroll-uni/wxs/mixins.js new file mode 100644 index 0000000..34ffa3c --- /dev/null +++ b/components/mescroll-uni/wxs/mixins.js @@ -0,0 +1,109 @@ +// 定义在wxs (含renderjs) 逻辑层的数据和方法, 与视图层相互通信 +const WxsMixin = { + data() { + return { + // 传入wxs视图层的数据 (响应式) + wxsProp: { + optDown:{}, // 下拉刷新的配置 + scrollTop:0, // 滚动条的距离 + bodyHeight:0, // body的高度 + isDownScrolling:false, // 是否正在下拉刷新中 + isUpScrolling:false, // 是否正在上拉加载中 + isScrollBody:true, // 是否为mescroll-body滚动 + isUpBoth:true, // 上拉加载时,是否同时可以下拉刷新 + t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer) + }, + + // 标记调用wxs视图层的方法 + callProp: { + callType: '', // 方法名 + t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer) + }, + + // 不用wxs的平台使用此处的wxsBiz对象,抹平wxs的写法 (微信小程序和APP使用的wxsBiz对象是./wxs/wxs.wxs) + // #ifndef MP-WEIXIN || MP-QQ || APP-PLUS || H5 + wxsBiz: { + //注册列表touchstart事件,用于下拉刷新 + touchstartEvent: e=> { + this.mescroll.touchstartEvent(e); + }, + //注册列表touchmove事件,用于下拉刷新 + touchmoveEvent: e=> { + this.mescroll.touchmoveEvent(e); + }, + //注册列表touchend事件,用于下拉刷新 + touchendEvent: e=> { + this.mescroll.touchendEvent(e); + }, + propObserver(){}, // 抹平wxs的写法 + callObserver(){} // 抹平wxs的写法 + }, + // #endif + + // 不用renderjs的平台使用此处的renderBiz对象,抹平renderjs的写法 (app 和 h5 使用的renderBiz对象是./wxs/renderjs.js) + // #ifndef APP-PLUS || H5 + renderBiz: { + propObserver(){} // 抹平renderjs的写法 + } + // #endif + } + }, + methods: { + // wxs视图层调用逻辑层的回调 + wxsCall(msg){ + if(msg.type === 'setWxsProp'){ + // 更新wxsProp数据 (值改变才触发更新) + this.wxsProp = { + optDown: this.mescroll.optDown, + scrollTop: this.mescroll.getScrollTop(), + bodyHeight: this.mescroll.getBodyHeight(), + isDownScrolling: this.mescroll.isDownScrolling, + isUpScrolling: this.mescroll.isUpScrolling, + isUpBoth: this.mescroll.optUp.isBoth, + isScrollBody:this.mescroll.isScrollBody, + t: Date.now() + } + }else if(msg.type === 'setLoadType'){ + // 设置inOffset,outOffset的状态 + this.downLoadType = msg.downLoadType + // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如中 + this.$set(this.mescroll, 'downLoadType', this.downLoadType) + // 重置是否加载成功的状态 + this.$set(this.mescroll, 'isDownEndSuccess', null) + }else if(msg.type === 'triggerDownScroll'){ + // 主动触发下拉刷新 + this.mescroll.triggerDownScroll(); + }else if(msg.type === 'endDownScroll'){ + // 结束下拉刷新 + this.mescroll.endDownScroll(); + }else if(msg.type === 'triggerUpScroll'){ + // 主动触发上拉加载 + this.mescroll.triggerUpScroll(true); + } + } + }, + mounted() { + // #ifdef MP-WEIXIN || MP-QQ || APP-PLUS || H5 + // 配置主动触发wxs显示加载进度的回调 + this.mescroll.optDown.afterLoading = ()=>{ + this.callProp = {callType: "showLoading", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) + } + // 配置主动触发wxs隐藏加载进度的回调 + this.mescroll.optDown.afterEndDownScroll = ()=>{ + this.callProp = {callType: "endDownScroll", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) + let delay = 300 + (this.mescroll.optDown.beforeEndDelay || 0) + setTimeout(()=>{ + if(this.downLoadType === 4 || this.downLoadType === 0){ + this.callProp = {callType: "clearTransform", t: Date.now()} // 触发wxs的方法 (值改变才触发更新) + } + // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如中 + this.$set(this.mescroll, 'downLoadType', this.downLoadType) + }, delay) + } + // 初始化wxs的数据 + this.wxsCall({type: 'setWxsProp'}) + // #endif + } +} + +export default WxsMixin; diff --git a/components/mescroll-uni/wxs/renderjs.js b/components/mescroll-uni/wxs/renderjs.js new file mode 100644 index 0000000..207f388 --- /dev/null +++ b/components/mescroll-uni/wxs/renderjs.js @@ -0,0 +1,92 @@ +// 使用renderjs直接操作window对象,实现动态控制app和h5的bounce +// bounce: iOS橡皮筋,Android半月弧,h5浏览器下拉背景等效果 (下拉刷新时禁止) +// https://uniapp.dcloud.io/frame?id=renderjs + +// 与wxs的me实例一致 +var me = {} + +// 初始化window对象的touch事件 (仅初始化一次) +if(window && !window.$mescrollRenderInit){ + window.$mescrollRenderInit = true + + + window.addEventListener('touchstart', function(e){ + if (me.disabled()) return; + me.startPoint = me.getPoint(e); // 记录起点 + }, {passive: true}) + + + window.addEventListener('touchmove', function(e){ + if (me.disabled()) return; + if (me.getScrollTop() > 0) return; // 需在顶部下拉,才禁止bounce + + var curPoint = me.getPoint(e); // 当前点 + var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + // 向下拉 + if (moveY > 0) { + // 可下拉的条件 + if (!me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && me.isUpBoth))) { + + // 只有touch在mescroll的view上面,才禁止bounce + var el = e.target; + var isMescrollTouch = false; + while (el && el.tagName && el.tagName !== 'UNI-PAGE-BODY' && el.tagName != "BODY") { + var cls = el.classList; + if (cls && cls.contains('mescroll-render-touch')) { + isMescrollTouch = true + break; + } + el = el.parentNode; // 继续检查其父元素 + } + // 禁止bounce (不会对swiper和iOS侧滑返回造成影响) + if (isMescrollTouch && e.cancelable && !e.defaultPrevented) e.preventDefault(); + } + } + }, {passive: false}) +} + +/* 获取滚动条的位置 */ +me.getScrollTop = function() { + return me.scrollTop || 0 +} + +/* 是否禁用下拉刷新 */ +me.disabled = function(){ + return !me.optDown || !me.optDown.use || me.optDown.native +} + +/* 根据点击滑动事件获取第一个手指的坐标 */ +me.getPoint = function(e) { + if (!e) { + return {x: 0,y: 0} + } + if (e.touches && e.touches[0]) { + return {x: e.touches[0].pageX,y: e.touches[0].pageY} + } else if (e.changedTouches && e.changedTouches[0]) { + return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY} + } else { + return {x: e.clientX,y: e.clientY} + } +} + +/** + * 监听逻辑层数据的变化 (实时更新数据) + */ +function propObserver(wxsProp) { + me.optDown = wxsProp.optDown + me.scrollTop = wxsProp.scrollTop + me.isDownScrolling = wxsProp.isDownScrolling + me.isUpScrolling = wxsProp.isUpScrolling + me.isUpBoth = wxsProp.isUpBoth +} + +/* 导出模块 */ +const renderBiz = { + data() { + return { + propObserver: propObserver, + } + } +} + +export default renderBiz; \ No newline at end of file diff --git a/components/mescroll-uni/wxs/wxs.wxs b/components/mescroll-uni/wxs/wxs.wxs new file mode 100644 index 0000000..3fb4ad9 --- /dev/null +++ b/components/mescroll-uni/wxs/wxs.wxs @@ -0,0 +1,268 @@ +// 使用wxs处理交互动画, 提高性能, 同时避免小程序bounce对下拉刷新的影响 +// https://uniapp.dcloud.io/frame?id=wxs +// https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html + +// 模拟mescroll实例, 与mescroll.js的写法尽量保持一致 +var me = {} + +// ------ 自定义下拉刷新动画 start ------ + +/* 下拉过程中的回调,滑动过程一直在执行 (rate<1为inOffset; rate>1为outOffset) */ +me.onMoving = function (ins, rate, downHight){ + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': 'transform', // 可解决下拉过程中, image和swiper脱离文档流的问题 + 'transform': 'translateY(' + downHight + 'px)', + 'transition': '' + }) + // 环形进度条 + var progress = ins.selectComponent('.mescroll-wxs-progress') + progress && progress.setStyle({transform: 'rotate(' + 360 * rate + 'deg)'}) + }) +} + +/* 显示下拉刷新进度 */ +me.showLoading = function (ins){ + me.downHight = me.optDown.offset + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': 'auto', + 'transform': 'translateY(' + me.downHight + 'px)', + 'transition': 'transform 300ms' + }) + }) +} + +/* 结束下拉 */ +me.endDownScroll = function (ins){ + me.downHight = 0; + me.isDownScrolling = false; + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': 'auto', + 'transform': 'translateY(0)', // 不可以写空串,否则scroll-view渲染不完整 (延时350ms会调clearTransform置空) + 'transition': 'transform 300ms' + }) + }) +} + +/* 结束下拉动画执行完毕后, 清除transform和transition, 避免对列表内容样式造成影响, 如: h5的list-msg示例下拉进度条漏出来等 */ +me.clearTransform = function (ins){ + ins.requestAnimationFrame(function () { + ins.selectComponent('.mescroll-wxs-content').setStyle({ + 'will-change': '', + 'transform': '', + 'transition': '' + }) + }) +} + +// ------ 自定义下拉刷新动画 end ------ + +/** + * 监听逻辑层数据的变化 (实时更新数据) + */ +function propObserver(wxsProp) { + me.optDown = wxsProp.optDown + me.scrollTop = wxsProp.scrollTop + me.bodyHeight = wxsProp.bodyHeight + me.isDownScrolling = wxsProp.isDownScrolling + me.isUpScrolling = wxsProp.isUpScrolling + me.isUpBoth = wxsProp.isUpBoth + me.isScrollBody = wxsProp.isScrollBody + me.startTop = wxsProp.scrollTop // 及时更新touchstart触发的startTop, 避免scroll-view快速惯性滚动到顶部取值不准确 +} + +/** + * 监听逻辑层数据的变化 (调用wxs的方法) + */ +function callObserver(callProp, oldValue, ins) { + if (me.disabled()) return; + if(callProp.callType){ + // 逻辑层(App Service)的style已失效,需在视图层(Webview)设置style + if(callProp.callType === 'showLoading'){ + me.showLoading(ins) + }else if(callProp.callType === 'endDownScroll'){ + me.endDownScroll(ins) + }else if(callProp.callType === 'clearTransform'){ + me.clearTransform(ins) + } + } +} + +/** + * touch事件 + */ +function touchstartEvent(e, ins) { + me.downHight = 0; // 下拉的距离 + me.startPoint = me.getPoint(e); // 记录起点 + me.startTop = me.getScrollTop(); // 记录此时的滚动条位置 + me.startAngle = 0; // 初始角度 + me.lastPoint = me.startPoint; // 重置上次move的点 + me.maxTouchmoveY = me.getBodyHeight() - me.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况) + me.inTouchend = false; // 标记不是touchend + + me.callMethod(ins, {type: 'setWxsProp'}) // 同步更新wxsProp的数据 (小程序是异步的,可能touchmove先执行,才到propObserver; h5和app是同步) +} + +function touchmoveEvent(e, ins) { + var isPrevent = true // false表示不往上冒泡,相当于调用了同时调用了stopPropagation和preventDefault (对小程序生效, h5和app无效) + + if (me.disabled()) return isPrevent; + + var scrollTop = me.getScrollTop(); // 当前滚动条的距离 + var curPoint = me.getPoint(e); // 当前点 + + var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + + // 向下拉 && 在顶部 + // mescroll-body,直接判定在顶部即可 + // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove + // scroll-view滚动到顶部时,scrollTop不一定为0,也有可能大于0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等 + if (moveY > 0 && ( + (me.isScrollBody && scrollTop <= 0) + || + (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)) ) + )) { + // 可下拉的条件 + if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && + me.isUpBoth))) { + + // 下拉的角度是否在配置的范围内 + if(!me.startAngle) me.startAngle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90] + if (me.startAngle < me.optDown.minAngle) return isPrevent; // 如果小于配置的角度,则不往下执行下拉刷新 + + // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发 + if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) { + me.inTouchend = true; // 标记执行touchend + touchendEvent(e, ins); // 提前触发touchend + return isPrevent; + } + + isPrevent = false // 小程序是return false + + var diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上) + + // 下拉距离 < 指定距离 + if (me.downHight < me.optDown.offset) { + if (me.movetype !== 1) { + me.movetype = 1; // 加入标记,保证只执行一次 + // me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次 + me.callMethod(ins, {type: 'setLoadType', downLoadType: 1}) + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小 + + // 指定距离 <= 下拉距离 + } else { + if (me.movetype !== 2) { + me.movetype = 2; // 加入标记,保证只执行一次 + // me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次 + me.callMethod(ins, {type: 'setLoadType', downLoadType: 2}) + me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来 + } + if (diff > 0) { // 向下拉 + me.downHight += diff * me.optDown.outOffsetRate; // 越往下,高度变化越小 + } else { // 向上收 + me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度 + } + } + + me.downHight = Math.round(me.downHight) // 取整 + var rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值 + // me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行 + me.onMoving(ins, rate, me.downHight) + } + } + + me.lastPoint = curPoint; // 记录本次移动的点 + + return isPrevent // false表示不往上冒泡,相当于调用了同时调用了stopPropagation和preventDefault (对小程序生效, h5和app无效) +} + +function touchendEvent(e, ins) { + // 如果下拉区域高度已改变,则需重置回来 + if (me.isMoveDown) { + if (me.downHight >= me.optDown.offset) { + // 符合触发刷新的条件 + me.downHight = me.optDown.offset; // 更新下拉区域高度 + // me.triggerDownScroll(); + me.callMethod(ins, {type: 'triggerDownScroll'}) + } else { + // 不符合的话 则重置 + me.downHight = 0; + // me.optDown.endDownScroll && me.optDown.endDownScroll(me); + me.callMethod(ins, {type: 'endDownScroll'}) + } + me.movetype = 0; + me.isMoveDown = false; + } else if (!me.isScrollBody && me.getScrollTop() === me.startTop) { // scroll-view到顶/左/右/底的滑动事件 + var isScrollUp = me.getPoint(e).y - me.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉 + // 上滑 + if (isScrollUp) { + // 需检查滑动的角度 + var angle = me.getAngle(me.getPoint(e), me.startPoint); // 两点之间的角度,区间 [0,90] + if (angle > 80) { + // 检查并触发上拉 + // me.triggerUpScroll(true); + me.callMethod(ins, {type: 'triggerUpScroll'}) + } + } + } + me.callMethod(ins, {type: 'setWxsProp'}) // 同步更新wxsProp的数据 (小程序是异步的,可能touchmove先执行,才到propObserver; h5和app是同步) +} + +/* 是否禁用下拉刷新 */ +me.disabled = function(){ + return !me.optDown || !me.optDown.use || me.optDown.native +} + +/* 根据点击滑动事件获取第一个手指的坐标 */ +me.getPoint = function(e) { + if (!e) { + return {x: 0,y: 0} + } + if (e.touches && e.touches[0]) { + return {x: e.touches[0].pageX,y: e.touches[0].pageY} + } else if (e.changedTouches && e.changedTouches[0]) { + return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY} + } else { + return {x: e.clientX,y: e.clientY} + } +} + +/* 计算两点之间的角度: 区间 [0,90]*/ +me.getAngle = function (p1, p2) { + var x = Math.abs(p1.x - p2.x); + var y = Math.abs(p1.y - p2.y); + var z = Math.sqrt(x * x + y * y); + var angle = 0; + if (z !== 0) { + angle = Math.asin(y / z) / Math.PI * 180; + } + return angle +} + +/* 获取滚动条的位置 */ +me.getScrollTop = function() { + return me.scrollTop || 0 +} + +/* 获取body的高度 */ +me.getBodyHeight = function() { + return me.bodyHeight || 0; +} + +/* 调用逻辑层的方法 */ +me.callMethod = function(ins, param) { + if(ins) ins.callMethod('wxsCall', param) +} + +/* 导出模块 */ +module.exports = { + propObserver: propObserver, + callObserver: callObserver, + touchstartEvent: touchstartEvent, + touchmoveEvent: touchmoveEvent, + touchendEvent: touchendEvent +} \ No newline at end of file diff --git a/components/timeline/timeline.vue b/components/timeline/timeline.vue new file mode 100644 index 0000000..0ea66e1 --- /dev/null +++ b/components/timeline/timeline.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/components/touch-list/touch-list.vue b/components/touch-list/touch-list.vue new file mode 100644 index 0000000..a184354 --- /dev/null +++ b/components/touch-list/touch-list.vue @@ -0,0 +1,161 @@ + + + + + + diff --git a/components/uni-data-checkbox/clientdb.js b/components/uni-data-checkbox/clientdb.js new file mode 100644 index 0000000..ff7501b --- /dev/null +++ b/components/uni-data-checkbox/clientdb.js @@ -0,0 +1,316 @@ + +const events = { + load: 'load', + error: 'error' +} +const pageMode = { + add: 'add', + replace: 'replace' +} + +const attrs = [ + 'pageCurrent', + 'pageSize', + 'collection', + 'action', + 'field', + 'getcount', + 'orderby', + 'where' +] + +export default { + data() { + return { + loading: false, + listData: this.getone ? {} : [], + paginationInternal: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + }, + errorMessage: '' + } + }, + created() { + let db = null; + let dbCmd = null; + + if(this.collection){ + this.db = uniCloud.database(); + this.dbCmd = this.db.command; + } + + this._isEnded = false + + this.$watch(() => { + var al = [] + attrs.forEach(key => { + al.push(this[key]) + }) + return al + }, (newValue, oldValue) => { + this.paginationInternal.pageSize = this.pageSize + + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (needReset) { + this.clear() + this.reset() + } + if (newValue[0] != oldValue[0]) { + this.paginationInternal.current = this.pageCurrent + } + + this._execLoadData() + }) + + // #ifdef H5 + if (process.env.NODE_ENV === 'development') { + this._debugDataList = [] + if (!window.unidev) { + window.unidev = { + clientDB: { + data: [] + } + } + } + unidev.clientDB.data.push(this._debugDataList) + } + // #endif + + // #ifdef MP-TOUTIAO + let changeName + let events = this.$scope.dataset.eventOpts + for (var i = 0; i < events.length; i++) { + let event = events[i] + if (event[0].includes('^load')) { + changeName = event[1][0][0] + } + } + if (changeName) { + let parent = this.$parent + let maxDepth = 16 + this._changeDataFunction = null + while (parent && maxDepth > 0) { + let fun = parent[changeName] + if (fun && typeof fun === 'function') { + this._changeDataFunction = fun + maxDepth = 0 + break + } + parent = parent.$parent + maxDepth--; + } + } + // #endif + + // if (!this.manual) { + // this.loadData() + // } + }, + // #ifdef H5 + beforeDestroy() { + if (process.env.NODE_ENV === 'development' && window.unidev) { + var cd = this._debugDataList + var dl = unidev.clientDB.data + for (var i = dl.length - 1; i >= 0; i--) { + if (dl[i] === cd) { + dl.splice(i, 1) + break + } + } + } + }, + // #endif + methods: { + loadData(args1, args2) { + let callback = null + if (typeof args1 === 'object') { + if (args1.clear) { + this.clear() + this.reset() + } + if (args1.current !== undefined) { + this.paginationInternal.current = args1.current + } + if (typeof args2 === 'function') { + callback = args2 + } + } else if (typeof args1 === 'function') { + callback = args1 + } + + this._execLoadData(callback) + }, + loadMore() { + if (this._isEnded) { + return + } + this._execLoadData() + }, + refresh() { + this.clear() + this._execLoadData() + }, + clear() { + this._isEnded = false + this.listData = [] + }, + reset() { + this.paginationInternal.current = 1 + }, + remove(id, { + action, + callback, + confirmTitle, + confirmContent + } = {}) { + if (!id || !id.length) { + return + } + uni.showModal({ + title: confirmTitle || '提示', + content: confirmContent || '是否删除该数据', + showCancel: true, + success: (res) => { + if (!res.confirm) { + return + } + this._execRemove(id, action, callback) + } + }) + }, + _execLoadData(callback) { + if (this.loading) { + return + } + this.loading = true + this.errorMessage = '' + + this._getExec().then((res) => { + this.loading = false + const { + data, + count + } = res.result + this._isEnded = data.length < this.pageSize + + callback && callback(data, this._isEnded) + this._dispatchEvent(events.load, data) + + if (this.getone) { + this.listData = data.length ? data[0] : undefined + } else if (this.pageData === pageMode.add) { + this.listData.push(...data) + if (this.listData.length) { + this.paginationInternal.current++ + } + } else if (this.pageData === pageMode.replace) { + this.listData = data + this.paginationInternal.count = count + } + + // #ifdef H5 + if (process.env.NODE_ENV === 'development') { + this._debugDataList.length = 0 + this._debugDataList.push(...JSON.parse(JSON.stringify(this.listData))) + } + // #endif + }).catch((err) => { + this.loading = false + this.errorMessage = err + callback && callback() + this.$emit(events.error, err) + }) + }, + _getExec() { + let exec = this.db + if (this.action) { + exec = exec.action(this.action) + } + + exec = exec.collection(this.collection) + + if (!(!this.where || !Object.keys(this.where).length)) { + exec = exec.where(this.where) + } + if (this.field) { + exec = exec.field(this.field) + } + if (this.orderby) { + exec = exec.orderBy(this.orderby) + } + + const { + current, + size + } = this.paginationInternal + exec = exec.skip(size * (current - 1)).limit(size).get({ + getCount: this.getcount + }) + + return exec + }, + _execRemove(id, action, callback) { + if (!this.collection || !id) { + return + } + + const ids = Array.isArray(id) ? id : [id] + if (!ids.length) { + return + } + + uni.showLoading({ + mask: true + }) + + let exec = this.db + if (action) { + exec = exec.action(action) + } + + exec.collection(this.collection).where({ + _id: dbCmd.in(ids) + }).remove().then((res) => { + callback && callback(res.result) + if (this.pageData === pageMode.replace) { + this.refresh() + } else { + this.removeData(ids) + } + }).catch((err) => { + uni.showModal({ + content: err.message, + showCancel: false + }) + }).finally(() => { + uni.hideLoading() + }) + }, + removeData(ids) { + let il = ids.slice(0) + let dl = this.listData + for (let i = dl.length - 1; i >= 0; i--) { + let index = il.indexOf(dl[i]._id) + if (index >= 0) { + dl.splice(i, 1) + il.splice(index, 1) + } + } + }, + _dispatchEvent(type, data) { + if (this._changeDataFunction) { + this._changeDataFunction(data, this._isEnded) + } else { + this.$emit(type, data, this._isEnded) + } + } + } +} diff --git a/components/uni-data-checkbox/uni-data-checkbox.vue b/components/uni-data-checkbox/uni-data-checkbox.vue new file mode 100644 index 0000000..9e57752 --- /dev/null +++ b/components/uni-data-checkbox/uni-data-checkbox.vue @@ -0,0 +1,833 @@ + + + + + diff --git a/components/uni-datetime-picker/uni-datetime-picker.vue b/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..d82b3f2 --- /dev/null +++ b/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,364 @@ + + + + + diff --git a/components/uni-easyinput/common.js b/components/uni-easyinput/common.js new file mode 100644 index 0000000..df9abe1 --- /dev/null +++ b/components/uni-easyinput/common.js @@ -0,0 +1,56 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + console.log(1); + return function() { + console.log(123); + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/components/uni-easyinput/uni-easyinput.vue b/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..81ac755 --- /dev/null +++ b/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,402 @@ + + + + + diff --git a/components/uni-forms-item/uni-forms-item.vue b/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..33a265c --- /dev/null +++ b/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,441 @@ + + + + + diff --git a/components/uni-forms/uni-forms.vue b/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..0412faf --- /dev/null +++ b/components/uni-forms/uni-forms.vue @@ -0,0 +1,420 @@ + + + + + diff --git a/components/uni-forms/validate.js b/components/uni-forms/validate.js new file mode 100644 index 0000000..e369abb --- /dev/null +++ b/components/uni-forms/validate.js @@ -0,0 +1,442 @@ + +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + url: new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", 'i') +}; + +const FORMAT_MAPPING = { + "int": 'number', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' +} + +function formatMessage(args, resources) { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function (value) { + return typeof value === 'boolean'; + }, + "float": function (value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + var v + if (value instanceof Date) { + v = value; + } else { + v = new Date(value); + } + return typeof v.getTime === 'function' && typeof v.getMonth === 'function' && typeof v.getYear === 'function' && !isNaN(v.getTime()); + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + + return this.date(value); + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(key, value, data, allData) { + var result = null + + let rules = key.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + if (key.label !== undefined) { + Object.assign(rule, { + label: key.label + }) + } + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + // TODO + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum || rule.minimum) { + result = 'rangeNumber' + } else if (rule.maxLength || rule.minLength) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { range, errorMessage } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { minimum, maximum, exclusiveMinimum, exclusiveMaximum } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'].min) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'].max) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].min) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].max) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : rule.format; + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.types[format]); + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + return [{ + key: 'invalid', + errorMessage: SchemaValidator.message['defaultInvalid'] + }] + } +} + +function Message() { + return { + default: '验证错误', + defaultInvalid: '字段超出范围', + required: '{label}必填', + 'enum': '{label}超出范围', + whitespace: '{label}不能为空', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + types: { + string: '{label}类型无效', + array: '{label}类型无效', + object: '{label}类型无效', + number: '{label}类型无效', + date: '{label}类型无效', + boolean: '{label}类型无效', + integer: '{label}类型无效', + float: '{label}类型无效', + regexp: '{label}无效', + email: '{label}类型无效', + url: '{label}类型无效' + }, + length: { + min: '{label}长度不能少于{minLength}', + max: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + min: '{label}不能小于{minimum}', + max: '{label}不能大于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new Message(); + +export default SchemaValidator diff --git a/components/uni-group/uni-group.vue b/components/uni-group/uni-group.vue new file mode 100644 index 0000000..41cb8b5 --- /dev/null +++ b/components/uni-group/uni-group.vue @@ -0,0 +1,127 @@ + + + + diff --git a/components/uni-icons/icons.js b/components/uni-icons/icons.js new file mode 100644 index 0000000..1f5a778 --- /dev/null +++ b/components/uni-icons/icons.js @@ -0,0 +1,96 @@ +export default { + 'contact': '\ue100', + 'person': '\ue101', + 'personadd': '\ue102', + 'contact-filled': '\ue130', + 'person-filled': '\ue131', + 'personadd-filled': '\ue132', + 'phone': '\ue200', + 'email': '\ue201', + 'chatbubble': '\ue202', + 'chatboxes': '\ue203', + 'phone-filled': '\ue230', + 'email-filled': '\ue231', + 'chatbubble-filled': '\ue232', + 'chatboxes-filled': '\ue233', + 'weibo': '\ue260', + 'weixin': '\ue261', + 'pengyouquan': '\ue262', + 'chat': '\ue263', + 'qq': '\ue264', + 'videocam': '\ue300', + 'camera': '\ue301', + 'mic': '\ue302', + 'location': '\ue303', + 'mic-filled': '\ue332', + 'speech': '\ue332', + 'location-filled': '\ue333', + 'micoff': '\ue360', + 'image': '\ue363', + 'map': '\ue364', + 'compose': '\ue400', + 'trash': '\ue401', + 'upload': '\ue402', + 'download': '\ue403', + 'close': '\ue404', + 'redo': '\ue405', + 'undo': '\ue406', + 'refresh': '\ue407', + 'star': '\ue408', + 'plus': '\ue409', + 'minus': '\ue410', + 'circle': '\ue411', + 'checkbox': '\ue411', + 'close-filled': '\ue434', + 'clear': '\ue434', + 'refresh-filled': '\ue437', + 'star-filled': '\ue438', + 'plus-filled': '\ue439', + 'minus-filled': '\ue440', + 'circle-filled': '\ue441', + 'checkbox-filled': '\ue442', + 'closeempty': '\ue460', + 'refreshempty': '\ue461', + 'reload': '\ue462', + 'starhalf': '\ue463', + 'spinner': '\ue464', + 'spinner-cycle': '\ue465', + 'search': '\ue466', + 'plusempty': '\ue468', + 'forward': '\ue470', + 'back': '\ue471', + 'left-nav': '\ue471', + 'checkmarkempty': '\ue472', + 'home': '\ue500', + 'navigate': '\ue501', + 'gear': '\ue502', + 'paperplane': '\ue503', + 'info': '\ue504', + 'help': '\ue505', + 'locked': '\ue506', + 'more': '\ue507', + 'flag': '\ue508', + 'home-filled': '\ue530', + 'gear-filled': '\ue532', + 'info-filled': '\ue534', + 'help-filled': '\ue535', + 'more-filled': '\ue537', + 'settings': '\ue560', + 'list': '\ue562', + 'bars': '\ue563', + 'loop': '\ue565', + 'paperclip': '\ue567', + 'eye': '\ue568', + 'arrowup': '\ue580', + 'arrowdown': '\ue581', + 'arrowleft': '\ue582', + 'arrowright': '\ue583', + 'arrowthinup': '\ue584', + 'arrowthindown': '\ue585', + 'arrowthinleft': '\ue586', + 'arrowthinright': '\ue587', + 'pulldown': '\ue588', + 'closefill': '\ue589', + 'sound': '\ue590', + 'scan': '\ue612' +} diff --git a/components/uni-icons/uni-icons.vue b/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..85b4180 --- /dev/null +++ b/components/uni-icons/uni-icons.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/components/uni-icons/uni.ttf b/components/uni-icons/uni.ttf new file mode 100644 index 0000000..60a1968 Binary files /dev/null and b/components/uni-icons/uni.ttf differ diff --git a/components/uni-pagination/uni-pagination.vue b/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..cb4adb7 --- /dev/null +++ b/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/components/uni-picker/uni-picker.vue b/components/uni-picker/uni-picker.vue new file mode 100644 index 0000000..1a53718 --- /dev/null +++ b/components/uni-picker/uni-picker.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/js_sdk/zhouWei-request/api.js b/js_sdk/zhouWei-request/api.js new file mode 100644 index 0000000..abcf7ca --- /dev/null +++ b/js_sdk/zhouWei-request/api.js @@ -0,0 +1,297 @@ +// import $http from './requestConfig'; +// // let host = 'http://192.168.31.140:8080'; +// // let host = 'http://192.168.31.136:8080'; + +// let host = 'http://dq.huorantech.cn' + +// export const login = p => post('/apiHrmsAuth/hrms/auth/userlogin/login', p); //登录 +// export const phoneCode = p => get('/apiHrmsAuth/hrms/auth/userlogin/sendCode', p); //找回密码验证码 + +// export const verifyMobile = p => post('/apiHrmsAuth/hrms/auth/userlogin/verifyMobile', p); //忘记密码 +// export const getBackPwd = p => post('/apiHrmsAuth/hrms/auth/userlogin/getBackPwd', p); //设置新密码 +// export const querycustomerList = p => $http.get('/api-crms/crms/customer/queryList', p); //查询客户 +// export const deleteCustomer = p => del('/api-crms/crms/customer/deleteCustomer', p); //删除客户 +// export const queryDetails = p => get('/api-crms/crms/customer/queryDetails', p); //查询客户详情 +// export const savePersonal = p => post('/api-crms/crms/customer/savePersonal', p); //添加个人客户 +// export const saveCompany = p => post('/api-crms/crms/customer/saveCompany', p); //添加企业客户 +// export const updateCompany = p => post('/api-crms/crms/customer/updateCompany', p); //编辑企业客户 +// export const updatePersonal = p => post('/api-crms/crms/customer/updatePersonal', p); //编辑个人客户 +// export const listEmployeeName = p => get('/api-hrms/hrms/employee/listEmployeeName', p); //查询所有的客户经理 +// export const updatePwd = p => post('/apiHrmsAuth/hrms/auth/userlogin/updatePwd', p); //修改平台超管员密码 +// export const loginLogList = p => get('/apiHrmsAuth/hrms/auth/systemLog/loginLogList', p); //平台日志列表 +// export const rolePermissionList = p => get('/apiHrmsAuth/hrms/auth/permission/rolePermissionList', p); //角色权限列表 +// export const queryPermission = p => get('/apiHrmsAuth/hrms/auth/permission/queryPermissionByRoleId', p); //查看角色权限 +// export const saveRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/saveRolePermission', p); //新增角色权限 +// export const updateRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/updateRolePermission', p); //编辑角色权限 +// export const delRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/delRolePermission', p); //删除角色权限 +// export const jurTree = p => get('/apiHrmsAuth/hrms/auth/permission/tree', p); //查询所有权限树形结构 + +// // 后台-人资-部门 +// export const departmentTree = p => get('/api-hrms/hrms/dept/tree',p); //部门树形结构数据(显示部门) +// export const addDepartment = p => post('/api-hrms/hrms/dept/save', p); //新增一条部门信息 +// export const deleteDepartment = p => del('/api-hrms/hrms/dept/delete', p); //删除部门信息(树结构) +// export const editDepartment = p => put('/api-hrms/hrms/dept/update', p); //根据id修改部门信息(编辑) +// export const dragDepartment = p => put('/api-hrms/hrms/dept/update/sort', p); //修改部门的拖拽排序(传id和排序) +// export const rulesAll = p => get('/api-hrms/hrms/position/listRoleIdAndName', p); //所有角色id+名称 +// export const postAll = p => post('/api-hrms/hrms/position/listPositionIdAndName', p); //所有职位id+名称 +// export const ruleJurisdiction = p => post('/api-hrms/hrms/employee/tree', p); //新增员工-角色对应的权限 +// export const clickDepartment = p => get('/api-hrms/hrms/dept/children', p); //点击部门,搜索该部门名下的员工 +// // 后台-人资-员工列表 +// export const deleteStaff = p => del('/api-hrms/hrms/employee/delete', p); //根据id删除员工 +// export const forbiddenStaff = p => get('/api-hrms/hrms/employee/forbidInfo', p); //禁用详情(为啥禁用) +// export const queryStaff = p => get('/api-hrms/hrms/employee/getEmployeeAndDeptById', p); //根据id查询员工的基本信息 +// export const queryStaffName = p => get('/api-hrms/hrms/employee/getEmployeeById', p); //根据id查询员工姓名 +// export const staffMessage = p => get('/api-hrms/hrms/employee/info', p); //根据id查询员工详细信息 +// export const staffList = p => get('/api-hrms/hrms/employee/list', p); //查询列表 +// export const staffResetPwd = p => get('/api-hrms/hrms/employee/reset', p); //员工重置密码 +// export const addStaff = p => post('/api-hrms/hrms/employee/save', p); //新增员工 +// export const startStaff = p => get('/api-hrms/hrms/employee/start', p); //启用员工 +// export const stopStaff = p => post('/api-hrms/hrms/employee/stop', p); //禁用员工 +// export const roleStaff = p => post('/api-hrms/hrms/employee/tree', p); //角色对应权限 +// export const editStaff = p => post('/api-hrms/hrms/employee/update', p); //修改员工 +// // 后台-员工-导入 +// export const importStaff = p => post('/api-hrms/hrms/employee/excelImport',p); //导入员工(上传) +// // 后台-员工-导出 +// export const excelStaffFile = `${host}/api-hrms/hrms/employee/excelExport`; //导出员工文件 +// export const excelTemplateStaff = `${host}/api-hrms/hrms/employee/excelTemplate`; //导出员工模板 +// // 后台-人资-职位 +// export const deletePost = p => del('/api-hrms/hrms/position/delete', p); //删除职位信息 +// export const searchPostId = p => get('/api-hrms/hrms/position/info', p); //职位id查询职位信息详情 +// export const postList = p => get('/api-hrms/hrms/position/list', p); //职位列表+查询 +// export const addPostMessage = p => post('/api-hrms/hrms/position/save', p); //新增职位信息 +// export const editPostMessage = p => put('/api-hrms/hrms/position/update', p); //修改职位信息 + + +// // 系统-新增角色权限 +// export const newAddRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/saveRolePermission', p); //新增角色权限 +// export const editRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/updateRolePermission', p); //修改角色权限 +// export const getPermissionIds = p => get('/apiHrmsAuth/hrms/auth/permission/queryPermissionArrById', p); //已有权限的ids + +// // 工作台--人力资源 +// // 绑定手机号 +// export const workBindPhone = p => get('/api-hrms/hrms/user/binding', p); +// // 微信解绑 +// export const wxUnbundle = p => get('/api-hrms/hrms/user/cancel', p); +// // 验证码 +// export const workPhoneAuthCord = p => get('/api-hrms/hrms/user/code', p); +// // 用户信息 +// export const workUserMsg = p => get('/api-hrms/hrms/user/info', p); +// // 修改用户信息9 +// export const woreEditUserMsg = p => post('/api-hrms/hrms/user/update', p); +// // 修改密码 +// export const workEditPwd = p => get('/api-hrms/hrms/user/updatePassword', p); +// // 头像上传 +// export const headImgUp = p => post('/api-hrms/hrms/user/uploadFile', p); + + +// // 工作台--客户资源管理 +// // 删除 +// export const workClientDel = p => post('/api-crms/crms/workbench/delete', p); +// // 详情 +// export const workClientParticulars = p => get('/api-crms/crms/workbench/info', p); +// // 客户信息列表展示 +// export const workClientMsgList = p => get('/api-crms/crms/workbench/list', p); +// // 获取当前客户部门经理--下属客户经理 +// export const workClientManager= p => get('/api-crms/crms/workbench/manager', p); +// // 不通过 +// export const workClientNoPass = p => get('/api-crms/crms/workbench/noPass', p); +// // 通过审核 +// export const workClientPass = p => get('/api-crms/crms/workbench/pass', p); +// // 新增企业类型客户 +// export const workClientAddEnterprise = p => post('/api-crms/crms/workbench/saveCompany', p); +// // 新增企业类型客户新版接口 +// export const insertCompany = p => post('/api-crms/crms/workbench/insertCompany', p); +// // 新增个人类型客户 +// export const workClientMsg = p => post('/api-crms/crms/workbench/savePersonal', p); +// // 修改企业类型客户 +// export const workEditClientEnterpriseMsg = p => post('/api-crms/crms/workbench/updateCompany', p); +// // 修改企业类型客户新版接口 +// export const updateCompanyNew = p => post('/api-crms/crms/workbench/updateCompanyNew', p); +// // 修改个人类型客户 +// export const workEditClientMsg = p => post('/api-crms/crms/workbench/updatePersonal', p); + + +// // 登录微信扫码(图片) +// // export const WXCordImg = p => get('/apiHrmsAuth/hrms/auth/userlogin/wxLoginUrl', p); +// // 微信回调授权码(不用管) +// export const WXAuthCord = p => get('/apiHrmsAuth/hrms/auth/userlogin/user/callback', p); +// // 登录绑定手机号 +// export const bindPhone = p => post('/apiHrmsAuth/hrms/auth/userlogin/bindPhoneAndOpenId', p); +// // 登录手机验证码 +// export const phoneAuthCord = p => get('/apiHrmsAuth/hrms/auth/userlogin/sendCode', p); +// // 判断手机是否存在 +// export const phoneExist = p => get('/apiHrmsAuth/hrms/auth/userlogin/isPhoneExist', p); + +// // 工作台--担保业务 +// //业务申请列表 +// export const businessApplyList = p => get('/api-guarantee/dg-apply-amount-info/businessApplicationList', p); +// //新建业务 +// export const businessApplication = p => post('/api-guarantee/dg-apply-amount-info/businessApplication', p); +// // 获取所有客户的信息 +// export const getAllClient = p => get('/api-crms/crms/customer/queryCompanyCodeAndName', p); +// //客户编号/取得信息 +// export const companyInfoBySth = p => post('/api-guarantee/dg-apply-amount-info/companyInfoBySth', p); +// // 业务申请-查看 +// export const businessApplyWatch = p => get('/api-guarantee/dg-apply-amount-info/businessApplicationDetail', p); +// // 业务-修改 +// export const businessApplyEdit = p => post('/api-guarantee/dg-apply-amount-info/updateBusinessApplication', p); +// // 业务申请-审核 +// export const businessApplyAudit = p => post('/api-guarantee/dg-apply-amount-info/approvalBusinessApplication', p); +// // 业务-撤销 +// export const businessApplyRepeal = p => get('/api-guarantee/dg-apply-amount-info/revokeBusinessApplication', p); +// // 所有银行 +// export const allBankName = p => get('/api-guarantee/dg-bank/bankList', p); + +// // 担保调查列表 +// export const guaranteeList = p => get('/api-guarantee/dg-guarantee-assign-user/guaranteeList', p); +// // 查看详情功能--领导/调查员 +// export const guaranteeDetails = p => get('/api-guarantee/dg-guarantee-assign-user/guaranteeDetail', p); +// // 调查功能 +// export const guaranteeSurvey = p => post('/api-guarantee/dg-guarantee-assign-user/investigateGuarantee', p); +// // 领导审核 +// export const guaranteeleader = p => post('/api-guarantee/dg-guarantee-assign-user/approvalGuarantee', p); +// // 指派A/B角 +// export const guaranteeDesignateAB = p => post('/api-guarantee/dg-guarantee-assign-user/assignCorners', p); + +// // 指派--查询所有部门底下的员工---限制版 +// // export const designateTrees = p => get('/api-hrms/hrms/dept/trees', p); + +// // 指派树---不做限制版-仅工作会 +// export const designateEmpTrees = p => get('/api-hrms//hrms/dept/empTrees', p); + + +// // 关联人列表 +// export const getLinkmanList = p => get('/api-crms/crms-company-personal/companyPersonalList', p); +// // 查询关联人 +// export const searchLinkmanList = p => get('/api-crms/crms-company-personal/selectCompanyPersonal', p); +// // 查询关联人新版 +// export const NewsearchLinkmanList = p => get('/api-crms/crms-company-personal/selectCompanyPersonal', p); +// // 删除关联人 +// export const delLinkmanList = p => post('/api-crms/crms-company-personal/deleteCompanyPersonal', p); +// // 删除关联人新版 +// export const NewdelLinkmanList = p => post('/api-crms/crms-company-personal/deleteCompanyPersonal', p); +// // 新增关联人 +// export const newLinkmanList = p => post('/api-crms/crms-company-personal/insertCompanyPersonal', p); +// // 新增关联人新版 +// export const newLinkList = p => post('/api-crms/crms-company-personal/insertCompanyPersonal', p); +// // 编辑关联人 +// export const editLinkmanList = p => post('/api-crms/crms-company-personal/updateCompanyPersonal', p); +// // 编辑关联人新版 +// export const NeweditLinkmanList = p => post('/api-crms/crms-company-personal/updateCompanyPersonal', p); + + + + + +// // 资产部--审核 +// export const assetAudit = p => post('/api-guarantee/dg-assets-investigation/approvalAssets', p); +// // 资产部--查看 +// export const assetWatch = p => get('/api-guarantee/dg-assets-investigation/assetsDetail', p); +// // 资产部--列表 +// export const assetList = p => post('/api-guarantee/dg-assets-investigation/assetsList', p); +// // 资产部--指派 +// export const assetAssign = p => post('/api-guarantee/dg-assets-investigation/assignCorners', p); +// // 资产部--调查 +// export const assetSurvey = p => post('/api-guarantee/dg-assets-investigation/investigateAssets', p); + +// // 信息部--列表 +// export const messageList = p => get('/api-guarantee/dg-message-investigation/messageList', p); +// // 信息部详情 +// export const messageDetail = p => get('/api-guarantee/dg-message-investigation/messageDetail', p); +// // 信息部--指派 +// export const messageAssign = p => post('/api-guarantee/dg-message-investigation/assignCorners', p); +// // 信息部--调查 +// export const messageSurvey = p => post('/api-guarantee/dg-message-investigation/investigateMessage', p); +// // 信息部审核 +// export const messageAudit = p => post('/api-guarantee/dg-message-investigation/approvalMessage', p); + +// // 合规调查-指派 +// export const complianceAssign = p => get('/api-guarantee/compliance/investigation/assign', p); +// // 合规-审核 +// export const complianceAudit = p => post('/api-guarantee/compliance/investigation/check', p); +// // 合规-列表 +// export const complianceList = p => get('/api-guarantee/compliance/investigation/list', p); +// // 合规-查看详情 +// export const complianceDetail = p => get('/api-guarantee/compliance/investigation/query', p); +// // 合规-调查 +// export const complianceSurvey = p => post('/api-guarantee/compliance/investigation/survey', p); + +// // 工作会-审议 +// export const workAudit = p => post('/api-guarantee/work/conference/check', p); +// //工作会-所有审核意见 +// export const workOpinion = p => get('/api-guarantee/work/conference/getAuditOpinion', p); +// // 工作会列表 +// export const workList = p => get('/api-guarantee/work/conference/list', p); +// // 工作会-查看 +// export const workDetail = p => get('/api-guarantee/work/conference/query', p); +// // 工作会-评委抽取 +// export const workExtract = p => post('/api-guarantee/work/conference/theJudgesDrawn', p); + +// // 贷审会-审议 +// export const loansAudit = p => post('/api-guarantee/committee/consider/check', p); +// // 贷审会-列表 +// export const loansList = p => get('/api-guarantee/committee/consider/list', p); +// // 贷审会-查看 +// export const loansDetail = p => get('/api-guarantee/committee/consider/query', p); +// // 贷审会--获取抽取的评委 +// export const loansJudge = p => get('/api-guarantee/committee/consider/theJudgesDrawn', p); + + + + +// /* 业务+担保 上传文件 */ +// export const guaranteeUploadFile = p => post('/api-guarantee/dg-apply-amount-info/uploadFile', p); +// /* 业务+担保 删除文件 */ +// export const guaranteeDeleteFile = p => get('/api-guarantee/dg-apply-amount-info/deleteServerFile', p); +// //担保函的接口 +// export const guaranteeLetterList = p => post('/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterList', p); //担保函列表 +// export const updateStatus = p => post('/api-guarantee/dg-guarantee-letter-assign-user/updateStatus', p); //用户提交审核意见 + +// //回款确认 +// export const paymentList = p => post('/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationList', p); //回款确认列表 +// export const updatePayment = p => post('/api-guarantee/dg-payment-confirmation-consider/updatePaymentConfirmation', p); //更新回款确认 + +// //放款通知 +// export const loanNoticeList = p => post('/api-guarantee/dg-loan-notice/loanNoticeList', p); //放款通知列表 +// export const updateLoanNotice = p => post('/api-guarantee/dg-loan-notice/updateLoanNotice', p); //放款通知确认 + + +// export const auditProcessList = p => get('/api-guarantee/dg-audit-process/auditProcessList', p);//审核流程进程列表 +// export const auditProcessPop = p => get('/api-guarantee/dg-audit-process/getProcessId', p);//审核流程进程--弹框 + +// //获取当前用户角色 +// export const getNowRole = p => get('/api-guarantee/dg-apply-amount-info/getRoles', p); + + + +// // 业务-导出 +// export const businessExportList = `${host}/api-guarantee/dg-apply-amount-info/excelExport`; +// // 担保-导出 +// export const guaranteeExportList = `${host}/api-guarantee/dg-guarantee-assign-user/excelExport`; +// // 资产-导出 +// export const assetExportList = `${host}/api-guarantee/dg-assets-investigation/excelExport`; +// // 信息-导出 +// export const messageExportList = `${host}/api-guarantee/dg-message-investigation/excelExport`; +// // 合规-导出 +// export const complianceExportList = `${host}/api-guarantee/compliance/investigation/excelExport`; +// // 工作会-导出 +// export const workExportList = `${host}/api-guarantee/work/conference/excelExport`; +// // 贷审会-导出 +// export const loansExportList = `${host}/api-guarantee/committee/consider/excelExport`; + + +// export const excelTemplate = `${host}/api-crms/crms/customer/excelTemplate`; //导出客户模板 +// export const excelExport = `${host}/api-crms/crms/customer/excelExport`; //导出客户 +// export const excelImport = `${host}/api-crms/crms/customer/excelImport`; //导入excal + +// export const excelExportStaff = `${host}/api-crms/crms/customer/excelExport`; //导出客户 +// export const excelImportStaff = `${host}/api-crms/crms/customer/excelImport`; //导入员工excal + + +// export const excelExportLetter = `${host}/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterListExport`; //导出担保函列表 +// export const exportGuaranteeLetter = `${host}/api-guarantee/dg-guarantee-letter-assign-user/exportGuaranteeLetter`; //导出担保函 + +// export const excelExportPayment = `${host}/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationListExport`; //导出回款确认列表数据 + +// export const loanNoticeListExport = `${host}/api-guarantee/dg-loan-notice/loanNoticeListExport`; //导出放款通知列表数据 +// export const exportLoanNotice = `${host}/api-guarantee/dg-loan-notice/exportLoanNotice`; //导出放款通知 \ No newline at end of file diff --git a/js_sdk/zhouWei-request/request/core/request.js b/js_sdk/zhouWei-request/request/core/request.js new file mode 100644 index 0000000..8b7b3ba --- /dev/null +++ b/js_sdk/zhouWei-request/request/core/request.js @@ -0,0 +1,130 @@ +import { mergeConfig, dispatchRequest, jsonpRequest} from "./utils.js"; +export default class request { + constructor(options) { + //请求公共地址 + this.baseUrl = options.baseUrl || ""; + //公共文件上传请求地址 + this.fileUrl = options.fileUrl || ""; + // 超时时间 + this.timeout = options.timeout || 6000; + // 服务器上传图片默认url + this.defaultUploadUrl = options.defaultUploadUrl || ""; + //默认请求头 + this.header = options.header || {}; + //默认配置 + this.config = options.config || { + isPrompt: true, + load: true, + isFactory: true, + resend: 0 + }; + } + //post请求 + post(url = '', data = {}, options = {}) { + return this.request({ + method: "POST", + data: data, + url: url, + ...options + }); + } + + //get请求 + get(url = '', data = {}, options = {}) { + return this.request({ + method: "GET", + data: data, + url: url, + ...options + }); + } + + //put请求 + put(url = '', data = {}, options = {}) { + return this.request({ + method: "PUT", + data: data, + url: url, + ...options + }); + } + + //delete请求 + delete(url = '', data = {}, options = {}) { + return this.request({ + method: "DELETE", + data: data, + url: url, + ...options + }); + } + //jsonp请求(只限于H5使用) + jsonp(url = '', data = {}, options = {}) { + return this.request({ + method: "JSONP", + data: data, + url: url, + ...options + }); + } + //接口请求方法 + async request(data) { + // 请求数据 + let requestInfo, + // 是否运行过请求开始钩子 + runRequestStart = false; + try { + if (!data.url) { + throw { errMsg: "【request】缺失数据url", statusCode: 0} + } + // 数据合并 + requestInfo = mergeConfig(this, data); + // 代表之前运行到这里 + runRequestStart = true; + //请求前回调 + if (this.requestStart) { + let requestStart = this.requestStart(requestInfo); + if (typeof requestStart == "object") { + let changekeys = ["data", "header", "isPrompt", "load", "isFactory"]; + changekeys.forEach(key => { + requestInfo[key] = requestStart[key]; + }); + } else { + throw { + errMsg: "【request】请求开始拦截器未通过", + statusCode: 0, + data: requestInfo.data, + method: requestInfo.method, + header: requestInfo.header, + url: requestInfo.url, + } + } + } + let requestResult = {}; + if(requestInfo.method == "JSONP"){ + requestResult = await jsonpRequest(requestInfo); + } else { + requestResult = await dispatchRequest(requestInfo); + } + //是否用外部的数据处理方法 + if (requestInfo.isFactory && this.dataFactory) { + //数据处理 + let result = await this.dataFactory({ + ...requestInfo, + response: requestResult + }); + return Promise.resolve(result); + } else { + return Promise.resolve(requestResult); + } + } catch (err){ + this.requestError && this.requestError(err); + return Promise.reject(err); + } finally { + // 如果请求开始未运行到,请求结束也不运行 + if(runRequestStart){ + this.requestEnd && this.requestEnd(requestInfo); + } + } + } +} diff --git a/js_sdk/zhouWei-request/request/core/utils.js b/js_sdk/zhouWei-request/request/core/utils.js new file mode 100644 index 0000000..65e4a70 --- /dev/null +++ b/js_sdk/zhouWei-request/request/core/utils.js @@ -0,0 +1,101 @@ +// 获取合并的数据 +export const mergeConfig = function(_this, options) { + //判断url是不是链接 + let urlType = /^(http|https):\/\//.test(options.url); + let config = Object.assign({ + timeout: _this.timeout + }, _this.config, options); + if (options.method == "FILE") { + config.url = urlType ? options.url : _this.fileUrl + options.url; + } else { + config.url = urlType ? options.url : _this.baseUrl + options.url; + } + //请求头 + if (options.header) { + config.header = Object.assign({}, _this.header, options.header); + } else { + config.header = Object.assign({}, _this.header); + } + return config; +} +// 请求 +export const dispatchRequest = function(requestInfo) { + return new Promise((resolve, reject) => { + let requestAbort = true; + let requestData = { + url: requestInfo.url, + header: requestInfo.header, //加入请求头 + success: (res) => { + requestAbort = false; + resolve(res); + }, + fail: (err) => { + requestAbort = false; + if(err.errMsg == "request:fail abort"){ + reject({ + errMsg: "请求超时,请重新尝试", + statusCode: 0, + }); + } else { + reject(err); + } + } + }; + //请求类型 + if (requestInfo.method) { + requestData.method = requestInfo.method; + } + if (requestInfo.data) { + requestData.data = requestInfo.data; + } + // #ifdef MP-WEIXIN || MP-ALIPAY + if (requestInfo.timeout) { + requestData.timeout = requestInfo.timeout; + } + // #endif + if (requestInfo.dataType) { + requestData.dataType = requestInfo.dataType; + } + // #ifndef APP-PLUS || MP-ALIPAY + if (requestInfo.responseType) { + requestData.responseType = requestInfo.responseType; + } + // #endif + // #ifdef H5 + if (requestInfo.withCredentials) { + requestData.withCredentials = requestInfo.withCredentials; + } + // #endif + let requestTask = uni.request(requestData); + setTimeout(() => { + if(requestAbort){ + requestTask.abort(); + } + }, requestInfo.timeout) + }) +} +// jsonp请求 +export const jsonpRequest = function(requestInfo) { + return new Promise((resolve, reject) => { + let dataStr = ''; + Object.keys(requestInfo.data).forEach(key => { + dataStr += key + '=' + requestInfo.data[key] + '&'; + }); + //匹配最后一个&并去除 + if (dataStr !== '') { + dataStr = dataStr.substr(0, dataStr.lastIndexOf('&')); + } + requestInfo.url = requestInfo.url + '?' + dataStr; + let callbackName = "callback" + Math.ceil(Math.random() * 1000000); + // #ifdef H5 + window[callbackName] = function(data) { + resolve(data); + } + let script = document.createElement("script"); + script.src = requestInfo.url + "&callback=" + callbackName; + document.head.appendChild(script); + // 及时删除,防止加载过多的JS + document.head.removeChild(script); + // #endif + }); +} \ No newline at end of file diff --git a/js_sdk/zhouWei-request/request/index.js b/js_sdk/zhouWei-request/request/index.js new file mode 100644 index 0000000..cc27902 --- /dev/null +++ b/js_sdk/zhouWei-request/request/index.js @@ -0,0 +1,7 @@ +/***************纯粹的数据请求(如果使用这种可以删除掉fileUpload.js)******************/ +// import request from "./core/request.js"; +// export default request; + +/********数据请求同时继承了文件上传(包括七牛云上传)************/ +import upload from "./upload/upload.js"; +export default upload; \ No newline at end of file diff --git a/js_sdk/zhouWei-request/request/request.md b/js_sdk/zhouWei-request/request/request.md new file mode 100644 index 0000000..14cd8e1 --- /dev/null +++ b/js_sdk/zhouWei-request/request/request.md @@ -0,0 +1,471 @@ +# request请求、配置简单、批量上传图片、视频、超强适应性(支持多域名请求) +1. 配置简单、源码清晰注释多、适用于一项目多域名请求、第三方请求、七牛云图片上传、本地服务器图片上传等等 +2. 支持请求`get`、`post`、`put`、`delete` +3. 自动显示请求加载动画(可单个接口关闭) +4. 全局`api`数据处理函数,只回调请求正确的数据(可单个接口关闭) +5. 未登录或登录失效自动拦截并调用登录方法(可单个接口关闭) +6. 全局自动提示接口抛出的错误信息(可单个接口关闭) +7. 支持 Promise +8. 支持拦截器 +9. 支持七牛云文件(图片、视频)批量上传 +10. 支持本地服务器文件(图片、视频)批量上传 +11. 支持上传文件拦截过滤 +12. 支持上传文件进度监听 +13. 支持上传文件单张成功回调 + +| `QQ交流群(607391225)` | `微信交流群(加我好友备注"进群")` | +| ----------------------------|--------------------------- | +|![QQ交流群](http://qn.kemean.cn//upload/202004/14/15868301778472k7oubi6.png)|![微信交流群](https://qn.kemean.cn/upload/202010/13/weiXin_group_code.jpg)| +| QQ群号:607391225 |微信号:zhou0612wei| + +### [点击跳转-插件示例](https://ext.dcloud.net.cn/plugin?id=2009) +### [点击跳转-5年的web前端开源的uni-app快速开发模板-下载看文档](https://ext.dcloud.net.cn/plugin?id=2009) + +### 常见问题 +1.接口请求成功了,没有返回数据或者数据是走的catch回调 + +答:`requestConfig.js` 请求配置文件里面,有一个`$http.dataFactory`方法,里面写的只是参考示例,`此方法需要开发者根据各自的接口返回类型修改` + +2.官方的方法有数据,本插件方法请求报错跨域问题 + +答:`requestConfig.js` 请求配置文件里面,`header`请求头设置的`content-type`请求类型需求和后台保持一致 + +3.登录后用户`token`怎么设置? + +答:`requestConfig.js` 请求配置文件里面,`$http.requestStart`请求开始拦截器里面设置 + +4.怎么判断上传的文件(图片)太大?怎么过滤掉太大的文件(图片)? + +答:`requestConfig.js` 请求配置文件里面,`$http.requestStart`请求开始拦截器里面设置 + +5.接口请求成功了,一直提示“网络错误,请检查一下网络”? + +答:`requestConfig.js` 请求配置文件里面,有一个`$http.dataFactory`方法,里面写的只是参考示例,`此方法需要开发者根据各自的接口返回类型修改` + +### 本次更新注意事项 +1. 所有的headers都改成了header(和官方统一) +2. 七牛云的获取token等信息提取到了`requestConfig.js`文件,参考如下 + +``` +// 添加获取七牛云token的方法 +$http.getQnToken = function(callback){ + //该地址需要开发者自行配置(每个后台的接口风格都不一样) + $http.get("api/kemean/aid/qn_upload").then(data => { + /* + *接口返回参数: + *visitPrefix:访问文件的域名 + *token:七牛云上传token + *folderPath:上传的文件夹 + *region: 地区 默认为:SCN + */ + callback({ + visitPrefix: data.visitPrefix, + token: data.token, + folderPath: data.folderPath, + region: "SCN" + }); + }); +} +``` + +### 文件说明 +1. `request => core` 请求方法的目录 +2. `request => core => request.js` 请求方法的class文件 +3. `request => core => utils.js` 请求方法的源码文件 +4. `request => upload` 上传方法的目录 +5. `request => upload => upload.js` 上传方法的class文件 +6. `request => upload => utils.js` 上传方法源码文件 +7. `request => upload => qiniuUploader.js` 七牛云官方上传文件 +8. `request => index.js` 输出方法的文件 +9. `requestConfig.js` 请求配置文件(具体看代码) + +### 在main.js引入并挂在Vue上 +``` +import $http from '@/zhouWei-request/requestConfig'; +Vue.prototype.$http = $http; +``` + +### `requestConfig.js`配置说明(requestConfig.js有配置示例) +``` +import request from "@/plugins/request"; +//可以new多个request来支持多个域名请求 +let $http = new request({ + //接口请求地址 + baseUrl: "https://twin-ui.com/", //示例域名,请自行设计 + //服务器本地上传文件地址 + fileUrl: "https://twin-ui.com/", //示例域名,请自行设计 + // 服务器上传图片默认url + defaultUploadUrl: "api/common/v1/upload_image", + //设置请求头(如果使用报错跨域问题,可能是content-type请求类型和后台那边设置的不一致) + header: { + 'Content-Type': 'application/json;charset=UTF-8' + }, + // 请求超时时间(默认6000) + timeout: 6000, + // 默认配置(可不写) + config: { + // 是否自动提示错误 + isPrompt: true, + // 是否显示加载动画 + load: true, + // 是否使用数据工厂 + isFactory: true, + // ... 可写更多配置 + } +}); + +// 添加获取七牛云token的方法 +$http.getQnToken = function(callback){ + //该地址需要开发者自行配置(每个后台的接口风格都不一样) + $http.get("api/common/v1/qn_upload").then(data => { + /* + *接口返回参数: + *visitPrefix:访问文件的域名 + *token:七牛云上传token + *folderPath:上传的文件夹 + *region: 地区 默认为:SCN + */ + callback({ + visitPrefix: data.visitPrefix, + token: data.token, + folderPath: data.folderPath + }); + }); +} +//当前接口请求数 +let requestNum = 0; +//请求开始拦截器 +$http.requestStart = function(options) { + if (options.load) { + if (requestNum <= 0) { + //打开加载动画 + uni.showLoading({ + title: '加载中', + mask: true + }); + } + requestNum += 1; + } + // 图片上传大小限制 + if (options.method == "FILE" && options.maxSize) { + // 文件最大字节: options.maxSize 可以在调用方法的时候加入参数 + let maxSize = options.maxSize; + for (let item of options.files) { + if (item.size > maxSize) { + setTimeout(() => { + uni.showToast({ + title: "图片过大,请重新上传", + icon: "none" + }); + }, 500); + return false; + } + } + } + //请求前加入token + options.header['token'] = "你的项目登录token"; + return options; // return false 表示请求拦截,不会继续请求 +} +//请求结束 +$http.requestEnd = function(options) { + //判断当前接口是否需要加载动画 + if (options.load) { + requestNum = requestNum - 1; + if (requestNum <= 0) { + uni.hideLoading(); + } + } +} +//所有接口数据处理(可在接口里设置不调用此方法) +//此方法需要开发者根据各自的接口返回类型修改,以下只是模板 +$http.dataFactory = async function(res) { + console.log("接口请求数据", { + url: res.url, + resolve: res.response, + header: res.header, + data: res.data, + method: res.method, + }); + if (res.response.statusCode && res.response.statusCode == 200) { + let httpData = res.response.data; + if (typeof (httpData) == "string") { + httpData = JSON.parse(httpData); + } + //判断数据是否请求成功 + if (httpData.success || httpData.code == 200) { + // ---------重点----------返回正确的结果(then接受数据)------------重点------------ + return Promise.resolve(httpData.data); + } else { + //其他错误提示 + if (res.isPrompt) { // 是否提示 + uni.showToast({ + title: httpData.info || httpData.msg, + icon: "none", + duration: 3000 + }); + } + // --------重点---------返回错误的结果(catch接受数据)------------重点------------ + return Promise.reject({ + statusCode: 0, + errMsg: "【request】" + (httpData.info || httpData.msg) + }); + } + } else { + // 返回错误的结果(catch接受数据) + return Promise.reject({ + statusCode: res.response.statusCode, + errMsg: "【request】数据工厂验证不通过" + }); + } +}; +// 错误回调 +$http.requestError = function (e) { + if (e.statusCode === 0) { + throw e; + } else { + uni.showToast({ + title: "网络错误,请检查一下网络", + icon: "none" + }); + } +} +``` + +### 通用请求方法 +``` +this.$http.request({ + url: 'aid/region', + method: "GET", // POST、GET、PUT、DELETE、JSONP,具体说明查看官方文档 + data: {pid:0}, + timeout: 30000, // 默认 30000 说明:超时时间,单位 ms,具体说明查看官方文档 + dataType: "json", // 默认 json 说明:如果设为 json,会尝试对返回的数据做一次 JSON.parse,具体说明查看官方文档 + responseType: "text", // 默认 text 说明:设置响应的数据类型。合法值:text、arraybuffer,具体说明查看官方文档 + withCredentials: false, // 默认 false 说明:跨域请求时是否携带凭证(cookies),具体说明查看官方文档 + isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示) + load: true,//(默认 true 说明:本接口是否提示加载动画) + header: { //默认 无 说明:请求头 + 'Content-Type': 'application/json' + }, + isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数将失去作用) +}).then(function (response) { + //这里只会在接口是成功状态返回 +}).catch(function (error) { + //这里只会在接口是失败状态返回,不需要去处理错误提示 + console.log(error); +}); +``` + +### get请求 正常写法 +``` +this.$http.get('aid/region',{pid:0}). +then(function (response) { + //这里只会在接口是成功状态返回 +}).catch(function (error) { + //这里只会在接口是失败状态返回,不需要去处理错误提示 + console.log(error); +}); +``` + +### post请求 async写法 +``` +async request(){ + let data = await this.$http.post('aid/region',{pid:0}); + console.log(data); +} +``` + +### 其他功能配置项 +``` +let data = await this.$http.post( + 'http://www.aaa.com/aid/region', //可以直接放链接(将不启用全局定义域名) + { + pid:0 + }, + { + isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示) + load: true,//(默认 true 说明:本接口是否提示加载动画) + header: { //默认 无 说明:请求头 + 'Content-Type': 'application/json' + }, + isFactory: true //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数将失去作用) + } +); +``` + +### `requestConfig.js`可以设置服务器上传图片默认url +``` +//可以new多个request来支持多个域名请求 +let $http = new request({ + //服务器本地上传文件地址 + fileUrl: base.baseUrl, + // 服务器上传图片默认url + defaultUploadUrl: "api/common/v1/upload_image", +}); +``` +``` +// 上传可以不用传递url(使用全局的上传图片url) +this.$http.urlImgUpload({ + name:"后台接受文件key名称", //默认 file + count:"最大选择数",//默认 9 + sizeType:"选择压缩图原图,默认两个都选",//默认 ['original', 'compressed'] + sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera'] + data:"而外参数" //可不填, +}); +// 上传可以不用传递url(使用全局的上传图片url) +this.$http.urlVideoUpload({ + sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera'] + compressed:"是否压缩所选的视频源文件,默认值为 true,需要压缩",//默认 false + maxDuration: "拍摄视频最长拍摄时间,单位秒。最长支持 60 秒", //默认 60 + camera: '前置还是后置摄像头', //'front'、'back',默认'back' + name:"后台接受文件key名称", //默认 file + data:"而外参数" //可不填, +}); +// 上传可以不用传递url(使用全局的上传图片url) +this.$http.urlFileUpload({ + files: [], // 必填 临时文件路径 格式: [{path: "图片地址"}] + data:"向服务器传递的参数", //可不填 + name:"后台接受文件key名称", //默认 file +}); +``` + +### 本地服务器图片上传(支持多张上传) +``` +this.$http.urlImgUpload('flie/upload',{ + name:"后台接受文件key名称", //默认 file + count:"最大选择数",//默认 9 + sizeType:"选择压缩图原图,默认两个都选",//默认 ['original', 'compressed'] + sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera'] + data:"而外参数" //可不填, + isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示) + load: true,//(默认 true 说明:本接口是否提示加载动画) + header: { //默认 无 说明:请求头 + 'Content-Type': 'application/json' + }, + isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用) + maxSize: 300000, //(默认 无 说明:上传的文件最大字节数限制,默认不限制) + onSelectComplete: res => { + console.log("选择完成返回:",res); + }, + onEachUpdate: res => { + console.log("单张上传成功返回:",res); + }, + onProgressUpdate: res => { + console.log("上传进度返回:",res); + } +}).then(res => { + console.log("全部上传完返回结果:",res); +}); +``` +### 本地服务器视频上传 +``` +this.$http.urlVideoUpload('flie/upload',{ + sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera'] + compressed:"是否压缩所选的视频源文件,默认值为 true,需要压缩",//默认 false + maxDuration: "拍摄视频最长拍摄时间,单位秒。最长支持 60 秒", //默认 60 + camera: '前置还是后置摄像头', //'front'、'back',默认'back' + name:"后台接受文件key名称", //默认 file + data:"而外参数" //可不填, + isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示) + load: true,//(默认 true 说明:本接口是否提示加载动画) + header: { //默认 无 说明:请求头 + 'Content-Type': 'application/json' + }, + isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用) + maxSize: 300000, //(默认 无 说明:上传的文件最大字节数限制,默认不限制) + onProgressUpdate: res => { + console.log("上传进度返回:",res); + }, + onSelectComplete: res => { + console.log("选择完成返回:",res); + }, +}).then(res => { + console.log("全部上传完返回结果:",res); +}); +``` +### 本地服务器文件上传(支持多张上传) +``` +this.$http.urlFileUpload("flie/upload",{ + files: [], // 必填 临时文件路径 格式: [{path: "图片地址"}] + data:"向服务器传递的参数", //可不填 + name:"后台接受文件key名称", //默认 file + isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示) + load: true,//(默认 true 说明:本接口是否提示加载动画) + header: { //默认 无 说明:请求头 + 'Content-Type': 'application/json' + }, + isFactory: true, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用) + maxSize: 300000, //(默认 无 说明:上传的文件最大字节数限制,默认不限制) + onEachUpdate: res => { + console.log("单张上传成功返回:",res); + }, + onProgressUpdate: res => { + console.log("上传进度返回:",res); + } +}).then(res => { + console.log("全部上传完返回结果:",res); +}); +``` + +### 七牛云图片上传(支持多张上传) +``` +this.$http.qnImgUpload({ + count:"最大选择数", // 默认 9 + sizeType:"选择压缩图原图,默认两个都选", // 默认 ['original', 'compressed'] + sourceType:"选择相机拍照或相册上传 默认两个都选", // 默认 ['album','camera'] + load: true, //(默认 true 说明:本接口是否提示加载动画) + maxSize: 300000, //(默认 无 说明:上传的文件最大字节数限制,默认不限制) + onSelectComplete: res => { + console.log("选择完成返回:",res); + }, + onEachUpdate: res => { + console.log("单张上传成功返回:",res); + }, + onProgressUpdate: res => { + console.log("上传进度返回:",res); + } +}).then(res => { + console.log("全部上传完返回结果:",res); +}); +``` +### 七牛云视频上传 +``` +this.$http.qnVideoUpload({ + sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera'] + compressed:"是否压缩所选的视频源文件,默认值为 true,需要压缩",//默认 false + maxDuration: "拍摄视频最长拍摄时间,单位秒。最长支持 60 秒", //默认 60 + camera: '前置还是后置摄像头', //'front'、'back',默认'back' + load: true,//(默认 true 说明:本接口是否提示加载动画) + maxSize: 300000, //(默认 无 说明:上传的文件最大字节数限制,默认不限制) + onSelectComplete: res => { + console.log("选择完成返回:",res); + }, + onProgressUpdate: res => { + console.log("上传进度返回:",res); + } +}).then(res => { + console.log("全部上传完返回结果:",res); +}); +``` +### 七牛云文件上传(支持多张上传) +``` +this.$http.qnFileUpload( +{ + files:[], // 必填 临时文件路径 格式: [{path: "图片地址"}] + load: true, //(默认 true 说明:本接口是否提示加载动画) + maxSize: 300000, //(默认 无 说明:上传的文件最大字节数限制,默认不限制) + onEachUpdate: res => { + console.log("单张上传成功返回:",res); + }, + onProgressUpdate: res => { + console.log("上传进度返回:",res); + } +}).then(res => { + console.log("全部上传完返回结果:",res); +}); +``` +### jsonp 跨域请求(只支持H5) +``` +let data = await this.$http.jsonp('http://www.aaa.com/aid/region',{pid:0}, { + isFactory: false, //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用) +}); +``` diff --git a/js_sdk/zhouWei-request/request/upload/qiniuUploader.js b/js_sdk/zhouWei-request/request/upload/qiniuUploader.js new file mode 100644 index 0000000..138c80e --- /dev/null +++ b/js_sdk/zhouWei-request/request/upload/qiniuUploader.js @@ -0,0 +1,169 @@ +// created by gpake +(function () { + + var config = { + qiniuRegion: '', + qiniuImageURLPrefix: '', + qiniuUploadToken: '', + qiniuUploadTokenURL: '', + qiniuUploadTokenFunction: null, + qiniuShouldUseQiniuFileName: false + } + + module.exports = { + init: init, + upload: upload, + } + + // 在整个程序生命周期中,只需要 init 一次即可 + // 如果需要变更参数,再调用 init 即可 + function init(options) { + config = { + qiniuRegion: '', + qiniuImageURLPrefix: '', + qiniuUploadToken: '', + qiniuUploadTokenURL: '', + qiniuUploadTokenFunction: null, + qiniuShouldUseQiniuFileName: false + }; + updateConfigWithOptions(options); + } + + function updateConfigWithOptions(options) { + if (options.region) { + config.qiniuRegion = options.region; + } else { + console.error('qiniu uploader need your bucket region'); + } + if (options.uptoken) { + config.qiniuUploadToken = options.uptoken; + } else if (options.uptokenURL) { + config.qiniuUploadTokenURL = options.uptokenURL; + } else if (options.uptokenFunc) { + config.qiniuUploadTokenFunction = options.uptokenFunc; + } + if (options.domain) { + config.qiniuImageURLPrefix = options.domain; + } + config.qiniuShouldUseQiniuFileName = options.shouldUseQiniuFileName + } + + function upload(filePath, success, fail, options, progress, cancelTask) { + if (null == filePath) { + console.error('qiniu uploader need filePath to upload'); + return; + } + if (options) { + updateConfigWithOptions(options); + } + if (config.qiniuUploadToken) { + doUpload(filePath, success, fail, options, progress, cancelTask); + } else if (config.qiniuUploadTokenURL) { + getQiniuToken(function () { + doUpload(filePath, success, fail, options, progress, cancelTask); + }); + } else if (config.qiniuUploadTokenFunction) { + config.qiniuUploadToken = config.qiniuUploadTokenFunction(); + if (null == config.qiniuUploadToken && config.qiniuUploadToken.length > 0) { + console.error('qiniu UploadTokenFunction result is null, please check the return value'); + return + } + doUpload(filePath, success, fail, options, progress, cancelTask); + } else { + console.error('qiniu uploader need one of [uptoken, uptokenURL, uptokenFunc]'); + return; + } + } + + function doUpload(filePath, success, fail, options, progress, cancelTask) { + if (null == config.qiniuUploadToken && config.qiniuUploadToken.length > 0) { + console.error('qiniu UploadToken is null, please check the init config or networking'); + return + } + var url = uploadURLFromRegionCode(config.qiniuRegion); + var fileName = filePath.split('//')[1]; + if (options && options.key) { + fileName = options.key; + } + var formData = { + 'token': config.qiniuUploadToken + }; + if (!config.qiniuShouldUseQiniuFileName) { + formData['key'] = fileName + } + var uploadTask = wx.uploadFile({ + url: url, + filePath: filePath, + name: 'file', + formData: formData, + success: function (res) { + var dataString = res.data + if (res.data.hasOwnProperty('type') && res.data.type === 'Buffer') { + dataString = String.fromCharCode.apply(null, res.data.data) + } + try { + var dataObject = JSON.parse(dataString); + //do something + var imageUrl = config.qiniuImageURLPrefix + '/' + dataObject.key; + dataObject.imageURL = imageUrl; + if (success) { + success(dataObject); + } + } catch (e) { + console.log('parse JSON failed, origin String is: ' + dataString) + if (fail) { + fail(e); + } + } + }, + fail: function (error) { + console.error(error); + if (fail) { + fail(error); + } + } + }) + + uploadTask.onProgressUpdate((res) => { + progress && progress(res) + }) + + cancelTask && cancelTask(() => { + uploadTask.abort() + }) + } + + function getQiniuToken(callback) { + wx.request({ + url: config.qiniuUploadTokenURL, + success: function (res) { + var token = res.data.uptoken; + if (token && token.length > 0) { + config.qiniuUploadToken = token; + if (callback) { + callback(); + } + } else { + console.error('qiniuUploader cannot get your token, please check the uptokenURL or server') + } + }, + fail: function (error) { + console.error('qiniu UploadToken is null, please check the init config or networking: ' + error); + } + }) + } + + function uploadURLFromRegionCode(code) { + var uploadURL = null; + switch (code) { + case 'ECN': uploadURL = 'https://up.qbox.me'; break; + case 'NCN': uploadURL = 'https://up-z1.qbox.me'; break; + case 'SCN': uploadURL = 'https://up-z2.qbox.me'; break; + case 'NA': uploadURL = 'https://up-na0.qbox.me'; break; + case 'ASG': uploadURL = 'https://up-as0.qbox.me'; break; + default: console.error('please make the region is with one of [ECN, SCN, NCN, NA, ASG]'); + } + return uploadURL; + } + +})(); \ No newline at end of file diff --git a/js_sdk/zhouWei-request/request/upload/upload.js b/js_sdk/zhouWei-request/request/upload/upload.js new file mode 100644 index 0000000..d8234a3 --- /dev/null +++ b/js_sdk/zhouWei-request/request/upload/upload.js @@ -0,0 +1,208 @@ +import request from "./../core/request.js"; +const { + chooseImage, + chooseVideo, + qiniuUpload, + urlUpload +} = require("./utils"); +import { + mergeConfig +} from "./../core/utils.js"; +export default class fileUpload extends request { + constructor(props) { + // 调用实现父类的构造函数 + super(props); + } + //七牛云上传图片 + async qnImgUpload(options = {}) { + let files; + try { + files = await chooseImage(options); + // 选择完成回调 + options.onSelectComplete && options.onSelectComplete(files); + } catch (err) { + this.requestError && this.requestError(err); + return Promise.reject(err); + } + if (files) { + return this.qnFileUpload({ + ...options, + files: files + }); + } + } + //七牛云上传视频 + async qnVideoUpload(options = {}) { + let files; + try { + files = await chooseVideo(options); + // 选择完成回调 + options.onSelectComplete && options.onSelectComplete(files); + } catch (err) { + this.requestError && this.requestError(err); + return Promise.reject(err); + } + if (files) { + return this.qnFileUpload({ + ...options, + files: files + }); + } + } + + //七牛云文件上传(支持多张上传) + async qnFileUpload(options = {}) { + let requestInfo; + try { + // 数据合并 + requestInfo = { + ...this.config, + ...options, + header: {}, + method: "FILE" + }; + //请求前回调 + if (this.requestStart) { + let requestStart = this.requestStart(requestInfo); + if (typeof requestStart == "object") { + let changekeys = ["load", "files"]; + changekeys.forEach(key => { + requestInfo[key] = requestStart[key]; + }); + } else { + throw { + errMsg: "【request】请求开始拦截器未通过", + statusCode: 0, + data: requestInfo.data, + method: requestInfo.method, + header: requestInfo.header, + url: requestInfo.url, + } + } + } + let requestResult = await qiniuUpload(requestInfo, this.getQnToken); + return Promise.resolve(requestResult); + } catch (err) { + this.requestError && this.requestError(err); + return Promise.reject(err); + } finally { + this.requestEnd && this.requestEnd(requestInfo); + } + } + //本地服务器图片上传 + async urlImgUpload() { + let options = {}; + if (arguments[0]) { + if (typeof(arguments[0]) == "string") { + options.url = arguments[0]; + } else if (typeof(arguments[0]) == "object") { + options = Object.assign(options, arguments[0]); + } + } + if (arguments[1] && typeof(arguments[1]) == "object") { + options = Object.assign(options, arguments[1]); + } + try { + options.files = await chooseImage(options); + // 选择完成回调 + options.onSelectComplete && options.onSelectComplete(options.files); + } catch (err) { + this.requestError && this.requestError(err); + return Promise.reject(err); + } + if (options.files) { + return this.urlFileUpload(options); + } + } + //本地服务器上传视频 + async urlVideoUpload() { + let options = {}; + if (arguments[0]) { + if (typeof(arguments[0]) == "string") { + options.url = arguments[0]; + } else if (typeof(arguments[0]) == "object") { + options = Object.assign(options, arguments[0]); + } + } + if (arguments[1] && typeof(arguments[1]) == "object") { + options = Object.assign(options, arguments[1]); + } + try { + options.files = await chooseVideo(options); + // 选择完成回调 + options.onSelectComplete && options.onSelectComplete(options.files); + } catch (err) { + this.requestError && this.requestError(err); + return Promise.reject(err); + } + if (options.files) { + return this.urlFileUpload(options); + } + } + //本地服务器文件上传方法 + async urlFileUpload() { + let requestInfo = { + method: "FILE" + }; + if (arguments[0]) { + if (typeof(arguments[0]) == "string") { + requestInfo.url = arguments[0]; + } else if (typeof(arguments[0]) == "object") { + requestInfo = Object.assign(requestInfo, arguments[0]); + } + } + if (arguments[1] && typeof(arguments[1]) == "object") { + requestInfo = Object.assign(requestInfo, arguments[1]); + } + if (!requestInfo.url && this.defaultUploadUrl) { + requestInfo.url = this.defaultUploadUrl; + } + // 请求数据 + // 是否运行过请求开始钩子 + let runRequestStart = false; + try { + if (!requestInfo.url) { + throw { + errMsg: "【request】文件上传缺失数据url", + statusCode: 0, + data: requestInfo.data, + method: requestInfo.method, + header: requestInfo.header, + url: requestInfo.url, + } + } + // 数据合并 + requestInfo = mergeConfig(this, requestInfo); + // 代表之前运行到这里 + runRequestStart = true; + //请求前回调 + if (this.requestStart) { + let requestStart = this.requestStart(requestInfo); + if (typeof requestStart == "object") { + let changekeys = ["data", "header", "isPrompt", "load", "isFactory", "files"]; + changekeys.forEach(key => { + requestInfo[key] = requestStart[key]; + }); + } else { + throw { + errMsg: "【request】请求开始拦截器未通过", + statusCode: 0, + data: requestInfo.data, + method: requestInfo.method, + header: requestInfo.header, + url: requestInfo.url, + } + } + } + let requestResult = await urlUpload(requestInfo, this.dataFactory); + return Promise.resolve(requestResult); + } catch (err) { + this.requestError && this.requestError(err); + return Promise.reject(err); + } finally { + if (runRequestStart) { + this.requestEnd && this.requestEnd(requestInfo); + } + } + } +} diff --git a/js_sdk/zhouWei-request/request/upload/utils.js b/js_sdk/zhouWei-request/request/upload/utils.js new file mode 100644 index 0000000..359d9c2 --- /dev/null +++ b/js_sdk/zhouWei-request/request/upload/utils.js @@ -0,0 +1,288 @@ +const qiniuUploader = require("./qiniuUploader"); +//七牛云上传文件命名 +export const randomChar = function(l, url = "") { + const x = "0123456789qwertyuioplkjhgfdsazxcvbnm"; + let tmp = ""; + let time = new Date(); + for (let i = 0; i < l; i++) { + tmp += x.charAt(Math.ceil(Math.random() * 100000000) % x.length); + } + return ( + "file/" + + url + + time.getTime() + + tmp + ); +} +//图片选择 +export const chooseImage = function(data) { + return new Promise((resolve, reject) => { + uni.chooseImage({ + count: data.count || 9, //默认9 + sizeType: data.sizeType || ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 + sourceType: data.sourceType || ['album', 'camera'], //从相册选择 + success: function(res) { + resolve(res.tempFiles); + }, + fail: err => { + reject({ + errMsg: err.errMsg, + errCode: err.errCode, + statusCode: 0, + }); + } + }); + }); +} +//视频选择 +export const chooseVideo = function(data) { + return new Promise((resolve, reject) => { + uni.chooseVideo({ + sourceType: data.sourceType || ['album', 'camera'], //从相册选择 + compressed: data.compressed || false, //是否压缩所选的视频源文件,默认值为 true,需要压缩。 + maxDuration: data.maxDuration || 60, //拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。 + camera: data.camera || 'back', //'front'、'back',默认'back' + success: function(res) { + let files = [{ + path: res.tempFilePath + }]; + // #ifdef APP-PLUS || H5 || MP-WEIXIN + files[0].duration = res.duration; + files[0].size = res.size; + files[0].height = res.height; + files[0].width = res.width; + // #endif + // #ifdef H5 + files[0].name = res.name; + // #endif + resolve(files); + }, + fail: err => { + reject({ + errMsg: err.errMsg, + errCode: err.errCode, + statusCode: 0, + }); + } + }); + }); +} +// 七牛云上传 +export const qiniuUpload = function(requestInfo, getQnToken) { + return new Promise((resolve, reject) => { + if (Array.isArray(requestInfo.files)) { + let len = requestInfo.files.length; + let fileList = new Array; + if (getQnToken) { + getQnToken(qnRes => { + /* + *接口返回参数: + *visitPrefix:访问文件的域名 + *token:七牛云上传token + *folderPath:上传的文件夹 + *region: 地区 默认为:SCN + */ + let prefixLen = qnRes.visitPrefix.length; + if(qnRes.visitPrefix.charAt(prefixLen - 1) == '/'){ + qnRes.visitPrefix = qnRes.visitPrefix.substring(0, prefixLen - 1) + } + uploadFile(0); + + function uploadFile(i) { + let item = requestInfo.files[i]; + let updateUrl = randomChar(10, qnRes.folderPath); + let fileData = { + fileIndex: i, + files: requestInfo.files, + ...item + }; + if (item.name) { + fileData.name = item.name; + let nameArr = item.name.split("."); + updateUrl += "." + nameArr[nameArr.length - 1]; + } + // 交给七牛上传 + qiniuUploader.upload(item.path || item, (res) => { + fileData.url = res.imageURL; + requestInfo.onEachUpdate && requestInfo.onEachUpdate({ + url: res.imageURL, + ...fileData + }); + fileList.push(res.imageURL); + if (len - 1 > i) { + uploadFile(i + 1); + } else { + resolve(fileList); + } + }, (error) => { + reject(error); + }, { + region: qnRes.region || 'SCN', //地区 + domain: qnRes.visitPrefix, // bucket 域名,下载资源时用到。 + key: updateUrl, + uptoken: qnRes.token, // 由其他程序生成七牛 uptoken + uptokenURL: 'UpTokenURL.com/uptoken' // 上传地址 + }, (res) => { + console.log(requestInfo); + requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res)); + // console.log('上传进度', res.progress) + // console.log('已经上传的数据长度', res.totalBytesSent) + // console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend) + }); + } + }); + } else { + reject({ + errMsg: "请添加七牛云回调方法:getQnToken", + statusCode: 0 + }); + } + } else { + reject({ + errMsg: "files 必须是数组类型", + statusCode: 0 + }); + }; + }); +} +// 服务器URL上传 +export const urlUpload = function(requestInfo, dataFactory) { + return new Promise((resolve, reject) => { + // 本地文件上传去掉默认Content-Type + if (requestInfo.header['Content-Type']) { + delete requestInfo.header['Content-Type']; + } + // 本地文件上传去掉默认Content-Type + if (requestInfo.header['content-type']) { + delete requestInfo.header['content-type']; + } + if (Array.isArray(requestInfo.files)) { + // #ifdef APP-PLUS || H5 + let files = []; + let fileData = { + files: requestInfo.files, + name: requestInfo.name || "file" + }; + requestInfo.files.forEach(item => { + let fileInfo = { + name: requestInfo.name || "file", + }; + if(item.path){ + fileInfo.uri = item.path; + } else { + fileInfo.file = item; + } + files.push(fileInfo); + }); + let config = { + url: requestInfo.url, + files: files, + header: requestInfo.header, //加入请求头 + success: (response) => { + //是否用外部的数据处理方法 + if (requestInfo.isFactory && dataFactory) { + //数据处理 + dataFactory({ + ...requestInfo, + response: response, + }).then(data => { + requestInfo.onEachUpdate && requestInfo.onEachUpdate({ + data: data, + ...fileData + }); + resolve(data); + },err => { + reject(err); + }); + } else { + requestInfo.onEachUpdate && requestInfo.onEachUpdate({ + data: response, + ...fileData + }); + resolve(response); + } + }, + fail: (err) => { + reject(err); + } + }; + if (requestInfo.data) { + config.formData = requestInfo.data; + } + const uploadTask = uni.uploadFile(config); + uploadTask.onProgressUpdate(res => { + requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res)); + }); + // #endif + // #ifdef MP + const len = requestInfo.files.length - 1; + let fileList = new Array; + fileUpload(0); + + function fileUpload(i) { + let item = requestInfo.files[i]; + let fileData = { + fileIndex: i, + files: requestInfo.files, + ...item + }; + let config = { + url: requestInfo.url, + filePath: item.path, + header: requestInfo.header, //加入请求头 + name: requestInfo.name || "file", + success: (response) => { + //是否用外部的数据处理方法 + if (requestInfo.isFactory && dataFactory) { + //数据处理 + dataFactory({ + ...requestInfo, + response: response, + }).then(data => { + fileList.push(data); + requestInfo.onEachUpdate && requestInfo.onEachUpdate({ + data: data, + ...fileData + }); + if (len <= i) { + resolve(fileList); + } else { + fileUpload(i + 1); + } + },err => { + reject(err); + }); + } else { + requestInfo.onEachUpdate && requestInfo.onEachUpdate({ + data: response, + ...fileData + }); + fileList.push(response); + if (len <= i) { + resolve(fileList); + } else { + fileUpload(i + 1); + } + } + }, + fail: (err) => { + reject(err); + } + }; + if (requestInfo.data) { + config.formData = requestInfo.data; + } + const uploadTask = uni.uploadFile(config); + uploadTask.onProgressUpdate(res => { + requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res)); + }); + } + // #endif + } else { + reject({ + errMsg: "files 必须是数组类型", + statusCode: 0 + }); + } + }); +} diff --git a/js_sdk/zhouWei-request/requestConfig.js b/js_sdk/zhouWei-request/requestConfig.js new file mode 100644 index 0000000..e28e82d --- /dev/null +++ b/js_sdk/zhouWei-request/requestConfig.js @@ -0,0 +1,146 @@ +import request from "./request"; +// 全局配置的请求域名 +let baseUrl = "https://www.huorantech.cn"; +//可以new多个request来支持多个域名请求 +let $http = new request({ + //接口请求地址 + baseUrl: baseUrl, + //服务器本地上传文件地址 + fileUrl: baseUrl, + // 服务器上传图片默认url + defaultUploadUrl: "api/common/v1/upload_image", + //设置请求头(如果使用报错跨域问题,可能是content-type请求类型和后台那边设置的不一致) + header: { + 'content-type': 'application/json;charset=UTF-8' + }, + // 请求超时时间(默认6000) + timeout: 6000, + // 默认配置(可不写) + config: { + // 是否自动提示错误 + isPrompt: true, + // 是否显示加载动画 + load: true, + // 是否使用数据工厂 + isFactory: true + } +}); + +// 添加获取七牛云token的方法 +$http.getQnToken = function(callback){ + //该地址需要开发者自行配置(每个后台的接口风格都不一样) + $http.get("api/kemean/aid/qn_upload").then(data => { + /* + *接口返回参数: + *visitPrefix:访问文件的域名 + *token:七牛云上传token + *folderPath:上传的文件夹 + *region: 地区 默认为:SCN + */ + callback({ + visitPrefix: data.visitPrefix, + token: data.token, + folderPath: data.folderPath, + region: "SCN" + }); + }); +} + +//当前接口请求数 +let requestNum = 0; +//请求开始拦截器 +$http.requestStart = function(options) { + if (options.load) { + if (requestNum <= 0) { + //打开加载动画 + uni.showLoading({ + title: '加载中', + mask: true + }); + } + requestNum += 1; + } + // 图片上传大小限制 + if (options.method == "FILE" && options.maxSize) { + // 文件最大字节: options.maxSize 可以在调用方法的时候加入参数 + const maxSize = options.maxSize; + for (let item of options.files) { + if (item.size > maxSize) { + setTimeout(() => { + uni.showToast({ + title: "图片过大,请重新上传", + icon: "none" + }); + }, 500); + return false; + } + } + } + //请求前加入token + // options.header['token'] = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxIiwic3ViIjoidG9rZW4iLCJpc3MiOiJBZG1pbiIsImlhdCI6MTYxMTEzMzk1MywiZXhwIjoxNjExMjIwMzUzfQ.ZB_zJgzmgk8uw4wwH5TY8r1IOvObd2rPSfTU3cFA69U"; + return options; // return false 表示请求拦截,不会继续请求 +} +//请求结束 +$http.requestEnd = function(options) { + //判断当前接口是否需要加载动画 + if (options.load) { + requestNum = requestNum - 1; + if (requestNum <= 0) { + uni.hideLoading(); + } + } +} +//登录弹窗次数 +let loginPopupNum = 0; +//所有接口数据处理(可在接口里设置不调用此方法) +//此方法需要开发者根据各自的接口返回类型修改,以下只是模板 +$http.dataFactory = async function(res) { + if (res.response.statusCode && res.response.statusCode == 200) { + let httpData = res.response.data; + if (typeof (httpData) == "string") { + httpData = JSON.parse(httpData); + } + /*********以下只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/ + + //判断数据是否请求成功 + if (httpData.code == 10000) { + // 返回正确的结果(then接受数据) + return Promise.resolve(httpData); + } else { //其他错误提示 + if (res.isPrompt) { + uni.showToast({ + title: httpData.message, + icon: "none", + duration: 3000 + }); + } + // 返回错误的结果(catch接受数据) + return Promise.reject({ + statusCode: 0, + errMsg: httpData.message + }); + } + + /*********以上只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/ + + } else { + // 返回错误的结果(catch接受数据) + return Promise.reject({ + statusCode: res.response.statusCode, + errMsg: "数据请求出错" + }); + } +}; +// 错误回调 +$http.requestError = function (e) { + // e.statusCode === 0 是参数效验错误抛出的 + if (e.statusCode === 0) { + throw e; + } else { + uni.showToast({ + title: "网络错误,请检查一下网络", + icon: "none" + }); + } +} +export default $http; diff --git a/main.js b/main.js new file mode 100644 index 0000000..da32687 --- /dev/null +++ b/main.js @@ -0,0 +1,27 @@ +import Vue from 'vue' +import App from './App' +import cuCustom from 'colorui/components/cu-custom.vue' +import MescrollBody from "@/components/mescroll-uni/mescroll-body.vue" +import MescrollUni from "@/components/mescroll-uni/mescroll-uni.vue" +import {goto} from "@/util/util.js" +import core from '@/util/core.js' +import '@/plugins/utils' +// 接口请求 +import $http from '@/js_sdk/zhouWei-request/requestConfig'; +Vue.prototype.$http = $http; + +Vue.prototype.goto = goto; +Vue.component('mescroll-body', MescrollBody) +Vue.component('mescroll-uni', MescrollUni) + +Vue.prototype.core = core + +Vue.component('cu-custom',cuCustom) +Vue.config.productionTip = false + +App.mpType = 'app' + +const app = new Vue({ + ...App +}) +app.$mount() diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..829956c --- /dev/null +++ b/manifest.json @@ -0,0 +1,79 @@ +{ + "name" : "大庆小程序", + "appid" : "__UNI__EB9AA47", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : true, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx77a8a2a23138998b", + "setting" : { + "urlCheck" : false, + "minified" : true + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + } +} diff --git a/node_modules/async-validator/LICENSE.md b/node_modules/async-validator/LICENSE.md new file mode 100644 index 0000000..1f5a0d9 --- /dev/null +++ b/node_modules/async-validator/LICENSE.md @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright (c) 2014-present yiminghe + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/async-validator/README.md b/node_modules/async-validator/README.md new file mode 100644 index 0000000..2900926 --- /dev/null +++ b/node_modules/async-validator/README.md @@ -0,0 +1,462 @@ +# async-validator + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![node version][node-image]][node-url] +[![npm download][download-image]][download-url] +[![npm bundle size (minified + gzip)][bundlesize-image]][bundlesize-url] + +[npm-image]: https://img.shields.io/npm/v/async-validator.svg?style=flat-square +[npm-url]: https://npmjs.org/package/async-validator +[travis-image]: https://img.shields.io/travis/yiminghe/async-validator.svg?style=flat-square +[travis-url]: https://travis-ci.org/yiminghe/async-validator +[coveralls-image]: https://img.shields.io/coveralls/yiminghe/async-validator.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/yiminghe/async-validator?branch=master +[node-image]: https://img.shields.io/badge/node.js-%3E=4.0.0-green.svg?style=flat-square +[node-url]: https://nodejs.org/download/ +[download-image]: https://img.shields.io/npm/dm/async-validator.svg?style=flat-square +[download-url]: https://npmjs.org/package/async-validator +[bundlesize-image]: https://img.shields.io/bundlephobia/minzip/async-validator.svg?label=gzip%20size +[bundlesize-url]: https://bundlephobia.com/result?p=async-validator + +Validate form asynchronous. A variation of https://github.com/freeformsystems/async-validate + +## Install + +```bash +npm i async-validator +``` + +## Usage + +Basic usage involves defining a descriptor, assigning it to a schema and passing the object to be validated and a callback function to the `validate` method of the schema: + +```js +import Schema from 'async-validator'; +const descriptor = { + name: { + type: 'string', + required: true, + validator: (rule, value) => value === 'muji', + }, + age: { + type: 'number', + asyncValidator: (rule, value) => { + return new Promise((resolve, reject) => { + if (value < 18) { + reject('too young'); // reject with error message + } else { + resolve(); + } + }); + }, + }, +}; +const validator = new Schema(descriptor); +validator.validate({ name: 'muji' }, (errors, fields) => { + if (errors) { + // validation failed, errors is an array of all errors + // fields is an object keyed by field name with an array of + // errors per field + return handleErrors(errors, fields); + } + // validation passed +}); + +// PROMISE USAGE +validator.validate({ name: 'muji', age: 16 }).then(() => { + // validation passed or without error message +}).catch(({ errors, fields }) => { + return handleErrors(errors, fields); +}); +``` + +## API + +### Validate + +```js +function(source, [options], callback): Promise +``` + +* `source`: The object to validate (required). +* `options`: An object describing processing options for the validation (optional). +* `callback`: A callback function to invoke when validation completes (required). + +The method will return a Promise object like: +* `then()`,validation passed +* `catch({ errors, fields })`,validation failed, errors is an array of all errors, fields is an object keyed by field name with an array of + +### Options + +* `suppressWarning`: Boolean, whether to suppress internal warning about invalid value. + +* `first`: Boolean, Invoke `callback` when the first validation rule generates an error, +no more validation rules are processed. +If your validation involves multiple asynchronous calls (for example, database queries) and you only need the first error use this option. + +* `firstFields`: Boolean|String[], Invoke `callback` when the first validation rule of the specified field generates an error, +no more validation rules of the same field are processed. `true` means all fields. + +### Rules + +Rules may be functions that perform validation. + +```js +function(rule, value, callback, source, options) +``` + +* `rule`: The validation rule in the source descriptor that corresponds to the field name being validated. It is always assigned a `field` property with the name of the field being validated. +* `value`: The value of the source object property being validated. +* `callback`: A callback function to invoke once validation is complete. It expects to be passed an array of `Error` instances to indicate validation failure. If the check is synchronous, you can directly return a ` false ` or ` Error ` or ` Error Array `. +* `source`: The source object that was passed to the `validate` method. +* `options`: Additional options. +* `options.messages`: The object containing validation error messages, will be deep merged with defaultMessages. + +The options passed to `validate` or `asyncValidate` are passed on to the validation functions so that you may reference transient data (such as model references) in validation functions. However, some option names are reserved; if you use these properties of the options object they are overwritten. The reserved properties are `messages`, `exception` and `error`. + +```js +import Schema from 'async-validator'; +const descriptor = { + name(rule, value, callback, source, options) { + const errors = []; + if (!/^[a-z0-9]+$/.test(value)) { + errors.push(new Error( + util.format('%s must be lowercase alphanumeric characters', rule.field), + )); + } + return errors; + }, +}; +const validator = new Schema(descriptor); +validator.validate({ name: 'Firstname' }, (errors, fields) => { + if (errors) { + return handleErrors(errors, fields); + } + // validation passed +}); +``` + +It is often useful to test against multiple validation rules for a single field, to do so make the rule an array of objects, for example: + +```js +const descriptor = { + email: [ + { type: 'string', required: true, pattern: Schema.pattern.email }, + { + validator(rule, value, callback, source, options) { + const errors = []; + // test if email address already exists in a database + // and add a validation error to the errors array if it does + return errors; + }, + }, + ], +}; +``` + +#### Type + +Indicates the `type` of validator to use. Recognised type values are: + +* `string`: Must be of type `string`. `This is the default type.` +* `number`: Must be of type `number`. +* `boolean`: Must be of type `boolean`. +* `method`: Must be of type `function`. +* `regexp`: Must be an instance of `RegExp` or a string that does not generate an exception when creating a new `RegExp`. +* `integer`: Must be of type `number` and an integer. +* `float`: Must be of type `number` and a floating point number. +* `array`: Must be an array as determined by `Array.isArray`. +* `object`: Must be of type `object` and not `Array.isArray`. +* `enum`: Value must exist in the `enum`. +* `date`: Value must be valid as determined by `Date` +* `url`: Must be of type `url`. +* `hex`: Must be of type `hex`. +* `email`: Must be of type `email`. +* `any`: Can be any type. + +#### Required + +The `required` rule property indicates that the field must exist on the source object being validated. + +#### Pattern + +The `pattern` rule property indicates a regular expression that the value must match to pass validation. + +#### Range + +A range is defined using the `min` and `max` properties. For `string` and `array` types comparison is performed against the `length`, for `number` types the number must not be less than `min` nor greater than `max`. + +#### Length + +To validate an exact length of a field specify the `len` property. For `string` and `array` types comparison is performed on the `length` property, for the `number` type this property indicates an exact match for the `number`, ie, it may only be strictly equal to `len`. + +If the `len` property is combined with the `min` and `max` range properties, `len` takes precedence. + +#### Enumerable + +> Since version 3.0.0 if you want to validate the values `0` or `false` inside `enum` types, you have to include them explicitly. + +To validate a value from a list of possible values use the `enum` type with a `enum` property listing the valid values for the field, for example: + +```js +const descriptor = { + role: { type: 'enum', enum: ['admin', 'user', 'guest'] }, +}; +``` + +#### Whitespace + +It is typical to treat required fields that only contain whitespace as errors. To add an additional test for a string that consists solely of whitespace add a `whitespace` property to a rule with a value of `true`. The rule must be a `string` type. + +You may wish to sanitize user input instead of testing for whitespace, see [transform](#transform) for an example that would allow you to strip whitespace. + + +#### Deep Rules + +If you need to validate deep object properties you may do so for validation rules that are of the `object` or `array` type by assigning nested rules to a `fields` property of the rule. + +```js +const descriptor = { + address: { + type: 'object', + required: true, + fields: { + street: { type: 'string', required: true }, + city: { type: 'string', required: true }, + zip: { type: 'string', required: true, len: 8, message: 'invalid zip' }, + }, + }, + name: { type: 'string', required: true }, +}; +const validator = new Schema(descriptor); +validator.validate({ address: {} }, (errors, fields) => { + // errors for address.street, address.city, address.zip +}); +``` + +Note that if you do not specify the `required` property on the parent rule it is perfectly valid for the field not to be declared on the source object and the deep validation rules will not be executed as there is nothing to validate against. + +Deep rule validation creates a schema for the nested rules so you can also specify the `options` passed to the `schema.validate()` method. + +```js +const descriptor = { + address: { + type: 'object', + required: true, + options: { first: true }, + fields: { + street: { type: 'string', required: true }, + city: { type: 'string', required: true }, + zip: { type: 'string', required: true, len: 8, message: 'invalid zip' }, + }, + }, + name: { type: 'string', required: true }, +}; +const validator = new Schema(descriptor); + +validator.validate({ address: {} }) + .catch(({ errors, fields }) => { + // now only errors for street and name + }); +``` + +The parent rule is also validated so if you have a set of rules such as: + +```js +const descriptor = { + roles: { + type: 'array', + required: true, + len: 3, + fields: { + 0: { type: 'string', required: true }, + 1: { type: 'string', required: true }, + 2: { type: 'string', required: true }, + }, + }, +}; +``` + +And supply a source object of `{ roles: ['admin', 'user'] }` then two errors will be created. One for the array length mismatch and one for the missing required array entry at index 2. + +#### defaultField + +The `defaultField` property can be used with the `array` or `object` type for validating all values of the container. +It may be an `object` or `array` containing validation rules. For example: + +```js +const descriptor = { + urls: { + type: 'array', + required: true, + defaultField: { type: 'url' }, + }, +}; +``` + +Note that `defaultField` is expanded to `fields`, see [deep rules](#deep-rules). + +#### Transform + +Sometimes it is necessary to transform a value before validation, possibly to coerce the value or to sanitize it in some way. To do this add a `transform` function to the validation rule. The property is transformed prior to validation and re-assigned to the source object to mutate the value of the property in place. + +```js +import Schema from 'async-validator'; +const descriptor = { + name: { + type: 'string', + required: true, + pattern: /^[a-z]+$/, + transform(value) { + return value.trim(); + }, + }, +}; +const validator = new Schema(descriptor); +const source = { name: ' user ' }; +validator.validate(source) + .then(() => assert.equal(source.name, 'user')); +``` + +Without the `transform` function validation would fail due to the pattern not matching as the input contains leading and trailing whitespace, but by adding the transform function validation passes and the field value is sanitized at the same time. + + +#### Messages + +Depending upon your application requirements, you may need i18n support or you may prefer different validation error messages. + +The easiest way to achieve this is to assign a `message` to a rule: + +```js +{ name: { type: 'string', required: true, message: 'Name is required' } } +``` + +Message can be any type, such as jsx format. + +```js +{ name: { type: 'string', required: true, message: 'Name is required' } } +``` + +Message can also be a function, e.g. if you use vue-i18n: +```js +{ name: { type: 'string', required: true, message: () => this.$t( 'name is required' ) } } +``` + +Potentially you may require the same schema validation rules for different languages, in which case duplicating the schema rules for each language does not make sense. + +In this scenario you could just provide your own messages for the language and assign it to the schema: + +```js +import Schema from 'async-validator'; +const cn = { + required: '%s 必填', +}; +const descriptor = { name: { type: 'string', required: true } }; +const validator = new Schema(descriptor); +// deep merge with defaultMessages +validator.messages(cn); +... +``` + +If you are defining your own validation functions it is better practice to assign the message strings to a messages object and then access the messages via the `options.messages` property within the validation function. + +#### asyncValidator + +You can customize the asynchronous validation function for the specified field: + +```js +const fields = { + asyncField: { + asyncValidator(rule, value, callback) { + ajax({ + url: 'xx', + value: value, + }).then(function(data) { + callback(); + }, function(error) { + callback(new Error(error)); + }); + }, + }, + + promiseField: { + asyncValidator(rule, value) { + return ajax({ + url: 'xx', + value: value, + }); + }, + }, +}; +``` + +#### validator + +You can custom validate function for specified field: + +```js +const fields = { + field: { + validator(rule, value, callback) { + return value === 'test'; + }, + message: 'Value is not equal to "test".', + }, + + field2: { + validator(rule, value, callback) { + return new Error(`${value} is not equal to 'test'.`); + }, + }, + + arrField: { + validator(rule, value) { + return [ + new Error('Message 1'), + new Error('Message 2'), + ]; + }, + }, +}; +``` + +## FAQ + +### How to avoid warning + +```js +import Schema from 'async-validator'; +Schema.warning = function(){}; +``` + +### How to check if it is `true` + +Use `enum` type passing `true` as option. + +```js +{ + type: 'enum', + enum: [true], + message: '', +} +``` + +## Test Case + +```bash +npm test +``` + +## Coverage + +```bash +npm run coverage +``` + +Open coverage/ dir + +## License + +Everything is [MIT](https://en.wikipedia.org/wiki/MIT_License). diff --git a/node_modules/async-validator/dist-node/index.js b/node_modules/async-validator/dist-node/index.js new file mode 100644 index 0000000..e7836f7 --- /dev/null +++ b/node_modules/async-validator/dist-node/index.js @@ -0,0 +1,1444 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; +} + +function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} + +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} + +function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + return true; + } catch (e) { + return false; + } +} + +function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); +} + +function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; +} + +function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); +} + +/* eslint no-console:0 */ +var formatRegExp = /%[sdj%]/g; +var warning = function warning() {}; // don't print warning message when in production env or node runtime + +if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') { + warning = function warning(type, errors) { + if (typeof console !== 'undefined' && console.warn) { + if (errors.every(function (e) { + return typeof e === 'string'; + })) { + console.warn(type, errors); + } + } + }; +} + +function convertFieldsError(errors) { + if (!errors || !errors.length) return null; + var fields = {}; + errors.forEach(function (error) { + var field = error.field; + fields[field] = fields[field] || []; + fields[field].push(error); + }); + return fields; +} +function format() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var i = 1; + var f = args[0]; + var len = args.length; + + if (typeof f === 'function') { + return f.apply(null, args.slice(1)); + } + + if (typeof f === 'string') { + var str = String(f).replace(formatRegExp, function (x) { + if (x === '%%') { + return '%'; + } + + if (i >= len) { + return x; + } + + switch (x) { + case '%s': + return String(args[i++]); + + case '%d': + return Number(args[i++]); + + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + + break; + + default: + return x; + } + }); + return str; + } + + return f; +} + +function isNativeStringType(type) { + return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern'; +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (type === 'array' && Array.isArray(value) && !value.length) { + return true; + } + + if (isNativeStringType(type) && typeof value === 'string' && !value) { + return true; + } + + return false; +} + +function asyncParallelArray(arr, func, callback) { + var results = []; + var total = 0; + var arrLength = arr.length; + + function count(errors) { + results.push.apply(results, errors); + total++; + + if (total === arrLength) { + callback(results); + } + } + + arr.forEach(function (a) { + func(a, count); + }); +} + +function asyncSerialArray(arr, func, callback) { + var index = 0; + var arrLength = arr.length; + + function next(errors) { + if (errors && errors.length) { + callback(errors); + return; + } + + var original = index; + index = index + 1; + + if (original < arrLength) { + func(arr[original], next); + } else { + callback([]); + } + } + + next([]); +} + +function flattenObjArr(objArr) { + var ret = []; + Object.keys(objArr).forEach(function (k) { + ret.push.apply(ret, objArr[k]); + }); + return ret; +} + +var AsyncValidationError = /*#__PURE__*/function (_Error) { + _inheritsLoose(AsyncValidationError, _Error); + + function AsyncValidationError(errors, fields) { + var _this; + + _this = _Error.call(this, 'Async Validation Error') || this; + _this.errors = errors; + _this.fields = fields; + return _this; + } + + return AsyncValidationError; +}( /*#__PURE__*/_wrapNativeSuper(Error)); +function asyncMap(objArr, option, func, callback) { + if (option.first) { + var _pending = new Promise(function (resolve, reject) { + var next = function next(errors) { + callback(errors); + return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(); + }; + + var flattenArr = flattenObjArr(objArr); + asyncSerialArray(flattenArr, func, next); + }); + + _pending["catch"](function (e) { + return e; + }); + + return _pending; + } + + var firstFields = option.firstFields || []; + + if (firstFields === true) { + firstFields = Object.keys(objArr); + } + + var objArrKeys = Object.keys(objArr); + var objArrLength = objArrKeys.length; + var total = 0; + var results = []; + var pending = new Promise(function (resolve, reject) { + var next = function next(errors) { + results.push.apply(results, errors); + total++; + + if (total === objArrLength) { + callback(results); + return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(); + } + }; + + if (!objArrKeys.length) { + callback(results); + resolve(); + } + + objArrKeys.forEach(function (key) { + var arr = objArr[key]; + + if (firstFields.indexOf(key) !== -1) { + asyncSerialArray(arr, func, next); + } else { + asyncParallelArray(arr, func, next); + } + }); + }); + pending["catch"](function (e) { + return e; + }); + return pending; +} +function complementError(rule) { + return function (oe) { + if (oe && oe.message) { + oe.field = oe.field || rule.fullField; + return oe; + } + + return { + message: typeof oe === 'function' ? oe() : oe, + field: oe.field || rule.fullField + }; + }; +} +function deepMerge(target, source) { + if (source) { + for (var s in source) { + if (source.hasOwnProperty(s)) { + var value = source[s]; + + if (typeof value === 'object' && typeof target[s] === 'object') { + target[s] = _extends(_extends({}, target[s]), value); + } else { + target[s] = value; + } + } + } + } + + return target; +} + +/** + * Rule for validating required fields. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function required(rule, value, source, errors, options, type) { + if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) { + errors.push(format(options.messages.required, rule.fullField)); + } +} + +/** + * Rule for validating whitespace. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function whitespace(rule, value, source, errors, options) { + if (/^\s+$/.test(value) || value === '') { + errors.push(format(options.messages.whitespace, rule.fullField)); + } +} + +/* eslint max-len:0 */ + +var pattern = { + // http://emailregex.com/ + email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, + url: new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", 'i'), + hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i +}; +var types = { + integer: function integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + "float": function float(value) { + return types.number(value) && !types.integer(value); + }, + array: function array(value) { + return Array.isArray(value); + }, + regexp: function regexp(value) { + if (value instanceof RegExp) { + return true; + } + + try { + return !!new RegExp(value); + } catch (e) { + return false; + } + }, + date: function date(value) { + return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime()); + }, + number: function number(value) { + if (isNaN(value)) { + return false; + } + + return typeof value === 'number'; + }, + object: function object(value) { + return typeof value === 'object' && !types.array(value); + }, + method: function method(value) { + return typeof value === 'function'; + }, + email: function email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url: function url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + hex: function hex(value) { + return typeof value === 'string' && !!value.match(pattern.hex); + } +}; +/** + * Rule for validating the type of a value. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function type(rule, value, source, errors, options) { + if (rule.required && value === undefined) { + required(rule, value, source, errors, options); + return; + } + + var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex']; + var ruleType = rule.type; + + if (custom.indexOf(ruleType) > -1) { + if (!types[ruleType](value)) { + errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); + } // straight typeof check + + } else if (ruleType && typeof value !== rule.type) { + errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); + } +} + +/** + * Rule for validating minimum and maximum allowed values. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function range(rule, value, source, errors, options) { + var len = typeof rule.len === 'number'; + var min = typeof rule.min === 'number'; + var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane) + + var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var val = value; + var key = null; + var num = typeof value === 'number'; + var str = typeof value === 'string'; + var arr = Array.isArray(value); + + if (num) { + key = 'number'; + } else if (str) { + key = 'string'; + } else if (arr) { + key = 'array'; + } // if the value is not of a supported type for range validation + // the validation rule rule should use the + // type property to also test for a particular type + + + if (!key) { + return false; + } + + if (arr) { + val = value.length; + } + + if (str) { + // 处理码点大于U+010000的文字length属性不准确的bug,如"𠮷𠮷𠮷".lenght !== 3 + val = value.replace(spRegexp, '_').length; + } + + if (len) { + if (val !== rule.len) { + errors.push(format(options.messages[key].len, rule.fullField, rule.len)); + } + } else if (min && !max && val < rule.min) { + errors.push(format(options.messages[key].min, rule.fullField, rule.min)); + } else if (max && !min && val > rule.max) { + errors.push(format(options.messages[key].max, rule.fullField, rule.max)); + } else if (min && max && (val < rule.min || val > rule.max)) { + errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max)); + } +} + +var ENUM = 'enum'; +/** + * Rule for validating a value exists in an enumerable list. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function enumerable(rule, value, source, errors, options) { + rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : []; + + if (rule[ENUM].indexOf(value) === -1) { + errors.push(format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', '))); + } +} + +/** + * Rule for validating a regular expression pattern. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function pattern$1(rule, value, source, errors, options) { + if (rule.pattern) { + if (rule.pattern instanceof RegExp) { + // if a RegExp instance is passed, reset `lastIndex` in case its `global` + // flag is accidentally set to `true`, which in a validation scenario + // is not necessary and the result might be misleading + rule.pattern.lastIndex = 0; + + if (!rule.pattern.test(value)) { + errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); + } + } else if (typeof rule.pattern === 'string') { + var _pattern = new RegExp(rule.pattern); + + if (!_pattern.test(value)) { + errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); + } + } + } +} + +var rules = { + required: required, + whitespace: whitespace, + type: type, + range: range, + "enum": enumerable, + pattern: pattern$1 +}; + +/** + * Performs validation for string types. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function string(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value, 'string') && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options, 'string'); + + if (!isEmptyValue(value, 'string')) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + rules.pattern(rule, value, source, errors, options); + + if (rule.whitespace === true) { + rules.whitespace(rule, value, source, errors, options); + } + } + } + + callback(errors); +} + +/** + * Validates a function. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function method(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a number. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function number(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (value === '') { + value = undefined; + } + + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a boolean. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function _boolean(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates the regular expression type. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function regexp(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (!isEmptyValue(value)) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a number is an integer. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function integer(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a number is a floating point number. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function floatFn(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates an array. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function array(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if ((value === undefined || value === null) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options, 'array'); + + if (value !== undefined && value !== null) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates an object. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function object(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +var ENUM$1 = 'enum'; +/** + * Validates an enumerable list. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function enumerable$1(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules[ENUM$1](rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a regular expression pattern. + * + * Performs validation when a rule only contains + * a pattern property but is not declared as a string type. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function pattern$2(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value, 'string') && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (!isEmptyValue(value, 'string')) { + rules.pattern(rule, value, source, errors, options); + } + } + + callback(errors); +} + +function date(rule, value, callback, source, options) { + // console.log('integer rule called %j', rule); + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value); + + if (validate) { + if (isEmptyValue(value, 'date') && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (!isEmptyValue(value, 'date')) { + var dateObject; + + if (value instanceof Date) { + dateObject = value; + } else { + dateObject = new Date(value); + } + + rules.type(rule, dateObject, source, errors, options); + + if (dateObject) { + rules.range(rule, dateObject.getTime(), source, errors, options); + } + } + } + + callback(errors); +} + +function required$1(rule, value, callback, source, options) { + var errors = []; + var type = Array.isArray(value) ? 'array' : typeof value; + rules.required(rule, value, source, errors, options, type); + callback(errors); +} + +function type$1(rule, value, callback, source, options) { + var ruleType = rule.type; + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value, ruleType) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options, ruleType); + + if (!isEmptyValue(value, ruleType)) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Performs validation for any type. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function any(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + } + + callback(errors); +} + +var validators = { + string: string, + method: method, + number: number, + "boolean": _boolean, + regexp: regexp, + integer: integer, + "float": floatFn, + array: array, + object: object, + "enum": enumerable$1, + pattern: pattern$2, + date: date, + url: type$1, + hex: type$1, + email: type$1, + required: required$1, + any: any +}; + +function newMessages() { + return { + "default": 'Validation error on field %s', + required: '%s is required', + "enum": '%s must be one of %s', + whitespace: '%s cannot be empty', + date: { + format: '%s date %s is invalid for format %s', + parse: '%s date could not be parsed, %s is invalid ', + invalid: '%s date %s is invalid' + }, + types: { + string: '%s is not a %s', + method: '%s is not a %s (function)', + array: '%s is not an %s', + object: '%s is not an %s', + number: '%s is not a %s', + date: '%s is not a %s', + "boolean": '%s is not a %s', + integer: '%s is not an %s', + "float": '%s is not a %s', + regexp: '%s is not a valid %s', + email: '%s is not a valid %s', + url: '%s is not a valid %s', + hex: '%s is not a valid %s' + }, + string: { + len: '%s must be exactly %s characters', + min: '%s must be at least %s characters', + max: '%s cannot be longer than %s characters', + range: '%s must be between %s and %s characters' + }, + number: { + len: '%s must equal %s', + min: '%s cannot be less than %s', + max: '%s cannot be greater than %s', + range: '%s must be between %s and %s' + }, + array: { + len: '%s must be exactly %s in length', + min: '%s cannot be less than %s in length', + max: '%s cannot be greater than %s in length', + range: '%s must be between %s and %s in length' + }, + pattern: { + mismatch: '%s value %s does not match pattern %s' + }, + clone: function clone() { + var cloned = JSON.parse(JSON.stringify(this)); + cloned.clone = this.clone; + return cloned; + } + }; +} +var messages = newMessages(); + +/** + * Encapsulates a validation schema. + * + * @param descriptor An object declaring validation rules + * for this schema. + */ + +function Schema(descriptor) { + this.rules = null; + this._messages = messages; + this.define(descriptor); +} + +Schema.prototype = { + messages: function messages(_messages) { + if (_messages) { + this._messages = deepMerge(newMessages(), _messages); + } + + return this._messages; + }, + define: function define(rules) { + if (!rules) { + throw new Error('Cannot configure a schema with no rules'); + } + + if (typeof rules !== 'object' || Array.isArray(rules)) { + throw new Error('Rules must be an object'); + } + + this.rules = {}; + var z; + var item; + + for (z in rules) { + if (rules.hasOwnProperty(z)) { + item = rules[z]; + this.rules[z] = Array.isArray(item) ? item : [item]; + } + } + }, + validate: function validate(source_, o, oc) { + var _this = this; + + if (o === void 0) { + o = {}; + } + + if (oc === void 0) { + oc = function oc() {}; + } + + var source = source_; + var options = o; + var callback = oc; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + if (!this.rules || Object.keys(this.rules).length === 0) { + if (callback) { + callback(); + } + + return Promise.resolve(); + } + + function complete(results) { + var i; + var errors = []; + var fields = {}; + + function add(e) { + if (Array.isArray(e)) { + var _errors; + + errors = (_errors = errors).concat.apply(_errors, e); + } else { + errors.push(e); + } + } + + for (i = 0; i < results.length; i++) { + add(results[i]); + } + + if (!errors.length) { + errors = null; + fields = null; + } else { + fields = convertFieldsError(errors); + } + + callback(errors, fields); + } + + if (options.messages) { + var messages$1 = this.messages(); + + if (messages$1 === messages) { + messages$1 = newMessages(); + } + + deepMerge(messages$1, options.messages); + options.messages = messages$1; + } else { + options.messages = this.messages(); + } + + var arr; + var value; + var series = {}; + var keys = options.keys || Object.keys(this.rules); + keys.forEach(function (z) { + arr = _this.rules[z]; + value = source[z]; + arr.forEach(function (r) { + var rule = r; + + if (typeof rule.transform === 'function') { + if (source === source_) { + source = _extends({}, source); + } + + value = source[z] = rule.transform(value); + } + + if (typeof rule === 'function') { + rule = { + validator: rule + }; + } else { + rule = _extends({}, rule); + } + + rule.validator = _this.getValidationMethod(rule); + rule.field = z; + rule.fullField = rule.fullField || z; + rule.type = _this.getType(rule); + + if (!rule.validator) { + return; + } + + series[z] = series[z] || []; + series[z].push({ + rule: rule, + value: value, + source: source, + field: z + }); + }); + }); + var errorFields = {}; + return asyncMap(series, options, function (data, doIt) { + var rule = data.rule; + var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object'); + deep = deep && (rule.required || !rule.required && data.value); + rule.field = data.field; + + function addFullfield(key, schema) { + return _extends(_extends({}, schema), {}, { + fullField: rule.fullField + "." + key + }); + } + + function cb(e) { + if (e === void 0) { + e = []; + } + + var errors = e; + + if (!Array.isArray(errors)) { + errors = [errors]; + } + + if (!options.suppressWarning && errors.length) { + Schema.warning('async-validator:', errors); + } + + if (errors.length && rule.message !== undefined) { + errors = [].concat(rule.message); + } + + errors = errors.map(complementError(rule)); + + if (options.first && errors.length) { + errorFields[rule.field] = 1; + return doIt(errors); + } + + if (!deep) { + doIt(errors); + } else { + // if rule is required but the target object + // does not exist fail at the rule level and don't + // go deeper + if (rule.required && !data.value) { + if (rule.message !== undefined) { + errors = [].concat(rule.message).map(complementError(rule)); + } else if (options.error) { + errors = [options.error(rule, format(options.messages.required, rule.field))]; + } + + return doIt(errors); + } + + var fieldsSchema = {}; + + if (rule.defaultField) { + for (var k in data.value) { + if (data.value.hasOwnProperty(k)) { + fieldsSchema[k] = rule.defaultField; + } + } + } + + fieldsSchema = _extends(_extends({}, fieldsSchema), data.rule.fields); + + for (var f in fieldsSchema) { + if (fieldsSchema.hasOwnProperty(f)) { + var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]]; + fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f)); + } + } + + var schema = new Schema(fieldsSchema); + schema.messages(options.messages); + + if (data.rule.options) { + data.rule.options.messages = options.messages; + data.rule.options.error = options.error; + } + + schema.validate(data.value, data.rule.options || options, function (errs) { + var finalErrors = []; + + if (errors && errors.length) { + finalErrors.push.apply(finalErrors, errors); + } + + if (errs && errs.length) { + finalErrors.push.apply(finalErrors, errs); + } + + doIt(finalErrors.length ? finalErrors : null); + }); + } + } + + var res; + + if (rule.asyncValidator) { + res = rule.asyncValidator(rule, data.value, cb, data.source, options); + } else if (rule.validator) { + res = rule.validator(rule, data.value, cb, data.source, options); + + if (res === true) { + cb(); + } else if (res === false) { + cb(rule.message || rule.field + " fails"); + } else if (res instanceof Array) { + cb(res); + } else if (res instanceof Error) { + cb(res.message); + } + } + + if (res && res.then) { + res.then(function () { + return cb(); + }, function (e) { + return cb(e); + }); + } + }, function (results) { + complete(results); + }); + }, + getType: function getType(rule) { + if (rule.type === undefined && rule.pattern instanceof RegExp) { + rule.type = 'pattern'; + } + + if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) { + throw new Error(format('Unknown rule type %s', rule.type)); + } + + return rule.type || 'string'; + }, + getValidationMethod: function getValidationMethod(rule) { + if (typeof rule.validator === 'function') { + return rule.validator; + } + + var keys = Object.keys(rule); + var messageIndex = keys.indexOf('message'); + + if (messageIndex !== -1) { + keys.splice(messageIndex, 1); + } + + if (keys.length === 1 && keys[0] === 'required') { + return validators.required; + } + + return validators[this.getType(rule)] || false; + } +}; + +Schema.register = function register(type, validator) { + if (typeof validator !== 'function') { + throw new Error('Cannot register a validator by type, validator is not a function'); + } + + validators[type] = validator; +}; + +Schema.warning = warning; +Schema.messages = messages; +Schema.validators = validators; + +exports.default = Schema; +//# sourceMappingURL=index.js.map diff --git a/node_modules/async-validator/dist-node/index.js.map b/node_modules/async-validator/dist-node/index.js.map new file mode 100644 index 0000000..162d9f3 --- /dev/null +++ b/node_modules/async-validator/dist-node/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../src/util.js","../../src/rule/required.js","../../src/rule/whitespace.js","../../src/rule/type.js","../../src/rule/range.js","../../src/rule/enum.js","../../src/rule/pattern.js","../../src/rule/index.js","../../src/validator/string.js","../../src/validator/method.js","../../src/validator/number.js","../../src/validator/boolean.js","../../src/validator/regexp.js","../../src/validator/integer.js","../../src/validator/float.js","../../src/validator/array.js","../../src/validator/object.js","../../src/validator/enum.js","../../src/validator/pattern.js","../../src/validator/date.js","../../src/validator/required.js","../../src/validator/type.js","../../src/validator/any.js","../../src/validator/index.js","../../src/messages.js","../../src/index.js"],"sourcesContent":["/* eslint no-console:0 */\n\nconst formatRegExp = /%[sdj%]/g;\n\nexport let warning = () => {};\n\n// don't print warning message when in production env or node runtime\nif (\n typeof process !== 'undefined' &&\n process.env &&\n process.env.NODE_ENV !== 'production' &&\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n) {\n warning = (type, errors) => {\n if (typeof console !== 'undefined' && console.warn) {\n if (errors.every(e => typeof e === 'string')) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nexport function convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n const fields = {};\n errors.forEach(error => {\n const field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\n\nexport function format(...args) {\n let i = 1;\n const f = args[0];\n const len = args.length;\n if (typeof f === 'function') {\n return f.apply(null, args.slice(1));\n }\n if (typeof f === 'string') {\n let str = String(f).replace(formatRegExp, x => {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n return str;\n }\n return f;\n}\n\nfunction isNativeStringType(type) {\n return (\n type === 'string' ||\n type === 'url' ||\n type === 'hex' ||\n type === 'email' ||\n type === 'date' ||\n type === 'pattern'\n );\n}\n\nexport function isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n const results = [];\n let total = 0;\n const arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(a => {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n let index = 0;\n const arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n const original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n const ret = [];\n Object.keys(objArr).forEach(k => {\n ret.push.apply(ret, objArr[k]);\n });\n return ret;\n}\n\nexport class AsyncValidationError extends Error {\n constructor(errors, fields) {\n super('Async Validation Error');\n this.errors = errors;\n this.fields = fields;\n }\n}\n\nexport function asyncMap(objArr, option, func, callback) {\n if (option.first) {\n const pending = new Promise((resolve, reject) => {\n const next = errors => {\n callback(errors);\n return errors.length\n ? reject(new AsyncValidationError(errors, convertFieldsError(errors)))\n : resolve();\n };\n const flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n pending.catch(e => e);\n return pending;\n }\n let firstFields = option.firstFields || [];\n if (firstFields === true) {\n firstFields = Object.keys(objArr);\n }\n const objArrKeys = Object.keys(objArr);\n const objArrLength = objArrKeys.length;\n let total = 0;\n const results = [];\n const pending = new Promise((resolve, reject) => {\n const next = errors => {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n return results.length\n ? reject(\n new AsyncValidationError(results, convertFieldsError(results)),\n )\n : resolve();\n }\n };\n if (!objArrKeys.length) {\n callback(results);\n resolve();\n }\n objArrKeys.forEach(key => {\n const arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending.catch(e => e);\n return pending;\n}\n\nexport function complementError(rule) {\n return oe => {\n if (oe && oe.message) {\n oe.field = oe.field || rule.fullField;\n return oe;\n }\n return {\n message: typeof oe === 'function' ? oe() : oe,\n field: oe.field || rule.fullField,\n };\n };\n}\n\nexport function deepMerge(target, source) {\n if (source) {\n for (const s in source) {\n if (source.hasOwnProperty(s)) {\n const value = source[s];\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = {\n ...target[s],\n ...value,\n };\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}\n","import * as util from '../util';\n\n/**\n * Rule for validating required fields.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction required(rule, value, source, errors, options, type) {\n if (\n rule.required &&\n (!source.hasOwnProperty(rule.field) ||\n util.isEmptyValue(value, type || rule.type))\n ) {\n errors.push(util.format(options.messages.required, rule.fullField));\n }\n}\n\nexport default required;\n","import * as util from '../util';\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(util.format(options.messages.whitespace, rule.fullField));\n }\n}\n\nexport default whitespace;\n","import * as util from '../util';\nimport required from './required';\n\n/* eslint max-len:0 */\n\nconst pattern = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n url: new RegExp(\n '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n 'i',\n ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,\n};\n\nconst types = {\n integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n float(value) {\n return types.number(value) && !types.integer(value);\n },\n array(value) {\n return Array.isArray(value);\n },\n regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date(value) {\n return (\n typeof value.getTime === 'function' &&\n typeof value.getMonth === 'function' &&\n typeof value.getYear === 'function' &&\n !isNaN(value.getTime())\n );\n },\n number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method(value) {\n return typeof value === 'function';\n },\n email(value) {\n return (\n typeof value === 'string' &&\n !!value.match(pattern.email) &&\n value.length < 255\n );\n },\n url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n hex(value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n },\n};\n\n/**\n * Rule for validating the type of a value.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required(rule, value, source, errors, options);\n return;\n }\n const custom = [\n 'integer',\n 'float',\n 'array',\n 'regexp',\n 'object',\n 'method',\n 'email',\n 'number',\n 'date',\n 'url',\n 'hex',\n ];\n const ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(\n util.format(\n options.messages.types[ruleType],\n rule.fullField,\n rule.type,\n ),\n );\n }\n // straight typeof check\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(\n util.format(options.messages.types[ruleType], rule.fullField, rule.type),\n );\n }\n}\n\nexport default type;\n","import * as util from '../util';\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction range(rule, value, source, errors, options) {\n const len = typeof rule.len === 'number';\n const min = typeof rule.min === 'number';\n const max = typeof rule.max === 'number';\n // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n const spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n let val = value;\n let key = null;\n const num = typeof value === 'number';\n const str = typeof value === 'string';\n const arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n }\n // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(\n util.format(options.messages[key].len, rule.fullField, rule.len),\n );\n }\n } else if (min && !max && val < rule.min) {\n errors.push(\n util.format(options.messages[key].min, rule.fullField, rule.min),\n );\n } else if (max && !min && val > rule.max) {\n errors.push(\n util.format(options.messages[key].max, rule.fullField, rule.max),\n );\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(\n util.format(\n options.messages[key].range,\n rule.fullField,\n rule.min,\n rule.max,\n ),\n );\n }\n}\n\nexport default range;\n","import * as util from '../util';\n\nconst ENUM = 'enum';\n\n/**\n * Rule for validating a value exists in an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, source, errors, options) {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(\n util.format(\n options.messages[ENUM],\n rule.fullField,\n rule[ENUM].join(', '),\n ),\n );\n }\n}\n\nexport default enumerable;\n","import * as util from '../util';\n\n/**\n * Rule for validating a regular expression pattern.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(\n util.format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n } else if (typeof rule.pattern === 'string') {\n const _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(\n util.format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n }\n }\n}\n\nexport default pattern;\n","import required from './required';\nimport whitespace from './whitespace';\nimport type from './type';\nimport range from './range';\nimport enumRule from './enum';\nimport pattern from './pattern';\n\nexport default {\n required,\n whitespace,\n type,\n range,\n enum: enumRule,\n pattern,\n};\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for string types.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction string(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default string;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a function.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction method(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default method;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction number(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default number;\n","import { isEmptyValue } from '../util';\nimport rules from '../rule/index.js';\n\n/**\n * Validates a boolean.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction boolean(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default boolean;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates the regular expression type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction regexp(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default regexp;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is an integer.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction integer(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default integer;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is a floating point number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction floatFn(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default floatFn;\n","import rules from '../rule/index';\nimport { isEmptyValue } from '../util';\n/**\n * Validates an array.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction array(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default array;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates an object.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction object(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default object;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nconst ENUM = 'enum';\n\n/**\n * Validates an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default enumerable;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a regular expression pattern.\n *\n * Performs validation when a rule only contains\n * a pattern property but is not declared as a string type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default pattern;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nfunction date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n // console.log('validate on %s value', value);\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'date')) {\n let dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default date;\n","import rules from '../rule/index.js';\n\nfunction required(rule, value, callback, source, options) {\n const errors = [];\n const type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n}\n\nexport default required;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nfunction type(rule, value, callback, source, options) {\n const ruleType = rule.type;\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default type;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for any type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction any(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n }\n callback(errors);\n}\n\nexport default any;\n","import string from './string';\nimport method from './method';\nimport number from './number';\nimport boolean from './boolean';\nimport regexp from './regexp';\nimport integer from './integer';\nimport float from './float';\nimport array from './array';\nimport object from './object';\nimport enumValidator from './enum';\nimport pattern from './pattern';\nimport date from './date';\nimport required from './required';\nimport type from './type';\nimport any from './any';\n\nexport default {\n string,\n method,\n number,\n boolean,\n regexp,\n integer,\n float,\n array,\n object,\n enum: enumValidator,\n pattern,\n date,\n url: type,\n hex: type,\n email: type,\n required,\n any,\n};\n","export function newMessages() {\n return {\n default: 'Validation error on field %s',\n required: '%s is required',\n enum: '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid',\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n boolean: '%s is not a %s',\n integer: '%s is not an %s',\n float: '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s',\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters',\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s',\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length',\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s',\n },\n clone() {\n const cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n },\n };\n}\n\nexport const messages = newMessages();\n","import {\n format,\n complementError,\n asyncMap,\n warning,\n deepMerge,\n convertFieldsError,\n} from './util';\nimport validators from './validator/index';\nimport { messages as defaultMessages, newMessages } from './messages';\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\nfunction Schema(descriptor) {\n this.rules = null;\n this._messages = defaultMessages;\n this.define(descriptor);\n}\n\nSchema.prototype = {\n messages(messages) {\n if (messages) {\n this._messages = deepMerge(newMessages(), messages);\n }\n return this._messages;\n },\n define(rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n let z;\n let item;\n for (z in rules) {\n if (rules.hasOwnProperty(z)) {\n item = rules[z];\n this.rules[z] = Array.isArray(item) ? item : [item];\n }\n }\n },\n validate(source_, o = {}, oc = () => {}) {\n let source = source_;\n let options = o;\n let callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback();\n }\n return Promise.resolve();\n }\n\n function complete(results) {\n let i;\n let errors = [];\n let fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat(...e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n fields = convertFieldsError(errors);\n }\n callback(errors, fields);\n }\n\n if (options.messages) {\n let messages = this.messages();\n if (messages === defaultMessages) {\n messages = newMessages();\n }\n deepMerge(messages, options.messages);\n options.messages = messages;\n } else {\n options.messages = this.messages();\n }\n let arr;\n let value;\n const series = {};\n const keys = options.keys || Object.keys(this.rules);\n keys.forEach(z => {\n arr = this.rules[z];\n value = source[z];\n arr.forEach(r => {\n let rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = { ...source };\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule,\n };\n } else {\n rule = { ...rule };\n }\n rule.validator = this.getValidationMethod(rule);\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = this.getType(rule);\n if (!rule.validator) {\n return;\n }\n series[z] = series[z] || [];\n series[z].push({\n rule,\n value,\n source,\n field: z,\n });\n });\n });\n const errorFields = {};\n return asyncMap(\n series,\n options,\n (data, doIt) => {\n const rule = data.rule;\n let deep =\n (rule.type === 'object' || rule.type === 'array') &&\n (typeof rule.fields === 'object' ||\n typeof rule.defaultField === 'object');\n deep = deep && (rule.required || (!rule.required && data.value));\n rule.field = data.field;\n\n function addFullfield(key, schema) {\n return {\n ...schema,\n fullField: `${rule.fullField}.${key}`,\n };\n }\n\n function cb(e = []) {\n let errors = e;\n if (!Array.isArray(errors)) {\n errors = [errors];\n }\n if (!options.suppressWarning && errors.length) {\n Schema.warning('async-validator:', errors);\n }\n if (errors.length && rule.message !== undefined) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map(complementError(rule));\n\n if (options.first && errors.length) {\n errorFields[rule.field] = 1;\n return doIt(errors);\n }\n if (!deep) {\n doIt(errors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n errors = [].concat(rule.message).map(complementError(rule));\n } else if (options.error) {\n errors = [\n options.error(\n rule,\n format(options.messages.required, rule.field),\n ),\n ];\n }\n return doIt(errors);\n }\n\n let fieldsSchema = {};\n if (rule.defaultField) {\n for (const k in data.value) {\n if (data.value.hasOwnProperty(k)) {\n fieldsSchema[k] = rule.defaultField;\n }\n }\n }\n fieldsSchema = {\n ...fieldsSchema,\n ...data.rule.fields,\n };\n for (const f in fieldsSchema) {\n if (fieldsSchema.hasOwnProperty(f)) {\n const fieldSchema = Array.isArray(fieldsSchema[f])\n ? fieldsSchema[f]\n : [fieldsSchema[f]];\n fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n }\n }\n const schema = new Schema(fieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, errs => {\n const finalErrors = [];\n if (errors && errors.length) {\n finalErrors.push(...errors);\n }\n if (errs && errs.length) {\n finalErrors.push(...errs);\n }\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n let res;\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n res = rule.validator(rule, data.value, cb, data.source, options);\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(rule.message || `${rule.field} fails`);\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n if (res && res.then) {\n res.then(\n () => cb(),\n e => cb(e),\n );\n }\n },\n results => {\n complete(results);\n },\n );\n },\n getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (\n typeof rule.validator !== 'function' &&\n rule.type &&\n !validators.hasOwnProperty(rule.type)\n ) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n },\n getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n const keys = Object.keys(rule);\n const messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || false;\n },\n};\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error(\n 'Cannot register a validator by type, validator is not a function',\n );\n }\n validators[type] = validator;\n};\n\nSchema.warning = warning;\n\nSchema.messages = defaultMessages;\n\nSchema.validators = validators;\n\nexport default Schema;\n"],"names":["formatRegExp","warning","process","env","NODE_ENV","window","document","type","errors","console","warn","every","e","convertFieldsError","length","fields","forEach","error","field","push","format","args","i","f","len","apply","slice","str","String","replace","x","Number","JSON","stringify","_","isNativeStringType","isEmptyValue","value","undefined","Array","isArray","asyncParallelArray","arr","func","callback","results","total","arrLength","count","a","asyncSerialArray","index","next","original","flattenObjArr","objArr","ret","Object","keys","k","AsyncValidationError","Error","asyncMap","option","first","pending","Promise","resolve","reject","flattenArr","firstFields","objArrKeys","objArrLength","key","indexOf","complementError","rule","oe","message","fullField","deepMerge","target","source","s","hasOwnProperty","required","options","util","messages","whitespace","test","pattern","email","url","RegExp","hex","types","integer","number","parseInt","array","regexp","date","getTime","getMonth","getYear","isNaN","object","method","match","custom","ruleType","range","min","max","spRegexp","val","num","ENUM","enumerable","join","lastIndex","mismatch","_pattern","enumRule","string","validate","rules","boolean","floatFn","dateObject","Date","any","float","enumValidator","newMessages","parse","invalid","clone","cloned","Schema","descriptor","_messages","defaultMessages","define","prototype","z","item","source_","o","oc","complete","add","concat","series","r","transform","validator","getValidationMethod","getType","errorFields","data","doIt","deep","defaultField","addFullfield","schema","cb","suppressWarning","map","fieldsSchema","fieldSchema","bind","errs","finalErrors","res","asyncValidator","then","validators","messageIndex","splice","register"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA,IAAMA,YAAY,GAAG,UAArB;AAEO,IAAIC,OAAO,GAAG,mBAAM,EAApB;;AAGP,IACE,OAAOC,OAAP,KAAmB,WAAnB,IACAA,OAAO,CAACC,GADR,IAEAD,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAFzB,IAGA,OAAOC,MAAP,KAAkB,WAHlB,IAIA,OAAOC,QAAP,KAAoB,WALtB,EAME;AACAL,EAAAA,OAAO,GAAG,iBAACM,IAAD,EAAOC,MAAP,EAAkB;AAC1B,QAAI,OAAOC,OAAP,KAAmB,WAAnB,IAAkCA,OAAO,CAACC,IAA9C,EAAoD;AAClD,UAAIF,MAAM,CAACG,KAAP,CAAa,UAAAC,CAAC;AAAA,eAAI,OAAOA,CAAP,KAAa,QAAjB;AAAA,OAAd,CAAJ,EAA8C;AAC5CH,QAAAA,OAAO,CAACC,IAAR,CAAaH,IAAb,EAAmBC,MAAnB;AACD;AACF;AACF,GAND;AAOD;;AAEM,SAASK,kBAAT,CAA4BL,MAA5B,EAAoC;AACzC,MAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAACM,MAAvB,EAA+B,OAAO,IAAP;AAC/B,MAAMC,MAAM,GAAG,EAAf;AACAP,EAAAA,MAAM,CAACQ,OAAP,CAAe,UAAAC,KAAK,EAAI;AACtB,QAAMC,KAAK,GAAGD,KAAK,CAACC,KAApB;AACAH,IAAAA,MAAM,CAACG,KAAD,CAAN,GAAgBH,MAAM,CAACG,KAAD,CAAN,IAAiB,EAAjC;AACAH,IAAAA,MAAM,CAACG,KAAD,CAAN,CAAcC,IAAd,CAAmBF,KAAnB;AACD,GAJD;AAKA,SAAOF,MAAP;AACD;AAEM,SAASK,MAAT,GAAyB;AAAA,oCAANC,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAC9B,MAAIC,CAAC,GAAG,CAAR;AACA,MAAMC,CAAC,GAAGF,IAAI,CAAC,CAAD,CAAd;AACA,MAAMG,GAAG,GAAGH,IAAI,CAACP,MAAjB;;AACA,MAAI,OAAOS,CAAP,KAAa,UAAjB,EAA6B;AAC3B,WAAOA,CAAC,CAACE,KAAF,CAAQ,IAAR,EAAcJ,IAAI,CAACK,KAAL,CAAW,CAAX,CAAd,CAAP;AACD;;AACD,MAAI,OAAOH,CAAP,KAAa,QAAjB,EAA2B;AACzB,QAAII,GAAG,GAAGC,MAAM,CAACL,CAAD,CAAN,CAAUM,OAAV,CAAkB7B,YAAlB,EAAgC,UAAA8B,CAAC,EAAI;AAC7C,UAAIA,CAAC,KAAK,IAAV,EAAgB;AACd,eAAO,GAAP;AACD;;AACD,UAAIR,CAAC,IAAIE,GAAT,EAAc;AACZ,eAAOM,CAAP;AACD;;AACD,cAAQA,CAAR;AACE,aAAK,IAAL;AACE,iBAAOF,MAAM,CAACP,IAAI,CAACC,CAAC,EAAF,CAAL,CAAb;;AACF,aAAK,IAAL;AACE,iBAAOS,MAAM,CAACV,IAAI,CAACC,CAAC,EAAF,CAAL,CAAb;;AACF,aAAK,IAAL;AACE,cAAI;AACF,mBAAOU,IAAI,CAACC,SAAL,CAAeZ,IAAI,CAACC,CAAC,EAAF,CAAnB,CAAP;AACD,WAFD,CAEE,OAAOY,CAAP,EAAU;AACV,mBAAO,YAAP;AACD;;AACD;;AACF;AACE,iBAAOJ,CAAP;AAbJ;AAeD,KAtBS,CAAV;AAuBA,WAAOH,GAAP;AACD;;AACD,SAAOJ,CAAP;AACD;;AAED,SAASY,kBAAT,CAA4B5B,IAA5B,EAAkC;AAChC,SACEA,IAAI,KAAK,QAAT,IACAA,IAAI,KAAK,KADT,IAEAA,IAAI,KAAK,KAFT,IAGAA,IAAI,KAAK,OAHT,IAIAA,IAAI,KAAK,MAJT,IAKAA,IAAI,KAAK,SANX;AAQD;;AAEM,SAAS6B,YAAT,CAAsBC,KAAtB,EAA6B9B,IAA7B,EAAmC;AACxC,MAAI8B,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAArC,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAI9B,IAAI,KAAK,OAAT,IAAoBgC,KAAK,CAACC,OAAN,CAAcH,KAAd,CAApB,IAA4C,CAACA,KAAK,CAACvB,MAAvD,EAA+D;AAC7D,WAAO,IAAP;AACD;;AACD,MAAIqB,kBAAkB,CAAC5B,IAAD,CAAlB,IAA4B,OAAO8B,KAAP,KAAiB,QAA7C,IAAyD,CAACA,KAA9D,EAAqE;AACnE,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;;AAMD,SAASI,kBAAT,CAA4BC,GAA5B,EAAiCC,IAAjC,EAAuCC,QAAvC,EAAiD;AAC/C,MAAMC,OAAO,GAAG,EAAhB;AACA,MAAIC,KAAK,GAAG,CAAZ;AACA,MAAMC,SAAS,GAAGL,GAAG,CAAC5B,MAAtB;;AAEA,WAASkC,KAAT,CAAexC,MAAf,EAAuB;AACrBqC,IAAAA,OAAO,CAAC1B,IAAR,CAAaM,KAAb,CAAmBoB,OAAnB,EAA4BrC,MAA5B;AACAsC,IAAAA,KAAK;;AACL,QAAIA,KAAK,KAAKC,SAAd,EAAyB;AACvBH,MAAAA,QAAQ,CAACC,OAAD,CAAR;AACD;AACF;;AAEDH,EAAAA,GAAG,CAAC1B,OAAJ,CAAY,UAAAiC,CAAC,EAAI;AACfN,IAAAA,IAAI,CAACM,CAAD,EAAID,KAAJ,CAAJ;AACD,GAFD;AAGD;;AAED,SAASE,gBAAT,CAA0BR,GAA1B,EAA+BC,IAA/B,EAAqCC,QAArC,EAA+C;AAC7C,MAAIO,KAAK,GAAG,CAAZ;AACA,MAAMJ,SAAS,GAAGL,GAAG,CAAC5B,MAAtB;;AAEA,WAASsC,IAAT,CAAc5C,MAAd,EAAsB;AACpB,QAAIA,MAAM,IAAIA,MAAM,CAACM,MAArB,EAA6B;AAC3B8B,MAAAA,QAAQ,CAACpC,MAAD,CAAR;AACA;AACD;;AACD,QAAM6C,QAAQ,GAAGF,KAAjB;AACAA,IAAAA,KAAK,GAAGA,KAAK,GAAG,CAAhB;;AACA,QAAIE,QAAQ,GAAGN,SAAf,EAA0B;AACxBJ,MAAAA,IAAI,CAACD,GAAG,CAACW,QAAD,CAAJ,EAAgBD,IAAhB,CAAJ;AACD,KAFD,MAEO;AACLR,MAAAA,QAAQ,CAAC,EAAD,CAAR;AACD;AACF;;AAEDQ,EAAAA,IAAI,CAAC,EAAD,CAAJ;AACD;;AAED,SAASE,aAAT,CAAuBC,MAAvB,EAA+B;AAC7B,MAAMC,GAAG,GAAG,EAAZ;AACAC,EAAAA,MAAM,CAACC,IAAP,CAAYH,MAAZ,EAAoBvC,OAApB,CAA4B,UAAA2C,CAAC,EAAI;AAC/BH,IAAAA,GAAG,CAACrC,IAAJ,CAASM,KAAT,CAAe+B,GAAf,EAAoBD,MAAM,CAACI,CAAD,CAA1B;AACD,GAFD;AAGA,SAAOH,GAAP;AACD;;IAEYI,oBAAb;AAAA;;AACE,gCAAYpD,MAAZ,EAAoBO,MAApB,EAA4B;AAAA;;AAC1B,8BAAM,wBAAN;AACA,UAAKP,MAAL,GAAcA,MAAd;AACA,UAAKO,MAAL,GAAcA,MAAd;AAH0B;AAI3B;;AALH;AAAA,iCAA0C8C,KAA1C;AAQO,SAASC,QAAT,CAAkBP,MAAlB,EAA0BQ,MAA1B,EAAkCpB,IAAlC,EAAwCC,QAAxC,EAAkD;AACvD,MAAImB,MAAM,CAACC,KAAX,EAAkB;AAChB,QAAMC,QAAO,GAAG,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC/C,UAAMhB,IAAI,GAAG,SAAPA,IAAO,CAAA5C,MAAM,EAAI;AACrBoC,QAAAA,QAAQ,CAACpC,MAAD,CAAR;AACA,eAAOA,MAAM,CAACM,MAAP,GACHsD,MAAM,CAAC,IAAIR,oBAAJ,CAAyBpD,MAAzB,EAAiCK,kBAAkB,CAACL,MAAD,CAAnD,CAAD,CADH,GAEH2D,OAAO,EAFX;AAGD,OALD;;AAMA,UAAME,UAAU,GAAGf,aAAa,CAACC,MAAD,CAAhC;AACAL,MAAAA,gBAAgB,CAACmB,UAAD,EAAa1B,IAAb,EAAmBS,IAAnB,CAAhB;AACD,KATe,CAAhB;;AAUAa,IAAAA,QAAO,SAAP,CAAc,UAAArD,CAAC;AAAA,aAAIA,CAAJ;AAAA,KAAf;;AACA,WAAOqD,QAAP;AACD;;AACD,MAAIK,WAAW,GAAGP,MAAM,CAACO,WAAP,IAAsB,EAAxC;;AACA,MAAIA,WAAW,KAAK,IAApB,EAA0B;AACxBA,IAAAA,WAAW,GAAGb,MAAM,CAACC,IAAP,CAAYH,MAAZ,CAAd;AACD;;AACD,MAAMgB,UAAU,GAAGd,MAAM,CAACC,IAAP,CAAYH,MAAZ,CAAnB;AACA,MAAMiB,YAAY,GAAGD,UAAU,CAACzD,MAAhC;AACA,MAAIgC,KAAK,GAAG,CAAZ;AACA,MAAMD,OAAO,GAAG,EAAhB;AACA,MAAMoB,OAAO,GAAG,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAC/C,QAAMhB,IAAI,GAAG,SAAPA,IAAO,CAAA5C,MAAM,EAAI;AACrBqC,MAAAA,OAAO,CAAC1B,IAAR,CAAaM,KAAb,CAAmBoB,OAAnB,EAA4BrC,MAA5B;AACAsC,MAAAA,KAAK;;AACL,UAAIA,KAAK,KAAK0B,YAAd,EAA4B;AAC1B5B,QAAAA,QAAQ,CAACC,OAAD,CAAR;AACA,eAAOA,OAAO,CAAC/B,MAAR,GACHsD,MAAM,CACJ,IAAIR,oBAAJ,CAAyBf,OAAzB,EAAkChC,kBAAkB,CAACgC,OAAD,CAApD,CADI,CADH,GAIHsB,OAAO,EAJX;AAKD;AACF,KAXD;;AAYA,QAAI,CAACI,UAAU,CAACzD,MAAhB,EAAwB;AACtB8B,MAAAA,QAAQ,CAACC,OAAD,CAAR;AACAsB,MAAAA,OAAO;AACR;;AACDI,IAAAA,UAAU,CAACvD,OAAX,CAAmB,UAAAyD,GAAG,EAAI;AACxB,UAAM/B,GAAG,GAAGa,MAAM,CAACkB,GAAD,CAAlB;;AACA,UAAIH,WAAW,CAACI,OAAZ,CAAoBD,GAApB,MAA6B,CAAC,CAAlC,EAAqC;AACnCvB,QAAAA,gBAAgB,CAACR,GAAD,EAAMC,IAAN,EAAYS,IAAZ,CAAhB;AACD,OAFD,MAEO;AACLX,QAAAA,kBAAkB,CAACC,GAAD,EAAMC,IAAN,EAAYS,IAAZ,CAAlB;AACD;AACF,KAPD;AAQD,GAzBe,CAAhB;AA0BAa,EAAAA,OAAO,SAAP,CAAc,UAAArD,CAAC;AAAA,WAAIA,CAAJ;AAAA,GAAf;AACA,SAAOqD,OAAP;AACD;AAEM,SAASU,eAAT,CAAyBC,IAAzB,EAA+B;AACpC,SAAO,UAAAC,EAAE,EAAI;AACX,QAAIA,EAAE,IAAIA,EAAE,CAACC,OAAb,EAAsB;AACpBD,MAAAA,EAAE,CAAC3D,KAAH,GAAW2D,EAAE,CAAC3D,KAAH,IAAY0D,IAAI,CAACG,SAA5B;AACA,aAAOF,EAAP;AACD;;AACD,WAAO;AACLC,MAAAA,OAAO,EAAE,OAAOD,EAAP,KAAc,UAAd,GAA2BA,EAAE,EAA7B,GAAkCA,EADtC;AAEL3D,MAAAA,KAAK,EAAE2D,EAAE,CAAC3D,KAAH,IAAY0D,IAAI,CAACG;AAFnB,KAAP;AAID,GATD;AAUD;AAEM,SAASC,SAAT,CAAmBC,MAAnB,EAA2BC,MAA3B,EAAmC;AACxC,MAAIA,MAAJ,EAAY;AACV,SAAK,IAAMC,CAAX,IAAgBD,MAAhB,EAAwB;AACtB,UAAIA,MAAM,CAACE,cAAP,CAAsBD,CAAtB,CAAJ,EAA8B;AAC5B,YAAM9C,KAAK,GAAG6C,MAAM,CAACC,CAAD,CAApB;;AACA,YAAI,OAAO9C,KAAP,KAAiB,QAAjB,IAA6B,OAAO4C,MAAM,CAACE,CAAD,CAAb,KAAqB,QAAtD,EAAgE;AAC9DF,UAAAA,MAAM,CAACE,CAAD,CAAN,yBACKF,MAAM,CAACE,CAAD,CADX,GAEK9C,KAFL;AAID,SALD,MAKO;AACL4C,UAAAA,MAAM,CAACE,CAAD,CAAN,GAAY9C,KAAZ;AACD;AACF;AACF;AACF;;AACD,SAAO4C,MAAP;AACD;;AC1OD;;;;;;;;;;;;AAWA,SAASI,QAAT,CAAkBT,IAAlB,EAAwBvC,KAAxB,EAA+B6C,MAA/B,EAAuC1E,MAAvC,EAA+C8E,OAA/C,EAAwD/E,IAAxD,EAA8D;AAC5D,MACEqE,IAAI,CAACS,QAAL,KACC,CAACH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CAAD,IACCqE,YAAA,CAAkBlD,KAAlB,EAAyB9B,IAAI,IAAIqE,IAAI,CAACrE,IAAtC,CAFF,CADF,EAIE;AACAC,IAAAA,MAAM,CAACW,IAAP,CAAYoE,MAAA,CAAYD,OAAO,CAACE,QAAR,CAAiBH,QAA7B,EAAuCT,IAAI,CAACG,SAA5C,CAAZ;AACD;AACF;;ACnBD;;;;;;;;;;;;AAWA,SAASU,UAAT,CAAoBb,IAApB,EAA0BvC,KAA1B,EAAiC6C,MAAjC,EAAyC1E,MAAzC,EAAiD8E,OAAjD,EAA0D;AACxD,MAAI,QAAQI,IAAR,CAAarD,KAAb,KAAuBA,KAAK,KAAK,EAArC,EAAyC;AACvC7B,IAAAA,MAAM,CAACW,IAAP,CAAYoE,MAAA,CAAYD,OAAO,CAACE,QAAR,CAAiBC,UAA7B,EAAyCb,IAAI,CAACG,SAA9C,CAAZ;AACD;AACF;;ACdD;;AAEA,IAAMY,OAAO,GAAG;AACd;AACAC,EAAAA,KAAK,EAAE,wJAFO;AAGdC,EAAAA,GAAG,EAAE,IAAIC,MAAJ,CACH,gZADG,EAEH,GAFG,CAHS;AAOdC,EAAAA,GAAG,EAAE;AAPS,CAAhB;AAUA,IAAMC,KAAK,GAAG;AACZC,EAAAA,OADY,mBACJ5D,KADI,EACG;AACb,WAAO2D,KAAK,CAACE,MAAN,CAAa7D,KAAb,KAAuB8D,QAAQ,CAAC9D,KAAD,EAAQ,EAAR,CAAR,KAAwBA,KAAtD;AACD,GAHW;AAAA,0BAINA,KAJM,EAIC;AACX,WAAO2D,KAAK,CAACE,MAAN,CAAa7D,KAAb,KAAuB,CAAC2D,KAAK,CAACC,OAAN,CAAc5D,KAAd,CAA/B;AACD,GANW;AAOZ+D,EAAAA,KAPY,iBAON/D,KAPM,EAOC;AACX,WAAOE,KAAK,CAACC,OAAN,CAAcH,KAAd,CAAP;AACD,GATW;AAUZgE,EAAAA,MAVY,kBAULhE,KAVK,EAUE;AACZ,QAAIA,KAAK,YAAYyD,MAArB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AACD,QAAI;AACF,aAAO,CAAC,CAAC,IAAIA,MAAJ,CAAWzD,KAAX,CAAT;AACD,KAFD,CAEE,OAAOzB,CAAP,EAAU;AACV,aAAO,KAAP;AACD;AACF,GAnBW;AAoBZ0F,EAAAA,IApBY,gBAoBPjE,KApBO,EAoBA;AACV,WACE,OAAOA,KAAK,CAACkE,OAAb,KAAyB,UAAzB,IACA,OAAOlE,KAAK,CAACmE,QAAb,KAA0B,UAD1B,IAEA,OAAOnE,KAAK,CAACoE,OAAb,KAAyB,UAFzB,IAGA,CAACC,KAAK,CAACrE,KAAK,CAACkE,OAAN,EAAD,CAJR;AAMD,GA3BW;AA4BZL,EAAAA,MA5BY,kBA4BL7D,KA5BK,EA4BE;AACZ,QAAIqE,KAAK,CAACrE,KAAD,CAAT,EAAkB;AAChB,aAAO,KAAP;AACD;;AACD,WAAO,OAAOA,KAAP,KAAiB,QAAxB;AACD,GAjCW;AAkCZsE,EAAAA,MAlCY,kBAkCLtE,KAlCK,EAkCE;AACZ,WAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAAC2D,KAAK,CAACI,KAAN,CAAY/D,KAAZ,CAArC;AACD,GApCW;AAqCZuE,EAAAA,MArCY,kBAqCLvE,KArCK,EAqCE;AACZ,WAAO,OAAOA,KAAP,KAAiB,UAAxB;AACD,GAvCW;AAwCZuD,EAAAA,KAxCY,iBAwCNvD,KAxCM,EAwCC;AACX,WACE,OAAOA,KAAP,KAAiB,QAAjB,IACA,CAAC,CAACA,KAAK,CAACwE,KAAN,CAAYlB,OAAO,CAACC,KAApB,CADF,IAEAvD,KAAK,CAACvB,MAAN,GAAe,GAHjB;AAKD,GA9CW;AA+CZ+E,EAAAA,GA/CY,eA+CRxD,KA/CQ,EA+CD;AACT,WAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAAC,CAACA,KAAK,CAACwE,KAAN,CAAYlB,OAAO,CAACE,GAApB,CAAtC;AACD,GAjDW;AAkDZE,EAAAA,GAlDY,eAkDR1D,KAlDQ,EAkDD;AACT,WAAO,OAAOA,KAAP,KAAiB,QAAjB,IAA6B,CAAC,CAACA,KAAK,CAACwE,KAAN,CAAYlB,OAAO,CAACI,GAApB,CAAtC;AACD;AApDW,CAAd;AAuDA;;;;;;;;;;;;AAWA,SAASxF,IAAT,CAAcqE,IAAd,EAAoBvC,KAApB,EAA2B6C,MAA3B,EAAmC1E,MAAnC,EAA2C8E,OAA3C,EAAoD;AAClD,MAAIV,IAAI,CAACS,QAAL,IAAiBhD,KAAK,KAAKC,SAA/B,EAA0C;AACxC+C,IAAAA,QAAQ,CAACT,IAAD,EAAOvC,KAAP,EAAc6C,MAAd,EAAsB1E,MAAtB,EAA8B8E,OAA9B,CAAR;AACA;AACD;;AACD,MAAMwB,MAAM,GAAG,CACb,SADa,EAEb,OAFa,EAGb,OAHa,EAIb,QAJa,EAKb,QALa,EAMb,QANa,EAOb,OAPa,EAQb,QARa,EASb,MATa,EAUb,KAVa,EAWb,KAXa,CAAf;AAaA,MAAMC,QAAQ,GAAGnC,IAAI,CAACrE,IAAtB;;AACA,MAAIuG,MAAM,CAACpC,OAAP,CAAeqC,QAAf,IAA2B,CAAC,CAAhC,EAAmC;AACjC,QAAI,CAACf,KAAK,CAACe,QAAD,CAAL,CAAgB1E,KAAhB,CAAL,EAA6B;AAC3B7B,MAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CACED,OAAO,CAACE,QAAR,CAAiBQ,KAAjB,CAAuBe,QAAvB,CADF,EAEEnC,IAAI,CAACG,SAFP,EAGEH,IAAI,CAACrE,IAHP,CADF;AAOD,KATgC;;AAWlC,GAXD,MAWO,IAAIwG,QAAQ,IAAI,OAAO1E,KAAP,KAAiBuC,IAAI,CAACrE,IAAtC,EAA4C;AACjDC,IAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CAAYD,OAAO,CAACE,QAAR,CAAiBQ,KAAjB,CAAuBe,QAAvB,CAAZ,EAA8CnC,IAAI,CAACG,SAAnD,EAA8DH,IAAI,CAACrE,IAAnE,CADF;AAGD;AACF;;AClHD;;;;;;;;;;;;AAWA,SAASyG,KAAT,CAAepC,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C,EAAqD;AACnD,MAAM9D,GAAG,GAAG,OAAOoD,IAAI,CAACpD,GAAZ,KAAoB,QAAhC;AACA,MAAMyF,GAAG,GAAG,OAAOrC,IAAI,CAACqC,GAAZ,KAAoB,QAAhC;AACA,MAAMC,GAAG,GAAG,OAAOtC,IAAI,CAACsC,GAAZ,KAAoB,QAAhC,CAHmD;;AAKnD,MAAMC,QAAQ,GAAG,iCAAjB;AACA,MAAIC,GAAG,GAAG/E,KAAV;AACA,MAAIoC,GAAG,GAAG,IAAV;AACA,MAAM4C,GAAG,GAAG,OAAOhF,KAAP,KAAiB,QAA7B;AACA,MAAMV,GAAG,GAAG,OAAOU,KAAP,KAAiB,QAA7B;AACA,MAAMK,GAAG,GAAGH,KAAK,CAACC,OAAN,CAAcH,KAAd,CAAZ;;AACA,MAAIgF,GAAJ,EAAS;AACP5C,IAAAA,GAAG,GAAG,QAAN;AACD,GAFD,MAEO,IAAI9C,GAAJ,EAAS;AACd8C,IAAAA,GAAG,GAAG,QAAN;AACD,GAFM,MAEA,IAAI/B,GAAJ,EAAS;AACd+B,IAAAA,GAAG,GAAG,OAAN;AACD,GAjBkD;AAmBnD;AACA;;;AACA,MAAI,CAACA,GAAL,EAAU;AACR,WAAO,KAAP;AACD;;AACD,MAAI/B,GAAJ,EAAS;AACP0E,IAAAA,GAAG,GAAG/E,KAAK,CAACvB,MAAZ;AACD;;AACD,MAAIa,GAAJ,EAAS;AACP;AACAyF,IAAAA,GAAG,GAAG/E,KAAK,CAACR,OAAN,CAAcsF,QAAd,EAAwB,GAAxB,EAA6BrG,MAAnC;AACD;;AACD,MAAIU,GAAJ,EAAS;AACP,QAAI4F,GAAG,KAAKxC,IAAI,CAACpD,GAAjB,EAAsB;AACpBhB,MAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CAAYD,OAAO,CAACE,QAAR,CAAiBf,GAAjB,EAAsBjD,GAAlC,EAAuCoD,IAAI,CAACG,SAA5C,EAAuDH,IAAI,CAACpD,GAA5D,CADF;AAGD;AACF,GAND,MAMO,IAAIyF,GAAG,IAAI,CAACC,GAAR,IAAeE,GAAG,GAAGxC,IAAI,CAACqC,GAA9B,EAAmC;AACxCzG,IAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CAAYD,OAAO,CAACE,QAAR,CAAiBf,GAAjB,EAAsBwC,GAAlC,EAAuCrC,IAAI,CAACG,SAA5C,EAAuDH,IAAI,CAACqC,GAA5D,CADF;AAGD,GAJM,MAIA,IAAIC,GAAG,IAAI,CAACD,GAAR,IAAeG,GAAG,GAAGxC,IAAI,CAACsC,GAA9B,EAAmC;AACxC1G,IAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CAAYD,OAAO,CAACE,QAAR,CAAiBf,GAAjB,EAAsByC,GAAlC,EAAuCtC,IAAI,CAACG,SAA5C,EAAuDH,IAAI,CAACsC,GAA5D,CADF;AAGD,GAJM,MAIA,IAAID,GAAG,IAAIC,GAAP,KAAeE,GAAG,GAAGxC,IAAI,CAACqC,GAAX,IAAkBG,GAAG,GAAGxC,IAAI,CAACsC,GAA5C,CAAJ,EAAsD;AAC3D1G,IAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CACED,OAAO,CAACE,QAAR,CAAiBf,GAAjB,EAAsBuC,KADxB,EAEEpC,IAAI,CAACG,SAFP,EAGEH,IAAI,CAACqC,GAHP,EAIErC,IAAI,CAACsC,GAJP,CADF;AAQD;AACF;;AClED,IAAMI,IAAI,GAAG,MAAb;AAEA;;;;;;;;;;;;AAWA,SAASC,UAAT,CAAoB3C,IAApB,EAA0BvC,KAA1B,EAAiC6C,MAAjC,EAAyC1E,MAAzC,EAAiD8E,OAAjD,EAA0D;AACxDV,EAAAA,IAAI,CAAC0C,IAAD,CAAJ,GAAa/E,KAAK,CAACC,OAAN,CAAcoC,IAAI,CAAC0C,IAAD,CAAlB,IAA4B1C,IAAI,CAAC0C,IAAD,CAAhC,GAAyC,EAAtD;;AACA,MAAI1C,IAAI,CAAC0C,IAAD,CAAJ,CAAW5C,OAAX,CAAmBrC,KAAnB,MAA8B,CAAC,CAAnC,EAAsC;AACpC7B,IAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CACED,OAAO,CAACE,QAAR,CAAiB8B,IAAjB,CADF,EAEE1C,IAAI,CAACG,SAFP,EAGEH,IAAI,CAAC0C,IAAD,CAAJ,CAAWE,IAAX,CAAgB,IAAhB,CAHF,CADF;AAOD;AACF;;ACxBD;;;;;;;;;;;;AAWA,SAAS7B,SAAT,CAAiBf,IAAjB,EAAuBvC,KAAvB,EAA8B6C,MAA9B,EAAsC1E,MAAtC,EAA8C8E,OAA9C,EAAuD;AACrD,MAAIV,IAAI,CAACe,OAAT,EAAkB;AAChB,QAAIf,IAAI,CAACe,OAAL,YAAwBG,MAA5B,EAAoC;AAClC;AACA;AACA;AACAlB,MAAAA,IAAI,CAACe,OAAL,CAAa8B,SAAb,GAAyB,CAAzB;;AACA,UAAI,CAAC7C,IAAI,CAACe,OAAL,CAAaD,IAAb,CAAkBrD,KAAlB,CAAL,EAA+B;AAC7B7B,QAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CACED,OAAO,CAACE,QAAR,CAAiBG,OAAjB,CAAyB+B,QAD3B,EAEE9C,IAAI,CAACG,SAFP,EAGE1C,KAHF,EAIEuC,IAAI,CAACe,OAJP,CADF;AAQD;AACF,KAfD,MAeO,IAAI,OAAOf,IAAI,CAACe,OAAZ,KAAwB,QAA5B,EAAsC;AAC3C,UAAMgC,QAAQ,GAAG,IAAI7B,MAAJ,CAAWlB,IAAI,CAACe,OAAhB,CAAjB;;AACA,UAAI,CAACgC,QAAQ,CAACjC,IAAT,CAAcrD,KAAd,CAAL,EAA2B;AACzB7B,QAAAA,MAAM,CAACW,IAAP,CACEoE,MAAA,CACED,OAAO,CAACE,QAAR,CAAiBG,OAAjB,CAAyB+B,QAD3B,EAEE9C,IAAI,CAACG,SAFP,EAGE1C,KAHF,EAIEuC,IAAI,CAACe,OAJP,CADF;AAQD;AACF;AACF;AACF;;ACrCD,YAAe;AACbN,EAAAA,QAAQ,EAARA,QADa;AAEbI,EAAAA,UAAU,EAAVA,UAFa;AAGblF,EAAAA,IAAI,EAAJA,IAHa;AAIbyG,EAAAA,KAAK,EAALA,KAJa;AAKb,UAAMY,UALO;AAMbjC,EAAAA,OAAO,EAAPA;AANa,CAAf;;ACJA;;;;;;;;;;;AAUA,SAASkC,MAAT,CAAgBjD,IAAhB,EAAsBvC,KAAtB,EAA6BO,QAA7B,EAAuCsC,MAAvC,EAA+CI,OAA/C,EAAwD;AACtD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,EAAQ,QAAR,CAAZ,IAAiC,CAACuC,IAAI,CAACS,QAA3C,EAAqD;AACnD,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C,EAAqD,QAArD;;AACA,QAAI,CAAClD,YAAY,CAACC,KAAD,EAAQ,QAAR,CAAjB,EAAoC;AAClC0F,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACAyC,MAAAA,KAAK,CAACf,KAAN,CAAYpC,IAAZ,EAAkBvC,KAAlB,EAAyB6C,MAAzB,EAAiC1E,MAAjC,EAAyC8E,OAAzC;AACAyC,MAAAA,KAAK,CAACpC,OAAN,CAAcf,IAAd,EAAoBvC,KAApB,EAA2B6C,MAA3B,EAAmC1E,MAAnC,EAA2C8E,OAA3C;;AACA,UAAIV,IAAI,CAACa,UAAL,KAAoB,IAAxB,EAA8B;AAC5BsC,QAAAA,KAAK,CAACtC,UAAN,CAAiBb,IAAjB,EAAuBvC,KAAvB,EAA8B6C,MAA9B,EAAsC1E,MAAtC,EAA8C8E,OAA9C;AACD;AACF;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;AC7BD;;;;;;;;;;;AAUA,SAASoG,MAAT,CAAgBhC,IAAhB,EAAsBvC,KAAtB,EAA6BO,QAA7B,EAAuCsC,MAAvC,EAA+CI,OAA/C,EAAwD;AACtD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACxBD;;;;;;;;;;;AAUA,SAAS0F,MAAT,CAAgBtB,IAAhB,EAAsBvC,KAAtB,EAA6BO,QAA7B,EAAuCsC,MAAvC,EAA+CI,OAA/C,EAAwD;AACtD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAIzF,KAAK,KAAK,EAAd,EAAkB;AAChBA,MAAAA,KAAK,GAAGC,SAAR;AACD;;AACD,QAAIF,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACAyC,MAAAA,KAAK,CAACf,KAAN,CAAYpC,IAAZ,EAAkBvC,KAAlB,EAAyB6C,MAAzB,EAAiC1E,MAAjC,EAAyC8E,OAAzC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;AC5BD;;;;;;;;;;;AAUA,SAASwH,QAAT,CAAiBpD,IAAjB,EAAuBvC,KAAvB,EAA8BO,QAA9B,EAAwCsC,MAAxC,EAAgDI,OAAhD,EAAyD;AACvD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACxBD;;;;;;;;;;;AAUA,SAAS6F,MAAT,CAAgBzB,IAAhB,EAAsBvC,KAAtB,EAA6BO,QAA7B,EAAuCsC,MAAvC,EAA+CI,OAA/C,EAAwD;AACtD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAI,CAAClD,YAAY,CAACC,KAAD,CAAjB,EAA0B;AACxB0F,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACxBD;;;;;;;;;;;AAUA,SAASyF,OAAT,CAAiBrB,IAAjB,EAAuBvC,KAAvB,EAA8BO,QAA9B,EAAwCsC,MAAxC,EAAgDI,OAAhD,EAAyD;AACvD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACAyC,MAAAA,KAAK,CAACf,KAAN,CAAYpC,IAAZ,EAAkBvC,KAAlB,EAAyB6C,MAAzB,EAAiC1E,MAAjC,EAAyC8E,OAAzC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACzBD;;;;;;;;;;;AAUA,SAASyH,OAAT,CAAiBrD,IAAjB,EAAuBvC,KAAvB,EAA8BO,QAA9B,EAAwCsC,MAAxC,EAAgDI,OAAhD,EAAyD;AACvD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACAyC,MAAAA,KAAK,CAACf,KAAN,CAAYpC,IAAZ,EAAkBvC,KAAlB,EAAyB6C,MAAzB,EAAiC1E,MAAjC,EAAyC8E,OAAzC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;AC1BD;;;;;;;;;;;AAUA,SAAS4F,KAAT,CAAexB,IAAf,EAAqBvC,KAArB,EAA4BO,QAA5B,EAAsCsC,MAAtC,EAA8CI,OAA9C,EAAuD;AACrD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI,CAACzF,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAAlC,KAA2C,CAACuC,IAAI,CAACS,QAArD,EAA+D;AAC7D,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C,EAAqD,OAArD;;AACA,QAAIjD,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAArC,EAA2C;AACzC0F,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACAyC,MAAAA,KAAK,CAACf,KAAN,CAAYpC,IAAZ,EAAkBvC,KAAlB,EAAyB6C,MAAzB,EAAiC1E,MAAjC,EAAyC8E,OAAzC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACxBD;;;;;;;;;;;AAUA,SAASmG,MAAT,CAAgB/B,IAAhB,EAAsBvC,KAAtB,EAA6BO,QAA7B,EAAuCsC,MAAvC,EAA+CI,OAA/C,EAAwD;AACtD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACxBD,IAAM8G,MAAI,GAAG,MAAb;AAEA;;;;;;;;;;;AAUA,SAASC,YAAT,CAAoB3C,IAApB,EAA0BvC,KAA1B,EAAiCO,QAAjC,EAA2CsC,MAA3C,EAAmDI,OAAnD,EAA4D;AAC1D,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAIjD,KAAK,KAAKC,SAAd,EAAyB;AACvByF,MAAAA,KAAK,CAACT,MAAD,CAAL,CAAY1C,IAAZ,EAAkBvC,KAAlB,EAAyB6C,MAAzB,EAAiC1E,MAAjC,EAAyC8E,OAAzC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;AC1BD;;;;;;;;;;;;;;AAaA,SAASmF,SAAT,CAAiBf,IAAjB,EAAuBvC,KAAvB,EAA8BO,QAA9B,EAAwCsC,MAAxC,EAAgDI,OAAhD,EAAyD;AACvD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,EAAQ,QAAR,CAAZ,IAAiC,CAACuC,IAAI,CAACS,QAA3C,EAAqD;AACnD,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAI,CAAClD,YAAY,CAACC,KAAD,EAAQ,QAAR,CAAjB,EAAoC;AAClC0F,MAAAA,KAAK,CAACpC,OAAN,CAAcf,IAAd,EAAoBvC,KAApB,EAA2B6C,MAA3B,EAAmC1E,MAAnC,EAA2C8E,OAA3C;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;AC3BD,SAAS8F,IAAT,CAAc1B,IAAd,EAAoBvC,KAApB,EAA2BO,QAA3B,EAAqCsC,MAArC,EAA6CI,OAA7C,EAAsD;AACpD;AACA,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC,CAHoD;;AAMpD,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,EAAQ,MAAR,CAAZ,IAA+B,CAACuC,IAAI,CAACS,QAAzC,EAAmD;AACjD,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;;AACA,QAAI,CAAClD,YAAY,CAACC,KAAD,EAAQ,MAAR,CAAjB,EAAkC;AAChC,UAAI6F,UAAJ;;AAEA,UAAI7F,KAAK,YAAY8F,IAArB,EAA2B;AACzBD,QAAAA,UAAU,GAAG7F,KAAb;AACD,OAFD,MAEO;AACL6F,QAAAA,UAAU,GAAG,IAAIC,IAAJ,CAAS9F,KAAT,CAAb;AACD;;AAED0F,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBsD,UAAjB,EAA6BhD,MAA7B,EAAqC1E,MAArC,EAA6C8E,OAA7C;;AACA,UAAI4C,UAAJ,EAAgB;AACdH,QAAAA,KAAK,CAACf,KAAN,CAAYpC,IAAZ,EAAkBsD,UAAU,CAAC3B,OAAX,EAAlB,EAAwCrB,MAAxC,EAAgD1E,MAAhD,EAAwD8E,OAAxD;AACD;AACF;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;AC5BD,SAAS6E,UAAT,CAAkBT,IAAlB,EAAwBvC,KAAxB,EAA+BO,QAA/B,EAAyCsC,MAAzC,EAAiDI,OAAjD,EAA0D;AACxD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMD,IAAI,GAAGgC,KAAK,CAACC,OAAN,CAAcH,KAAd,IAAuB,OAAvB,GAAiC,OAAOA,KAArD;AACA0F,EAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C,EAAqD/E,IAArD;AACAqC,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACJD,SAASD,MAAT,CAAcqE,IAAd,EAAoBvC,KAApB,EAA2BO,QAA3B,EAAqCsC,MAArC,EAA6CI,OAA7C,EAAsD;AACpD,MAAMyB,QAAQ,GAAGnC,IAAI,CAACrE,IAAtB;AACA,MAAMC,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,EAAQ0E,QAAR,CAAZ,IAAiC,CAACnC,IAAI,CAACS,QAA3C,EAAqD;AACnD,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C,EAAqDyB,QAArD;;AACA,QAAI,CAAC3E,YAAY,CAACC,KAAD,EAAQ0E,QAAR,CAAjB,EAAoC;AAClCgB,MAAAA,KAAK,CAACxH,IAAN,CAAWqE,IAAX,EAAiBvC,KAAjB,EAAwB6C,MAAxB,EAAgC1E,MAAhC,EAAwC8E,OAAxC;AACD;AACF;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACfD;;;;;;;;;;;AAUA,SAAS4H,GAAT,CAAaxD,IAAb,EAAmBvC,KAAnB,EAA0BO,QAA1B,EAAoCsC,MAApC,EAA4CI,OAA5C,EAAqD;AACnD,MAAM9E,MAAM,GAAG,EAAf;AACA,MAAMsH,QAAQ,GACZlD,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkBH,MAAM,CAACE,cAAP,CAAsBR,IAAI,CAAC1D,KAA3B,CADtC;;AAEA,MAAI4G,QAAJ,EAAc;AACZ,QAAI1F,YAAY,CAACC,KAAD,CAAZ,IAAuB,CAACuC,IAAI,CAACS,QAAjC,EAA2C;AACzC,aAAOzC,QAAQ,EAAf;AACD;;AACDmF,IAAAA,KAAK,CAAC1C,QAAN,CAAeT,IAAf,EAAqBvC,KAArB,EAA4B6C,MAA5B,EAAoC1E,MAApC,EAA4C8E,OAA5C;AACD;;AACD1C,EAAAA,QAAQ,CAACpC,MAAD,CAAR;AACD;;ACRD,iBAAe;AACbqH,EAAAA,MAAM,EAANA,MADa;AAEbjB,EAAAA,MAAM,EAANA,MAFa;AAGbV,EAAAA,MAAM,EAANA,MAHa;AAIb,aAAA8B,QAJa;AAKb3B,EAAAA,MAAM,EAANA,MALa;AAMbJ,EAAAA,OAAO,EAAPA,OANa;AAOb,WAAAoC,OAPa;AAQbjC,EAAAA,KAAK,EAALA,KARa;AASbO,EAAAA,MAAM,EAANA,MATa;AAUb,UAAM2B,YAVO;AAWb3C,EAAAA,OAAO,EAAPA,SAXa;AAYbW,EAAAA,IAAI,EAAJA,IAZa;AAabT,EAAAA,GAAG,EAAEtF,MAbQ;AAcbwF,EAAAA,GAAG,EAAExF,MAdQ;AAebqF,EAAAA,KAAK,EAAErF,MAfM;AAgBb8E,EAAAA,QAAQ,EAARA,UAhBa;AAiBb+C,EAAAA,GAAG,EAAHA;AAjBa,CAAf;;AChBO,SAASG,WAAT,GAAuB;AAC5B,SAAO;AACL,eAAS,8BADJ;AAELlD,IAAAA,QAAQ,EAAE,gBAFL;AAGL,YAAM,sBAHD;AAILI,IAAAA,UAAU,EAAE,oBAJP;AAKLa,IAAAA,IAAI,EAAE;AACJlF,MAAAA,MAAM,EAAE,qCADJ;AAEJoH,MAAAA,KAAK,EAAE,6CAFH;AAGJC,MAAAA,OAAO,EAAE;AAHL,KALD;AAULzC,IAAAA,KAAK,EAAE;AACL6B,MAAAA,MAAM,EAAE,gBADH;AAELjB,MAAAA,MAAM,EAAE,2BAFH;AAGLR,MAAAA,KAAK,EAAE,iBAHF;AAILO,MAAAA,MAAM,EAAE,iBAJH;AAKLT,MAAAA,MAAM,EAAE,gBALH;AAMLI,MAAAA,IAAI,EAAE,gBAND;AAOL,iBAAS,gBAPJ;AAQLL,MAAAA,OAAO,EAAE,iBARJ;AASL,eAAO,gBATF;AAULI,MAAAA,MAAM,EAAE,sBAVH;AAWLT,MAAAA,KAAK,EAAE,sBAXF;AAYLC,MAAAA,GAAG,EAAE,sBAZA;AAaLE,MAAAA,GAAG,EAAE;AAbA,KAVF;AAyBL8B,IAAAA,MAAM,EAAE;AACNrG,MAAAA,GAAG,EAAE,kCADC;AAENyF,MAAAA,GAAG,EAAE,mCAFC;AAGNC,MAAAA,GAAG,EAAE,wCAHC;AAINF,MAAAA,KAAK,EAAE;AAJD,KAzBH;AA+BLd,IAAAA,MAAM,EAAE;AACN1E,MAAAA,GAAG,EAAE,kBADC;AAENyF,MAAAA,GAAG,EAAE,2BAFC;AAGNC,MAAAA,GAAG,EAAE,8BAHC;AAINF,MAAAA,KAAK,EAAE;AAJD,KA/BH;AAqCLZ,IAAAA,KAAK,EAAE;AACL5E,MAAAA,GAAG,EAAE,iCADA;AAELyF,MAAAA,GAAG,EAAE,qCAFA;AAGLC,MAAAA,GAAG,EAAE,wCAHA;AAILF,MAAAA,KAAK,EAAE;AAJF,KArCF;AA2CLrB,IAAAA,OAAO,EAAE;AACP+B,MAAAA,QAAQ,EAAE;AADH,KA3CJ;AA8CLgB,IAAAA,KA9CK,mBA8CG;AACN,UAAMC,MAAM,GAAG3G,IAAI,CAACwG,KAAL,CAAWxG,IAAI,CAACC,SAAL,CAAe,IAAf,CAAX,CAAf;AACA0G,MAAAA,MAAM,CAACD,KAAP,GAAe,KAAKA,KAApB;AACA,aAAOC,MAAP;AACD;AAlDI,GAAP;AAoDD;AAED,AAAO,IAAMnD,QAAQ,GAAG+C,WAAW,EAA5B;;AC5CP;;;;;;;AAMA,SAASK,MAAT,CAAgBC,UAAhB,EAA4B;AAC1B,OAAKd,KAAL,GAAa,IAAb;AACA,OAAKe,SAAL,GAAiBC,QAAjB;AACA,OAAKC,MAAL,CAAYH,UAAZ;AACD;;AAEDD,MAAM,CAACK,SAAP,GAAmB;AACjBzD,EAAAA,QADiB,oBACRA,SADQ,EACE;AACjB,QAAIA,SAAJ,EAAc;AACZ,WAAKsD,SAAL,GAAiB9D,SAAS,CAACuD,WAAW,EAAZ,EAAgB/C,SAAhB,CAA1B;AACD;;AACD,WAAO,KAAKsD,SAAZ;AACD,GANgB;AAOjBE,EAAAA,MAPiB,kBAOVjB,KAPU,EAOH;AACZ,QAAI,CAACA,KAAL,EAAY;AACV,YAAM,IAAIlE,KAAJ,CAAU,yCAAV,CAAN;AACD;;AACD,QAAI,OAAOkE,KAAP,KAAiB,QAAjB,IAA6BxF,KAAK,CAACC,OAAN,CAAcuF,KAAd,CAAjC,EAAuD;AACrD,YAAM,IAAIlE,KAAJ,CAAU,yBAAV,CAAN;AACD;;AACD,SAAKkE,KAAL,GAAa,EAAb;AACA,QAAImB,CAAJ;AACA,QAAIC,IAAJ;;AACA,SAAKD,CAAL,IAAUnB,KAAV,EAAiB;AACf,UAAIA,KAAK,CAAC3C,cAAN,CAAqB8D,CAArB,CAAJ,EAA6B;AAC3BC,QAAAA,IAAI,GAAGpB,KAAK,CAACmB,CAAD,CAAZ;AACA,aAAKnB,KAAL,CAAWmB,CAAX,IAAgB3G,KAAK,CAACC,OAAN,CAAc2G,IAAd,IAAsBA,IAAtB,GAA6B,CAACA,IAAD,CAA7C;AACD;AACF;AACF,GAvBgB;AAwBjBrB,EAAAA,QAxBiB,oBAwBRsB,OAxBQ,EAwBCC,CAxBD,EAwBSC,EAxBT,EAwBwB;AAAA;;AAAA,QAAvBD,CAAuB;AAAvBA,MAAAA,CAAuB,GAAnB,EAAmB;AAAA;;AAAA,QAAfC,EAAe;AAAfA,MAAAA,EAAe,GAAV,cAAM,EAAI;AAAA;;AACvC,QAAIpE,MAAM,GAAGkE,OAAb;AACA,QAAI9D,OAAO,GAAG+D,CAAd;AACA,QAAIzG,QAAQ,GAAG0G,EAAf;;AACA,QAAI,OAAOhE,OAAP,KAAmB,UAAvB,EAAmC;AACjC1C,MAAAA,QAAQ,GAAG0C,OAAX;AACAA,MAAAA,OAAO,GAAG,EAAV;AACD;;AACD,QAAI,CAAC,KAAKyC,KAAN,IAAetE,MAAM,CAACC,IAAP,CAAY,KAAKqE,KAAjB,EAAwBjH,MAAxB,KAAmC,CAAtD,EAAyD;AACvD,UAAI8B,QAAJ,EAAc;AACZA,QAAAA,QAAQ;AACT;;AACD,aAAOsB,OAAO,CAACC,OAAR,EAAP;AACD;;AAED,aAASoF,QAAT,CAAkB1G,OAAlB,EAA2B;AACzB,UAAIvB,CAAJ;AACA,UAAId,MAAM,GAAG,EAAb;AACA,UAAIO,MAAM,GAAG,EAAb;;AAEA,eAASyI,GAAT,CAAa5I,CAAb,EAAgB;AACd,YAAI2B,KAAK,CAACC,OAAN,CAAc5B,CAAd,CAAJ,EAAsB;AAAA;;AACpBJ,UAAAA,MAAM,GAAG,WAAAA,MAAM,EAACiJ,MAAP,gBAAiB7I,CAAjB,CAAT;AACD,SAFD,MAEO;AACLJ,UAAAA,MAAM,CAACW,IAAP,CAAYP,CAAZ;AACD;AACF;;AAED,WAAKU,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuB,OAAO,CAAC/B,MAAxB,EAAgCQ,CAAC,EAAjC,EAAqC;AACnCkI,QAAAA,GAAG,CAAC3G,OAAO,CAACvB,CAAD,CAAR,CAAH;AACD;;AACD,UAAI,CAACd,MAAM,CAACM,MAAZ,EAAoB;AAClBN,QAAAA,MAAM,GAAG,IAAT;AACAO,QAAAA,MAAM,GAAG,IAAT;AACD,OAHD,MAGO;AACLA,QAAAA,MAAM,GAAGF,kBAAkB,CAACL,MAAD,CAA3B;AACD;;AACDoC,MAAAA,QAAQ,CAACpC,MAAD,EAASO,MAAT,CAAR;AACD;;AAED,QAAIuE,OAAO,CAACE,QAAZ,EAAsB;AACpB,UAAIA,UAAQ,GAAG,KAAKA,QAAL,EAAf;;AACA,UAAIA,UAAQ,KAAKuD,QAAjB,EAAkC;AAChCvD,QAAAA,UAAQ,GAAG+C,WAAW,EAAtB;AACD;;AACDvD,MAAAA,SAAS,CAACQ,UAAD,EAAWF,OAAO,CAACE,QAAnB,CAAT;AACAF,MAAAA,OAAO,CAACE,QAAR,GAAmBA,UAAnB;AACD,KAPD,MAOO;AACLF,MAAAA,OAAO,CAACE,QAAR,GAAmB,KAAKA,QAAL,EAAnB;AACD;;AACD,QAAI9C,GAAJ;AACA,QAAIL,KAAJ;AACA,QAAMqH,MAAM,GAAG,EAAf;AACA,QAAMhG,IAAI,GAAG4B,OAAO,CAAC5B,IAAR,IAAgBD,MAAM,CAACC,IAAP,CAAY,KAAKqE,KAAjB,CAA7B;AACArE,IAAAA,IAAI,CAAC1C,OAAL,CAAa,UAAAkI,CAAC,EAAI;AAChBxG,MAAAA,GAAG,GAAG,KAAI,CAACqF,KAAL,CAAWmB,CAAX,CAAN;AACA7G,MAAAA,KAAK,GAAG6C,MAAM,CAACgE,CAAD,CAAd;AACAxG,MAAAA,GAAG,CAAC1B,OAAJ,CAAY,UAAA2I,CAAC,EAAI;AACf,YAAI/E,IAAI,GAAG+E,CAAX;;AACA,YAAI,OAAO/E,IAAI,CAACgF,SAAZ,KAA0B,UAA9B,EAA0C;AACxC,cAAI1E,MAAM,KAAKkE,OAAf,EAAwB;AACtBlE,YAAAA,MAAM,gBAAQA,MAAR,CAAN;AACD;;AACD7C,UAAAA,KAAK,GAAG6C,MAAM,CAACgE,CAAD,CAAN,GAAYtE,IAAI,CAACgF,SAAL,CAAevH,KAAf,CAApB;AACD;;AACD,YAAI,OAAOuC,IAAP,KAAgB,UAApB,EAAgC;AAC9BA,UAAAA,IAAI,GAAG;AACLiF,YAAAA,SAAS,EAAEjF;AADN,WAAP;AAGD,SAJD,MAIO;AACLA,UAAAA,IAAI,gBAAQA,IAAR,CAAJ;AACD;;AACDA,QAAAA,IAAI,CAACiF,SAAL,GAAiB,KAAI,CAACC,mBAAL,CAAyBlF,IAAzB,CAAjB;AACAA,QAAAA,IAAI,CAAC1D,KAAL,GAAagI,CAAb;AACAtE,QAAAA,IAAI,CAACG,SAAL,GAAiBH,IAAI,CAACG,SAAL,IAAkBmE,CAAnC;AACAtE,QAAAA,IAAI,CAACrE,IAAL,GAAY,KAAI,CAACwJ,OAAL,CAAanF,IAAb,CAAZ;;AACA,YAAI,CAACA,IAAI,CAACiF,SAAV,EAAqB;AACnB;AACD;;AACDH,QAAAA,MAAM,CAACR,CAAD,CAAN,GAAYQ,MAAM,CAACR,CAAD,CAAN,IAAa,EAAzB;AACAQ,QAAAA,MAAM,CAACR,CAAD,CAAN,CAAU/H,IAAV,CAAe;AACbyD,UAAAA,IAAI,EAAJA,IADa;AAEbvC,UAAAA,KAAK,EAALA,KAFa;AAGb6C,UAAAA,MAAM,EAANA,MAHa;AAIbhE,UAAAA,KAAK,EAAEgI;AAJM,SAAf;AAMD,OA7BD;AA8BD,KAjCD;AAkCA,QAAMc,WAAW,GAAG,EAApB;AACA,WAAOlG,QAAQ,CACb4F,MADa,EAEbpE,OAFa,EAGb,UAAC2E,IAAD,EAAOC,IAAP,EAAgB;AACd,UAAMtF,IAAI,GAAGqF,IAAI,CAACrF,IAAlB;AACA,UAAIuF,IAAI,GACN,CAACvF,IAAI,CAACrE,IAAL,KAAc,QAAd,IAA0BqE,IAAI,CAACrE,IAAL,KAAc,OAAzC,MACC,OAAOqE,IAAI,CAAC7D,MAAZ,KAAuB,QAAvB,IACC,OAAO6D,IAAI,CAACwF,YAAZ,KAA6B,QAF/B,CADF;AAIAD,MAAAA,IAAI,GAAGA,IAAI,KAAKvF,IAAI,CAACS,QAAL,IAAkB,CAACT,IAAI,CAACS,QAAN,IAAkB4E,IAAI,CAAC5H,KAA9C,CAAX;AACAuC,MAAAA,IAAI,CAAC1D,KAAL,GAAa+I,IAAI,CAAC/I,KAAlB;;AAEA,eAASmJ,YAAT,CAAsB5F,GAAtB,EAA2B6F,MAA3B,EAAmC;AACjC,qCACKA,MADL;AAEEvF,UAAAA,SAAS,EAAKH,IAAI,CAACG,SAAV,SAAuBN;AAFlC;AAID;;AAED,eAAS8F,EAAT,CAAY3J,CAAZ,EAAoB;AAAA,YAARA,CAAQ;AAARA,UAAAA,CAAQ,GAAJ,EAAI;AAAA;;AAClB,YAAIJ,MAAM,GAAGI,CAAb;;AACA,YAAI,CAAC2B,KAAK,CAACC,OAAN,CAAchC,MAAd,CAAL,EAA4B;AAC1BA,UAAAA,MAAM,GAAG,CAACA,MAAD,CAAT;AACD;;AACD,YAAI,CAAC8E,OAAO,CAACkF,eAAT,IAA4BhK,MAAM,CAACM,MAAvC,EAA+C;AAC7C8H,UAAAA,MAAM,CAAC3I,OAAP,CAAe,kBAAf,EAAmCO,MAAnC;AACD;;AACD,YAAIA,MAAM,CAACM,MAAP,IAAiB8D,IAAI,CAACE,OAAL,KAAiBxC,SAAtC,EAAiD;AAC/C9B,UAAAA,MAAM,GAAG,GAAGiJ,MAAH,CAAU7E,IAAI,CAACE,OAAf,CAAT;AACD;;AAEDtE,QAAAA,MAAM,GAAGA,MAAM,CAACiK,GAAP,CAAW9F,eAAe,CAACC,IAAD,CAA1B,CAAT;;AAEA,YAAIU,OAAO,CAACtB,KAAR,IAAiBxD,MAAM,CAACM,MAA5B,EAAoC;AAClCkJ,UAAAA,WAAW,CAACpF,IAAI,CAAC1D,KAAN,CAAX,GAA0B,CAA1B;AACA,iBAAOgJ,IAAI,CAAC1J,MAAD,CAAX;AACD;;AACD,YAAI,CAAC2J,IAAL,EAAW;AACTD,UAAAA,IAAI,CAAC1J,MAAD,CAAJ;AACD,SAFD,MAEO;AACL;AACA;AACA;AACA,cAAIoE,IAAI,CAACS,QAAL,IAAiB,CAAC4E,IAAI,CAAC5H,KAA3B,EAAkC;AAChC,gBAAIuC,IAAI,CAACE,OAAL,KAAiBxC,SAArB,EAAgC;AAC9B9B,cAAAA,MAAM,GAAG,GAAGiJ,MAAH,CAAU7E,IAAI,CAACE,OAAf,EAAwB2F,GAAxB,CAA4B9F,eAAe,CAACC,IAAD,CAA3C,CAAT;AACD,aAFD,MAEO,IAAIU,OAAO,CAACrE,KAAZ,EAAmB;AACxBT,cAAAA,MAAM,GAAG,CACP8E,OAAO,CAACrE,KAAR,CACE2D,IADF,EAEExD,MAAM,CAACkE,OAAO,CAACE,QAAR,CAAiBH,QAAlB,EAA4BT,IAAI,CAAC1D,KAAjC,CAFR,CADO,CAAT;AAMD;;AACD,mBAAOgJ,IAAI,CAAC1J,MAAD,CAAX;AACD;;AAED,cAAIkK,YAAY,GAAG,EAAnB;;AACA,cAAI9F,IAAI,CAACwF,YAAT,EAAuB;AACrB,iBAAK,IAAMzG,CAAX,IAAgBsG,IAAI,CAAC5H,KAArB,EAA4B;AAC1B,kBAAI4H,IAAI,CAAC5H,KAAL,CAAW+C,cAAX,CAA0BzB,CAA1B,CAAJ,EAAkC;AAChC+G,gBAAAA,YAAY,CAAC/G,CAAD,CAAZ,GAAkBiB,IAAI,CAACwF,YAAvB;AACD;AACF;AACF;;AACDM,UAAAA,YAAY,yBACPA,YADO,GAEPT,IAAI,CAACrF,IAAL,CAAU7D,MAFH,CAAZ;;AAIA,eAAK,IAAMQ,CAAX,IAAgBmJ,YAAhB,EAA8B;AAC5B,gBAAIA,YAAY,CAACtF,cAAb,CAA4B7D,CAA5B,CAAJ,EAAoC;AAClC,kBAAMoJ,WAAW,GAAGpI,KAAK,CAACC,OAAN,CAAckI,YAAY,CAACnJ,CAAD,CAA1B,IAChBmJ,YAAY,CAACnJ,CAAD,CADI,GAEhB,CAACmJ,YAAY,CAACnJ,CAAD,CAAb,CAFJ;AAGAmJ,cAAAA,YAAY,CAACnJ,CAAD,CAAZ,GAAkBoJ,WAAW,CAACF,GAAZ,CAAgBJ,YAAY,CAACO,IAAb,CAAkB,IAAlB,EAAwBrJ,CAAxB,CAAhB,CAAlB;AACD;AACF;;AACD,cAAM+I,MAAM,GAAG,IAAI1B,MAAJ,CAAW8B,YAAX,CAAf;AACAJ,UAAAA,MAAM,CAAC9E,QAAP,CAAgBF,OAAO,CAACE,QAAxB;;AACA,cAAIyE,IAAI,CAACrF,IAAL,CAAUU,OAAd,EAAuB;AACrB2E,YAAAA,IAAI,CAACrF,IAAL,CAAUU,OAAV,CAAkBE,QAAlB,GAA6BF,OAAO,CAACE,QAArC;AACAyE,YAAAA,IAAI,CAACrF,IAAL,CAAUU,OAAV,CAAkBrE,KAAlB,GAA0BqE,OAAO,CAACrE,KAAlC;AACD;;AACDqJ,UAAAA,MAAM,CAACxC,QAAP,CAAgBmC,IAAI,CAAC5H,KAArB,EAA4B4H,IAAI,CAACrF,IAAL,CAAUU,OAAV,IAAqBA,OAAjD,EAA0D,UAAAuF,IAAI,EAAI;AAChE,gBAAMC,WAAW,GAAG,EAApB;;AACA,gBAAItK,MAAM,IAAIA,MAAM,CAACM,MAArB,EAA6B;AAC3BgK,cAAAA,WAAW,CAAC3J,IAAZ,OAAA2J,WAAW,EAAStK,MAAT,CAAX;AACD;;AACD,gBAAIqK,IAAI,IAAIA,IAAI,CAAC/J,MAAjB,EAAyB;AACvBgK,cAAAA,WAAW,CAAC3J,IAAZ,OAAA2J,WAAW,EAASD,IAAT,CAAX;AACD;;AACDX,YAAAA,IAAI,CAACY,WAAW,CAAChK,MAAZ,GAAqBgK,WAArB,GAAmC,IAApC,CAAJ;AACD,WATD;AAUD;AACF;;AAED,UAAIC,GAAJ;;AACA,UAAInG,IAAI,CAACoG,cAAT,EAAyB;AACvBD,QAAAA,GAAG,GAAGnG,IAAI,CAACoG,cAAL,CAAoBpG,IAApB,EAA0BqF,IAAI,CAAC5H,KAA/B,EAAsCkI,EAAtC,EAA0CN,IAAI,CAAC/E,MAA/C,EAAuDI,OAAvD,CAAN;AACD,OAFD,MAEO,IAAIV,IAAI,CAACiF,SAAT,EAAoB;AACzBkB,QAAAA,GAAG,GAAGnG,IAAI,CAACiF,SAAL,CAAejF,IAAf,EAAqBqF,IAAI,CAAC5H,KAA1B,EAAiCkI,EAAjC,EAAqCN,IAAI,CAAC/E,MAA1C,EAAkDI,OAAlD,CAAN;;AACA,YAAIyF,GAAG,KAAK,IAAZ,EAAkB;AAChBR,UAAAA,EAAE;AACH,SAFD,MAEO,IAAIQ,GAAG,KAAK,KAAZ,EAAmB;AACxBR,UAAAA,EAAE,CAAC3F,IAAI,CAACE,OAAL,IAAmBF,IAAI,CAAC1D,KAAxB,WAAD,CAAF;AACD,SAFM,MAEA,IAAI6J,GAAG,YAAYxI,KAAnB,EAA0B;AAC/BgI,UAAAA,EAAE,CAACQ,GAAD,CAAF;AACD,SAFM,MAEA,IAAIA,GAAG,YAAYlH,KAAnB,EAA0B;AAC/B0G,UAAAA,EAAE,CAACQ,GAAG,CAACjG,OAAL,CAAF;AACD;AACF;;AACD,UAAIiG,GAAG,IAAIA,GAAG,CAACE,IAAf,EAAqB;AACnBF,QAAAA,GAAG,CAACE,IAAJ,CACE;AAAA,iBAAMV,EAAE,EAAR;AAAA,SADF,EAEE,UAAA3J,CAAC;AAAA,iBAAI2J,EAAE,CAAC3J,CAAD,CAAN;AAAA,SAFH;AAID;AACF,KArHY,EAsHb,UAAAiC,OAAO,EAAI;AACT0G,MAAAA,QAAQ,CAAC1G,OAAD,CAAR;AACD,KAxHY,CAAf;AA0HD,GA3OgB;AA4OjBkH,EAAAA,OA5OiB,mBA4OTnF,IA5OS,EA4OH;AACZ,QAAIA,IAAI,CAACrE,IAAL,KAAc+B,SAAd,IAA2BsC,IAAI,CAACe,OAAL,YAAwBG,MAAvD,EAA+D;AAC7DlB,MAAAA,IAAI,CAACrE,IAAL,GAAY,SAAZ;AACD;;AACD,QACE,OAAOqE,IAAI,CAACiF,SAAZ,KAA0B,UAA1B,IACAjF,IAAI,CAACrE,IADL,IAEA,CAAC2K,UAAU,CAAC9F,cAAX,CAA0BR,IAAI,CAACrE,IAA/B,CAHH,EAIE;AACA,YAAM,IAAIsD,KAAJ,CAAUzC,MAAM,CAAC,sBAAD,EAAyBwD,IAAI,CAACrE,IAA9B,CAAhB,CAAN;AACD;;AACD,WAAOqE,IAAI,CAACrE,IAAL,IAAa,QAApB;AACD,GAxPgB;AAyPjBuJ,EAAAA,mBAzPiB,+BAyPGlF,IAzPH,EAyPS;AACxB,QAAI,OAAOA,IAAI,CAACiF,SAAZ,KAA0B,UAA9B,EAA0C;AACxC,aAAOjF,IAAI,CAACiF,SAAZ;AACD;;AACD,QAAMnG,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYkB,IAAZ,CAAb;AACA,QAAMuG,YAAY,GAAGzH,IAAI,CAACgB,OAAL,CAAa,SAAb,CAArB;;AACA,QAAIyG,YAAY,KAAK,CAAC,CAAtB,EAAyB;AACvBzH,MAAAA,IAAI,CAAC0H,MAAL,CAAYD,YAAZ,EAA0B,CAA1B;AACD;;AACD,QAAIzH,IAAI,CAAC5C,MAAL,KAAgB,CAAhB,IAAqB4C,IAAI,CAAC,CAAD,CAAJ,KAAY,UAArC,EAAiD;AAC/C,aAAOwH,UAAU,CAAC7F,QAAlB;AACD;;AACD,WAAO6F,UAAU,CAAC,KAAKnB,OAAL,CAAanF,IAAb,CAAD,CAAV,IAAkC,KAAzC;AACD;AAtQgB,CAAnB;;AAyQAgE,MAAM,CAACyC,QAAP,GAAkB,SAASA,QAAT,CAAkB9K,IAAlB,EAAwBsJ,SAAxB,EAAmC;AACnD,MAAI,OAAOA,SAAP,KAAqB,UAAzB,EAAqC;AACnC,UAAM,IAAIhG,KAAJ,CACJ,kEADI,CAAN;AAGD;;AACDqH,EAAAA,UAAU,CAAC3K,IAAD,CAAV,GAAmBsJ,SAAnB;AACD,CAPD;;AASAjB,MAAM,CAAC3I,OAAP,GAAiBA,OAAjB;AAEA2I,MAAM,CAACpD,QAAP,GAAkBuD,QAAlB;AAEAH,MAAM,CAACsC,UAAP,GAAoBA,UAApB;;;;"} \ No newline at end of file diff --git a/node_modules/async-validator/dist-types/index.d.ts b/node_modules/async-validator/dist-types/index.d.ts new file mode 100644 index 0000000..b468114 --- /dev/null +++ b/node_modules/async-validator/dist-types/index.d.ts @@ -0,0 +1,97 @@ +// Type definitions for async-validator 3.0.4 +// Project: http://github.com/yiminghe/async-validator +// Definitions by: iamdhj +// TypeScript Version: 3.6.2 + +export default class { + constructor(rule: Rules); + + /** + * Validate source + * @param source The object to validate (required) + * @param options An object describing processing options for the validation + * @param callback A callback function to invoke when validation completes + * @returns Promise + */ + validate( + source: ValidateSource, + options?: ValidateOption, + callback?: (errors: ErrorList, fields: FieldErrorList) => void, + ): Promise; +} + +export type RuleType = + | 'string' + | 'number' + | 'boolean' + | 'method' + | 'regexp' + | 'integer' + | 'float' + | 'array' + | 'object' + | 'enum' + | 'date' + | 'url' + | 'hex' + | 'email' + | 'any'; + +export interface RuleItem { + type?: RuleType; // default type is 'string' + required?: boolean; + pattern?: RegExp | string; + min?: number; // Range of type 'string' and 'array' + max?: number; // Range of type 'string' and 'array' + len?: number; // Length of type 'string' and 'array' + enum?: Array; // possible values of type 'enum' + whitespace?: boolean; + fields?: Rules; // ignore when without required + options?: ValidateOption; + defaultField?: RuleItem; // 'object' or 'array' containing validation rules + transform?: (value: any) => any; + message?: string | (() => string); + asyncValidator?: ( + rule: Rules, + value: any, + callback: (error: string | string[] | void) => void, + source: ValidateSource, + options: ValidateOption, + ) => void | Promise; + validator?: ( + rule: Rules, + value: any, + callback: (error: string | string[] | void) => void, + source: ValidateSource, + options: ValidateOption, + ) => void; +} + +export interface Rules { + [field: string]: RuleItem | RuleItem[]; +} + +export interface ValidateSource { + [field: string]: any; +} + +export interface ValidateOption { + // whether to suppress internal warning + suppressWarning?: boolean; + + // when the first validation rule generates an error stop processed + first?: boolean; + + // when the first validation rule of the specified field generates an error stop the field processed, 'true' means all fields. + firstFields?: boolean | string[]; +} + +export interface ValidateError { + message: string; + field: string; +} + +export type ErrorList = ValidateError[]; +export interface FieldErrorList { + [field: string]: ValidateError[]; +} diff --git a/node_modules/async-validator/dist-web/index.js b/node_modules/async-validator/dist-web/index.js new file mode 100644 index 0000000..381ab27 --- /dev/null +++ b/node_modules/async-validator/dist-web/index.js @@ -0,0 +1,1440 @@ +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + subClass.__proto__ = superClass; +} + +function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} + +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} + +function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + return true; + } catch (e) { + return false; + } +} + +function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); +} + +function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; +} + +function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); +} + +/* eslint no-console:0 */ +var formatRegExp = /%[sdj%]/g; +var warning = function warning() {}; // don't print warning message when in production env or node runtime + +if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') { + warning = function warning(type, errors) { + if (typeof console !== 'undefined' && console.warn) { + if (errors.every(function (e) { + return typeof e === 'string'; + })) { + console.warn(type, errors); + } + } + }; +} + +function convertFieldsError(errors) { + if (!errors || !errors.length) return null; + var fields = {}; + errors.forEach(function (error) { + var field = error.field; + fields[field] = fields[field] || []; + fields[field].push(error); + }); + return fields; +} +function format() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var i = 1; + var f = args[0]; + var len = args.length; + + if (typeof f === 'function') { + return f.apply(null, args.slice(1)); + } + + if (typeof f === 'string') { + var str = String(f).replace(formatRegExp, function (x) { + if (x === '%%') { + return '%'; + } + + if (i >= len) { + return x; + } + + switch (x) { + case '%s': + return String(args[i++]); + + case '%d': + return Number(args[i++]); + + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + + break; + + default: + return x; + } + }); + return str; + } + + return f; +} + +function isNativeStringType(type) { + return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'date' || type === 'pattern'; +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (type === 'array' && Array.isArray(value) && !value.length) { + return true; + } + + if (isNativeStringType(type) && typeof value === 'string' && !value) { + return true; + } + + return false; +} + +function asyncParallelArray(arr, func, callback) { + var results = []; + var total = 0; + var arrLength = arr.length; + + function count(errors) { + results.push.apply(results, errors); + total++; + + if (total === arrLength) { + callback(results); + } + } + + arr.forEach(function (a) { + func(a, count); + }); +} + +function asyncSerialArray(arr, func, callback) { + var index = 0; + var arrLength = arr.length; + + function next(errors) { + if (errors && errors.length) { + callback(errors); + return; + } + + var original = index; + index = index + 1; + + if (original < arrLength) { + func(arr[original], next); + } else { + callback([]); + } + } + + next([]); +} + +function flattenObjArr(objArr) { + var ret = []; + Object.keys(objArr).forEach(function (k) { + ret.push.apply(ret, objArr[k]); + }); + return ret; +} + +var AsyncValidationError = /*#__PURE__*/function (_Error) { + _inheritsLoose(AsyncValidationError, _Error); + + function AsyncValidationError(errors, fields) { + var _this; + + _this = _Error.call(this, 'Async Validation Error') || this; + _this.errors = errors; + _this.fields = fields; + return _this; + } + + return AsyncValidationError; +}( /*#__PURE__*/_wrapNativeSuper(Error)); +function asyncMap(objArr, option, func, callback) { + if (option.first) { + var _pending = new Promise(function (resolve, reject) { + var next = function next(errors) { + callback(errors); + return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(); + }; + + var flattenArr = flattenObjArr(objArr); + asyncSerialArray(flattenArr, func, next); + }); + + _pending["catch"](function (e) { + return e; + }); + + return _pending; + } + + var firstFields = option.firstFields || []; + + if (firstFields === true) { + firstFields = Object.keys(objArr); + } + + var objArrKeys = Object.keys(objArr); + var objArrLength = objArrKeys.length; + var total = 0; + var results = []; + var pending = new Promise(function (resolve, reject) { + var next = function next(errors) { + results.push.apply(results, errors); + total++; + + if (total === objArrLength) { + callback(results); + return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(); + } + }; + + if (!objArrKeys.length) { + callback(results); + resolve(); + } + + objArrKeys.forEach(function (key) { + var arr = objArr[key]; + + if (firstFields.indexOf(key) !== -1) { + asyncSerialArray(arr, func, next); + } else { + asyncParallelArray(arr, func, next); + } + }); + }); + pending["catch"](function (e) { + return e; + }); + return pending; +} +function complementError(rule) { + return function (oe) { + if (oe && oe.message) { + oe.field = oe.field || rule.fullField; + return oe; + } + + return { + message: typeof oe === 'function' ? oe() : oe, + field: oe.field || rule.fullField + }; + }; +} +function deepMerge(target, source) { + if (source) { + for (var s in source) { + if (source.hasOwnProperty(s)) { + var value = source[s]; + + if (typeof value === 'object' && typeof target[s] === 'object') { + target[s] = _extends(_extends({}, target[s]), value); + } else { + target[s] = value; + } + } + } + } + + return target; +} + +/** + * Rule for validating required fields. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function required(rule, value, source, errors, options, type) { + if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type || rule.type))) { + errors.push(format(options.messages.required, rule.fullField)); + } +} + +/** + * Rule for validating whitespace. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function whitespace(rule, value, source, errors, options) { + if (/^\s+$/.test(value) || value === '') { + errors.push(format(options.messages.whitespace, rule.fullField)); + } +} + +/* eslint max-len:0 */ + +var pattern = { + // http://emailregex.com/ + email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, + url: new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", 'i'), + hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i +}; +var types = { + integer: function integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + "float": function float(value) { + return types.number(value) && !types.integer(value); + }, + array: function array(value) { + return Array.isArray(value); + }, + regexp: function regexp(value) { + if (value instanceof RegExp) { + return true; + } + + try { + return !!new RegExp(value); + } catch (e) { + return false; + } + }, + date: function date(value) { + return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function' && !isNaN(value.getTime()); + }, + number: function number(value) { + if (isNaN(value)) { + return false; + } + + return typeof value === 'number'; + }, + object: function object(value) { + return typeof value === 'object' && !types.array(value); + }, + method: function method(value) { + return typeof value === 'function'; + }, + email: function email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url: function url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + hex: function hex(value) { + return typeof value === 'string' && !!value.match(pattern.hex); + } +}; +/** + * Rule for validating the type of a value. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function type(rule, value, source, errors, options) { + if (rule.required && value === undefined) { + required(rule, value, source, errors, options); + return; + } + + var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex']; + var ruleType = rule.type; + + if (custom.indexOf(ruleType) > -1) { + if (!types[ruleType](value)) { + errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); + } // straight typeof check + + } else if (ruleType && typeof value !== rule.type) { + errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type)); + } +} + +/** + * Rule for validating minimum and maximum allowed values. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function range(rule, value, source, errors, options) { + var len = typeof rule.len === 'number'; + var min = typeof rule.min === 'number'; + var max = typeof rule.max === 'number'; // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane) + + var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var val = value; + var key = null; + var num = typeof value === 'number'; + var str = typeof value === 'string'; + var arr = Array.isArray(value); + + if (num) { + key = 'number'; + } else if (str) { + key = 'string'; + } else if (arr) { + key = 'array'; + } // if the value is not of a supported type for range validation + // the validation rule rule should use the + // type property to also test for a particular type + + + if (!key) { + return false; + } + + if (arr) { + val = value.length; + } + + if (str) { + // 处理码点大于U+010000的文字length属性不准确的bug,如"𠮷𠮷𠮷".lenght !== 3 + val = value.replace(spRegexp, '_').length; + } + + if (len) { + if (val !== rule.len) { + errors.push(format(options.messages[key].len, rule.fullField, rule.len)); + } + } else if (min && !max && val < rule.min) { + errors.push(format(options.messages[key].min, rule.fullField, rule.min)); + } else if (max && !min && val > rule.max) { + errors.push(format(options.messages[key].max, rule.fullField, rule.max)); + } else if (min && max && (val < rule.min || val > rule.max)) { + errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max)); + } +} + +var ENUM = 'enum'; +/** + * Rule for validating a value exists in an enumerable list. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function enumerable(rule, value, source, errors, options) { + rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : []; + + if (rule[ENUM].indexOf(value) === -1) { + errors.push(format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', '))); + } +} + +/** + * Rule for validating a regular expression pattern. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param source The source object being validated. + * @param errors An array of errors that this rule may add + * validation errors to. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function pattern$1(rule, value, source, errors, options) { + if (rule.pattern) { + if (rule.pattern instanceof RegExp) { + // if a RegExp instance is passed, reset `lastIndex` in case its `global` + // flag is accidentally set to `true`, which in a validation scenario + // is not necessary and the result might be misleading + rule.pattern.lastIndex = 0; + + if (!rule.pattern.test(value)) { + errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); + } + } else if (typeof rule.pattern === 'string') { + var _pattern = new RegExp(rule.pattern); + + if (!_pattern.test(value)) { + errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern)); + } + } + } +} + +var rules = { + required: required, + whitespace: whitespace, + type: type, + range: range, + "enum": enumerable, + pattern: pattern$1 +}; + +/** + * Performs validation for string types. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function string(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value, 'string') && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options, 'string'); + + if (!isEmptyValue(value, 'string')) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + rules.pattern(rule, value, source, errors, options); + + if (rule.whitespace === true) { + rules.whitespace(rule, value, source, errors, options); + } + } + } + + callback(errors); +} + +/** + * Validates a function. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function method(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a number. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function number(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (value === '') { + value = undefined; + } + + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a boolean. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function _boolean(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates the regular expression type. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function regexp(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (!isEmptyValue(value)) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a number is an integer. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function integer(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a number is a floating point number. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function floatFn(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates an array. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function array(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if ((value === undefined || value === null) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options, 'array'); + + if (value !== undefined && value !== null) { + rules.type(rule, value, source, errors, options); + rules.range(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates an object. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function object(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +var ENUM$1 = 'enum'; +/** + * Validates an enumerable list. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function enumerable$1(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (value !== undefined) { + rules[ENUM$1](rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Validates a regular expression pattern. + * + * Performs validation when a rule only contains + * a pattern property but is not declared as a string type. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function pattern$2(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value, 'string') && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (!isEmptyValue(value, 'string')) { + rules.pattern(rule, value, source, errors, options); + } + } + + callback(errors); +} + +function date(rule, value, callback, source, options) { + // console.log('integer rule called %j', rule); + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); // console.log('validate on %s value', value); + + if (validate) { + if (isEmptyValue(value, 'date') && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + + if (!isEmptyValue(value, 'date')) { + var dateObject; + + if (value instanceof Date) { + dateObject = value; + } else { + dateObject = new Date(value); + } + + rules.type(rule, dateObject, source, errors, options); + + if (dateObject) { + rules.range(rule, dateObject.getTime(), source, errors, options); + } + } + } + + callback(errors); +} + +function required$1(rule, value, callback, source, options) { + var errors = []; + var type = Array.isArray(value) ? 'array' : typeof value; + rules.required(rule, value, source, errors, options, type); + callback(errors); +} + +function type$1(rule, value, callback, source, options) { + var ruleType = rule.type; + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value, ruleType) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options, ruleType); + + if (!isEmptyValue(value, ruleType)) { + rules.type(rule, value, source, errors, options); + } + } + + callback(errors); +} + +/** + * Performs validation for any type. + * + * @param rule The validation rule. + * @param value The value of the field on the source object. + * @param callback The callback function. + * @param source The source object being validated. + * @param options The validation options. + * @param options.messages The validation messages. + */ + +function any(rule, value, callback, source, options) { + var errors = []; + var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field); + + if (validate) { + if (isEmptyValue(value) && !rule.required) { + return callback(); + } + + rules.required(rule, value, source, errors, options); + } + + callback(errors); +} + +var validators = { + string: string, + method: method, + number: number, + "boolean": _boolean, + regexp: regexp, + integer: integer, + "float": floatFn, + array: array, + object: object, + "enum": enumerable$1, + pattern: pattern$2, + date: date, + url: type$1, + hex: type$1, + email: type$1, + required: required$1, + any: any +}; + +function newMessages() { + return { + "default": 'Validation error on field %s', + required: '%s is required', + "enum": '%s must be one of %s', + whitespace: '%s cannot be empty', + date: { + format: '%s date %s is invalid for format %s', + parse: '%s date could not be parsed, %s is invalid ', + invalid: '%s date %s is invalid' + }, + types: { + string: '%s is not a %s', + method: '%s is not a %s (function)', + array: '%s is not an %s', + object: '%s is not an %s', + number: '%s is not a %s', + date: '%s is not a %s', + "boolean": '%s is not a %s', + integer: '%s is not an %s', + "float": '%s is not a %s', + regexp: '%s is not a valid %s', + email: '%s is not a valid %s', + url: '%s is not a valid %s', + hex: '%s is not a valid %s' + }, + string: { + len: '%s must be exactly %s characters', + min: '%s must be at least %s characters', + max: '%s cannot be longer than %s characters', + range: '%s must be between %s and %s characters' + }, + number: { + len: '%s must equal %s', + min: '%s cannot be less than %s', + max: '%s cannot be greater than %s', + range: '%s must be between %s and %s' + }, + array: { + len: '%s must be exactly %s in length', + min: '%s cannot be less than %s in length', + max: '%s cannot be greater than %s in length', + range: '%s must be between %s and %s in length' + }, + pattern: { + mismatch: '%s value %s does not match pattern %s' + }, + clone: function clone() { + var cloned = JSON.parse(JSON.stringify(this)); + cloned.clone = this.clone; + return cloned; + } + }; +} +var messages = newMessages(); + +/** + * Encapsulates a validation schema. + * + * @param descriptor An object declaring validation rules + * for this schema. + */ + +function Schema(descriptor) { + this.rules = null; + this._messages = messages; + this.define(descriptor); +} + +Schema.prototype = { + messages: function messages(_messages) { + if (_messages) { + this._messages = deepMerge(newMessages(), _messages); + } + + return this._messages; + }, + define: function define(rules) { + if (!rules) { + throw new Error('Cannot configure a schema with no rules'); + } + + if (typeof rules !== 'object' || Array.isArray(rules)) { + throw new Error('Rules must be an object'); + } + + this.rules = {}; + var z; + var item; + + for (z in rules) { + if (rules.hasOwnProperty(z)) { + item = rules[z]; + this.rules[z] = Array.isArray(item) ? item : [item]; + } + } + }, + validate: function validate(source_, o, oc) { + var _this = this; + + if (o === void 0) { + o = {}; + } + + if (oc === void 0) { + oc = function oc() {}; + } + + var source = source_; + var options = o; + var callback = oc; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + if (!this.rules || Object.keys(this.rules).length === 0) { + if (callback) { + callback(); + } + + return Promise.resolve(); + } + + function complete(results) { + var i; + var errors = []; + var fields = {}; + + function add(e) { + if (Array.isArray(e)) { + var _errors; + + errors = (_errors = errors).concat.apply(_errors, e); + } else { + errors.push(e); + } + } + + for (i = 0; i < results.length; i++) { + add(results[i]); + } + + if (!errors.length) { + errors = null; + fields = null; + } else { + fields = convertFieldsError(errors); + } + + callback(errors, fields); + } + + if (options.messages) { + var messages$1 = this.messages(); + + if (messages$1 === messages) { + messages$1 = newMessages(); + } + + deepMerge(messages$1, options.messages); + options.messages = messages$1; + } else { + options.messages = this.messages(); + } + + var arr; + var value; + var series = {}; + var keys = options.keys || Object.keys(this.rules); + keys.forEach(function (z) { + arr = _this.rules[z]; + value = source[z]; + arr.forEach(function (r) { + var rule = r; + + if (typeof rule.transform === 'function') { + if (source === source_) { + source = _extends({}, source); + } + + value = source[z] = rule.transform(value); + } + + if (typeof rule === 'function') { + rule = { + validator: rule + }; + } else { + rule = _extends({}, rule); + } + + rule.validator = _this.getValidationMethod(rule); + rule.field = z; + rule.fullField = rule.fullField || z; + rule.type = _this.getType(rule); + + if (!rule.validator) { + return; + } + + series[z] = series[z] || []; + series[z].push({ + rule: rule, + value: value, + source: source, + field: z + }); + }); + }); + var errorFields = {}; + return asyncMap(series, options, function (data, doIt) { + var rule = data.rule; + var deep = (rule.type === 'object' || rule.type === 'array') && (typeof rule.fields === 'object' || typeof rule.defaultField === 'object'); + deep = deep && (rule.required || !rule.required && data.value); + rule.field = data.field; + + function addFullfield(key, schema) { + return _extends(_extends({}, schema), {}, { + fullField: rule.fullField + "." + key + }); + } + + function cb(e) { + if (e === void 0) { + e = []; + } + + var errors = e; + + if (!Array.isArray(errors)) { + errors = [errors]; + } + + if (!options.suppressWarning && errors.length) { + Schema.warning('async-validator:', errors); + } + + if (errors.length && rule.message !== undefined) { + errors = [].concat(rule.message); + } + + errors = errors.map(complementError(rule)); + + if (options.first && errors.length) { + errorFields[rule.field] = 1; + return doIt(errors); + } + + if (!deep) { + doIt(errors); + } else { + // if rule is required but the target object + // does not exist fail at the rule level and don't + // go deeper + if (rule.required && !data.value) { + if (rule.message !== undefined) { + errors = [].concat(rule.message).map(complementError(rule)); + } else if (options.error) { + errors = [options.error(rule, format(options.messages.required, rule.field))]; + } + + return doIt(errors); + } + + var fieldsSchema = {}; + + if (rule.defaultField) { + for (var k in data.value) { + if (data.value.hasOwnProperty(k)) { + fieldsSchema[k] = rule.defaultField; + } + } + } + + fieldsSchema = _extends(_extends({}, fieldsSchema), data.rule.fields); + + for (var f in fieldsSchema) { + if (fieldsSchema.hasOwnProperty(f)) { + var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]]; + fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f)); + } + } + + var schema = new Schema(fieldsSchema); + schema.messages(options.messages); + + if (data.rule.options) { + data.rule.options.messages = options.messages; + data.rule.options.error = options.error; + } + + schema.validate(data.value, data.rule.options || options, function (errs) { + var finalErrors = []; + + if (errors && errors.length) { + finalErrors.push.apply(finalErrors, errors); + } + + if (errs && errs.length) { + finalErrors.push.apply(finalErrors, errs); + } + + doIt(finalErrors.length ? finalErrors : null); + }); + } + } + + var res; + + if (rule.asyncValidator) { + res = rule.asyncValidator(rule, data.value, cb, data.source, options); + } else if (rule.validator) { + res = rule.validator(rule, data.value, cb, data.source, options); + + if (res === true) { + cb(); + } else if (res === false) { + cb(rule.message || rule.field + " fails"); + } else if (res instanceof Array) { + cb(res); + } else if (res instanceof Error) { + cb(res.message); + } + } + + if (res && res.then) { + res.then(function () { + return cb(); + }, function (e) { + return cb(e); + }); + } + }, function (results) { + complete(results); + }); + }, + getType: function getType(rule) { + if (rule.type === undefined && rule.pattern instanceof RegExp) { + rule.type = 'pattern'; + } + + if (typeof rule.validator !== 'function' && rule.type && !validators.hasOwnProperty(rule.type)) { + throw new Error(format('Unknown rule type %s', rule.type)); + } + + return rule.type || 'string'; + }, + getValidationMethod: function getValidationMethod(rule) { + if (typeof rule.validator === 'function') { + return rule.validator; + } + + var keys = Object.keys(rule); + var messageIndex = keys.indexOf('message'); + + if (messageIndex !== -1) { + keys.splice(messageIndex, 1); + } + + if (keys.length === 1 && keys[0] === 'required') { + return validators.required; + } + + return validators[this.getType(rule)] || false; + } +}; + +Schema.register = function register(type, validator) { + if (typeof validator !== 'function') { + throw new Error('Cannot register a validator by type, validator is not a function'); + } + + validators[type] = validator; +}; + +Schema.warning = warning; +Schema.messages = messages; +Schema.validators = validators; + +export default Schema; +//# sourceMappingURL=index.js.map diff --git a/node_modules/async-validator/dist-web/index.js.map b/node_modules/async-validator/dist-web/index.js.map new file mode 100644 index 0000000..d1e75c7 --- /dev/null +++ b/node_modules/async-validator/dist-web/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../../src/util.js","../../src/rule/required.js","../../src/rule/whitespace.js","../../src/rule/type.js","../../src/rule/range.js","../../src/rule/enum.js","../../src/rule/pattern.js","../../src/rule/index.js","../../src/validator/string.js","../../src/validator/method.js","../../src/validator/number.js","../../src/validator/boolean.js","../../src/validator/regexp.js","../../src/validator/integer.js","../../src/validator/float.js","../../src/validator/array.js","../../src/validator/object.js","../../src/validator/enum.js","../../src/validator/pattern.js","../../src/validator/date.js","../../src/validator/required.js","../../src/validator/type.js","../../src/validator/any.js","../../src/validator/index.js","../../src/messages.js","../../src/index.js"],"sourcesContent":["/* eslint no-console:0 */\n\nconst formatRegExp = /%[sdj%]/g;\n\nexport let warning = () => {};\n\n// don't print warning message when in production env or node runtime\nif (\n typeof process !== 'undefined' &&\n process.env &&\n process.env.NODE_ENV !== 'production' &&\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n) {\n warning = (type, errors) => {\n if (typeof console !== 'undefined' && console.warn) {\n if (errors.every(e => typeof e === 'string')) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nexport function convertFieldsError(errors) {\n if (!errors || !errors.length) return null;\n const fields = {};\n errors.forEach(error => {\n const field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\n\nexport function format(...args) {\n let i = 1;\n const f = args[0];\n const len = args.length;\n if (typeof f === 'function') {\n return f.apply(null, args.slice(1));\n }\n if (typeof f === 'string') {\n let str = String(f).replace(formatRegExp, x => {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n return str;\n }\n return f;\n}\n\nfunction isNativeStringType(type) {\n return (\n type === 'string' ||\n type === 'url' ||\n type === 'hex' ||\n type === 'email' ||\n type === 'date' ||\n type === 'pattern'\n );\n}\n\nexport function isEmptyValue(value, type) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n const results = [];\n let total = 0;\n const arrLength = arr.length;\n\n function count(errors) {\n results.push.apply(results, errors);\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(a => {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n let index = 0;\n const arrLength = arr.length;\n\n function next(errors) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n const original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr) {\n const ret = [];\n Object.keys(objArr).forEach(k => {\n ret.push.apply(ret, objArr[k]);\n });\n return ret;\n}\n\nexport class AsyncValidationError extends Error {\n constructor(errors, fields) {\n super('Async Validation Error');\n this.errors = errors;\n this.fields = fields;\n }\n}\n\nexport function asyncMap(objArr, option, func, callback) {\n if (option.first) {\n const pending = new Promise((resolve, reject) => {\n const next = errors => {\n callback(errors);\n return errors.length\n ? reject(new AsyncValidationError(errors, convertFieldsError(errors)))\n : resolve();\n };\n const flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n pending.catch(e => e);\n return pending;\n }\n let firstFields = option.firstFields || [];\n if (firstFields === true) {\n firstFields = Object.keys(objArr);\n }\n const objArrKeys = Object.keys(objArr);\n const objArrLength = objArrKeys.length;\n let total = 0;\n const results = [];\n const pending = new Promise((resolve, reject) => {\n const next = errors => {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n return results.length\n ? reject(\n new AsyncValidationError(results, convertFieldsError(results)),\n )\n : resolve();\n }\n };\n if (!objArrKeys.length) {\n callback(results);\n resolve();\n }\n objArrKeys.forEach(key => {\n const arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending.catch(e => e);\n return pending;\n}\n\nexport function complementError(rule) {\n return oe => {\n if (oe && oe.message) {\n oe.field = oe.field || rule.fullField;\n return oe;\n }\n return {\n message: typeof oe === 'function' ? oe() : oe,\n field: oe.field || rule.fullField,\n };\n };\n}\n\nexport function deepMerge(target, source) {\n if (source) {\n for (const s in source) {\n if (source.hasOwnProperty(s)) {\n const value = source[s];\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = {\n ...target[s],\n ...value,\n };\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}\n","import * as util from '../util';\n\n/**\n * Rule for validating required fields.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction required(rule, value, source, errors, options, type) {\n if (\n rule.required &&\n (!source.hasOwnProperty(rule.field) ||\n util.isEmptyValue(value, type || rule.type))\n ) {\n errors.push(util.format(options.messages.required, rule.fullField));\n }\n}\n\nexport default required;\n","import * as util from '../util';\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction whitespace(rule, value, source, errors, options) {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(util.format(options.messages.whitespace, rule.fullField));\n }\n}\n\nexport default whitespace;\n","import * as util from '../util';\nimport required from './required';\n\n/* eslint max-len:0 */\n\nconst pattern = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n url: new RegExp(\n '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n 'i',\n ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,\n};\n\nconst types = {\n integer(value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n float(value) {\n return types.number(value) && !types.integer(value);\n },\n array(value) {\n return Array.isArray(value);\n },\n regexp(value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date(value) {\n return (\n typeof value.getTime === 'function' &&\n typeof value.getMonth === 'function' &&\n typeof value.getYear === 'function' &&\n !isNaN(value.getTime())\n );\n },\n number(value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object(value) {\n return typeof value === 'object' && !types.array(value);\n },\n method(value) {\n return typeof value === 'function';\n },\n email(value) {\n return (\n typeof value === 'string' &&\n !!value.match(pattern.email) &&\n value.length < 255\n );\n },\n url(value) {\n return typeof value === 'string' && !!value.match(pattern.url);\n },\n hex(value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n },\n};\n\n/**\n * Rule for validating the type of a value.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction type(rule, value, source, errors, options) {\n if (rule.required && value === undefined) {\n required(rule, value, source, errors, options);\n return;\n }\n const custom = [\n 'integer',\n 'float',\n 'array',\n 'regexp',\n 'object',\n 'method',\n 'email',\n 'number',\n 'date',\n 'url',\n 'hex',\n ];\n const ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(\n util.format(\n options.messages.types[ruleType],\n rule.fullField,\n rule.type,\n ),\n );\n }\n // straight typeof check\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(\n util.format(options.messages.types[ruleType], rule.fullField, rule.type),\n );\n }\n}\n\nexport default type;\n","import * as util from '../util';\n\n/**\n * Rule for validating minimum and maximum allowed values.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction range(rule, value, source, errors, options) {\n const len = typeof rule.len === 'number';\n const min = typeof rule.min === 'number';\n const max = typeof rule.max === 'number';\n // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n const spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n let val = value;\n let key = null;\n const num = typeof value === 'number';\n const str = typeof value === 'string';\n const arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n }\n // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(\n util.format(options.messages[key].len, rule.fullField, rule.len),\n );\n }\n } else if (min && !max && val < rule.min) {\n errors.push(\n util.format(options.messages[key].min, rule.fullField, rule.min),\n );\n } else if (max && !min && val > rule.max) {\n errors.push(\n util.format(options.messages[key].max, rule.fullField, rule.max),\n );\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(\n util.format(\n options.messages[key].range,\n rule.fullField,\n rule.min,\n rule.max,\n ),\n );\n }\n}\n\nexport default range;\n","import * as util from '../util';\n\nconst ENUM = 'enum';\n\n/**\n * Rule for validating a value exists in an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, source, errors, options) {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(\n util.format(\n options.messages[ENUM],\n rule.fullField,\n rule[ENUM].join(', '),\n ),\n );\n }\n}\n\nexport default enumerable;\n","import * as util from '../util';\n\n/**\n * Rule for validating a regular expression pattern.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, source, errors, options) {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(\n util.format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n } else if (typeof rule.pattern === 'string') {\n const _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(\n util.format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n }\n }\n}\n\nexport default pattern;\n","import required from './required';\nimport whitespace from './whitespace';\nimport type from './type';\nimport range from './range';\nimport enumRule from './enum';\nimport pattern from './pattern';\n\nexport default {\n required,\n whitespace,\n type,\n range,\n enum: enumRule,\n pattern,\n};\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for string types.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction string(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default string;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a function.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction method(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default method;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction number(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default number;\n","import { isEmptyValue } from '../util';\nimport rules from '../rule/index.js';\n\n/**\n * Validates a boolean.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction boolean(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default boolean;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates the regular expression type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction regexp(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default regexp;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is an integer.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction integer(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default integer;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a number is a floating point number.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction floatFn(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default floatFn;\n","import rules from '../rule/index';\nimport { isEmptyValue } from '../util';\n/**\n * Validates an array.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction array(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default array;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates an object.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction object(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default object;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nconst ENUM = 'enum';\n\n/**\n * Validates an enumerable list.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default enumerable;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Validates a regular expression pattern.\n *\n * Performs validation when a rule only contains\n * a pattern property but is not declared as a string type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction pattern(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default pattern;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nfunction date(rule, value, callback, source, options) {\n // console.log('integer rule called %j', rule);\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n // console.log('validate on %s value', value);\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'date')) {\n let dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n}\n\nexport default date;\n","import rules from '../rule/index.js';\n\nfunction required(rule, value, callback, source, options) {\n const errors = [];\n const type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n}\n\nexport default required;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\nfunction type(rule, value, callback, source, options) {\n const ruleType = rule.type;\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n}\n\nexport default type;\n","import rules from '../rule/index.js';\nimport { isEmptyValue } from '../util';\n\n/**\n * Performs validation for any type.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param callback The callback function.\n * @param source The source object being validated.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nfunction any(rule, value, callback, source, options) {\n const errors = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n }\n callback(errors);\n}\n\nexport default any;\n","import string from './string';\nimport method from './method';\nimport number from './number';\nimport boolean from './boolean';\nimport regexp from './regexp';\nimport integer from './integer';\nimport float from './float';\nimport array from './array';\nimport object from './object';\nimport enumValidator from './enum';\nimport pattern from './pattern';\nimport date from './date';\nimport required from './required';\nimport type from './type';\nimport any from './any';\n\nexport default {\n string,\n method,\n number,\n boolean,\n regexp,\n integer,\n float,\n array,\n object,\n enum: enumValidator,\n pattern,\n date,\n url: type,\n hex: type,\n email: type,\n required,\n any,\n};\n","export function newMessages() {\n return {\n default: 'Validation error on field %s',\n required: '%s is required',\n enum: '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid',\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n boolean: '%s is not a %s',\n integer: '%s is not an %s',\n float: '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s',\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters',\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s',\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length',\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s',\n },\n clone() {\n const cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n },\n };\n}\n\nexport const messages = newMessages();\n","import {\n format,\n complementError,\n asyncMap,\n warning,\n deepMerge,\n convertFieldsError,\n} from './util';\nimport validators from './validator/index';\nimport { messages as defaultMessages, newMessages } from './messages';\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\nfunction Schema(descriptor) {\n this.rules = null;\n this._messages = defaultMessages;\n this.define(descriptor);\n}\n\nSchema.prototype = {\n messages(messages) {\n if (messages) {\n this._messages = deepMerge(newMessages(), messages);\n }\n return this._messages;\n },\n define(rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n let z;\n let item;\n for (z in rules) {\n if (rules.hasOwnProperty(z)) {\n item = rules[z];\n this.rules[z] = Array.isArray(item) ? item : [item];\n }\n }\n },\n validate(source_, o = {}, oc = () => {}) {\n let source = source_;\n let options = o;\n let callback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback();\n }\n return Promise.resolve();\n }\n\n function complete(results) {\n let i;\n let errors = [];\n let fields = {};\n\n function add(e) {\n if (Array.isArray(e)) {\n errors = errors.concat(...e);\n } else {\n errors.push(e);\n }\n }\n\n for (i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n errors = null;\n fields = null;\n } else {\n fields = convertFieldsError(errors);\n }\n callback(errors, fields);\n }\n\n if (options.messages) {\n let messages = this.messages();\n if (messages === defaultMessages) {\n messages = newMessages();\n }\n deepMerge(messages, options.messages);\n options.messages = messages;\n } else {\n options.messages = this.messages();\n }\n let arr;\n let value;\n const series = {};\n const keys = options.keys || Object.keys(this.rules);\n keys.forEach(z => {\n arr = this.rules[z];\n value = source[z];\n arr.forEach(r => {\n let rule = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = { ...source };\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule,\n };\n } else {\n rule = { ...rule };\n }\n rule.validator = this.getValidationMethod(rule);\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = this.getType(rule);\n if (!rule.validator) {\n return;\n }\n series[z] = series[z] || [];\n series[z].push({\n rule,\n value,\n source,\n field: z,\n });\n });\n });\n const errorFields = {};\n return asyncMap(\n series,\n options,\n (data, doIt) => {\n const rule = data.rule;\n let deep =\n (rule.type === 'object' || rule.type === 'array') &&\n (typeof rule.fields === 'object' ||\n typeof rule.defaultField === 'object');\n deep = deep && (rule.required || (!rule.required && data.value));\n rule.field = data.field;\n\n function addFullfield(key, schema) {\n return {\n ...schema,\n fullField: `${rule.fullField}.${key}`,\n };\n }\n\n function cb(e = []) {\n let errors = e;\n if (!Array.isArray(errors)) {\n errors = [errors];\n }\n if (!options.suppressWarning && errors.length) {\n Schema.warning('async-validator:', errors);\n }\n if (errors.length && rule.message !== undefined) {\n errors = [].concat(rule.message);\n }\n\n errors = errors.map(complementError(rule));\n\n if (options.first && errors.length) {\n errorFields[rule.field] = 1;\n return doIt(errors);\n }\n if (!deep) {\n doIt(errors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n errors = [].concat(rule.message).map(complementError(rule));\n } else if (options.error) {\n errors = [\n options.error(\n rule,\n format(options.messages.required, rule.field),\n ),\n ];\n }\n return doIt(errors);\n }\n\n let fieldsSchema = {};\n if (rule.defaultField) {\n for (const k in data.value) {\n if (data.value.hasOwnProperty(k)) {\n fieldsSchema[k] = rule.defaultField;\n }\n }\n }\n fieldsSchema = {\n ...fieldsSchema,\n ...data.rule.fields,\n };\n for (const f in fieldsSchema) {\n if (fieldsSchema.hasOwnProperty(f)) {\n const fieldSchema = Array.isArray(fieldsSchema[f])\n ? fieldsSchema[f]\n : [fieldsSchema[f]];\n fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n }\n }\n const schema = new Schema(fieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, errs => {\n const finalErrors = [];\n if (errors && errors.length) {\n finalErrors.push(...errors);\n }\n if (errs && errs.length) {\n finalErrors.push(...errs);\n }\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n let res;\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n res = rule.validator(rule, data.value, cb, data.source, options);\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(rule.message || `${rule.field} fails`);\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n if (res && res.then) {\n res.then(\n () => cb(),\n e => cb(e),\n );\n }\n },\n results => {\n complete(results);\n },\n );\n },\n getType(rule) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (\n typeof rule.validator !== 'function' &&\n rule.type &&\n !validators.hasOwnProperty(rule.type)\n ) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n },\n getValidationMethod(rule) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n const keys = Object.keys(rule);\n const messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || false;\n },\n};\n\nSchema.register = function register(type, validator) {\n if (typeof validator !== 'function') {\n throw new Error(\n 'Cannot register a validator by type, validator is not a function',\n );\n }\n validators[type] = validator;\n};\n\nSchema.warning = warning;\n\nSchema.messages = defaultMessages;\n\nSchema.validators = validators;\n\nexport default Schema;\n"],"names":["formatRegExp","warning","process","env","NODE_ENV","window","document","type","errors","console","warn","every","e","convertFieldsError","length","fields","forEach","error","field","push","format","args","i","f","len","apply","slice","str","String","replace","x","Number","JSON","stringify","_","isNativeStringType","isEmptyValue","value","undefined","Array","isArray","asyncParallelArray","arr","func","callback","results","total","arrLength","count","a","asyncSerialArray","index","next","original","flattenObjArr","objArr","ret","Object","keys","k","AsyncValidationError","Error","asyncMap","option","first","pending","Promise","resolve","reject","flattenArr","firstFields","objArrKeys","objArrLength","key","indexOf","complementError","rule","oe","message","fullField","deepMerge","target","source","s","hasOwnProperty","required","options","util","messages","whitespace","test","pattern","email","url","RegExp","hex","types","integer","number","parseInt","array","regexp","date","getTime","getMonth","getYear","isNaN","object","method","match","custom","ruleType","range","min","max","spRegexp","val","num","ENUM","enumerable","join","lastIndex","mismatch","_pattern","enumRule","string","validate","rules","boolean","floatFn","dateObject","Date","any","float","enumValidator","newMessages","parse","invalid","clone","cloned","Schema","descriptor","_messages","defaultMessages","define","prototype","z","item","source_","o","oc","complete","add","concat","series","r","transform","validator","getValidationMethod","getType","errorFields","data","doIt","deep","defaultField","addFullfield","schema","cb","suppressWarning","map","fieldsSchema","fieldSchema","bind","errs","finalErrors","res","asyncValidator","then","validators","messageIndex","splice","register"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/async-validator/package.json b/node_modules/async-validator/package.json new file mode 100644 index 0000000..160022a --- /dev/null +++ b/node_modules/async-validator/package.json @@ -0,0 +1,71 @@ +{ + "_from": "async-validator", + "_id": "async-validator@3.5.1", + "_inBundle": false, + "_integrity": "sha1-zWK5aIskZfSEIOJ620d2CrG1VZ8=", + "_location": "/async-validator", + "_phantomChildren": {}, + "_requested": { + "type": "tag", + "registry": true, + "raw": "async-validator", + "name": "async-validator", + "escapedName": "async-validator", + "rawSpec": "", + "saveSpec": null, + "fetchSpec": "latest" + }, + "_requiredBy": [ + "#USER", + "/" + ], + "_resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-3.5.1.tgz?cache=0&sync_timestamp=1605749896979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-validator%2Fdownload%2Fasync-validator-3.5.1.tgz", + "_shasum": "cd62b9688b2465f48420e27adb47760ab1b5559f", + "_spec": "async-validator", + "_where": "D:\\大庆\\ui文件\\大庆小程序", + "bugs": { + "url": "https://github.com/yiminghe/async-validator/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "validate form asynchronous", + "devDependencies": { + "@babel/preset-env": "^7.8.7", + "@pika/pack": "^0.5.0", + "@pika/plugin-build-types": "^0.6.0", + "@pika/plugin-standard-pkg": "^0.6.0", + "@pika/types": "^0.6.0", + "babel-jest": "^24.8.0", + "coveralls": "^2.13.1", + "jest": "^24.8.0", + "lint-staged": "^7.2.0", + "np": "^5.0.3", + "pika-plugin-build-web-babel": "^0.8.0", + "pika-plugin-clean-dist-src": "^0.1.1", + "pre-commit": "^1.2.2", + "prettier": "^1.11.1" + }, + "files": [ + "dist-*/", + "bin/" + ], + "homepage": "https://github.com/yiminghe/async-validator", + "keywords": [ + "validator", + "validate", + "async" + ], + "license": "MIT", + "main": "dist-node/index.js", + "module": "dist-web/index.js", + "name": "async-validator", + "pika": true, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/yiminghe/async-validator.git" + }, + "sideEffects": false, + "types": "dist-types/index.d.ts", + "version": "3.5.1" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1696031 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "async-validator": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-3.5.1.tgz?cache=0&sync_timestamp=1605749896979&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-validator%2Fdownload%2Fasync-validator-3.5.1.tgz", + "integrity": "sha1-zWK5aIskZfSEIOJ620d2CrG1VZ8=" + } + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..50c6c35 --- /dev/null +++ b/pages.json @@ -0,0 +1,248 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "待办事项" + } + }, + { + "path": "pages/workbench/workbench", + "style": { + "navigationBarTitleText": "工作台" + } + }, + { + "path": "pages/user/user", + "style": { + "navigationBarTitleText": "我的" + } + }, + { + "path": "pages/customer/customer", + "style": { + "navigationBarTitleText": "客户资源管理系统" + } + }, + { + "path": "pages/guarantee/guarantee", + "style": { + "navigationBarTitleText": "担保业务管理系统" + } + }, + { + "path": "pages/addcustomer/addcustomer", + "style": { + "navigationBarTitleText": "添加客户信息" + } + }, + { + "path": "pages/aboutUs/aboutUs", + "style": { + "navigationBarTitleText": "关于我们" + } + }, + { + "path": "pages/personalInfo/personalInfo", + "style": { + "navigationBarTitleText": "个人信息" + } + }, + { + "path": "pages/bindPhone/bindPhone", + "style": { + "navigationBarTitleText": "绑定手机号" + } + }, + { + "path": "pages/application/application", + "style": { + "navigationBarTitleText": "业务申请" + } + }, + { + "path": "pages/addApplication/addApplication", + "style": { + "navigationBarTitleText": "新增业务申请" + } + }, + { + "path": "pages/investigation/investigation", + "style": { + "navigationBarTitleText": "担保部调查" + } + }, + { + "path": "pages/assignAB/assignAB", + "style": { + "navigationBarTitleText": "指派AB角" + } + }, + { + "path": "pages/investigationSee/investigationSee", + "style": { + "navigationBarTitleText": "担保部调查" + } + }, + { + "path": "pages/asset/asset", + "style": { + "navigationBarTitleText": "资产部调查" + } + }, + { + "path": "pages/assignCommissioner/assignCommissioner", + "style": { + "navigationBarTitleText": "指派资产部专员" + } + }, + { + "path": "pages/assetSee/assetSee", + "style": { + "navigationBarTitleText": "资产部调查" + } + }, + { + "path": "pages/Information/Information", + "style": { + "navigationBarTitleText": "信息部调查" + } + }, + { + "path": "pages/assignInformation/assignInformation", + "style": { + "navigationBarTitleText": "指派信息部专员" + } + }, + { + "path": "pages/InformationSee/InformationSee", + "style": { + "navigationBarTitleText": "信息部调查" + } + }, + { + "path": "pages/regulation/regulation", + "style": { + "navigationBarTitleText": "合规调查" + } + }, + { + "path": "pages/regulationSee/regulationSee", + "style": { + "navigationBarTitleText": "合规调查" + } + }, + { + "path": "pages/workMeeting/workMeeting", + "style": { + "navigationBarTitleText": "工作会" + } + }, + { + "path": "pages/workMeetingSee/workMeetingSee", + "style": { + "navigationBarTitleText": "工作会" + } + }, + { + "path": "pages/reviewJudges/reviewJudges", + "style": { + "navigationBarTitleText": "贷审会评委" + } + }, + { + "path": "pages/review/review", + "style": { + "navigationBarTitleText": "贷审会" + } + }, + { + "path": "pages/reviewSee/reviewSee", + "style": { + "navigationBarTitleText": "贷审会" + } + }, + { + "path": "pages/letter/letter", + "style": { + "navigationBarTitleText": "担保函" + } + }, + { + "path": "pages/letterSee/letterSee", + "style": { + "navigationBarTitleText": "担保承诺函" + } + }, + { + "path": "pages/payment/payment", + "style": { + "navigationBarTitleText": "回款确认" + } + }, + { + "path": "pages/notice/notice", + "style": { + "navigationBarTitleText": "放款通知" + } + }, + { + "path": "pages/noticeSee/noticeSee", + "style": { + "navigationBarTitleText": "放款通知" + } + }, + { + "path": "pages/paymentSee/paymentSee", + "style": { + "navigationBarTitleText": "担保承诺函" + } + }, + { + "path": "pages/statistics/statistics", + "style": { + "navigationBarTitleText": "进度查询" + } + }, + { + "path": "pages/refuse/refuse", + "style": { + "navigationBarTitleText": "拒绝查询" + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "backgroundColorTop":"#FFFFFF", // iOS APP真机bounce回弹区域默认灰色,建议统一重置为白色 + "usingComponents": { + "ly-tree-node": "/components/ly-tree/ly-tree-node" + } + }, + "tabBar": { + "color": "#707070", + "selectedColor": "#00B9FF", + "borderStyle": "black", + "backgroundColor": "#FFF", + "list": [{ + "pagePath": "pages/index/index", + "iconPath": "static/img/icon_4_blue.png", + "selectedIconPath": "static/img/icon_4.png", + "text": "待办事项" + }, + { + "pagePath": "pages/workbench/workbench", + "iconPath": "static/img/icon_5.png", + "selectedIconPath": "static/img/icon_5_blue.png", + "text": "工作台" + }, { + "pagePath": "pages/user/user", + "iconPath": "static/img/icon_2.png", + "selectedIconPath": "static/img/icon_2_blue.png", + "text": "我的" + } + ] + } +} diff --git a/pages/Information/Information.vue b/pages/Information/Information.vue new file mode 100644 index 0000000..494f6bd --- /dev/null +++ b/pages/Information/Information.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/InformationSee/InformationSee.vue b/pages/InformationSee/InformationSee.vue new file mode 100644 index 0000000..b3d0623 --- /dev/null +++ b/pages/InformationSee/InformationSee.vue @@ -0,0 +1,882 @@ + + + + + diff --git a/pages/aboutUs/aboutUs.vue b/pages/aboutUs/aboutUs.vue new file mode 100644 index 0000000..cc9efb6 --- /dev/null +++ b/pages/aboutUs/aboutUs.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/pages/addApplication/addApplication.vue b/pages/addApplication/addApplication.vue new file mode 100644 index 0000000..412c9dd --- /dev/null +++ b/pages/addApplication/addApplication.vue @@ -0,0 +1,1114 @@ + + + + + diff --git a/pages/addcustomer/addcustomer.vue b/pages/addcustomer/addcustomer.vue new file mode 100644 index 0000000..6524d92 --- /dev/null +++ b/pages/addcustomer/addcustomer.vue @@ -0,0 +1,1108 @@ + + + + + diff --git a/pages/application/application.vue b/pages/application/application.vue new file mode 100644 index 0000000..9639ff5 --- /dev/null +++ b/pages/application/application.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/pages/asset/asset.vue b/pages/asset/asset.vue new file mode 100644 index 0000000..ca08bb7 --- /dev/null +++ b/pages/asset/asset.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/assetSee/assetSee.vue b/pages/assetSee/assetSee.vue new file mode 100644 index 0000000..bd6141b --- /dev/null +++ b/pages/assetSee/assetSee.vue @@ -0,0 +1,578 @@ + + + + + diff --git a/pages/assignAB/assignAB.vue b/pages/assignAB/assignAB.vue new file mode 100644 index 0000000..78cd2ae --- /dev/null +++ b/pages/assignAB/assignAB.vue @@ -0,0 +1,241 @@ + + + + + \ No newline at end of file diff --git a/pages/assignCommissioner/assignCommissioner.vue b/pages/assignCommissioner/assignCommissioner.vue new file mode 100644 index 0000000..0e91ecc --- /dev/null +++ b/pages/assignCommissioner/assignCommissioner.vue @@ -0,0 +1,210 @@ + + + + + \ No newline at end of file diff --git a/pages/assignInformation/assignInformation.vue b/pages/assignInformation/assignInformation.vue new file mode 100644 index 0000000..0e91ecc --- /dev/null +++ b/pages/assignInformation/assignInformation.vue @@ -0,0 +1,210 @@ + + + + + \ No newline at end of file diff --git a/pages/bindPhone/bindPhone.vue b/pages/bindPhone/bindPhone.vue new file mode 100644 index 0000000..9fae589 --- /dev/null +++ b/pages/bindPhone/bindPhone.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/pages/customer/customer.vue b/pages/customer/customer.vue new file mode 100644 index 0000000..928aa03 --- /dev/null +++ b/pages/customer/customer.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/pages/guarantee/guarantee.vue b/pages/guarantee/guarantee.vue new file mode 100644 index 0000000..74f6128 --- /dev/null +++ b/pages/guarantee/guarantee.vue @@ -0,0 +1,182 @@ + + + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..62508c0 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/pages/investigation/investigation.vue b/pages/investigation/investigation.vue new file mode 100644 index 0000000..179b703 --- /dev/null +++ b/pages/investigation/investigation.vue @@ -0,0 +1,247 @@ + + + + + diff --git a/pages/investigationSee/investigationSee.vue b/pages/investigationSee/investigationSee.vue new file mode 100644 index 0000000..1bdda4b --- /dev/null +++ b/pages/investigationSee/investigationSee.vue @@ -0,0 +1,774 @@ + + + + + diff --git a/pages/letter/letter.vue b/pages/letter/letter.vue new file mode 100644 index 0000000..df7f59c --- /dev/null +++ b/pages/letter/letter.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/letterSee/letterSee.vue b/pages/letterSee/letterSee.vue new file mode 100644 index 0000000..e13adb1 --- /dev/null +++ b/pages/letterSee/letterSee.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/pages/notice/notice.vue b/pages/notice/notice.vue new file mode 100644 index 0000000..8d10791 --- /dev/null +++ b/pages/notice/notice.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/noticeSee/noticeSee.vue b/pages/noticeSee/noticeSee.vue new file mode 100644 index 0000000..e13adb1 --- /dev/null +++ b/pages/noticeSee/noticeSee.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/pages/payment/payment.vue b/pages/payment/payment.vue new file mode 100644 index 0000000..07f8bbb --- /dev/null +++ b/pages/payment/payment.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/paymentSee/paymentSee.vue b/pages/paymentSee/paymentSee.vue new file mode 100644 index 0000000..1405dfb --- /dev/null +++ b/pages/paymentSee/paymentSee.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/pages/personalInfo/personalInfo.vue b/pages/personalInfo/personalInfo.vue new file mode 100644 index 0000000..b1694dd --- /dev/null +++ b/pages/personalInfo/personalInfo.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/pages/refuse/refuse.vue b/pages/refuse/refuse.vue new file mode 100644 index 0000000..d9322e0 --- /dev/null +++ b/pages/refuse/refuse.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/pages/regulation/regulation.vue b/pages/regulation/regulation.vue new file mode 100644 index 0000000..5738f02 --- /dev/null +++ b/pages/regulation/regulation.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/regulationSee/regulationSee.vue b/pages/regulationSee/regulationSee.vue new file mode 100644 index 0000000..c7ed1db --- /dev/null +++ b/pages/regulationSee/regulationSee.vue @@ -0,0 +1,929 @@ + + + + + diff --git a/pages/review/review.vue b/pages/review/review.vue new file mode 100644 index 0000000..8077355 --- /dev/null +++ b/pages/review/review.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/reviewJudges/reviewJudges.vue b/pages/reviewJudges/reviewJudges.vue new file mode 100644 index 0000000..a82a190 --- /dev/null +++ b/pages/reviewJudges/reviewJudges.vue @@ -0,0 +1,318 @@ + + + + + \ No newline at end of file diff --git a/pages/reviewSee/reviewSee.vue b/pages/reviewSee/reviewSee.vue new file mode 100644 index 0000000..76ec27e --- /dev/null +++ b/pages/reviewSee/reviewSee.vue @@ -0,0 +1,570 @@ + + + + + diff --git a/pages/statistics/statistics.vue b/pages/statistics/statistics.vue new file mode 100644 index 0000000..e59bbba --- /dev/null +++ b/pages/statistics/statistics.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/pages/user/user.vue b/pages/user/user.vue new file mode 100644 index 0000000..c6866b1 --- /dev/null +++ b/pages/user/user.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/pages/workMeeting/workMeeting.vue b/pages/workMeeting/workMeeting.vue new file mode 100644 index 0000000..491c7ce --- /dev/null +++ b/pages/workMeeting/workMeeting.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/pages/workMeetingSee/workMeetingSee.vue b/pages/workMeetingSee/workMeetingSee.vue new file mode 100644 index 0000000..76ec27e --- /dev/null +++ b/pages/workMeetingSee/workMeetingSee.vue @@ -0,0 +1,570 @@ + + + + + diff --git a/pages/workbench/workbench.vue b/pages/workbench/workbench.vue new file mode 100644 index 0000000..a6f5833 --- /dev/null +++ b/pages/workbench/workbench.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/plugins/utils.js b/plugins/utils.js new file mode 100644 index 0000000..8ce52fd --- /dev/null +++ b/plugins/utils.js @@ -0,0 +1,15 @@ +import Vue from 'vue' +const utils = { + // 手机号格式是否正确 + isMobilePhone(value) { + const reg = /^1\d{10}$/ + if (reg.test(value)) { + return true + } + return false + } +} + +Vue.prototype.$utils = utils + +export default utils diff --git a/static/css/main.css b/static/css/main.css new file mode 100644 index 0000000..4f3fe09 --- /dev/null +++ b/static/css/main.css @@ -0,0 +1,117 @@ +*{ + color: #707070; +} +::-webkit-scrollbar { + width: 0; + height: 0; + color: transparent; +} +/* input{ + border: 2rpx solid #E6E6E6; + border-radius: 40rpx; + height: 80rpx; + line-height: 80rpx; + padding: 0 40rpx; +} */ +.text-color{ + color: #00B9FF; +} +/* .nav .cu-item.cur{ + border-bottom: 8rpx solid; +} */ +.mat15{ + margin-top: 30rpx; +} +.mat40{ + margin-top: 80rpx; +} +.mgl10{ + margin-left: 20rpx; +} +.mgl30{ + margin-left: 60rpx; +} +.mgr20{ + margin-right: 40rpx; +} +.mal15{ + margin-left: 30rpx; +} +.mar15{ + margin-right: 30rpx; +} +.mab15{ + margin-bottom: 30rpx; +} +.flex{ + display: flex; + align-items: center; +} +.flex-align-start{ + display: flex; + align-items: flex-start; +} +.flex-between{ + display: flex; + align-items: center; + justify-content: space-between; +} +.flex-end{ + display: flex; + align-items: center; + justify-content: flex-end; +} +.flex-column{ + display: flex; + flex-direction: column; + align-items: center; +} +.flex-justify-center{ + display: flex; + align-items: center; + justify-content: center; +} +.bottom-border{ + padding: 30rpx 0; + border-bottom: 4rpx solid #F2F2F2; + background-color: #fff; +} +.left-border{ + border-left: 12rpx solid #00b9ff; + line-height: 32rpx; +} + +/* input样式 */ +.form-input-placeholder { + font-size: 28rpx; + color: #999; +} + +/* button样式 */ +.def-btn{ + background-color: #00B9FF; + color: #fff; +} +.cancel-btn{ + background-color: #FF9784; + color: #fff; +} + +/* picker样式 */ +.picker-view{ + border: 2rpx solid #e5e5e5; + border-radius: 40rpx; + box-sizing: border-box; + width: 80%; + margin-left: 20%; + flex: 1; + text-align: left; + color: #666; + font-size: 28rpx; + min-height: 72rpx; + padding: 0 40rpx; +} +/* picker禁用样式 */ +.disabled-bg{ + background-color: #eee; +} \ No newline at end of file diff --git a/static/css/mainScss.scss b/static/css/mainScss.scss new file mode 100644 index 0000000..304db42 --- /dev/null +++ b/static/css/mainScss.scss @@ -0,0 +1,232 @@ +.evan-form-show { + padding: 0 30rpx; + background-color: #fff; + .form-input { + font-size: 28rpx; + color: #333; + width: 70%; + margin-left: 30%; + box-sizing: border-box; + border: 2rpx solid #E6E6E6; + border-radius: 40rpx; + height: 70rpx; + line-height: 70rpx; + padding: 0 40rpx; + &.textarea{ + height: 240rpx; + padding: 24rpx 0; + text-align: left; + } + } + + .form-input-placeholder { + font-size: 28rpx; + color: #999; + } + + &__button { + width: 100%; + height: 88rpx; + border-radius: 8rpx; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + font-size: 36rpx; + color: #fff; + margin-top: 20rpx; + background-color: #2D87D5; + + &::before, + &::after { + border: none; + } + } + + .customize-form-item { + &__label { + font-size: 28rpx; + color: #333; + margin-bottom: 16rpx; + } + + &__radio { + display: flex; + align-items: center; + margin-bottom: 16rpx; + + &__text { + font-size: 28rpx; + color: #333; + } + } + } +} + +// 按钮颜色 +.foot-btn{ + .plain-btn{ + color: #00B9FF; + border-color: #00B9FF; + } + .def-btn{ + background-color: #00B9FF; + } + .suc-btn{ + background-color: #67C23A; + } +} +.btn-rig{ + text-align: right; + .mar-lr{ + margin-left: 20rpx; + margin-right: 20rpx; + } +} +.pad-bt{ + padding-bottom: 40rpx; +} + +//list样式 +.good-list{ + background-color: #fff; + .good-li{ + display: flex; + align-items: center; + padding: 20upx; + border-bottom: 1upx solid #eee; + + .good-img{ + width: 160upx; + height: 160upx; + margin-right: 20rpx; + } + + .flex-item{ + flex: 1; + + .good-name{ + font-size: 26upx; + line-height: 40upx; + height: 80upx; + margin-bottom: 20upx; + overflow: hidden; + } + .good-price{ + font-size: 26upx; + color: red; + } + .good-sold{ + font-size: 24upx; + margin-left: 16upx; + color: gray; + } + + } + } +} +.charge{ + margin: 0 50rpx; + border-radius: 20rpx; + padding: 0 30rpx; + box-shadow: 0 0 16rpx #ccc; + margin-top: 40rpx; + .charge-title{ + padding: 16rpx 0; + border-bottom: 4rpx solid #F2F2F2; + color: #000; + font-weight: bold; + .charge-status{ + color: #ccc; + } + } + .charge-text{ + padding: 16rpx 0; + color: #707070; + view{ + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 10rpx; + .label-text{ + font-weight: 700; + } + } + .time-text{ + color: #ccc; + } + .status-text{ + font-size: 28rpx; + padding: 8rpx 12rpx; + border-radius: 10rpx; + } + } +} + +//列表样式 + .good-list{ + background-color: #fff; + + .good-li{ + display: flex; + align-items: center; + padding: 20upx; + border-bottom: 1upx solid #eee; + + .good-img{ + width: 160upx; + height: 160upx; + margin-right: 20rpx; + } + + .flex-item{ + flex: 1; + + .good-name{ + font-size: 26upx; + line-height: 40upx; + height: 80upx; + margin-bottom: 20upx; + overflow: hidden; + } + .good-price{ + font-size: 26upx; + color: red; + } + .good-sold{ + font-size: 24upx; + margin-left: 16upx; + color: gray; + } + + } + } + } +.charge{ + margin: 0 50rpx; + border-radius: 20rpx; + padding: 0 30rpx; + box-shadow: 0 0 16rpx #ccc; + margin-top: 40rpx; + .charge-title{ + padding: 16rpx 0; + border-bottom: 4rpx solid #F2F2F2; + color: #000; + font-weight: bold; + .charge-status{ + color: #ccc; + } + } + .charge-text{ + padding: 16rpx 0; + color: #707070; + .time-text{ + color: #ccc; + } + .status-text{ + font-size: 28rpx; + padding: 8rpx 12rpx; + border-radius: 10rpx; + } + } +} \ No newline at end of file diff --git a/static/img/aboutUs.png b/static/img/aboutUs.png new file mode 100644 index 0000000..ec4f538 Binary files /dev/null and b/static/img/aboutUs.png differ diff --git a/static/img/btn_1.png b/static/img/btn_1.png new file mode 100644 index 0000000..6acead7 Binary files /dev/null and b/static/img/btn_1.png differ diff --git a/static/img/btn_10.png b/static/img/btn_10.png new file mode 100644 index 0000000..11dffad Binary files /dev/null and b/static/img/btn_10.png differ diff --git a/static/img/btn_11.png b/static/img/btn_11.png new file mode 100644 index 0000000..396ce17 Binary files /dev/null and b/static/img/btn_11.png differ diff --git a/static/img/btn_12.png b/static/img/btn_12.png new file mode 100644 index 0000000..5bcbb59 Binary files /dev/null and b/static/img/btn_12.png differ diff --git a/static/img/btn_13.png b/static/img/btn_13.png new file mode 100644 index 0000000..cefac2c Binary files /dev/null and b/static/img/btn_13.png differ diff --git a/static/img/btn_14.png b/static/img/btn_14.png new file mode 100644 index 0000000..4570dd4 Binary files /dev/null and b/static/img/btn_14.png differ diff --git a/static/img/btn_15.png b/static/img/btn_15.png new file mode 100644 index 0000000..492739e Binary files /dev/null and b/static/img/btn_15.png differ diff --git a/static/img/btn_16.png b/static/img/btn_16.png new file mode 100644 index 0000000..7e03fe3 Binary files /dev/null and b/static/img/btn_16.png differ diff --git a/static/img/btn_17.png b/static/img/btn_17.png new file mode 100644 index 0000000..c021d7f Binary files /dev/null and b/static/img/btn_17.png differ diff --git a/static/img/btn_18.png b/static/img/btn_18.png new file mode 100644 index 0000000..2223490 Binary files /dev/null and b/static/img/btn_18.png differ diff --git a/static/img/btn_19.png b/static/img/btn_19.png new file mode 100644 index 0000000..7b1777b Binary files /dev/null and b/static/img/btn_19.png differ diff --git a/static/img/btn_2.png b/static/img/btn_2.png new file mode 100644 index 0000000..fc74fbd Binary files /dev/null and b/static/img/btn_2.png differ diff --git a/static/img/btn_20.png b/static/img/btn_20.png new file mode 100644 index 0000000..256a553 Binary files /dev/null and b/static/img/btn_20.png differ diff --git a/static/img/btn_3.png b/static/img/btn_3.png new file mode 100644 index 0000000..596ddcd Binary files /dev/null and b/static/img/btn_3.png differ diff --git a/static/img/btn_4.png b/static/img/btn_4.png new file mode 100644 index 0000000..128c783 Binary files /dev/null and b/static/img/btn_4.png differ diff --git a/static/img/btn_5.png b/static/img/btn_5.png new file mode 100644 index 0000000..eb84ccf Binary files /dev/null and b/static/img/btn_5.png differ diff --git a/static/img/btn_6.png b/static/img/btn_6.png new file mode 100644 index 0000000..cdd4164 Binary files /dev/null and b/static/img/btn_6.png differ diff --git a/static/img/btn_7.png b/static/img/btn_7.png new file mode 100644 index 0000000..231cc93 Binary files /dev/null and b/static/img/btn_7.png differ diff --git a/static/img/btn_8.png b/static/img/btn_8.png new file mode 100644 index 0000000..baa96d0 Binary files /dev/null and b/static/img/btn_8.png differ diff --git a/static/img/btn_9.png b/static/img/btn_9.png new file mode 100644 index 0000000..377f540 Binary files /dev/null and b/static/img/btn_9.png differ diff --git a/static/img/btn_add.png b/static/img/btn_add.png new file mode 100644 index 0000000..8030e2d Binary files /dev/null and b/static/img/btn_add.png differ diff --git a/static/img/btn_add_n.png b/static/img/btn_add_n.png new file mode 100644 index 0000000..c43fb68 Binary files /dev/null and b/static/img/btn_add_n.png differ diff --git a/static/img/btn_add_p.png b/static/img/btn_add_p.png new file mode 100644 index 0000000..23753c1 Binary files /dev/null and b/static/img/btn_add_p.png differ diff --git a/static/img/btn_cancel.png b/static/img/btn_cancel.png new file mode 100644 index 0000000..42c82dc Binary files /dev/null and b/static/img/btn_cancel.png differ diff --git a/static/img/btn_cancel_1.png b/static/img/btn_cancel_1.png new file mode 100644 index 0000000..d849357 Binary files /dev/null and b/static/img/btn_cancel_1.png differ diff --git a/static/img/btn_cancel_n.png b/static/img/btn_cancel_n.png new file mode 100644 index 0000000..bbc2497 Binary files /dev/null and b/static/img/btn_cancel_n.png differ diff --git a/static/img/btn_cancel_n_2.png b/static/img/btn_cancel_n_2.png new file mode 100644 index 0000000..2b0d6b6 Binary files /dev/null and b/static/img/btn_cancel_n_2.png differ diff --git a/static/img/btn_close.png b/static/img/btn_close.png new file mode 100644 index 0000000..84a33b2 Binary files /dev/null and b/static/img/btn_close.png differ diff --git a/static/img/btn_combo.png b/static/img/btn_combo.png new file mode 100644 index 0000000..0e36346 Binary files /dev/null and b/static/img/btn_combo.png differ diff --git a/static/img/btn_d.png b/static/img/btn_d.png new file mode 100644 index 0000000..52fb13c Binary files /dev/null and b/static/img/btn_d.png differ diff --git a/static/img/btn_ok_1.png b/static/img/btn_ok_1.png new file mode 100644 index 0000000..b436ae1 Binary files /dev/null and b/static/img/btn_ok_1.png differ diff --git a/static/img/btn_pass.png b/static/img/btn_pass.png new file mode 100644 index 0000000..dbbb47c Binary files /dev/null and b/static/img/btn_pass.png differ diff --git a/static/img/btn_pass_s.png b/static/img/btn_pass_s.png new file mode 100644 index 0000000..16410a5 Binary files /dev/null and b/static/img/btn_pass_s.png differ diff --git a/static/img/btn_per_un.png b/static/img/btn_per_un.png new file mode 100644 index 0000000..d103448 Binary files /dev/null and b/static/img/btn_per_un.png differ diff --git a/static/img/btn_pre.png b/static/img/btn_pre.png new file mode 100644 index 0000000..03202ed Binary files /dev/null and b/static/img/btn_pre.png differ diff --git a/static/img/btn_reject_s.png b/static/img/btn_reject_s.png new file mode 100644 index 0000000..955e935 Binary files /dev/null and b/static/img/btn_reject_s.png differ diff --git a/static/img/btn_search.png b/static/img/btn_search.png new file mode 100644 index 0000000..221f14b Binary files /dev/null and b/static/img/btn_search.png differ diff --git a/static/img/btn_search_s.png b/static/img/btn_search_s.png new file mode 100644 index 0000000..35fa912 Binary files /dev/null and b/static/img/btn_search_s.png differ diff --git a/static/img/btn_sure_h.png b/static/img/btn_sure_h.png new file mode 100644 index 0000000..6724e20 Binary files /dev/null and b/static/img/btn_sure_h.png differ diff --git a/static/img/btn_sure_n.png b/static/img/btn_sure_n.png new file mode 100644 index 0000000..7b8807f Binary files /dev/null and b/static/img/btn_sure_n.png differ diff --git a/static/img/btn_turedown_s.png b/static/img/btn_turedown_s.png new file mode 100644 index 0000000..282bb04 Binary files /dev/null and b/static/img/btn_turedown_s.png differ diff --git a/static/img/db-icon1.png b/static/img/db-icon1.png new file mode 100644 index 0000000..59e801e Binary files /dev/null and b/static/img/db-icon1.png differ diff --git a/static/img/db-icon10.png b/static/img/db-icon10.png new file mode 100644 index 0000000..400d6c8 Binary files /dev/null and b/static/img/db-icon10.png differ diff --git a/static/img/db-icon11.png b/static/img/db-icon11.png new file mode 100644 index 0000000..2012b40 Binary files /dev/null and b/static/img/db-icon11.png differ diff --git a/static/img/db-icon12.png b/static/img/db-icon12.png new file mode 100644 index 0000000..2e4df0a Binary files /dev/null and b/static/img/db-icon12.png differ diff --git a/static/img/db-icon13.png b/static/img/db-icon13.png new file mode 100644 index 0000000..ebeb687 Binary files /dev/null and b/static/img/db-icon13.png differ diff --git a/static/img/db-icon14.png b/static/img/db-icon14.png new file mode 100644 index 0000000..b4fd242 Binary files /dev/null and b/static/img/db-icon14.png differ diff --git a/static/img/db-icon15.png b/static/img/db-icon15.png new file mode 100644 index 0000000..640cc13 Binary files /dev/null and b/static/img/db-icon15.png differ diff --git a/static/img/db-icon16.png b/static/img/db-icon16.png new file mode 100644 index 0000000..c9c95e3 Binary files /dev/null and b/static/img/db-icon16.png differ diff --git a/static/img/db-icon17.png b/static/img/db-icon17.png new file mode 100644 index 0000000..55baea9 Binary files /dev/null and b/static/img/db-icon17.png differ diff --git a/static/img/db-icon2.png b/static/img/db-icon2.png new file mode 100644 index 0000000..e508f5d Binary files /dev/null and b/static/img/db-icon2.png differ diff --git a/static/img/db-icon3.png b/static/img/db-icon3.png new file mode 100644 index 0000000..5b03737 Binary files /dev/null and b/static/img/db-icon3.png differ diff --git a/static/img/db-icon4.png b/static/img/db-icon4.png new file mode 100644 index 0000000..4b39bb7 Binary files /dev/null and b/static/img/db-icon4.png differ diff --git a/static/img/db-icon5.png b/static/img/db-icon5.png new file mode 100644 index 0000000..50be4ab Binary files /dev/null and b/static/img/db-icon5.png differ diff --git a/static/img/db-icon6.png b/static/img/db-icon6.png new file mode 100644 index 0000000..2245f5b Binary files /dev/null and b/static/img/db-icon6.png differ diff --git a/static/img/db-icon7.png b/static/img/db-icon7.png new file mode 100644 index 0000000..0472b54 Binary files /dev/null and b/static/img/db-icon7.png differ diff --git a/static/img/db-icon8.png b/static/img/db-icon8.png new file mode 100644 index 0000000..61a2853 Binary files /dev/null and b/static/img/db-icon8.png differ diff --git a/static/img/db-icon9.png b/static/img/db-icon9.png new file mode 100644 index 0000000..ec1cbf1 Binary files /dev/null and b/static/img/db-icon9.png differ diff --git a/static/img/icon-user.png b/static/img/icon-user.png new file mode 100644 index 0000000..2a8d1a8 Binary files /dev/null and b/static/img/icon-user.png differ diff --git a/static/img/icon_1.png b/static/img/icon_1.png new file mode 100644 index 0000000..878affa Binary files /dev/null and b/static/img/icon_1.png differ diff --git a/static/img/icon_10.png b/static/img/icon_10.png new file mode 100644 index 0000000..10c4196 Binary files /dev/null and b/static/img/icon_10.png differ diff --git a/static/img/icon_11.png b/static/img/icon_11.png new file mode 100644 index 0000000..3ff3865 Binary files /dev/null and b/static/img/icon_11.png differ diff --git a/static/img/icon_12.png b/static/img/icon_12.png new file mode 100644 index 0000000..7bd363f Binary files /dev/null and b/static/img/icon_12.png differ diff --git a/static/img/icon_13.png b/static/img/icon_13.png new file mode 100644 index 0000000..378ae4c Binary files /dev/null and b/static/img/icon_13.png differ diff --git a/static/img/icon_2.png b/static/img/icon_2.png new file mode 100644 index 0000000..4655f7a Binary files /dev/null and b/static/img/icon_2.png differ diff --git a/static/img/icon_2_blue.png b/static/img/icon_2_blue.png new file mode 100644 index 0000000..461d76a Binary files /dev/null and b/static/img/icon_2_blue.png differ diff --git a/static/img/icon_3.png b/static/img/icon_3.png new file mode 100644 index 0000000..7bd363f Binary files /dev/null and b/static/img/icon_3.png differ diff --git a/static/img/icon_4.png b/static/img/icon_4.png new file mode 100644 index 0000000..667d5f0 Binary files /dev/null and b/static/img/icon_4.png differ diff --git a/static/img/icon_4_blue.png b/static/img/icon_4_blue.png new file mode 100644 index 0000000..e7e3a5c Binary files /dev/null and b/static/img/icon_4_blue.png differ diff --git a/static/img/icon_5.png b/static/img/icon_5.png new file mode 100644 index 0000000..8a37bb6 Binary files /dev/null and b/static/img/icon_5.png differ diff --git a/static/img/icon_5_blue.png b/static/img/icon_5_blue.png new file mode 100644 index 0000000..8addd3a Binary files /dev/null and b/static/img/icon_5_blue.png differ diff --git a/static/img/icon_6.png b/static/img/icon_6.png new file mode 100644 index 0000000..e7aea14 Binary files /dev/null and b/static/img/icon_6.png differ diff --git a/static/img/icon_7.png b/static/img/icon_7.png new file mode 100644 index 0000000..558168f Binary files /dev/null and b/static/img/icon_7.png differ diff --git a/static/img/icon_8.png b/static/img/icon_8.png new file mode 100644 index 0000000..9d40dda Binary files /dev/null and b/static/img/icon_8.png differ diff --git a/static/img/icon_9.png b/static/img/icon_9.png new file mode 100644 index 0000000..52b10a9 Binary files /dev/null and b/static/img/icon_9.png differ diff --git a/static/img/icon_emoji.png b/static/img/icon_emoji.png new file mode 100644 index 0000000..eb80aec Binary files /dev/null and b/static/img/icon_emoji.png differ diff --git a/static/img/icon_fail.png b/static/img/icon_fail.png new file mode 100644 index 0000000..5ad45a6 Binary files /dev/null and b/static/img/icon_fail.png differ diff --git a/static/img/icon_fail_s.png b/static/img/icon_fail_s.png new file mode 100644 index 0000000..c823e78 Binary files /dev/null and b/static/img/icon_fail_s.png differ diff --git a/static/img/icon_ing.png b/static/img/icon_ing.png new file mode 100644 index 0000000..38ddc0c Binary files /dev/null and b/static/img/icon_ing.png differ diff --git a/static/img/icon_link.png b/static/img/icon_link.png new file mode 100644 index 0000000..1f95d02 Binary files /dev/null and b/static/img/icon_link.png differ diff --git a/static/img/icon_notice.png b/static/img/icon_notice.png new file mode 100644 index 0000000..cc2b546 Binary files /dev/null and b/static/img/icon_notice.png differ diff --git a/static/img/icon_pass.png b/static/img/icon_pass.png new file mode 100644 index 0000000..86324d0 Binary files /dev/null and b/static/img/icon_pass.png differ diff --git a/static/img/icon_pass_s.png b/static/img/icon_pass_s.png new file mode 100644 index 0000000..db0bfe3 Binary files /dev/null and b/static/img/icon_pass_s.png differ diff --git a/static/img/icon_password.png b/static/img/icon_password.png new file mode 100644 index 0000000..ad5cb96 Binary files /dev/null and b/static/img/icon_password.png differ diff --git a/static/img/icon_pic.png b/static/img/icon_pic.png new file mode 100644 index 0000000..0a927b0 Binary files /dev/null and b/static/img/icon_pic.png differ diff --git a/static/img/user-bg.png b/static/img/user-bg.png new file mode 100644 index 0000000..a0bfa73 Binary files /dev/null and b/static/img/user-bg.png differ diff --git a/static/img/微信登陆icon.png b/static/img/微信登陆icon.png new file mode 100644 index 0000000..76434e7 Binary files /dev/null and b/static/img/微信登陆icon.png differ diff --git a/static/img/智慧金管icon.png b/static/img/智慧金管icon.png new file mode 100644 index 0000000..c668cec Binary files /dev/null and b/static/img/智慧金管icon.png differ diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..5cfb211 --- /dev/null +++ b/uni.scss @@ -0,0 +1,78 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:24rpx; +$uni-font-size-base:28rpx; +$uni-font-size-lg:32rpx; + +/* 图片尺寸 */ +$uni-img-size-sm:40rpx; +$uni-img-size-base:52rpx; +$uni-img-size-lg:80rpx; + +/* Border Radius */ +$uni-border-radius-sm: 4rpx; +$uni-border-radius-base: 6rpx; +$uni-border-radius-lg: 12rpx; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20rpx; +$uni-spacing-row-lg: 30rpx; + +/* 垂直间距 */ +$uni-spacing-col-sm: 8rpx; +$uni-spacing-col-base: 16rpx; +$uni-spacing-col-lg: 24rpx; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:40rpx; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:36rpx; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:30rpx; + +@import "@/static/css/mainScss.scss"; \ No newline at end of file diff --git a/unpackage/dist/dev/.automator/mp-weixin/.automator.json b/unpackage/dist/dev/.automator/mp-weixin/.automator.json new file mode 100644 index 0000000..e69de29 diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-custom.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-custom.js.map new file mode 100644 index 0000000..0505df7 --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-custom.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///D:/大庆/ui文件/大庆小程序/colorui/components/cu-custom.vue?a970","webpack:///D:/大庆/ui文件/大庆小程序/colorui/components/cu-custom.vue?6fb0","webpack:///D:/大庆/ui文件/大庆小程序/colorui/components/cu-custom.vue?bd1f","webpack:///D:/大庆/ui文件/大庆小程序/colorui/components/cu-custom.vue?b6c4","uni-app:///colorui/components/cu-custom.vue"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsH;AACtH;AAC6D;AACL;;;AAGxD;AACsK;AACtK,gBAAgB,6KAAU;AAC1B,EAAE,+EAAM;AACR,EAAE,oFAAM;AACR,EAAE,6FAAe;AACjB;AACA;AACA;AACA;AACA;AACA,EAAE,wFAAU;AACZ;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACtBf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAqnB,CAAgB,mnBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkBzoB;AACA,MADA,kBACA;AACA;AACA,+BADA;AAEA,+BAFA;;AAIA,GANA;AAOA,mBAPA;AAQA;AACA,SADA,mBACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAVA,EARA;;AAoBA;AACA;AACA,kBADA;AAEA,iBAFA,EADA;;AAKA;AACA,6BADA;AAEA,oBAFA,EALA;;AASA;AACA,kBADA;AAEA,iBAFA,EATA,EApBA;;;AAkCA;AACA,YADA,sBACA;AACA;AACA;AACA;AACA;AACA;AACA,gBADA;;AAGA,KATA,EAlCA,E","file":"colorui/components/cu-custom.js","sourcesContent":["import { render, staticRenderFns, recyclableRender, components } from \"./cu-custom.vue?vue&type=template&id=213e6c59&\"\nvar renderjs\nimport script from \"./cu-custom.vue?vue&type=script&lang=js&\"\nexport * from \"./cu-custom.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"colorui/components/cu-custom.vue\"\nexport default component.exports","export * from \"-!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--16-0!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-custom.vue?vue&type=template&id=213e6c59&\"","var components\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n}\nvar recyclableRender = false\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns, recyclableRender, components }","import mod from \"-!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--12-1!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-custom.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--12-1!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-custom.vue?vue&type=script&lang=js&\"","\n\n\n\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map new file mode 100644 index 0000000..08bbe9d --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["uni-app:///main.js",null,"webpack:///D:/大庆/ui文件/大庆小程序/App.vue?abe5","uni-app:///App.vue","webpack:///D:/大庆/ui文件/大庆小程序/App.vue?c32b","webpack:///D:/大庆/ui文件/大庆小程序/App.vue?611b"],"names":["Vue","prototype","$http","goto","component","MescrollBody","MescrollUni","core","cuCustom","config","productionTip","App","mpType","app","$mount"],"mappings":";;;;;;;;;iDAAA,wCAAmB;AACnB;;;;AAIA;AACA;AACA;;AAEA,mH;AACAA,aAAIC,SAAJ,CAAcC,KAAd,GAAsBA,sBAAtB;;AAEAF,aAAIC,SAAJ,CAAcE,IAAd,GAAqBA,UAArB;AACAH,aAAII,SAAJ,CAAc,eAAd,EAA+BC,YAA/B;AACAL,aAAII,SAAJ,CAAc,cAAd,EAA8BE,WAA9B;;AAEAN,aAAIC,SAAJ,CAAcM,IAAd,GAAqBA,aAArB;;AAEAP,aAAII,SAAJ,CAAc,WAAd,EAA0BI,QAA1B;AACAR,aAAIS,MAAJ,CAAWC,aAAX,GAA2B,KAA3B;;AAEAC,aAAIC,MAAJ,GAAa,KAAb;;AAEA,IAAMC,GAAG,GAAG,IAAIb,YAAJ;AACLW,YADK,EAAZ;;AAGA,UAAAE,GAAG,EAACC,MAAJ,G;;;;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACuD;AACL;AACa;;;AAG/D;AACgK;AAChK,gBAAgB,6KAAU;AAC1B,EAAE,yEAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe,gF;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAilB,CAAgB,6mBAAG,EAAC,C;;;;;;;;;;;;ACCrmB;AACA;AACA;AACA,GAHA;AAIA;AACA;AACA,GANA;AAOA;AACA;AACA,GATA,E;;;;;;;;;;;ACDA;AAAA;AAAA;AAAA;AAA81B,CAAgB,k2BAAG,EAAC,C;;;;;;;;;;ACAl3B;AACA,OAAO,KAAU,EAAE,kBAKd","file":"common/main.js","sourcesContent":["import 'uni-pages';import Vue from 'vue'\r\nimport App from './App'\r\nimport cuCustom from 'colorui/components/cu-custom.vue'\r\nimport MescrollBody from \"@/components/mescroll-uni/mescroll-body.vue\"\r\nimport MescrollUni from \"@/components/mescroll-uni/mescroll-uni.vue\"\r\nimport {goto} from \"@/util/util.js\"\r\nimport core from '@/util/core.js'\r\nimport '@/plugins/utils'\r\n// 接口请求\r\nimport $http from '@/js_sdk/zhouWei-request/requestConfig';\r\nVue.prototype.$http = $http;\r\n\r\nVue.prototype.goto = goto;\r\nVue.component('mescroll-body', MescrollBody)\r\nVue.component('mescroll-uni', MescrollUni)\r\n\r\nVue.prototype.core = core\r\n\r\nVue.component('cu-custom',cuCustom)\r\nVue.config.productionTip = false\r\n\r\nApp.mpType = 'app'\r\n\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()","var render, staticRenderFns, recyclableRender, components\nvar renderjs\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","import mod from \"-!../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--12-1!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--12-1!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js&\"","\r\n\r\n\n","import mod from \"-!../../../HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--6-oneOf-1-2!../../../HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--6-oneOf-1-2!../../../HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=css&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1611903233878\n var cssReload = require(\"D:/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"../../\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map new file mode 100644 index 0000000..d10ed3c --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[null],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA,uBAAuB,g9CAAg9C;QACv+C;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"common/runtime.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"common/runtime\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"common/runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + chunkId + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"components/mescroll-uni/mescroll-body\":1,\"components/mescroll-uni/mescroll-uni\":1,\"components/me-tabs/me-tabs\":1,\"components/uni-data-checkbox/uni-data-checkbox\":1,\"components/uni-easyinput/uni-easyinput\":1,\"components/uni-forms-item/uni-forms-item\":1,\"components/uni-forms/uni-forms\":1,\"components/uni-pagination/uni-pagination\":1,\"components/uni-picker/uni-picker\":1,\"components/touch-list/touch-list\":1,\"components/ly-tree/ly-tree\":1,\"components/uni-datetime-picker/uni-datetime-picker\":1,\"components/mescroll-uni/components/mescroll-empty\":1,\"components/mescroll-uni/components/mescroll-top\":1,\"components/uni-icons/uni-icons\":1,\"components/ly-tree/ly-tree-node\":1,\"components/ly-tree/components/ly-checkbox\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"colorui/components/cu-custom\":\"colorui/components/cu-custom\",\"components/mescroll-uni/mescroll-body\":\"components/mescroll-uni/mescroll-body\",\"components/mescroll-uni/mescroll-uni\":\"components/mescroll-uni/mescroll-uni\",\"components/me-tabs/me-tabs\":\"components/me-tabs/me-tabs\",\"components/uni-data-checkbox/uni-data-checkbox\":\"components/uni-data-checkbox/uni-data-checkbox\",\"components/uni-easyinput/uni-easyinput\":\"components/uni-easyinput/uni-easyinput\",\"components/uni-forms-item/uni-forms-item\":\"components/uni-forms-item/uni-forms-item\",\"components/uni-forms/uni-forms\":\"components/uni-forms/uni-forms\",\"components/uni-pagination/uni-pagination\":\"components/uni-pagination/uni-pagination\",\"components/timeline/timeline\":\"components/timeline/timeline\",\"components/uni-picker/uni-picker\":\"components/uni-picker/uni-picker\",\"components/touch-list/touch-list\":\"components/touch-list/touch-list\",\"components/ly-tree/ly-tree\":\"components/ly-tree/ly-tree\",\"components/uni-datetime-picker/uni-datetime-picker\":\"components/uni-datetime-picker/uni-datetime-picker\",\"components/mescroll-uni/components/mescroll-empty\":\"components/mescroll-uni/components/mescroll-empty\",\"components/mescroll-uni/components/mescroll-top\":\"components/mescroll-uni/components/mescroll-top\",\"components/uni-icons/uni-icons\":\"components/uni-icons/uni-icons\",\"components/ly-tree/ly-tree-node\":\"components/ly-tree/ly-tree-node\",\"components/ly-tree/components/ly-checkbox\":\"components/ly-tree/components/ly-checkbox\"}[chunkId]||chunkId) + \".wxss\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = global[\"webpackJsonp\"] = global[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map new file mode 100644 index 0000000..1aea6eb --- /dev/null +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/@dcloudio/uni-mp-weixin/dist/index.js?543d","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js?f0c5","uni-app:///util/util.js","uni-app:///util/core.js","uni-app:///plugins/utils.js","uni-app:///js_sdk/zhouWei-request/requestConfig.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js?a34a","webpack:///./node_modules/regenerator-runtime/runtime-module.js?bbdd","webpack:///./node_modules/regenerator-runtime/runtime.js?96cf","uni-app:///js_sdk/zhouWei-request/request/index.js","uni-app:///js_sdk/zhouWei-request/request/upload/upload.js","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js?66fd","uni-app:///js_sdk/zhouWei-request/request/core/request.js","uni-app:///js_sdk/zhouWei-request/request/core/utils.js","uni-app:///js_sdk/zhouWei-request/request/upload/utils.js","uni-app:///js_sdk/zhouWei-request/request/upload/qiniuUploader.js","webpack:///(webpack)/buildin/global.js?cd00","uni-app:///components/mescroll-uni/mescroll-mixins.js","uni-app:///api/mock.js","uni-app:///api/goods.js","uni-app:///components/mescroll-uni/mescroll-uni.js","uni-app:///components/mescroll-uni/mescroll-uni-option.js","uni-app:///components/mescroll-uni/wxs/mixins.js","uni-app:///api/goods-edit.js","uni-app:///components/uni-forms/validate.js","uni-app:///components/uni-data-checkbox/clientdb.js","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js?a9ff","uni-app:///pages.json","uni-app:///components/uni-easyinput/common.js","uni-app:///components/ly-tree/model/tree-store.js","uni-app:///components/ly-tree/model/node.js","uni-app:///components/ly-tree/tool/util.js","uni-app:///components/uni-icons/icons.js","uni-app:///components/evan-form/utils.js","webpack:///../../src/util.js?2d8c","webpack:///../../src/rule/required.js?731f","webpack:///../../src/rule/whitespace.js?4ab5","webpack:///../../src/rule/type.js?df22","webpack:///../../src/rule/range.js?3e1a","webpack:///../../src/rule/enum.js?a7f2","webpack:///../../src/rule/pattern.js?65ca","webpack:///../../src/rule/index.js?712f","webpack:///../../src/validator/string.js?e9ca","webpack:///../../src/validator/method.js?4a7c","webpack:///../../src/validator/number.js?ba48","webpack:///../../src/validator/boolean.js?96d4","webpack:///../../src/validator/regexp.js?dd3c","webpack:///../../src/validator/integer.js?cd74","webpack:///../../src/validator/float.js?1f96","webpack:///../../src/validator/array.js?9332","webpack:///../../src/validator/object.js?3df4","webpack:///../../src/validator/enum.js?d180","webpack:///../../src/validator/pattern.js?3a38","webpack:///../../src/validator/date.js?3576","webpack:///../../src/validator/required.js?78bd","webpack:///../../src/validator/type.js?d66b","webpack:///../../src/validator/any.js?0e93","webpack:///../../src/validator/index.js?a885","webpack:///../../src/messages.js?b74d","webpack:///../../src/index.js?2427","webpack:///./node_modules/node-libs-browser/mock/process.js?4362","webpack:///./node_modules/path-browserify/index.js?df7c"],"names":["_toString","Object","prototype","toString","hasOwnProperty","isFn","fn","isStr","str","isPlainObject","obj","call","hasOwn","key","noop","cached","cache","create","cachedFn","hit","camelizeRE","camelize","replace","_","c","toUpperCase","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","i","length","indexOf","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","keys","forEach","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","callbackInterceptor","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","slice","scopedInterceptor","invokeApi","api","params","invoke","promiseInterceptor","catch","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","test","isSyncApi","isCallbackApi","handlePromise","err","shouldPromise","finally","constructor","value","reason","promisify","promiseApi","success","fail","complete","reject","assign","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","wx","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","result","Math","floor","interceptors","baseApi","freeze","__proto__","findExistsPageIndex","url","pages","getCurrentPages","len","page","$page","fullPath","redirectTo","fromArgs","exists","delta","args","existsPageIndex","previewImage","currentIndex","parseInt","current","isNaN","urls","filter","item","indicator","loop","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","windowHeight","protocols","getSystemInfo","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","toArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","error","arg1","arg2","apply","todoApis","TODOS","createTodoApi","todoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","Emitter","getUniEmitter","Vue","ctx","$on","arguments","$off","$once","$emit","eventApi","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","mpInstance","canIUse","oldTriggerEvent","triggerEvent","event","initHook","oldHook","PAGE_EVENT_HOOKS","initMocks","vm","mocks","$mp","mpType","mock","hasHook","vueOptions","default","extendOptions","super","mixins","find","mixin","initHooks","mpOptions","$vm","__call_hook","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","split","_$vueId","_$vuePid","initData","context","methods","e","process","VUE_APP_DEBUG","JSON","parse","stringify","__lifecycle_hooks__","PROP_TYPES","String","Boolean","createObserver","observer","newVal","oldVal","initBehaviors","initBehavior","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","type","Date","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","generic","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","target","detail","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","propPath","valuePath","vFor","isInteger","substr","__get_value","vForItem","vForKey","processEventExtra","extra","extraObj","__args__","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","dataset","comType","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","getContextVm","$parent","$options","$scope","handleEvent","eventOpts","eventOpt","eventsArray","charAt","isOnce","eventArray","handlerCtx","handler","Error","once","parseBaseApp","initRefs","store","$store","mpHost","beforeCreate","appOptions","onLaunch","app","globalData","_isMounted","findVmByVueId","vuePid","$children","childVm","parentVm","Behavior","isPage","route","initRelation","selectAllComponents","selector","$refs","components","component","ref","vueGeneric","scopedComponent","defineProperty","get","forComponents","handleLink","parent","parseApp","eventChannels","eventChannelStack","getEventChannel","id","eventChannel","shift","createApp","getOpenerEventChannel","callHook","__id__","__eventChannel__","App","encodeReserveRE","encodeReserveReplacer","charCodeAt","commaRE","encode","encodeURIComponent","stringifyQuery","encodeStr","map","val","undefined","val2","join","x","parseBaseComponent","vueComponentOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","propsData","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","externalClasses","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","copyQuery","is","parsePage","createPage","createComponent","canIUseApi","apiName","uni","Proxy","set","uni$1","goto","navigateTo","module","exports","vuemixin","created","log","fMoney","s","n","parseFloat","toFixed","l","reverse","r","t","toDateTime","date","time","dateFormatFn","Y","getFullYear","M","getMonth","D","getDate","newDate","fMoney2","m","fMoney3","money","cnNums","cnIntRadice","cnIntUnits","cnDecUnits","cnInteger","cnIntLast","int","dot","chineseStr","parts","zeroCount","IntLen","p","q","decLen","orderreleaseType","sts","status","auditStatus","text","bgColor","textColor","processNode","businessType","operationType","removeByValue","objectValueAllEmpty","object","isEmpty","debounce","func","wait","timer","clearTimeout","callNow","setTimeout","utils","isMobilePhone","reg","$utils","baseUrl","$http","request","fileUrl","defaultUploadUrl","header","timeout","config","isPrompt","load","isFactory","getQnToken","visitPrefix","token","folderPath","region","requestNum","requestStart","showLoading","title","mask","maxSize","files","showToast","icon","requestEnd","hideLoading","loginPopupNum","dataFactory","response","statusCode","httpData","code","message","duration","requestError","require","upload","chooseImage","chooseVideo","qiniuUpload","urlUpload","fileUpload","onSelectComplete","qnFileUpload","requestInfo","changekeys","requestResult","urlFileUpload","runRequestStart","resend","mergeConfig","_this","urlType","dispatchRequest","requestAbort","requestData","dataType","responseType","requestTask","abort","jsonpRequest","dataStr","lastIndexOf","callbackName","ceil","random","qiniuUploader","randomChar","tmp","getTime","count","sizeType","sourceType","tempFiles","errCode","compressed","maxDuration","camera","path","tempFilePath","height","width","fileList","qnRes","prefixLen","substring","uploadFile","updateUrl","fileData","fileIndex","nameArr","imageURL","onEachUpdate","domain","uptoken","uptokenURL","onProgressUpdate","filePath","formData","uploadTask","qiniuRegion","qiniuImageURLPrefix","qiniuUploadToken","qiniuUploadTokenURL","qiniuUploadTokenFunction","qiniuShouldUseQiniuFileName","init","updateConfigWithOptions","uptokenFunc","shouldUseQiniuFileName","progress","cancelTask","doUpload","getQiniuToken","uploadURLFromRegionCode","fileName","dataString","fromCharCode","dataObject","imageUrl","uploadURL","MescrollMixin","mescroll","onPullDownRefresh","onPageScroll","onReachBottom","mescrollInit","mescrollInitByRef","resetUpScroll","mescrollRef","downCallback","optUp","use","endSuccess","upCallback","endErr","mounted","apiNewList","pageNum","pageSize","resolute","list","newObj","content","upIndex","apiGoods","isGoodsEdit","goodsEdit","goods","apiSearch","keyword","goodName","apiWeiboList","apiMsgList","msgId","unshift","MeScroll","isScrollBody","me","version","isDownScrolling","isUpScrolling","hasDownCallback","down","initDownScroll","initUpScroll","optDown","native","auto","autoShowLoading","triggerDownScroll","isUpAutoLoad","triggerUpScroll","extendDownScroll","isLock","offset","startTop","inOffsetRate","outOffsetRate","bottomOffset","minAngle","textInOffset","textOutOffset","textLoading","textSuccess","textErr","beforeEndDelay","inited","inOffset","outOffset","onMoving","beforeLoading","afterLoading","beforeEndDownScroll","endDownScroll","afterEndDownScroll","extendUpScroll","isBoth","num","noMoreSize","textNoMore","showNoMore","hideUpScroll","errDistance","toTop","src","btnClick","onShow","zIndex","safearea","radius","empty","tip","btnText","fixed","onScroll","userOption","defaultOption","def","hasColor","color","toLowerCase","downHight","touchstartEvent","startPoint","getPoint","getScrollTop","startAngle","lastPoint","maxTouchmoveY","getBodyHeight","inTouchend","touchmoveEvent","scrollTop","curPoint","moveY","y","getAngle","touchendEvent","diff","movetype","isDownEndSuccess","isMoveDown","round","rate","endDownScrollCall","isScrollUp","angle","touches","pageX","pageY","changedTouches","clientX","clientY","p1","p2","abs","z","sqrt","asin","PI","showDownScroll","startPullDownRefresh","showDownLoadingCall","stopPullDownRefresh","endScroll","setScrollHeight","scrollTo","delay","lockDownScroll","lockUpScroll","up","hasNext","startNum","setScrollTop","showTopBtn","hideTopBtn","scroll","scrollHeight","preScrollY","isCheck","canUp","getScrollBottom","showUpScroll","endUpScroll","isShowNoMore","isShowLoading","prePageNum","prePageTime","removeEmpty","setPageNum","setPageSize","endByPage","dataSize","totalPage","systime","endBySize","totalSize","loadSize","showEmpty","allDataSize","topBtnShow","myScrollTo","resetScrollTo","getScrollHeight","getClientHeight","getStep","star","end","step","setInterval","clearInterval","isReal","h","clientHeight","setClientHeight","bodyHeight","setBodyHeight","cancelable","defaultPrevented","GlobalOption","WxsMixin","wxsProp","isUpBoth","callProp","callType","renderBiz","propObserver","wxsCall","msg","now","downLoadType","$set","pattern","email","RegExp","FORMAT_MAPPING","formatMessage","resources","defaultMessage","isEmptyValue","types","integer","string","array","v","getYear","timestamp","match","RuleValidator","_message","allData","rules","hasRequired","findIndex","required","rule","vt","_getValidateType","label","RuleValidatorHelper","validateExpr","resultExpr","_getMessage","errorMessage","validateFunction","callbackMessage","format","range","maximum","minimum","maxLength","minLength","Set","rangeNumber","mismatch","exclusiveMinimum","exclusiveMaximum","min","max","rangeLength","customTypes","SchemaValidator","schema","_schema","_options","_checkFieldInSchema","invokeValidate","invokeValidateUpdate","all","validateRule","keys2","Message","defaultInvalid","whitespace","invalid","boolean","float","regexp","events","pageMode","add","attrs","loading","listData","getone","paginationInternal","pageCurrent","db","dbCmd","collection","uniCloud","database","command","_isEnded","$watch","al","newValue","oldValue","needReset","clear","reset","_execLoadData","loadData","args1","args2","loadMore","refresh","remove","action","confirmTitle","confirmContent","showModal","showCancel","confirm","_execRemove","_getExec","_dispatchEvent","pageData","exec","where","field","orderby","orderBy","skip","limit","getCount","getcount","ids","_id","in","removeData","il","dl","_changeDataFunction","globalThis","window","global","self","__esModule","o","lib","Base","mixIn","$super","clone","WordArray","words","sigBytes","clamp","a","enc","Hex","u","Latin1","Utf8","decodeURIComponent","escape","unescape","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","f","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","sin","MD5","_hash","d","g","b","w","T","E","S","O","k","A","P","I","N","HmacMD5","_hasher","_oKey","_iKey","defineProperties","requestId","appid","PLATFORM","OS","APPID","CLIENT_SDK_VERSION","plus","runtime","getDCloudId","setStorage","h5","ak","ut","uuid","sign","sort","wrappedRequest","setStorageSync","getStorageSync","removeStorageSync","clearStorageSync","endpoint","requestUrl","envType","accessTokenKey","spaceId","adapter","accessToken","requestWrapped","hasAccessToken","getAccessToken","rebuildRequest","clientSecret","requestAuth","setupRequest","setAccessToken","functionTarget","functionArgs","fileType","onUploadProgress","loaded","totalBytesSent","total","totalBytesExpectedToSend","cloudPath","getOSSUploadOptionsFromPath","env","filename","cdnDomain","ossPath","host","OSSAccessKeyId","accessKeyId","Signature","signature","policy","success_action_status","uploadFileToOSS","reportOSSUpload","fileID","tempFileURL","bind","signInAnonymously","authorize","getLoginState","auth","constomAuth","getQuery","location","search","getHash","hash","removeParam","createPromiseCallback","getWeixinCode","getMiniAppCode","login","isString","isUndefined","isInstanceOf","isFormData","genSeqId","getArgNames","formatUrl","build","tsc","e2e","start","eslint","test_web","axios","express","husky","jest","puppeteer","typescript","webpack","description","main","scripts","repository","keywords","author","license","dependencies","devDependencies","R","C","__importStar","SDK_VERISON","ACCESS_TOKEN","ACCESS_TOKEN_Expire","REFRESH_TOKEN","ANONYMOUS_UUID","LOGIN_TYPE_KEY","BASE_URL","local","none","session","U","StorageType","AbstractSDKRequest","AbstractStorage","__extends","setPrototypeOf","__assign","__awaiter","next","throw","done","__generator","sent","trys","ops","return","Symbol","iterator","TypeError","pop","_request","post","FormData","append","download","URL","pathname","document","createElement","href","setAttribute","body","appendChild","click","headers","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","responseText","send","WebRequest","genAdapter","root","reqClass","wsClass","WebSocket","localStorage","sessionStorage","j","WEB","WX_MP","RUNTIME","useAdapters","isMatch","useDefaultAdapter","Adapter","L","primaryStorage","storageClass","setStore","setItem","getStore","getItem","removeStore","removeItem","Cache","tcbObject","__spreadArrays","IEvent","IErrorEvent","_listeners","on","off","fire","_listens","IEventEmitter","addEventListener","activateEvent","removeEventListener","EVENTS","LOGIN_STATE_CHANGED","LOGIN_STATE_EXPIRE","LOGIN_TYPE_CHANGE","ANONYMOUS_CONVERTED","REFRESH_ACCESS_TOKEN","F","seqId","persistence","accessTokenExpireKey","refreshTokenKey","anonymousUuidKey","loginTypeKey","_reqClass","refreshAccessToken","_refreshAccessTokenPromise","_refreshAccessToken","_shouldRefreshAccessTokenHook","refresh_token","K","LOGINTYPE","ANONYMOUS","anonymous_uuid","access_token","access_token_expire","login_type","accessTokenExpire","dataVersion","Request","WECHAT","NULL","_loginType","onLoginTypeChanged","httpRequest","enumerable","configurable","setRefreshToken","getRefreshTokenByWXCode","loginType","hybridMiniapp","refreshToken","G","snsapi_base","snsapi_userinfo","snsapi_login","redirect","prompt","scope","state","loginMode","signIn","_signIn","credential","values","includes","H","_anonymousUuidKey","_loginTypeKey","_setAnonymousUUID","linkAndRetrieveDataWithTicket","ticket","_clearAnonymousUUID","getAllStore","AnonymousAuthProvider","__importDefault","customAuthProvider","weixinAuthProvider","_anonymousAuthProvider","signOut","onLoginStateExpire","isAnonymous","signInWithTicket","shouldRefreshAccessToken","getUserInfo","V","authorization","fileId","cosFileId","deleteFile","fileid_list","delete_list","getTempFileURL","fileid","max_age","maxAge","file_list","download_list","downloadFile","download_url","encodeURI","B","callFunction","function_name","request_data","response_data","$","authObj","_useDefaultAdapter","tcb","W","J","X","Q","Z","customAuth","ee","te","ne","re","oe","localAddress","localPort","aliyun","tencent","originCallFunction","sid","pvd","param","uniIdToken","clientInfo","uniCloudClientInfo","se","ie","isReady","initUniCloud","useDebugFunction","functionName","debugInfo","forceRemote","ae","ce","_internalType","ue","le","$regexp","source","flags","$date","toISOString","he","fe","debugFunction","address","servePort","port","initialLaunchType","_database","prevStage","actionName","$db","$method","$param","_send","from","toJSON","tokenExpired","useAggregate","$newDb","$env","Geo","serverDate","pe","immediate","throttle","previous","TreeStore","currentNode","currentNodeKey","nodesMap","Node","lazy","loadFn","doCreateChildren","_initDefaultCheckedNodes","filterNodeMethod","_self","traverse","node","childNodes","getChildNodes","childNodesId","child","nodePath","getNodePath","some","pathItem","visible","childVisibleForFilterNode","getParent","parentId","allHidden","isLeaf","expand","instanceChanged","updateChildren","refData","refNode","getNode","insertBefore","insertAfter","removeChild","parentData","parentNode","insertChild","defaultCheckedKeys","checkedKeyfromData","totalCheckedKeys","checked","checkedKey","setChecked","checkStrictly","isExpandAll","allNodes","_getAllNodes","collapse","isCkeckAll","nodeKey","deregisterNode","leafOnly","includeHalfChecked","checkedNodes","indeterminate","getCheckedNodes","nodes","getHalfCheckedNodes","checkedKeys","level","_setCheckedKeys","defaultExpandedKeys","autoExpandParent","deep","prevCurrentNode","isCurrent","expandCurrentNodeParent","currNode","setCurrentNode","thisStore","nodeIdSeed","expanded","_getKey","disabled","nextSibling","previousSibling","_handleParentAndLevel","_handleProps","_handleExpand","_handleCurrent","_initDefaultCheckedNode","updateLeafState","isInjectParentInNode","parentChildNodes","showNodeIcon","registerNode","isLeafByUser","defaultExpandAll","autoExpandparent","children","walk","batch","getChildren","dataIndex","targetNode","expandparent","shouldLoadData","defaultProps","recursion","passValue","expandOnCheckNode","showRadio","checkDescendants","allWithoutDisable","handleDescendants","half","forceInit","newData","oldData","newDataMap","newNodes","NODE_KEY","isNodeExists","removeChildByData","markNodeData","writable","getNodeKey","objectAssign","prop","arrayFindIndex","pred","getChildState","reInitChecked","getPropertyFromData","dataProp","isNull","validate","model","initOptions","showMessage","valid","errors","getValueByProp","validateItem","validateField","Function","propRules","descriptor","validator","AsyncValidator","firstFields","tempObj","keyArr","trim","formatRegExp","warning","fields","isNativeStringType","results","arrLength","original","objArr","AsyncValidationError","pending","convertFieldsError","flattenArr","flattenObjArr","asyncSerialArray","objArrKeys","objArrLength","asyncParallelArray","fullField","util","hex","custom","ruleType","spRegexp","ENUM","_pattern","dateObject","any","cloned","messages","newMessages","Schema","deepMerge","define","oc","series","errorFields","asyncMap","complementError","doIt","fieldsSchema","fieldSchema","addFullfield","finalErrors","errs","cb","getType","validators","getValidationMethod","messageIndex"],"mappings":"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AAH,GAAqBA,eAArB;;AAEA,IAAIM,KAAK,GAAGH,GAAZ,C;;AAEeG,K;;;;;;;;;;;;ACprDf;AAAA;AAAA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClHA,oDAASC,KAAT,CAAc9T,GAAd,EAAmB;AAClB0T,KAAG,CAACK,UAAJ,CAAe;AACd/T,OAAG,EAACA,GADU,EAAf;;AAGA;;AAEDgU,MAAM,CAACC,OAAP,GAAiB;AAChBH,MAAI,EAACA,KADW;AAEhBI,UAAQ,EAAC;AACRC,WAAO,EAAE,mBAAY,CAAEvR,OAAO,CAACwR,GAAR,CAAY,CAAZ,EAAgB,CAD/B,EAFO,EAAjB,C;;;;;;;;;;;;;uFCNA,SAASC,MAAT,CAAiBC,CAAjB,EAAoBC,CAApB,EAAuB;AACrBA,GAAC,GAAGA,CAAC,GAAG,CAAJ,IAASA,CAAC,IAAI,EAAd,GAAmBA,CAAnB,GAAuB,CAA3B;AACAD,GAAC,GAAGE,UAAU,CAAC,CAACF,CAAC,GAAG,EAAL,EAAS/a,OAAT,CAAiB,WAAjB,EAA8B,EAA9B,CAAD,CAAV,CAA8Ckb,OAA9C,CAAsDF,CAAtD,IAA2D,EAA/D;AACA,MAAIG,CAAC,G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AN,GAAqB,UAAU1S,CAAV,EAAa;AACjC;AACA,MAAIA,CAAC,CAACqS,UAAF,KAAiB,CAArB,EAAwB;AACvB,UAAMrS,CAAN;AACA,GAFD,MAEO;AACN4L,OAAG,CAACkG,SAAJ,CAAc;AACbJ,WAAK,EAAE,cADM;AAEbK,UAAI,EAAE,MAFO,EAAd;;AAIA;AACD,CAVD,C;AAWevB,K;;;;;;;;;;;;ACjJftE,MAAM,CAACC,OAAP,GAAiBwG,mBAAO,CAAC,6BAAD,CAAxB,C;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,mBAAW;;AAEpC;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA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C,WAAW,CAACxC,MALf;AAML1Y,uBAAG,EAAEkb,WAAW,CAAClb,GANZ,E;;;;AAUkB8a,2BAAS,CAACI,WAAD,EAAc,KAAKjB,WAAnB,C,UAA/BmB,a;AACGtf,uBAAO,CAACC,OAAR,CAAgBqf,aAAhB,C;;AAEP,qBAAKZ,YAAL,IAAqB,KAAKA,YAAL,cAArB,C;AACO1e,uBAAO,CAACyC,MAAR,c;;AAEP,oBAAI+c,eAAJ,EAAqB;AACpB,uBAAKxB,UAAL,IAAmB,KAAKA,UAAL,CAAgBoB,WAAhB,CAAnB;AACA,iB,4OAlMoC3C,iB;;;;;;;;;;;;ACVxC;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAsB,+BAA+B;AACrD,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC,EAAE;AACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,aAAoB;;AAErC;AACA;AACA;AACA,YAAY,aAAoB;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA,iCAAiC;AACjC,uCAAuC,wBAAwB,EAAE;AACjE,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wCAAwC,EAAE;AAC1C;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,+BAA+B,oBAAoB,EAAE;AACrD;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,SAAS,qBAAqB;;AAExD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD,iCAAiC,sBAAsB;AACvD;AACA,kBAAkB;AAClB,MAAM,IAAqC;AAC3C;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAoB;AACtC;AACA;AACA,mBAAmB;AACnB;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,OAAO,UAAU,IAAqC;AACtD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,mBAAmB;AACtC,+BAA+B;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,oCAAoC;AACpC;AACA,qCAAqC;AACrC;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAEQ;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,qCAAqC,EAAE;AACpF;;AAEA;AACA;AACA;;AAEA,oCAAoC,yCAAyC,EAAE;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD,EAAE;AACtF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C,GAAG;AACH;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;;AAEA;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO,MAAM,EAEN;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,IAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC,uCAAuC;AACvC;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB,sCAAsC;AACtC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,4CAA4C,eAAe;AAC3D,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK,UAAU,KAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,gEAAgE;AACrG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,4BAA4B,+BAA+B;AAC3D,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C,kDAAkD;AAClD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,uFAAuF;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,+BAA+B;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,oBAAoB;AACxC,sBAAsB,4BAA4B;AAClD;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E;AACA;AACA,6CAA6C,4CAA4C;;AAEzF;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG,MAAM,EAGN;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK,2CAA2C,8BAA8B,EAAE;;AAEhF;AACA,wCAAwC,OAAO;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAqC;AACrD;AACA,oBAAoB,SAAI;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;;AAEpD;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB;AACpB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,oBAAoB,KAAqC;AACzD;AACA,MAAM,SAAE;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C,qBAAqB,+BAA+B;AACpD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,IAAqC;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,8BAA8B;AAC9B,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,sCAAsC;AACtC,8C;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,0CAA0C,2BAA2B,EAAE;AACvE,KAAK;AACL;AACA,0CAA0C,4BAA4B,EAAE;AACxE,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY,uGAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,gCAAgC,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA,WAAW,uGAAW;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,WAAW,uGAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;;AAE1C;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,KAAK;AACL;AACA;AACA,UAAU,uGAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qDAAqD,EAAE,SAAS;AACtH;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,0BAA0B,OAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA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,QAAM0jD,YAAY,GAAG1gD,IAAI,CAAJA,QAArB,SAAqBA,CAArB;;AACA,QAAI0gD,YAAY,KAAK,CAArB,GAAyB;AACvB1gD,UAAI,CAAJA;AACD;;AACD,QAAIA,IAAI,CAAJA,gBAAqBA,IAAI,CAAJA,CAAI,CAAJA,KAAzB,YAAiD;AAC/C,aAAOwgD,UAAU,CAAjB;AACD;;AACD,WAAOA,UAAU,CAAC,aAAXA,IAAW,CAAD,CAAVA,IAAP;AACD,GAtQgB,EAAnBhB;;;AAyQAA,MAAM,CAANA,WAAkB,mCAAmC;AACnD,MAAI,qBAAJ,YAAqC;AACnC,UAAM,UAAN,kEAAM,CAAN;AAGD;;AACDgB,YAAU,CAAVA,IAAU,CAAVA;AANFhB;;AASAA,MAAM,CAANA;AAEAA,MAAM,CAANA;AAEAA,MAAM,CAANA,wB;;;;;;;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,0BAA0B,mBAAO,CAAC,cAAM;AACxC;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA","file":"common/vendor.js","sourcesContent":["import Vue from 'vue';\r\n\r\nconst _toString = Object.prototype.toString;\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nfunction isFn (fn) {\r\n return typeof fn === 'function'\r\n}\r\n\r\nfunction isStr (str) {\r\n return typeof str === 'string'\r\n}\r\n\r\nfunction isPlainObject (obj) {\r\n return _toString.call(obj) === '[object Object]'\r\n}\r\n\r\nfunction hasOwn (obj, key) {\r\n return hasOwnProperty.call(obj, key)\r\n}\r\n\r\nfunction noop () {}\r\n\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached (fn) {\r\n const cache = Object.create(null);\r\n return function cachedFn (str) {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str))\r\n }\r\n}\r\n\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nconst camelizeRE = /-(\\w)/g;\r\nconst camelize = cached((str) => {\r\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\r\n});\r\n\r\nconst HOOKS = [\r\n 'invoke',\r\n 'success',\r\n 'fail',\r\n 'complete',\r\n 'returnValue'\r\n];\r\n\r\nconst globalInterceptors = {};\r\nconst scopedInterceptors = {};\r\n\r\nfunction mergeHook (parentVal, childVal) {\r\n const res = childVal\r\n ? parentVal\r\n ? parentVal.concat(childVal)\r\n : Array.isArray(childVal)\r\n ? childVal : [childVal]\r\n : parentVal;\r\n return res\r\n ? dedupeHooks(res)\r\n : res\r\n}\r\n\r\nfunction dedupeHooks (hooks) {\r\n const res = [];\r\n for (let i = 0; i < hooks.length; i++) {\r\n if (res.indexOf(hooks[i]) === -1) {\r\n res.push(hooks[i]);\r\n }\r\n }\r\n return res\r\n}\r\n\r\nfunction removeHook (hooks, hook) {\r\n const index = hooks.indexOf(hook);\r\n if (index !== -1) {\r\n hooks.splice(index, 1);\r\n }\r\n}\r\n\r\nfunction mergeInterceptorHook (interceptor, option) {\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n interceptor[hook] = mergeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction removeInterceptorHook (interceptor, option) {\r\n if (!interceptor || !option) {\r\n return\r\n }\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n removeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction addInterceptor (method, option) {\r\n if (typeof method === 'string' && isPlainObject(option)) {\r\n mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);\r\n } else if (isPlainObject(method)) {\r\n mergeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction removeInterceptor (method, option) {\r\n if (typeof method === 'string') {\r\n if (isPlainObject(option)) {\r\n removeInterceptorHook(scopedInterceptors[method], option);\r\n } else {\r\n delete scopedInterceptors[method];\r\n }\r\n } else if (isPlainObject(method)) {\r\n removeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction wrapperHook (hook) {\r\n return function (data) {\r\n return hook(data) || data\r\n }\r\n}\r\n\r\nfunction isPromise (obj) {\r\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'\r\n}\r\n\r\nfunction queue (hooks, data) {\r\n let promise = false;\r\n for (let i = 0; i < hooks.length; i++) {\r\n const hook = hooks[i];\r\n if (promise) {\r\n promise = Promise.resolve(wrapperHook(hook));\r\n } else {\r\n const res = hook(data);\r\n if (isPromise(res)) {\r\n promise = Promise.resolve(res);\r\n }\r\n if (res === false) {\r\n return {\r\n then () {}\r\n }\r\n }\r\n }\r\n }\r\n return promise || {\r\n then (callback) {\r\n return callback(data)\r\n }\r\n }\r\n}\r\n\r\nfunction wrapperOptions (interceptor, options = {}) {\r\n ['success', 'fail', 'complete'].forEach(name => {\r\n if (Array.isArray(interceptor[name])) {\r\n const oldCallback = options[name];\r\n options[name] = function callbackInterceptor (res) {\r\n queue(interceptor[name], res).then((res) => {\r\n /* eslint-disable no-mixed-operators */\r\n return isFn(oldCallback) && oldCallback(res) || res\r\n });\r\n };\r\n }\r\n });\r\n return options\r\n}\r\n\r\nfunction wrapperReturnValue (method, returnValue) {\r\n const returnValueHooks = [];\r\n if (Array.isArray(globalInterceptors.returnValue)) {\r\n returnValueHooks.push(...globalInterceptors.returnValue);\r\n }\r\n const interceptor = scopedInterceptors[method];\r\n if (interceptor && Array.isArray(interceptor.returnValue)) {\r\n returnValueHooks.push(...interceptor.returnValue);\r\n }\r\n returnValueHooks.forEach(hook => {\r\n returnValue = hook(returnValue) || returnValue;\r\n });\r\n return returnValue\r\n}\r\n\r\nfunction getApiInterceptorHooks (method) {\r\n const interceptor = Object.create(null);\r\n Object.keys(globalInterceptors).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = globalInterceptors[hook].slice();\r\n }\r\n });\r\n const scopedInterceptor = scopedInterceptors[method];\r\n if (scopedInterceptor) {\r\n Object.keys(scopedInterceptor).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\r\n }\r\n });\r\n }\r\n return interceptor\r\n}\r\n\r\nfunction invokeApi (method, api, options, ...params) {\r\n const interceptor = getApiInterceptorHooks(method);\r\n if (interceptor && Object.keys(interceptor).length) {\r\n if (Array.isArray(interceptor.invoke)) {\r\n const res = queue(interceptor.invoke, options);\r\n return res.then((options) => {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n })\r\n } else {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n }\r\n }\r\n return api(options, ...params)\r\n}\r\n\r\nconst promiseInterceptor = {\r\n returnValue (res) {\r\n if (!isPromise(res)) {\r\n return res\r\n }\r\n return res.then(res => {\r\n return res[1]\r\n }).catch(res => {\r\n return res[0]\r\n })\r\n }\r\n};\r\n\r\nconst SYNC_API_RE =\r\n /^\\$|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/;\r\n\r\nconst CONTEXT_API_RE = /^create|Manager$/;\r\n\r\n// Context例外情况\r\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\r\n\r\n// 同步例外情况\r\nconst ASYNC_API = ['createBLEConnection'];\r\n\r\nconst CALLBACK_API_RE = /^on|^off/;\r\n\r\nfunction isContextApi (name) {\r\n return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1\r\n}\r\nfunction isSyncApi (name) {\r\n return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1\r\n}\r\n\r\nfunction isCallbackApi (name) {\r\n return CALLBACK_API_RE.test(name) && name !== 'onPush'\r\n}\r\n\r\nfunction handlePromise (promise) {\r\n return promise.then(data => {\r\n return [null, data]\r\n })\r\n .catch(err => [err])\r\n}\r\n\r\nfunction shouldPromise (name) {\r\n if (\r\n isContextApi(name) ||\r\n isSyncApi(name) ||\r\n isCallbackApi(name)\r\n ) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n/* eslint-disable no-extend-native */\r\nif (!Promise.prototype.finally) {\r\n Promise.prototype.finally = function (callback) {\r\n const promise = this.constructor;\r\n return this.then(\r\n value => promise.resolve(callback()).then(() => value),\r\n reason => promise.resolve(callback()).then(() => {\r\n throw reason\r\n })\r\n )\r\n };\r\n}\r\n\r\nfunction promisify (name, api) {\r\n if (!shouldPromise(name)) {\r\n return api\r\n }\r\n return function promiseApi (options = {}, ...params) {\r\n if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {\r\n return wrapperReturnValue(name, invokeApi(name, api, options, ...params))\r\n }\r\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\r\n invokeApi(name, api, Object.assign({}, options, {\r\n success: resolve,\r\n fail: reject\r\n }), ...params);\r\n })))\r\n }\r\n}\r\n\r\nconst EPS = 1e-4;\r\nconst BASE_DEVICE_WIDTH = 750;\r\nlet isIOS = false;\r\nlet deviceWidth = 0;\r\nlet deviceDPR = 0;\r\n\r\nfunction checkDeviceWidth () {\r\n const {\r\n platform,\r\n pixelRatio,\r\n windowWidth\r\n } = wx.getSystemInfoSync(); // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni\r\n\r\n deviceWidth = windowWidth;\r\n deviceDPR = pixelRatio;\r\n isIOS = platform === 'ios';\r\n}\r\n\r\nfunction upx2px (number, newDeviceWidth) {\r\n if (deviceWidth === 0) {\r\n checkDeviceWidth();\r\n }\r\n\r\n number = Number(number);\r\n if (number === 0) {\r\n return 0\r\n }\r\n let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth);\r\n if (result < 0) {\r\n result = -result;\r\n }\r\n result = Math.floor(result + EPS);\r\n if (result === 0) {\r\n if (deviceDPR === 1 || !isIOS) {\r\n result = 1;\r\n } else {\r\n result = 0.5;\r\n }\r\n }\r\n return number < 0 ? -result : result\r\n}\r\n\r\nconst interceptors = {\r\n promiseInterceptor\r\n};\r\n\r\nvar baseApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n upx2px: upx2px,\r\n addInterceptor: addInterceptor,\r\n removeInterceptor: removeInterceptor,\r\n interceptors: interceptors\r\n});\r\n\r\nfunction findExistsPageIndex (url) {\r\n const pages = getCurrentPages();\r\n let len = pages.length;\r\n while (len--) {\r\n const page = pages[len];\r\n if (page.$page && page.$page.fullPath === url) {\r\n return len\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nvar redirectTo = {\r\n name (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.delta) {\r\n return 'navigateBack'\r\n }\r\n return 'redirectTo'\r\n },\r\n args (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.url) {\r\n const existsPageIndex = findExistsPageIndex(fromArgs.url);\r\n if (existsPageIndex !== -1) {\r\n const delta = getCurrentPages().length - 1 - existsPageIndex;\r\n if (delta > 0) {\r\n fromArgs.delta = delta;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nvar previewImage = {\r\n args (fromArgs) {\r\n let currentIndex = parseInt(fromArgs.current);\r\n if (isNaN(currentIndex)) {\r\n return\r\n }\r\n const urls = fromArgs.urls;\r\n if (!Array.isArray(urls)) {\r\n return\r\n }\r\n const len = urls.length;\r\n if (!len) {\r\n return\r\n }\r\n if (currentIndex < 0) {\r\n currentIndex = 0;\r\n } else if (currentIndex >= len) {\r\n currentIndex = len - 1;\r\n }\r\n if (currentIndex > 0) {\r\n fromArgs.current = urls[currentIndex];\r\n fromArgs.urls = urls.filter(\r\n (item, index) => index < currentIndex ? item !== urls[currentIndex] : true\r\n );\r\n } else {\r\n fromArgs.current = urls[0];\r\n }\r\n return {\r\n indicator: false,\r\n loop: false\r\n }\r\n }\r\n};\r\n\r\n// import navigateTo from 'uni-helpers/navigate-to'\r\n\r\nfunction addSafeAreaInsets (result) {\r\n if (result.safeArea) {\r\n const safeArea = result.safeArea;\r\n result.safeAreaInsets = {\r\n top: safeArea.top,\r\n left: safeArea.left,\r\n right: result.windowWidth - safeArea.right,\r\n bottom: result.windowHeight - safeArea.bottom\r\n };\r\n }\r\n}\r\nconst protocols = {\r\n redirectTo,\r\n // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP\r\n previewImage,\r\n getSystemInfo: {\r\n returnValue: addSafeAreaInsets\r\n },\r\n getSystemInfoSync: {\r\n returnValue: addSafeAreaInsets\r\n }\r\n};\r\nconst todos = [\r\n 'vibrate',\r\n 'preloadPage',\r\n 'unPreloadPage',\r\n 'loadSubPackage'\r\n];\r\nconst canIUses = [];\r\n\r\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\r\n\r\nfunction processCallback (methodName, method, returnValue) {\r\n return function (res) {\r\n return method(processReturnValue(methodName, res, returnValue))\r\n }\r\n}\r\n\r\nfunction processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\r\n if (isPlainObject(fromArgs)) { // 一般 api 的参数解析\r\n const toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\r\n if (isFn(argsOption)) {\r\n argsOption = argsOption(fromArgs, toArgs) || {};\r\n }\r\n for (const key in fromArgs) {\r\n if (hasOwn(argsOption, key)) {\r\n let keyOption = argsOption[key];\r\n if (isFn(keyOption)) {\r\n keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\r\n }\r\n if (!keyOption) { // 不支持的参数\r\n console.warn(`微信小程序 ${methodName}暂不支持${key}`);\r\n } else if (isStr(keyOption)) { // 重写参数 key\r\n toArgs[keyOption] = fromArgs[key];\r\n } else if (isPlainObject(keyOption)) { // {name:newName,value:value}可重新指定参数 key:value\r\n toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\r\n }\r\n } else if (CALLBACKS.indexOf(key) !== -1) {\r\n if (isFn(fromArgs[key])) {\r\n toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\r\n }\r\n } else {\r\n if (!keepFromArgs) {\r\n toArgs[key] = fromArgs[key];\r\n }\r\n }\r\n }\r\n return toArgs\r\n } else if (isFn(fromArgs)) {\r\n fromArgs = processCallback(methodName, fromArgs, returnValue);\r\n }\r\n return fromArgs\r\n}\r\n\r\nfunction processReturnValue (methodName, res, returnValue, keepReturnValue = false) {\r\n if (isFn(protocols.returnValue)) { // 处理通用 returnValue\r\n res = protocols.returnValue(methodName, res);\r\n }\r\n return processArgs(methodName, res, returnValue, {}, keepReturnValue)\r\n}\r\n\r\nfunction wrapper (methodName, method) {\r\n if (hasOwn(protocols, methodName)) {\r\n const protocol = protocols[methodName];\r\n if (!protocol) { // 暂不支持的 api\r\n return function () {\r\n console.error(`微信小程序 暂不支持${methodName}`);\r\n }\r\n }\r\n return function (arg1, arg2) { // 目前 api 最多两个参数\r\n let options = protocol;\r\n if (isFn(protocol)) {\r\n options = protocol(arg1);\r\n }\r\n\r\n arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\r\n\r\n const args = [arg1];\r\n if (typeof arg2 !== 'undefined') {\r\n args.push(arg2);\r\n }\r\n if (isFn(options.name)) {\r\n methodName = options.name(arg1);\r\n } else if (isStr(options.name)) {\r\n methodName = options.name;\r\n }\r\n const returnValue = wx[methodName].apply(wx, args);\r\n if (isSyncApi(methodName)) { // 同步 api\r\n return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName))\r\n }\r\n return returnValue\r\n }\r\n }\r\n return method\r\n}\r\n\r\nconst todoApis = Object.create(null);\r\n\r\nconst TODOS = [\r\n 'onTabBarMidButtonTap',\r\n 'subscribePush',\r\n 'unsubscribePush',\r\n 'onPush',\r\n 'offPush',\r\n 'share'\r\n];\r\n\r\nfunction createTodoApi (name) {\r\n return function todoApi ({\r\n fail,\r\n complete\r\n }) {\r\n const res = {\r\n errMsg: `${name}:fail:暂不支持 ${name} 方法`\r\n };\r\n isFn(fail) && fail(res);\r\n isFn(complete) && complete(res);\r\n }\r\n}\r\n\r\nTODOS.forEach(function (name) {\r\n todoApis[name] = createTodoApi(name);\r\n});\r\n\r\nvar providers = {\r\n oauth: ['weixin'],\r\n share: ['weixin'],\r\n payment: ['wxpay'],\r\n push: ['weixin']\r\n};\r\n\r\nfunction getProvider ({\r\n service,\r\n success,\r\n fail,\r\n complete\r\n}) {\r\n let res = false;\r\n if (providers[service]) {\r\n res = {\r\n errMsg: 'getProvider:ok',\r\n service,\r\n provider: providers[service]\r\n };\r\n isFn(success) && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getProvider:fail:服务[' + service + ']不存在'\r\n };\r\n isFn(fail) && fail(res);\r\n }\r\n isFn(complete) && complete(res);\r\n}\r\n\r\nvar extraApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n getProvider: getProvider\r\n});\r\n\r\nconst getEmitter = (function () {\r\n let Emitter;\r\n return function getUniEmitter () {\r\n if (!Emitter) {\r\n Emitter = new Vue();\r\n }\r\n return Emitter\r\n }\r\n})();\r\n\r\nfunction apply (ctx, method, args) {\r\n return ctx[method].apply(ctx, args)\r\n}\r\n\r\nfunction $on () {\r\n return apply(getEmitter(), '$on', [...arguments])\r\n}\r\nfunction $off () {\r\n return apply(getEmitter(), '$off', [...arguments])\r\n}\r\nfunction $once () {\r\n return apply(getEmitter(), '$once', [...arguments])\r\n}\r\nfunction $emit () {\r\n return apply(getEmitter(), '$emit', [...arguments])\r\n}\r\n\r\nvar eventApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n $on: $on,\r\n $off: $off,\r\n $once: $once,\r\n $emit: $emit\r\n});\r\n\r\nvar api = /*#__PURE__*/Object.freeze({\r\n __proto__: null\r\n});\r\n\r\nconst MPPage = Page;\r\nconst MPComponent = Component;\r\n\r\nconst customizeRE = /:/g;\r\n\r\nconst customize = cached((str) => {\r\n return camelize(str.replace(customizeRE, '-'))\r\n});\r\n\r\nfunction initTriggerEvent (mpInstance) {\r\n {\r\n if (!wx.canIUse('nextTick')) {\r\n return\r\n }\r\n }\r\n const oldTriggerEvent = mpInstance.triggerEvent;\r\n mpInstance.triggerEvent = function (event, ...args) {\r\n return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])\r\n };\r\n}\r\n\r\nfunction initHook (name, options) {\r\n const oldHook = options[name];\r\n if (!oldHook) {\r\n options[name] = function () {\r\n initTriggerEvent(this);\r\n };\r\n } else {\r\n options[name] = function (...args) {\r\n initTriggerEvent(this);\r\n return oldHook.apply(this, args)\r\n };\r\n }\r\n}\r\n\r\nPage = function (options = {}) {\r\n initHook('onLoad', options);\r\n return MPPage(options)\r\n};\r\n\r\nComponent = function (options = {}) {\r\n initHook('created', options);\r\n return MPComponent(options)\r\n};\r\n\r\nconst PAGE_EVENT_HOOKS = [\r\n 'onPullDownRefresh',\r\n 'onReachBottom',\r\n 'onAddToFavorites',\r\n 'onShareTimeline',\r\n 'onShareAppMessage',\r\n 'onPageScroll',\r\n 'onResize',\r\n 'onTabItemTap'\r\n];\r\n\r\nfunction initMocks (vm, mocks) {\r\n const mpInstance = vm.$mp[vm.mpType];\r\n mocks.forEach(mock => {\r\n if (hasOwn(mpInstance, mock)) {\r\n vm[mock] = mpInstance[mock];\r\n }\r\n });\r\n}\r\n\r\nfunction hasHook (hook, vueOptions) {\r\n if (!vueOptions) {\r\n return true\r\n }\r\n\r\n if (Vue.options && Array.isArray(Vue.options[hook])) {\r\n return true\r\n }\r\n\r\n vueOptions = vueOptions.default || vueOptions;\r\n\r\n if (isFn(vueOptions)) {\r\n if (isFn(vueOptions.extendOptions[hook])) {\r\n return true\r\n }\r\n if (vueOptions.super &&\r\n vueOptions.super.options &&\r\n Array.isArray(vueOptions.super.options[hook])) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n if (isFn(vueOptions[hook])) {\r\n return true\r\n }\r\n const mixins = vueOptions.mixins;\r\n if (Array.isArray(mixins)) {\r\n return !!mixins.find(mixin => hasHook(hook, mixin))\r\n }\r\n}\r\n\r\nfunction initHooks (mpOptions, hooks, vueOptions) {\r\n hooks.forEach(hook => {\r\n if (hasHook(hook, vueOptions)) {\r\n mpOptions[hook] = function (args) {\r\n return this.$vm && this.$vm.__call_hook(hook, args)\r\n };\r\n }\r\n });\r\n}\r\n\r\nfunction initVueComponent (Vue, vueOptions) {\r\n vueOptions = vueOptions.default || vueOptions;\r\n let VueComponent;\r\n if (isFn(vueOptions)) {\r\n VueComponent = vueOptions;\r\n } else {\r\n VueComponent = Vue.extend(vueOptions);\r\n }\r\n vueOptions = VueComponent.options;\r\n return [VueComponent, vueOptions]\r\n}\r\n\r\nfunction initSlots (vm, vueSlots) {\r\n if (Array.isArray(vueSlots) && vueSlots.length) {\r\n const $slots = Object.create(null);\r\n vueSlots.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n vm.$scopedSlots = vm.$slots = $slots;\r\n }\r\n}\r\n\r\nfunction initVueIds (vueIds, mpInstance) {\r\n vueIds = (vueIds || '').split(',');\r\n const len = vueIds.length;\r\n\r\n if (len === 1) {\r\n mpInstance._$vueId = vueIds[0];\r\n } else if (len === 2) {\r\n mpInstance._$vueId = vueIds[0];\r\n mpInstance._$vuePid = vueIds[1];\r\n }\r\n}\r\n\r\nfunction initData (vueOptions, context) {\r\n let data = vueOptions.data || {};\r\n const methods = vueOptions.methods || {};\r\n\r\n if (typeof data === 'function') {\r\n try {\r\n data = data.call(context); // 支持 Vue.prototype 上挂的数据\r\n } catch (e) {\r\n if (process.env.VUE_APP_DEBUG) {\r\n console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);\r\n }\r\n }\r\n } else {\r\n try {\r\n // 对 data 格式化\r\n data = JSON.parse(JSON.stringify(data));\r\n } catch (e) {}\r\n }\r\n\r\n if (!isPlainObject(data)) {\r\n data = {};\r\n }\r\n\r\n Object.keys(methods).forEach(methodName => {\r\n if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {\r\n data[methodName] = methods[methodName];\r\n }\r\n });\r\n\r\n return data\r\n}\r\n\r\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\r\n\r\nfunction createObserver (name) {\r\n return function observer (newVal, oldVal) {\r\n if (this.$vm) {\r\n this.$vm[name] = newVal; // 为了触发其他非 render watcher\r\n }\r\n }\r\n}\r\n\r\nfunction initBehaviors (vueOptions, initBehavior) {\r\n const vueBehaviors = vueOptions.behaviors;\r\n const vueExtends = vueOptions.extends;\r\n const vueMixins = vueOptions.mixins;\r\n\r\n let vueProps = vueOptions.props;\r\n\r\n if (!vueProps) {\r\n vueOptions.props = vueProps = [];\r\n }\r\n\r\n const behaviors = [];\r\n if (Array.isArray(vueBehaviors)) {\r\n vueBehaviors.forEach(behavior => {\r\n behaviors.push(behavior.replace('uni://', `${\"wx\"}://`));\r\n if (behavior === 'uni://form-field') {\r\n if (Array.isArray(vueProps)) {\r\n vueProps.push('name');\r\n vueProps.push('value');\r\n } else {\r\n vueProps.name = {\r\n type: String,\r\n default: ''\r\n };\r\n vueProps.value = {\r\n type: [String, Number, Boolean, Array, Object, Date],\r\n default: ''\r\n };\r\n }\r\n }\r\n });\r\n }\r\n if (isPlainObject(vueExtends) && vueExtends.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueExtends.props, true)\r\n })\r\n );\r\n }\r\n if (Array.isArray(vueMixins)) {\r\n vueMixins.forEach(vueMixin => {\r\n if (isPlainObject(vueMixin) && vueMixin.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueMixin.props, true)\r\n })\r\n );\r\n }\r\n });\r\n }\r\n return behaviors\r\n}\r\n\r\nfunction parsePropType (key, type, defaultValue, file) {\r\n // [String]=>String\r\n if (Array.isArray(type) && type.length === 1) {\r\n return type[0]\r\n }\r\n return type\r\n}\r\n\r\nfunction initProperties (props, isBehavior = false, file = '') {\r\n const properties = {};\r\n if (!isBehavior) {\r\n properties.vueId = {\r\n type: String,\r\n value: ''\r\n };\r\n // 用于字节跳动小程序模拟抽象节点\r\n properties.generic = {\r\n type: Object,\r\n value: null\r\n };\r\n properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\r\n type: null,\r\n value: [],\r\n observer: function (newVal, oldVal) {\r\n const $slots = Object.create(null);\r\n newVal.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n this.setData({\r\n $slots\r\n });\r\n }\r\n };\r\n }\r\n if (Array.isArray(props)) { // ['title']\r\n props.forEach(key => {\r\n properties[key] = {\r\n type: null,\r\n observer: createObserver(key)\r\n };\r\n });\r\n } else if (isPlainObject(props)) { // {title:{type:String,default:''},content:String}\r\n Object.keys(props).forEach(key => {\r\n const opts = props[key];\r\n if (isPlainObject(opts)) { // title:{type:String,default:''}\r\n let value = opts.default;\r\n if (isFn(value)) {\r\n value = value();\r\n }\r\n\r\n opts.type = parsePropType(key, opts.type);\r\n\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,\r\n value,\r\n observer: createObserver(key)\r\n };\r\n } else { // content:String\r\n const type = parsePropType(key, opts);\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(type) !== -1 ? type : null,\r\n observer: createObserver(key)\r\n };\r\n }\r\n });\r\n }\r\n return properties\r\n}\r\n\r\nfunction wrapper$1 (event) {\r\n // TODO 又得兼容 mpvue 的 mp 对象\r\n try {\r\n event.mp = JSON.parse(JSON.stringify(event));\r\n } catch (e) {}\r\n\r\n event.stopPropagation = noop;\r\n event.preventDefault = noop;\r\n\r\n event.target = event.target || {};\r\n\r\n if (!hasOwn(event, 'detail')) {\r\n event.detail = {};\r\n }\r\n\r\n if (hasOwn(event, 'markerId')) {\r\n event.detail = typeof event.detail === 'object' ? event.detail : {};\r\n event.detail.markerId = event.markerId;\r\n }\r\n\r\n if (isPlainObject(event.detail)) {\r\n event.target = Object.assign({}, event.target, event.detail);\r\n }\r\n\r\n return event\r\n}\r\n\r\nfunction getExtraValue (vm, dataPathsArray) {\r\n let context = vm;\r\n dataPathsArray.forEach(dataPathArray => {\r\n const dataPath = dataPathArray[0];\r\n const value = dataPathArray[2];\r\n if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']\r\n const propPath = dataPathArray[1];\r\n const valuePath = dataPathArray[3];\r\n\r\n let vFor;\r\n if (Number.isInteger(dataPath)) {\r\n vFor = dataPath;\r\n } else if (!dataPath) {\r\n vFor = context;\r\n } else if (typeof dataPath === 'string' && dataPath) {\r\n if (dataPath.indexOf('#s#') === 0) {\r\n vFor = dataPath.substr(3);\r\n } else {\r\n vFor = vm.__get_value(dataPath, context);\r\n }\r\n }\r\n\r\n if (Number.isInteger(vFor)) {\r\n context = value;\r\n } else if (!propPath) {\r\n context = vFor[value];\r\n } else {\r\n if (Array.isArray(vFor)) {\r\n context = vFor.find(vForItem => {\r\n return vm.__get_value(propPath, vForItem) === value\r\n });\r\n } else if (isPlainObject(vFor)) {\r\n context = Object.keys(vFor).find(vForKey => {\r\n return vm.__get_value(propPath, vFor[vForKey]) === value\r\n });\r\n } else {\r\n console.error('v-for 暂不支持循环数据:', vFor);\r\n }\r\n }\r\n\r\n if (valuePath) {\r\n context = vm.__get_value(valuePath, context);\r\n }\r\n }\r\n });\r\n return context\r\n}\r\n\r\nfunction processEventExtra (vm, extra, event) {\r\n const extraObj = {};\r\n\r\n if (Array.isArray(extra) && extra.length) {\r\n /**\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *'test'\r\n */\r\n extra.forEach((dataPath, index) => {\r\n if (typeof dataPath === 'string') {\r\n if (!dataPath) { // model,prop.sync\r\n extraObj['$' + index] = vm;\r\n } else {\r\n if (dataPath === '$event') { // $event\r\n extraObj['$' + index] = event;\r\n } else if (dataPath === 'arguments') {\r\n if (event.detail && event.detail.__args__) {\r\n extraObj['$' + index] = event.detail.__args__;\r\n } else {\r\n extraObj['$' + index] = [event];\r\n }\r\n } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value\r\n extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);\r\n } else {\r\n extraObj['$' + index] = vm.__get_value(dataPath);\r\n }\r\n }\r\n } else {\r\n extraObj['$' + index] = getExtraValue(vm, dataPath);\r\n }\r\n });\r\n }\r\n\r\n return extraObj\r\n}\r\n\r\nfunction getObjByArray (arr) {\r\n const obj = {};\r\n for (let i = 1; i < arr.length; i++) {\r\n const element = arr[i];\r\n obj[element[0]] = element[1];\r\n }\r\n return obj\r\n}\r\n\r\nfunction processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {\r\n let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象\r\n if (isCustom) { // 自定义事件\r\n isCustomMPEvent = event.currentTarget &&\r\n event.currentTarget.dataset &&\r\n event.currentTarget.dataset.comType === 'wx';\r\n if (!args.length) { // 无参数,直接传入 event 或 detail 数组\r\n if (isCustomMPEvent) {\r\n return [event]\r\n }\r\n return event.detail.__args__ || event.detail\r\n }\r\n }\r\n\r\n const extraObj = processEventExtra(vm, extra, event);\r\n\r\n const ret = [];\r\n args.forEach(arg => {\r\n if (arg === '$event') {\r\n if (methodName === '__set_model' && !isCustom) { // input v-model value\r\n ret.push(event.target.value);\r\n } else {\r\n if (isCustom && !isCustomMPEvent) {\r\n ret.push(event.detail.__args__[0]);\r\n } else { // wxcomponent 组件或内置组件\r\n ret.push(event);\r\n }\r\n }\r\n } else {\r\n if (Array.isArray(arg) && arg[0] === 'o') {\r\n ret.push(getObjByArray(arg));\r\n } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {\r\n ret.push(extraObj[arg]);\r\n } else {\r\n ret.push(arg);\r\n }\r\n }\r\n });\r\n\r\n return ret\r\n}\r\n\r\nconst ONCE = '~';\r\nconst CUSTOM = '^';\r\n\r\nfunction isMatchEventType (eventType, optType) {\r\n return (eventType === optType) ||\r\n (\r\n optType === 'regionchange' &&\r\n (\r\n eventType === 'begin' ||\r\n eventType === 'end'\r\n )\r\n )\r\n}\r\n\r\nfunction getContextVm (vm) {\r\n let $parent = vm.$parent;\r\n // 父组件是 scoped slots 或者其他自定义组件时继续查找\r\n while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {\r\n $parent = $parent.$parent;\r\n }\r\n return $parent && $parent.$parent\r\n}\r\n\r\nfunction handleEvent (event) {\r\n event = wrapper$1(event);\r\n\r\n // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]\r\n const dataset = (event.currentTarget || event.target).dataset;\r\n if (!dataset) {\r\n return console.warn('事件信息不存在')\r\n }\r\n const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰\r\n if (!eventOpts) {\r\n return console.warn('事件信息不存在')\r\n }\r\n\r\n // [['handle',[1,2,a]],['handle1',[1,2,a]]]\r\n const eventType = event.type;\r\n\r\n const ret = [];\r\n\r\n eventOpts.forEach(eventOpt => {\r\n let type = eventOpt[0];\r\n const eventsArray = eventOpt[1];\r\n\r\n const isCustom = type.charAt(0) === CUSTOM;\r\n type = isCustom ? type.slice(1) : type;\r\n const isOnce = type.charAt(0) === ONCE;\r\n type = isOnce ? type.slice(1) : type;\r\n\r\n if (eventsArray && isMatchEventType(eventType, type)) {\r\n eventsArray.forEach(eventArray => {\r\n const methodName = eventArray[0];\r\n if (methodName) {\r\n let handlerCtx = this.$vm;\r\n if (handlerCtx.$options.generic) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\r\n handlerCtx = getContextVm(handlerCtx) || handlerCtx;\r\n }\r\n if (methodName === '$emit') {\r\n handlerCtx.$emit.apply(handlerCtx,\r\n processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n ));\r\n return\r\n }\r\n const handler = handlerCtx[methodName];\r\n if (!isFn(handler)) {\r\n throw new Error(` _vm.${methodName} is not a function`)\r\n }\r\n if (isOnce) {\r\n if (handler.once) {\r\n return\r\n }\r\n handler.once = true;\r\n }\r\n const params = processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n );\r\n // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据\r\n // eslint-disable-next-line no-sparse-arrays\r\n ret.push(handler.apply(handlerCtx, (Array.isArray(params) ? params : []).concat([, , , , , , , , , , event])));\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (\r\n eventType === 'input' &&\r\n ret.length === 1 &&\r\n typeof ret[0] !== 'undefined'\r\n ) {\r\n return ret[0]\r\n }\r\n}\r\n\r\nconst hooks = [\r\n 'onShow',\r\n 'onHide',\r\n 'onError',\r\n 'onPageNotFound',\r\n 'onThemeChange',\r\n 'onUnhandledRejection'\r\n];\r\n\r\nfunction parseBaseApp (vm, {\r\n mocks,\r\n initRefs\r\n}) {\r\n if (vm.$options.store) {\r\n Vue.prototype.$store = vm.$options.store;\r\n }\r\n\r\n Vue.prototype.mpHost = \"mp-weixin\";\r\n\r\n Vue.mixin({\r\n beforeCreate () {\r\n if (!this.$options.mpType) {\r\n return\r\n }\r\n\r\n this.mpType = this.$options.mpType;\r\n\r\n this.$mp = {\r\n data: {},\r\n [this.mpType]: this.$options.mpInstance\r\n };\r\n\r\n this.$scope = this.$options.mpInstance;\r\n\r\n delete this.$options.mpType;\r\n delete this.$options.mpInstance;\r\n\r\n if (this.mpType !== 'app') {\r\n initRefs(this);\r\n initMocks(this, mocks);\r\n }\r\n }\r\n });\r\n\r\n const appOptions = {\r\n onLaunch (args) {\r\n if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\r\n return\r\n }\r\n {\r\n if (!wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断\r\n console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');\r\n }\r\n }\r\n\r\n this.$vm = vm;\r\n\r\n this.$vm.$mp = {\r\n app: this\r\n };\r\n\r\n this.$vm.$scope = this;\r\n // vm 上也挂载 globalData\r\n this.$vm.globalData = this.globalData;\r\n\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted', args);\r\n\r\n this.$vm.__call_hook('onLaunch', args);\r\n }\r\n };\r\n\r\n // 兼容旧版本 globalData\r\n appOptions.globalData = vm.$options.globalData || {};\r\n // 将 methods 中的方法挂在 getApp() 中\r\n const methods = vm.$options.methods;\r\n if (methods) {\r\n Object.keys(methods).forEach(name => {\r\n appOptions[name] = methods[name];\r\n });\r\n }\r\n\r\n initHooks(appOptions, hooks);\r\n\r\n return appOptions\r\n}\r\n\r\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\r\n\r\nfunction findVmByVueId (vm, vuePid) {\r\n const $children = vm.$children;\r\n // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n const childVm = $children[i];\r\n if (childVm.$scope._$vueId === vuePid) {\r\n return childVm\r\n }\r\n }\r\n // 反向递归查找\r\n let parentVm;\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n parentVm = findVmByVueId($children[i], vuePid);\r\n if (parentVm) {\r\n return parentVm\r\n }\r\n }\r\n}\r\n\r\nfunction initBehavior (options) {\r\n return Behavior(options)\r\n}\r\n\r\nfunction isPage () {\r\n return !!this.route\r\n}\r\n\r\nfunction initRelation (detail) {\r\n this.triggerEvent('__l', detail);\r\n}\r\n\r\nfunction selectAllComponents (mpInstance, selector, $refs) {\r\n const components = mpInstance.selectAllComponents(selector);\r\n components.forEach(component => {\r\n const ref = component.dataset.ref;\r\n $refs[ref] = component.$vm || component;\r\n {\r\n if (component.dataset.vueGeneric === 'scoped') {\r\n component.selectAllComponents('.scoped-ref').forEach(scopedComponent => {\r\n selectAllComponents(scopedComponent, selector, $refs);\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction initRefs (vm) {\r\n const mpInstance = vm.$scope;\r\n Object.defineProperty(vm, '$refs', {\r\n get () {\r\n const $refs = {};\r\n selectAllComponents(mpInstance, '.vue-ref', $refs);\r\n // TODO 暂不考虑 for 中的 scoped\r\n const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');\r\n forComponents.forEach(component => {\r\n const ref = component.dataset.ref;\r\n if (!$refs[ref]) {\r\n $refs[ref] = [];\r\n }\r\n $refs[ref].push(component.$vm || component);\r\n });\r\n return $refs\r\n }\r\n });\r\n}\r\n\r\nfunction handleLink (event) {\r\n const {\r\n vuePid,\r\n vueOptions\r\n } = event.detail || event.value; // detail 是微信,value 是百度(dipatch)\r\n\r\n let parentVm;\r\n\r\n if (vuePid) {\r\n parentVm = findVmByVueId(this.$vm, vuePid);\r\n }\r\n\r\n if (!parentVm) {\r\n parentVm = this.$vm;\r\n }\r\n\r\n vueOptions.parent = parentVm;\r\n}\r\n\r\nfunction parseApp (vm) {\r\n return parseBaseApp(vm, {\r\n mocks,\r\n initRefs\r\n })\r\n}\r\n\r\nconst eventChannels = {};\r\n\r\nconst eventChannelStack = [];\r\n\r\nfunction getEventChannel (id) {\r\n if (id) {\r\n const eventChannel = eventChannels[id];\r\n delete eventChannels[id];\r\n return eventChannel\r\n }\r\n return eventChannelStack.shift()\r\n}\r\n\r\nfunction createApp (vm) {\r\n Vue.prototype.getOpenerEventChannel = function () {\r\n // 微信小程序使用自身getOpenerEventChannel\r\n {\r\n return this.$scope.getOpenerEventChannel()\r\n }\r\n };\r\n const callHook = Vue.prototype.__call_hook;\r\n Vue.prototype.__call_hook = function (hook, args) {\r\n if (hook === 'onLoad' && args && args.__id__) {\r\n this.__eventChannel__ = getEventChannel(args.__id__);\r\n delete args.__id__;\r\n }\r\n return callHook.call(this, hook, args)\r\n };\r\n App(parseApp(vm));\r\n return vm\r\n}\r\n\r\nconst encodeReserveRE = /[!'()*]/g;\r\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\r\nconst commaRE = /%2C/g;\r\n\r\n// fixed encodeURIComponent which is more conformant to RFC3986:\r\n// - escapes [!'()*]\r\n// - preserve commas\r\nconst encode = str => encodeURIComponent(str)\r\n .replace(encodeReserveRE, encodeReserveReplacer)\r\n .replace(commaRE, ',');\r\n\r\nfunction stringifyQuery (obj, encodeStr = encode) {\r\n const res = obj ? Object.keys(obj).map(key => {\r\n const val = obj[key];\r\n\r\n if (val === undefined) {\r\n return ''\r\n }\r\n\r\n if (val === null) {\r\n return encodeStr(key)\r\n }\r\n\r\n if (Array.isArray(val)) {\r\n const result = [];\r\n val.forEach(val2 => {\r\n if (val2 === undefined) {\r\n return\r\n }\r\n if (val2 === null) {\r\n result.push(encodeStr(key));\r\n } else {\r\n result.push(encodeStr(key) + '=' + encodeStr(val2));\r\n }\r\n });\r\n return result.join('&')\r\n }\r\n\r\n return encodeStr(key) + '=' + encodeStr(val)\r\n }).filter(x => x.length > 0).join('&') : null;\r\n return res ? `?${res}` : ''\r\n}\r\n\r\nfunction parseBaseComponent (vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n} = {}) {\r\n const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);\r\n\r\n const options = {\r\n multipleSlots: true,\r\n addGlobalClass: true,\r\n ...(vueOptions.options || {})\r\n };\r\n\r\n {\r\n // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项\r\n if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {\r\n Object.assign(options, vueOptions['mp-weixin'].options);\r\n }\r\n }\r\n\r\n const componentOptions = {\r\n options,\r\n data: initData(vueOptions, Vue.prototype),\r\n behaviors: initBehaviors(vueOptions, initBehavior),\r\n properties: initProperties(vueOptions.props, false, vueOptions.__file),\r\n lifetimes: {\r\n attached () {\r\n const properties = this.properties;\r\n\r\n const options = {\r\n mpType: isPage.call(this) ? 'page' : 'component',\r\n mpInstance: this,\r\n propsData: properties\r\n };\r\n\r\n initVueIds(properties.vueId, this);\r\n\r\n // 处理父子关系\r\n initRelation.call(this, {\r\n vuePid: this._$vuePid,\r\n vueOptions: options\r\n });\r\n\r\n // 初始化 vue 实例\r\n this.$vm = new VueComponent(options);\r\n\r\n // 处理$slots,$scopedSlots(暂不支持动态变化$slots)\r\n initSlots(this.$vm, properties.vueSlots);\r\n\r\n // 触发首次 setData\r\n this.$vm.$mount();\r\n },\r\n ready () {\r\n // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\r\n // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\r\n if (this.$vm) {\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted');\r\n this.$vm.__call_hook('onReady');\r\n }\r\n },\r\n detached () {\r\n this.$vm && this.$vm.$destroy();\r\n }\r\n },\r\n pageLifetimes: {\r\n show (args) {\r\n this.$vm && this.$vm.__call_hook('onPageShow', args);\r\n },\r\n hide () {\r\n this.$vm && this.$vm.__call_hook('onPageHide');\r\n },\r\n resize (size) {\r\n this.$vm && this.$vm.__call_hook('onPageResize', size);\r\n }\r\n },\r\n methods: {\r\n __l: handleLink,\r\n __e: handleEvent\r\n }\r\n };\r\n // externalClasses\r\n if (vueOptions.externalClasses) {\r\n componentOptions.externalClasses = vueOptions.externalClasses;\r\n }\r\n\r\n if (Array.isArray(vueOptions.wxsCallMethods)) {\r\n vueOptions.wxsCallMethods.forEach(callMethod => {\r\n componentOptions.methods[callMethod] = function (args) {\r\n return this.$vm[callMethod](args)\r\n };\r\n });\r\n }\r\n\r\n if (isPage) {\r\n return componentOptions\r\n }\r\n return [componentOptions, VueComponent]\r\n}\r\n\r\nfunction parseComponent (vueComponentOptions) {\r\n return parseBaseComponent(vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n })\r\n}\r\n\r\nconst hooks$1 = [\r\n 'onShow',\r\n 'onHide',\r\n 'onUnload'\r\n];\r\n\r\nhooks$1.push(...PAGE_EVENT_HOOKS);\r\n\r\nfunction parseBasePage (vuePageOptions, {\r\n isPage,\r\n initRelation\r\n}) {\r\n const pageOptions = parseComponent(vuePageOptions);\r\n\r\n initHooks(pageOptions.methods, hooks$1, vuePageOptions);\r\n\r\n pageOptions.methods.onLoad = function (query) {\r\n this.options = query;\r\n const copyQuery = Object.assign({}, query);\r\n delete copyQuery.__id__;\r\n this.$page = {\r\n fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)\r\n };\r\n this.$vm.$mp.query = query; // 兼容 mpvue\r\n this.$vm.__call_hook('onLoad', query);\r\n };\r\n\r\n return pageOptions\r\n}\r\n\r\nfunction parsePage (vuePageOptions) {\r\n return parseBasePage(vuePageOptions, {\r\n isPage,\r\n initRelation\r\n })\r\n}\r\n\r\nfunction createPage (vuePageOptions) {\r\n {\r\n return Component(parsePage(vuePageOptions))\r\n }\r\n}\r\n\r\nfunction createComponent (vueOptions) {\r\n {\r\n return Component(parseComponent(vueOptions))\r\n }\r\n}\r\n\r\ntodos.forEach(todoApi => {\r\n protocols[todoApi] = false;\r\n});\r\n\r\ncanIUses.forEach(canIUseApi => {\r\n const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name\r\n : canIUseApi;\r\n if (!wx.canIUse(apiName)) {\r\n protocols[canIUseApi] = false;\r\n }\r\n});\r\n\r\nlet uni = {};\r\n\r\nif (typeof Proxy !== 'undefined' && \"mp-weixin\" !== 'app-plus') {\r\n uni = new Proxy({}, {\r\n get (target, name) {\r\n if (hasOwn(target, name)) {\r\n return target[name]\r\n }\r\n if (baseApi[name]) {\r\n return baseApi[name]\r\n }\r\n if (api[name]) {\r\n return promisify(name, api[name])\r\n }\r\n {\r\n if (extraApi[name]) {\r\n return promisify(name, extraApi[name])\r\n }\r\n if (todoApis[name]) {\r\n return promisify(name, todoApis[name])\r\n }\r\n }\r\n if (eventApi[name]) {\r\n return eventApi[name]\r\n }\r\n if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {\r\n return\r\n }\r\n return promisify(name, wrapper(name, wx[name]))\r\n },\r\n set (target, name, value) {\r\n target[name] = value;\r\n return true\r\n }\r\n });\r\n} else {\r\n Object.keys(baseApi).forEach(name => {\r\n uni[name] = baseApi[name];\r\n });\r\n\r\n {\r\n Object.keys(todoApis).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n Object.keys(extraApi).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n }\r\n\r\n Object.keys(eventApi).forEach(name => {\r\n uni[name] = eventApi[name];\r\n });\r\n\r\n Object.keys(api).forEach(name => {\r\n uni[name] = promisify(name, api[name]);\r\n });\r\n\r\n Object.keys(wx).forEach(name => {\r\n if (hasOwn(wx, name) || hasOwn(protocols, name)) {\r\n uni[name] = promisify(name, wrapper(name, wx[name]));\r\n }\r\n });\r\n}\r\n\r\nwx.createApp = createApp;\r\nwx.createPage = createPage;\r\nwx.createComponent = createComponent;\r\n\r\nvar uni$1 = uni;\r\n\r\nexport default uni$1;\r\nexport { createApp, createComponent, createPage };\r\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode, /* vue-cli only */\n components, // fixed by xxxxxx auto components\n renderjs // fixed by xxxxxx renderjs\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // fixed by xxxxxx auto components\n if (components) {\n if (!options.components) {\n options.components = {}\n }\n var hasOwn = Object.prototype.hasOwnProperty\n for (var name in components) {\n if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {\n options.components[name] = components[name]\n }\n }\n }\n // fixed by xxxxxx renderjs\n if (renderjs) {\n (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {\n this[renderjs.__module] = this\n });\n (options.mixins || (options.mixins = [])).push(renderjs)\n }\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","function goto(url) {\n\tuni.navigateTo({\n\t\turl:url\n\t})\n}\n\nmodule.exports = {\n\tgoto:goto,\n\tvuemixin:{\n\t\tcreated: function () { console.log(1) }\n\t}\n}","function fMoney (s, n) {\r\n n = n > 0 && n <= 20 ? n : 2\r\n s = parseFloat((s + '').replace(/[^\\d\\.-]/g, '')).toFixed(n) + ''\r\n let l = s.split('.')[0].split('').reverse()\r\n let r = s.split('.')[1]\r\n let t = ''\r\n for(let i = 0; i < l.length; i ++ ) {\r\n t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? ',' : '')\r\n }\r\n return t.split('').reverse().join('') + '.' + r\r\n}\r\n\r\nfunction toDateTime (date, time) {\r\n if (!date) return ''\r\n date = date.toString()\r\n time = time ? time.toString() : ''\r\n let str = `${date.substr(0, 4)}-${date.substr(4, 2)}-${date.substr(6, 2)}`\r\n if (date.length == 14) {\r\n str += ` ${date.substr(8, 2)}:${date.substr(10, 2)}:${date.substr(12, 2)}`\r\n } else if (date.length == 6) {\r\n str = `${date.substr(0, 2)}:${date.substr(2, 2)}:${date.substr(4, 2)}`\r\n } else if (time) {\r\n str += ` ${time.substr(0, 2)}:${time.substr(2, 2)}:${time.substr(4, 2)}`\r\n }\r\n return str\r\n}\r\n\r\nfunction dateFormatFn(date){\r\n\tY = date.getFullYear() + '-';\r\n\tM = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';\r\n\tD = date.getDate() + ' ';\r\n  let newDate = Y+M+D\r\n  return newDate\r\n}\r\n\r\nfunction fMoney2 (m) {\r\n return parseFloat(m).toFixed(2)\r\n}\r\n\r\n// 数字转换大写中文\r\nfunction fMoney3(money) {\r\n //汉字的数字\r\n let cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');\r\n let cnIntRadice = new Array('', '拾', '佰', '仟');//基本单位\r\n let cnIntUnits = new Array('', '万', '亿', '兆');//对应整数部分扩展单位\r\n let cnDecUnits = new Array('仟', '佰', '拾', ''); //对应小数部分单位\r\n let cnInteger = '元整';//整数金额时后面跟的字符\r\n // let\r\n let cnIntLast = '万'; //整数无小数点的单位\r\n let int;//金额整数部分\r\n let dot; //金额小数部分\r\n let chineseStr = ''; //输出的中文金额字符串\r\n let parts; //分离金额后用的数组,预定义\r\n if (money == '') { return ''; }\r\n //转换为字符串,获取小数点后的值与整数分离\r\n money = money.toString();\r\n if (money.indexOf('.') == -1) {\r\n int = money;\r\n dot = '';\r\n } else {\r\n parts = money.split('.');//整数小数分离\r\n int = parts[0];\r\n dot = parts[1].substr(0, 4);//最多四位小数\r\n }\r\n //十进制转换,处理整数部分单位\r\n if (parseInt(int, 10) > 0) {\r\n let zeroCount = 0;\r\n let IntLen = int.length;\r\n for (let i = 0; i < IntLen; i++) {//循环整数部分,给每个位赋值,且判断是否整除4,添加额外赋值\r\n let n = int.substr(i, 1);\r\n let p = IntLen - i - 1;\r\n let q = p / 4;\r\n let m = p % 4;\r\n if (n == '0') {\r\n zeroCount++;\r\n } else {\r\n if (zeroCount > 0) {\r\n chineseStr += cnNums[0];\r\n }\r\n //归零\r\n zeroCount = 0;\r\n chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];\r\n }\r\n if (m == 0 && zeroCount < 4) {\r\n chineseStr += cnIntUnits[q];\r\n }\r\n }\r\n chineseStr += cnIntLast;\r\n }\r\n //小数部分\r\n if (dot != '') {\r\n let decLen = dot.length;\r\n for (let i = 0; i < decLen; i++) {\r\n let n = dot.substr(i, 1);\r\n if (n != '0') {\r\n chineseStr += cnNums[Number(n)] + cnDecUnits[i];\r\n }\r\n }\r\n }\r\n // if (chineseStr == '') {// 为0时,\r\n // chineseStr += cnNums[0] + cnIntLast + cnInteger;\r\n // }\r\n // else if (dot == '') {//小数点为空值时\r\n chineseStr += cnInteger;\r\n // }\r\n return chineseStr;\r\n}\r\n\r\nfunction orderreleaseType (sts) {\r\n const status = {\r\n '0': '手动发布',\r\n '1': '定时发布',\r\n }\r\n return status[sts] || '未知状态'\r\n}\r\n\r\nfunction auditStatus (sts) {\r\n const status = {\r\n '1': {text: '审核中', bgColor: '#FCF0E5',textColor: '#E7BB8B'},\r\n '2': {text: '已通过', bgColor: '#E0F6EF',textColor: '#64C8A8'},\r\n '4': {text: '已拒绝', bgColor: '#FCEBE9',textColor: '#D07D76'},\r\n }\r\n return status[sts] || {text: '未知状态', bgColor: '#333', textColor: '#666'}\r\n}\r\n\r\nfunction processNode (sts) {\r\n const status = {\r\n\t'1': '业务申请', \r\n\t'2': '担保部调查', \r\n\t'3': '资产部调查', \r\n\t'4': '信息部调查',\r\n\t'5': '合规调查',\r\n\t'6': '工作会',\r\n\t'7': '贷审会',\r\n\t'8': '担保函',\r\n\t'9': '回款确认',\r\n\t'10': '放款通知'\r\n }\r\n return status[sts] || '未知状态'\r\n}\r\n\r\nfunction businessType (sts) {\r\n const status = {\r\n '0': '已撤销',\r\n '1': '进行中',\r\n '2': '已完成',\r\n '3': '已否决',\r\n }\r\n return status[sts] || '未知状态'\r\n}\r\n\r\nfunction operationType (sts) {\r\n const status = {\r\n '0': '已发起',\r\n '1': '待处理',\r\n '2': '已处理',\r\n '3': '待提交',\r\n '4': '待定义',\r\n }\r\n return status[sts] || '未知状态'\r\n}\r\n\r\nfunction removeByValue(arr, val) {\r\n for(var i=0; i {\r\n timer = null;\r\n }, wait)\r\n if (callNow) func.apply(context, args);\r\n }\r\n}\r\n\r\nexport default{\r\n fMoney,\r\n fMoney2,\r\n fMoney3,\r\n toDateTime,\r\n dateFormatFn,\r\n orderreleaseType,\r\n auditStatus,\r\n businessType,\r\n operationType,\r\n removeByValue,\r\n objectValueAllEmpty,\r\n debounce,\r\n processNode\r\n}","import Vue from 'vue'\nconst utils = {\n // 手机号格式是否正确\n isMobilePhone(value) {\n const reg = /^1\\d{10}$/\n if (reg.test(value)) {\n return true\n }\n return false\n }\n}\n\nVue.prototype.$utils = utils\n\nexport default utils\n","import request from \"./request\";\r\n// 全局配置的请求域名\r\nlet baseUrl = \"https://www.huorantech.cn\";\r\n//可以new多个request来支持多个域名请求\r\nlet $http = new request({\r\n\t//接口请求地址\r\n\tbaseUrl: baseUrl,\r\n\t//服务器本地上传文件地址\r\n\tfileUrl: baseUrl,\r\n\t// 服务器上传图片默认url\r\n\tdefaultUploadUrl: \"api/common/v1/upload_image\",\r\n\t//设置请求头(如果使用报错跨域问题,可能是content-type请求类型和后台那边设置的不一致)\r\n\theader: {\r\n\t\t'content-type': 'application/json;charset=UTF-8'\r\n\t},\r\n\t// 请求超时时间(默认6000)\r\n\ttimeout: 6000,\r\n\t// 默认配置(可不写)\r\n\tconfig: {\r\n\t\t// 是否自动提示错误\r\n\t\tisPrompt: true,\r\n\t\t// 是否显示加载动画\r\n\t\tload: true,\r\n\t\t// 是否使用数据工厂\r\n\t\tisFactory: true\r\n\t}\r\n});\r\n\r\n// 添加获取七牛云token的方法\r\n$http.getQnToken = function(callback){\r\n\t//该地址需要开发者自行配置(每个后台的接口风格都不一样)\r\n\t$http.get(\"api/kemean/aid/qn_upload\").then(data => {\r\n\t\t/*\r\n\t\t *接口返回参数:\r\n\t\t *visitPrefix:访问文件的域名\r\n\t\t *token:七牛云上传token\r\n\t\t *folderPath:上传的文件夹\r\n\t\t *region: 地区 默认为:SCN\r\n\t\t */\r\n\t\tcallback({\r\n\t\t\tvisitPrefix: data.visitPrefix,\r\n\t\t\ttoken: data.token,\r\n\t\t\tfolderPath: data.folderPath,\r\n\t\t\tregion: \"SCN\"\r\n\t\t});\r\n\t});\r\n}\r\n\r\n//当前接口请求数\r\nlet requestNum = 0;\r\n//请求开始拦截器\r\n$http.requestStart = function(options) {\r\n\tif (options.load) {\r\n\t\tif (requestNum <= 0) {\r\n\t\t\t//打开加载动画\r\n\t\t\tuni.showLoading({\r\n\t\t\t\ttitle: '加载中',\r\n\t\t\t\tmask: true\r\n\t\t\t});\r\n\t\t}\r\n\t\trequestNum += 1;\r\n\t}\r\n\t// 图片上传大小限制\r\n\tif (options.method == \"FILE\" && options.maxSize) {\r\n\t\t// 文件最大字节: options.maxSize 可以在调用方法的时候加入参数\r\n\t\tconst maxSize = options.maxSize;\r\n\t\tfor (let item of options.files) {\r\n\t\t\tif (item.size > maxSize) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: \"图片过大,请重新上传\",\r\n\t\t\t\t\t\ticon: \"none\"\r\n\t\t\t\t\t});\r\n\t\t\t\t}, 500);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t//请求前加入token\r\n\t// options.header['token'] = \"eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxIiwic3ViIjoidG9rZW4iLCJpc3MiOiJBZG1pbiIsImlhdCI6MTYxMTEzMzk1MywiZXhwIjoxNjExMjIwMzUzfQ.ZB_zJgzmgk8uw4wwH5TY8r1IOvObd2rPSfTU3cFA69U\";\r\n\treturn options; // return false 表示请求拦截,不会继续请求\r\n}\r\n//请求结束\r\n$http.requestEnd = function(options) {\r\n\t//判断当前接口是否需要加载动画\r\n\tif (options.load) {\r\n\t\trequestNum = requestNum - 1;\r\n\t\tif (requestNum <= 0) {\r\n\t\t\tuni.hideLoading();\r\n\t\t}\r\n\t}\r\n}\r\n//登录弹窗次数\r\nlet loginPopupNum = 0;\r\n//所有接口数据处理(可在接口里设置不调用此方法)\r\n//此方法需要开发者根据各自的接口返回类型修改,以下只是模板\r\n$http.dataFactory = async function(res) {\r\n\tif (res.response.statusCode && res.response.statusCode == 200) {\r\n\t\tlet httpData = res.response.data;\r\n\t\tif (typeof (httpData) == \"string\") {\r\n\t\t\thttpData = JSON.parse(httpData);\r\n\t\t}\r\n\t\t/*********以下只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/\r\n\r\n\t\t//判断数据是否请求成功\r\n\t\tif (httpData.code == 10000) {\r\n\t\t\t// 返回正确的结果(then接受数据)\r\n\t\t\treturn Promise.resolve(httpData);\r\n\t\t} else { //其他错误提示\r\n\t\t\tif (res.isPrompt) {\r\n\t\t\t\tuni.showToast({\r\n\t\t\t\t\ttitle: httpData.message,\r\n\t\t\t\t\ticon: \"none\",\r\n\t\t\t\t\tduration: 3000\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t// 返回错误的结果(catch接受数据)\r\n\t\t\treturn Promise.reject({\r\n\t\t\t\tstatusCode: 0,\r\n\t\t\t\terrMsg: httpData.message\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/*********以上只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/\r\n\r\n\t} else {\r\n\t\t// 返回错误的结果(catch接受数据)\r\n\t\treturn Promise.reject({\r\n\t\t\tstatusCode: res.response.statusCode,\r\n\t\t\terrMsg: \"数据请求出错\"\r\n\t\t});\r\n\t}\r\n};\r\n// 错误回调\r\n$http.requestError = function (e) {\r\n\t// e.statusCode === 0 是参数效验错误抛出的\r\n\tif (e.statusCode === 0) {\r\n\t\tthrow e;\r\n\t} else {\r\n\t\tuni.showToast({\r\n\t\t\ttitle: \"网络错误,请检查一下网络\",\r\n\t\t\ticon: \"none\"\r\n\t\t});\r\n\t}\r\n}\r\nexport default $http;\r\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","/***************纯粹的数据请求(如果使用这种可以删除掉fileUpload.js)******************/\r\n// import request from \"./core/request.js\";\r\n// export default request;\r\n\r\n/********数据请求同时继承了文件上传(包括七牛云上传)************/\r\nimport upload from \"./upload/upload.js\";\r\nexport default upload;","import request from \"./../core/request.js\";\r\nconst {\r\n\tchooseImage,\r\n\tchooseVideo,\r\n\tqiniuUpload,\r\n\turlUpload\r\n} = require(\"./utils\");\r\nimport {\r\n\tmergeConfig\r\n} from \"./../core/utils.js\";\r\nexport default class fileUpload extends request {\r\n\tconstructor(props) {\r\n\t\t// 调用实现父类的构造函数\r\n\t\tsuper(props);\r\n\t}\r\n\t//七牛云上传图片\r\n\tasync qnImgUpload(options = {}) {\r\n\t\tlet files;\r\n\t\ttry {\r\n\t\t\tfiles = await chooseImage(options);\r\n\t\t\t// 选择完成回调\r\n\t\t\toptions.onSelectComplete && options.onSelectComplete(files);\r\n\t\t} catch (err) {\r\n\t\t\tthis.requestError && this.requestError(err);\r\n\t\t\treturn Promise.reject(err);\r\n\t\t}\r\n\t\tif (files) {\r\n\t\t\treturn this.qnFileUpload({\r\n\t\t\t\t...options,\r\n\t\t\t\tfiles: files\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t//七牛云上传视频\r\n\tasync qnVideoUpload(options = {}) {\r\n\t\tlet files;\r\n\t\ttry {\r\n\t\t\tfiles = await chooseVideo(options);\r\n\t\t\t// 选择完成回调\r\n\t\t\toptions.onSelectComplete && options.onSelectComplete(files);\r\n\t\t} catch (err) {\r\n\t\t\tthis.requestError && this.requestError(err);\r\n\t\t\treturn Promise.reject(err);\r\n\t\t}\r\n\t\tif (files) {\r\n\t\t\treturn this.qnFileUpload({\r\n\t\t\t\t...options,\r\n\t\t\t\tfiles: files\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//七牛云文件上传(支持多张上传)\r\n\tasync qnFileUpload(options = {}) {\r\n\t\tlet requestInfo;\r\n\t\ttry {\r\n\t\t\t// 数据合并\r\n\t\t\trequestInfo = {\r\n\t\t\t\t...this.config,\r\n\t\t\t\t...options,\r\n\t\t\t\theader: {},\r\n\t\t\t\tmethod: \"FILE\"\r\n\t\t\t};\r\n\t\t\t//请求前回调\r\n\t\t\tif (this.requestStart) {\r\n\t\t\t\tlet requestStart = this.requestStart(requestInfo);\r\n\t\t\t\tif (typeof requestStart == \"object\") {\r\n\t\t\t\t\tlet changekeys = [\"load\", \"files\"];\r\n\t\t\t\t\tchangekeys.forEach(key => {\r\n\t\t\t\t\t\trequestInfo[key] = requestStart[key];\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow {\r\n\t\t\t\t\t\terrMsg: \"【request】请求开始拦截器未通过\",\r\n\t\t\t\t\t\tstatusCode: 0,\r\n\t\t\t\t\t\tdata: requestInfo.data,\r\n\t\t\t\t\t\tmethod: requestInfo.method,\r\n\t\t\t\t\t\theader: requestInfo.header,\r\n\t\t\t\t\t\turl: requestInfo.url,\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet requestResult = await qiniuUpload(requestInfo, this.getQnToken);\r\n\t\t\treturn Promise.resolve(requestResult);\r\n\t\t} catch (err) {\r\n\t\t\tthis.requestError && this.requestError(err);\r\n\t\t\treturn Promise.reject(err);\r\n\t\t} finally {\r\n\t\t\tthis.requestEnd && this.requestEnd(requestInfo);\r\n\t\t}\r\n\t}\r\n\t//本地服务器图片上传\r\n\tasync urlImgUpload() {\r\n\t\tlet options = {};\r\n\t\tif (arguments[0]) {\r\n\t\t\tif (typeof(arguments[0]) == \"string\") {\r\n\t\t\t\toptions.url = arguments[0];\r\n\t\t\t} else if (typeof(arguments[0]) == \"object\") {\r\n\t\t\t\toptions = Object.assign(options, arguments[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (arguments[1] && typeof(arguments[1]) == \"object\") {\r\n\t\t\toptions = Object.assign(options, arguments[1]);\r\n\t\t}\r\n\t\ttry {\r\n\t\t\toptions.files = await chooseImage(options);\r\n\t\t\t// 选择完成回调\r\n\t\t\toptions.onSelectComplete && options.onSelectComplete(options.files);\r\n\t\t} catch (err) {\r\n\t\t\tthis.requestError && this.requestError(err);\r\n\t\t\treturn Promise.reject(err);\r\n\t\t}\r\n\t\tif (options.files) {\r\n\t\t\treturn this.urlFileUpload(options);\r\n\t\t}\r\n\t}\r\n\t//本地服务器上传视频\r\n\tasync urlVideoUpload() {\r\n\t\tlet options = {};\r\n\t\tif (arguments[0]) {\r\n\t\t\tif (typeof(arguments[0]) == \"string\") {\r\n\t\t\t\toptions.url = arguments[0];\r\n\t\t\t} else if (typeof(arguments[0]) == \"object\") {\r\n\t\t\t\toptions = Object.assign(options, arguments[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (arguments[1] && typeof(arguments[1]) == \"object\") {\r\n\t\t\toptions = Object.assign(options, arguments[1]);\r\n\t\t}\r\n\t\ttry {\r\n\t\t\toptions.files = await chooseVideo(options);\r\n\t\t\t// 选择完成回调\r\n\t\t\toptions.onSelectComplete && options.onSelectComplete(options.files);\r\n\t\t} catch (err) {\r\n\t\t\tthis.requestError && this.requestError(err);\r\n\t\t\treturn Promise.reject(err);\r\n\t\t}\r\n\t\tif (options.files) {\r\n\t\t\treturn this.urlFileUpload(options);\r\n\t\t}\r\n\t}\r\n\t//本地服务器文件上传方法\r\n\tasync urlFileUpload() {\r\n\t\tlet requestInfo = {\r\n\t\t\tmethod: \"FILE\"\r\n\t\t};\r\n\t\tif (arguments[0]) {\r\n\t\t\tif (typeof(arguments[0]) == \"string\") {\r\n\t\t\t\trequestInfo.url = arguments[0];\r\n\t\t\t} else if (typeof(arguments[0]) == \"object\") {\r\n\t\t\t\trequestInfo = Object.assign(requestInfo, arguments[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (arguments[1] && typeof(arguments[1]) == \"object\") {\r\n\t\t\trequestInfo = Object.assign(requestInfo, arguments[1]);\r\n\t\t}\r\n\t\tif (!requestInfo.url && this.defaultUploadUrl) {\r\n\t\t\trequestInfo.url = this.defaultUploadUrl;\r\n\t\t}\r\n\t\t// 请求数据\r\n\t\t// 是否运行过请求开始钩子\r\n\t\tlet runRequestStart = false;\r\n\t\ttry {\r\n\t\t\tif (!requestInfo.url) {\r\n\t\t\t\tthrow {\r\n\t\t\t\t\terrMsg: \"【request】文件上传缺失数据url\",\r\n\t\t\t\t\tstatusCode: 0,\r\n\t\t\t\t\tdata: requestInfo.data,\r\n\t\t\t\t\tmethod: requestInfo.method,\r\n\t\t\t\t\theader: requestInfo.header,\r\n\t\t\t\t\turl: requestInfo.url,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// 数据合并\r\n\t\t\trequestInfo = mergeConfig(this, requestInfo);\r\n\t\t\t// 代表之前运行到这里\r\n\t\t\trunRequestStart = true;\r\n\t\t\t//请求前回调\r\n\t\t\tif (this.requestStart) {\r\n\t\t\t\tlet requestStart = this.requestStart(requestInfo);\r\n\t\t\t\tif (typeof requestStart == \"object\") {\r\n\t\t\t\t\tlet changekeys = [\"data\", \"header\", \"isPrompt\", \"load\", \"isFactory\", \"files\"];\r\n\t\t\t\t\tchangekeys.forEach(key => {\r\n\t\t\t\t\t\trequestInfo[key] = requestStart[key];\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow {\r\n\t\t\t\t\t\terrMsg: \"【request】请求开始拦截器未通过\",\r\n\t\t\t\t\t\tstatusCode: 0,\r\n\t\t\t\t\t\tdata: requestInfo.data,\r\n\t\t\t\t\t\tmethod: requestInfo.method,\r\n\t\t\t\t\t\theader: requestInfo.header,\r\n\t\t\t\t\t\turl: requestInfo.url,\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet requestResult = await urlUpload(requestInfo, this.dataFactory);\r\n\t\t\treturn Promise.resolve(requestResult);\r\n\t\t} catch (err) {\r\n\t\t\tthis.requestError && this.requestError(err);\r\n\t\t\treturn Promise.reject(err);\r\n\t\t} finally {\r\n\t\t\tif (runRequestStart) {\r\n\t\t\t\tthis.requestEnd && this.requestEnd(requestInfo);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2020 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n if (vm.$options && vm.$options.__file) { // fixed by xxxxxx\n return ('') + vm.$options.__file\n }\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm && vm.$options.name !== 'PageBody') {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n !vm.$options.isReserved && tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.SharedObject.target) {\n Dep.SharedObject.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n// fixed by xxxxxx (nvue shared vuex)\n/* eslint-disable no-undef */\nDep.SharedObject = {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n Dep.SharedObject.targetStack.push(target);\n Dep.SharedObject.target = target;\n Dep.target = target;\n}\n\nfunction popTarget () {\n Dep.SharedObject.targetStack.pop();\n Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n Dep.target = Dep.SharedObject.target;\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑\n if(value.push !== value.__proto__.push){\n copyAugment(value, arrayMethods, arrayKeys);\n } else {\n protoAugment(value, arrayMethods);\n }\n }\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.SharedObject.target) { // fixed by xxxxxx\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\n/* */\n\n// fixed by xxxxxx (mp properties)\r\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\r\n var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\r\n if (isUndef(propOptions)) {\r\n return res\r\n }\n var externalClasses = Ctor.options.mpOptions.externalClasses || [];\r\n var attrs = data.attrs;\n var props = data.props;\r\n if (isDef(attrs) || isDef(props)) {\r\n for (var key in propOptions) {\r\n var altKey = hyphenate(key);\n var result = checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n // externalClass\n if (\n result &&\n res[key] &&\n externalClasses.indexOf(altKey) !== -1 &&\n context[camelize(res[key])]\n ) {\n // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)\n res[key] = context[camelize(res[key])];\n }\r\n }\r\n }\r\n return res\r\n}\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag,\n context// fixed by xxxxxx\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, {}, context)\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, res, context)\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.