diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..0b0655a --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ + "version" : "1.0", + "configurations" : [ + { + "playground" : "custom", + "type" : "uni-app:app-android" + }, + { + "app-plus" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/App.vue b/App.vue index 8c2b732..ec86853 100644 --- a/App.vue +++ b/App.vue @@ -2,6 +2,7 @@ export default { onLaunch: function() { console.log('App Launch') + uni.setStorageSync("SY_TOKEN", "dfdf4564557445df4df") }, onShow: function() { console.log('App Show') @@ -12,6 +13,7 @@ } - + \ No newline at end of file diff --git a/api/test.js b/api/test.js new file mode 100644 index 0000000..0ac79e4 --- /dev/null +++ b/api/test.js @@ -0,0 +1,6 @@ +import syhttp from "@/utils/syhttp.js"; + +/** + * 我的公司 + */ +export const companyMine = (data) => syhttp.post('/SuYuan/monitorDetail', data) \ No newline at end of file diff --git a/config/app.js b/config/app.js new file mode 100644 index 0000000..07228dd --- /dev/null +++ b/config/app.js @@ -0,0 +1,32 @@ +let BASE_URL + +// 环境 +let env = "dev" +// let env = "prod" + +let HTTP_REQUEST_URL +let HEADER + +if (env == 'dev') { + BASE_URL = 'http://ceshi-suyuan.lihaink.cn/' +} else if (env = 'prod') { + BASE_URL = 'http://shi-suyuan.lihaink.cn/' +} +let config = { + HTTP_REQUEST_URL: BASE_URL, + HEADER: { + 'content-type': 'application/json', + //#ifdef MP + 'Form-type': 'routine', + //#endif + //#ifdef APP-PLUS + 'Form-type': 'app', + //#endif + 'TOKEN': uni.getStorageSync("SY_TOKEN") || '' + + } +} + +export { + config +}; \ No newline at end of file diff --git a/libs/login.js b/libs/login.js new file mode 100644 index 0000000..9346b8f --- /dev/null +++ b/libs/login.js @@ -0,0 +1,104 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import store from "../store"; +import Cache from '../utils/cache'; +// #ifdef H5 +// import { isWeixin } from "../utils"; +// import auth from './wechat'; +// #endif + +import { + LOGIN_STATUS, + USER_INFO, + EXPIRES_TIME, + STATE_R_KEY +} from './../config/cache'; + +function prePage() { + let pages = getCurrentPages(); + console.log(pages) + let prePage = pages[pages.length - 2]; + // #ifdef H5 + return prePage; + // #endif + //return prePage.$vm; +} + +export function toLogin(push, pathLogin) { + store.commit("LOGOUT"); + let path = prePage(); + if (path) { + path = path.router; + if (path == undefined) { + path = location.pathname + location.search; + } + } + // #ifdef MP + uni.navigateTo({ + url: '/page/users/login/login' + }) + // #endif + // #ifdef H5 + else { + path = location.pathname + location.search; + } + // #endif + + if (!pathLogin) + pathLogin = '/page/users/login/login' + Cache.set('login_back_url', path); + uni.navigateTo({ + url: '/pages/users/login/login' + }) + // #ifdef H5 + if (isWeixin()) { + // auth.oAuth(); // 微信授权 + uni.navigateTo({ + url: '/pages/users/login/login' + }) + } else { + if (path !== pathLogin) { + push ? uni.navigateTo({ + url: '/pages/users/login/login' + }) : uni.reLaunch({ + url: '/pages/users/login/login' + }); + } + } + // #endif + + // #ifdef APP-PLUS + uni.navigateTo({ + url: '/pages/users/login/login', + }) + // #endif +} + + +export function checkLogin() { + let token = Cache.get(LOGIN_STATUS); + let expiresTime = Cache.get(EXPIRES_TIME) || 0; + let newTime = Math.round(new Date() / 1000); + if (expiresTime < newTime || !token) { + Cache.clear(LOGIN_STATUS); + Cache.clear(EXPIRES_TIME); + Cache.clear(USER_INFO); + Cache.clear(STATE_R_KEY); + return false; + } else { + store.commit('UPDATE_LOGIN', token); + let userInfo = Cache.get(USER_INFO, true); + if (userInfo) { + store.commit('UPDATE_USERINFO', userInfo); + } + return true; + } + +} diff --git a/libs/uniApi.js b/libs/uniApi.js new file mode 100644 index 0000000..ffd8def --- /dev/null +++ b/libs/uniApi.js @@ -0,0 +1,474 @@ +// import uniCopy from '@/js_sdk/xb-copy/uni-copy.js'; // 拷贝功能插件 +// import compressImage from './compressImage.js'; // 解决图片旋转90°问题 +// const device = uni.getSystemInfoSync(); +// console.log("device:======================== " + JSON.stringify(device)); +/* + 参数说明 + @url + 要跳转的目标地址 + @opt + 要传给目标地址的参数 + 可在目标页面的onLoad生命周期函数的第一个参数中获取 +*/ + +// 压栈跳转页面 +export function navigateTo(type, url, opt) { + // H5端页面跳转目前不支持动画 (浏览器性能限制) + let toUrl = url; + let api = 'navigateTo'; + toUrl = opt ? toUrl + '?' + convertObj(opt) : toUrl; + + switch (type) { + case 1: + api = 'navigateTo'; + break; + case 2: + api = 'redirectTo'; // 关闭当前页,跳转应用内某个页面 + break; + case 3: + api = 'reLaunch'; // 关闭所有页面,打开到应用内某个页面 + break; + case 4: + api = 'switchTab'; //跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 + break; + default: + api = 'navigateTo' + break; + } + uni[api]({ + url: toUrl, + animationType: 'slide-in-right', + animationDuration: 200 + }); +} + +// 关闭当前页面并返回上一页面 delta 标识返回几层 +export function navigateBack(delta) { + uni.navigateBack({ + delta: delta + }); +} + +// setStorage 将数据存入缓存 +export function setStorage(key, val) { + if (typeof val == 'string') { + uni.setStorageSync(key, val); + return val + } + uni.setStorageSync(key, JSON.stringify(val)); +} + +// getStorage 从缓存中读取数据 +export function getStorage(key) { + let uu = uni.getStorageSync(key); + try { + if (typeof JSON.parse(uu) != 'number') { + uu = JSON.parse(uu); + } + } catch (e) {} + return uu; +} +// 删除缓存中的数据 +export function removeStorage(key) { + if (key) { + uni.removeStorageSync(key); + } +} +// 将缓存中的数据清空 +export function clearStorage() { + try { + uni.clearStorageSync(); + } catch (e) { + throw new Error('处理失败'); + } +} +// 显示Toast +/* +@title 最多汉字数量7个 +@icon success loading none +*/ +export function Toast(title, icon = 'none', obj = {}, duration = 700) { + let toastData = { + title: title, + duration: duration, + // position: 'center', + mask: true, + icon: icon ? icon : 'none', + ...obj + }; + uni.showToast(toastData); +} +/* +显示loading提示框,需要手动隐藏 +*/ +export function Loading(title = '正在加载...', obj = {}) { + uni.showLoading({ + title: title, + mask: true, + ...obj + }); +} +// 隐藏loading +export function hideLoading() { + try { + uni.hideLoading(); + } catch (e) { + //TODO handle the exception + throw new Error('处理失败'); + } +} +// 模态框 +/* +确定取消按钮的文字颜色可修改 +obj 对象中传入 cancelColor : rgb 即可修改取消按钮颜色 +obj 对象中传入 confirmColor : rgb 即可修改确认按钮颜色 +*/ +export function Modal(title = '提示', content = '这是一个模态弹窗!', obj = { + showCancel: true, + cancelText: '取消', + confirmText: '确定' +}) { + // #ifdef APP-PLUS + obj.cancelText = '确定'; + obj.confirmText = '取消'; + // #endif + return new Promise((reslove, reject) => { + uni.showModal({ + title: title, + content: content, + ...obj, + success: (res) => { + if (res.confirm) { + reslove() + } + if (res.cancel) { + reject() + } + } + }); + }) +} +/* +显示操作菜单 +@itemList 操作菜单数组 +@itemColor 文字颜色 +*/ +export function ActionSheet(itemList, itemColor = "#000000") { + return new Promise((reslove, reject) => { + uni.showActionSheet({ + itemList: itemList, + itemColor: itemColor, + success: (res) => { + reslove(res.tapIndex); + }, + fail: function(res) { + reject(res.errMsg); + } + }); + }) +} +//将页面滚动到目标位置。 +export function ScrollTo(ScrollTop) { + uni.pageScrollTo({ + scrollTop: ScrollTop, + duration: 300 + }) +} + +// 获取用户信息 +export function GetUserInfo() { + return new Promise((reslove, reject) => { + uni.getUserInfo({ + success(res) { + console.log(res); + reslove(res); + }, + fail(rej) { + reject(rej); + } + }) + }) +} + +// 获取用户授权信息 +export function Authorize(scoped = 'scope.userInfo') { + return new Promise((reslove, reject) => { + uni.authorize({ + scope: scoped, + success(res) { + reslove(res); + }, + fail(rej) { + reject(rej); + } + }) + }) +} + +// 将对象转换成使用 & 连接的字符串 +export function convertObj(opt) { + let str = ''; + let arr = []; + Object.keys(opt).forEach(item => { + arr.push(`${item}=${opt[item]}`); + }) + str = arr.join('&'); + return str; +} +// 节流函数 +// 节流函数 +export function throttle(fn, delay) { + var lastArgs; + var timer; + var delay = delay || 200; + return function(...args) { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + fn.apply(this, lastArgs); + }, delay); + } + } +} + +// 调起相机 +export function chooseImage(count) { + return new Promise((reslove, reject) => { + uni.chooseImage({ + count: count, //默认9 + sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 + sourceType: ['album', 'camera'], //从相册选择 + success: (res) => { + reslove(res); + // const tempFilePaths = res.tempFilePaths; + // let tempPathList = []; + // for (let i = 0; i < tempFilePaths.length; i++) { + // const path = tempFilePaths[i]; + // const src = await compressImageHandler(path) + // tempPathList.push(src); + // } + // reslove(tempPathList); + }, + fail: (rej) => { + reject(rej); + } + }); + }) +} + +// function compressImageHandler(src) { +// // console.log('platform===' + device.platform) +// const tempPath = compressImage(src, device.platform); +// // console.log('tempPath-----' + tempPath); +// return tempPath +// } +//序列化对象和数组 +export function serialize(data) { + if (data != null && data != '') { + try { + return JSON.parse(JSON.stringify(data)); + } catch (e) { + if (data instanceof Array) { + return []; + } + return {}; + } + } + return data; +} +Date.prototype.format = function(fmt) { + let o = { + 'M+': this.getMonth() + 1, //月份 + 'd+': this.getDate(), //日 + 'h+': this.getHours(), //小时 + 'm+': this.getMinutes(), //分 + 's+': this.getSeconds(), //秒 + 'q+': Math.floor((this.getMonth() + 3) / 3), //季度 + S: this.getMilliseconds() //毫秒 + }; + + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, String(this.getFullYear()).substr(4 - RegExp.$1.length)); + } + for (let k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(String(o[k]).length)); + } + } + return fmt; +}; + +//格式化日期 +export function formatDate(nS, format) { + //日期格式化 + if (!nS) { + return ''; + } + format = format || 'yyyy-MM-dd hh:mm:ss'; + return new Date(nS).format(format); +} + +// 图片转base64 +export function pathToBase64(path) { + return new Promise(function(resolve, reject) { + if (typeof window === 'object' && 'document' in window) { + if (typeof FileReader === 'function') { + var xhr = new XMLHttpRequest() + xhr.open('GET', path, true) + xhr.responseType = 'blob' + xhr.onload = function() { + if (this.status === 200) { + let fileReader = new FileReader() + fileReader.onload = function(e) { + resolve(e.target.result) + } + fileReader.onerror = reject + fileReader.readAsDataURL(this.response) + } + } + xhr.onerror = reject + xhr.send() + return + } + var canvas = document.createElement('canvas') + var c2x = canvas.getContext('2d') + var img = new Image + img.onload = function() { + canvas.width = img.width + canvas.height = img.height + c2x.drawImage(img, 0, 0) + resolve(canvas.toDataURL()) + canvas.height = canvas.width = 0 + } + img.onerror = reject + img.src = path + return + } + if (typeof plus === 'object') { + plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) { + entry.file(function(file) { + var fileReader = new plus.io.FileReader() + fileReader.onload = function(data) { + resolve(data.target.result) + } + fileReader.onerror = function(error) { + reject(error) + } + fileReader.readAsDataURL(file) + }, function(error) { + reject(error) + }) + }, function(error) { + reject(error) + }) + return + } + if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { + wx.getFileSystemManager().readFile({ + filePath: path, + encoding: 'base64', + success: function(res) { + resolve('data:image/png;base64,' + res.data) + }, + fail: function(error) { + reject(error) + } + }) + return + } + reject(new Error('not support')) + }) +} + + + + +/* +@value 要拷贝的内容 +*/ +// export function copyText(value) { +// // 条件编译,以下代码仅在H5出现 +// //#ifdef H5 +// return new Promise((reslove, reject) => { +// uniCopy({ +// content: value, +// success: (res) => { +// reslove(res); +// }, +// error: (e) => { +// reject(res) +// } +// }) +// }) + +// //#endif + +// // 以下代码在除H5以外的平台出现 +// //#ifndef H5 + +// //#endif +// } + +// 获取本周的第一天 +export function showWeekFirstDay() { + var date = new Date(); + var weekday = date.getDay() || 7; //获取星期几,getDay()返回值是 0(周日) 到 6(周六) 之间的一个整数。0||7为7,即weekday的值为1-7 + date.setDate(date.getDate() - weekday + 1); //往前算(weekday-1)天,年份、月份会自动变化 + return formatDate(date, 'yyyy-MM-dd'); +} + + + +// 获取本月第一天 +export function showMonthFirstDay() { + var MonthFirstDay = new Date().setDate(1); + return formatDate(new Date(MonthFirstDay).getTime(), 'yyyy-MM-dd'); +} + +var now = new Date(); //当前日期 +// var nowDayOfWeek = now.getDay(); //今天本周的第几天 +// var nowDay = now.getDate(); //当前日 +var nowMonth = now.getMonth(); //当前月 +var nowYear = now.getYear(); //当前年 +nowYear += (nowYear < 2000) ? 1900 : 0; // +//获得本季度的开始月份 +function getQuarterStartMonth() { + var quarterStartMonth = 0; + if (nowMonth < 3) { + quarterStartMonth = 0; + } + if (2 < nowMonth && nowMonth < 6) { + quarterStartMonth = 3; + } + if (5 < nowMonth && nowMonth < 9) { + quarterStartMonth = 6; + } + if (nowMonth > 8) { + quarterStartMonth = 9; + } + return quarterStartMonth; +} + +//或的本季度的结束日期 +//获得本季度的开始日期 +export function getQuarterStartDate() { + var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1); + return formatDate(quarterStartDate, 'yyyy-MM-dd'); +} +// 删除数组中重复数据 +export function unique(data) { + data = data || []; + var n = {}; //存放新的数据 + for (var i = 0; i < data.length; i++) { + var v = JSON.stringify(data[i]); + if (typeof(v) == "undefined") { + n[v] = 1; + } + } + data.length = 0; + for (var i in n) { + data[data.length] = i; + } + return data; +} diff --git a/main.js b/main.js index c1caf36..d6356c5 100644 --- a/main.js +++ b/main.js @@ -1,22 +1,31 @@ import App from './App' - +import uviewPlus from 'uview-plus' +import { + createPinia +} from 'pinia' // #ifndef VUE3 import Vue from 'vue' import './uni.promisify.adaptor' Vue.config.productionTip = false App.mpType = 'app' const app = new Vue({ - ...App + ...App }) app.$mount() // #endif // #ifdef VUE3 -import { createSSRApp } from 'vue' +import { + createSSRApp +} from 'vue' export function createApp() { - const app = createSSRApp(App) - return { - app - } + const app = createSSRApp(App) + const pinia = createPinia() + app.use(pinia) + app.use(uviewPlus) + return { + app, + pinia + } } // #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json index 69f2e00..4b74c91 100644 --- a/manifest.json +++ b/manifest.json @@ -1,72 +1,77 @@ { - "name" : "test", - "appid" : "__UNI__B1D7CFE", - "description" : "", - "versionName" : "1.0.0", - "versionCode" : "100", - "transformPx" : false, - /* 5+App特有相关 */ - "app-plus" : { - "usingComponents" : true, - "nvueStyleCompiler" : "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" : "", - "setting" : { - "urlCheck" : false - }, - "usingComponents" : true - }, - "mp-alipay" : { - "usingComponents" : true - }, - "mp-baidu" : { - "usingComponents" : true - }, - "mp-toutiao" : { - "usingComponents" : true - }, - "uniStatistics" : { - "enable" : false - }, - "vueVersion" : "3" -} + "name": "test", + "appid": "__UNI__B1D7CFE", + "description": "", + "versionName": "1.0.0", + "versionCode": "100", + "transformPx": false, + /* 5+App特有相关 */ + "app-plus": { + "usingComponents": true, + "nvueStyleCompiler": "uni-app", + "compilerVersion": 3, + "splashscreen": { + "alwaysShowBeforeRender": true, + "waiting": true, + "autoclose": true, + "delay": 0 + }, + /* 模块配置 */ + "modules": {}, + /* 应用发布信息 */ + "distribute": { + /* android打包配置 */ + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "minSdkVersion": 21 + }, + /* ios打包配置 */ + "ios": { + "dSYMs": false + }, + /* SDK配置 */ + "sdkConfigs": { + "ad": {} + } + } + }, + /* 快应用特有相关 */ + "quickapp": {}, + /* 小程序特有相关 */ + "mp-weixin": { + "appid": "", + "setting": { + "urlCheck": false + }, + "usingComponents": true + }, + "mp-alipay": { + "usingComponents": true + }, + "mp-baidu": { + "usingComponents": true + }, + "mp-toutiao": { + "usingComponents": true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion": "3" +} \ No newline at end of file diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json new file mode 100644 index 0000000..33a3dee --- /dev/null +++ b/node_modules/.vite/deps/_metadata.json @@ -0,0 +1,13 @@ +{ + "hash": "a1d62a80", + "browserHash": "90e08141", + "optimized": { + "uview-plus": { + "src": "../../uview-plus/index.js", + "file": "uview-plus.js", + "fileHash": "b7892bb7", + "needsInterop": false + } + }, + "chunks": {} +} \ No newline at end of file diff --git a/node_modules/.vite/deps/package.json b/node_modules/.vite/deps/package.json new file mode 100644 index 0000000..7c34deb --- /dev/null +++ b/node_modules/.vite/deps/package.json @@ -0,0 +1 @@ +{"type":"module"} \ No newline at end of file diff --git a/node_modules/.vite/deps/uview-plus.js b/node_modules/.vite/deps/uview-plus.js new file mode 100644 index 0000000..de488a2 --- /dev/null +++ b/node_modules/.vite/deps/uview-plus.js @@ -0,0 +1,3521 @@ +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/mixin/mixin.js +var mixin_default = { + // 定义每个组件都可能需要用到的外部样式以及类名 + props: { + // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式 + customStyle: { + type: [Object, String], + default: () => ({}) + }, + customClass: { + type: String, + default: "" + }, + // 跳转的页面路径 + url: { + type: String, + default: "" + }, + // 页面跳转的类型 + linkType: { + type: String, + default: "navigateTo" + } + }, + data() { + return {}; + }, + onLoad() { + this.$u.getRect = this.$uGetRect; + }, + created() { + this.$u.getRect = this.$uGetRect; + }, + computed: { + // 在2.x版本中,将会把$u挂载到uni对象下,导致在模板中无法使用uni.$u.xxx形式 + // 所以这里通过computed计算属性将其附加到this.$u上,就可以在模板或者js中使用uni.$u.xxx + // 只在nvue环境通过此方式引入完整的$u,其他平台会出现性能问题,非nvue则按需引入(主要原因是props过大) + $u() { + return uni.$u.deepMerge(uni.$u, { + props: void 0, + http: void 0, + mixin: void 0 + }); + }, + /** + * 生成bem规则类名 + * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class="[bem()]"的形式进行同用 + * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式 + * @param {String} name 组件名称 + * @param {Array} fixed 一直会存在的类名 + * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名 + * @returns {Array|string} + */ + bem() { + return function(name, fixed, change) { + const prefix = `u-${name}--`; + const classes = {}; + if (fixed) { + fixed.map((item) => { + classes[prefix + this[item]] = true; + }); + } + if (change) { + change.map((item) => { + this[item] ? classes[prefix + item] = this[item] : delete classes[prefix + item]; + }); + } + return Object.keys(classes); + }; + } + }, + methods: { + // 跳转某一个页面 + openPage(urlKey = "url") { + const url2 = this[urlKey]; + if (url2) { + this.$u.route({ type: this.linkType, url: url2 }); + } + }, + // 查询节点信息 + // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21) + // 解决办法为在组件根部再套一个没有任何作用的view元素 + $uGetRect(selector, all) { + return new Promise((resolve) => { + uni.createSelectorQuery().in(this)[all ? "selectAll" : "select"](selector).boundingClientRect((rect) => { + if (all && Array.isArray(rect) && rect.length) { + resolve(rect); + } + if (!all && rect) { + resolve(rect); + } + }).exec(); + }); + }, + getParentData(parentName = "") { + if (!this.parent) + this.parent = {}; + this.parent = uni.$u.$parent.call(this, parentName); + if (this.parent.children) { + this.parent.children.indexOf(this) === -1 && this.parent.children.push(this); + } + if (this.parent && this.parentData) { + Object.keys(this.parentData).map((key) => { + this.parentData[key] = this.parent[key]; + }); + } + }, + // 阻止事件冒泡 + preventEvent(e) { + e && typeof e.stopPropagation === "function" && e.stopPropagation(); + }, + // 空操作 + noop(e) { + this.preventEvent(e); + } + }, + onReachBottom() { + uni.$emit("uOnReachBottom"); + }, + beforeDestroy() { + if (this.parent && uni.$u.test.array(this.parent.children)) { + const childrenList = this.parent.children; + childrenList.map((child, index) => { + if (child === this) { + childrenList.splice(index, 1); + } + }); + } + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/mixin/mpMixin.js +var mpMixin_default = {}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/utils.js +var { toString } = Object.prototype; +function isArray(val) { + return toString.call(val) === "[object Array]"; +} +function isObject(val) { + return val !== null && typeof val === "object"; +} +function isDate(val) { + return toString.call(val) === "[object Date]"; +} +function isURLSearchParams(val) { + return typeof URLSearchParams !== "undefined" && val instanceof URLSearchParams; +} +function forEach(obj, fn) { + if (obj === null || typeof obj === "undefined") { + return; + } + if (typeof obj !== "object") { + obj = [obj]; + } + if (isArray(obj)) { + for (let i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} +function isPlainObject(obj) { + return Object.prototype.toString.call(obj) === "[object Object]"; +} +function deepMerge() { + const result = {}; + function assignValue(val, key) { + if (typeof result[key] === "object" && typeof val === "object") { + result[key] = deepMerge(result[key], val); + } else if (typeof val === "object") { + result[key] = deepMerge({}, val); + } else { + result[key] = val; + } + } + for (let i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} +function isUndefined(val) { + return typeof val === "undefined"; +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/helpers/buildURL.js +function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); +} +function buildURL(url2, params) { + if (!params) { + return url2; + } + let serializedParams; + if (isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + const parts = []; + forEach(params, (val, key) => { + if (val === null || typeof val === "undefined") { + return; + } + if (isArray(val)) { + key = `${key}[]`; + } else { + val = [val]; + } + forEach(val, (v) => { + if (isDate(v)) { + v = v.toISOString(); + } else if (isObject(v)) { + v = JSON.stringify(v); + } + parts.push(`${encode(key)}=${encode(v)}`); + }); + }); + serializedParams = parts.join("&"); + } + if (serializedParams) { + const hashmarkIndex = url2.indexOf("#"); + if (hashmarkIndex !== -1) { + url2 = url2.slice(0, hashmarkIndex); + } + url2 += (url2.indexOf("?") === -1 ? "?" : "&") + serializedParams; + } + return url2; +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/helpers/isAbsoluteURL.js +function isAbsoluteURL(url2) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url2); +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/helpers/combineURLs.js +function combineURLs(baseURL, relativeURL) { + return relativeURL ? `${baseURL.replace(/\/+$/, "")}/${relativeURL.replace(/^\/+/, "")}` : baseURL; +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/buildFullPath.js +function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/settle.js +function settle(resolve, reject, response) { + const { validateStatus: validateStatus2 } = response.config; + const status = response.statusCode; + if (status && (!validateStatus2 || validateStatus2(status))) { + resolve(response); + } else { + reject(response); + } +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/adapters/index.js +var mergeKeys = (keys, config2) => { + const config = {}; + keys.forEach((prop) => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop]; + } + }); + return config; +}; +var adapters_default = (config) => new Promise((resolve, reject) => { + const fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params); + const _config = { + url: fullPath, + header: config.header, + complete: (response) => { + config.fullPath = fullPath; + response.config = config; + try { + if (typeof response.data === "string") { + response.data = JSON.parse(response.data); + } + } catch (e) { + } + settle(resolve, reject, response); + } + }; + let requestTask; + if (config.method === "UPLOAD") { + delete _config.header["content-type"]; + delete _config.header["Content-Type"]; + const otherConfig = { + filePath: config.filePath, + name: config.name + }; + const optionalKeys = [ + "files", + "file", + "timeout", + "formData" + ]; + requestTask = uni.uploadFile({ ..._config, ...otherConfig, ...mergeKeys(optionalKeys, config) }); + } else if (config.method === "DOWNLOAD") { + if (!isUndefined(config.timeout)) { + _config.timeout = config.timeout; + } + requestTask = uni.downloadFile(_config); + } else { + const optionalKeys = [ + "data", + "method", + "timeout", + "dataType", + "responseType", + "withCredentials" + ]; + requestTask = uni.request({ ..._config, ...mergeKeys(optionalKeys, config) }); + } + if (config.getTask) { + config.getTask(requestTask, config); + } +}); + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/dispatchRequest.js +var dispatchRequest_default = (config) => adapters_default(config); + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/InterceptorManager.js +function InterceptorManager() { + this.handlers = []; +} +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled, + rejected + }); + return this.handlers.length - 1; +}; +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; +InterceptorManager.prototype.forEach = function forEach2(fn) { + this.handlers.forEach((h) => { + if (h !== null) { + fn(h); + } + }); +}; +var InterceptorManager_default = InterceptorManager; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/mergeConfig.js +var mergeKeys2 = (keys, globalsConfig, config2) => { + const config = {}; + keys.forEach((prop) => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop]; + } else if (!isUndefined(globalsConfig[prop])) { + config[prop] = globalsConfig[prop]; + } + }); + return config; +}; +var mergeConfig_default = (globalsConfig, config2 = {}) => { + const method = config2.method || globalsConfig.method || "GET"; + let config = { + baseURL: globalsConfig.baseURL || "", + method, + url: config2.url || "", + params: config2.params || {}, + custom: { ...globalsConfig.custom || {}, ...config2.custom || {} }, + header: deepMerge(globalsConfig.header || {}, config2.header || {}) + }; + const defaultToConfig2Keys = ["getTask", "validateStatus"]; + config = { ...config, ...mergeKeys2(defaultToConfig2Keys, globalsConfig, config2) }; + if (method === "DOWNLOAD") { + if (!isUndefined(config2.timeout)) { + config.timeout = config2.timeout; + } else if (!isUndefined(globalsConfig.timeout)) { + config.timeout = globalsConfig.timeout; + } + } else if (method === "UPLOAD") { + delete config.header["content-type"]; + delete config.header["Content-Type"]; + const uploadKeys = [ + "files", + "file", + "filePath", + "name", + "timeout", + "formData" + ]; + uploadKeys.forEach((prop) => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop]; + } + }); + if (isUndefined(config.timeout) && !isUndefined(globalsConfig.timeout)) { + config.timeout = globalsConfig.timeout; + } + } else { + const defaultsKeys = [ + "data", + "timeout", + "dataType", + "responseType", + "withCredentials" + ]; + config = { ...config, ...mergeKeys2(defaultsKeys, globalsConfig, config2) }; + } + return config; +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/defaults.js +var defaults_default = { + baseURL: "", + header: {}, + method: "GET", + dataType: "json", + responseType: "text", + custom: {}, + timeout: 6e4, + withCredentials: false, + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/utils/clone.js +var clone = function() { + "use strict"; + function _instanceof(obj, type) { + return type != null && obj instanceof type; + } + var nativeMap; + try { + nativeMap = Map; + } catch (_) { + nativeMap = function() { + }; + } + var nativeSet; + try { + nativeSet = Set; + } catch (_) { + nativeSet = function() { + }; + } + var nativePromise; + try { + nativePromise = Promise; + } catch (_) { + nativePromise = function() { + }; + } + function clone2(parent, circular, depth, prototype, includeNonEnumerable) { + if (typeof circular === "object") { + depth = circular.depth; + prototype = circular.prototype; + includeNonEnumerable = circular.includeNonEnumerable; + circular = circular.circular; + } + var allParents = []; + var allChildren = []; + var useBuffer = typeof Buffer != "undefined"; + if (typeof circular == "undefined") + circular = true; + if (typeof depth == "undefined") + depth = Infinity; + function _clone(parent2, depth2) { + if (parent2 === null) + return null; + if (depth2 === 0) + return parent2; + var child; + var proto; + if (typeof parent2 != "object") { + return parent2; + } + if (_instanceof(parent2, nativeMap)) { + child = new nativeMap(); + } else if (_instanceof(parent2, nativeSet)) { + child = new nativeSet(); + } else if (_instanceof(parent2, nativePromise)) { + child = new nativePromise(function(resolve, reject) { + parent2.then(function(value) { + resolve(_clone(value, depth2 - 1)); + }, function(err) { + reject(_clone(err, depth2 - 1)); + }); + }); + } else if (clone2.__isArray(parent2)) { + child = []; + } else if (clone2.__isRegExp(parent2)) { + child = new RegExp(parent2.source, __getRegExpFlags(parent2)); + if (parent2.lastIndex) + child.lastIndex = parent2.lastIndex; + } else if (clone2.__isDate(parent2)) { + child = new Date(parent2.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent2)) { + if (Buffer.from) { + child = Buffer.from(parent2); + } else { + child = new Buffer(parent2.length); + parent2.copy(child); + } + return child; + } else if (_instanceof(parent2, Error)) { + child = Object.create(parent2); + } else { + if (typeof prototype == "undefined") { + proto = Object.getPrototypeOf(parent2); + child = Object.create(proto); + } else { + child = Object.create(prototype); + proto = prototype; + } + } + if (circular) { + var index = allParents.indexOf(parent2); + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent2); + allChildren.push(child); + } + if (_instanceof(parent2, nativeMap)) { + parent2.forEach(function(value, key) { + var keyChild = _clone(key, depth2 - 1); + var valueChild = _clone(value, depth2 - 1); + child.set(keyChild, valueChild); + }); + } + if (_instanceof(parent2, nativeSet)) { + parent2.forEach(function(value) { + var entryChild = _clone(value, depth2 - 1); + child.add(entryChild); + }); + } + for (var i in parent2) { + var attrs = Object.getOwnPropertyDescriptor(parent2, i); + if (attrs) { + child[i] = _clone(parent2[i], depth2 - 1); + } + try { + var objProperty = Object.getOwnPropertyDescriptor(parent2, i); + if (objProperty.set === "undefined") { + continue; + } + child[i] = _clone(parent2[i], depth2 - 1); + } catch (e) { + if (e instanceof TypeError) { + continue; + } else if (e instanceof ReferenceError) { + continue; + } + } + } + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(parent2); + for (var i = 0; i < symbols.length; i++) { + var symbol = symbols[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent2, symbol); + if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { + continue; + } + child[symbol] = _clone(parent2[symbol], depth2 - 1); + Object.defineProperty(child, symbol, descriptor); + } + } + if (includeNonEnumerable) { + var allPropertyNames = Object.getOwnPropertyNames(parent2); + for (var i = 0; i < allPropertyNames.length; i++) { + var propertyName = allPropertyNames[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent2, propertyName); + if (descriptor && descriptor.enumerable) { + continue; + } + child[propertyName] = _clone(parent2[propertyName], depth2 - 1); + Object.defineProperty(child, propertyName, descriptor); + } + } + return child; + } + return _clone(parent, depth); + } + clone2.clonePrototype = function clonePrototype(parent) { + if (parent === null) + return null; + var c = function() { + }; + c.prototype = parent; + return new c(); + }; + function __objToStr(o) { + return Object.prototype.toString.call(o); + } + clone2.__objToStr = __objToStr; + function __isDate(o) { + return typeof o === "object" && __objToStr(o) === "[object Date]"; + } + clone2.__isDate = __isDate; + function __isArray(o) { + return typeof o === "object" && __objToStr(o) === "[object Array]"; + } + clone2.__isArray = __isArray; + function __isRegExp(o) { + return typeof o === "object" && __objToStr(o) === "[object RegExp]"; + } + clone2.__isRegExp = __isRegExp; + function __getRegExpFlags(re) { + var flags = ""; + if (re.global) + flags += "g"; + if (re.ignoreCase) + flags += "i"; + if (re.multiline) + flags += "m"; + return flags; + } + clone2.__getRegExpFlags = __getRegExpFlags; + return clone2; +}(); +var clone_default = clone; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/core/Request.js +var Request = class { + /** + * @param {Object} arg - 全局配置 + * @param {String} arg.baseURL - 全局根路径 + * @param {Object} arg.header - 全局header + * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式 + * @param {String} arg.dataType = [json] - 全局默认的dataType + * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持 + * @param {Object} arg.custom - 全局默认的自定义参数 + * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序 + * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+) + * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+) + * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+) + * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300 + */ + constructor(arg = {}) { + if (!isPlainObject(arg)) { + arg = {}; + console.warn("设置全局参数必须接收一个Object"); + } + this.config = clone_default({ ...defaults_default, ...arg }); + this.interceptors = { + request: new InterceptorManager_default(), + response: new InterceptorManager_default() + }; + } + /** + * @Function + * @param {Request~setConfigCallback} f - 设置全局默认配置 + */ + setConfig(f) { + this.config = f(this.config); + } + middleware(config) { + config = mergeConfig_default(this.config, config); + const chain = [dispatchRequest_default, void 0]; + let promise2 = Promise.resolve(config); + this.interceptors.request.forEach((interceptor) => { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + this.interceptors.response.forEach((interceptor) => { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + while (chain.length) { + promise2 = promise2.then(chain.shift(), chain.shift()); + } + return promise2; + } + /** + * @Function + * @param {Object} config - 请求配置项 + * @prop {String} options.url - 请求路径 + * @prop {Object} options.data - 请求参数 + * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型 + * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse + * @prop {Object} [options.header = config.header] - 请求header + * @prop {Object} [options.method = config.method] - 请求方法 + * @returns {Promise} + */ + request(config = {}) { + return this.middleware(config); + } + get(url2, options = {}) { + return this.middleware({ + url: url2, + method: "GET", + ...options + }); + } + post(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "POST", + ...options + }); + } + put(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "PUT", + ...options + }); + } + delete(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "DELETE", + ...options + }); + } + connect(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "CONNECT", + ...options + }); + } + head(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "HEAD", + ...options + }); + } + options(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "OPTIONS", + ...options + }); + } + trace(url2, data, options = {}) { + return this.middleware({ + url: url2, + data, + method: "TRACE", + ...options + }); + } + upload(url2, config = {}) { + config.url = url2; + config.method = "UPLOAD"; + return this.middleware(config); + } + download(url2, config = {}) { + config.url = url2; + config.method = "DOWNLOAD"; + return this.middleware(config); + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/luch-request/index.js +var luch_request_default = Request; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/util/route.js +var Router = class { + constructor() { + this.config = { + type: "navigateTo", + url: "", + delta: 1, + // navigateBack页面后退时,回退的层数 + params: {}, + // 传递的参数 + animationType: "pop-in", + // 窗口动画,只在APP有效 + animationDuration: 300, + // 窗口动画持续时间,单位毫秒,只在APP有效 + intercept: false + // 是否需要拦截 + }; + this.route = this.route.bind(this); + } + // 判断url前面是否有"/",如果没有则加上,否则无法跳转 + addRootPath(url2) { + return url2[0] === "/" ? url2 : `/${url2}`; + } + // 整合路由参数 + mixinParam(url2, params) { + url2 = url2 && this.addRootPath(url2); + let query = ""; + if (/.*\/.*\?.*=.*/.test(url2)) { + query = uni.$u.queryParams(params, false); + return url2 += `&${query}`; + } + query = uni.$u.queryParams(params); + return url2 += query; + } + // 对外的方法名称 + async route(options = {}, params = {}) { + let mergeConfig = {}; + if (typeof options === "string") { + mergeConfig.url = this.mixinParam(options, params); + mergeConfig.type = "navigateTo"; + } else { + mergeConfig = uni.$u.deepMerge(this.config, options); + mergeConfig.url = this.mixinParam(options.url, options.params); + } + if (mergeConfig.url === uni.$u.page()) + return; + if (params.intercept) { + this.config.intercept = params.intercept; + } + mergeConfig.params = params; + mergeConfig = uni.$u.deepMerge(this.config, mergeConfig); + if (typeof uni.$u.routeIntercept === "function") { + const isNext = await new Promise((resolve, reject) => { + uni.$u.routeIntercept(mergeConfig, resolve); + }); + isNext && this.openPage(mergeConfig); + } else { + this.openPage(mergeConfig); + } + } + // 执行路由跳转 + openPage(config) { + const { + url: url2, + type, + delta, + animationType, + animationDuration + } = config; + if (config.type == "navigateTo" || config.type == "to") { + uni.navigateTo({ + url: url2, + animationType, + animationDuration + }); + } + if (config.type == "redirectTo" || config.type == "redirect") { + uni.redirectTo({ + url: url2 + }); + } + if (config.type == "switchTab" || config.type == "tab") { + uni.switchTab({ + url: url2 + }); + } + if (config.type == "reLaunch" || config.type == "launch") { + uni.reLaunch({ + url: url2 + }); + } + if (config.type == "navigateBack" || config.type == "back") { + uni.navigateBack({ + delta + }); + } + } +}; +var route_default = new Router().route; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/colorGradient.js +function colorGradient(startColor = "rgb(0, 0, 0)", endColor = "rgb(255, 255, 255)", step = 10) { + const startRGB = hexToRgb(startColor, false); + const startR = startRGB[0]; + const startG = startRGB[1]; + const startB = startRGB[2]; + const endRGB = hexToRgb(endColor, false); + const endR = endRGB[0]; + const endG = endRGB[1]; + const endB = endRGB[2]; + const sR = (endR - startR) / step; + const sG = (endG - startG) / step; + const sB = (endB - startB) / step; + const colorArr = []; + for (let i = 0; i < step; i++) { + let hex = rgbToHex(`rgb(${Math.round(sR * i + startR)},${Math.round(sG * i + startG)},${Math.round(sB * i + startB)})`); + if (i === 0) + hex = rgbToHex(startColor); + if (i === step - 1) + hex = rgbToHex(endColor); + colorArr.push(hex); + } + return colorArr; +} +function hexToRgb(sColor, str = true) { + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + sColor = String(sColor).toLowerCase(); + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = "#"; + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); + } + sColor = sColorNew; + } + const sColorChange = []; + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)); + } + if (!str) { + return sColorChange; + } + return `rgb(${sColorChange[0]},${sColorChange[1]},${sColorChange[2]})`; + } + if (/^(rgb|RGB)/.test(sColor)) { + const arr = sColor.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(","); + return arr.map((val) => Number(val)); + } + return sColor; +} +function rgbToHex(rgb) { + const _this = rgb; + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + if (/^(rgb|RGB)/.test(_this)) { + const aColor = _this.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(","); + let strHex = "#"; + for (let i = 0; i < aColor.length; i++) { + let hex = Number(aColor[i]).toString(16); + hex = String(hex).length == 1 ? `${0}${hex}` : hex; + if (hex === "0") { + hex += hex; + } + strHex += hex; + } + if (strHex.length !== 7) { + strHex = _this; + } + return strHex; + } + if (reg.test(_this)) { + const aNum = _this.replace(/#/, "").split(""); + if (aNum.length === 6) { + return _this; + } + if (aNum.length === 3) { + let numHex = "#"; + for (let i = 0; i < aNum.length; i += 1) { + numHex += aNum[i] + aNum[i]; + } + return numHex; + } + } else { + return _this; + } +} +function colorToRgba(color6, alpha) { + color6 = rgbToHex(color6); + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + let sColor = String(color6).toLowerCase(); + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = "#"; + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); + } + sColor = sColorNew; + } + const sColorChange = []; + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)); + } + return `rgba(${sColorChange.join(",")},${alpha})`; + } + return sColor; +} +var colorGradient_default = { + colorGradient, + hexToRgb, + rgbToHex, + colorToRgba +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/test.js +function email(value) { + return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value); +} +function mobile(value) { + return /^1[23456789]\d{9}$/.test(value); +} +function url(value) { + return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(value); +} +function date(value) { + if (!value) + return false; + if (number(value)) + value = +value; + return !/Invalid|NaN/.test(new Date(value).toString()); +} +function dateISO(value) { + return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value); +} +function number(value) { + return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value); +} +function string(value) { + return typeof value === "string"; +} +function digits(value) { + return /^\d+$/.test(value); +} +function idCard(value) { + return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test( + value + ); +} +function carNo(value) { + const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/; + const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/; + if (value.length === 7) { + return creg.test(value); + } + if (value.length === 8) { + return xreg.test(value); + } + return false; +} +function amount(value) { + return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value); +} +function chinese(value) { + const reg = /^[\u4e00-\u9fa5]+$/gi; + return reg.test(value); +} +function letter(value) { + return /^[a-zA-Z]*$/.test(value); +} +function enOrNum(value) { + const reg = /^[0-9a-zA-Z]*$/g; + return reg.test(value); +} +function contains(value, param) { + return value.indexOf(param) >= 0; +} +function range(value, param) { + return value >= param[0] && value <= param[1]; +} +function rangeLength(value, param) { + return value.length >= param[0] && value.length <= param[1]; +} +function landline(value) { + const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/; + return reg.test(value); +} +function empty(value) { + switch (typeof value) { + case "undefined": + return true; + case "string": + if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, "").length == 0) + return true; + break; + case "boolean": + if (!value) + return true; + break; + case "number": + if (value === 0 || isNaN(value)) + return true; + break; + case "object": + if (value === null || value.length === 0) + return true; + for (const i in value) { + return false; + } + return true; + } + return false; +} +function jsonString(value) { + if (typeof value === "string") { + try { + const obj = JSON.parse(value); + if (typeof obj === "object" && obj) { + return true; + } + return false; + } catch (e) { + return false; + } + } + return false; +} +function array(value) { + if (typeof Array.isArray === "function") { + return Array.isArray(value); + } + return Object.prototype.toString.call(value) === "[object Array]"; +} +function object(value) { + return Object.prototype.toString.call(value) === "[object Object]"; +} +function code(value, len = 6) { + return new RegExp(`^\\d{${len}}$`).test(value); +} +function func(value) { + return typeof value === "function"; +} +function promise(value) { + return object(value) && func(value.then) && func(value.catch); +} +function image(value) { + const newValue = value.split("?")[0]; + const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; + return IMAGE_REGEXP.test(newValue); +} +function video(value) { + const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i; + return VIDEO_REGEXP.test(value); +} +function regExp(o) { + return o && Object.prototype.toString.call(o) === "[object RegExp]"; +} +var test_default = { + email, + mobile, + url, + date, + dateISO, + number, + digits, + idCard, + carNo, + amount, + chinese, + letter, + enOrNum, + contains, + range, + rangeLength, + empty, + isEmpty: empty, + jsonString, + landline, + object, + array, + code, + func, + promise, + video, + image, + regExp, + string +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/debounce.js +var timeout = null; +function debounce(func2, wait = 500, immediate = false) { + if (timeout !== null) + clearTimeout(timeout); + if (immediate) { + const callNow = !timeout; + timeout = setTimeout(() => { + timeout = null; + }, wait); + if (callNow) + typeof func2 === "function" && func2(); + } else { + timeout = setTimeout(() => { + typeof func2 === "function" && func2(); + }, wait); + } +} +var debounce_default = debounce; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/throttle.js +var timer; +var flag; +function throttle(func2, wait = 500, immediate = true) { + if (immediate) { + if (!flag) { + flag = true; + typeof func2 === "function" && func2(); + timer = setTimeout(() => { + flag = false; + }, wait); + } + } else if (!flag) { + flag = true; + timer = setTimeout(() => { + flag = false; + typeof func2 === "function" && func2(); + }, wait); + } +} +var throttle_default = throttle; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/digit.js +var _boundaryCheckingState = true; +function strip(num, precision = 15) { + return +parseFloat(Number(num).toPrecision(precision)); +} +function digitLength(num) { + const eSplit = num.toString().split(/[eE]/); + const len = (eSplit[0].split(".")[1] || "").length - +(eSplit[1] || 0); + return len > 0 ? len : 0; +} +function float2Fixed(num) { + if (num.toString().indexOf("e") === -1) { + return Number(num.toString().replace(".", "")); + } + const dLen = digitLength(num); + return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num); +} +function checkBoundary(num) { + if (_boundaryCheckingState) { + if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) { + console.warn(`${num} 超出了精度限制,结果可能不正确`); + } + } +} +function iteratorOperation(arr, operation) { + const [num1, num2, ...others] = arr; + let res = operation(num1, num2); + others.forEach((num) => { + res = operation(res, num); + }); + return res; +} +function times(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, times); + } + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + const baseNum = digitLength(num1) + digitLength(num2); + const leftValue = num1Changed * num2Changed; + checkBoundary(leftValue); + return leftValue / Math.pow(10, baseNum); +} +function divide(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, divide); + } + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + checkBoundary(num1Changed); + checkBoundary(num2Changed); + return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1)))); +} +function round(num, ratio) { + const base = Math.pow(10, ratio); + let result = divide(Math.round(Math.abs(times(num, base))), base); + if (num < 0 && result !== 0) { + result = times(result, -1); + } + return result; +} + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/index.js +function range2(min = 0, max = 0, value = 0) { + return Math.max(min, Math.min(max, Number(value))); +} +function getPx(value, unit = false) { + if (test_default.number(value)) { + return unit ? `${value}px` : Number(value); + } + if (/(rpx|upx)$/.test(value)) { + return unit ? `${uni.upx2px(parseInt(value))}px` : Number(uni.upx2px(parseInt(value))); + } + return unit ? `${parseInt(value)}px` : parseInt(value); +} +function sleep(value = 30) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, value); + }); +} +function os() { + return uni.getSystemInfoSync().platform.toLowerCase(); +} +function sys() { + return uni.getSystemInfoSync(); +} +function random(min, max) { + if (min >= 0 && max > 0 && max >= min) { + const gab = max - min + 1; + return Math.floor(Math.random() * gab + min); + } + return 0; +} +function guid(len = 32, firstU = true, radix = null) { + const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); + const uuid = []; + radix = radix || chars.length; + if (len) { + for (let i = 0; i < len; i++) + uuid[i] = chars[0 | Math.random() * radix]; + } else { + let r; + uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-"; + uuid[14] = "4"; + for (let i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random() * 16; + uuid[i] = chars[i == 19 ? r & 3 | 8 : r]; + } + } + } + if (firstU) { + uuid.shift(); + return `u${uuid.join("")}`; + } + return uuid.join(""); +} +function $parent(name = void 0) { + let parent = this.$parent; + while (parent) { + if (parent.$options && parent.$options.name !== name) { + parent = parent.$parent; + } else { + return parent; + } + } + return false; +} +function addStyle(customStyle, target = "object") { + if (test_default.empty(customStyle) || typeof customStyle === "object" && target === "object" || target === "string" && typeof customStyle === "string") { + return customStyle; + } + if (target === "object") { + customStyle = trim(customStyle); + const styleArray = customStyle.split(";"); + const style = {}; + for (let i = 0; i < styleArray.length; i++) { + if (styleArray[i]) { + const item = styleArray[i].split(":"); + style[trim(item[0])] = trim(item[1]); + } + } + return style; + } + let string2 = ""; + for (const i in customStyle) { + const key = i.replace(/([A-Z])/g, "-$1").toLowerCase(); + string2 += `${key}:${customStyle[i]};`; + } + return trim(string2); +} +function addUnit(value = "auto", unit = "") { + if (!unit) { + unit = uni.$u.config.unit || "px"; + } + value = String(value); + return test_default.number(value) ? `${value}${unit}` : value; +} +function deepClone(obj) { + if ([null, void 0, NaN, false].includes(obj)) + return obj; + if (typeof obj !== "object" && typeof obj !== "function") { + return obj; + } + const o = test_default.array(obj) ? [] : {}; + for (const i in obj) { + if (obj.hasOwnProperty(i)) { + o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]; + } + } + return o; +} +function deepMerge2(target = {}, source = {}) { + target = deepClone(target); + if (typeof target !== "object" || typeof source !== "object") + return false; + for (const prop in source) { + if (!source.hasOwnProperty(prop)) + continue; + if (prop in target) { + if (source[prop] == null) { + target[prop] = source[prop]; + } else if (typeof target[prop] !== "object") { + target[prop] = source[prop]; + } else if (typeof source[prop] !== "object") { + target[prop] = source[prop]; + } else if (target[prop].concat && source[prop].concat) { + target[prop] = target[prop].concat(source[prop]); + } else { + target[prop] = deepMerge2(target[prop], source[prop]); + } + } else { + target[prop] = source[prop]; + } + } + return target; +} +function error(err) { + if (true) { + console.error(`uView提示:${err}`); + } +} +function randomArray(array2 = []) { + return array2.sort(() => Math.random() - 0.5); +} +if (!String.prototype.padStart) { + String.prototype.padStart = function(maxLength, fillString = " ") { + if (Object.prototype.toString.call(fillString) !== "[object String]") { + throw new TypeError( + "fillString must be String" + ); + } + const str = this; + if (str.length >= maxLength) + return String(str); + const fillLength = maxLength - str.length; + let times2 = Math.ceil(fillLength / fillString.length); + while (times2 >>= 1) { + fillString += fillString; + if (times2 === 1) { + fillString += fillString; + } + } + return fillString.slice(0, fillLength) + str; + }; +} +function timeFormat(dateTime = null, formatStr = "yyyy-mm-dd") { + let date2; + if (!dateTime) { + date2 = /* @__PURE__ */ new Date(); + } else if (/^\d{10}$/.test(dateTime.toString().trim())) { + date2 = new Date(dateTime * 1e3); + } else if (typeof dateTime === "string" && /^\d+$/.test(dateTime.trim())) { + date2 = new Date(Number(dateTime)); + } else { + date2 = new Date( + typeof dateTime === "string" ? dateTime.replace(/-/g, "/") : dateTime + ); + } + const timeSource = { + "y": date2.getFullYear().toString(), + // 年 + "m": (date2.getMonth() + 1).toString().padStart(2, "0"), + // 月 + "d": date2.getDate().toString().padStart(2, "0"), + // 日 + "h": date2.getHours().toString().padStart(2, "0"), + // 时 + "M": date2.getMinutes().toString().padStart(2, "0"), + // 分 + "s": date2.getSeconds().toString().padStart(2, "0") + // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + }; + for (const key in timeSource) { + const [ret] = new RegExp(`${key}+`).exec(formatStr) || []; + if (ret) { + const beginIndex = key === "y" && ret.length === 2 ? 2 : 0; + formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex)); + } + } + return formatStr; +} +function timeFrom(timestamp = null, format = "yyyy-mm-dd") { + if (timestamp == null) + timestamp = Number(/* @__PURE__ */ new Date()); + timestamp = parseInt(timestamp); + if (timestamp.toString().length == 10) + timestamp *= 1e3; + let timer2 = (/* @__PURE__ */ new Date()).getTime() - timestamp; + timer2 = parseInt(timer2 / 1e3); + let tips = ""; + switch (true) { + case timer2 < 300: + tips = "刚刚"; + break; + case (timer2 >= 300 && timer2 < 3600): + tips = `${parseInt(timer2 / 60)}分钟前`; + break; + case (timer2 >= 3600 && timer2 < 86400): + tips = `${parseInt(timer2 / 3600)}小时前`; + break; + case (timer2 >= 86400 && timer2 < 2592e3): + tips = `${parseInt(timer2 / 86400)}天前`; + break; + default: + if (format === false) { + if (timer2 >= 2592e3 && timer2 < 365 * 86400) { + tips = `${parseInt(timer2 / (86400 * 30))}个月前`; + } else { + tips = `${parseInt(timer2 / (86400 * 365))}年前`; + } + } else { + tips = timeFormat(timestamp, format); + } + } + return tips; +} +function trim(str, pos = "both") { + str = String(str); + if (pos == "both") { + return str.replace(/^\s+|\s+$/g, ""); + } + if (pos == "left") { + return str.replace(/^\s*/, ""); + } + if (pos == "right") { + return str.replace(/(\s*$)/g, ""); + } + if (pos == "all") { + return str.replace(/\s+/g, ""); + } + return str; +} +function queryParams(data = {}, isPrefix = true, arrayFormat = "brackets") { + const prefix = isPrefix ? "?" : ""; + const _result = []; + if (["indices", "brackets", "repeat", "comma"].indexOf(arrayFormat) == -1) + arrayFormat = "brackets"; + for (const key in data) { + const value = data[key]; + if (["", void 0, null].indexOf(value) >= 0) { + continue; + } + if (value.constructor === Array) { + switch (arrayFormat) { + case "indices": + for (let i = 0; i < value.length; i++) { + _result.push(`${key}[${i}]=${value[i]}`); + } + break; + case "brackets": + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`); + }); + break; + case "repeat": + value.forEach((_value) => { + _result.push(`${key}=${_value}`); + }); + break; + case "comma": + let commaStr = ""; + value.forEach((_value) => { + commaStr += (commaStr ? "," : "") + _value; + }); + _result.push(`${key}=${commaStr}`); + break; + default: + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`); + }); + } + } else { + _result.push(`${key}=${value}`); + } + } + return _result.length ? prefix + _result.join("&") : ""; +} +function toast(title, duration = 2e3) { + uni.showToast({ + title: String(title), + icon: "none", + duration + }); +} +function type2icon(type = "success", fill = false) { + if (["primary", "info", "error", "warning", "success"].indexOf(type) == -1) + type = "success"; + let iconName = ""; + switch (type) { + case "primary": + iconName = "info-circle"; + break; + case "info": + iconName = "info-circle"; + break; + case "error": + iconName = "close-circle"; + break; + case "warning": + iconName = "error-circle"; + break; + case "success": + iconName = "checkmark-circle"; + break; + default: + iconName = "checkmark-circle"; + } + if (fill) + iconName += "-fill"; + return iconName; +} +function priceFormat(number2, decimals = 0, decimalPoint = ".", thousandsSeparator = ",") { + number2 = `${number2}`.replace(/[^0-9+-Ee.]/g, ""); + const n = !isFinite(+number2) ? 0 : +number2; + const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals); + const sep = typeof thousandsSeparator === "undefined" ? "," : thousandsSeparator; + const dec = typeof decimalPoint === "undefined" ? "." : decimalPoint; + let s = ""; + s = (prec ? round(n, prec) + "" : `${Math.round(n)}`).split("."); + const re = /(-?\d+)(\d{3})/; + while (re.test(s[0])) { + s[0] = s[0].replace(re, `$1${sep}$2`); + } + if ((s[1] || "").length < prec) { + s[1] = s[1] || ""; + s[1] += new Array(prec - s[1].length + 1).join("0"); + } + return s.join(dec); +} +function getDuration(value, unit = true) { + const valueNum = parseInt(value); + if (unit) { + if (/s$/.test(value)) + return value; + return value > 30 ? `${value}ms` : `${value}s`; + } + if (/ms$/.test(value)) + return valueNum; + if (/s$/.test(value)) + return valueNum > 30 ? valueNum : valueNum * 1e3; + return valueNum; +} +function padZero(value) { + return `00${value}`.slice(-2); +} +function formValidate(instance, event) { + const formItem = uni.$u.$parent.call(instance, "u-form-item"); + const form = uni.$u.$parent.call(instance, "u-form"); + if (formItem && form) { + form.validateField(formItem.prop, () => { + }, event); + } +} +function getProperty(obj, key) { + if (!obj) { + return; + } + if (typeof key !== "string" || key === "") { + return ""; + } + if (key.indexOf(".") !== -1) { + const keys = key.split("."); + let firstObj = obj[keys[0]] || {}; + for (let i = 1; i < keys.length; i++) { + if (firstObj) { + firstObj = firstObj[keys[i]]; + } + } + return firstObj; + } + return obj[key]; +} +function setProperty(obj, key, value) { + if (!obj) { + return; + } + const inFn = function(_obj, keys, v) { + if (keys.length === 1) { + _obj[keys[0]] = v; + return; + } + while (keys.length > 1) { + const k = keys[0]; + if (!_obj[k] || typeof _obj[k] !== "object") { + _obj[k] = {}; + } + const key2 = keys.shift(); + inFn(_obj[k], keys, v); + } + }; + if (typeof key !== "string" || key === "") { + } else if (key.indexOf(".") !== -1) { + const keys = key.split("."); + inFn(obj, keys, value); + } else { + obj[key] = value; + } +} +function page() { + const pages2 = getCurrentPages(); + return `/${pages2[pages2.length - 1].route || ""}`; +} +function pages() { + const pages2 = getCurrentPages(); + return pages2; +} +function setConfig({ + props = {}, + config = {}, + color: color6 = {}, + zIndex = {} +}) { + const { + deepMerge: deepMerge3 + } = uni.$u; + uni.$u.config = deepMerge3(uni.$u.config, config); + uni.$u.props = deepMerge3(uni.$u.props, props); + uni.$u.color = deepMerge3(uni.$u.color, color6); + uni.$u.zIndex = deepMerge3(uni.$u.zIndex, zIndex); +} +var function_default = { + range: range2, + getPx, + sleep, + os, + sys, + random, + guid, + $parent, + addStyle, + addUnit, + deepClone, + deepMerge: deepMerge2, + error, + randomArray, + timeFormat, + timeFrom, + trim, + queryParams, + toast, + type2icon, + priceFormat, + getDuration, + padZero, + formValidate, + getProperty, + setProperty, + page, + pages, + setConfig +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/config.js +var version = "3"; +if (true) { + console.log(` + %c uview-plus V${version} %c https://ijry.github.io/uview-plus/ + +`, "color: #ffffff; background: #3c9cff; padding:5px 0;", "color: #3c9cff;background: #ffffff; padding:5px 0;"); +} +var config_default = { + v: version, + version, + // 主题名称 + type: [ + "primary", + "success", + "info", + "error", + "warning" + ], + // 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持 + color: { + "u-primary": "#2979ff", + "u-warning": "#ff9900", + "u-success": "#19be6b", + "u-error": "#fa3534", + "u-info": "#909399", + "u-main-color": "#303133", + "u-content-color": "#606266", + "u-tips-color": "#909399", + "u-light-color": "#c0c4cc" + }, + // 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx + unit: "px" +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/actionSheet.js +var actionSheet_default = { + // action-sheet组件 + actionSheet: { + show: false, + title: "", + description: "", + actions: () => [], + index: "", + cancelText: "", + closeOnClickAction: true, + safeAreaInsetBottom: true, + openType: "", + closeOnClickOverlay: true, + round: 0 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/album.js +var album_default = { + // album 组件 + album: { + urls: () => [], + keyName: "", + singleSize: 180, + multipleSize: 70, + space: 6, + singleMode: "scaleToFill", + multipleMode: "aspectFill", + maxCount: 9, + previewFullImage: true, + rowCount: 3, + showMore: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/alert.js +var alert_default = { + // alert警告组件 + alert: { + title: "", + type: "warning", + description: "", + closable: false, + showIcon: false, + effect: "light", + center: false, + fontSize: 14 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/avatar.js +var avatar_default = { + // avatar 组件 + avatar: { + src: "", + shape: "circle", + size: 40, + mode: "scaleToFill", + text: "", + bgColor: "#c0c4cc", + color: "#ffffff", + fontSize: 18, + icon: "", + mpAvatar: false, + randomBgColor: false, + defaultUrl: "", + colorIndex: "", + name: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/avatarGroup.js +var avatarGroup_default = { + // avatarGroup 组件 + avatarGroup: { + urls: () => [], + maxCount: 5, + shape: "circle", + mode: "scaleToFill", + showMore: true, + size: 40, + keyName: "", + gap: 0.5, + extraValue: 0 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/backtop.js +var backtop_default = { + // backtop组件 + backtop: { + mode: "circle", + icon: "arrow-upward", + text: "", + duration: 100, + scrollTop: 0, + top: 400, + bottom: 100, + right: 20, + zIndex: 9, + iconStyle: () => ({ + color: "#909399", + fontSize: "19px" + }) + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/badge.js +var badge_default = { + // 徽标数组件 + badge: { + isDot: false, + value: "", + show: true, + max: 999, + type: "error", + showZero: false, + bgColor: null, + color: null, + shape: "circle", + numberType: "overflow", + offset: () => [], + inverted: false, + absolute: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/button.js +var button_default = { + // button组件 + button: { + hairline: false, + type: "info", + size: "normal", + shape: "square", + plain: false, + disabled: false, + loading: false, + loadingText: "", + loadingMode: "spinner", + loadingSize: 15, + openType: "", + formType: "", + appParameter: "", + hoverStopPropagation: true, + lang: "en", + sessionFrom: "", + sendMessageTitle: "", + sendMessagePath: "", + sendMessageImg: "", + showMessageCard: false, + dataName: "", + throttleTime: 0, + hoverStartTime: 0, + hoverStayTime: 200, + text: "", + icon: "", + iconColor: "", + color: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/calendar.js +var calendar_default = { + // calendar 组件 + calendar: { + title: "日期选择", + showTitle: true, + showSubtitle: true, + mode: "single", + startText: "开始", + endText: "结束", + customList: () => [], + color: "#3c9cff", + minDate: 0, + maxDate: 0, + defaultDate: null, + maxCount: Number.MAX_SAFE_INTEGER, + // Infinity + rowHeight: 56, + formatter: null, + showLunar: false, + showMark: true, + confirmText: "确定", + confirmDisabledText: "确定", + show: false, + closeOnClickOverlay: false, + readonly: false, + showConfirm: true, + maxRange: Number.MAX_SAFE_INTEGER, + // Infinity + rangePrompt: "", + showRangePrompt: true, + allowSameDay: false, + round: 0, + monthNum: 3 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/carKeyboard.js +var carKeyboard_default = { + // 车牌号键盘 + carKeyboard: { + random: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/cell.js +var cell_default = { + // cell组件的props + cell: { + customClass: "", + title: "", + label: "", + value: "", + icon: "", + disabled: false, + border: true, + center: false, + url: "", + linkType: "navigateTo", + clickable: false, + isLink: false, + required: false, + arrowDirection: "", + iconStyle: {}, + rightIconStyle: {}, + rightIcon: "arrow-right", + titleStyle: {}, + size: "", + stop: true, + name: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/cellGroup.js +var cellGroup_default = { + // cell-group组件的props + cellGroup: { + title: "", + border: true, + customStyle: {} + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/checkbox.js +var checkbox_default = { + // checkbox组件 + checkbox: { + name: "", + shape: "", + size: "", + checkbox: false, + disabled: "", + activeColor: "", + inactiveColor: "", + iconSize: "", + iconColor: "", + label: "", + labelSize: "", + labelColor: "", + labelDisabled: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/checkboxGroup.js +var checkboxGroup_default = { + // checkbox-group组件 + checkboxGroup: { + name: "", + value: () => [], + shape: "square", + disabled: false, + activeColor: "#2979ff", + inactiveColor: "#c8c9cc", + size: 18, + placement: "row", + labelSize: 14, + labelColor: "#303133", + labelDisabled: false, + iconColor: "#ffffff", + iconSize: 12, + iconPlacement: "left", + borderBottom: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/circleProgress.js +var circleProgress_default = { + // circleProgress 组件 + circleProgress: { + percentage: 30 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/code.js +var code_default = { + // code 组件 + code: { + seconds: 60, + startText: "获取验证码", + changeText: "X秒重新获取", + endText: "重新获取", + keepRunning: false, + uniqueKey: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/codeInput.js +var codeInput_default = { + // codeInput 组件 + codeInput: { + adjustPosition: true, + maxlength: 6, + dot: false, + mode: "box", + hairline: false, + space: 10, + value: "", + focus: false, + bold: false, + color: "#606266", + fontSize: 18, + size: 35, + disabledKeyboard: false, + borderColor: "#c9cacc", + disabledDot: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/col.js +var col_default = { + // col 组件 + col: { + span: 12, + offset: 0, + justify: "start", + align: "stretch", + textAlign: "left" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/collapse.js +var collapse_default = { + // collapse 组件 + collapse: { + value: null, + accordion: false, + border: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/collapseItem.js +var collapseItem_default = { + // collapseItem 组件 + collapseItem: { + title: "", + value: "", + label: "", + disabled: false, + isLink: true, + clickable: true, + border: true, + align: "left", + name: "", + icon: "", + duration: 300 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/columnNotice.js +var columnNotice_default = { + // columnNotice 组件 + columnNotice: { + text: "", + icon: "volume", + mode: "", + color: "#f9ae3d", + bgColor: "#fdf6ec", + fontSize: 14, + speed: 80, + step: false, + duration: 1500, + disableTouch: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/countDown.js +var countDown_default = { + // u-count-down 计时器组件 + countDown: { + time: 0, + format: "HH:mm:ss", + autoStart: true, + millisecond: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/countTo.js +var countTo_default = { + // countTo 组件 + countTo: { + startVal: 0, + endVal: 0, + duration: 2e3, + autoplay: true, + decimals: 0, + useEasing: true, + decimal: ".", + color: "#606266", + fontSize: 22, + bold: false, + separator: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/datetimePicker.js +var datetimePicker_default = { + // datetimePicker 组件 + datetimePicker: { + show: false, + showToolbar: true, + value: "", + title: "", + mode: "datetime", + maxDate: new Date((/* @__PURE__ */ new Date()).getFullYear() + 10, 0, 1).getTime(), + minDate: new Date((/* @__PURE__ */ new Date()).getFullYear() - 10, 0, 1).getTime(), + minHour: 0, + maxHour: 23, + minMinute: 0, + maxMinute: 59, + filter: null, + formatter: null, + loading: false, + itemHeight: 44, + cancelText: "取消", + confirmText: "确认", + cancelColor: "#909193", + confirmColor: "#3c9cff", + visibleItemCount: 5, + closeOnClickOverlay: false, + defaultIndex: () => [] + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/divider.js +var divider_default = { + // divider组件 + divider: { + dashed: false, + hairline: true, + dot: false, + textPosition: "center", + text: "", + textSize: 14, + textColor: "#909399", + lineColor: "#dcdfe6" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/empty.js +var empty_default = { + // empty组件 + empty: { + icon: "", + text: "", + textColor: "#c0c4cc", + textSize: 14, + iconColor: "#c0c4cc", + iconSize: 90, + mode: "data", + width: 160, + height: 160, + show: true, + marginTop: 0 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/form.js +var form_default = { + // form 组件 + form: { + model: () => ({}), + rules: () => ({}), + errorType: "message", + borderBottom: true, + labelPosition: "left", + labelWidth: 45, + labelAlign: "left", + labelStyle: () => ({}) + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/formItem.js +var formItem_default = { + // formItem 组件 + formItem: { + label: "", + prop: "", + borderBottom: "", + labelWidth: "", + rightIcon: "", + leftIcon: "", + required: false, + leftIconStyle: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/gap.js +var gap_default = { + // gap组件 + gap: { + bgColor: "transparent", + height: 20, + marginTop: 0, + marginBottom: 0, + customStyle: {} + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/grid.js +var grid_default = { + // grid组件 + grid: { + col: 3, + border: false, + align: "left" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/gridItem.js +var gridItem_default = { + // grid-item组件 + gridItem: { + name: null, + bgColor: "transparent" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/icon.js +var { + color +} = config_default; +var icon_default = { + // icon组件 + icon: { + name: "", + color: color["u-content-color"], + size: "16px", + bold: false, + index: "", + hoverClass: "", + customPrefix: "uicon", + label: "", + labelPos: "right", + labelSize: "15px", + labelColor: color["u-content-color"], + space: "3px", + imgMode: "", + width: "", + height: "", + top: 0, + stop: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/image.js +var image_default = { + // image组件 + image: { + src: "", + mode: "aspectFill", + width: "300", + height: "225", + shape: "square", + radius: 0, + lazyLoad: true, + showMenuByLongpress: true, + loadingIcon: "photo", + errorIcon: "error-circle", + showLoading: true, + showError: true, + fade: true, + webp: false, + duration: 500, + bgColor: "#f3f4f6" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/indexAnchor.js +var indexAnchor_default = { + // indexAnchor 组件 + indexAnchor: { + text: "", + color: "#606266", + size: 14, + bgColor: "#dedede", + height: 32 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/indexList.js +var indexList_default = { + // indexList 组件 + indexList: { + inactiveColor: "#606266", + activeColor: "#5677fc", + indexList: () => [], + sticky: true, + customNavHeight: 0 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/input.js +var input_default = { + // index 组件 + input: { + value: "", + type: "text", + fixed: false, + disabled: false, + disabledColor: "#f5f7fa", + clearable: false, + password: false, + maxlength: -1, + placeholder: null, + placeholderClass: "input-placeholder", + placeholderStyle: "color: #c0c4cc", + showWordLimit: false, + confirmType: "done", + confirmHold: false, + holdKeyboard: false, + focus: false, + autoBlur: false, + disableDefaultPadding: false, + cursor: -1, + cursorSpacing: 30, + selectionStart: -1, + selectionEnd: -1, + adjustPosition: true, + inputAlign: "left", + fontSize: "15px", + color: "#303133", + prefixIcon: "", + prefixIconStyle: "", + suffixIcon: "", + suffixIconStyle: "", + border: "surround", + readonly: false, + shape: "square", + formatter: null + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/keyboard.js +var keyboard_default = { + // 键盘组件 + keyboard: { + mode: "number", + dotDisabled: false, + tooltip: true, + showTips: true, + tips: "", + showCancel: true, + showConfirm: true, + random: false, + safeAreaInsetBottom: true, + closeOnClickOverlay: true, + show: false, + overlay: true, + zIndex: 10075, + cancelText: "取消", + confirmText: "确定", + autoChange: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/line.js +var line_default = { + // line组件 + line: { + color: "#d6d7d9", + length: "100%", + direction: "row", + hairline: true, + margin: 0, + dashed: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/lineProgress.js +var lineProgress_default = { + // lineProgress 组件 + lineProgress: { + activeColor: "#19be6b", + inactiveColor: "#ececec", + percentage: 0, + showText: true, + height: 12 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/link.js +var { + color: color2 +} = config_default; +var link_default = { + // link超链接组件props参数 + link: { + color: color2["u-primary"], + fontSize: 15, + underLine: false, + href: "", + mpTips: "链接已复制,请在浏览器打开", + lineColor: "", + text: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/list.js +var list_default = { + // list 组件 + list: { + showScrollbar: false, + lowerThreshold: 50, + upperThreshold: 0, + scrollTop: 0, + offsetAccuracy: 10, + enableFlex: false, + pagingEnabled: false, + scrollable: true, + scrollIntoView: "", + scrollWithAnimation: false, + enableBackToTop: false, + height: 0, + width: 0, + preLoadScreen: 1 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/listItem.js +var listItem_default = { + // listItem 组件 + listItem: { + anchor: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/loadingIcon.js +var { + color: color3 +} = config_default; +var loadingIcon_default = { + // loading-icon加载中图标组件 + loadingIcon: { + show: true, + color: color3["u-tips-color"], + textColor: color3["u-tips-color"], + vertical: false, + mode: "spinner", + size: 24, + textSize: 15, + text: "", + timingFunction: "ease-in-out", + duration: 1200, + inactiveColor: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/loadingPage.js +var loadingPage_default = { + // loading-page组件 + loadingPage: { + loadingText: "正在加载", + image: "", + loadingMode: "circle", + loading: false, + bgColor: "#ffffff", + color: "#C8C8C8", + fontSize: 19, + iconSize: 28, + loadingColor: "#C8C8C8" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/loadmore.js +var loadmore_default = { + // loadmore 组件 + loadmore: { + status: "loadmore", + bgColor: "transparent", + icon: true, + fontSize: 14, + iconSize: 17, + color: "#606266", + loadingIcon: "spinner", + loadmoreText: "加载更多", + loadingText: "正在加载...", + nomoreText: "没有更多了", + isDot: false, + iconColor: "#b7b7b7", + marginTop: 10, + marginBottom: 10, + height: "auto", + line: false, + lineColor: "#E6E8EB", + dashed: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/modal.js +var modal_default = { + // modal 组件 + modal: { + show: false, + title: "", + content: "", + confirmText: "确认", + cancelText: "取消", + showConfirmButton: true, + showCancelButton: false, + confirmColor: "#2979ff", + cancelColor: "#606266", + buttonReverse: false, + zoom: true, + asyncClose: false, + closeOnClickOverlay: false, + negativeTop: 0, + width: "650rpx", + confirmButtonShape: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/color.js +var color4 = { + primary: "#3c9cff", + info: "#909399", + default: "#909399", + warning: "#f9ae3d", + error: "#f56c6c", + success: "#5ac725", + mainColor: "#303133", + contentColor: "#606266", + tipsColor: "#909399", + lightColor: "#c0c4cc", + borderColor: "#e4e7ed" +}; +var color_default = color4; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/navbar.js +var navbar_default = { + // navbar 组件 + navbar: { + safeAreaInsetTop: true, + placeholder: false, + fixed: true, + border: false, + leftIcon: "arrow-left", + leftText: "", + rightText: "", + rightIcon: "", + title: "", + bgColor: "#ffffff", + titleWidth: "400rpx", + height: "44px", + leftIconSize: 20, + leftIconColor: color_default.mainColor, + autoBack: false, + titleStyle: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/noNetwork.js +var noNetwork_default = { + // noNetwork + noNetwork: { + tips: "哎呀,网络信号丢失", + zIndex: "", + image: "data:image/png;base64,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" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/noticeBar.js +var noticeBar_default = { + // noticeBar + noticeBar: { + text: () => [], + direction: "row", + step: false, + icon: "volume", + mode: "", + color: "#f9ae3d", + bgColor: "#fdf6ec", + speed: 80, + fontSize: 14, + duration: 2e3, + disableTouch: true, + url: "", + linkType: "navigateTo" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/notify.js +var notify_default = { + // notify组件 + notify: { + top: 0, + type: "primary", + color: "#ffffff", + bgColor: "", + message: "", + duration: 3e3, + fontSize: 15, + safeAreaInsetTop: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/numberBox.js +var numberBox_default = { + // 步进器组件 + numberBox: { + name: "", + value: 0, + min: 1, + max: Number.MAX_SAFE_INTEGER, + step: 1, + integer: false, + disabled: false, + disabledInput: false, + asyncChange: false, + inputWidth: 35, + showMinus: true, + showPlus: true, + decimalLength: null, + longPress: true, + color: "#323233", + buttonSize: 30, + bgColor: "#EBECEE", + cursorSpacing: 100, + disableMinus: false, + disablePlus: false, + iconStyle: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/numberKeyboard.js +var numberKeyboard_default = { + // 数字键盘 + numberKeyboard: { + mode: "number", + dotDisabled: false, + random: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/overlay.js +var overlay_default = { + // overlay组件 + overlay: { + show: false, + zIndex: 10070, + duration: 300, + opacity: 0.5 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/parse.js +var parse_default = { + // parse + parse: { + copyLink: true, + errorImg: "", + lazyLoad: false, + loadingImg: "", + pauseVideo: true, + previewImg: true, + setTitle: true, + showImgMenu: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/picker.js +var picker_default = { + // picker + picker: { + show: false, + showToolbar: true, + title: "", + columns: () => [], + loading: false, + itemHeight: 44, + cancelText: "取消", + confirmText: "确定", + cancelColor: "#909193", + confirmColor: "#3c9cff", + visibleItemCount: 5, + keyName: "text", + closeOnClickOverlay: false, + defaultIndex: () => [], + immediateChange: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/popup.js +var popup_default = { + // popup组件 + popup: { + show: false, + overlay: true, + mode: "bottom", + duration: 300, + closeable: false, + overlayStyle: () => { + }, + closeOnClickOverlay: true, + zIndex: 10075, + safeAreaInsetBottom: true, + safeAreaInsetTop: false, + closeIconPos: "top-right", + round: 0, + zoom: true, + bgColor: "", + overlayOpacity: 0.5 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/radio.js +var radio_default = { + // radio组件 + radio: { + name: "", + shape: "", + disabled: "", + labelDisabled: "", + activeColor: "", + inactiveColor: "", + iconSize: "", + labelSize: "", + label: "", + labelColor: "", + size: "", + iconColor: "", + placement: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/radioGroup.js +var radioGroup_default = { + // radio-group组件 + radioGroup: { + value: "", + disabled: false, + shape: "circle", + activeColor: "#2979ff", + inactiveColor: "#c8c9cc", + name: "", + size: 18, + placement: "row", + label: "", + labelColor: "#303133", + labelSize: 14, + labelDisabled: false, + iconColor: "#ffffff", + iconSize: 12, + borderBottom: false, + iconPlacement: "left" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/rate.js +var rate_default = { + // rate组件 + rate: { + value: 1, + count: 5, + disabled: false, + size: 18, + inactiveColor: "#b2b2b2", + activeColor: "#FA3534", + gutter: 4, + minCount: 1, + allowHalf: false, + activeIcon: "star-fill", + inactiveIcon: "star", + touchable: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/readMore.js +var readMore_default = { + // readMore + readMore: { + showHeight: 400, + toggle: false, + closeText: "展开阅读全文", + openText: "收起", + color: "#2979ff", + fontSize: 14, + textIndent: "2em", + name: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/row.js +var row_default = { + // row + row: { + gutter: 0, + justify: "start", + align: "center" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/rowNotice.js +var rowNotice_default = { + // rowNotice + rowNotice: { + text: "", + icon: "volume", + mode: "", + color: "#f9ae3d", + bgColor: "#fdf6ec", + fontSize: 14, + speed: 80 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/scrollList.js +var scrollList_default = { + // scrollList + scrollList: { + indicatorWidth: 50, + indicatorBarWidth: 20, + indicator: true, + indicatorColor: "#f2f2f2", + indicatorActiveColor: "#3c9cff", + indicatorStyle: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/search.js +var search_default = { + // search + search: { + shape: "round", + bgColor: "#f2f2f2", + placeholder: "请输入关键字", + clearabled: true, + focus: false, + showAction: true, + actionStyle: () => ({}), + actionText: "搜索", + inputAlign: "left", + inputStyle: () => ({}), + disabled: false, + borderColor: "transparent", + searchIconColor: "#909399", + searchIconSize: 22, + color: "#606266", + placeholderColor: "#909399", + searchIcon: "search", + margin: "0", + animation: false, + value: "", + maxlength: "-1", + height: 32, + label: null + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/section.js +var section_default = { + // u-section组件 + section: { + title: "", + subTitle: "更多", + right: true, + fontSize: 15, + bold: true, + color: "#303133", + subColor: "#909399", + showLine: true, + lineColor: "", + arrow: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/skeleton.js +var skeleton_default = { + // skeleton + skeleton: { + loading: true, + animate: true, + rows: 0, + rowsWidth: "100%", + rowsHeight: 18, + title: true, + titleWidth: "50%", + titleHeight: 18, + avatar: false, + avatarSize: 32, + avatarShape: "circle" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/slider.js +var slider_default = { + // slider组件 + slider: { + value: 0, + blockSize: 18, + min: 0, + max: 100, + step: 1, + activeColor: "#2979ff", + inactiveColor: "#c0c4cc", + blockColor: "#ffffff", + showValue: false, + disabled: false, + blockStyle: () => { + } + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/statusBar.js +var statusBar_default = { + // statusBar + statusBar: { + bgColor: "transparent" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/steps.js +var steps_default = { + // steps组件 + steps: { + direction: "row", + current: 0, + activeColor: "#3c9cff", + inactiveColor: "#969799", + activeIcon: "", + inactiveIcon: "", + dot: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/stepsItem.js +var stepsItem_default = { + // steps-item组件 + stepsItem: { + title: "", + desc: "", + iconSize: 17, + error: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/sticky.js +var sticky_default = { + // sticky组件 + sticky: { + offsetTop: 0, + customNavHeight: 0, + disabled: false, + bgColor: "transparent", + zIndex: "", + index: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/subsection.js +var subsection_default = { + // subsection组件 + subsection: { + list: [], + current: 0, + activeColor: "#3c9cff", + inactiveColor: "#303133", + mode: "button", + fontSize: 12, + bold: true, + bgColor: "#eeeeef", + keyName: "name" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/swipeAction.js +var swipeAction_default = { + // swipe-action组件 + swipeAction: { + autoClose: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/swipeActionItem.js +var swipeActionItem_default = { + // swipeActionItem 组件 + swipeActionItem: { + show: false, + name: "", + disabled: false, + threshold: 20, + autoClose: true, + options: [], + duration: 300 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/swiper.js +var swiper_default = { + // swiper 组件 + swiper: { + list: () => [], + indicator: false, + indicatorActiveColor: "#FFFFFF", + indicatorInactiveColor: "rgba(255, 255, 255, 0.35)", + indicatorStyle: "", + indicatorMode: "line", + autoplay: true, + current: 0, + currentItemId: "", + interval: 3e3, + duration: 300, + circular: false, + previousMargin: 0, + nextMargin: 0, + acceleration: false, + displayMultipleItems: 1, + easingFunction: "default", + keyName: "url", + imgMode: "aspectFill", + height: 130, + bgColor: "#f3f4f6", + radius: 4, + loading: false, + showTitle: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/swipterIndicator.js +var swipterIndicator_default = { + // swiperIndicator 组件 + swiperIndicator: { + length: 0, + current: 0, + indicatorActiveColor: "", + indicatorInactiveColor: "", + indicatorMode: "line" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/switch.js +var switch_default = { + // switch + switch: { + loading: false, + disabled: false, + size: 25, + activeColor: "#2979ff", + inactiveColor: "#ffffff", + value: false, + activeValue: true, + inactiveValue: false, + asyncChange: false, + space: 0 + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/tabbar.js +var tabbar_default = { + // tabbar + tabbar: { + value: null, + safeAreaInsetBottom: true, + border: true, + zIndex: 1, + activeColor: "#1989fa", + inactiveColor: "#7d7e80", + fixed: true, + placeholder: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/tabbarItem.js +var tabbarItem_default = { + // + tabbarItem: { + name: null, + icon: "", + badge: null, + dot: false, + text: "", + badgeStyle: "top: 6px;right:2px;" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/tabs.js +var tabs_default = { + // + tabs: { + duration: 300, + list: () => [], + lineColor: "#3c9cff", + activeStyle: () => ({ + color: "#303133" + }), + inactiveStyle: () => ({ + color: "#606266" + }), + lineWidth: 20, + lineHeight: 3, + lineBgSize: "cover", + itemStyle: () => ({ + height: "44px" + }), + scrollable: true, + current: 0, + keyName: "name" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/tag.js +var tag_default = { + // tag 组件 + tag: { + type: "primary", + disabled: false, + size: "medium", + shape: "square", + text: "", + bgColor: "", + color: "", + borderColor: "", + closeColor: "#C6C7CB", + name: "", + plainFill: false, + plain: false, + closable: false, + show: true, + icon: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/text.js +var text_default = { + // text 组件 + text: { + type: "", + show: true, + text: "", + prefixIcon: "", + suffixIcon: "", + mode: "", + href: "", + format: "", + call: false, + openType: "", + bold: false, + block: false, + lines: "", + color: "#303133", + size: 15, + iconStyle: () => ({ + fontSize: "15px" + }), + decoration: "none", + margin: 0, + lineHeight: "", + align: "left", + wordWrap: "normal" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/textarea.js +var textarea_default = { + // textarea 组件 + textarea: { + value: "", + placeholder: "", + placeholderClass: "textarea-placeholder", + placeholderStyle: "color: #c0c4cc", + height: 70, + confirmType: "done", + disabled: false, + count: false, + focus: false, + autoHeight: false, + fixed: false, + cursorSpacing: 0, + cursor: "", + showConfirmBar: true, + selectionStart: -1, + selectionEnd: -1, + adjustPosition: true, + disableDefaultPadding: false, + holdKeyboard: false, + maxlength: 140, + border: "surround", + formatter: null + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/toast.js +var toast_default = { + // toast组件 + toast: { + zIndex: 10090, + loading: false, + text: "", + icon: "", + type: "", + loadingMode: "", + show: "", + overlay: false, + position: "center", + params: () => { + }, + duration: 2e3, + isTab: false, + url: "", + callback: null, + back: false + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/toolbar.js +var toolbar_default = { + // toolbar 组件 + toolbar: { + show: true, + cancelText: "取消", + confirmText: "确认", + cancelColor: "#909193", + confirmColor: "#3c9cff", + title: "" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/tooltip.js +var tooltip_default = { + // tooltip 组件 + tooltip: { + text: "", + copyText: "", + size: 14, + color: "#606266", + bgColor: "transparent", + direction: "top", + zIndex: 10071, + showCopy: true, + buttons: () => [], + overlay: true, + showToast: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/transition.js +var transition_default = { + // transition动画组件的props + transition: { + show: false, + mode: "fade", + duration: "300", + timingFunction: "ease-out" + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props/upload.js +var upload_default = { + // upload组件 + upload: { + accept: "image", + capture: () => ["album", "camera"], + compressed: true, + camera: "back", + maxDuration: 60, + uploadIcon: "camera-fill", + uploadIconColor: "#D3D4D6", + useBeforeRead: false, + previewFullImage: true, + maxCount: 52, + disabled: false, + imageMode: "aspectFill", + name: "", + sizeType: () => ["original", "compressed"], + multiple: false, + deletable: true, + maxSize: Number.MAX_VALUE, + fileList: () => [], + uploadText: "", + width: 80, + height: 80, + previewImage: true + } +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/props.js +var { + color: color5 +} = config_default; +var props_default = { + ...actionSheet_default, + ...album_default, + ...alert_default, + ...avatar_default, + ...avatarGroup_default, + ...backtop_default, + ...badge_default, + ...button_default, + ...calendar_default, + ...carKeyboard_default, + ...cell_default, + ...cellGroup_default, + ...checkbox_default, + ...checkboxGroup_default, + ...circleProgress_default, + ...code_default, + ...codeInput_default, + ...col_default, + ...collapse_default, + ...collapseItem_default, + ...columnNotice_default, + ...countDown_default, + ...countTo_default, + ...datetimePicker_default, + ...divider_default, + ...empty_default, + ...form_default, + ...formItem_default, + ...gap_default, + ...grid_default, + ...gridItem_default, + ...icon_default, + ...image_default, + ...indexAnchor_default, + ...indexList_default, + ...input_default, + ...keyboard_default, + ...line_default, + ...lineProgress_default, + ...link_default, + ...list_default, + ...listItem_default, + ...loadingIcon_default, + ...loadingPage_default, + ...loadmore_default, + ...modal_default, + ...navbar_default, + ...noNetwork_default, + ...noticeBar_default, + ...notify_default, + ...numberBox_default, + ...numberKeyboard_default, + ...overlay_default, + ...parse_default, + ...picker_default, + ...popup_default, + ...radio_default, + ...radioGroup_default, + ...rate_default, + ...readMore_default, + ...row_default, + ...rowNotice_default, + ...scrollList_default, + ...search_default, + ...section_default, + ...skeleton_default, + ...slider_default, + ...statusBar_default, + ...steps_default, + ...stepsItem_default, + ...sticky_default, + ...subsection_default, + ...swipeAction_default, + ...swipeActionItem_default, + ...swiper_default, + ...swipterIndicator_default, + ...switch_default, + ...tabbar_default, + ...tabbarItem_default, + ...tabs_default, + ...tag_default, + ...text_default, + ...textarea_default, + ...toast_default, + ...toolbar_default, + ...tooltip_default, + ...transition_default, + ...upload_default +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/config/zIndex.js +var zIndex_default = { + toast: 10090, + noNetwork: 10080, + // popup包含popup,actionsheet,keyboard,picker的值 + popup: 10075, + mask: 10070, + navbar: 980, + topTips: 975, + sticky: 970, + indexListSticky: 965 +}; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/libs/function/platform.js +var platform = "none"; +platform = "vue3"; +platform = "h5"; +var platform_default = platform; + +// ../../../../zmj/uniapp/TraceabilityAPP/node_modules/uview-plus/index.js +var pleaseSetTranspileDependencies = {}; +var babelTest = pleaseSetTranspileDependencies == null ? void 0 : pleaseSetTranspileDependencies.test; +var $u = { + route: route_default, + date: function_default.timeFormat, + // 另名date + colorGradient: colorGradient_default.colorGradient, + hexToRgb: colorGradient_default.hexToRgb, + rgbToHex: colorGradient_default.rgbToHex, + colorToRgba: colorGradient_default.colorToRgba, + test: test_default, + type: ["primary", "success", "error", "warning", "info"], + http: new luch_request_default(), + config: config_default, + // uView配置信息相关,比如版本号 + zIndex: zIndex_default, + debounce: debounce_default, + throttle: throttle_default, + mixin: mixin_default, + mpMixin: mpMixin_default, + props: props_default, + ...function_default, + color: color_default, + platform: platform_default +}; +uni.$u = $u; +var install = (Vue) => { + Vue.config.globalProperties.$u = $u; + Vue.config.globalProperties.$nextTick = (cb) => { + cb(); + }; + Vue.mixin(mixin_default); +}; +var uview_plus_default = { + install +}; +export { + uview_plus_default as default +}; +//# sourceMappingURL=uview-plus.js.map diff --git a/node_modules/.vite/deps/uview-plus.js.map b/node_modules/.vite/deps/uview-plus.js.map new file mode 100644 index 0000000..2d93d88 --- /dev/null +++ b/node_modules/.vite/deps/uview-plus.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../uview-plus/libs/mixin/mixin.js", "../../uview-plus/libs/mixin/mpMixin.js", "../../uview-plus/libs/luch-request/utils.js", "../../uview-plus/libs/luch-request/helpers/buildURL.js", "../../uview-plus/libs/luch-request/helpers/isAbsoluteURL.js", "../../uview-plus/libs/luch-request/helpers/combineURLs.js", "../../uview-plus/libs/luch-request/core/buildFullPath.js", "../../uview-plus/libs/luch-request/core/settle.js", "../../uview-plus/libs/luch-request/adapters/index.js", "../../uview-plus/libs/luch-request/core/dispatchRequest.js", "../../uview-plus/libs/luch-request/core/InterceptorManager.js", "../../uview-plus/libs/luch-request/core/mergeConfig.js", "../../uview-plus/libs/luch-request/core/defaults.js", "../../uview-plus/libs/luch-request/utils/clone.js", "../../uview-plus/libs/luch-request/core/Request.js", "../../uview-plus/libs/luch-request/index.js", "../../uview-plus/libs/util/route.js", "../../uview-plus/libs/function/colorGradient.js", "../../uview-plus/libs/function/test.js", "../../uview-plus/libs/function/debounce.js", "../../uview-plus/libs/function/throttle.js", "../../uview-plus/libs/function/digit.js", "../../uview-plus/libs/function/index.js", "../../uview-plus/libs/config/config.js", "../../uview-plus/libs/config/props/actionSheet.js", "../../uview-plus/libs/config/props/album.js", "../../uview-plus/libs/config/props/alert.js", "../../uview-plus/libs/config/props/avatar.js", "../../uview-plus/libs/config/props/avatarGroup.js", "../../uview-plus/libs/config/props/backtop.js", "../../uview-plus/libs/config/props/badge.js", "../../uview-plus/libs/config/props/button.js", "../../uview-plus/libs/config/props/calendar.js", "../../uview-plus/libs/config/props/carKeyboard.js", "../../uview-plus/libs/config/props/cell.js", "../../uview-plus/libs/config/props/cellGroup.js", "../../uview-plus/libs/config/props/checkbox.js", "../../uview-plus/libs/config/props/checkboxGroup.js", "../../uview-plus/libs/config/props/circleProgress.js", "../../uview-plus/libs/config/props/code.js", "../../uview-plus/libs/config/props/codeInput.js", "../../uview-plus/libs/config/props/col.js", "../../uview-plus/libs/config/props/collapse.js", "../../uview-plus/libs/config/props/collapseItem.js", "../../uview-plus/libs/config/props/columnNotice.js", "../../uview-plus/libs/config/props/countDown.js", "../../uview-plus/libs/config/props/countTo.js", "../../uview-plus/libs/config/props/datetimePicker.js", "../../uview-plus/libs/config/props/divider.js", "../../uview-plus/libs/config/props/empty.js", "../../uview-plus/libs/config/props/form.js", "../../uview-plus/libs/config/props/formItem.js", "../../uview-plus/libs/config/props/gap.js", "../../uview-plus/libs/config/props/grid.js", "../../uview-plus/libs/config/props/gridItem.js", "../../uview-plus/libs/config/props/icon.js", "../../uview-plus/libs/config/props/image.js", "../../uview-plus/libs/config/props/indexAnchor.js", "../../uview-plus/libs/config/props/indexList.js", "../../uview-plus/libs/config/props/input.js", "../../uview-plus/libs/config/props/keyboard.js", "../../uview-plus/libs/config/props/line.js", "../../uview-plus/libs/config/props/lineProgress.js", "../../uview-plus/libs/config/props/link.js", "../../uview-plus/libs/config/props/list.js", "../../uview-plus/libs/config/props/listItem.js", "../../uview-plus/libs/config/props/loadingIcon.js", "../../uview-plus/libs/config/props/loadingPage.js", "../../uview-plus/libs/config/props/loadmore.js", "../../uview-plus/libs/config/props/modal.js", "../../uview-plus/libs/config/color.js", "../../uview-plus/libs/config/props/navbar.js", "../../uview-plus/libs/config/props/noNetwork.js", "../../uview-plus/libs/config/props/noticeBar.js", "../../uview-plus/libs/config/props/notify.js", "../../uview-plus/libs/config/props/numberBox.js", "../../uview-plus/libs/config/props/numberKeyboard.js", "../../uview-plus/libs/config/props/overlay.js", "../../uview-plus/libs/config/props/parse.js", "../../uview-plus/libs/config/props/picker.js", "../../uview-plus/libs/config/props/popup.js", "../../uview-plus/libs/config/props/radio.js", "../../uview-plus/libs/config/props/radioGroup.js", "../../uview-plus/libs/config/props/rate.js", "../../uview-plus/libs/config/props/readMore.js", "../../uview-plus/libs/config/props/row.js", "../../uview-plus/libs/config/props/rowNotice.js", "../../uview-plus/libs/config/props/scrollList.js", "../../uview-plus/libs/config/props/search.js", "../../uview-plus/libs/config/props/section.js", "../../uview-plus/libs/config/props/skeleton.js", "../../uview-plus/libs/config/props/slider.js", "../../uview-plus/libs/config/props/statusBar.js", "../../uview-plus/libs/config/props/steps.js", "../../uview-plus/libs/config/props/stepsItem.js", "../../uview-plus/libs/config/props/sticky.js", "../../uview-plus/libs/config/props/subsection.js", "../../uview-plus/libs/config/props/swipeAction.js", "../../uview-plus/libs/config/props/swipeActionItem.js", "../../uview-plus/libs/config/props/swiper.js", "../../uview-plus/libs/config/props/swipterIndicator.js", "../../uview-plus/libs/config/props/switch.js", "../../uview-plus/libs/config/props/tabbar.js", "../../uview-plus/libs/config/props/tabbarItem.js", "../../uview-plus/libs/config/props/tabs.js", "../../uview-plus/libs/config/props/tag.js", "../../uview-plus/libs/config/props/text.js", "../../uview-plus/libs/config/props/textarea.js", "../../uview-plus/libs/config/props/toast.js", "../../uview-plus/libs/config/props/toolbar.js", "../../uview-plus/libs/config/props/tooltip.js", "../../uview-plus/libs/config/props/transition.js", "../../uview-plus/libs/config/props/upload.js", "../../uview-plus/libs/config/props.js", "../../uview-plus/libs/config/zIndex.js", "../../uview-plus/libs/function/platform.js", "../../uview-plus/index.js"], + "sourcesContent": ["export default {\n // 定义每个组件都可能需要用到的外部样式以及类名\n props: {\n // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式\n customStyle: {\n type: [Object, String],\n default: () => ({})\n },\n customClass: {\n type: String,\n default: ''\n },\n // 跳转的页面路径\n url: {\n type: String,\n default: ''\n },\n // 页面跳转的类型\n linkType: {\n type: String,\n default: 'navigateTo'\n }\n },\n data() {\n return {}\n },\n onLoad() {\n // getRect挂载到$u上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出\n this.$u.getRect = this.$uGetRect\n },\n created() {\n // 组件当中,只有created声明周期,为了能在组件使用,故也在created中将方法挂载到$u\n this.$u.getRect = this.$uGetRect\n },\n computed: {\n // 在2.x版本中,将会把$u挂载到uni对象下,导致在模板中无法使用uni.$u.xxx形式\n // 所以这里通过computed计算属性将其附加到this.$u上,就可以在模板或者js中使用uni.$u.xxx\n // 只在nvue环境通过此方式引入完整的$u,其他平台会出现性能问题,非nvue则按需引入(主要原因是props过大)\n $u() {\n\n // 在非nvue端,移除props,http,mixin等对象,避免在小程序setData时数据过大影响性能\n return uni.$u.deepMerge(uni.$u, {\n props: undefined,\n http: undefined,\n mixin: undefined\n })\n\n\n\n\n },\n /**\n * 生成bem规则类名\n * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class=\"[bem()]\"的形式进行同用\n * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式\n * @param {String} name 组件名称\n * @param {Array} fixed 一直会存在的类名\n * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名\n * @returns {Array|string}\n */\n bem() {\n return function (name, fixed, change) {\n // 类名前缀\n const prefix = `u-${name}--`\n const classes = {}\n if (fixed) {\n fixed.map((item) => {\n // 这里的类名,会一直存在\n classes[prefix + this[item]] = true\n })\n }\n if (change) {\n change.map((item) => {\n // 这里的类名,会根据this[item]的值为true或者false,而进行添加或者移除某一个类\n this[item] ? (classes[prefix + item] = this[item]) : (delete classes[prefix + item])\n })\n }\n return Object.keys(classes)\n // 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有\",\",而导致失效\n\n\n\n }\n }\n },\n methods: {\n // 跳转某一个页面\n openPage(urlKey = 'url') {\n const url = this[urlKey]\n if (url) {\n // h5官方回应:发行h5会自动摇树优化,所有使用uni的地方,都会被直接转换成具体的API调用 https://ask.dcloud.net.cn/question/161523?notification_id-1201922__rf-false__item_id-226372\n // 使用封装的 route 进行跳转(直接调用方法),不使用 uni 对象\n this.$u.route({ type: this.linkType, url })\n // 执行类似uni.navigateTo的方法\n // uni[this.linkType]({\n // url\n // })\n }\n },\n // 查询节点信息\n // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21)\n // 解决办法为在组件根部再套一个没有任何作用的view元素\n $uGetRect(selector, all) {\n return new Promise((resolve) => {\n uni.createSelectorQuery()\n .in(this)[all ? 'selectAll' : 'select'](selector)\n .boundingClientRect((rect) => {\n if (all && Array.isArray(rect) && rect.length) {\n resolve(rect)\n }\n if (!all && rect) {\n resolve(rect)\n }\n })\n .exec()\n })\n },\n getParentData(parentName = '') {\n // 避免在created中去定义parent变量\n if (!this.parent) this.parent = {}\n // 这里的本质原理是,通过获取父组件实例(也即类似u-radio的父组件u-radio-group的this)\n // 将父组件this中对应的参数,赋值给本组件(u-radio的this)的parentData对象中对应的属性\n // 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化\n // 此处并不会自动更新子组件的数据,而是依赖父组件u-radio-group去监听data的变化,手动调用更新子组件的方法去重新获取\n this.parent = uni.$u.$parent.call(this, parentName)\n if (this.parent.children) {\n // 如果父组件的children不存在本组件的实例,才将本实例添加到父组件的children中\n this.parent.children.indexOf(this) === -1 && this.parent.children.push(this)\n }\n if (this.parent && this.parentData) {\n // 历遍parentData中的属性,将parent中的同名属性赋值给parentData\n Object.keys(this.parentData).map((key) => {\n this.parentData[key] = this.parent[key]\n })\n }\n },\n // 阻止事件冒泡\n preventEvent(e) {\n e && typeof (e.stopPropagation) === 'function' && e.stopPropagation()\n },\n // 空操作\n noop(e) {\n this.preventEvent(e)\n }\n },\n onReachBottom() {\n uni.$emit('uOnReachBottom')\n },\n beforeDestroy() {\n // 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况\n // 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱\n if (this.parent && uni.$u.test.array(this.parent.children)) {\n // 组件销毁时,移除父组件中的children数组中对应的实例\n const childrenList = this.parent.children\n childrenList.map((child, index) => {\n // 如果相等,则移除\n if (child === this) {\n childrenList.splice(index, 1)\n }\n })\n }\n }\n}\n", "export default {\n\n\n\n\n\n\n}\n", "'use strict'\r\n\r\n// utils is a library of generic helper functions non-specific to axios\r\n\r\nconst { toString } = Object.prototype\r\n\r\n/**\r\n * Determine if a value is an Array\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Array, otherwise false\r\n */\r\nexport function isArray(val) {\r\n return toString.call(val) === '[object Array]'\r\n}\r\n\r\n/**\r\n * Determine if a value is an Object\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Object, otherwise false\r\n */\r\nexport function isObject(val) {\r\n return val !== null && typeof val === 'object'\r\n}\r\n\r\n/**\r\n * Determine if a value is a Date\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Date, otherwise false\r\n */\r\nexport function isDate(val) {\r\n return toString.call(val) === '[object Date]'\r\n}\r\n\r\n/**\r\n * Determine if a value is a URLSearchParams object\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\r\n */\r\nexport function isURLSearchParams(val) {\r\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams\r\n}\r\n\r\n/**\r\n * Iterate over an Array or an Object invoking a function for each item.\r\n *\r\n * If `obj` is an Array callback will be called passing\r\n * the value, index, and complete array for each item.\r\n *\r\n * If 'obj' is an Object callback will be called passing\r\n * the value, key, and complete object for each property.\r\n *\r\n * @param {Object|Array} obj The object to iterate\r\n * @param {Function} fn The callback to invoke for each item\r\n */\r\nexport function forEach(obj, fn) {\r\n // Don't bother if no value provided\r\n if (obj === null || typeof obj === 'undefined') {\r\n return\r\n }\r\n\r\n // Force an array if not already something iterable\r\n if (typeof obj !== 'object') {\r\n /* eslint no-param-reassign:0 */\r\n obj = [obj]\r\n }\r\n\r\n if (isArray(obj)) {\r\n // Iterate over array values\r\n for (let i = 0, l = obj.length; i < l; i++) {\r\n fn.call(null, obj[i], i, obj)\r\n }\r\n } else {\r\n // Iterate over object keys\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n fn.call(null, obj[key], key, obj)\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 是否为boolean 值\r\n * @param val\r\n * @returns {boolean}\r\n */\r\nexport function isBoolean(val) {\r\n return typeof val === 'boolean'\r\n}\r\n\r\n/**\r\n * 是否为真正的对象{} new Object\r\n * @param {any} obj - 检测的对象\r\n * @returns {boolean}\r\n */\r\nexport function isPlainObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]'\r\n}\r\n\r\n/**\r\n * Function equal to merge with the difference being that no reference\r\n * to original objects is kept.\r\n *\r\n * @see merge\r\n * @param {Object} obj1 Object to merge\r\n * @returns {Object} Result of all merge properties\r\n */\r\nexport function deepMerge(/* obj1, obj2, obj3, ... */) {\r\n const result = {}\r\n function assignValue(val, key) {\r\n if (typeof result[key] === 'object' && typeof val === 'object') {\r\n result[key] = deepMerge(result[key], val)\r\n } else if (typeof val === 'object') {\r\n result[key] = deepMerge({}, val)\r\n } else {\r\n result[key] = val\r\n }\r\n }\r\n for (let i = 0, l = arguments.length; i < l; i++) {\r\n forEach(arguments[i], assignValue)\r\n }\r\n return result\r\n}\r\n\r\nexport function isUndefined(val) {\r\n return typeof val === 'undefined'\r\n}\r\n", "'use strict'\r\n\r\nimport * as utils from '../utils'\r\n\r\nfunction encode(val) {\r\n return encodeURIComponent(val)\r\n .replace(/%40/gi, '@')\r\n .replace(/%3A/gi, ':')\r\n .replace(/%24/g, '$')\r\n .replace(/%2C/gi, ',')\r\n .replace(/%20/g, '+')\r\n .replace(/%5B/gi, '[')\r\n .replace(/%5D/gi, ']')\r\n}\r\n\r\n/**\r\n * Build a URL by appending params to the end\r\n *\r\n * @param {string} url The base of the url (e.g., http://www.google.com)\r\n * @param {object} [params] The params to be appended\r\n * @returns {string} The formatted url\r\n */\r\nexport default function buildURL(url, params) {\r\n /* eslint no-param-reassign:0 */\r\n if (!params) {\r\n return url\r\n }\r\n\r\n let serializedParams\r\n if (utils.isURLSearchParams(params)) {\r\n serializedParams = params.toString()\r\n } else {\r\n const parts = []\r\n\r\n utils.forEach(params, (val, key) => {\r\n if (val === null || typeof val === 'undefined') {\r\n return\r\n }\r\n\r\n if (utils.isArray(val)) {\r\n key = `${key}[]`\r\n } else {\r\n val = [val]\r\n }\r\n\r\n utils.forEach(val, (v) => {\r\n if (utils.isDate(v)) {\r\n v = v.toISOString()\r\n } else if (utils.isObject(v)) {\r\n v = JSON.stringify(v)\r\n }\r\n parts.push(`${encode(key)}=${encode(v)}`)\r\n })\r\n })\r\n\r\n serializedParams = parts.join('&')\r\n }\r\n\r\n if (serializedParams) {\r\n const hashmarkIndex = url.indexOf('#')\r\n if (hashmarkIndex !== -1) {\r\n url = url.slice(0, hashmarkIndex)\r\n }\r\n\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams\r\n }\r\n\r\n return url\r\n}\r\n", "'use strict'\r\n\r\n/**\r\n * Determines whether the specified URL is absolute\r\n *\r\n * @param {string} url The URL to test\r\n * @returns {boolean} True if the specified URL is absolute, otherwise false\r\n */\r\nexport default function isAbsoluteURL(url) {\r\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\r\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\r\n // by any combination of letters, digits, plus, period, or hyphen.\r\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url)\r\n}\r\n", "'use strict'\r\n\r\n/**\r\n * Creates a new URL by combining the specified URLs\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} relativeURL The relative URL\r\n * @returns {string} The combined URL\r\n */\r\nexport default function combineURLs(baseURL, relativeURL) {\r\n return relativeURL\r\n ? `${baseURL.replace(/\\/+$/, '')}/${relativeURL.replace(/^\\/+/, '')}`\r\n : baseURL\r\n}\r\n", "'use strict'\r\n\r\nimport isAbsoluteURL from '../helpers/isAbsoluteURL'\r\nimport combineURLs from '../helpers/combineURLs'\r\n\r\n/**\r\n * Creates a new URL by combining the baseURL with the requestedURL,\r\n * only when the requestedURL is not already an absolute URL.\r\n * If the requestURL is absolute, this function returns the requestedURL untouched.\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} requestedURL Absolute or relative URL to combine\r\n * @returns {string} The combined full path\r\n */\r\nexport default function buildFullPath(baseURL, requestedURL) {\r\n if (baseURL && !isAbsoluteURL(requestedURL)) {\r\n return combineURLs(baseURL, requestedURL)\r\n }\r\n return requestedURL\r\n}\r\n", "/**\r\n * Resolve or reject a Promise based on response status.\r\n *\r\n * @param {Function} resolve A function that resolves the promise.\r\n * @param {Function} reject A function that rejects the promise.\r\n * @param {object} response The response.\r\n */\r\nexport default function settle(resolve, reject, response) {\r\n const { validateStatus } = response.config\r\n const status = response.statusCode\r\n if (status && (!validateStatus || validateStatus(status))) {\r\n resolve(response)\r\n } else {\r\n reject(response)\r\n }\r\n}\r\n", "import buildURL from '../helpers/buildURL'\r\nimport buildFullPath from '../core/buildFullPath'\r\nimport settle from '../core/settle'\r\nimport { isUndefined } from '../utils'\r\n\r\n/**\r\n * 返回可选值存在的配置\r\n * @param {Array} keys - 可选值数组\r\n * @param {Object} config2 - 配置\r\n * @return {{}} - 存在的配置项\r\n */\r\nconst mergeKeys = (keys, config2) => {\r\n const config = {}\r\n keys.forEach((prop) => {\r\n if (!isUndefined(config2[prop])) {\r\n config[prop] = config2[prop]\r\n }\r\n })\r\n return config\r\n}\r\nexport default (config) => new Promise((resolve, reject) => {\r\n const fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params)\r\n const _config = {\r\n url: fullPath,\r\n header: config.header,\r\n complete: (response) => {\r\n config.fullPath = fullPath\r\n response.config = config\r\n try {\r\n // 对可能字符串不是json 的情况容错\r\n if (typeof response.data === 'string') {\r\n response.data = JSON.parse(response.data)\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {\r\n }\r\n settle(resolve, reject, response)\r\n }\r\n }\r\n let requestTask\r\n if (config.method === 'UPLOAD') {\r\n delete _config.header['content-type']\r\n delete _config.header['Content-Type']\r\n const otherConfig = {\r\n\r\n\r\n\r\n filePath: config.filePath,\r\n name: config.name\r\n }\r\n const optionalKeys = [\r\n\r\n 'files',\r\n\r\n\r\n 'file',\r\n\r\n\r\n 'timeout',\r\n\r\n 'formData'\r\n ]\r\n requestTask = uni.uploadFile({ ..._config, ...otherConfig, ...mergeKeys(optionalKeys, config) })\r\n } else if (config.method === 'DOWNLOAD') {\r\n\r\n if (!isUndefined(config.timeout)) {\r\n _config.timeout = config.timeout\r\n }\r\n\r\n requestTask = uni.downloadFile(_config)\r\n } else {\r\n const optionalKeys = [\r\n 'data',\r\n 'method',\r\n\r\n 'timeout',\r\n\r\n 'dataType',\r\n\r\n 'responseType',\r\n\r\n\r\n\r\n\r\n\r\n 'withCredentials',\r\n\r\n\r\n\r\n\r\n ]\r\n requestTask = uni.request({ ..._config, ...mergeKeys(optionalKeys, config) })\r\n }\r\n if (config.getTask) {\r\n config.getTask(requestTask, config)\r\n }\r\n})\r\n", "import adapter from '../adapters/index'\r\n\r\nexport default (config) => adapter(config)\r\n", "'use strict'\r\n\r\nfunction InterceptorManager() {\r\n this.handlers = []\r\n}\r\n\r\n/**\r\n * Add a new interceptor to the stack\r\n *\r\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\r\n * @param {Function} rejected The function to handle `reject` for a `Promise`\r\n *\r\n * @return {Number} An ID used to remove interceptor later\r\n */\r\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\r\n this.handlers.push({\r\n fulfilled,\r\n rejected\r\n })\r\n return this.handlers.length - 1\r\n}\r\n\r\n/**\r\n * Remove an interceptor from the stack\r\n *\r\n * @param {Number} id The ID that was returned by `use`\r\n */\r\nInterceptorManager.prototype.eject = function eject(id) {\r\n if (this.handlers[id]) {\r\n this.handlers[id] = null\r\n }\r\n}\r\n\r\n/**\r\n * Iterate over all the registered interceptors\r\n *\r\n * This method is particularly useful for skipping over any\r\n * interceptors that may have become `null` calling `eject`.\r\n *\r\n * @param {Function} fn The function to call for each interceptor\r\n */\r\nInterceptorManager.prototype.forEach = function forEach(fn) {\r\n this.handlers.forEach((h) => {\r\n if (h !== null) {\r\n fn(h)\r\n }\r\n })\r\n}\r\n\r\nexport default InterceptorManager\r\n", "import { deepMerge, isUndefined } from '../utils'\r\n\r\n/**\r\n * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局\r\n * @param {Array} keys - 配置项\r\n * @param {Object} globalsConfig - 当前的全局配置\r\n * @param {Object} config2 - 局部配置\r\n * @return {{}}\r\n */\r\nconst mergeKeys = (keys, globalsConfig, config2) => {\r\n const config = {}\r\n keys.forEach((prop) => {\r\n if (!isUndefined(config2[prop])) {\r\n config[prop] = config2[prop]\r\n } else if (!isUndefined(globalsConfig[prop])) {\r\n config[prop] = globalsConfig[prop]\r\n }\r\n })\r\n return config\r\n}\r\n/**\r\n *\r\n * @param globalsConfig - 当前实例的全局配置\r\n * @param config2 - 当前的局部配置\r\n * @return - 合并后的配置\r\n */\r\nexport default (globalsConfig, config2 = {}) => {\r\n const method = config2.method || globalsConfig.method || 'GET'\r\n let config = {\r\n baseURL: globalsConfig.baseURL || '',\r\n method,\r\n url: config2.url || '',\r\n params: config2.params || {},\r\n custom: { ...(globalsConfig.custom || {}), ...(config2.custom || {}) },\r\n header: deepMerge(globalsConfig.header || {}, config2.header || {})\r\n }\r\n const defaultToConfig2Keys = ['getTask', 'validateStatus']\r\n config = { ...config, ...mergeKeys(defaultToConfig2Keys, globalsConfig, config2) }\r\n\r\n // eslint-disable-next-line no-empty\r\n if (method === 'DOWNLOAD') {\r\n\r\n if (!isUndefined(config2.timeout)) {\r\n config.timeout = config2.timeout\r\n } else if (!isUndefined(globalsConfig.timeout)) {\r\n config.timeout = globalsConfig.timeout\r\n }\r\n\r\n } else if (method === 'UPLOAD') {\r\n delete config.header['content-type']\r\n delete config.header['Content-Type']\r\n const uploadKeys = [\r\n\r\n 'files',\r\n\r\n\r\n\r\n\r\n\r\n 'file',\r\n\r\n 'filePath',\r\n 'name',\r\n\r\n 'timeout',\r\n\r\n 'formData'\r\n ]\r\n uploadKeys.forEach((prop) => {\r\n if (!isUndefined(config2[prop])) {\r\n config[prop] = config2[prop]\r\n }\r\n })\r\n\r\n if (isUndefined(config.timeout) && !isUndefined(globalsConfig.timeout)) {\r\n config.timeout = globalsConfig.timeout\r\n }\r\n\r\n } else {\r\n const defaultsKeys = [\r\n 'data',\r\n\r\n 'timeout',\r\n\r\n 'dataType',\r\n\r\n 'responseType',\r\n\r\n\r\n\r\n\r\n\r\n 'withCredentials',\r\n\r\n\r\n\r\n\r\n ]\r\n config = { ...config, ...mergeKeys(defaultsKeys, globalsConfig, config2) }\r\n }\r\n\r\n return config\r\n}\r\n", "/**\r\n * 默认的全局配置\r\n */\r\n\r\nexport default {\r\n baseURL: '',\r\n header: {},\r\n method: 'GET',\r\n dataType: 'json',\r\n\r\n responseType: 'text',\r\n\r\n custom: {},\r\n\r\n timeout: 60000,\r\n\r\n\r\n\r\n\r\n\r\n withCredentials: false,\r\n\r\n\r\n\r\n\r\n validateStatus: function validateStatus(status) {\r\n return status >= 200 && status < 300\r\n }\r\n}\r\n", "/* eslint-disable */\r\nvar clone = (function() {\r\n 'use strict';\r\n\r\n function _instanceof(obj, type) {\r\n return type != null && obj instanceof type;\r\n }\r\n\r\n var nativeMap;\r\n try {\r\n nativeMap = Map;\r\n } catch(_) {\r\n // maybe a reference error because no `Map`. Give it a dummy value that no\r\n // value will ever be an instanceof.\r\n nativeMap = function() {};\r\n }\r\n\r\n var nativeSet;\r\n try {\r\n nativeSet = Set;\r\n } catch(_) {\r\n nativeSet = function() {};\r\n }\r\n\r\n var nativePromise;\r\n try {\r\n nativePromise = Promise;\r\n } catch(_) {\r\n nativePromise = function() {};\r\n }\r\n\r\n /**\r\n * Clones (copies) an Object using deep copying.\r\n *\r\n * This function supports circular references by default, but if you are certain\r\n * there are no circular references in your object, you can save some CPU time\r\n * by calling clone(obj, false).\r\n *\r\n * Caution: if `circular` is false and `parent` contains circular references,\r\n * your program may enter an infinite loop and crash.\r\n *\r\n * @param `parent` - the object to be cloned\r\n * @param `circular` - set to true if the object to be cloned may contain\r\n * circular references. (optional - true by default)\r\n * @param `depth` - set to a number if the object is only to be cloned to\r\n * a particular depth. (optional - defaults to Infinity)\r\n * @param `prototype` - sets the prototype to be used when cloning an object.\r\n * (optional - defaults to parent prototype).\r\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\r\n * should be cloned as well. Non-enumerable properties on the prototype\r\n * chain will be ignored. (optional - false by default)\r\n */\r\n function clone(parent, circular, depth, prototype, includeNonEnumerable) {\r\n if (typeof circular === 'object') {\r\n depth = circular.depth;\r\n prototype = circular.prototype;\r\n includeNonEnumerable = circular.includeNonEnumerable;\r\n circular = circular.circular;\r\n }\r\n // maintain two arrays for circular references, where corresponding parents\r\n // and children have the same index\r\n var allParents = [];\r\n var allChildren = [];\r\n\r\n var useBuffer = typeof Buffer != 'undefined';\r\n\r\n if (typeof circular == 'undefined')\r\n circular = true;\r\n\r\n if (typeof depth == 'undefined')\r\n depth = Infinity;\r\n\r\n // recurse this function so we don't reset allParents and allChildren\r\n function _clone(parent, depth) {\r\n // cloning null always returns null\r\n if (parent === null)\r\n return null;\r\n\r\n if (depth === 0)\r\n return parent;\r\n\r\n var child;\r\n var proto;\r\n if (typeof parent != 'object') {\r\n return parent;\r\n }\r\n\r\n if (_instanceof(parent, nativeMap)) {\r\n child = new nativeMap();\r\n } else if (_instanceof(parent, nativeSet)) {\r\n child = new nativeSet();\r\n } else if (_instanceof(parent, nativePromise)) {\r\n child = new nativePromise(function (resolve, reject) {\r\n parent.then(function(value) {\r\n resolve(_clone(value, depth - 1));\r\n }, function(err) {\r\n reject(_clone(err, depth - 1));\r\n });\r\n });\r\n } else if (clone.__isArray(parent)) {\r\n child = [];\r\n } else if (clone.__isRegExp(parent)) {\r\n child = new RegExp(parent.source, __getRegExpFlags(parent));\r\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\r\n } else if (clone.__isDate(parent)) {\r\n child = new Date(parent.getTime());\r\n } else if (useBuffer && Buffer.isBuffer(parent)) {\r\n if (Buffer.from) {\r\n // Node.js >= 5.10.0\r\n child = Buffer.from(parent);\r\n } else {\r\n // Older Node.js versions\r\n child = new Buffer(parent.length);\r\n parent.copy(child);\r\n }\r\n return child;\r\n } else if (_instanceof(parent, Error)) {\r\n child = Object.create(parent);\r\n } else {\r\n if (typeof prototype == 'undefined') {\r\n proto = Object.getPrototypeOf(parent);\r\n child = Object.create(proto);\r\n }\r\n else {\r\n child = Object.create(prototype);\r\n proto = prototype;\r\n }\r\n }\r\n\r\n if (circular) {\r\n var index = allParents.indexOf(parent);\r\n\r\n if (index != -1) {\r\n return allChildren[index];\r\n }\r\n allParents.push(parent);\r\n allChildren.push(child);\r\n }\r\n\r\n if (_instanceof(parent, nativeMap)) {\r\n parent.forEach(function(value, key) {\r\n var keyChild = _clone(key, depth - 1);\r\n var valueChild = _clone(value, depth - 1);\r\n child.set(keyChild, valueChild);\r\n });\r\n }\r\n if (_instanceof(parent, nativeSet)) {\r\n parent.forEach(function(value) {\r\n var entryChild = _clone(value, depth - 1);\r\n child.add(entryChild);\r\n });\r\n }\r\n\r\n for (var i in parent) {\r\n var attrs = Object.getOwnPropertyDescriptor(parent, i);\r\n if (attrs) {\r\n child[i] = _clone(parent[i], depth - 1);\r\n }\r\n\r\n try {\r\n var objProperty = Object.getOwnPropertyDescriptor(parent, i);\r\n if (objProperty.set === 'undefined') {\r\n // no setter defined. Skip cloning this property\r\n continue;\r\n }\r\n child[i] = _clone(parent[i], depth - 1);\r\n } catch(e){\r\n if (e instanceof TypeError) {\r\n // when in strict mode, TypeError will be thrown if child[i] property only has a getter\r\n // we can't do anything about this, other than inform the user that this property cannot be set.\r\n continue\r\n } else if (e instanceof ReferenceError) {\r\n //this may happen in non strict mode\r\n continue\r\n }\r\n }\r\n\r\n }\r\n\r\n if (Object.getOwnPropertySymbols) {\r\n var symbols = Object.getOwnPropertySymbols(parent);\r\n for (var i = 0; i < symbols.length; i++) {\r\n // Don't need to worry about cloning a symbol because it is a primitive,\r\n // like a number or string.\r\n var symbol = symbols[i];\r\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\r\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\r\n continue;\r\n }\r\n child[symbol] = _clone(parent[symbol], depth - 1);\r\n Object.defineProperty(child, symbol, descriptor);\r\n }\r\n }\r\n\r\n if (includeNonEnumerable) {\r\n var allPropertyNames = Object.getOwnPropertyNames(parent);\r\n for (var i = 0; i < allPropertyNames.length; i++) {\r\n var propertyName = allPropertyNames[i];\r\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\r\n if (descriptor && descriptor.enumerable) {\r\n continue;\r\n }\r\n child[propertyName] = _clone(parent[propertyName], depth - 1);\r\n Object.defineProperty(child, propertyName, descriptor);\r\n }\r\n }\r\n\r\n return child;\r\n }\r\n\r\n return _clone(parent, depth);\r\n }\r\n\r\n /**\r\n * Simple flat clone using prototype, accepts only objects, usefull for property\r\n * override on FLAT configuration object (no nested props).\r\n *\r\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\r\n * works.\r\n */\r\n clone.clonePrototype = function clonePrototype(parent) {\r\n if (parent === null)\r\n return null;\r\n\r\n var c = function () {};\r\n c.prototype = parent;\r\n return new c();\r\n };\r\n\r\n// private utility functions\r\n\r\n function __objToStr(o) {\r\n return Object.prototype.toString.call(o);\r\n }\r\n clone.__objToStr = __objToStr;\r\n\r\n function __isDate(o) {\r\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\r\n }\r\n clone.__isDate = __isDate;\r\n\r\n function __isArray(o) {\r\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\r\n }\r\n clone.__isArray = __isArray;\r\n\r\n function __isRegExp(o) {\r\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\r\n }\r\n clone.__isRegExp = __isRegExp;\r\n\r\n function __getRegExpFlags(re) {\r\n var flags = '';\r\n if (re.global) flags += 'g';\r\n if (re.ignoreCase) flags += 'i';\r\n if (re.multiline) flags += 'm';\r\n return flags;\r\n }\r\n clone.__getRegExpFlags = __getRegExpFlags;\r\n\r\n return clone;\r\n})();\r\n\r\nexport default clone\r\n", "/**\r\n * @Class Request\r\n * @description luch-request http请求插件\r\n * @version 3.0.7\r\n * @Author lu-ch\r\n * @Date 2021-09-04\r\n * @Email webwork.s@qq.com\r\n * 文档: https://www.quanzhan.co/luch-request/\r\n * github: https://github.com/lei-mu/luch-request\r\n * DCloud: http://ext.dcloud.net.cn/plugin?id=392\r\n * HBuilderX: beat-3.0.4 alpha-3.0.4\r\n */\r\n\r\nimport dispatchRequest from './dispatchRequest'\r\nimport InterceptorManager from './InterceptorManager'\r\nimport mergeConfig from './mergeConfig'\r\nimport defaults from './defaults'\r\nimport { isPlainObject } from '../utils'\r\nimport clone from '../utils/clone'\r\n\r\nexport default class Request {\r\n /**\r\n * @param {Object} arg - 全局配置\r\n * @param {String} arg.baseURL - 全局根路径\r\n * @param {Object} arg.header - 全局header\r\n * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式\r\n * @param {String} arg.dataType = [json] - 全局默认的dataType\r\n * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持\r\n * @param {Object} arg.custom - 全局默认的自定义参数\r\n * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序\r\n * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+)\r\n * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+)\r\n * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+)\r\n * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300\r\n */\r\n constructor(arg = {}) {\r\n if (!isPlainObject(arg)) {\r\n arg = {}\r\n console.warn('设置全局参数必须接收一个Object')\r\n }\r\n this.config = clone({ ...defaults, ...arg })\r\n this.interceptors = {\r\n request: new InterceptorManager(),\r\n response: new InterceptorManager()\r\n }\r\n }\r\n\r\n /**\r\n * @Function\r\n * @param {Request~setConfigCallback} f - 设置全局默认配置\r\n */\r\n setConfig(f) {\r\n this.config = f(this.config)\r\n }\r\n\r\n middleware(config) {\r\n config = mergeConfig(this.config, config)\r\n const chain = [dispatchRequest, undefined]\r\n let promise = Promise.resolve(config)\r\n\r\n this.interceptors.request.forEach((interceptor) => {\r\n chain.unshift(interceptor.fulfilled, interceptor.rejected)\r\n })\r\n\r\n this.interceptors.response.forEach((interceptor) => {\r\n chain.push(interceptor.fulfilled, interceptor.rejected)\r\n })\r\n\r\n while (chain.length) {\r\n promise = promise.then(chain.shift(), chain.shift())\r\n }\r\n\r\n return promise\r\n }\r\n\r\n /**\r\n * @Function\r\n * @param {Object} config - 请求配置项\r\n * @prop {String} options.url - 请求路径\r\n * @prop {Object} options.data - 请求参数\r\n * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型\r\n * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse\r\n * @prop {Object} [options.header = config.header] - 请求header\r\n * @prop {Object} [options.method = config.method] - 请求方法\r\n * @returns {Promise}\r\n */\r\n request(config = {}) {\r\n return this.middleware(config)\r\n }\r\n\r\n get(url, options = {}) {\r\n return this.middleware({\r\n url,\r\n method: 'GET',\r\n ...options\r\n })\r\n }\r\n\r\n post(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'POST',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n put(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'PUT',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n delete(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'DELETE',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n connect(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'CONNECT',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n head(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'HEAD',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n options(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'OPTIONS',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n trace(url, data, options = {}) {\r\n return this.middleware({\r\n url,\r\n data,\r\n method: 'TRACE',\r\n ...options\r\n })\r\n }\r\n\r\n\r\n\r\n upload(url, config = {}) {\r\n config.url = url\r\n config.method = 'UPLOAD'\r\n return this.middleware(config)\r\n }\r\n\r\n download(url, config = {}) {\r\n config.url = url\r\n config.method = 'DOWNLOAD'\r\n return this.middleware(config)\r\n }\r\n}\r\n\r\n/**\r\n * setConfig回调\r\n * @return {Object} - 返回操作后的config\r\n * @callback Request~setConfigCallback\r\n * @param {Object} config - 全局默认config\r\n */\r\n", "import Request from './core/Request'\n\r\nexport default Request\r\n", "/**\n * 路由跳转方法,该方法相对于直接使用uni.xxx的好处是使用更加简单快捷\n * 并且带有路由拦截功能\n */\n\nclass Router {\n constructor() {\n // 原始属性定义\n this.config = {\n type: 'navigateTo',\n url: '',\n delta: 1, // navigateBack页面后退时,回退的层数\n params: {}, // 传递的参数\n animationType: 'pop-in', // 窗口动画,只在APP有效\n animationDuration: 300, // 窗口动画持续时间,单位毫秒,只在APP有效\n intercept: false // 是否需要拦截\n }\n // 因为route方法是需要对外赋值给另外的对象使用,同时route内部有使用this,会导致route失去上下文\n // 这里在构造函数中进行this绑定\n this.route = this.route.bind(this)\n }\n\n // 判断url前面是否有\"/\",如果没有则加上,否则无法跳转\n addRootPath(url) {\n return url[0] === '/' ? url : `/${url}`\n }\n\n // 整合路由参数\n mixinParam(url, params) {\n url = url && this.addRootPath(url)\n\n // 使用正则匹配,主要依据是判断是否有\"/\",\"?\",\"=\"等,如“/page/index/index?name=mary\"\n // 如果有url中有get参数,转换后无需带上\"?\"\n let query = ''\n if (/.*\\/.*\\?.*=.*/.test(url)) {\n // object对象转为get类型的参数\n query = uni.$u.queryParams(params, false)\n // 因为已有get参数,所以后面拼接的参数需要带上\"&\"隔开\n return url += `&${query}`\n }\n // 直接拼接参数,因为此处url中没有后面的query参数,也就没有\"?/&\"之类的符号\n query = uni.$u.queryParams(params)\n return url += query\n }\n\n // 对外的方法名称\n async route(options = {}, params = {}) {\n // 合并用户的配置和内部的默认配置\n let mergeConfig = {}\n\n if (typeof options === 'string') {\n // 如果options为字符串,则为route(url, params)的形式\n mergeConfig.url = this.mixinParam(options, params)\n mergeConfig.type = 'navigateTo'\n } else {\n mergeConfig = uni.$u.deepMerge(this.config, options)\n // 否则正常使用mergeConfig中的url和params进行拼接\n mergeConfig.url = this.mixinParam(options.url, options.params)\n }\n\n // 如果本次跳转的路径和本页面路径一致,不执行跳转,防止用户快速点击跳转按钮,造成多次跳转同一个页面的问题\n if (mergeConfig.url === uni.$u.page()) return\n\n if (params.intercept) {\n this.config.intercept = params.intercept\n }\n // params参数也带给拦截器\n mergeConfig.params = params\n // 合并内外部参数\n mergeConfig = uni.$u.deepMerge(this.config, mergeConfig)\n // 判断用户是否定义了拦截器\n if (typeof uni.$u.routeIntercept === 'function') {\n // 定一个promise,根据用户执行resolve(true)或者resolve(false)来决定是否进行路由跳转\n const isNext = await new Promise((resolve, reject) => {\n uni.$u.routeIntercept(mergeConfig, resolve)\n })\n // 如果isNext为true,则执行路由跳转\n isNext && this.openPage(mergeConfig)\n } else {\n this.openPage(mergeConfig)\n }\n }\n\n // 执行路由跳转\n openPage(config) {\n // 解构参数\n const {\n url,\n type,\n delta,\n animationType,\n animationDuration\n } = config\n if (config.type == 'navigateTo' || config.type == 'to') {\n uni.navigateTo({\n url,\n animationType,\n animationDuration\n })\n }\n if (config.type == 'redirectTo' || config.type == 'redirect') {\n uni.redirectTo({\n url\n })\n }\n if (config.type == 'switchTab' || config.type == 'tab') {\n uni.switchTab({\n url\n })\n }\n if (config.type == 'reLaunch' || config.type == 'launch') {\n uni.reLaunch({\n url\n })\n }\n if (config.type == 'navigateBack' || config.type == 'back') {\n uni.navigateBack({\n delta\n })\n }\n }\n}\n\nexport default (new Router()).route\n", "/**\r\n * 求两个颜色之间的渐变值\r\n * @param {string} startColor 开始的颜色\r\n * @param {string} endColor 结束的颜色\r\n * @param {number} step 颜色等分的份额\r\n * */\r\nfunction colorGradient(startColor = 'rgb(0, 0, 0)', endColor = 'rgb(255, 255, 255)', step = 10) {\r\n const startRGB = hexToRgb(startColor, false) // 转换为rgb数组模式\r\n const startR = startRGB[0]\r\n const startG = startRGB[1]\r\n const startB = startRGB[2]\r\n\r\n const endRGB = hexToRgb(endColor, false)\r\n const endR = endRGB[0]\r\n const endG = endRGB[1]\r\n const endB = endRGB[2]\r\n\r\n const sR = (endR - startR) / step // 总差值\r\n const sG = (endG - startG) / step\r\n const sB = (endB - startB) / step\r\n const colorArr = []\r\n for (let i = 0; i < step; i++) {\r\n // 计算每一步的hex值\r\n let hex = rgbToHex(`rgb(${Math.round((sR * i + startR))},${Math.round((sG * i + startG))},${Math.round((sB\r\n\t\t\t* i + startB))})`)\r\n // 确保第一个颜色值为startColor的值\r\n if (i === 0) hex = rgbToHex(startColor)\r\n // 确保最后一个颜色值为endColor的值\r\n if (i === step - 1) hex = rgbToHex(endColor)\r\n colorArr.push(hex)\r\n }\r\n return colorArr\r\n}\r\n\r\n// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式)\r\nfunction hexToRgb(sColor, str = true) {\r\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/\r\n sColor = String(sColor).toLowerCase()\r\n if (sColor && reg.test(sColor)) {\r\n if (sColor.length === 4) {\r\n let sColorNew = '#'\r\n for (let i = 1; i < 4; i += 1) {\r\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))\r\n }\r\n sColor = sColorNew\r\n }\r\n // 处理六位的颜色值\r\n const sColorChange = []\r\n for (let i = 1; i < 7; i += 2) {\r\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`))\r\n }\r\n if (!str) {\r\n return sColorChange\r\n }\r\n return `rgb(${sColorChange[0]},${sColorChange[1]},${sColorChange[2]})`\n } if (/^(rgb|RGB)/.test(sColor)) {\r\n const arr = sColor.replace(/(?:\\(|\\)|rgb|RGB)*/g, '').split(',')\r\n return arr.map((val) => Number(val))\r\n }\r\n return sColor\n}\r\n\r\n// 将rgb表示方式转换为hex表示方式\r\nfunction rgbToHex(rgb) {\r\n const _this = rgb\r\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/\r\n if (/^(rgb|RGB)/.test(_this)) {\r\n const aColor = _this.replace(/(?:\\(|\\)|rgb|RGB)*/g, '').split(',')\r\n let strHex = '#'\r\n for (let i = 0; i < aColor.length; i++) {\r\n let hex = Number(aColor[i]).toString(16)\r\n hex = String(hex).length == 1 ? `${0}${hex}` : hex // 保证每个rgb的值为2位\r\n if (hex === '0') {\r\n hex += hex\r\n }\r\n strHex += hex\r\n }\r\n if (strHex.length !== 7) {\r\n strHex = _this\r\n }\r\n return strHex\r\n } if (reg.test(_this)) {\r\n const aNum = _this.replace(/#/, '').split('')\r\n if (aNum.length === 6) {\r\n return _this\r\n } if (aNum.length === 3) {\r\n let numHex = '#'\r\n for (let i = 0; i < aNum.length; i += 1) {\r\n numHex += (aNum[i] + aNum[i])\r\n }\r\n return numHex\r\n }\r\n } else {\r\n return _this\r\n }\r\n}\r\n\r\n/**\r\n* JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串\r\n* sHex为传入的十六进制的色值\r\n* alpha为rgba的透明度\r\n*/\r\nfunction colorToRgba(color, alpha) {\r\n color = rgbToHex(color)\r\n // 十六进制颜色值的正则表达式\r\n const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/\r\n /* 16进制颜色转为RGB格式 */\r\n let sColor = String(color).toLowerCase()\r\n if (sColor && reg.test(sColor)) {\r\n if (sColor.length === 4) {\r\n let sColorNew = '#'\r\n for (let i = 1; i < 4; i += 1) {\r\n sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))\r\n }\r\n sColor = sColorNew\r\n }\r\n // 处理六位的颜色值\r\n const sColorChange = []\r\n for (let i = 1; i < 7; i += 2) {\r\n sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`))\r\n }\r\n // return sColorChange.join(',')\r\n return `rgba(${sColorChange.join(',')},${alpha})`\r\n }\r\n\r\n return sColor\n}\r\n\r\nexport default {\r\n colorGradient,\r\n hexToRgb,\r\n rgbToHex,\r\n colorToRgba\r\n}\n", "/**\r\n * 验证电子邮箱格式\r\n */\r\nfunction email(value) {\r\n return /^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证手机格式\r\n */\r\nfunction mobile(value) {\r\n return /^1[23456789]\\d{9}$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证URL格式\r\n */\r\nfunction url(value) {\r\n return /^((https|http|ftp|rtsp|mms):\\/\\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\\/?)|(\\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\\/?)$/\r\n .test(value)\r\n}\r\n\r\n/**\r\n * 验证日期格式\r\n */\r\nfunction date(value) {\r\n if (!value) return false\r\n // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳\r\n if (number(value)) value = +value\r\n return !/Invalid|NaN/.test(new Date(value).toString())\r\n}\r\n\r\n/**\r\n * 验证ISO类型的日期格式\r\n */\r\nfunction dateISO(value) {\r\n return /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证十进制数字\r\n */\r\nfunction number(value) {\r\n return /^[\\+-]?(\\d+\\.?\\d*|\\.\\d+|\\d\\.\\d+e\\+\\d+)$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证字符串\r\n */\r\nfunction string(value) {\r\n return typeof value === 'string'\r\n}\r\n\r\n/**\r\n * 验证整数\r\n */\r\nfunction digits(value) {\r\n return /^\\d+$/.test(value)\r\n}\r\n\r\n/**\r\n * 验证身份证号码\r\n */\r\nfunction idCard(value) {\r\n return /^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/.test(\r\n value\r\n )\r\n}\r\n\r\n/**\r\n * 是否车牌号\r\n */\r\nfunction carNo(value) {\r\n // 新能源车牌\r\n const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/\r\n // 旧车牌\r\n const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/\r\n if (value.length === 7) {\r\n return creg.test(value)\r\n } if (value.length === 8) {\r\n return xreg.test(value)\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * 金额,只允许2位小数\r\n */\r\nfunction amount(value) {\r\n // 金额,只允许保留两位小数\r\n return /^[1-9]\\d*(,\\d{3})*(\\.\\d{1,2})?$|^0\\.\\d{1,2}$/.test(value)\r\n}\r\n\r\n/**\r\n * 中文\r\n */\r\nfunction chinese(value) {\r\n const reg = /^[\\u4e00-\\u9fa5]+$/gi\r\n return reg.test(value)\r\n}\r\n\r\n/**\r\n * 只能输入字母\r\n */\r\nfunction letter(value) {\r\n return /^[a-zA-Z]*$/.test(value)\r\n}\r\n\r\n/**\r\n * 只能是字母或者数字\r\n */\r\nfunction enOrNum(value) {\r\n // 英文或者数字\r\n const reg = /^[0-9a-zA-Z]*$/g\r\n return reg.test(value)\r\n}\r\n\r\n/**\r\n * 验证是否包含某个值\r\n */\r\nfunction contains(value, param) {\r\n return value.indexOf(param) >= 0\r\n}\r\n\r\n/**\r\n * 验证一个值范围[min, max]\r\n */\r\nfunction range(value, param) {\r\n return value >= param[0] && value <= param[1]\r\n}\r\n\r\n/**\r\n * 验证一个长度范围[min, max]\r\n */\r\nfunction rangeLength(value, param) {\r\n return value.length >= param[0] && value.length <= param[1]\r\n}\r\n\r\n/**\r\n * 是否固定电话\r\n */\r\nfunction landline(value) {\r\n const reg = /^\\d{3,4}-\\d{7,8}(-\\d{3,4})?$/\r\n return reg.test(value)\r\n}\r\n\r\n/**\r\n * 判断是否为空\r\n */\r\nfunction empty(value) {\r\n switch (typeof value) {\r\n case 'undefined':\r\n return true\r\n case 'string':\r\n if (value.replace(/(^[ \\t\\n\\r]*)|([ \\t\\n\\r]*$)/g, '').length == 0) return true\r\n break\r\n case 'boolean':\r\n if (!value) return true\r\n break\r\n case 'number':\r\n if (value === 0 || isNaN(value)) return true\r\n break\r\n case 'object':\r\n if (value === null || value.length === 0) return true\r\n for (const i in value) {\r\n return false\r\n }\r\n return true\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * 是否json字符串\r\n */\r\nfunction jsonString(value) {\r\n if (typeof value === 'string') {\r\n try {\r\n const obj = JSON.parse(value)\r\n if (typeof obj === 'object' && obj) {\r\n return true\r\n }\r\n return false\r\n } catch (e) {\r\n return false\r\n }\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * 是否数组\r\n */\r\nfunction array(value) {\r\n if (typeof Array.isArray === 'function') {\r\n return Array.isArray(value)\r\n }\r\n return Object.prototype.toString.call(value) === '[object Array]'\r\n}\r\n\r\n/**\r\n * 是否对象\r\n */\r\nfunction object(value) {\r\n return Object.prototype.toString.call(value) === '[object Object]'\r\n}\r\n\r\n/**\r\n * 是否短信验证码\r\n */\r\nfunction code(value, len = 6) {\r\n return new RegExp(`^\\\\d{${len}}$`).test(value)\r\n}\r\n\r\n/**\r\n * 是否函数方法\r\n * @param {Object} value\r\n */\r\nfunction func(value) {\r\n return typeof value === 'function'\r\n}\r\n\r\n/**\r\n * 是否promise对象\r\n * @param {Object} value\r\n */\r\nfunction promise(value) {\r\n return object(value) && func(value.then) && func(value.catch)\r\n}\r\n\r\n/** 是否图片格式\r\n * @param {Object} value\r\n */\r\nfunction image(value) {\r\n const newValue = value.split('?')[0]\r\n const IMAGE_REGEXP = /\\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i\r\n return IMAGE_REGEXP.test(newValue)\r\n}\r\n\r\n/**\r\n * 是否视频格式\r\n * @param {Object} value\r\n */\r\nfunction video(value) {\r\n const VIDEO_REGEXP = /\\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i\r\n return VIDEO_REGEXP.test(value)\r\n}\r\n\r\n/**\r\n * 是否为正则对象\r\n * @param {Object}\r\n * @return {Boolean}\r\n */\r\nfunction regExp(o) {\r\n return o && Object.prototype.toString.call(o) === '[object RegExp]'\r\n}\r\n\r\nexport default {\r\n email,\r\n mobile,\r\n url,\r\n date,\r\n dateISO,\r\n number,\r\n digits,\r\n idCard,\r\n carNo,\r\n amount,\r\n chinese,\r\n letter,\r\n enOrNum,\r\n contains,\r\n range,\r\n rangeLength,\r\n empty,\r\n isEmpty: empty,\r\n jsonString,\r\n landline,\r\n object,\r\n array,\r\n code,\r\n func,\r\n promise,\r\n video,\r\n image,\r\n regExp,\r\n string\r\n}\r\n", "let timeout = null\r\n\r\n/**\r\n * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数\r\n *\r\n * @param {Function} func 要执行的回调函数\r\n * @param {Number} wait 延时的时间\r\n * @param {Boolean} immediate 是否立即执行\r\n * @return null\r\n */\r\nfunction debounce(func, wait = 500, immediate = false) {\r\n // 清除定时器\r\n if (timeout !== null) clearTimeout(timeout)\r\n // 立即执行,此类情况一般用不到\r\n if (immediate) {\r\n const callNow = !timeout\r\n timeout = setTimeout(() => {\r\n timeout = null\r\n }, wait)\r\n if (callNow) typeof func === 'function' && func()\r\n } else {\r\n // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法\r\n timeout = setTimeout(() => {\r\n typeof func === 'function' && func()\r\n }, wait)\r\n }\n}\r\n\r\nexport default debounce\r\n", "let timer; let\n flag\r\n/**\r\n * 节流原理:在一定时间内,只能触发一次\r\n *\r\n * @param {Function} func 要执行的回调函数\r\n * @param {Number} wait 延时的时间\r\n * @param {Boolean} immediate 是否立即执行\r\n * @return null\r\n */\r\nfunction throttle(func, wait = 500, immediate = true) {\r\n if (immediate) {\r\n if (!flag) {\r\n flag = true\r\n // 如果是立即执行,则在wait毫秒内开始时执行\r\n typeof func === 'function' && func()\r\n timer = setTimeout(() => {\r\n flag = false\r\n }, wait)\r\n }\r\n } else if (!flag) {\r\n flag = true\r\n // 如果是非立即执行,则在wait毫秒内的结束处执行\r\n timer = setTimeout(() => {\r\n flag = false\r\n typeof func === 'function' && func()\r\n }, wait)\r\n }\r\n}\r\nexport default throttle\r\n", "let _boundaryCheckingState = true; // 是否进行越界检查的全局开关\n\n/**\n * 把错误的数据转正\n * @private\n * @example strip(0.09999999999999998)=0.1\n */\nfunction strip(num, precision = 15) {\n return +parseFloat(Number(num).toPrecision(precision));\n}\n\n/**\n * Return digits length of a number\n * @private\n * @param {*number} num Input number\n */\nfunction digitLength(num) {\n // Get digit length of e\n const eSplit = num.toString().split(/[eE]/);\n const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n\n/**\n * 把小数转成整数,如果是小数则放大成整数\n * @private\n * @param {*number} num 输入数\n */\nfunction float2Fixed(num) {\n if (num.toString().indexOf('e') === -1) {\n return Number(num.toString().replace('.', ''));\n }\n const dLen = digitLength(num);\n return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num);\n}\n\n/**\n * 检测数字是否越界,如果越界给出提示\n * @private\n * @param {*number} num 输入数\n */\nfunction checkBoundary(num) {\n if (_boundaryCheckingState) {\n if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) {\n console.warn(`${num} 超出了精度限制,结果可能不正确`);\n }\n }\n}\n\n/**\n * 把递归操作扁平迭代化\n * @param {number[]} arr 要操作的数字数组\n * @param {function} operation 迭代操作\n * @private\n */\nfunction iteratorOperation(arr, operation) {\n const [num1, num2, ...others] = arr;\n let res = operation(num1, num2);\n\n others.forEach((num) => {\n res = operation(res, num);\n });\n\n return res;\n}\n\n/**\n * 高精度乘法\n * @export\n */\nexport function times(...nums) {\n if (nums.length > 2) {\n return iteratorOperation(nums, times);\n }\n\n const [num1, num2] = nums;\n const num1Changed = float2Fixed(num1);\n const num2Changed = float2Fixed(num2);\n const baseNum = digitLength(num1) + digitLength(num2);\n const leftValue = num1Changed * num2Changed;\n\n checkBoundary(leftValue);\n\n return leftValue / Math.pow(10, baseNum);\n}\n\n/**\n * 高精度加法\n * @export\n */\nexport function plus(...nums) {\n if (nums.length > 2) {\n return iteratorOperation(nums, plus);\n }\n\n const [num1, num2] = nums;\n // 取最大的小数位\n const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));\n // 把小数都转为整数然后再计算\n return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;\n}\n\n/**\n * 高精度减法\n * @export\n */\nexport function minus(...nums) {\n if (nums.length > 2) {\n return iteratorOperation(nums, minus);\n }\n\n const [num1, num2] = nums;\n const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));\n return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;\n}\n\n/**\n * 高精度除法\n * @export\n */\nexport function divide(...nums) {\n if (nums.length > 2) {\n return iteratorOperation(nums, divide);\n }\n\n const [num1, num2] = nums;\n const num1Changed = float2Fixed(num1);\n const num2Changed = float2Fixed(num2);\n checkBoundary(num1Changed);\n checkBoundary(num2Changed);\n // 重要,这里必须用strip进行修正\n return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));\n}\n\n/**\n * 四舍五入\n * @export\n */\nexport function round(num, ratio) {\n const base = Math.pow(10, ratio);\n let result = divide(Math.round(Math.abs(times(num, base))), base);\n if (num < 0 && result !== 0) {\n result = times(result, -1);\n }\n // 位数不足则补0\n return result;\n}\n\n/**\n * 是否进行边界检查,默认开启\n * @param flag 标记开关,true 为开启,false 为关闭,默认为 true\n * @export\n */\nexport function enableBoundaryChecking(flag = true) {\n _boundaryCheckingState = flag;\n}\n\n\nexport default {\n times,\n plus,\n minus,\n divide,\n round,\n enableBoundaryChecking,\n};\n\n", "import test from './test.js'\r\nimport { round } from './digit.js'\r\n/**\r\n * @description 如果value小于min,取min;如果value大于max,取max\r\n * @param {number} min \r\n * @param {number} max \r\n * @param {number} value\r\n */\r\nfunction range(min = 0, max = 0, value = 0) {\r\n\treturn Math.max(min, Math.min(max, Number(value)))\r\n}\r\n\r\n/**\r\n * @description 用于获取用户传递值的px值 如果用户传递了\"xxpx\"或者\"xxrpx\",取出其数值部分,如果是\"xxxrpx\"还需要用过uni.upx2px进行转换\r\n * @param {number|string} value 用户传递值的px值\r\n * @param {boolean} unit \r\n * @returns {number|string}\r\n */\r\nfunction getPx(value, unit = false) {\r\n\tif (test.number(value)) {\r\n\t\treturn unit ? `${value}px` : Number(value)\r\n\t}\r\n\t// 如果带有rpx,先取出其数值部分,再转为px值\r\n\tif (/(rpx|upx)$/.test(value)) {\r\n\t\treturn unit ? `${uni.upx2px(parseInt(value))}px` : Number(uni.upx2px(parseInt(value)))\r\n\t}\r\n\treturn unit ? `${parseInt(value)}px` : parseInt(value)\r\n}\r\n\r\n/**\r\n * @description 进行延时,以达到可以简写代码的目的 比如: await uni.$u.sleep(20)将会阻塞20ms\r\n * @param {number} value 堵塞时间 单位ms 毫秒\r\n * @returns {Promise} 返回promise\r\n */\r\nfunction sleep(value = 30) {\r\n\treturn new Promise((resolve) => {\r\n\t\tsetTimeout(() => {\r\n\t\t\tresolve()\r\n\t\t}, value)\r\n\t})\r\n}\r\n/**\r\n * @description 运行期判断平台\r\n * @returns {string} 返回所在平台(小写) \r\n * @link 运行期判断平台 https://uniapp.dcloud.io/frame?id=判断平台\r\n */\r\nfunction os() {\r\n\treturn uni.getSystemInfoSync().platform.toLowerCase()\r\n}\r\n/**\r\n * @description 获取系统信息同步接口\r\n * @link 获取系统信息同步接口 https://uniapp.dcloud.io/api/system/info?id=getsysteminfosync \r\n */\r\nfunction sys() {\r\n\treturn uni.getSystemInfoSync()\r\n}\r\n\r\n/**\r\n * @description 取一个区间数\r\n * @param {Number} min 最小值\r\n * @param {Number} max 最大值\r\n */\r\nfunction random(min, max) {\r\n\tif (min >= 0 && max > 0 && max >= min) {\r\n\t\tconst gab = max - min + 1\r\n\t\treturn Math.floor(Math.random() * gab + min)\r\n\t}\r\n\treturn 0\r\n}\r\n\r\n/**\r\n * @param {Number} len uuid的长度\r\n * @param {Boolean} firstU 将返回的首字母置为\"u\"\r\n * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制\r\n */\r\nfunction guid(len = 32, firstU = true, radix = null) {\r\n\tconst chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')\r\n\tconst uuid = []\r\n\tradix = radix || chars.length\r\n\r\n\tif (len) {\r\n\t\t// 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位\r\n\t\tfor (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]\r\n\t} else {\r\n\t\tlet r\r\n\t\t// rfc4122标准要求返回的uuid中,某些位为固定的字符\r\n\t\tuuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'\r\n\t\tuuid[14] = '4'\r\n\r\n\t\tfor (let i = 0; i < 36; i++) {\r\n\t\t\tif (!uuid[i]) {\r\n\t\t\t\tr = 0 | Math.random() * 16\r\n\t\t\t\tuuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class\r\n\tif (firstU) {\r\n\t\tuuid.shift()\r\n\t\treturn `u${uuid.join('')}`\r\n\t}\r\n\treturn uuid.join('')\r\n}\r\n\r\n/**\r\n* @description 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法\r\n this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx\r\n 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name\r\n 值(默认为undefined),就是查找最顶层的$parent\r\n* @param {string|undefined} name 父组件的参数名\r\n*/\r\nfunction $parent(name = undefined) {\r\n\tlet parent = this.$parent\r\n\t// 通过while历遍,这里主要是为了H5需要多层解析的问题\r\n\twhile (parent) {\r\n\t\t// 父组件\r\n\t\tif (parent.$options && parent.$options.name !== name) {\r\n\t\t\t// 如果组件的name不相等,继续上一级寻找\r\n\t\t\tparent = parent.$parent\r\n\t\t} else {\r\n\t\t\treturn parent\r\n\t\t}\r\n\t}\r\n\treturn false\r\n}\r\n\r\n/**\r\n * @description 样式转换\r\n * 对象转字符串,或者字符串转对象\r\n * @param {object | string} customStyle 需要转换的目标\r\n * @param {String} target 转换的目的,object-转为对象,string-转为字符串\r\n * @returns {object|string}\r\n */\r\nfunction addStyle(customStyle, target = 'object') {\r\n\t// 字符串转字符串,对象转对象情形,直接返回\r\n\tif (test.empty(customStyle) || typeof(customStyle) === 'object' && target === 'object' || target === 'string' &&\r\n\t\ttypeof(customStyle) === 'string') {\r\n\t\treturn customStyle\r\n\t}\r\n\t// 字符串转对象\r\n\tif (target === 'object') {\r\n\t\t// 去除字符串样式中的两端空格(中间的空格不能去掉,比如padding: 20px 0如果去掉了就错了),空格是无用的\r\n\t\tcustomStyle = trim(customStyle)\r\n\t\t// 根据\";\"将字符串转为数组形式\r\n\t\tconst styleArray = customStyle.split(';')\r\n\t\tconst style = {}\r\n\t\t// 历遍数组,拼接成对象\r\n\t\tfor (let i = 0; i < styleArray.length; i++) {\r\n\t\t\t// 'font-size:20px;color:red;',如此最后字符串有\";\"的话,会导致styleArray最后一个元素为空字符串,这里需要过滤\r\n\t\t\tif (styleArray[i]) {\r\n\t\t\t\tconst item = styleArray[i].split(':')\r\n\t\t\t\tstyle[trim(item[0])] = trim(item[1])\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn style\r\n\t}\r\n\t// 这里为对象转字符串形式\r\n\tlet string = ''\r\n\tfor (const i in customStyle) {\r\n\t\t// 驼峰转为中划线的形式,否则css内联样式,无法识别驼峰样式属性名\r\n\t\tconst key = i.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n\t\tstring += `${key}:${customStyle[i]};`\r\n\t}\r\n\t// 去除两端空格\r\n\treturn trim(string)\r\n}\r\n\r\n/**\r\n * @description 添加单位,如果有rpx,upx,%,px等单位结尾或者值为auto,直接返回,否则加上px单位结尾\r\n * @param {string|number} value 需要添加单位的值\r\n * @param {string} unit 添加的单位名 比如px\r\n */\r\nfunction addUnit(value = 'auto', unit = '') {\r\n\tif (!unit) {\r\n\t\tunit = uni.$u.config.unit || 'px'\r\n\t}\r\n\tvalue = String(value)\r\n\t// 用uView内置验证规则中的number判断是否为数值\r\n\treturn test.number(value) ? `${value}${unit}` : value\r\n}\r\n\r\n/**\r\n * @description 深度克隆\r\n * @param {object} obj 需要深度克隆的对象\r\n * @returns {*} 克隆后的对象或者原值(不是对象)\r\n */\r\nfunction deepClone(obj) {\r\n\t// 对常见的“非”值,直接返回原来值\r\n\tif ([null, undefined, NaN, false].includes(obj)) return obj\r\n\tif (typeof obj !== 'object' && typeof obj !== 'function') {\r\n\t\t// 原始类型直接返回\r\n\t\treturn obj\r\n\t}\r\n\tconst o = test.array(obj) ? [] : {}\r\n\tfor (const i in obj) {\r\n\t\tif (obj.hasOwnProperty(i)) {\r\n\t\t\to[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]\r\n\t\t}\r\n\t}\r\n\treturn o\r\n}\r\n\r\n/**\r\n * @description JS对象深度合并\r\n * @param {object} target 需要拷贝的对象\r\n * @param {object} source 拷贝的来源对象\r\n * @returns {object|boolean} 深度合并后的对象或者false(入参有不是对象)\r\n */\r\nfunction deepMerge(target = {}, source = {}) {\r\n\ttarget = deepClone(target)\r\n\tif (typeof target !== 'object' || typeof source !== 'object') return false\r\n\tfor (const prop in source) {\r\n\t\tif (!source.hasOwnProperty(prop)) continue\r\n\t\tif (prop in target) {\r\n\t\t\tif (source[prop] == null) {\r\n\t\t\t\ttarget[prop] = source[prop]\r\n\t\t\t}else if (typeof target[prop] !== 'object') {\r\n\t\t\t\ttarget[prop] = source[prop]\r\n\t\t\t} else if (typeof source[prop] !== 'object') {\r\n\t\t\t\ttarget[prop] = source[prop]\r\n\t\t\t} else if (target[prop].concat && source[prop].concat) {\r\n\t\t\t\ttarget[prop] = target[prop].concat(source[prop])\r\n\t\t\t} else {\r\n\t\t\t\ttarget[prop] = deepMerge(target[prop], source[prop])\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttarget[prop] = source[prop]\r\n\t\t}\r\n\t}\r\n\treturn target\r\n}\r\n\r\n/**\r\n * @description error提示\r\n * @param {*} err 错误内容\r\n */\r\nfunction error(err) {\r\n\t// 开发环境才提示,生产环境不会提示\r\n\tif (process.env.NODE_ENV === 'development') {\r\n\t\tconsole.error(`uView提示:${err}`)\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 打乱数组\r\n * @param {array} array 需要打乱的数组\r\n * @returns {array} 打乱后的数组\r\n */\r\nfunction randomArray(array = []) {\r\n\t// 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0\r\n\treturn array.sort(() => Math.random() - 0.5)\r\n}\r\n\r\n// padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序\r\n// 所以这里做一个兼容polyfill的兼容处理\r\nif (!String.prototype.padStart) {\r\n\t// 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解\r\n\tString.prototype.padStart = function(maxLength, fillString = ' ') {\r\n\t\tif (Object.prototype.toString.call(fillString) !== '[object String]') {\r\n\t\t\tthrow new TypeError(\r\n\t\t\t\t'fillString must be String'\r\n\t\t\t)\r\n\t\t}\r\n\t\tconst str = this\r\n\t\t// 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉\r\n\t\tif (str.length >= maxLength) return String(str)\r\n\r\n\t\tconst fillLength = maxLength - str.length\r\n\t\tlet times = Math.ceil(fillLength / fillString.length)\r\n\t\twhile (times >>= 1) {\r\n\t\t\tfillString += fillString\r\n\t\t\tif (times === 1) {\r\n\t\t\t\tfillString += fillString\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn fillString.slice(0, fillLength) + str\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 格式化时间\r\n * @param {String|Number} dateTime 需要格式化的时间戳\r\n * @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd\r\n * @returns {string} 返回格式化后的字符串\r\n */\r\n function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {\r\n let date\r\n\t// 若传入时间为假值,则取当前时间\r\n if (!dateTime) {\r\n date = new Date()\r\n }\r\n // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容)\r\n else if (/^\\d{10}$/.test(dateTime.toString().trim())) {\r\n date = new Date(dateTime * 1000)\r\n }\r\n // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容\r\n else if (typeof dateTime === 'string' && /^\\d+$/.test(dateTime.trim())) {\r\n date = new Date(Number(dateTime))\r\n }\r\n // 其他都认为符合 RFC 2822 规范\r\n else {\r\n // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间\r\n date = new Date(\r\n typeof dateTime === 'string'\r\n ? dateTime.replace(/-/g, '/')\r\n : dateTime\r\n )\r\n }\r\n\r\n\tconst timeSource = {\r\n\t\t'y': date.getFullYear().toString(), // 年\r\n\t\t'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月\r\n\t\t'd': date.getDate().toString().padStart(2, '0'), // 日\r\n\t\t'h': date.getHours().toString().padStart(2, '0'), // 时\r\n\t\t'M': date.getMinutes().toString().padStart(2, '0'), // 分\r\n\t\t's': date.getSeconds().toString().padStart(2, '0') // 秒\r\n\t\t// 有其他格式化字符需求可以继续添加,必须转化成字符串\r\n\t}\r\n\r\n for (const key in timeSource) {\r\n const [ret] = new RegExp(`${key}+`).exec(formatStr) || []\r\n if (ret) {\r\n // 年可能只需展示两位\r\n const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0\r\n formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex))\r\n }\r\n }\r\n\r\n return formatStr\r\n}\r\n\r\n/**\r\n * @description 时间戳转为多久之前\r\n * @param {String|Number} timestamp 时间戳\r\n * @param {String|Boolean} format \r\n * 格式化规则如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;\r\n * 如果为布尔值false,无论什么时间,都返回多久以前的格式\r\n * @returns {string} 转化后的内容\r\n */\r\nfunction timeFrom(timestamp = null, format = 'yyyy-mm-dd') {\r\n\tif (timestamp == null) timestamp = Number(new Date())\r\n\ttimestamp = parseInt(timestamp)\r\n\t// 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位)\r\n\tif (timestamp.toString().length == 10) timestamp *= 1000\r\n\tlet timer = (new Date()).getTime() - timestamp\r\n\ttimer = parseInt(timer / 1000)\r\n\t// 如果小于5分钟,则返回\"刚刚\",其他以此类推\r\n\tlet tips = ''\r\n\tswitch (true) {\r\n\t\tcase timer < 300:\r\n\t\t\ttips = '刚刚'\r\n\t\t\tbreak\r\n\t\tcase timer >= 300 && timer < 3600:\r\n\t\t\ttips = `${parseInt(timer / 60)}分钟前`\r\n\t\t\tbreak\r\n\t\tcase timer >= 3600 && timer < 86400:\r\n\t\t\ttips = `${parseInt(timer / 3600)}小时前`\r\n\t\t\tbreak\r\n\t\tcase timer >= 86400 && timer < 2592000:\r\n\t\t\ttips = `${parseInt(timer / 86400)}天前`\r\n\t\t\tbreak\r\n\t\tdefault:\r\n\t\t\t// 如果format为false,则无论什么时间戳,都显示xx之前\r\n\t\t\tif (format === false) {\r\n\t\t\t\tif (timer >= 2592000 && timer < 365 * 86400) {\r\n\t\t\t\t\ttips = `${parseInt(timer / (86400 * 30))}个月前`\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttips = `${parseInt(timer / (86400 * 365))}年前`\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttips = timeFormat(timestamp, format)\r\n\t\t\t}\r\n\t}\r\n\treturn tips\r\n}\r\n\r\n/**\r\n * @description 去除空格\r\n * @param String str 需要去除空格的字符串\r\n * @param String pos both(左右)|left|right|all 默认both\r\n */\r\nfunction trim(str, pos = 'both') {\r\n\tstr = String(str)\r\n\tif (pos == 'both') {\r\n\t\treturn str.replace(/^\\s+|\\s+$/g, '')\r\n\t}\r\n\tif (pos == 'left') {\r\n\t\treturn str.replace(/^\\s*/, '')\r\n\t}\r\n\tif (pos == 'right') {\r\n\t\treturn str.replace(/(\\s*$)/g, '')\r\n\t}\r\n\tif (pos == 'all') {\r\n\t\treturn str.replace(/\\s+/g, '')\r\n\t}\r\n\treturn str\r\n}\r\n\r\n/**\r\n * @description 对象转url参数\r\n * @param {object} data,对象\r\n * @param {Boolean} isPrefix,是否自动加上\"?\"\r\n * @param {string} arrayFormat 规则 indices|brackets|repeat|comma\r\n */\r\nfunction queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') {\r\n\tconst prefix = isPrefix ? '?' : ''\r\n\tconst _result = []\r\n\tif (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets'\r\n\tfor (const key in data) {\r\n\t\tconst value = data[key]\r\n\t\t// 去掉为空的参数\r\n\t\tif (['', undefined, null].indexOf(value) >= 0) {\r\n\t\t\tcontinue\r\n\t\t}\r\n\t\t// 如果值为数组,另行处理\r\n\t\tif (value.constructor === Array) {\r\n\t\t\t// e.g. {ids: [1, 2, 3]}\r\n\t\t\tswitch (arrayFormat) {\r\n\t\t\t\tcase 'indices':\r\n\t\t\t\t\t// 结果: ids[0]=1&ids[1]=2&ids[2]=3\r\n\t\t\t\t\tfor (let i = 0; i < value.length; i++) {\r\n\t\t\t\t\t\t_result.push(`${key}[${i}]=${value[i]}`)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'brackets':\r\n\t\t\t\t\t// 结果: ids[]=1&ids[]=2&ids[]=3\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\t_result.push(`${key}[]=${_value}`)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'repeat':\r\n\t\t\t\t\t// 结果: ids=1&ids=2&ids=3\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\t_result.push(`${key}=${_value}`)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tbreak\r\n\t\t\t\tcase 'comma':\r\n\t\t\t\t\t// 结果: ids=1,2,3\r\n\t\t\t\t\tlet commaStr = ''\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\tcommaStr += (commaStr ? ',' : '') + _value\r\n\t\t\t\t\t})\r\n\t\t\t\t\t_result.push(`${key}=${commaStr}`)\r\n\t\t\t\t\tbreak\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tvalue.forEach((_value) => {\r\n\t\t\t\t\t\t_result.push(`${key}[]=${_value}`)\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t_result.push(`${key}=${value}`)\r\n\t\t}\r\n\t}\r\n\treturn _result.length ? prefix + _result.join('&') : ''\r\n}\r\n\r\n/**\r\n * 显示消息提示框\r\n * @param {String} title 提示的内容,长度与 icon 取值有关。\r\n * @param {Number} duration 提示的延迟时间,单位毫秒,默认:2000\r\n */\r\nfunction toast(title, duration = 2000) {\r\n\tuni.showToast({\r\n\t\ttitle: String(title),\r\n\t\ticon: 'none',\r\n\t\tduration\r\n\t})\r\n}\r\n\r\n/**\r\n * @description 根据主题type值,获取对应的图标\r\n * @param {String} type 主题名称,primary|info|error|warning|success\r\n * @param {boolean} fill 是否使用fill填充实体的图标\r\n */\r\nfunction type2icon(type = 'success', fill = false) {\r\n\t// 如果非预置值,默认为success\r\n\tif (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success'\r\n\tlet iconName = ''\r\n\t// 目前(2019-12-12),info和primary使用同一个图标\r\n\tswitch (type) {\r\n\t\tcase 'primary':\r\n\t\t\ticonName = 'info-circle'\r\n\t\t\tbreak\r\n\t\tcase 'info':\r\n\t\t\ticonName = 'info-circle'\r\n\t\t\tbreak\r\n\t\tcase 'error':\r\n\t\t\ticonName = 'close-circle'\r\n\t\t\tbreak\r\n\t\tcase 'warning':\r\n\t\t\ticonName = 'error-circle'\r\n\t\t\tbreak\r\n\t\tcase 'success':\r\n\t\t\ticonName = 'checkmark-circle'\r\n\t\t\tbreak\r\n\t\tdefault:\r\n\t\t\ticonName = 'checkmark-circle'\r\n\t}\r\n\t// 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的\r\n\tif (fill) iconName += '-fill'\r\n\treturn iconName\r\n}\r\n\r\n/**\r\n * @description 数字格式化\r\n * @param {number|string} number 要格式化的数字\r\n * @param {number} decimals 保留几位小数\r\n * @param {string} decimalPoint 小数点符号\r\n * @param {string} thousandsSeparator 千分位符号\r\n * @returns {string} 格式化后的数字\r\n */\r\nfunction priceFormat(number, decimals = 0, decimalPoint = '.', thousandsSeparator = ',') {\r\n\tnumber = (`${number}`).replace(/[^0-9+-Ee.]/g, '')\r\n\tconst n = !isFinite(+number) ? 0 : +number\r\n\tconst prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)\r\n\tconst sep = (typeof thousandsSeparator === 'undefined') ? ',' : thousandsSeparator\r\n\tconst dec = (typeof decimalPoint === 'undefined') ? '.' : decimalPoint\r\n\tlet s = ''\r\n\r\n\ts = (prec ? round(n, prec) + '' : `${Math.round(n)}`).split('.')\r\n\tconst re = /(-?\\d+)(\\d{3})/\r\n\twhile (re.test(s[0])) {\r\n\t\ts[0] = s[0].replace(re, `$1${sep}$2`)\r\n\t}\r\n\t\r\n\tif ((s[1] || '').length < prec) {\r\n\t\ts[1] = s[1] || ''\r\n\t\ts[1] += new Array(prec - s[1].length + 1).join('0')\r\n\t}\r\n\treturn s.join(dec)\r\n}\r\n\r\n/**\r\n * @description 获取duration值\r\n * 如果带有ms或者s直接返回,如果大于一定值,认为是ms单位,小于一定值,认为是s单位\r\n * 比如以30位阈值,那么300大于30,可以理解为用户想要的是300ms,而不是想花300s去执行一个动画\r\n * @param {String|number} value 比如: \"1s\"|\"100ms\"|1|100\r\n * @param {boolean} unit 提示: 如果是false 默认返回number\r\n * @return {string|number} \r\n */\r\nfunction getDuration(value, unit = true) {\r\n\tconst valueNum = parseInt(value)\r\n\tif (unit) {\r\n\t\tif (/s$/.test(value)) return value\r\n\t\treturn value > 30 ? `${value}ms` : `${value}s`\r\n\t}\r\n\tif (/ms$/.test(value)) return valueNum\r\n\tif (/s$/.test(value)) return valueNum > 30 ? valueNum : valueNum * 1000\r\n\treturn valueNum\r\n}\r\n\r\n/**\r\n * @description 日期的月或日补零操作\r\n * @param {String} value 需要补零的值\r\n */\r\nfunction padZero(value) {\r\n\treturn `00${value}`.slice(-2)\r\n}\r\n\r\n/**\r\n * @description 在u-form的子组件内容发生变化,或者失去焦点时,尝试通知u-form执行校验方法\r\n * @param {*} instance\r\n * @param {*} event\r\n */\r\nfunction formValidate(instance, event) {\r\n\tconst formItem = uni.$u.$parent.call(instance, 'u-form-item')\r\n\tconst form = uni.$u.$parent.call(instance, 'u-form')\r\n\t// 如果发生变化的input或者textarea等,其父组件中有u-form-item或者u-form等,就执行form的validate方法\r\n\t// 同时将form-item的pros传递给form,让其进行精确对象验证\r\n\tif (formItem && form) {\r\n\t\tform.validateField(formItem.prop, () => {}, event)\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 获取某个对象下的属性,用于通过类似'a.b.c'的形式去获取一个对象的的属性的形式\r\n * @param {object} obj 对象\r\n * @param {string} key 需要获取的属性字段\r\n * @returns {*}\r\n */\r\nfunction getProperty(obj, key) {\r\n\tif (!obj) {\r\n\t\treturn\r\n\t}\r\n\tif (typeof key !== 'string' || key === '') {\r\n\t\treturn ''\r\n\t}\r\n\tif (key.indexOf('.') !== -1) {\r\n\t\tconst keys = key.split('.')\r\n\t\tlet firstObj = obj[keys[0]] || {}\r\n\r\n\t\tfor (let i = 1; i < keys.length; i++) {\r\n\t\t\tif (firstObj) {\r\n\t\t\t\tfirstObj = firstObj[keys[i]]\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn firstObj\r\n\t}\r\n\treturn obj[key]\r\n}\r\n\r\n/**\r\n * @description 设置对象的属性值,如果'a.b.c'的形式进行设置\r\n * @param {object} obj 对象\r\n * @param {string} key 需要设置的属性\r\n * @param {string} value 设置的值\r\n */\r\nfunction setProperty(obj, key, value) {\r\n\tif (!obj) {\r\n\t\treturn\r\n\t}\r\n\t// 递归赋值\r\n\tconst inFn = function(_obj, keys, v) {\r\n\t\t// 最后一个属性key\r\n\t\tif (keys.length === 1) {\r\n\t\t\t_obj[keys[0]] = v\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// 0~length-1个key\r\n\t\twhile (keys.length > 1) {\r\n\t\t\tconst k = keys[0]\r\n\t\t\tif (!_obj[k] || (typeof _obj[k] !== 'object')) {\r\n\t\t\t\t_obj[k] = {}\r\n\t\t\t}\r\n\t\t\tconst key = keys.shift()\r\n\t\t\t// 自调用判断是否存在属性,不存在则自动创建对象\r\n\t\t\tinFn(_obj[k], keys, v)\r\n\t\t}\r\n\t}\r\n\r\n\tif (typeof key !== 'string' || key === '') {\r\n\r\n\t} else if (key.indexOf('.') !== -1) { // 支持多层级赋值操作\r\n\t\tconst keys = key.split('.')\r\n\t\tinFn(obj, keys, value)\r\n\t} else {\r\n\t\tobj[key] = value\r\n\t}\r\n}\r\n\r\n/**\r\n * @description 获取当前页面路径\r\n */\r\nfunction page() {\r\n\tconst pages = getCurrentPages()\r\n\t// 某些特殊情况下(比如页面进行redirectTo时的一些时机),pages可能为空数组\r\n\treturn `/${pages[pages.length - 1].route || ''}`\r\n}\r\n\r\n/**\r\n * @description 获取当前路由栈实例数组\r\n */\r\nfunction pages() {\r\n\tconst pages = getCurrentPages()\r\n\treturn pages\r\n}\r\n\r\n/**\r\n * @description 修改uView内置属性值\r\n * @param {object} props 修改内置props属性\r\n * @param {object} config 修改内置config属性\r\n * @param {object} color 修改内置color属性\r\n * @param {object} zIndex 修改内置zIndex属性\r\n */\r\nfunction setConfig({\r\n\tprops = {},\r\n\tconfig = {},\r\n\tcolor = {},\r\n\tzIndex = {}\r\n}) {\r\n\tconst {\r\n\t\tdeepMerge,\r\n\t} = uni.$u\r\n\tuni.$u.config = deepMerge(uni.$u.config, config)\r\n\tuni.$u.props = deepMerge(uni.$u.props, props)\r\n\tuni.$u.color = deepMerge(uni.$u.color, color)\r\n\tuni.$u.zIndex = deepMerge(uni.$u.zIndex, zIndex)\r\n}\r\n\r\nexport default {\r\n\trange,\r\n\tgetPx,\r\n\tsleep,\r\n\tos,\r\n\tsys,\r\n\trandom,\r\n\tguid,\r\n\t$parent,\r\n\taddStyle,\r\n\taddUnit,\r\n\tdeepClone,\r\n\tdeepMerge,\r\n\terror,\r\n\trandomArray,\r\n\ttimeFormat,\r\n\ttimeFrom,\r\n\ttrim,\r\n\tqueryParams,\r\n\ttoast,\r\n\ttype2icon,\r\n\tpriceFormat,\r\n\tgetDuration,\r\n\tpadZero,\r\n\tformValidate,\r\n\tgetProperty,\r\n\tsetProperty,\r\n\tpage,\r\n\tpages,\r\n\tsetConfig\r\n}\r\n", "const version = '3'\n\n// 开发环境才提示,生产环境不会提示\nif (process.env.NODE_ENV === 'development') {\n\tconsole.log(`\\n %c uview-plus V${version} %c https://ijry.github.io/uview-plus/ \\n\\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0;', 'color: #3c9cff;background: #ffffff; padding:5px 0;');\n}\n\nexport default {\n v: version,\n version,\n // 主题名称\n type: [\n 'primary',\n 'success',\n 'info',\n 'error',\n 'warning'\n ],\n // 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持\n color: {\n 'u-primary': '#2979ff',\n 'u-warning': '#ff9900',\n 'u-success': '#19be6b',\n 'u-error': '#fa3534',\n 'u-info': '#909399',\n 'u-main-color': '#303133',\n 'u-content-color': '#606266',\n 'u-tips-color': '#909399',\n 'u-light-color': '#c0c4cc'\n },\n\t// 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx\n\tunit: 'px'\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:44:35\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/actionSheet.js\n */\nexport default {\n // action-sheet组件\n actionSheet: {\n show: false,\n title: '',\n description: '',\n actions: () => [],\n index: '',\n cancelText: '',\n closeOnClickAction: true,\n safeAreaInsetBottom: true,\n openType: '',\n closeOnClickOverlay: true,\n round: 0\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:47:24\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/album.js\n */\nexport default {\n // album 组件\n album: {\n urls: () => [],\n keyName: '',\n singleSize: 180,\n multipleSize: 70,\n space: 6,\n singleMode: 'scaleToFill',\n multipleMode: 'aspectFill',\n maxCount: 9,\n previewFullImage: true,\n rowCount: 3,\n showMore: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:48:53\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/alert.js\n */\nexport default {\n // alert警告组件\n alert: {\n title: '',\n type: 'warning',\n description: '',\n closable: false,\n showIcon: false,\n effect: 'light',\n center: false,\n fontSize: 14\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:49:22\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/avatar.js\n */\nexport default {\n // avatar 组件\n avatar: {\n src: '',\n shape: 'circle',\n size: 40,\n mode: 'scaleToFill',\n text: '',\n bgColor: '#c0c4cc',\n color: '#ffffff',\n fontSize: 18,\n icon: '',\n mpAvatar: false,\n randomBgColor: false,\n defaultUrl: '',\n colorIndex: '',\n name: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:49:55\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/avatarGroup.js\n */\nexport default {\n // avatarGroup 组件\n avatarGroup: {\n urls: () => [],\n maxCount: 5,\n shape: 'circle',\n mode: 'scaleToFill',\n showMore: true,\n size: 40,\n keyName: '',\n gap: 0.5,\n\t\textraValue: 0\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:50:18\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/backtop.js\n */\nexport default {\n // backtop组件\n backtop: {\n mode: 'circle',\n icon: 'arrow-upward',\n text: '',\n duration: 100,\n scrollTop: 0,\n top: 400,\n bottom: 100,\n right: 20,\n zIndex: 9,\n iconStyle: () => ({\n color: '#909399',\n fontSize: '19px'\n })\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-23 19:51:50\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/badge.js\n */\nexport default {\n // 徽标数组件\n badge: {\n isDot: false,\n value: '',\n show: true,\n max: 999,\n type: 'error',\n showZero: false,\n bgColor: null,\n color: null,\n shape: 'circle',\n numberType: 'overflow',\n offset: () => [],\n inverted: false,\n absolute: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:51:27\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/button.js\n */\nexport default {\n // button组件\n button: {\n hairline: false,\n type: 'info',\n size: 'normal',\n shape: 'square',\n plain: false,\n disabled: false,\n loading: false,\n loadingText: '',\n loadingMode: 'spinner',\n loadingSize: 15,\n openType: '',\n formType: '',\n appParameter: '',\n hoverStopPropagation: true,\n lang: 'en',\n sessionFrom: '',\n sendMessageTitle: '',\n sendMessagePath: '',\n sendMessageImg: '',\n showMessageCard: false,\n dataName: '',\n throttleTime: 0,\n hoverStartTime: 0,\n hoverStayTime: 200,\n text: '',\n icon: '',\n iconColor: '',\n color: ''\n }\n}\n", "/*\r\n * @Author : LQ\r\n * @Description :\r\n * @version : 1.0\r\n * @Date : 2021-08-20 16:44:21\r\n * @LastAuthor : LQ\r\n * @lastTime : 2021-08-20 16:52:43\r\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/calendar.js\r\n */\r\nexport default {\r\n // calendar 组件\r\n calendar: {\r\n title: '日期选择',\r\n showTitle: true,\r\n showSubtitle: true,\r\n mode: 'single',\r\n startText: '开始',\r\n endText: '结束',\r\n customList: () => [],\r\n color: '#3c9cff',\r\n minDate: 0,\r\n maxDate: 0,\r\n defaultDate: null,\r\n maxCount: Number.MAX_SAFE_INTEGER, // Infinity\r\n rowHeight: 56,\r\n formatter: null,\r\n showLunar: false,\r\n showMark: true,\r\n confirmText: '确定',\r\n confirmDisabledText: '确定',\r\n show: false,\r\n closeOnClickOverlay: false,\r\n readonly: false,\r\n showConfirm: true,\r\n maxRange: Number.MAX_SAFE_INTEGER, // Infinity\r\n rangePrompt: '',\r\n showRangePrompt: true,\r\n allowSameDay: false,\n\t\tround: 0,\n\t\tmonthNum: 3\r\n }\r\n}\r\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:53:20\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/carKeyboard.js\n */\nexport default {\n // 车牌号键盘\n carKeyboard: {\n random: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-23 20:53:09\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/cell.js\n */\nexport default {\n\t// cell组件的props\n\tcell: {\n\t\tcustomClass: '',\n\t\ttitle: '',\n\t\tlabel: '',\n\t\tvalue: '',\n\t\ticon: '',\n\t\tdisabled: false,\n\t\tborder: true,\n\t\tcenter: false,\n\t\turl: '',\n\t\tlinkType: 'navigateTo',\n\t\tclickable: false,\n\t\tisLink: false,\n\t\trequired: false,\n\t\tarrowDirection: '',\n\t\ticonStyle: {},\n\t\trightIconStyle: {},\n\t\trightIcon: 'arrow-right',\n\t\ttitleStyle: {},\n\t\tsize: '',\n\t\tstop: true,\n\t\tname: ''\n\t}\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:54:16\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/cellGroup.js\n */\nexport default {\n // cell-group组件的props\n cellGroup: {\n title: '',\n border: true,\n customStyle: {}\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-23 21:06:59\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/checkbox.js\n */\nexport default {\n // checkbox组件\n checkbox: {\n name: '',\n shape: '',\n size: '',\n checkbox: false,\n disabled: '',\n activeColor: '',\n inactiveColor: '',\n iconSize: '',\n iconColor: '',\n label: '',\n labelSize: '',\n labelColor: '',\n labelDisabled: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:54:47\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/checkboxGroup.js\n */\nexport default {\n // checkbox-group组件\n checkboxGroup: {\n name: '',\n value: () => [],\n shape: 'square',\n disabled: false,\n activeColor: '#2979ff',\n inactiveColor: '#c8c9cc',\n size: 18,\n placement: 'row',\n labelSize: 14,\n labelColor: '#303133',\n labelDisabled: false,\n iconColor: '#ffffff',\n iconSize: 12,\n iconPlacement: 'left',\n borderBottom: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:55:02\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/circleProgress.js\n */\nexport default {\n // circleProgress 组件\n circleProgress: {\n percentage: 30\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:55:27\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/code.js\n */\n\nexport default {\n // code 组件\n code: {\n seconds: 60,\n startText: '获取验证码',\n changeText: 'X秒重新获取',\n endText: '重新获取',\n keepRunning: false,\n uniqueKey: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:55:58\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/codeInput.js\n */\nexport default {\n // codeInput 组件\n codeInput: {\n\t\tadjustPosition: true,\n maxlength: 6,\n dot: false,\n mode: 'box',\n hairline: false,\n space: 10,\n value: '',\n focus: false,\n bold: false,\n color: '#606266',\n fontSize: 18,\n size: 35,\n disabledKeyboard: false,\n borderColor: '#c9cacc',\n\t\tdisabledDot: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:56:12\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/col.js\n */\nexport default {\n // col 组件\n col: {\n span: 12,\n offset: 0,\n justify: 'start',\n align: 'stretch',\n textAlign: 'left'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:56:30\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/collapse.js\n */\nexport default {\n // collapse 组件\n collapse: {\n value: null,\n accordion: false,\n border: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:56:42\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/collapseItem.js\n */\nexport default {\n // collapseItem 组件\n collapseItem: {\n title: '',\n value: '',\n label: '',\n disabled: false,\n isLink: true,\n clickable: true,\n border: true,\n align: 'left',\n name: '',\n icon: '',\n duration: 300\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:57:16\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/columnNotice.js\n */\nexport default {\n // columnNotice 组件\n columnNotice: {\n text: '',\n icon: 'volume',\n mode: '',\n color: '#f9ae3d',\n bgColor: '#fdf6ec',\n fontSize: 14,\n speed: 80,\n step: false,\n duration: 1500,\n disableTouch: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:11:29\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/countDown.js\n */\nexport default {\n // u-count-down 计时器组件\n countDown: {\n time: 0,\n format: 'HH:mm:ss',\n autoStart: true,\n millisecond: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:57:32\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/countTo.js\n */\nexport default {\n // countTo 组件\n countTo: {\n startVal: 0,\n endVal: 0,\n duration: 2000,\n autoplay: true,\n decimals: 0,\n useEasing: true,\n decimal: '.',\n color: '#606266',\n fontSize: 22,\n bold: false,\n separator: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:57:48\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/datetimePicker.js\n */\nexport default {\n // datetimePicker 组件\n datetimePicker: {\n show: false,\n showToolbar: true,\n value: '',\n title: '',\n mode: 'datetime',\n maxDate: new Date(new Date().getFullYear() + 10, 0, 1).getTime(),\n minDate: new Date(new Date().getFullYear() - 10, 0, 1).getTime(),\n minHour: 0,\n maxHour: 23,\n minMinute: 0,\n maxMinute: 59,\n filter: null,\n formatter: null,\n loading: false,\n itemHeight: 44,\n cancelText: '取消',\n confirmText: '确认',\n cancelColor: '#909193',\n confirmColor: '#3c9cff',\n visibleItemCount: 5,\n closeOnClickOverlay: false,\n defaultIndex: () => []\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:58:03\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/divider.js\n */\nexport default {\n // divider组件\n divider: {\n dashed: false,\n hairline: true,\n dot: false,\n textPosition: 'center',\n text: '',\n textSize: 14,\n textColor: '#909399',\n lineColor: '#dcdfe6'\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:03:27\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/empty.js\n */\nexport default {\n // empty组件\n empty: {\n icon: '',\n text: '',\n textColor: '#c0c4cc',\n textSize: 14,\n iconColor: '#c0c4cc',\n iconSize: 90,\n mode: 'data',\n width: 160,\n height: 160,\n show: true,\n marginTop: 0\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:03:49\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/form.js\n */\nexport default {\n // form 组件\n form: {\n model: () => ({}),\n rules: () => ({}),\n errorType: 'message',\n borderBottom: true,\n labelPosition: 'left',\n labelWidth: 45,\n labelAlign: 'left',\n labelStyle: () => ({})\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:04:32\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/formItem.js\n */\nexport default {\n // formItem 组件\n formItem: {\n label: '',\n prop: '',\n borderBottom: '',\n labelWidth: '',\n rightIcon: '',\n leftIcon: '',\n required: false,\n leftIconStyle: '',\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:05:25\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/gap.js\n */\nexport default {\n // gap组件\n gap: {\n bgColor: 'transparent',\n height: 20,\n marginTop: 0,\n marginBottom: 0,\n customStyle: {}\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:05:57\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/grid.js\n */\nexport default {\n // grid组件\n grid: {\n col: 3,\n border: false,\n align: 'left'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:06:13\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/gridItem.js\n */\nexport default {\n // grid-item组件\n gridItem: {\n name: null,\n bgColor: 'transparent'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 18:00:14\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/icon.js\n */\nimport config from '../config'\n\nconst {\n color\n} = config\nexport default {\n // icon组件\n icon: {\n name: '',\n color: color['u-content-color'],\n size: '16px',\n bold: false,\n index: '',\n hoverClass: '',\n customPrefix: 'uicon',\n label: '',\n labelPos: 'right',\n labelSize: '15px',\n labelColor: color['u-content-color'],\n space: '3px',\n imgMode: '',\n width: '',\n height: '',\n top: 0,\n stop: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:01:51\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/image.js\n */\nexport default {\n // image组件\n image: {\n src: '',\n mode: 'aspectFill',\n width: '300',\n height: '225',\n shape: 'square',\n radius: 0,\n lazyLoad: true,\n showMenuByLongpress: true,\n loadingIcon: 'photo',\n errorIcon: 'error-circle',\n showLoading: true,\n showError: true,\n fade: true,\n webp: false,\n duration: 500,\n bgColor: '#f3f4f6'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:13:15\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/indexAnchor.js\n */\nexport default {\n // indexAnchor 组件\n indexAnchor: {\n text: '',\n color: '#606266',\n size: 14,\n bgColor: '#dedede',\n height: 32\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:13:35\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/indexList.js\n */\nexport default {\n // indexList 组件\n indexList: {\n inactiveColor: '#606266',\n activeColor: '#5677fc',\n indexList: () => [],\n sticky: true,\n customNavHeight: 0\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:13:55\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/input.js\n */\nexport default {\n\t// index 组件\n\tinput: {\n\t\tvalue: '',\n\t\ttype: 'text',\n\t\tfixed: false,\n\t\tdisabled: false,\n\t\tdisabledColor: '#f5f7fa',\n\t\tclearable: false,\n\t\tpassword: false,\n\t\tmaxlength: -1,\n\t\tplaceholder: null,\n\t\tplaceholderClass: 'input-placeholder',\n\t\tplaceholderStyle: 'color: #c0c4cc',\n\t\tshowWordLimit: false,\n\t\tconfirmType: 'done',\n\t\tconfirmHold: false,\n\t\tholdKeyboard: false,\n\t\tfocus: false,\n\t\tautoBlur: false,\n\t\tdisableDefaultPadding: false,\n\t\tcursor: -1,\n\t\tcursorSpacing: 30,\n\t\tselectionStart: -1,\n\t\tselectionEnd: -1,\n\t\tadjustPosition: true,\n\t\tinputAlign: 'left',\n\t\tfontSize: '15px',\n\t\tcolor: '#303133',\n\t\tprefixIcon: '',\n\t\tprefixIconStyle: '',\n\t\tsuffixIcon: '',\n\t\tsuffixIconStyle: '',\n\t\tborder: 'surround',\n\t\treadonly: false,\n\t\tshape: 'square',\n\t\tformatter: null\n\t}\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:07:49\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/keyboard.js\n */\nexport default {\n // 键盘组件\n keyboard: {\n mode: 'number',\n dotDisabled: false,\n tooltip: true,\n showTips: true,\n tips: '',\n showCancel: true,\n showConfirm: true,\n random: false,\n safeAreaInsetBottom: true,\n closeOnClickOverlay: true,\n show: false,\n overlay: true,\n zIndex: 10075,\n cancelText: '取消',\n confirmText: '确定',\n autoChange: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:04:49\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/line.js\n */\nexport default {\n // line组件\n line: {\n color: '#d6d7d9',\n length: '100%',\n direction: 'row',\n hairline: true,\n margin: 0,\n dashed: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:14:11\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/lineProgress.js\n */\nexport default {\n // lineProgress 组件\n lineProgress: {\n activeColor: '#19be6b',\n inactiveColor: '#ececec',\n percentage: 0,\n showText: true,\n height: 12\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:45:36\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/link.js\n */\nimport config from '../config'\n\nconst {\n color\n} = config\nexport default {\n // link超链接组件props参数\n link: {\n color: color['u-primary'],\n fontSize: 15,\n underLine: false,\n href: '',\n mpTips: '链接已复制,请在浏览器打开',\n lineColor: '',\n text: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:14:53\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/list.js\n */\nexport default {\n // list 组件\n list: {\n showScrollbar: false,\n lowerThreshold: 50,\n upperThreshold: 0,\n scrollTop: 0,\n offsetAccuracy: 10,\n enableFlex: false,\n pagingEnabled: false,\n scrollable: true,\n scrollIntoView: '',\n scrollWithAnimation: false,\n enableBackToTop: false,\n height: 0,\n width: 0,\n preLoadScreen: 1\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:15:40\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/listItem.js\n */\nexport default {\n // listItem 组件\n listItem: {\n anchor: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:45:47\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadingIcon.js\n */\nimport config from '../config'\n\nconst {\n color\n} = config\nexport default {\n // loading-icon加载中图标组件\n loadingIcon: {\n show: true,\n color: color['u-tips-color'],\n textColor: color['u-tips-color'],\n vertical: false,\n mode: 'spinner',\n size: 24,\n textSize: 15,\n text: '',\n timingFunction: 'ease-in-out',\n duration: 1200,\n inactiveColor: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:00:23\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadingPage.js\n */\nexport default {\n // loading-page组件\n loadingPage: {\n loadingText: '正在加载',\n image: '',\n loadingMode: 'circle',\n loading: false,\n bgColor: '#ffffff',\n color: '#C8C8C8',\n fontSize: 19,\n iconSize: 28,\n loadingColor: '#C8C8C8'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:15:26\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/loadmore.js\n */\nexport default {\n // loadmore 组件\n loadmore: {\n status: 'loadmore',\n bgColor: 'transparent',\n icon: true,\n fontSize: 14,\n\t\ticonSize: 17,\n color: '#606266',\n loadingIcon: 'spinner',\n loadmoreText: '加载更多',\n loadingText: '正在加载...',\n nomoreText: '没有更多了',\n isDot: false,\n iconColor: '#b7b7b7',\n marginTop: 10,\n marginBottom: 10,\n height: 'auto',\n line: false,\n\t\tlineColor: '#E6E8EB',\n\t\tdashed: false,\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:15:59\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/modal.js\n */\nexport default {\n // modal 组件\n modal: {\n show: false,\n title: '',\n content: '',\n confirmText: '确认',\n cancelText: '取消',\n showConfirmButton: true,\n showCancelButton: false,\n confirmColor: '#2979ff',\n cancelColor: '#606266',\n buttonReverse: false,\n zoom: true,\n asyncClose: false,\n closeOnClickOverlay: false,\n negativeTop: 0,\n width: '650rpx',\n confirmButtonShape: ''\n }\n}\n", "// 为了让用户能够自定义主题,会逐步弃用此文件,各颜色通过css提供\r\n// 为了给某些特殊场景使用和向后兼容,无需删除此文件(2020-06-20)\r\nconst color = {\r\n primary: '#3c9cff',\r\n info: '#909399',\r\n default: '#909399',\r\n warning: '#f9ae3d',\r\n error: '#f56c6c',\r\n success: '#5ac725',\r\n mainColor: '#303133',\r\n contentColor: '#606266',\r\n tipsColor: '#909399',\r\n lightColor: '#c0c4cc',\r\n borderColor: '#e4e7ed'\r\n}\r\n\r\nexport default color\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:16:18\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/navbar.js\n */\nimport color from '../color'\nexport default {\n // navbar 组件\n navbar: {\n safeAreaInsetTop: true,\n placeholder: false,\n fixed: true,\n border: false,\n leftIcon: 'arrow-left',\n leftText: '',\n rightText: '',\n rightIcon: '',\n title: '',\n bgColor: '#ffffff',\n titleWidth: '400rpx',\n height: '44px',\n\t\tleftIconSize: 20,\n\t\tleftIconColor: color.mainColor,\n\t\tautoBack: false,\n\t\ttitleStyle: ''\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:16:39\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/noNetwork.js\n */\nexport default {\n // noNetwork\n noNetwork: {\n tips: '哎呀,网络信号丢失',\n zIndex: '',\n image: 'data:image/png;base64,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'\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:17:13\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/noticeBar.js\n */\nexport default {\n // noticeBar\n noticeBar: {\n text: () => [],\n direction: 'row',\n step: false,\n icon: 'volume',\n mode: '',\n color: '#f9ae3d',\n bgColor: '#fdf6ec',\n speed: 80,\n fontSize: 14,\n duration: 2000,\n disableTouch: true,\n url: '',\n linkType: 'navigateTo'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:10:21\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/notify.js\n */\nexport default {\n // notify组件\n notify: {\n top: 0,\n type: 'primary',\n color: '#ffffff',\n bgColor: '',\n message: '',\n duration: 3000,\n fontSize: 15,\n safeAreaInsetTop: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:11:46\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/numberBox.js\n */\nexport default {\n // 步进器组件\n numberBox: {\n name: '',\n value: 0,\n min: 1,\n max: Number.MAX_SAFE_INTEGER,\n step: 1,\n integer: false,\n disabled: false,\n disabledInput: false,\n asyncChange: false,\n inputWidth: 35,\n showMinus: true,\n showPlus: true,\n decimalLength: null,\n longPress: true,\n color: '#323233',\n buttonSize: 30,\n bgColor: '#EBECEE',\n cursorSpacing: 100,\n disableMinus: false,\n disablePlus: false,\n iconStyle: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:08:05\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/numberKeyboard.js\n */\nexport default {\n // 数字键盘\n numberKeyboard: {\n mode: 'number',\n dotDisabled: false,\n random: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:06:50\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/overlay.js\n */\nexport default {\n // overlay组件\n overlay: {\n show: false,\n zIndex: 10070,\n duration: 300,\n opacity: 0.5\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:17:33\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/parse.js\n */\nexport default {\n // parse\n parse: {\n copyLink: true,\n errorImg: '',\n lazyLoad: false,\n loadingImg: '',\n pauseVideo: true,\n previewImg: true,\n setTitle: true,\n showImgMenu: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:18:20\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/picker.js\n */\nexport default {\n // picker\n picker: {\n show: false,\n showToolbar: true,\n title: '',\n columns: () => [],\n loading: false,\n itemHeight: 44,\n cancelText: '取消',\n confirmText: '确定',\n cancelColor: '#909193',\n confirmColor: '#3c9cff',\n visibleItemCount: 5,\n keyName: 'text',\n closeOnClickOverlay: false,\n defaultIndex: () => [],\n\t\timmediateChange: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:06:33\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/popup.js\n */\nexport default {\n // popup组件\n popup: {\n show: false,\n overlay: true,\n mode: 'bottom',\n duration: 300,\n closeable: false,\n overlayStyle: () => {},\n closeOnClickOverlay: true,\n zIndex: 10075,\n safeAreaInsetBottom: true,\n safeAreaInsetTop: false,\n closeIconPos: 'top-right',\n round: 0,\n zoom: true,\n bgColor: '',\n overlayOpacity: 0.5\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:02:34\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/radio.js\n */\nexport default {\n // radio组件\n radio: {\n name: '',\n shape: '',\n disabled: '',\n labelDisabled: '',\n activeColor: '',\n inactiveColor: '',\n iconSize: '',\n labelSize: '',\n label: '',\n labelColor: '',\n size: '',\n iconColor: '',\n placement: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:03:12\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/radioGroup.js\n */\nexport default {\n // radio-group组件\n radioGroup: {\n value: '',\n disabled: false,\n shape: 'circle',\n activeColor: '#2979ff',\n inactiveColor: '#c8c9cc',\n name: '',\n size: 18,\n placement: 'row',\n label: '',\n labelColor: '#303133',\n labelSize: 14,\n labelDisabled: false,\n iconColor: '#ffffff',\n iconSize: 12,\n borderBottom: false,\n iconPlacement: 'left'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:05:09\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/rate.js\n */\nexport default {\n // rate组件\n rate: {\n value: 1,\n count: 5,\n disabled: false,\n size: 18,\n inactiveColor: '#b2b2b2',\n activeColor: '#FA3534',\n gutter: 4,\n minCount: 1,\n allowHalf: false,\n activeIcon: 'star-fill',\n inactiveIcon: 'star',\n touchable: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:18:41\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/readMore.js\n */\nexport default {\n // readMore\n readMore: {\n showHeight: 400,\n toggle: false,\n closeText: '展开阅读全文',\n openText: '收起',\n color: '#2979ff',\n fontSize: 14,\n textIndent: '2em',\n name: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:18:58\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/row.js\n */\nexport default {\n // row\n row: {\n gutter: 0,\n justify: 'start',\n align: 'center'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:19:13\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/rowNotice.js\n */\nexport default {\n // rowNotice\n rowNotice: {\n text: '',\n icon: 'volume',\n mode: '',\n color: '#f9ae3d',\n bgColor: '#fdf6ec',\n fontSize: 14,\n speed: 80\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:19:28\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/scrollList.js\n */\nexport default {\n // scrollList\n scrollList: {\n indicatorWidth: 50,\n indicatorBarWidth: 20,\n indicator: true,\n indicatorColor: '#f2f2f2',\n indicatorActiveColor: '#3c9cff',\n indicatorStyle: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:19:45\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/search.js\n */\nexport default {\n // search\n search: {\n shape: 'round',\n bgColor: '#f2f2f2',\n placeholder: '请输入关键字',\n clearabled: true,\n focus: false,\n showAction: true,\n actionStyle: () => ({}),\n actionText: '搜索',\n inputAlign: 'left',\n inputStyle: () => ({}),\n disabled: false,\n borderColor: 'transparent',\n searchIconColor: '#909399',\n searchIconSize: 22,\n color: '#606266',\n placeholderColor: '#909399',\n searchIcon: 'search',\n margin: '0',\n animation: false,\n value: '',\n maxlength: '-1',\n height: 32,\n label: null\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:07:33\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/section.js\n */\nexport default {\n // u-section组件\n section: {\n title: '',\n subTitle: '更多',\n right: true,\n fontSize: 15,\n bold: true,\n color: '#303133',\n subColor: '#909399',\n showLine: true,\n lineColor: '',\n arrow: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:20:14\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/skeleton.js\n */\nexport default {\n // skeleton\n skeleton: {\n loading: true,\n animate: true,\n rows: 0,\n rowsWidth: '100%',\n rowsHeight: 18,\n title: true,\n titleWidth: '50%',\n titleHeight: 18,\n avatar: false,\n avatarSize: 32,\n avatarShape: 'circle'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:08:25\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/slider.js\n */\nexport default {\n // slider组件\n slider: {\n value: 0,\n blockSize: 18,\n min: 0,\n max: 100,\n step: 1,\n activeColor: '#2979ff',\n inactiveColor: '#c0c4cc',\n blockColor: '#ffffff',\n showValue: false,\n\t\tdisabled:false,\n blockStyle: () => {}\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:20:39\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/statusBar.js\n */\nexport default {\n // statusBar\n statusBar: {\n bgColor: 'transparent'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:12:37\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/steps.js\n */\nexport default {\n // steps组件\n steps: {\n direction: 'row',\n current: 0,\n activeColor: '#3c9cff',\n inactiveColor: '#969799',\n activeIcon: '',\n inactiveIcon: '',\n dot: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:12:55\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/stepsItem.js\n */\nexport default {\n // steps-item组件\n stepsItem: {\n title: '',\n desc: '',\n iconSize: 17,\n error: false\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:01:30\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/sticky.js\n */\nexport default {\n // sticky组件\n sticky: {\n offsetTop: 0,\n customNavHeight: 0,\n disabled: false,\n bgColor: 'transparent',\n zIndex: '',\n index: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:12:20\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/subsection.js\n */\nexport default {\n // subsection组件\n subsection: {\n list: [],\n current: 0,\n activeColor: '#3c9cff',\n inactiveColor: '#303133',\n mode: 'button',\n fontSize: 12,\n bold: true,\n bgColor: '#eeeeef',\n\t\tkeyName: 'name'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:00:42\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/swipeAction.js\n */\nexport default {\n // swipe-action组件\n swipeAction: {\n autoClose: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:01:13\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/swipeActionItem.js\n */\nexport default {\n // swipeActionItem 组件\n swipeActionItem: {\n show: false,\n name: '',\n disabled: false,\n threshold: 20,\n autoClose: true,\n options: [],\n duration: 300\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:21:38\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/swiper.js\n */\nexport default {\n // swiper 组件\n swiper: {\n list: () => [],\n indicator: false,\n indicatorActiveColor: '#FFFFFF',\n indicatorInactiveColor: 'rgba(255, 255, 255, 0.35)',\n indicatorStyle: '',\n indicatorMode: 'line',\n autoplay: true,\n current: 0,\n currentItemId: '',\n interval: 3000,\n duration: 300,\n circular: false,\n previousMargin: 0,\n nextMargin: 0,\n acceleration: false,\n displayMultipleItems: 1,\n easingFunction: 'default',\n keyName: 'url',\n imgMode: 'aspectFill',\n height: 130,\n bgColor: '#f3f4f6',\n radius: 4,\n loading: false,\n showTitle: false\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:22:07\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/swiperIndicator.js\n */\nexport default {\n // swiperIndicator 组件\n swiperIndicator: {\n length: 0,\n current: 0,\n indicatorActiveColor: '',\n indicatorInactiveColor: '',\n\t\tindicatorMode: 'line'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:22:24\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/switch.js\n */\nexport default {\n // switch\n switch: {\n loading: false,\n disabled: false,\n size: 25,\n activeColor: '#2979ff',\n inactiveColor: '#ffffff',\n value: false,\n activeValue: true,\n inactiveValue: false,\n asyncChange: false,\n space: 0\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:22:40\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/tabbar.js\n */\nexport default {\n // tabbar\n tabbar: {\n value: null,\n safeAreaInsetBottom: true,\n border: true,\n zIndex: 1,\n activeColor: '#1989fa',\n inactiveColor: '#7d7e80',\n fixed: true,\n placeholder: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:22:55\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/tabbarItem.js\n */\nexport default {\n //\n tabbarItem: {\n name: null,\n icon: '',\n badge: null,\n dot: false,\n text: '',\n badgeStyle: 'top: 6px;right:2px;'\n }\n}\n", "/*\r\n * @Author : LQ\r\n * @Description :\r\n * @version : 1.0\r\n * @Date : 2021-08-20 16:44:21\r\n * @LastAuthor : LQ\r\n * @lastTime : 2021-08-20 17:23:14\r\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/tabs.js\r\n */\r\nexport default {\r\n //\r\n tabs: {\r\n duration: 300,\r\n list: () => [],\r\n lineColor: '#3c9cff',\r\n activeStyle: () => ({\r\n color: '#303133'\r\n }),\r\n inactiveStyle: () => ({\r\n color: '#606266'\r\n }),\r\n lineWidth: 20,\r\n lineHeight: 3,\r\n lineBgSize: 'cover',\r\n itemStyle: () => ({\r\n height: '44px'\r\n }),\r\n scrollable: true,\r\n\t\tcurrent: 0,\r\n\t\tkeyName: 'name'\r\n }\r\n}\r\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:23:37\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/tag.js\n */\nexport default {\n // tag 组件\n tag: {\n type: 'primary',\n disabled: false,\n size: 'medium',\n shape: 'square',\n text: '',\n bgColor: '',\n color: '',\n borderColor: '',\n closeColor: '#C6C7CB',\n name: '',\n plainFill: false,\n plain: false,\n closable: false,\n show: true,\n icon: ''\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:23:58\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/text.js\n */\nexport default {\n // text 组件\n text: {\n type: '',\n show: true,\n text: '',\n prefixIcon: '',\n suffixIcon: '',\n mode: '',\n href: '',\n format: '',\n call: false,\n openType: '',\n bold: false,\n block: false,\n lines: '',\n color: '#303133',\n size: 15,\n iconStyle: () => ({\n fontSize: '15px'\n }),\n decoration: 'none',\n margin: 0,\n lineHeight: '',\n align: 'left',\n wordWrap: 'normal'\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:24:32\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/textarea.js\n */\nexport default {\n\t// textarea 组件\n\ttextarea: {\n\t\tvalue: '',\n\t\tplaceholder: '',\n\t\tplaceholderClass: 'textarea-placeholder',\n\t\tplaceholderStyle: 'color: #c0c4cc',\n\t\theight: 70,\n\t\tconfirmType: 'done',\n\t\tdisabled: false,\n\t\tcount: false,\n\t\tfocus: false,\n\t\tautoHeight: false,\n\t\tfixed: false,\n\t\tcursorSpacing: 0,\n\t\tcursor: '',\n\t\tshowConfirmBar: true,\n\t\tselectionStart: -1,\n\t\tselectionEnd: -1,\n\t\tadjustPosition: true,\n\t\tdisableDefaultPadding: false,\n\t\tholdKeyboard: false,\n\t\tmaxlength: 140,\n\t\tborder: 'surround',\n\t\tformatter: null\n\t}\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:07:07\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/toast.js\n */\nexport default {\n // toast组件\n toast: {\n zIndex: 10090,\n loading: false,\n text: '',\n icon: '',\n type: '',\n loadingMode: '',\n show: '',\n overlay: false,\n position: 'center',\n params: () => {},\n duration: 2000,\n isTab: false,\n url: '',\n callback: null,\n back: false\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:24:55\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/toolbar.js\n */\nexport default {\n // toolbar 组件\n toolbar: {\n show: true,\n cancelText: '取消',\n confirmText: '确认',\n cancelColor: '#909193',\n confirmColor: '#3c9cff',\n title: ''\n }\n\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:25:14\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/tooltip.js\n */\nexport default {\n // tooltip 组件\n tooltip: {\n text: '',\n copyText: '',\n size: 14,\n color: '#606266',\n bgColor: 'transparent',\n direction: 'top',\n zIndex: 10071,\n showCopy: true,\n buttons: () => [],\n overlay: true,\n showToast: true\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 16:59:00\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/transition.js\n */\nexport default {\n // transition动画组件的props\n transition: {\n show: false,\n mode: 'fade',\n duration: '300',\n timingFunction: 'ease-out'\n }\n}\n", "/*\n * @Author : LQ\n * @Description :\n * @version : 1.0\n * @Date : 2021-08-20 16:44:21\n * @LastAuthor : LQ\n * @lastTime : 2021-08-20 17:09:50\n * @FilePath : /u-view2.0/uview-ui/libs/config/props/upload.js\n */\nexport default {\n\t// upload组件\n\tupload: {\n\t\taccept: 'image',\n\t\tcapture: () => ['album', 'camera'],\n\t\tcompressed: true,\n\t\tcamera: 'back',\n\t\tmaxDuration: 60,\n\t\tuploadIcon: 'camera-fill',\n\t\tuploadIconColor: '#D3D4D6',\n\t\tuseBeforeRead: false,\n\t\tpreviewFullImage: true,\n\t\tmaxCount: 52,\n\t\tdisabled: false,\n\t\timageMode: 'aspectFill',\n\t\tname: '',\n\t\tsizeType: () => ['original', 'compressed'],\n\t\tmultiple: false,\n\t\tdeletable: true,\n\t\tmaxSize: Number.MAX_VALUE,\n\t\tfileList: () => [],\n\t\tuploadText: '',\n\t\twidth: 80,\n\t\theight: 80,\n\t\tpreviewImage: true\n\t}\n}\n", "/**\n * 此文件的作用为统一配置所有组件的props参数\n * 借此用户可以全局覆盖组件的props默认值\n * 无需在每个引入组件的页面中都配置一次\n */\nimport config from './config'\n\nimport ActionSheet from './props/actionSheet'\nimport Album from './props/album'\nimport Alert from './props/alert'\nimport Avatar from './props/avatar'\nimport AvatarGroup from './props/avatarGroup'\nimport Backtop from './props/backtop'\nimport Badge from './props/badge'\nimport Button from './props/button'\nimport Calendar from './props/calendar'\nimport CarKeyboard from './props/carKeyboard'\nimport Cell from './props/cell'\nimport CellGroup from './props/cellGroup'\nimport Checkbox from './props/checkbox'\nimport CheckboxGroup from './props/checkboxGroup'\nimport CircleProgress from './props/circleProgress'\nimport Code from './props/code'\nimport CodeInput from './props/codeInput'\nimport Col from './props/col'\nimport Collapse from './props/collapse'\nimport CollapseItem from './props/collapseItem'\nimport ColumnNotice from './props/columnNotice'\nimport CountDown from './props/countDown'\nimport CountTo from './props/countTo'\nimport DatetimePicker from './props/datetimePicker'\nimport Divider from './props/divider'\nimport Empty from './props/empty'\nimport Form from './props/form'\nimport GormItem from './props/formItem'\nimport Gap from './props/gap'\nimport Grid from './props/grid'\nimport GridItem from './props/gridItem'\nimport Icon from './props/icon'\nimport Image from './props/image'\nimport IndexAnchor from './props/indexAnchor'\nimport IndexList from './props/indexList'\nimport Input from './props/input'\nimport Keyboard from './props/keyboard'\nimport Line from './props/line'\nimport LineProgress from './props/lineProgress'\nimport Link from './props/link'\nimport List from './props/list'\nimport ListItem from './props/listItem'\nimport LoadingIcon from './props/loadingIcon'\nimport LoadingPage from './props/loadingPage'\nimport Loadmore from './props/loadmore'\nimport Modal from './props/modal'\nimport Navbar from './props/navbar'\nimport NoNetwork from './props/noNetwork'\nimport NoticeBar from './props/noticeBar'\nimport Notify from './props/notify'\nimport NumberBox from './props/numberBox'\nimport NumberKeyboard from './props/numberKeyboard'\nimport Overlay from './props/overlay'\nimport Parse from './props/parse'\nimport Picker from './props/picker'\nimport Popup from './props/popup'\nimport Radio from './props/radio'\nimport RadioGroup from './props/radioGroup'\nimport Rate from './props/rate'\nimport ReadMore from './props/readMore'\nimport Row from './props/row'\nimport RowNotice from './props/rowNotice'\nimport ScrollList from './props/scrollList'\nimport Search from './props/search'\nimport Section from './props/section'\nimport Skeleton from './props/skeleton'\nimport Slider from './props/slider'\nimport StatusBar from './props/statusBar'\nimport Steps from './props/steps'\nimport StepsItem from './props/stepsItem'\nimport Sticky from './props/sticky'\nimport Subsection from './props/subsection'\nimport SwipeAction from './props/swipeAction'\nimport SwipeActionItem from './props/swipeActionItem'\nimport Swiper from './props/swiper'\nimport SwipterIndicator from './props/swipterIndicator'\nimport Switch from './props/switch'\nimport Tabbar from './props/tabbar'\nimport TabbarItem from './props/tabbarItem'\nimport Tabs from './props/tabs'\nimport Tag from './props/tag'\nimport Text from './props/text'\nimport Textarea from './props/textarea'\nimport Toast from './props/toast'\nimport Toolbar from './props/toolbar'\nimport Tooltip from './props/tooltip'\nimport Transition from './props/transition'\nimport Upload from './props/upload'\n\nconst {\n color\n} = config\n\nexport default {\n ...ActionSheet,\n ...Album,\n ...Alert,\n ...Avatar,\n ...AvatarGroup,\n ...Backtop,\n ...Badge,\n ...Button,\n ...Calendar,\n ...CarKeyboard,\n ...Cell,\n ...CellGroup,\n ...Checkbox,\n ...CheckboxGroup,\n ...CircleProgress,\n ...Code,\n ...CodeInput,\n ...Col,\n ...Collapse,\n ...CollapseItem,\n ...ColumnNotice,\n ...CountDown,\n ...CountTo,\n ...DatetimePicker,\n ...Divider,\n ...Empty,\n ...Form,\n ...GormItem,\n ...Gap,\n ...Grid,\n ...GridItem,\n ...Icon,\n ...Image,\n ...IndexAnchor,\n ...IndexList,\n ...Input,\n ...Keyboard,\n ...Line,\n ...LineProgress,\n ...Link,\n ...List,\n ...ListItem,\n ...LoadingIcon,\n ...LoadingPage,\n ...Loadmore,\n ...Modal,\n ...Navbar,\n ...NoNetwork,\n ...NoticeBar,\n ...Notify,\n ...NumberBox,\n ...NumberKeyboard,\n ...Overlay,\n ...Parse,\n ...Picker,\n ...Popup,\n ...Radio,\n ...RadioGroup,\n ...Rate,\n ...ReadMore,\n ...Row,\n ...RowNotice,\n ...ScrollList,\n ...Search,\n ...Section,\n ...Skeleton,\n ...Slider,\n ...StatusBar,\n ...Steps,\n ...StepsItem,\n ...Sticky,\n ...Subsection,\n ...SwipeAction,\n ...SwipeActionItem,\n ...Swiper,\n ...SwipterIndicator,\n ...Switch,\n ...Tabbar,\n ...TabbarItem,\n ...Tabs,\n ...Tag,\n ...Text,\n ...Textarea,\n ...Toast,\n ...Toolbar,\n ...Tooltip,\n ...Transition,\n ...Upload\n}\n", "// uniapp在H5中各API的z-index值如下:\r\n/**\r\n * actionsheet: 999\r\n * modal: 999\r\n * navigate: 998\r\n * tabbar: 998\r\n * toast: 999\r\n */\r\n\r\nexport default {\r\n toast: 10090,\r\n noNetwork: 10080,\r\n // popup包含popup,actionsheet,keyboard,picker的值\r\n popup: 10075,\r\n mask: 10070,\r\n navbar: 980,\r\n topTips: 975,\r\n sticky: 970,\r\n indexListSticky: 965\r\n}\n", "/**\n * 注意:\n * 此部分内容,在vue-cli模式下,需要在vue.config.js加入如下内容才有效:\n * module.exports = {\n * transpileDependencies: ['uview-v2']\n * }\n */\n\nlet platform = 'none'\n\n\nplatform = 'vue3'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nplatform = 'h5'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexport default platform\n", "// 看到此报错,是因为没有配置vue.config.js的【transpileDependencies】,详见:https://www.uviewui.com/components/npmSetting.html#_5-cli模式额外配置\nconst pleaseSetTranspileDependencies = {}, babelTest = pleaseSetTranspileDependencies?.test\n\n// 引入全局mixin\nimport mixin from './libs/mixin/mixin.js'\n// 小程序特有的mixin\nimport mpMixin from './libs/mixin/mpMixin.js'\n// 全局挂载引入http相关请求拦截插件\nimport Request from './libs/luch-request'\n\n// 路由封装\nimport route from './libs/util/route.js'\n// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制\nimport colorGradient from './libs/function/colorGradient.js'\n\n// 规则检验\nimport test from './libs/function/test.js'\n// 防抖方法\nimport debounce from './libs/function/debounce.js'\n// 节流方法\nimport throttle from './libs/function/throttle.js'\n// 公共文件写入的方法\nimport index from './libs/function/index.js'\n\n// 配置信息\nimport config from './libs/config/config.js'\n// props配置信息\nimport props from './libs/config/props.js'\n// 各个需要fixed的地方的z-index配置文件\nimport zIndex from './libs/config/zIndex.js'\n// 关于颜色的配置,特殊场景使用\nimport color from './libs/config/color.js'\n// 平台\nimport platform from './libs/function/platform'\n\nconst $u = {\n route,\n date: index.timeFormat, // 另名date\n colorGradient: colorGradient.colorGradient,\n hexToRgb: colorGradient.hexToRgb,\n rgbToHex: colorGradient.rgbToHex,\n colorToRgba: colorGradient.colorToRgba,\n test,\n type: ['primary', 'success', 'error', 'warning', 'info'],\n http: new Request(),\n config, // uView配置信息相关,比如版本号\n zIndex,\n debounce,\n throttle,\n mixin,\n mpMixin,\n props,\n ...index,\n color,\n platform\n}\n\n// $u挂载到uni对象上\nuni.$u = $u\n\nconst install = (Vue) => {\n // 时间格式化,同时两个名称,date和timeFormat\n // Vue.filter('timeFormat', (timestamp, format) => uni.$u.timeFormat(timestamp, format))\n // Vue.filter('date', (timestamp, format) => uni.$u.timeFormat(timestamp, format))\n // // 将多久以前的方法,注入到全局过滤器\n // Vue.filter('timeFrom', (timestamp, format) => uni.$u.timeFrom(timestamp, format))\n // 同时挂载到uni和Vue.prototype中\n\n // 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的\n Vue.config.globalProperties.$u = $u\n\t// 暂时兼容vue2的$nextTick写法\n Vue.config.globalProperties.$nextTick = (cb) => {\n cb();\n }\n Vue.mixin(mixin)\n\n}\n\nexport default {\n install\n}\n"], + "mappings": "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", + "names": ["url", "url", "url", "validateStatus", "forEach", "mergeKeys", "clone", "parent", "depth", "promise", "url", "url", "color", "func", "func", "range", "string", "deepMerge", "array", "times", "date", "timer", "number", "key", "pages", "color", "color", "color", "color", "color"] +} diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 0000000..fdd669d --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,22 @@ +{ + "systemParams": "win32-x64-83", + "modulesFolders": [ + "node_modules" + ], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [ + "uview-plus@^3.1.38" + ], + "lockfileEntries": { + "clipboard@^2.0.11": "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5", + "dayjs@^1.11.3": "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0", + "delegate@^3.1.2": "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166", + "good-listener@^1.2.2": "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50", + "select@^1.1.2": "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d", + "tiny-emitter@^2.0.0": "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423", + "uview-plus@^3.1.38": "https://registry.yarnpkg.com/uview-plus/-/uview-plus-3.1.38.tgz#6193350802ebca099dbbbed51b4bdb0a0df81068" + }, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/node_modules/clipboard/.babelrc.json b/node_modules/clipboard/.babelrc.json new file mode 100644 index 0000000..b442199 --- /dev/null +++ b/node_modules/clipboard/.babelrc.json @@ -0,0 +1,11 @@ +{ + "presets": [ + [ + "@babel/env", + { + "forceAllTransforms": true, + "modules": false + } + ] + ] +} diff --git a/node_modules/clipboard/.editorconfig b/node_modules/clipboard/.editorconfig new file mode 100644 index 0000000..202ee21 --- /dev/null +++ b/node_modules/clipboard/.editorconfig @@ -0,0 +1,22 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# http://editorconfig.org + +root = true + +[*] +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[{package.json,bower.json}] +indent_size = 2 diff --git a/node_modules/clipboard/.eslintignore b/node_modules/clipboard/.eslintignore new file mode 100644 index 0000000..8730547 --- /dev/null +++ b/node_modules/clipboard/.eslintignore @@ -0,0 +1,12 @@ +# Ignore artifacts: +dist + +lib +npm-debug.log +bower_components +node_modules +yarn-error.log +yarn.lock + +src/*.ts +/*.js diff --git a/node_modules/clipboard/.eslintrc.json b/node_modules/clipboard/.eslintrc.json new file mode 100644 index 0000000..a6890ef --- /dev/null +++ b/node_modules/clipboard/.eslintrc.json @@ -0,0 +1,24 @@ +{ + "env": { + "browser": true, + "es2021": true, + "mocha": true + }, + "extends": ["airbnb-base", "plugin:prettier/recommended"], + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": ["prettier"], + "rules": { + "prettier/prettier": "error", + "prefer-const": "off", + "camelcase": "off", + "no-underscore-dangle": "off", + "consistent-return": "off", + /* Remove the necessity to use this on classes */ + "class-methods-use-this": "off", + /* Enable variables declarations from shadowing variables declared in the outer scope */ + "no-shadow": "off" + } +} diff --git a/node_modules/clipboard/.github/ISSUE_TEMPLATE/bug_report.md b/node_modules/clipboard/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..99fe3e6 --- /dev/null +++ b/node_modules/clipboard/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,57 @@ +--- +name: 🐛 Bug Report +about: Submit a bug report to help us improve +labels: 'bug, needs triage' +--- + + + +## 🐛 Bug Report + +> Fork this [JSFiddle](https://jsfiddle.net/zenorocha/5kk0eysw/) and reproduce your issue. + +(A clear and concise description of what the issue is.) + +### Have you read the [Contributing Guidelines on issues](https://github.com/zenorocha/clipboard.js/blob/master/contributing.md)? + +(Write your answer here.) + +### Expected Behaviour + + + +I thought that by going to the page '...' and pressing the button '...' then '...' would happen. + +_Tip: Try to use screenshots, gifs, videos, always remember people better understand with a visual way._ + +### Actual Behaviour + +Instead of '...', what I saw was that '...' happened instead. + +### To Reproduce + +(Write your steps such as:) + +1. Step 1... +1. Step 2... +1. Step 3... + +### Browsers Affected + +I tested on all major browsers and only IE 11 does not work. + +### Operational System + +(Place here your Operational System.) diff --git a/node_modules/clipboard/.github/ISSUE_TEMPLATE/documentation.md b/node_modules/clipboard/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 0000000..adbcf5c --- /dev/null +++ b/node_modules/clipboard/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,13 @@ +--- +name: 📚 Documentation +about: Report an issue related to documentation +labels: 'documentation, needs triage' +--- + +## 📚 Documentation + +(A clear and concise description of what the issue is.) + +### Have you read the [Contributing Guidelines on issues](https://github.com/zenorocha/clipboard.js/blob/master/contributing.md)? + +(Write your answer here.) diff --git a/node_modules/clipboard/.github/ISSUE_TEMPLATE/proposal.md b/node_modules/clipboard/.github/ISSUE_TEMPLATE/proposal.md new file mode 100644 index 0000000..f7ce878 --- /dev/null +++ b/node_modules/clipboard/.github/ISSUE_TEMPLATE/proposal.md @@ -0,0 +1,26 @@ +--- +name: 💥 Proposal +about: Propose a non-trivial change to Clipboard.js +labels: 'proposal, needs triage' +--- + +## 💥 Proposal + +**Is your feature request related to a problem? Please describe** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Are you able to assist to bring the feature to reality?** +no | yes, I can... + +**Additional context** +Add any other context or screenshots about the feature request here. + +### Have you read the [Contributing Guidelines on issues](https://github.com/zenorocha/clipboard.js/blob/master/contributing.md)? + +(Write your answer here.) diff --git a/node_modules/clipboard/.github/PULL_REQUEST_TEMPLATE.md b/node_modules/clipboard/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..b2f50c8 --- /dev/null +++ b/node_modules/clipboard/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,35 @@ + + + + + +**What kind of change does this PR introduce?** (check at least one) + +- [ ] Bugfix +- [ ] Feature +- [ ] Code style update +- [ ] Refactor +- [ ] Build-related changes +- [ ] Other, please describe: + +**Does this PR introduce a breaking change?** (check one) + +- [ ] Yes +- [ ] No + +If yes, please describe the impact and migration path for existing applications: + +**The PR fulfills these requirements:** + +- [ ] It's submitted to the `dev` branch for v2.x (or to a previous version branch), _not_ the `master` branch +- [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix #xxx[,#xxx]`, where "xxx" is the issue number) +- [ ] New/updated tests are included + +If adding a **new feature**, the PR's description includes: + +- [ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it) + +**Other information:** diff --git a/node_modules/clipboard/.github/stale.yml b/node_modules/clipboard/.github/stale.yml new file mode 100644 index 0000000..efee0d1 --- /dev/null +++ b/node_modules/clipboard/.github/stale.yml @@ -0,0 +1,21 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 + +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 + +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + +# Label to use when marking an issue as stale +staleLabel: stale + +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/node_modules/clipboard/.github/workflows/publish.yml b/node_modules/clipboard/.github/workflows/publish.yml new file mode 100644 index 0000000..e0dadfc --- /dev/null +++ b/node_modules/clipboard/.github/workflows/publish.yml @@ -0,0 +1,47 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages + +name: publish + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 14 + - run: npm ci + - run: npm test + + publish-npm: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 14 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.npm_token}} + + publish-gpr: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 14 + registry-url: https://npm.pkg.github.com/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/node_modules/clipboard/.github/workflows/test.js.yml b/node_modules/clipboard/.github/workflows/test.js.yml new file mode 100644 index 0000000..04f169a --- /dev/null +++ b/node_modules/clipboard/.github/workflows/test.js.yml @@ -0,0 +1,34 @@ +# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: build + +on: + push: + branches: [master] + pull_request: + branches: [master] + +env: + FORCE_COLOR: 2 + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [10.x, 12.x, 14.x, 15.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + # For now is not possible to target LTS verssions =/ check progress here https://github.com/actions/setup-node/issues/26 + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + - run: npm ci + - run: npm run build --if-present + - run: npm run lint + - run: npm test diff --git a/node_modules/clipboard/.husky/pre-commit b/node_modules/clipboard/.husky/pre-commit new file mode 100644 index 0000000..d37daa0 --- /dev/null +++ b/node_modules/clipboard/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/node_modules/clipboard/.nvmrc b/node_modules/clipboard/.nvmrc new file mode 100644 index 0000000..8351c19 --- /dev/null +++ b/node_modules/clipboard/.nvmrc @@ -0,0 +1 @@ +14 diff --git a/node_modules/clipboard/.prettierignore b/node_modules/clipboard/.prettierignore new file mode 100644 index 0000000..0069bdb --- /dev/null +++ b/node_modules/clipboard/.prettierignore @@ -0,0 +1,9 @@ +# Ignore artifacts: +dist + +lib +npm-debug.log +bower_components +node_modules +yarn-error.log +yarn.lock diff --git a/node_modules/clipboard/.prettierrc.json b/node_modules/clipboard/.prettierrc.json new file mode 100644 index 0000000..471698f --- /dev/null +++ b/node_modules/clipboard/.prettierrc.json @@ -0,0 +1,9 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "arrowParens": "always" +} diff --git a/node_modules/clipboard/LICENSE b/node_modules/clipboard/LICENSE new file mode 100644 index 0000000..01cdf07 --- /dev/null +++ b/node_modules/clipboard/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Zeno Rocha + +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/clipboard/bower.json b/node_modules/clipboard/bower.json new file mode 100644 index 0000000..c0b31e4 --- /dev/null +++ b/node_modules/clipboard/bower.json @@ -0,0 +1,18 @@ +{ + "name": "clipboard", + "version": "2.0.11", + "description": "Modern copy to clipboard. No Flash. Just 3kb", + "license": "MIT", + "main": "dist/clipboard.js", + "ignore": [ + "/.*/", + "/demo/", + "/test/", + "/.*", + "/bower.json", + "/karma.conf.js", + "/src", + "/lib" + ], + "keywords": ["clipboard", "copy", "cut"] +} diff --git a/node_modules/clipboard/composer.json b/node_modules/clipboard/composer.json new file mode 100644 index 0000000..50a9405 --- /dev/null +++ b/node_modules/clipboard/composer.json @@ -0,0 +1,25 @@ +{ + "name": "zenorocha/clipboardjs", + "description": "Modern copy to clipboard. No Flash. Just 3kb gzipped https://clipboardjs.com", + "type": "component", + "homepage": "https://clipboardjs.com/", + "authors": [ + { + "name": "Zeno Rocha", + "homepage": "http://zenorocha.com/" + } + ], + "require": { + "oomphinc/composer-installers-extender": "*" + }, + "extra": { + "component": { + "scripts": [ + "dist/clipboard.js" + ], + "files": [ + "dist/clipboard.min.js" + ] + } + } +} diff --git a/node_modules/clipboard/contributing.md b/node_modules/clipboard/contributing.md new file mode 100644 index 0000000..9146adc --- /dev/null +++ b/node_modules/clipboard/contributing.md @@ -0,0 +1,29 @@ +# Contributing guide + +Want to contribute to Clipboard.js? Awesome! +There are many ways you can contribute, see below. + +## Opening issues + +Open an issue to report bugs or to propose new features. + +- Reporting bugs: describe the bug as clearly as you can, including steps to reproduce, what happened and what you were expecting to happen. Also include browser version, OS and other related software's (npm, Node.js, etc) versions when applicable. + +- Proposing features: explain the proposed feature, what it should do, why it is useful, how users should use it. Give us as much info as possible so it will be easier to discuss, access and implement the proposed feature. When you're unsure about a certain aspect of the feature, feel free to leave it open for others to discuss and find an appropriate solution. + +## Proposing pull requests + +Pull requests are very welcome. Note that if you are going to propose drastic changes, be sure to open an issue for discussion first, to make sure that your PR will be accepted before you spend effort coding it. + +Fork the Clipboard.js repository, clone it locally and create a branch for your proposed bug fix or new feature. Avoid working directly on the master branch. + +Implement your bug fix or feature, write tests to cover it and make sure all tests are passing (run a final `npm test` to make sure everything is correct). Then commit your changes, push your bug fix/feature branch to the origin (your forked repo) and open a pull request to the upstream (the repository you originally forked)'s master branch. + +## Documentation + +Documentation is extremely important and takes a fair deal of time and effort to write and keep updated. Please submit any and all improvements you can make to the repository's docs. + +## Known issues + +If you're using npm@3 you'll probably face some issues related to peerDependencies. +https://github.com/npm/npm/issues/9204 diff --git a/node_modules/clipboard/demo/constructor-node.html b/node_modules/clipboard/demo/constructor-node.html new file mode 100644 index 0000000..2780ebc --- /dev/null +++ b/node_modules/clipboard/demo/constructor-node.html @@ -0,0 +1,35 @@ + + + + + constructor-node + + + + +
+ Copy +
+ + + + + + + + diff --git a/node_modules/clipboard/demo/constructor-nodelist.html b/node_modules/clipboard/demo/constructor-nodelist.html new file mode 100644 index 0000000..31dd419 --- /dev/null +++ b/node_modules/clipboard/demo/constructor-nodelist.html @@ -0,0 +1,35 @@ + + + + + constructor-nodelist + + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/constructor-selector.html b/node_modules/clipboard/demo/constructor-selector.html new file mode 100644 index 0000000..33e3d56 --- /dev/null +++ b/node_modules/clipboard/demo/constructor-selector.html @@ -0,0 +1,34 @@ + + + + + constructor-selector + + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/function-target.html b/node_modules/clipboard/demo/function-target.html new file mode 100644 index 0000000..74b7460 --- /dev/null +++ b/node_modules/clipboard/demo/function-target.html @@ -0,0 +1,37 @@ + + + + + function-target + + + + + +
hello
+ + + + + + + + diff --git a/node_modules/clipboard/demo/function-text.html b/node_modules/clipboard/demo/function-text.html new file mode 100644 index 0000000..d7b00a5 --- /dev/null +++ b/node_modules/clipboard/demo/function-text.html @@ -0,0 +1,36 @@ + + + + + function-text + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/target-div.html b/node_modules/clipboard/demo/target-div.html new file mode 100644 index 0000000..61a039f --- /dev/null +++ b/node_modules/clipboard/demo/target-div.html @@ -0,0 +1,39 @@ + + + + + target-div + + + + +
hello
+ + + + + + + + + diff --git a/node_modules/clipboard/demo/target-input-number.html b/node_modules/clipboard/demo/target-input-number.html new file mode 100644 index 0000000..c537384 --- /dev/null +++ b/node_modules/clipboard/demo/target-input-number.html @@ -0,0 +1,37 @@ + + + + + target-input-number + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/target-input.html b/node_modules/clipboard/demo/target-input.html new file mode 100644 index 0000000..b34d26d --- /dev/null +++ b/node_modules/clipboard/demo/target-input.html @@ -0,0 +1,37 @@ + + + + + target-input + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/target-programmatic-copy.html b/node_modules/clipboard/demo/target-programmatic-copy.html new file mode 100644 index 0000000..0f00ded --- /dev/null +++ b/node_modules/clipboard/demo/target-programmatic-copy.html @@ -0,0 +1,28 @@ + + + + + target-programmatic-copy + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/target-programmatic-cut.html b/node_modules/clipboard/demo/target-programmatic-cut.html new file mode 100644 index 0000000..3b5e9f0 --- /dev/null +++ b/node_modules/clipboard/demo/target-programmatic-cut.html @@ -0,0 +1,28 @@ + + + + + target-programmatic-cut + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/target-textarea.html b/node_modules/clipboard/demo/target-textarea.html new file mode 100644 index 0000000..0ef462b --- /dev/null +++ b/node_modules/clipboard/demo/target-textarea.html @@ -0,0 +1,39 @@ + + + + + target-textarea + + + + + + + + + + + + + + diff --git a/node_modules/clipboard/demo/text-programmatic-copy.html b/node_modules/clipboard/demo/text-programmatic-copy.html new file mode 100644 index 0000000..7cb7ed0 --- /dev/null +++ b/node_modules/clipboard/demo/text-programmatic-copy.html @@ -0,0 +1,27 @@ + + + + + text-programmatic-copy + + + + + + + + + + + + + diff --git a/node_modules/clipboard/dist/clipboard.js b/node_modules/clipboard/dist/clipboard.js new file mode 100644 index 0000000..aeb826f --- /dev/null +++ b/node_modules/clipboard/dist/clipboard.js @@ -0,0 +1,890 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["ClipboardJS"] = factory(); + else + root["ClipboardJS"] = factory(); +})(this, function() { +return /******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 686: +/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + "default": function() { return /* binding */ clipboard; } +}); + +// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js +var tiny_emitter = __webpack_require__(279); +var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); +// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js +var listen = __webpack_require__(370); +var listen_default = /*#__PURE__*/__webpack_require__.n(listen); +// EXTERNAL MODULE: ./node_modules/select/src/select.js +var src_select = __webpack_require__(817); +var select_default = /*#__PURE__*/__webpack_require__.n(src_select); +;// CONCATENATED MODULE: ./src/common/command.js +/** + * Executes a given operation type. + * @param {String} type + * @return {Boolean} + */ +function command(type) { + try { + return document.execCommand(type); + } catch (err) { + return false; + } +} +;// CONCATENATED MODULE: ./src/actions/cut.js + + +/** + * Cut action wrapper. + * @param {String|HTMLElement} target + * @return {String} + */ + +var ClipboardActionCut = function ClipboardActionCut(target) { + var selectedText = select_default()(target); + command('cut'); + return selectedText; +}; + +/* harmony default export */ var actions_cut = (ClipboardActionCut); +;// CONCATENATED MODULE: ./src/common/create-fake-element.js +/** + * Creates a fake textarea element with a value. + * @param {String} value + * @return {HTMLElement} + */ +function createFakeElement(value) { + var isRTL = document.documentElement.getAttribute('dir') === 'rtl'; + var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS + + fakeElement.style.fontSize = '12pt'; // Reset box model + + fakeElement.style.border = '0'; + fakeElement.style.padding = '0'; + fakeElement.style.margin = '0'; // Move element out of screen horizontally + + fakeElement.style.position = 'absolute'; + fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically + + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + fakeElement.style.top = "".concat(yPosition, "px"); + fakeElement.setAttribute('readonly', ''); + fakeElement.value = value; + return fakeElement; +} +;// CONCATENATED MODULE: ./src/actions/copy.js + + + +/** + * Create fake copy action wrapper using a fake element. + * @param {String} target + * @param {Object} options + * @return {String} + */ + +var fakeCopyAction = function fakeCopyAction(value, options) { + var fakeElement = createFakeElement(value); + options.container.appendChild(fakeElement); + var selectedText = select_default()(fakeElement); + command('copy'); + fakeElement.remove(); + return selectedText; +}; +/** + * Copy action wrapper. + * @param {String|HTMLElement} target + * @param {Object} options + * @return {String} + */ + + +var ClipboardActionCopy = function ClipboardActionCopy(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + container: document.body + }; + var selectedText = ''; + + if (typeof target === 'string') { + selectedText = fakeCopyAction(target, options); + } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) { + // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange + selectedText = fakeCopyAction(target.value, options); + } else { + selectedText = select_default()(target); + command('copy'); + } + + return selectedText; +}; + +/* harmony default export */ var actions_copy = (ClipboardActionCopy); +;// CONCATENATED MODULE: ./src/actions/default.js +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + + +/** + * Inner function which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + * @param {Object} options + */ + +var ClipboardActionDefault = function ClipboardActionDefault() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + // Defines base properties passed from constructor. + var _options$action = options.action, + action = _options$action === void 0 ? 'copy' : _options$action, + container = options.container, + target = options.target, + text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'. + + if (action !== 'copy' && action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } // Sets the `target` property using an element that will be have its content copied. + + + if (target !== undefined) { + if (target && _typeof(target) === 'object' && target.nodeType === 1) { + if (action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } // Define selection strategy based on `text` property. + + + if (text) { + return actions_copy(text, { + container: container + }); + } // Defines which selection strategy based on `target` property. + + + if (target) { + return action === 'cut' ? actions_cut(target) : actions_copy(target, { + container: container + }); + } +}; + +/* harmony default export */ var actions_default = (ClipboardActionDefault); +;// CONCATENATED MODULE: ./src/clipboard.js +function clipboard_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return clipboard_typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + + + + + + +/** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + +function getAttributeValue(suffix, element) { + var attribute = "data-clipboard-".concat(suffix); + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); +} +/** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ + + +var Clipboard = /*#__PURE__*/function (_Emitter) { + _inherits(Clipboard, _Emitter); + + var _super = _createSuper(Clipboard); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + var _this; + + _classCallCheck(this, Clipboard); + + _this = _super.call(this); + + _this.resolveOptions(options); + + _this.listenClick(trigger); + + return _this; + } + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + _createClass(Clipboard, [{ + key: "resolveOptions", + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body; + } + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + + }, { + key: "listenClick", + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = listen_default()(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + + }, { + key: "onClick", + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + var action = this.action(trigger) || 'copy'; + var text = actions_default({ + action: action, + container: this.container, + target: this.target(trigger), + text: this.text(trigger) + }); // Fires an event based on the copy operation result. + + this.emit(text ? 'success' : 'error', { + action: action, + text: text, + trigger: trigger, + clearSelection: function clearSelection() { + if (trigger) { + trigger.focus(); + } + + window.getSelection().removeAllRanges(); + } + }); + } + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + + }, { + key: "defaultAction", + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + + }, { + key: "defaultTarget", + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + /** + * Allow fire programmatically a copy action + * @param {String|HTMLElement} target + * @param {Object} options + * @returns Text copied. + */ + + }, { + key: "defaultText", + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + /** + * Destroy lifecycle. + */ + + }, { + key: "destroy", + value: function destroy() { + this.listener.destroy(); + } + }], [{ + key: "copy", + value: function copy(target) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + container: document.body + }; + return actions_copy(target, options); + } + /** + * Allow fire programmatically a cut action + * @param {String|HTMLElement} target + * @returns Text cutted. + */ + + }, { + key: "cut", + value: function cut(target) { + return actions_cut(target); + } + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + + }, { + key: "isSupported", + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + return support; + } + }]); + + return Clipboard; +}((tiny_emitter_default())); + +/* harmony default export */ var clipboard = (Clipboard); + +/***/ }), + +/***/ 828: +/***/ (function(module) { + +var DOCUMENT_NODE_TYPE = 9; + +/** + * A polyfill for Element.matches() + */ +if (typeof Element !== 'undefined' && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; +} + +/** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ +function closest (element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if (typeof element.matches === 'function' && + element.matches(selector)) { + return element; + } + element = element.parentNode; + } +} + +module.exports = closest; + + +/***/ }), + +/***/ 438: +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var closest = __webpack_require__(828); + +/** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + } +} + +/** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === 'function') { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === 'function') { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === 'string') { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function (element) { + return _delegate(element, selector, type, callback, useCapture); + }); +} + +/** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ +function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + } +} + +module.exports = delegate; + + +/***/ }), + +/***/ 879: +/***/ (function(__unused_webpack_module, exports) { + +/** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ +exports.node = function(value) { + return value !== undefined + && value instanceof HTMLElement + && value.nodeType === 1; +}; + +/** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ +exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return value !== undefined + && (type === '[object NodeList]' || type === '[object HTMLCollection]') + && ('length' in value) + && (value.length === 0 || exports.node(value[0])); +}; + +/** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ +exports.string = function(value) { + return typeof value === 'string' + || value instanceof String; +}; + +/** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ +exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === '[object Function]'; +}; + + +/***/ }), + +/***/ 370: +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var is = __webpack_require__(879); +var delegate = __webpack_require__(438); + +/** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error('Missing required arguments'); + } + + if (!is.string(type)) { + throw new TypeError('Second argument must be a String'); + } + + if (!is.fn(callback)) { + throw new TypeError('Third argument must be a Function'); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } + else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } + else if (is.string(target)) { + return listenSelector(target, type, callback); + } + else { + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + } +} + +/** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + } +} + +/** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + } +} + +/** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); +} + +module.exports = listen; + + +/***/ }), + +/***/ 817: +/***/ (function(module) { + +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; + + +/***/ }), + +/***/ 279: +/***/ (function(module) { + +function E () { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) +} + +E.prototype = { + on: function (name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function (name, callback, ctx) { + var self = this; + function listener () { + self.off(name, listener); + callback.apply(ctx, arguments); + }; + + listener._ = callback + return this.on(name, listener, ctx); + }, + + emit: function (name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function (name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + (liveEvents.length) + ? e[name] = liveEvents + : delete e[name]; + + return this; + } +}; + +module.exports = E; +module.exports.TinyEmitter = E; + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ !function() { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function() { return module['default']; } : +/******/ function() { return module; }; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ !function() { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = function(exports, definition) { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ }(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ !function() { +/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } +/******/ }(); +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __webpack_require__(686); +/******/ })() +.default; +}); \ No newline at end of file diff --git a/node_modules/clipboard/dist/clipboard.min.js b/node_modules/clipboard/dist/clipboard.min.js new file mode 100644 index 0000000..1103f81 --- /dev/null +++ b/node_modules/clipboard/dist/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1 Modern copy to clipboard. No Flash. Just 3kb gzipped. + +Demo + +## Why + +Copying text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework. + +That's why clipboard.js exists. + +## Install + +You can get it on npm. + +``` +npm install clipboard --save +``` + +Or if you're not into package management, just [download a ZIP](https://github.com/zenorocha/clipboard.js/archive/master.zip) file. + +## Setup + +First, include the script located on the `dist` folder or load it from [a third-party CDN provider](https://github.com/zenorocha/clipboard.js/wiki/CDN-Providers). + +```html + +``` + +Now, you need to instantiate it by [passing a DOM selector](https://github.com/zenorocha/clipboard.js/blob/master/demo/constructor-selector.html#L18), [HTML element](https://github.com/zenorocha/clipboard.js/blob/master/demo/constructor-node.html#L16-L17), or [list of HTML elements](https://github.com/zenorocha/clipboard.js/blob/master/demo/constructor-nodelist.html#L18-L19). + +```js +new ClipboardJS('.btn'); +``` + +Internally, we need to fetch all elements that matches with your selector and attach event listeners for each one. But guess what? If you have hundreds of matches, this operation can consume a lot of memory. + +For this reason we use [event delegation](https://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) which replaces multiple event listeners with just a single listener. After all, [#perfmatters](https://twitter.com/hashtag/perfmatters). + +# Usage + +We're living a _declarative renaissance_, that's why we decided to take advantage of [HTML5 data attributes](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes) for better usability. + +### Copy text from another element + +A pretty common use case is to copy content from another element. You can do that by adding a `data-clipboard-target` attribute in your trigger element. + +The value you include on this attribute needs to match another's element selector. + +example-2 + +```html + + + + + +``` + +### Cut text from another element + +Additionally, you can define a `data-clipboard-action` attribute to specify if you want to either `copy` or `cut` content. + +If you omit this attribute, `copy` will be used by default. + +example-3 + +```html + + + + + +``` + +As you may expect, the `cut` action only works on `` or ` + + + + + + + + diff --git a/node_modules/select/demo/nested.html b/node_modules/select/demo/nested.html new file mode 100644 index 0000000..11e11f3 --- /dev/null +++ b/node_modules/select/demo/nested.html @@ -0,0 +1,34 @@ + + + + + non-editable + + + + +
+

Item 1

+

Item 2

+
    +
  • Item 3
  • +
  • Item 4
  • +
  • Item 5
  • +
+
+ + + + + + + + diff --git a/node_modules/select/demo/non-editable.html b/node_modules/select/demo/non-editable.html new file mode 100644 index 0000000..2c34be9 --- /dev/null +++ b/node_modules/select/demo/non-editable.html @@ -0,0 +1,26 @@ + + + + + non-editable + + + + +

Lorem ipsum

+ + + + + + + + diff --git a/node_modules/select/dist/select.js b/node_modules/select/dist/select.js new file mode 100644 index 0000000..c3bdfe2 --- /dev/null +++ b/node_modules/select/dist/select.js @@ -0,0 +1,47 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.select = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o +``` + +```js +var input = document.querySelector('input'); +var result = select(input); +``` + +### Browserify + +```js +var select = require('select'); +``` + +```js +var input = document.querySelector('input'); +var result = select(input); +``` + +## License + +[MIT License](http://zenorocha.mit-license.org/) © Zeno Rocha diff --git a/node_modules/select/src/select.js b/node_modules/select/src/select.js new file mode 100644 index 0000000..3e36485 --- /dev/null +++ b/node_modules/select/src/select.js @@ -0,0 +1,43 @@ +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; diff --git a/node_modules/select/test/select.js b/node_modules/select/test/select.js new file mode 100644 index 0000000..604dc94 --- /dev/null +++ b/node_modules/select/test/select.js @@ -0,0 +1,93 @@ +var select = require('../src/select'); + +describe('select editable elements', function() { + before(function() { + global.input = document.createElement('input'); + global.input.value = 'lorem ipsum'; + + global.textarea = document.createElement('textarea'); + global.textarea.value = 'lorem ipsum'; + + document.body.appendChild(global.input); + document.body.appendChild(global.textarea); + }); + + after(function() { + document.body.innerHTML = ''; + }); + + it('should return the selected text on input', function() { + var result = select(global.input); + assert.equal(result, global.input.value); + }); + + it('should return the selected text on textarea', function() { + var result = select(global.textarea); + assert.equal(result, global.textarea.value); + }); +}); + +describe('select non-editable element with no children', function() { + before(function() { + global.paragraph = document.createElement('p'); + global.paragraph.textContent = 'lorem ipsum'; + + document.body.appendChild(global.paragraph); + }); + + after(function() { + document.body.innerHTML = ''; + }); + + it('should return the selected text', function() { + var result = select(global.paragraph); + assert.equal(result, global.paragraph.textContent); + }); +}); + +describe('select non-editable element with child node', function() { + before(function() { + global.li = document.createElement('li'); + global.li.textContent = 'lorem ipsum'; + + global.ul = document.createElement('ul'); + global.ul.appendChild(global.li); + + document.body.appendChild(global.ul); + }); + + after(function() { + document.body.innerHTML = ''; + }); + + it('should return the selected text', function() { + var result = select(global.ul); + assert.equal(result, global.ul.textContent); + }); +}); + +describe('select non-editable svg element w/ multiple text children', function() { + before(function() { + global.text1 = document.createElement('text'); + global.text1.textContent = 'lorem ipsum'; + + global.text2 = document.createElement('text'); + global.text2.textContent = 'dolor zet'; + + global.svg = document.createElement('svg'); + global.svg.appendChild(global.text1); + global.svg.appendChild(global.text2); + + document.body.appendChild(global.svg); + }); + + after(function() { + document.body.innerHTML = ''; + }); + + it('should return the selected text', function() { + var result = select(global.svg); + assert.equal(result, global.text1.textContent + + global.text2.textContent); + }); +}); diff --git a/node_modules/tiny-emitter/LICENSE b/node_modules/tiny-emitter/LICENSE new file mode 100644 index 0000000..24f1024 --- /dev/null +++ b/node_modules/tiny-emitter/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2017 Scott Corgan + +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/tiny-emitter/README.md b/node_modules/tiny-emitter/README.md new file mode 100644 index 0000000..cd474cd --- /dev/null +++ b/node_modules/tiny-emitter/README.md @@ -0,0 +1,88 @@ +# tiny-emitter + +A tiny (less than 1k) event emitter library. + +## Install + +### npm + +``` +npm install tiny-emitter --save +``` + +## Usage + +```js +var Emitter = require('tiny-emitter'); +var emitter = new Emitter(); + +emitter.on('some-event', function (arg1, arg2, arg3) { + // +}); + +emitter.emit('some-event', 'arg1 value', 'arg2 value', 'arg3 value'); +``` + +Alternatively, you can skip the initialization step by requiring `tiny-emitter/instance` instead. This pulls in an already initialized emitter. + +```js +var emitter = require('tiny-emitter/instance'); + +emitter.on('some-event', function (arg1, arg2, arg3) { + // +}); + +emitter.emit('some-event', 'arg1 value', 'arg2 value', 'arg3 value'); +``` + +## Instance Methods + +### on(event, callback[, context]) + +Subscribe to an event + +* `event` - the name of the event to subscribe to +* `callback` - the function to call when event is emitted +* `context` - (OPTIONAL) - the context to bind the event callback to + +### once(event, callback[, context]) + +Subscribe to an event only **once** + +* `event` - the name of the event to subscribe to +* `callback` - the function to call when event is emitted +* `context` - (OPTIONAL) - the context to bind the event callback to + +### off(event[, callback]) + +Unsubscribe from an event or all events. If no callback is provided, it unsubscribes you from all events. + +* `event` - the name of the event to unsubscribe from +* `callback` - the function used when binding to the event + +### emit(event[, arguments...]) + +Trigger a named event + +* `event` - the event name to emit +* `arguments...` - any number of arguments to pass to the event subscribers + +## Test and Build + +Build (Tests, Browserifies, and minifies) + +``` +npm install +npm run build +``` + +Test + +``` +npm install +npm test +``` + +## License + +[MIT](https://github.com/scottcorgan/tiny-emitter/blob/master/LICENSE) diff --git a/node_modules/tiny-emitter/dist/tinyemitter.js b/node_modules/tiny-emitter/dist/tinyemitter.js new file mode 100644 index 0000000..6e25e05 --- /dev/null +++ b/node_modules/tiny-emitter/dist/tinyemitter.js @@ -0,0 +1,71 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.TinyEmitter = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o dist/tinyemitter.js -s TinyEmitter && echo 'Bundled'", + "minify": "node_modules/.bin/uglifyjs dist/tinyemitter.js -o dist/tinyemitter.min.js -m && echo 'Minified'", + "build": "npm test && npm run bundle && npm run minify", + "size": "node_modules/.bin/uglifyjs index.js -o minified.js -m && ls -l && rm minified.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/scottcorgan/tiny-emitter.git" + }, + "keywords": [ + "event", + "emitter", + "pubsub", + "tiny", + "events", + "bind" + ], + "author": "Scott Corgan", + "license": "MIT", + "bugs": { + "url": "https://github.com/scottcorgan/tiny-emitter/issues" + }, + "devDependencies": { + "@tap-format/spec": "0.2.0", + "browserify": "11.2.0", + "tape": "4.2.1", + "testling": "1.7.1", + "uglify-js": "2.5.0" + }, + "testling": { + "files": [ + "test/index.js" + ], + "browsers": [ + "iexplore/10.0", + "iexplore/9.0", + "firefox/16..latest", + "chrome/22..latest", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/tiny-emitter/test/index.js b/node_modules/tiny-emitter/test/index.js new file mode 100644 index 0000000..7f95f62 --- /dev/null +++ b/node_modules/tiny-emitter/test/index.js @@ -0,0 +1,217 @@ +var Emitter = require('../index'); +var emitter = require('../instance'); +var test = require('tape'); + +test('subscribes to an event', function (t) { + var emitter = new Emitter(); + emitter.on('test', function () {}); + + t.equal(emitter.e.test.length, 1, 'subscribed to event'); + t.end(); +}); + +test('subscribes to an event with context', function (t) { + var emitter = new Emitter(); + var context = { + contextValue: true + }; + + emitter.on('test', function () { + t.ok(this.contextValue, 'is in context'); + t.end(); + }, context); + + emitter.emit('test'); +}); + +test('subscibes only once to an event', function (t) { + var emitter = new Emitter(); + + emitter.once('test', function () { + t.notOk(emitter.e.test, 'removed event from list'); + t.end(); + }); + + emitter.emit('test'); +}); + +test('keeps context when subscribed only once', function (t) { + var emitter = new Emitter(); + var context = { + contextValue: true + }; + + emitter.once('test', function () { + t.ok(this.contextValue, 'is in context'); + t.notOk(emitter.e.test, 'not subscribed anymore'); + t.end(); + }, context); + + emitter.emit('test'); +}); + +test('emits an event', function (t) { + var emitter = new Emitter(); + + emitter.on('test', function () { + t.ok(true, 'triggered event'); + t.end(); + }); + + emitter.emit('test'); +}); + +test('passes all arguments to event listener', function (t) { + var emitter = new Emitter(); + + emitter.on('test', function (arg1, arg2) { + t.equal(arg1, 'arg1', 'passed the first argument'); + t.equal(arg2, 'arg2', 'passed the second argument'); + t.end(); + }); + + emitter.emit('test', 'arg1', 'arg2'); +}); + +test('unsubscribes from all events with name', function (t) { + var emitter = new Emitter(); + emitter.on('test', function () { + t.fail('should not get called'); + }); + emitter.off('test'); + emitter.emit('test') + + process.nextTick(function () { + t.end(); + }); +}); + +test('unsubscribes single event with name and callback', function (t) { + var emitter = new Emitter(); + var fn = function () { + t.fail('should not get called'); + } + + emitter.on('test', fn); + emitter.off('test', fn); + emitter.emit('test') + + process.nextTick(function () { + t.end(); + }); +}); + +// Test added by https://github.com/lazd +// From PR: https://github.com/scottcorgan/tiny-emitter/pull/6 +test('unsubscribes single event with name and callback when subscribed twice', function (t) { + var emitter = new Emitter(); + var fn = function () { + t.fail('should not get called'); + }; + + emitter.on('test', fn); + emitter.on('test', fn); + + emitter.off('test', fn); + emitter.emit('test'); + + process.nextTick(function () { + t.notOk(emitter.e['test'], 'removes all events'); + t.end(); + }); +}); + +test('unsubscribes single event with name and callback when subscribed twice out of order', function (t) { + var emitter = new Emitter(); + var calls = 0; + var fn = function () { + t.fail('should not get called'); + }; + var fn2 = function () { + calls++; + }; + + emitter.on('test', fn); + emitter.on('test', fn2); + emitter.on('test', fn); + emitter.off('test', fn); + emitter.emit('test'); + + process.nextTick(function () { + t.equal(calls, 1, 'callback was called'); + t.end(); + }); +}); + +test('removes an event inside another event', function (t) { + var emitter = new Emitter(); + + emitter.on('test', function () { + t.equal(emitter.e.test.length, 1, 'event is still in list'); + + emitter.off('test'); + + t.notOk(emitter.e.test, 0, 'event is gone from list'); + t.end(); + }); + + emitter.emit('test'); +}); + +test('event is emitted even if unsubscribed in the event callback', function (t) { + var emitter = new Emitter(); + var calls = 0; + var fn = function () { + calls += 1; + emitter.off('test', fn); + }; + + emitter.on('test', fn); + + emitter.on('test', function () { + calls += 1; + }); + + emitter.on('test', function () { + calls += 1; + }); + + process.nextTick(function () { + t.equal(calls, 3, 'all callbacks were called'); + t.end(); + }); + + emitter.emit('test'); +}); + +test('calling off before any events added does nothing', function (t) { + var emitter = new Emitter(); + emitter.off('test', function () {}); + t.end(); +}); + +test('emitting event that has not been subscribed to yet', function (t) { + var emitter = new Emitter(); + + emitter.emit('some-event', 'some message'); + t.end(); +}); + +test('unsubscribes single event with name and callback which was subscribed once', function (t) { + var emitter = new Emitter(); + var fn = function () { + t.fail('event not unsubscribed'); + } + + emitter.once('test', fn); + emitter.off('test', fn); + emitter.emit('test'); + + t.end(); +}); + +test('exports an instance', function (t) { + t.ok(emitter, 'exports an instance') + t.ok(emitter instanceof Emitter, 'an instance of the Emitter class'); + t.end(); +}); diff --git a/node_modules/tiny-emitter/yarn.lock b/node_modules/tiny-emitter/yarn.lock new file mode 100644 index 0000000..730a024 --- /dev/null +++ b/node_modules/tiny-emitter/yarn.lock @@ -0,0 +1,1857 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@tap-format/exit@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tap-format/exit/-/exit-0.2.0.tgz#b58736bc55d30802c012c5adfca51b47040310cd" + dependencies: + ramda "^0.18.0" + rx "^4.0.7" + +"@tap-format/failures@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tap-format/failures/-/failures-0.2.0.tgz#bb6f5edc3bc3c57c62885bc7c214cc7abdfc2a07" + dependencies: + chalk "^1.1.1" + diff "^2.2.1" + figures "^1.4.0" + ramda "^0.18.0" + rx "^4.0.7" + +"@tap-format/parser@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tap-format/parser/-/parser-0.2.0.tgz#bdc1d95e694781157593283bb3c3fec132a3115d" + dependencies: + duplexer "^0.1.1" + js-yaml "^3.4.6" + ramda "^0.18.0" + readable-stream "^2.0.4" + rx "^4.0.7" + rx-node "^1.0.1" + split "^1.0.0" + +"@tap-format/results@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tap-format/results/-/results-0.2.0.tgz#192d64ac41f146fa2722db1c0a22ed80478f54fd" + dependencies: + chalk "^1.1.1" + hirestime "^1.0.6" + pretty-ms "^2.1.0" + rx "^4.0.7" + +"@tap-format/spec@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@tap-format/spec/-/spec-0.2.0.tgz#93f7d2f0dcefe526b4776800b9bd7f80db5aaec7" + dependencies: + "@tap-format/exit" "0.2.0" + "@tap-format/failures" "0.2.0" + "@tap-format/parser" "0.2.0" + "@tap-format/results" "0.2.0" + chalk "^1.1.1" + figures "^1.4.0" + rx "^4.0.7" + +Base64@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028" + +JSONStream@^1.0.3: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +JSONStream@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.6.4.tgz#4b2c8063f8f512787b2375f7ee9db69208fa2dcb" + dependencies: + jsonparse "0.0.5" + through "~2.2.7" + +JSONStream@~0.7.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.7.4.tgz#734290e41511eea7c2cfe151fbf9a563a97b9786" + dependencies: + jsonparse "0.0.5" + through ">=2.2.7 <3" + +acorn-node@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b" + dependencies: + acorn "^5.4.1" + xtend "^4.0.1" + +acorn@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.2.1, acorn@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.1.2.tgz#adaa04c46bb58c6dd1f294da3eb26e6228eb6e44" + dependencies: + util "0.10.3" + +assert@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.3.0.tgz#03939a622582a812cc202320a0b9a56c9b815849" + dependencies: + util "0.10.3" + +astw@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" + dependencies: + acorn "^4.0.3" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.2.tgz#024f0f72afa25b75f9c0ee73cd4f55ec1bed9784" + +base64-js@0.0.8, base64-js@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +bops@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/bops/-/bops-0.0.6.tgz#082d1d55fa01e60dbdc2ebc2dba37f659554cf3a" + dependencies: + base64-js "0.0.2" + to-utf8 "0.0.1" + +bouncy@~3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/bouncy/-/bouncy-3.2.2.tgz#82ab4ad7beae05890eed54b9af3c45394b185dc7" + dependencies: + optimist "~0.3.5" + through "~2.3.4" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browser-launcher@~0.3.2: + version "0.3.5" + resolved "https://registry.yarnpkg.com/browser-launcher/-/browser-launcher-0.3.5.tgz#d9a3663fa064d8155044991c00e61dbcb6730a16" + dependencies: + headless "~0.1.3" + merge "~1.0.0" + minimist "0.0.5" + mkdirp "~0.3.3" + plist "0.2.1" + xtend "^4.0.0" + +browser-pack@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-5.0.1.tgz#4197719b20c6e0aaa09451c5111e53efb6fbc18d" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.6.1" + defined "^1.0.0" + through2 "^1.0.0" + umd "^3.0.0" + +browser-pack@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-2.0.1.tgz#5d1c527f56c582677411c4db2a128648ff6bf150" + dependencies: + JSONStream "~0.6.4" + combine-source-map "~0.3.0" + through "~2.3.4" + +browser-resolve@^1.7.0, browser-resolve@^1.7.1: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +browser-resolve@~1.2.1, browser-resolve@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.2.4.tgz#59ae7820a82955ecd32f5fb7c468ac21c4723806" + dependencies: + resolve "0.6.3" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserify@11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-11.2.0.tgz#a11bb9dd209d79572b813f7eeeaf828a5f5c0e4e" + dependencies: + JSONStream "^1.0.3" + assert "~1.3.0" + browser-pack "^5.0.0" + browser-resolve "^1.7.1" + browserify-zlib "~0.1.2" + buffer "^3.0.0" + builtins "~0.0.3" + commondir "0.0.1" + concat-stream "~1.4.1" + console-browserify "^1.1.0" + constants-browserify "~0.0.1" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^1.3.7" + domain-browser "~1.1.0" + duplexer2 "~0.0.2" + events "~1.0.0" + glob "^4.0.5" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "~0.0.0" + inherits "~2.0.1" + insert-module-globals "^6.4.1" + isarray "0.0.1" + labeled-stream-splicer "^1.0.0" + module-deps "^3.7.11" + os-browserify "~0.1.1" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^1.1.1" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "~0.0.1" + stream-browserify "^2.0.0" + stream-http "^1.2.0" + string_decoder "~0.10.0" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^1.0.0" + timers-browserify "^1.0.1" + tty-browserify "~0.0.0" + url "~0.10.1" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^4.0.0" + +browserify@3.x.x: + version "3.46.1" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-3.46.1.tgz#2c2e4a7f2f408178e78c223b5b57b37c2185ad8e" + dependencies: + JSONStream "~0.7.1" + assert "~1.1.0" + browser-pack "~2.0.0" + browser-resolve "~1.2.1" + browserify-zlib "~0.1.2" + buffer "~2.1.4" + builtins "~0.0.3" + commondir "0.0.1" + concat-stream "~1.4.1" + console-browserify "~1.0.1" + constants-browserify "~0.0.1" + crypto-browserify "~1.0.9" + deep-equal "~0.1.0" + defined "~0.0.0" + deps-sort "~0.1.1" + derequire "~0.8.0" + domain-browser "~1.1.0" + duplexer "~0.1.1" + events "~1.0.0" + glob "~3.2.8" + http-browserify "~1.3.1" + https-browserify "~0.0.0" + inherits "~2.0.1" + insert-module-globals "~6.0.0" + module-deps "~2.0.0" + os-browserify "~0.1.1" + parents "~0.0.1" + path-browserify "~0.0.0" + process "^0.7.0" + punycode "~1.2.3" + querystring-es3 "0.2.0" + resolve "~0.6.1" + shallow-copy "0.0.1" + shell-quote "~0.0.1" + stream-browserify "~0.1.0" + stream-combiner "~0.0.2" + string_decoder "~0.0.0" + subarg "0.0.1" + syntax-error "~1.1.0" + through2 "~0.4.1" + timers-browserify "~1.0.1" + tty-browserify "~0.0.0" + umd "~2.0.0" + url "~0.10.1" + util "~0.10.1" + vm-browserify "~0.0.1" + xtend "^3.0.0" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^3.0.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" + dependencies: + base64-js "0.0.8" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@~2.1.4: + version "2.1.13" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-2.1.13.tgz#c88838ebf79f30b8b4a707788470bea8a62c2355" + dependencies: + base64-js "~0.0.4" + ieee754 "~1.1.1" + +builtin-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-1.0.0.tgz#30637ee262978ac07174e16d7f82f0ad06e085ad" + +builtins@~0.0.3: + version "0.0.7" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a" + +callsite@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +combine-source-map@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.3.0.tgz#d9e74f593d9cd43807312cb5d846d451efaa9eb7" + dependencies: + convert-source-map "~0.3.0" + inline-source-map "~0.3.0" + source-map "~0.1.31" + +combine-source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.6.1.tgz#9b4a09c316033d768e0f11e029fa2730e079ad96" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.5.0" + lodash.memoize "~3.0.3" + source-map "~0.4.2" + +commondir@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-0.0.1.tgz#89f00fdcd51b519c578733fec563e6a6da7f5be2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-0.1.1.tgz#d7f4e278b90cfc4f0f3ef77fe4c03b40eb3f7900" + +concat-stream@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.0.1.tgz#018b18bc1c7d073a2dc82aa48442341a2c4dd79f" + dependencies: + bops "0.0.6" + +concat-stream@~1.4.1, concat-stream@~1.4.5: + version "1.4.10" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.4.10.tgz#acc3bbf5602cb8cc980c6ac840fa7d8603e3ef36" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.9" + typedarray "~0.0.5" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-browserify@~1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.0.3.tgz#d3898d2c3a93102f364197f8874b4f92b5286a8e" + +constants-browserify@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz#92577db527ba6c4cf0a4568d84bc031f441e21f2" + +convert-source-map@~0.3.0: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +crypto-browserify@^3.0.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-browserify@~1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-1.0.9.tgz#cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-equal@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.0.0.tgz#99679d3bbd047156fcd450d3d01eeb9068691e83" + +deep-equal@~0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz#b246c2b80a570a47c11be1d9bd1070ec878b87ce" + +deep-equal@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +defined@^1.0.0, defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +defined@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e" + +deps-sort@^1.3.7: + version "1.3.9" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-1.3.9.tgz#29dfff53e17b36aecae7530adbbbf622c2ed1a71" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^1.0.0" + +deps-sort@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-0.1.2.tgz#daa2fb614a17c9637d801e2f55339ae370f3611a" + dependencies: + JSONStream "~0.6.4" + minimist "~0.0.1" + through "~2.3.4" + +derequire@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/derequire/-/derequire-0.8.0.tgz#c1f7f1da2cede44adede047378f03f444e9c4c0d" + dependencies: + esprima-fb "^3001.1.0-dev-harmony-fb" + esrefactor "~0.1.0" + estraverse "~1.5.0" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detective@^4.0.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + +detective@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-3.1.0.tgz#77782444ab752b88ca1be2e9d0a0395f1da25eed" + dependencies: + escodegen "~1.1.0" + esprima-fb "3001.1.0-dev-harmony-fb" + +diff@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +domain-browser@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +duplexer2@0.0.2, duplexer2@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +ecstatic@~0.4.5: + version "0.4.13" + resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-0.4.13.tgz#9cb6eaffe211b9c84efb3f553cde2c3002717b29" + dependencies: + ent "0.0.x" + mime "1.2.x" + optimist "~0.3.5" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +ent@0.0.x, ent@~0.0.5: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ent/-/ent-0.0.7.tgz#835d4e7f9e7a8d4921c692e9010ec976da5e9949" + +es-abstract@^1.5.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.1.0.tgz#c663923f6e20aad48d0c0fa49f31c6d4f49360cf" + dependencies: + esprima "~1.0.4" + estraverse "~1.5.0" + esutils "~1.0.0" + optionalDependencies: + source-map "~0.1.30" + +escope@~0.0.13: + version "0.0.16" + resolved "https://registry.yarnpkg.com/escope/-/escope-0.0.16.tgz#418c7a0afca721dafe659193fd986283e746538f" + dependencies: + estraverse ">= 0.0.2" + +esprima-fb@3001.1.0-dev-harmony-fb, esprima-fb@^3001.1.0-dev-harmony-fb: + version "3001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz#b77d37abcd38ea0b77426bb8bc2922ce6b426411" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esprima@~1.0.2, esprima@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + +esrefactor@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/esrefactor/-/esrefactor-0.1.0.tgz#d142795a282339ab81e936b5b7a21b11bf197b13" + dependencies: + escope "~0.0.13" + esprima "~1.0.2" + estraverse "~0.0.4" + +"estraverse@>= 0.0.2": + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-0.0.4.tgz#01a0932dfee574684a598af5a67c3bf9b6428db2" + +estraverse@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" + +esutils@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" + +events@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/events/-/events-1.0.2.tgz#75849dcfe93d10fb057c30055afdbd51d06a8e24" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +figures@^1.4.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +function-bind@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.0.2.tgz#c2873b69c5e6d7cefae47d2555172926c8c2e05e" + +glob@^4.0.5: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@~3.2.1, glob@~3.2.8: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +glob@~5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has@^1.0.0, has@^1.0.1, has@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +headless@~0.1.3: + version "0.1.7" + resolved "https://registry.yarnpkg.com/headless/-/headless-0.1.7.tgz#6e62fae668947f88184d5c156ede7c5695a7e9c8" + +hirestime@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/hirestime/-/hirestime-1.0.7.tgz#2d5271ea84356cec3f25da8c56a9402f8fc0a700" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +htmlescape@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + +http-browserify@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.3.2.tgz#b562c34479349a690d7a6597df495aefa8c604f5" + dependencies: + Base64 "~0.2.0" + inherits "~2.0.1" + +https-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +ieee754@^1.1.4, ieee754@~1.1.1: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +inline-source-map@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.3.1.tgz#a528b514e689fce90db3089e870d92f527acb5eb" + dependencies: + source-map "~0.3.0" + +inline-source-map@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.5.0.tgz#4a4c5dd8e4fb5e9b3cda60c822dfadcaee66e0af" + dependencies: + source-map "~0.4.0" + +insert-module-globals@^6.4.1: + version "6.6.3" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.6.3.tgz#20638e29a30f9ed1ca2e3a825fbc2cba5246ddfc" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.6.1" + concat-stream "~1.4.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + process "~0.11.0" + through2 "^1.0.0" + xtend "^4.0.0" + +insert-module-globals@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-6.0.0.tgz#ee8aeb9dee16819e33aa14588a558824af0c15dc" + dependencies: + JSONStream "~0.7.1" + concat-stream "~1.4.1" + lexical-scope "~1.1.0" + process "~0.6.0" + through "~2.3.4" + xtend "^3.0.0" + +is-buffer@^1.1.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-finite@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +isarray@0.0.1, isarray@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +js-yaml@^3.4.6: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" + dependencies: + jsonify "~0.0.0" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonparse@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + +labeled-stream-splicer@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-1.0.2.tgz#4615331537784981e8fd264e1f3a434c4e0ddd65" + dependencies: + inherits "^2.0.1" + isarray "~0.0.1" + stream-splicer "^1.1.0" + +lexical-scope@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" + dependencies: + astw "^2.0.0" + +lexical-scope@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.1.1.tgz#debac1067435f1359d90fcfd9e94bcb2ee47b2bf" + dependencies: + astw "^2.0.0" + +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +merge@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.0.0.tgz#b443ab46d837c491e6222056ab0f7933ecb3568f" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime@1.2.x: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +"minimatch@2 || 3": + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" + +minimist@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1, minimist@~0.0.7, minimist@~0.0.9: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@~0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + +module-deps@^3.7.11: + version "3.9.1" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-3.9.1.tgz#ea75caf9199090d25b0d5512b5acacb96e7f87f3" + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + concat-stream "~1.4.5" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "0.0.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^1.1.13" + resolve "^1.1.3" + stream-combiner2 "~1.0.0" + subarg "^1.0.0" + through2 "^1.0.0" + xtend "^4.0.0" + +module-deps@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-2.0.6.tgz#b999321c73ac33580f00712c0f3075fdca42563f" + dependencies: + JSONStream "~0.7.1" + browser-resolve "~1.2.4" + concat-stream "~1.4.5" + detective "~3.1.0" + duplexer2 "0.0.2" + inherits "~2.0.1" + minimist "~0.0.9" + parents "0.0.2" + readable-stream "^1.0.27-1" + resolve "~0.6.3" + stream-combiner "~0.1.0" + through2 "~0.4.1" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-inspect@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-0.1.3.tgz#d05a65c2e34fe8225d9fda2e484e4e47b7e2f490" + dependencies: + tape "~1.0.4" + +object-inspect@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.0.2.tgz#a97885b553e575eb4009ebc09bdda9b1cd21979a" + +object-keys@^1.0.4, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +optimist@~0.3.5: + version "0.3.7" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" + dependencies: + wordwrap "~0.0.2" + +optimist@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.5.2.tgz#85c8c1454b3315e4a78947e857b1df033450bfbc" + dependencies: + wordwrap "~0.0.2" + +ordered-emitter@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ordered-emitter/-/ordered-emitter-0.1.1.tgz#aa20bdafbdcc1631834a350f68b4ef8eb34eed7b" + +os-browserify@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +parents@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/parents/-/parents-0.0.2.tgz#67147826e497d40759aaf5ba4c99659b6034d302" + +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" + dependencies: + path-platform "~0.11.15" + +parents@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parents/-/parents-0.0.3.tgz#fa212f024d9fa6318dbb6b4ce676c8be493b9c43" + dependencies: + path-platform "^0.0.1" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-ms@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" + +path-browserify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-platform@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.0.1.tgz#b5585d7c3c463d89aa0060d86611cf1afd617e2a" + +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +plist@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/plist/-/plist-0.2.1.tgz#f3a3de07885d773e66d8a96782f1bec28cf2b2d0" + dependencies: + sax "0.1.x" + +plur@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156" + +pretty-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc" + dependencies: + is-finite "^1.0.1" + parse-ms "^1.0.0" + plur "^1.0.0" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/process/-/process-0.7.0.tgz#c52208161a34adf3812344ae85d3e6150469389d" + +process@~0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + +process@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/process/-/process-0.6.0.tgz#7dd9be80ffaaedd4cb628f1827f1cbab6dc0918f" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +punycode@~1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.2.4.tgz#54008ac972aec74175def9cba6df7fa9d3918740" + +querystring-es3@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.0.tgz#c365a08a69c443accfeb3a9deab35e3f0abaa476" + +querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +ramda@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.18.0.tgz#c6e3c5d4b9ab1f7906727fdeeb039152a85d4db3" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +read-only-stream@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-1.1.1.tgz#5da77c799ed1388d3ef88a18471bb5924f8a0ba1" + dependencies: + readable-stream "^1.0.31" + readable-wrap "^1.0.0" + +"readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.0.27-1, readable-stream@^1.0.31, readable-stream@^1.1.13, readable-stream@^1.1.13-1, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.2, readable-stream@^2.0.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@~1.0.17: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-wrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/readable-wrap/-/readable-wrap-1.0.0.tgz#3b5a211c631e12303a54991c806c17e7ae206bff" + dependencies: + readable-stream "^1.1.13-1" + +resolve@0.6.3, resolve@~0.6.1, resolve@~0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.3, resolve@^1.1.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +resolve@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.3.1.tgz#34c63447c664c70598d1c9b126fc43b2a24310a4" + +resolve@~0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.4.3.tgz#dcadad202e7cacc2467e3a38800211f42f9c13df" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + dependencies: + through "~2.3.4" + +rfile@~1.0, rfile@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rfile/-/rfile-1.0.0.tgz#59708cf90ca1e74c54c3cfc5c36fdb9810435261" + dependencies: + callsite "~1.0.0" + resolve "~0.3.0" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +ruglify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ruglify/-/ruglify-1.0.0.tgz#dc8930e2a9544a274301cc9972574c0d0986b675" + dependencies: + rfile "~1.0" + uglify-js "~2.2" + +rx-node@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/rx-node/-/rx-node-1.0.2.tgz#151240725a79e857360ab06cc626799965e094de" + dependencies: + rx "*" + +rx@*, rx@^4.0.7: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +sax@0.1.x: + version "0.1.5" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.1.5.tgz#d1829a6120fa01665eb4dbff6c43f29fd6d61471" + +sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: + version "2.4.10" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-copy@0.0.1, shallow-copy@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" + dependencies: + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" + +shell-quote@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-0.0.1.tgz#1a41196f3c0333c482323593d6886ecf153dd986" + +shell-quote@~1.3.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.3.3.tgz#07b8826f427c052511e8b5627639e172596e8e4b" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +source-map@0.1.34: + version "0.1.34" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.1.30, source-map@~0.1.31, source-map@~0.1.7: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.3.0.tgz#8586fb9a5a005e5b501e21cd18b6f21b457ad1f9" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.4.0, source-map@~0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + dependencies: + through "2" + +split@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/split/-/split-0.1.2.tgz#f0710744c453d551fc7143ead983da6014e336cc" + dependencies: + through "1" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +stream-browserify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-browserify@~0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-0.1.3.tgz#95cf1b369772e27adaf46352265152689c6c4be9" + dependencies: + inherits "~2.0.1" + process "~0.5.1" + +stream-combiner2@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.0.2.tgz#ba72a6b50cbfabfa950fc8bc87604bd01eb60671" + dependencies: + duplexer2 "~0.0.2" + through2 "~0.5.1" + +stream-combiner@~0.0.2: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-combiner@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.1.0.tgz#0dc389a3c203f8f4d56368f95dde52eb9269b5be" + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + +stream-http@^1.2.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-1.7.1.tgz#d3d2a6e14c36a38b9dafb199aee7bbc570519978" + dependencies: + builtin-status-codes "^1.0.0" + foreach "^2.0.5" + indexof "0.0.1" + inherits "^2.0.1" + object-keys "^1.0.4" + xtend "^4.0.0" + +stream-splicer@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-1.3.2.tgz#3c0441be15b9bf4e226275e6dc83964745546661" + dependencies: + indexof "0.0.1" + inherits "^2.0.1" + isarray "~0.0.1" + readable-stream "^1.1.13-1" + readable-wrap "^1.0.0" + through2 "^1.0.0" + +string.prototype.trim@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + +string_decoder@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.0.1.tgz#f5472d0a8d1650ec823752d24e6fd627b39bf141" + +string_decoder@~0.10.0, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +subarg@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-0.0.1.tgz#3d56b07dacfbc45bbb63f7672b43b63e46368e3a" + dependencies: + minimist "~0.0.7" + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +syntax-error@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" + dependencies: + acorn-node "^1.2.0" + +syntax-error@~1.1.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz#b4549706d386cc1c1dc7c2423f18579b6cade710" + dependencies: + acorn "^2.7.0" + +tap-finished@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tap-finished/-/tap-finished-0.0.1.tgz#08b5b543fdc04830290c6c561279552e71c4bd67" + dependencies: + tap-parser "~0.2.0" + through "~2.3.4" + +tap-parser@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-0.2.1.tgz#8e1e823f2114ee21d032e2f31e4fb642a296f50b" + dependencies: + split "~0.1.2" + +tape@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.2.1.tgz#1a0ed63cc86bfaa84ebb3bb311f09d8520416216" + dependencies: + deep-equal "~1.0.0" + defined "~1.0.0" + function-bind "~1.0.2" + glob "~5.0.3" + has "~1.0.1" + inherits "~2.0.1" + object-inspect "~1.0.0" + resumer "~0.0.0" + string.prototype.trim "^1.1.1" + through "~2.3.4" + +tape@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tape/-/tape-1.0.4.tgz#e2e8e5c6dd3f00fdc2a5e4514f62fc221e59f9c4" + dependencies: + deep-equal "~0.0.0" + defined "~0.0.0" + jsonify "~0.0.0" + through "~2.3.4" + +testling@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/testling/-/testling-1.7.1.tgz#bfcfa877c8b15dd28d920692c03d8d64ca47874e" + dependencies: + bouncy "~3.2.0" + browser-launcher "~0.3.2" + browserify "3.x.x" + concat-stream "~1.0.0" + ecstatic "~0.4.5" + ent "~0.0.5" + glob "~3.2.1" + jsonify "~0.0.0" + object-inspect "~0.1.3" + optimist "~0.5.2" + resolve "~0.4.0" + shallow-copy "~0.0.0" + shell-quote "~1.3.1" + tap-finished "~0.0.0" + win-spawn "~2.0.0" + xhr-write-stream "~0.1.2" + +through2@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-1.1.1.tgz#0847cbc4449f3405574dbdccd9bb841b83ac3545" + dependencies: + readable-stream ">=1.1.13-1 <1.2.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" + dependencies: + readable-stream "~1.0.17" + xtend "~2.1.1" + +through2@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" + dependencies: + readable-stream "~1.0.17" + xtend "~3.0.0" + +through@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/through/-/through-1.1.2.tgz#344a5425a3773314ca7e0eb6512fbafaf76c0bfe" + +through@2, "through@>=2.2.7 <3", through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +through@~2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd" + +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + dependencies: + process "~0.11.0" + +timers-browserify@~1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.0.3.tgz#ffba70c9c12eed916fd67318e629ac6f32295551" + dependencies: + process "~0.5.1" + +to-utf8@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/to-utf8/-/to-utf8-0.0.1.tgz#d17aea72ff2fba39b9e43601be7b3ff72e089852" + +tty-browserify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + +typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.5.0.tgz#4ab5d65a4730ecb7a4fb62d3f499e2054d98fba1" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.5.4" + +uglify-js@~2.2: + version "2.2.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.2.5.tgz#a6e02a70d839792b9780488b7b8b184c095c99c7" + dependencies: + optimist "~0.3.5" + source-map "~0.1.7" + +uglify-js@~2.4.0: + version "2.4.24" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.24.tgz#fad5755c1e1577658bb06ff9ab6e548c95bebd6e" + dependencies: + async "~0.2.6" + source-map "0.1.34" + uglify-to-browserify "~1.0.0" + yargs "~3.5.4" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +umd@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e" + +umd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/umd/-/umd-2.0.0.tgz#749683b0d514728ae0e1b6195f5774afc0ad4f8f" + dependencies: + rfile "~1.0.0" + ruglify "~1.0.0" + through "~2.3.4" + uglify-js "~2.4.0" + +url@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +vm-browserify@~0.0.1: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +win-spawn@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/win-spawn/-/win-spawn-2.0.0.tgz#397a29130ec98d0aa0bc86baa4621393effd0b07" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xhr-write-stream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/xhr-write-stream/-/xhr-write-stream-0.1.2.tgz#e357848e0d039b411fdd5b3bf81be47ee5ce26aa" + dependencies: + concat-stream "~0.1.0" + ordered-emitter "~0.1.0" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +xtend@^3.0.0, xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + dependencies: + object-keys "~0.4.0" + +yargs@~3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.5.4.tgz#d8aff8f665e94c34bd259bdebd1bfaf0ddd35361" + dependencies: + camelcase "^1.0.2" + decamelize "^1.0.0" + window-size "0.1.0" + wordwrap "0.0.2" diff --git a/node_modules/uview-plus/LICENSE b/node_modules/uview-plus/LICENSE new file mode 100644 index 0000000..8e39ead --- /dev/null +++ b/node_modules/uview-plus/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 www.uviewui.com + +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. \ No newline at end of file diff --git a/node_modules/uview-plus/README.md b/node_modules/uview-plus/README.md new file mode 100644 index 0000000..323b439 --- /dev/null +++ b/node_modules/uview-plus/README.md @@ -0,0 +1,64 @@ +

+ logo +

+

uview-plus 3.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/ijry/uview-plus?style=flat-square&logo=GitHub)](https://github.com/ijry/uview-plus) +[![forks](https://img.shields.io/github/forks/ijry/uview-plus?style=flat-square&logo=GitHub)](https://github.com/ijry/uview-plus) +[![issues](https://img.shields.io/github/issues/ijry/uview-plus?style=flat-square&logo=GitHub)](https://github.com/ijry/uview-plus/issues) +[![release](https://img.shields.io/github/v/release/ijry/uview-plus?style=flat-square)](https://gitee.com/uiadmin/uview-plus/releases) +[![license](https://img.shields.io/github/license/ijry/uview-plus?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uview-plus,是uni-app全面兼容vue3/nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水。uview-plus是基于uView2.x移植的支持vue3的版本,感谢uView。 + +## [官方文档:https://uiadmin.net/uview-plus](https://uiadmin.net/uview-plus) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + +## 链接 + +- [官方文档](https://uiadmin.net/uview-plus) +- [更新日志](https://uiadmin.net/uview-plus/components/changelog.html) +- [升级指南](https://uiadmin.net/uview-plus/components/changeGuide.html) +- [关于我们](https://uiadmin.net/uview-plus/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://uiadmin.net/uview-plus/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uview-plus是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?name=uview-plus](https://ext.dcloud.net.cn/plugin?name=uview-plus) + +请通过[官网安装文档](https://uiadmin.net/uview-plus/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uiadmin.net/uview-plus/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uview-plus遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uview-plus应用到您的产品中。 + diff --git a/node_modules/uview-plus/changelog.md b/node_modules/uview-plus/changelog.md new file mode 100644 index 0000000..6837fd5 --- /dev/null +++ b/node_modules/uview-plus/changelog.md @@ -0,0 +1,32 @@ +## 3.1.38(2023-10-08) +修复u-slider +## 3.1.37(2023-09-13) +完善emits定义及修复code-input双向数据绑定 +## 3.1.36(2023-08-08) +修复富文本事件名称大小写 +## 3.1.35(2023-08-02) +修复编译到支付宝小程序u-form报错 +## 3.1.34(2023-07-27) +修复App打包uni.$u.mpMixin方式sdk暂时不支持导致报错 +## 3.1.33(2023-07-13) +修复弹窗进入动画、模板页面样式等 +## 3.1.31(2023-07-11) +修复dayjs引用 +## 3.0.8(2022-07-12) +修复u-tag默认宽度撑满容器 +## 3.0.7(2022-07-12) +修复u-navbar自定义插槽演示示例 +## 3.0.6(2022-07-11) +修复u-image缺少emits申明 +## 3.0.5(2022-07-11) +修复u-upload缺少emits申明 +## 3.0.4(2022-07-10) +修复u-textarea/u-input/u-datetime-picker/u-number-box/u-radio-group/u-switch/u-rate在vue3下数据绑定 +## 3.0.3(2022-07-09) +启用自建演示二维码 +## 3.0.2(2022-07-09) +修复dayjs/clipboard等导致打包报错 +## 3.0.1(2022-07-09) +增加插件市场地址 +## 3.0.0(2022-07-09) +# uview-plus(vue3)初步发布 diff --git a/node_modules/uview-plus/components/u--form/u--form.vue b/node_modules/uview-plus/components/u--form/u--form.vue new file mode 100644 index 0000000..b2b29a1 --- /dev/null +++ b/node_modules/uview-plus/components/u--form/u--form.vue @@ -0,0 +1,80 @@ + + + diff --git a/node_modules/uview-plus/components/u--image/u--image.vue b/node_modules/uview-plus/components/u--image/u--image.vue new file mode 100644 index 0000000..3060e52 --- /dev/null +++ b/node_modules/uview-plus/components/u--image/u--image.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/node_modules/uview-plus/components/u--input/u--input.vue b/node_modules/uview-plus/components/u--input/u--input.vue new file mode 100644 index 0000000..f402884 --- /dev/null +++ b/node_modules/uview-plus/components/u--input/u--input.vue @@ -0,0 +1,74 @@ + + + \ No newline at end of file diff --git a/node_modules/uview-plus/components/u--text/u--text.vue b/node_modules/uview-plus/components/u--text/u--text.vue new file mode 100644 index 0000000..bf40e18 --- /dev/null +++ b/node_modules/uview-plus/components/u--text/u--text.vue @@ -0,0 +1,45 @@ + + + diff --git a/node_modules/uview-plus/components/u--textarea/u--textarea.vue b/node_modules/uview-plus/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..8b69f1f --- /dev/null +++ b/node_modules/uview-plus/components/u--textarea/u--textarea.vue @@ -0,0 +1,47 @@ + + + diff --git a/node_modules/uview-plus/components/u-action-sheet/props.js b/node_modules/uview-plus/components/u-action-sheet/props.js new file mode 100644 index 0000000..127f77c --- /dev/null +++ b/node_modules/uview-plus/components/u-action-sheet/props.js @@ -0,0 +1,55 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: defprops.actionSheet.show + }, + // 标题 + title: { + type: String, + default: defprops.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: defprops.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: defprops.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: defprops.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: defprops.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: defprops.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: defprops.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: defprops.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: defprops.actionSheet.round + } + } +} diff --git a/node_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue b/node_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..4fc79ea --- /dev/null +++ b/node_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,280 @@ + + + + + + diff --git a/node_modules/uview-plus/components/u-album/props.js b/node_modules/uview-plus/components/u-album/props.js new file mode 100644 index 0000000..713fcef --- /dev/null +++ b/node_modules/uview-plus/components/u-album/props.js @@ -0,0 +1,60 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: defprops.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: defprops.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: defprops.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: defprops.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: defprops.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: defprops.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: defprops.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: defprops.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: defprops.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: defprops.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: defprops.album.showMore + } + } +} diff --git a/node_modules/uview-plus/components/u-album/u-album.vue b/node_modules/uview-plus/components/u-album/u-album.vue new file mode 100644 index 0000000..08872f7 --- /dev/null +++ b/node_modules/uview-plus/components/u-album/u-album.vue @@ -0,0 +1,262 @@ + + + + + \ No newline at end of file diff --git a/node_modules/uview-plus/components/u-alert/props.js b/node_modules/uview-plus/components/u-alert/props.js new file mode 100644 index 0000000..6be6f3e --- /dev/null +++ b/node_modules/uview-plus/components/u-alert/props.js @@ -0,0 +1,45 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 显示文字 + title: { + type: String, + default: defprops.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: defprops.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: defprops.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: defprops.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: defprops.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: defprops.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: defprops.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: defprops.alert.fontSize + } + } +} diff --git a/node_modules/uview-plus/components/u-alert/u-alert.vue b/node_modules/uview-plus/components/u-alert/u-alert.vue new file mode 100644 index 0000000..d747fb8 --- /dev/null +++ b/node_modules/uview-plus/components/u-alert/u-alert.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-avatar-group/props.js b/node_modules/uview-plus/components/u-avatar-group/props.js new file mode 100644 index 0000000..cd58ae6 --- /dev/null +++ b/node_modules/uview-plus/components/u-avatar-group/props.js @@ -0,0 +1,53 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: defprops.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: defprops.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: defprops.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: defprops.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: defprops.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: defprops.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: defprops.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: defprops.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: defprops.avatarGroup.extraValue + } + } +} diff --git a/node_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue b/node_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..d26c613 --- /dev/null +++ b/node_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-avatar/props.js b/node_modules/uview-plus/components/u-avatar/props.js new file mode 100644 index 0000000..28d2ead --- /dev/null +++ b/node_modules/uview-plus/components/u-avatar/props.js @@ -0,0 +1,79 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: defprops.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: defprops.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: defprops.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: defprops.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: defprops.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: defprops.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: defprops.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: defprops.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: defprops.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: defprops.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: defprops.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: defprops.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: defprops.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: defprops.avatar.name + } + } +} diff --git a/node_modules/uview-plus/components/u-avatar/u-avatar.vue b/node_modules/uview-plus/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..77e9a9e --- /dev/null +++ b/node_modules/uview-plus/components/u-avatar/u-avatar.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-back-top/props.js b/node_modules/uview-plus/components/u-back-top/props.js new file mode 100644 index 0000000..4f340ef --- /dev/null +++ b/node_modules/uview-plus/components/u-back-top/props.js @@ -0,0 +1,55 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: defprops.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: defprops.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: defprops.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: defprops.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: defprops.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: defprops.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: defprops.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: defprops.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: defprops.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: defprops.backtop.iconStyle + } + } +} diff --git a/node_modules/uview-plus/components/u-back-top/u-back-top.vue b/node_modules/uview-plus/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..14af818 --- /dev/null +++ b/node_modules/uview-plus/components/u-back-top/u-back-top.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-badge/props.js b/node_modules/uview-plus/components/u-badge/props.js new file mode 100644 index 0000000..1c01223 --- /dev/null +++ b/node_modules/uview-plus/components/u-badge/props.js @@ -0,0 +1,78 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: defprops.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: defprops.badge.value + }, + // 显示的内容 + modelValue: { + type: [Number, String], + default: defprops.badge.modelValue + }, + // 是否显示 + show: { + type: Boolean, + default: defprops.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: defprops.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: defprops.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: defprops.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: defprops.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: defprops.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: defprops.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: defprops.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: defprops.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: defprops.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: defprops.badge.absolute + } + } +} diff --git a/node_modules/uview-plus/components/u-badge/u-badge.vue b/node_modules/uview-plus/components/u-badge/u-badge.vue new file mode 100644 index 0000000..b535950 --- /dev/null +++ b/node_modules/uview-plus/components/u-badge/u-badge.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-button/nvue.scss b/node_modules/uview-plus/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/node_modules/uview-plus/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/node_modules/uview-plus/components/u-button/props.js b/node_modules/uview-plus/components/u-button/props.js new file mode 100644 index 0000000..5c94506 --- /dev/null +++ b/node_modules/uview-plus/components/u-button/props.js @@ -0,0 +1,162 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: defprops.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: defprops.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: defprops.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: defprops.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: defprops.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: defprops.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: defprops.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: defprops.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: defprops.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: defprops.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: defprops.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: defprops.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: defprops.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: defprops.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: defprops.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: defprops.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: defprops.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: defprops.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: defprops.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: defprops.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: defprops.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: defprops.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: defprops.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: defprops.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: defprops.button.text + }, + // 按钮图标 + icon: { + type: String, + default: defprops.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: defprops.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: defprops.button.color + } + } +} diff --git a/node_modules/uview-plus/components/u-button/u-button.vue b/node_modules/uview-plus/components/u-button/u-button.vue new file mode 100644 index 0000000..432834e --- /dev/null +++ b/node_modules/uview-plus/components/u-button/u-button.vue @@ -0,0 +1,494 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-button/vue.scss b/node_modules/uview-plus/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/node_modules/uview-plus/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/node_modules/uview-plus/components/u-calendar/header.vue b/node_modules/uview-plus/components/u-calendar/header.vue new file mode 100644 index 0000000..e8d6d06 --- /dev/null +++ b/node_modules/uview-plus/components/u-calendar/header.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-calendar/month.vue b/node_modules/uview-plus/components/u-calendar/month.vue new file mode 100644 index 0000000..b055a13 --- /dev/null +++ b/node_modules/uview-plus/components/u-calendar/month.vue @@ -0,0 +1,583 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-calendar/props.js b/node_modules/uview-plus/components/u-calendar/props.js new file mode 100644 index 0000000..b5ac560 --- /dev/null +++ b/node_modules/uview-plus/components/u-calendar/props.js @@ -0,0 +1,145 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: defprops.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: defprops.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: defprops.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: defprops.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: defprops.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: defprops.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: defprops.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: defprops.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: defprops.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: defprops.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: defprops.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: defprops.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: defprops.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: defprops.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: defprops.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: defprops.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: defprops.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: defprops.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: defprops.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: defprops.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: defprops.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: defprops.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: defprops.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: defprops.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: defprops.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: defprops.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: defprops.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/node_modules/uview-plus/components/u-calendar/u-calendar.vue b/node_modules/uview-plus/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..6b07985 --- /dev/null +++ b/node_modules/uview-plus/components/u-calendar/u-calendar.vue @@ -0,0 +1,387 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-calendar/util.js b/node_modules/uview-plus/components/u-calendar/util.js new file mode 100644 index 0000000..18762c1 --- /dev/null +++ b/node_modules/uview-plus/components/u-calendar/util.js @@ -0,0 +1,86 @@ +import dayjs from 'dayjs/esm/index' +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/node_modules/uview-plus/components/u-car-keyboard/props.js b/node_modules/uview-plus/components/u-car-keyboard/props.js new file mode 100644 index 0000000..d4f00f0 --- /dev/null +++ b/node_modules/uview-plus/components/u-car-keyboard/props.js @@ -0,0 +1,15 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/node_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue b/node_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..2ca9471 --- /dev/null +++ b/node_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-cell-group/props.js b/node_modules/uview-plus/components/u-cell-group/props.js new file mode 100644 index 0000000..04be748 --- /dev/null +++ b/node_modules/uview-plus/components/u-cell-group/props.js @@ -0,0 +1,15 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 分组标题 + title: { + type: String, + default: defprops.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: defprops.cellGroup.border + } + } +} diff --git a/node_modules/uview-plus/components/u-cell-group/u-cell-group.vue b/node_modules/uview-plus/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..68e4624 --- /dev/null +++ b/node_modules/uview-plus/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,63 @@ + + + + + + diff --git a/node_modules/uview-plus/components/u-cell/props.js b/node_modules/uview-plus/components/u-cell/props.js new file mode 100644 index 0000000..37bcf9f --- /dev/null +++ b/node_modules/uview-plus/components/u-cell/props.js @@ -0,0 +1,111 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: defprops.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: defprops.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: defprops.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: defprops.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: defprops.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: defprops.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: defprops.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: defprops.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: defprops.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: defprops.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: defprops.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: defprops.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: defprops.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: defprops.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: defprops.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: defprops.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: defprops.cell.name + } + } +} diff --git a/node_modules/uview-plus/components/u-cell/u-cell.vue b/node_modules/uview-plus/components/u-cell/u-cell.vue new file mode 100644 index 0000000..13d71a2 --- /dev/null +++ b/node_modules/uview-plus/components/u-cell/u-cell.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-checkbox-group/props.js b/node_modules/uview-plus/components/u-checkbox-group/props.js new file mode 100644 index 0000000..50d508e --- /dev/null +++ b/node_modules/uview-plus/components/u-checkbox-group/props.js @@ -0,0 +1,92 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 标识符 + name: { + type: String, + default: defprops.checkboxGroup.name + }, + // #ifdef VUE3 + // 绑定的值 + modelValue: { + type: Array, + default: defprops.checkboxGroup.value + }, + // #endif + // #ifdef VUE2 + // 绑定的值 + value: { + type: Array, + default: defprops.checkboxGroup.value + }, + // #endif + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: defprops.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: defprops.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: defprops.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: defprops.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: defprops.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: defprops.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: defprops.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: defprops.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: defprops.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: defprops.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: defprops.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: defprops.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: defprops.checkboxGroup.borderBottom + } + + } +} diff --git a/node_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue b/node_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..1dcabf7 --- /dev/null +++ b/node_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-checkbox/props.js b/node_modules/uview-plus/components/u-checkbox/props.js new file mode 100644 index 0000000..ae98f1b --- /dev/null +++ b/node_modules/uview-plus/components/u-checkbox/props.js @@ -0,0 +1,70 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: defprops.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: defprops.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: defprops.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: defprops.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: defprops.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: defprops.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: defprops.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: defprops.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: defprops.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: defprops.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: defprops.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: defprops.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: defprops.checkbox.labelDisabled + } + } +} diff --git a/node_modules/uview-plus/components/u-checkbox/u-checkbox.vue b/node_modules/uview-plus/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..87fe306 --- /dev/null +++ b/node_modules/uview-plus/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-circle-progress/props.js b/node_modules/uview-plus/components/u-circle-progress/props.js new file mode 100644 index 0000000..7016b53 --- /dev/null +++ b/node_modules/uview-plus/components/u-circle-progress/props.js @@ -0,0 +1,9 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + percentage: { + type: [String, Number], + default: defprops.circleProgress.percentage + } + } +} diff --git a/node_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue b/node_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..f0cc1cf --- /dev/null +++ b/node_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-code-input/props.js b/node_modules/uview-plus/components/u-code-input/props.js new file mode 100644 index 0000000..ad4a08c --- /dev/null +++ b/node_modules/uview-plus/components/u-code-input/props.js @@ -0,0 +1,89 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: defprops.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: defprops.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: defprops.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: defprops.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: defprops.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: defprops.codeInput.space + }, + // #ifdef VUE3 + // 预置值 + modelValue: { + type: [String, Number], + default: defprops.codeInput.value + }, + // #endif + // #ifdef VUE2 + // 预置值 + value: { + type: [String, Number], + default: defprops.codeInput.value + }, + // #endif + // 是否自动获取焦点 + focus: { + type: Boolean, + default: defprops.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: defprops.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: defprops.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: defprops.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: defprops.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: defprops.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: defprops.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: defprops.codeInput.disabledDot + } + } +} diff --git a/node_modules/uview-plus/components/u-code-input/u-code-input.vue b/node_modules/uview-plus/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..d5ab670 --- /dev/null +++ b/node_modules/uview-plus/components/u-code-input/u-code-input.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-code/props.js b/node_modules/uview-plus/components/u-code/props.js new file mode 100644 index 0000000..effc2fc --- /dev/null +++ b/node_modules/uview-plus/components/u-code/props.js @@ -0,0 +1,35 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: defprops.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: defprops.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: defprops.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: defprops.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: defprops.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: defprops.code.uniqueKey + } + } +} diff --git a/node_modules/uview-plus/components/u-code/u-code.vue b/node_modules/uview-plus/components/u-code/u-code.vue new file mode 100644 index 0000000..a9d1934 --- /dev/null +++ b/node_modules/uview-plus/components/u-code/u-code.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-col/props.js b/node_modules/uview-plus/components/u-col/props.js new file mode 100644 index 0000000..cb5d3bd --- /dev/null +++ b/node_modules/uview-plus/components/u-col/props.js @@ -0,0 +1,30 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: defprops.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: defprops.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: defprops.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: defprops.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: defprops.col.textAlign + } + } +} diff --git a/node_modules/uview-plus/components/u-col/u-col.vue b/node_modules/uview-plus/components/u-col/u-col.vue new file mode 100644 index 0000000..410d651 --- /dev/null +++ b/node_modules/uview-plus/components/u-col/u-col.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-collapse-item/props.js b/node_modules/uview-plus/components/u-collapse-item/props.js new file mode 100644 index 0000000..5435204 --- /dev/null +++ b/node_modules/uview-plus/components/u-collapse-item/props.js @@ -0,0 +1,60 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 标题 + title: { + type: String, + default: defprops.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: defprops.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: defprops.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: defprops.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: defprops.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: defprops.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: defprops.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: defprops.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: defprops.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: defprops.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: defprops.collapseItem.duration + } + } +} diff --git a/node_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue b/node_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..f840385 --- /dev/null +++ b/node_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-collapse/props.js b/node_modules/uview-plus/components/u-collapse/props.js new file mode 100644 index 0000000..b45e38d --- /dev/null +++ b/node_modules/uview-plus/components/u-collapse/props.js @@ -0,0 +1,20 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: defprops.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: defprops.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: defprops.collapse.border + } + } +} diff --git a/node_modules/uview-plus/components/u-collapse/u-collapse.vue b/node_modules/uview-plus/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..2c9350a --- /dev/null +++ b/node_modules/uview-plus/components/u-collapse/u-collapse.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-column-notice/props.js b/node_modules/uview-plus/components/u-column-notice/props.js new file mode 100644 index 0000000..2b669e7 --- /dev/null +++ b/node_modules/uview-plus/components/u-column-notice/props.js @@ -0,0 +1,56 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: defprops.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: defprops.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: defprops.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: defprops.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: defprops.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: defprops.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: defprops.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: defprops.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: defprops.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: defprops.columnNotice.disableTouch + } + } +} diff --git a/node_modules/uview-plus/components/u-column-notice/u-column-notice.vue b/node_modules/uview-plus/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..2ae35e3 --- /dev/null +++ b/node_modules/uview-plus/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-count-down/props.js b/node_modules/uview-plus/components/u-count-down/props.js new file mode 100644 index 0000000..57c67e0 --- /dev/null +++ b/node_modules/uview-plus/components/u-count-down/props.js @@ -0,0 +1,25 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: defprops.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: defprops.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: defprops.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: defprops.countDown.millisecond + } + } +} diff --git a/node_modules/uview-plus/components/u-count-down/u-count-down.vue b/node_modules/uview-plus/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..e8b85fc --- /dev/null +++ b/node_modules/uview-plus/components/u-count-down/u-count-down.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-count-down/utils.js b/node_modules/uview-plus/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/node_modules/uview-plus/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/node_modules/uview-plus/components/u-count-to/props.js b/node_modules/uview-plus/components/u-count-to/props.js new file mode 100644 index 0000000..27030af --- /dev/null +++ b/node_modules/uview-plus/components/u-count-to/props.js @@ -0,0 +1,60 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: defprops.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: defprops.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: defprops.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: defprops.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: defprops.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: defprops.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: defprops.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: defprops.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: defprops.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: defprops.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: defprops.countTo.separator + } + } +} diff --git a/node_modules/uview-plus/components/u-count-to/u-count-to.vue b/node_modules/uview-plus/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..9d5574f --- /dev/null +++ b/node_modules/uview-plus/components/u-count-to/u-count-to.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-datetime-picker/props.js b/node_modules/uview-plus/components/u-datetime-picker/props.js new file mode 100644 index 0000000..a61fa9e --- /dev/null +++ b/node_modules/uview-plus/components/u-datetime-picker/props.js @@ -0,0 +1,126 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: defprops.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: defprops.datetimePicker.showToolbar + }, + // #ifdef VUE2 + // 绑定值 + value: { + type: [String, Number], + default: defprops.datetimePicker.value + }, + // #endif + // #ifdef VUE3 + // 绑定值 + modelValue: { + type: [String, Number], + default: defprops.datetimePicker.value + }, + // #endif + // 顶部标题 + title: { + type: String, + default: defprops.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: defprops.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: defprops.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: defprops.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: defprops.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: defprops.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: defprops.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: defprops.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: defprops.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: defprops.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: defprops.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: defprops.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: defprops.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: defprops.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: defprops.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: defprops.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: defprops.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: defprops.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: defprops.datetimePicker.defaultIndex + } + } +} diff --git a/node_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue b/node_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..098972d --- /dev/null +++ b/node_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-divider/props.js b/node_modules/uview-plus/components/u-divider/props.js new file mode 100644 index 0000000..db17264 --- /dev/null +++ b/node_modules/uview-plus/components/u-divider/props.js @@ -0,0 +1,45 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: defprops.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: defprops.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: defprops.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: defprops.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: defprops.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: defprops.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: defprops.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: defprops.divider.lineColor + } + } +} diff --git a/node_modules/uview-plus/components/u-divider/u-divider.vue b/node_modules/uview-plus/components/u-divider/u-divider.vue new file mode 100644 index 0000000..e3f122a --- /dev/null +++ b/node_modules/uview-plus/components/u-divider/u-divider.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-dropdown-item/props.js b/node_modules/uview-plus/components/u-dropdown-item/props.js new file mode 100644 index 0000000..b564e3c --- /dev/null +++ b/node_modules/uview-plus/components/u-dropdown-item/props.js @@ -0,0 +1,37 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/node_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue b/node_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..c1c113d --- /dev/null +++ b/node_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-dropdown/props.js b/node_modules/uview-plus/components/u-dropdown/props.js new file mode 100644 index 0000000..499c8ca --- /dev/null +++ b/node_modules/uview-plus/components/u-dropdown/props.js @@ -0,0 +1,66 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/node_modules/uview-plus/components/u-dropdown/u-dropdown.vue b/node_modules/uview-plus/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..c5a7733 --- /dev/null +++ b/node_modules/uview-plus/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-empty/props.js b/node_modules/uview-plus/components/u-empty/props.js new file mode 100644 index 0000000..c433952 --- /dev/null +++ b/node_modules/uview-plus/components/u-empty/props.js @@ -0,0 +1,60 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: defprops.empty.icon + }, + // 提示文字 + text: { + type: String, + default: defprops.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: defprops.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: defprops.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: defprops.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: defprops.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: defprops.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: defprops.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: defprops.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: defprops.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: defprops.empty.marginTop + } + } +} diff --git a/node_modules/uview-plus/components/u-empty/u-empty.vue b/node_modules/uview-plus/components/u-empty/u-empty.vue new file mode 100644 index 0000000..86d13c9 --- /dev/null +++ b/node_modules/uview-plus/components/u-empty/u-empty.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-form-item/props.js b/node_modules/uview-plus/components/u-form-item/props.js new file mode 100644 index 0000000..09b4277 --- /dev/null +++ b/node_modules/uview-plus/components/u-form-item/props.js @@ -0,0 +1,44 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // input的label提示语 + label: { + type: String, + default: defprops.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: defprops.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: defprops.formItem.borderBottom + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: defprops.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: defprops.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: defprops.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: defprops.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: defprops.formItem.leftIconStyle, + } + } +} diff --git a/node_modules/uview-plus/components/u-form-item/u-form-item.vue b/node_modules/uview-plus/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..ff64b2f --- /dev/null +++ b/node_modules/uview-plus/components/u-form-item/u-form-item.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-form/props.js b/node_modules/uview-plus/components/u-form/props.js new file mode 100644 index 0000000..5c9d81b --- /dev/null +++ b/node_modules/uview-plus/components/u-form/props.js @@ -0,0 +1,46 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: defprops.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: defprops.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: defprops.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: defprops.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: defprops.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: defprops.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: defprops.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: defprops.form.labelStyle + } + } +} diff --git a/node_modules/uview-plus/components/u-form/u-form.vue b/node_modules/uview-plus/components/u-form/u-form.vue new file mode 100644 index 0000000..af0dc2b --- /dev/null +++ b/node_modules/uview-plus/components/u-form/u-form.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-gap/props.js b/node_modules/uview-plus/components/u-gap/props.js new file mode 100644 index 0000000..8a59822 --- /dev/null +++ b/node_modules/uview-plus/components/u-gap/props.js @@ -0,0 +1,25 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: defprops.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: defprops.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: defprops.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: defprops.gap.marginBottom + } + } +} diff --git a/node_modules/uview-plus/components/u-gap/u-gap.vue b/node_modules/uview-plus/components/u-gap/u-gap.vue new file mode 100644 index 0000000..3ba733c --- /dev/null +++ b/node_modules/uview-plus/components/u-gap/u-gap.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-grid-item/props.js b/node_modules/uview-plus/components/u-grid-item/props.js new file mode 100644 index 0000000..19ff849 --- /dev/null +++ b/node_modules/uview-plus/components/u-grid-item/props.js @@ -0,0 +1,15 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: defprops.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: defprops.gridItem.bgColor + } + } +} diff --git a/node_modules/uview-plus/components/u-grid-item/u-grid-item.vue b/node_modules/uview-plus/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..c053623 --- /dev/null +++ b/node_modules/uview-plus/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-grid/props.js b/node_modules/uview-plus/components/u-grid/props.js new file mode 100644 index 0000000..e78cfd2 --- /dev/null +++ b/node_modules/uview-plus/components/u-grid/props.js @@ -0,0 +1,20 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: defprops.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: defprops.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: defprops.grid.align + } + } +} diff --git a/node_modules/uview-plus/components/u-grid/u-grid.vue b/node_modules/uview-plus/components/u-grid/u-grid.vue new file mode 100644 index 0000000..c2423b4 --- /dev/null +++ b/node_modules/uview-plus/components/u-grid/u-grid.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-icon/icons.js b/node_modules/uview-plus/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/node_modules/uview-plus/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/node_modules/uview-plus/components/u-icon/props.js b/node_modules/uview-plus/components/u-icon/props.js new file mode 100644 index 0000000..843874b --- /dev/null +++ b/node_modules/uview-plus/components/u-icon/props.js @@ -0,0 +1,90 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 图标类名 + name: { + type: String, + default: defprops.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: defprops.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: defprops.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: defprops.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: defprops.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: defprops.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: defprops.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: defprops.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: defprops.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: defprops.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: defprops.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: defprops.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: defprops.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: defprops.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: defprops.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: defprops.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: defprops.icon.stop + } + } +} diff --git a/node_modules/uview-plus/components/u-icon/u-icon.vue b/node_modules/uview-plus/components/u-icon/u-icon.vue new file mode 100644 index 0000000..bbf19ad --- /dev/null +++ b/node_modules/uview-plus/components/u-icon/u-icon.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-image/props.js b/node_modules/uview-plus/components/u-image/props.js new file mode 100644 index 0000000..3e8c53a --- /dev/null +++ b/node_modules/uview-plus/components/u-image/props.js @@ -0,0 +1,85 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 图片地址 + src: { + type: String, + default: defprops.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: defprops.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: defprops.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: defprops.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: defprops.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: defprops.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: defprops.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: defprops.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: defprops.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: defprops.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: defprops.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: defprops.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: defprops.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: defprops.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: defprops.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: defprops.image.bgColor + } + } +} diff --git a/node_modules/uview-plus/components/u-image/u-image.vue b/node_modules/uview-plus/components/u-image/u-image.vue new file mode 100644 index 0000000..633d753 --- /dev/null +++ b/node_modules/uview-plus/components/u-image/u-image.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-index-anchor/props.js b/node_modules/uview-plus/components/u-index-anchor/props.js new file mode 100644 index 0000000..dbdd7da --- /dev/null +++ b/node_modules/uview-plus/components/u-index-anchor/props.js @@ -0,0 +1,30 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: defprops.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: defprops.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: defprops.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: defprops.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: defprops.indexAnchor.height + } + } +} diff --git a/node_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue b/node_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..a7eedb3 --- /dev/null +++ b/node_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-index-item/props.js b/node_modules/uview-plus/components/u-index-item/props.js new file mode 100644 index 0000000..40aa3c6 --- /dev/null +++ b/node_modules/uview-plus/components/u-index-item/props.js @@ -0,0 +1,6 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + + } +} diff --git a/node_modules/uview-plus/components/u-index-item/u-index-item.vue b/node_modules/uview-plus/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..a50cafd --- /dev/null +++ b/node_modules/uview-plus/components/u-index-item/u-index-item.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-index-list/props.js b/node_modules/uview-plus/components/u-index-list/props.js new file mode 100644 index 0000000..103d2cb --- /dev/null +++ b/node_modules/uview-plus/components/u-index-list/props.js @@ -0,0 +1,30 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: defprops.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: defprops.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: defprops.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: defprops.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: defprops.indexList.customNavHeight + } + } +} diff --git a/node_modules/uview-plus/components/u-index-list/u-index-list.vue b/node_modules/uview-plus/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..c09442a --- /dev/null +++ b/node_modules/uview-plus/components/u-index-list/u-index-list.vue @@ -0,0 +1,442 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-input/props.js b/node_modules/uview-plus/components/u-input/props.js new file mode 100644 index 0000000..927a6ae --- /dev/null +++ b/node_modules/uview-plus/components/u-input/props.js @@ -0,0 +1,196 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // #ifdef VUE3 + // 绑定的值 + modelValue: { + type: [String, Number], + default: defprops.input.value + }, + // #endif + // #ifdef VUE2 + // 绑定的值 + value: { + type: [String, Number], + default: defprops.input.value + }, + // #endif + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: defprops.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: defprops.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: defprops.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: defprops.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: defprops.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: defprops.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: defprops.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: defprops.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: defprops.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: defprops.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: defprops.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: defprops.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: defprops.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: defprops.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: defprops.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: defprops.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: defprops.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: defprops.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: defprops.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: defprops.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: defprops.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: defprops.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: defprops.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: defprops.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: defprops.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: defprops.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: defprops.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: defprops.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: defprops.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: defprops.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: defprops.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: defprops.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: defprops.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +} diff --git a/node_modules/uview-plus/components/u-input/u-input.vue b/node_modules/uview-plus/components/u-input/u-input.vue new file mode 100644 index 0000000..6bb4d18 --- /dev/null +++ b/node_modules/uview-plus/components/u-input/u-input.vue @@ -0,0 +1,386 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-keyboard/props.js b/node_modules/uview-plus/components/u-keyboard/props.js new file mode 100644 index 0000000..fcea1c2 --- /dev/null +++ b/node_modules/uview-plus/components/u-keyboard/props.js @@ -0,0 +1,85 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: defprops.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: defprops.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: defprops.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: defprops.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: defprops.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: defprops.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: defprops.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: defprops.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: defprops.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: defprops.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: defprops.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: defprops.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: defprops.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: defprops.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: defprops.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: defprops.keyboard.autoChange + } + } +} diff --git a/node_modules/uview-plus/components/u-keyboard/u-keyboard.vue b/node_modules/uview-plus/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..c4dbaff --- /dev/null +++ b/node_modules/uview-plus/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-line-progress/props.js b/node_modules/uview-plus/components/u-line-progress/props.js new file mode 100644 index 0000000..08a8cb6 --- /dev/null +++ b/node_modules/uview-plus/components/u-line-progress/props.js @@ -0,0 +1,29 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: defprops.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: defprops.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: defprops.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: defprops.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: defprops.lineProgress.height + } + } +} diff --git a/node_modules/uview-plus/components/u-line-progress/u-line-progress.vue b/node_modules/uview-plus/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..f26fbbd --- /dev/null +++ b/node_modules/uview-plus/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-line/props.js b/node_modules/uview-plus/components/u-line/props.js new file mode 100644 index 0000000..89bcf4a --- /dev/null +++ b/node_modules/uview-plus/components/u-line/props.js @@ -0,0 +1,34 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + color: { + type: String, + default: defprops.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: defprops.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: defprops.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: defprops.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: defprops.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: defprops.line.dashed + } + } +} diff --git a/node_modules/uview-plus/components/u-line/u-line.vue b/node_modules/uview-plus/components/u-line/u-line.vue new file mode 100644 index 0000000..b42f375 --- /dev/null +++ b/node_modules/uview-plus/components/u-line/u-line.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-link/props.js b/node_modules/uview-plus/components/u-link/props.js new file mode 100644 index 0000000..6118b44 --- /dev/null +++ b/node_modules/uview-plus/components/u-link/props.js @@ -0,0 +1,40 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 文字颜色 + color: { + type: String, + default: defprops.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: defprops.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: defprops.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: defprops.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: defprops.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: defprops.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: defprops.link.text + } + } +} diff --git a/node_modules/uview-plus/components/u-link/u-link.vue b/node_modules/uview-plus/components/u-link/u-link.vue new file mode 100644 index 0000000..a7669d6 --- /dev/null +++ b/node_modules/uview-plus/components/u-link/u-link.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-list-item/props.js b/node_modules/uview-plus/components/u-list-item/props.js new file mode 100644 index 0000000..b2c8076 --- /dev/null +++ b/node_modules/uview-plus/components/u-list-item/props.js @@ -0,0 +1,10 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: defprops.listItem.anchor + } + } +} diff --git a/node_modules/uview-plus/components/u-list-item/u-list-item.vue b/node_modules/uview-plus/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..5e4b336 --- /dev/null +++ b/node_modules/uview-plus/components/u-list-item/u-list-item.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-list/props.js b/node_modules/uview-plus/components/u-list/props.js new file mode 100644 index 0000000..6eb13da --- /dev/null +++ b/node_modules/uview-plus/components/u-list/props.js @@ -0,0 +1,77 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: defprops.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: defprops.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: defprops.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: defprops.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: defprops.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: defprops.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: defprops.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: defprops.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: defprops.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: defprops.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: defprops.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: defprops.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: defprops.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: defprops.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/node_modules/uview-plus/components/u-list/u-list.vue b/node_modules/uview-plus/components/u-list/u-list.vue new file mode 100644 index 0000000..b5b268b --- /dev/null +++ b/node_modules/uview-plus/components/u-list/u-list.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-loading-icon/props.js b/node_modules/uview-plus/components/u-loading-icon/props.js new file mode 100644 index 0000000..996cf9b --- /dev/null +++ b/node_modules/uview-plus/components/u-loading-icon/props.js @@ -0,0 +1,60 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: defprops.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: defprops.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: defprops.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: defprops.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: defprops.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: defprops.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: defprops.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: defprops.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: defprops.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: defprops.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: defprops.loadingIcon.inactiveColor + } + } +} diff --git a/node_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue b/node_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..e74950e --- /dev/null +++ b/node_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,345 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-loading-page/props.js b/node_modules/uview-plus/components/u-loading-page/props.js new file mode 100644 index 0000000..02d5ff7 --- /dev/null +++ b/node_modules/uview-plus/components/u-loading-page/props.js @@ -0,0 +1,50 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: defprops.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: defprops.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: defprops.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: defprops.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: defprops.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: defprops.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: defprops.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: defprops.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: defprops.loadingPage.loadingColor + } + } +} diff --git a/node_modules/uview-plus/components/u-loading-page/u-loading-page.vue b/node_modules/uview-plus/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..3f8f601 --- /dev/null +++ b/node_modules/uview-plus/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-loadmore/props.js b/node_modules/uview-plus/components/u-loadmore/props.js new file mode 100644 index 0000000..bc0cb0f --- /dev/null +++ b/node_modules/uview-plus/components/u-loadmore/props.js @@ -0,0 +1,95 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: defprops.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: defprops.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: defprops.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: defprops.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: defprops.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: defprops.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: defprops.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: defprops.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: defprops.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: defprops.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: defprops.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: defprops.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: defprops.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: defprops.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: defprops.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: defprops.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: defprops.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: defprops.loadmore.dashed + } + } +} diff --git a/node_modules/uview-plus/components/u-loadmore/u-loadmore.vue b/node_modules/uview-plus/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..5c61f41 --- /dev/null +++ b/node_modules/uview-plus/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-message-input/u-message-input.vue b/node_modules/uview-plus/components/u-message-input/u-message-input.vue new file mode 100644 index 0000000..0da5f1c --- /dev/null +++ b/node_modules/uview-plus/components/u-message-input/u-message-input.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-modal/props.js b/node_modules/uview-plus/components/u-modal/props.js new file mode 100644 index 0000000..fb0d089 --- /dev/null +++ b/node_modules/uview-plus/components/u-modal/props.js @@ -0,0 +1,85 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: defprops.modal.show + }, + // 标题 + title: { + type: [String], + default: defprops.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: defprops.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: defprops.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: defprops.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: defprops.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: defprops.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: defprops.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: defprops.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: defprops.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: defprops.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: defprops.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: defprops.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: defprops.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: defprops.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: defprops.modal.confirmButtonShape + } + } +} diff --git a/node_modules/uview-plus/components/u-modal/u-modal.vue b/node_modules/uview-plus/components/u-modal/u-modal.vue new file mode 100644 index 0000000..326f9da --- /dev/null +++ b/node_modules/uview-plus/components/u-modal/u-modal.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-navbar/props.js b/node_modules/uview-plus/components/u-navbar/props.js new file mode 100644 index 0000000..3d77d47 --- /dev/null +++ b/node_modules/uview-plus/components/u-navbar/props.js @@ -0,0 +1,85 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: defprops.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: defprops.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: defprops.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: defprops.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: defprops.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: defprops.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: defprops.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: defprops.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: defprops.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: defprops.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: defprops.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: defprops.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: defprops.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: defprops.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: defprops.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: defprops.navbar.titleStyle + } + } +} diff --git a/node_modules/uview-plus/components/u-navbar/u-navbar.vue b/node_modules/uview-plus/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..892bcad --- /dev/null +++ b/node_modules/uview-plus/components/u-navbar/u-navbar.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-no-network/props.js b/node_modules/uview-plus/components/u-no-network/props.js new file mode 100644 index 0000000..9204600 --- /dev/null +++ b/node_modules/uview-plus/components/u-no-network/props.js @@ -0,0 +1,20 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: defprops.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: defprops.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: defprops.noNetwork.image + } + } +} diff --git a/node_modules/uview-plus/components/u-no-network/u-no-network.vue b/node_modules/uview-plus/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..4924d78 --- /dev/null +++ b/node_modules/uview-plus/components/u-no-network/u-no-network.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-notice-bar/props.js b/node_modules/uview-plus/components/u-notice-bar/props.js new file mode 100644 index 0000000..d15125c --- /dev/null +++ b/node_modules/uview-plus/components/u-notice-bar/props.js @@ -0,0 +1,71 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: defprops.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: defprops.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: defprops.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: defprops.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: defprops.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: defprops.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: defprops.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: defprops.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: defprops.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: defprops.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: defprops.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: defprops.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: defprops.noticeBar.linkType + } + } +} diff --git a/node_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue b/node_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..b377dc1 --- /dev/null +++ b/node_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,104 @@ + + + + diff --git a/node_modules/uview-plus/components/u-notify/props.js b/node_modules/uview-plus/components/u-notify/props.js new file mode 100644 index 0000000..d7c8541 --- /dev/null +++ b/node_modules/uview-plus/components/u-notify/props.js @@ -0,0 +1,50 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: defprops.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: defprops.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: defprops.notify.type + }, + // 字体颜色 + color: { + type: String, + default: defprops.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: defprops.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: defprops.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: defprops.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: defprops.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: defprops.notify.safeAreaInsetTop + } + } +} diff --git a/node_modules/uview-plus/components/u-notify/u-notify.vue b/node_modules/uview-plus/components/u-notify/u-notify.vue new file mode 100644 index 0000000..039f7cd --- /dev/null +++ b/node_modules/uview-plus/components/u-notify/u-notify.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-number-box/props.js b/node_modules/uview-plus/components/u-number-box/props.js new file mode 100644 index 0000000..cf76a5e --- /dev/null +++ b/node_modules/uview-plus/components/u-number-box/props.js @@ -0,0 +1,119 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: defprops.numberBox.name + }, + // #ifdef VUE2 + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: defprops.numberBox.value + }, + // #endif + // #ifdef VUE3 + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + modelValue: { + type: [String, Number], + default: defprops.numberBox.value + }, + // #endif + // 最小值 + min: { + type: [String, Number], + default: defprops.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: defprops.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: defprops.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: defprops.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: defprops.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: defprops.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: defprops.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: defprops.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: defprops.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: defprops.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: defprops.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: defprops.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: defprops.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: defprops.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: defprops.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: defprops.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: defprops.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: defprops.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: defprops.numberBox.iconStyle + } + } +} diff --git a/node_modules/uview-plus/components/u-number-box/u-number-box.vue b/node_modules/uview-plus/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..ffabff5 --- /dev/null +++ b/node_modules/uview-plus/components/u-number-box/u-number-box.vue @@ -0,0 +1,441 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-number-keyboard/props.js b/node_modules/uview-plus/components/u-number-keyboard/props.js new file mode 100644 index 0000000..1fd7c8e --- /dev/null +++ b/node_modules/uview-plus/components/u-number-keyboard/props.js @@ -0,0 +1,20 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: defprops.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: defprops.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: defprops.numberKeyboard.random + } + } +} diff --git a/node_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue b/node_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..d167340 --- /dev/null +++ b/node_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-overlay/props.js b/node_modules/uview-plus/components/u-overlay/props.js new file mode 100644 index 0000000..4aca5c1 --- /dev/null +++ b/node_modules/uview-plus/components/u-overlay/props.js @@ -0,0 +1,25 @@ +import defprops from '../../libs/config/props'; +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: defprops.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: defprops.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: defprops.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: defprops.overlay.opacity + } + } +} diff --git a/node_modules/uview-plus/components/u-overlay/u-overlay.vue b/node_modules/uview-plus/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..8c31751 --- /dev/null +++ b/node_modules/uview-plus/components/u-overlay/u-overlay.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/node_modules/uview-plus/components/u-parse/node/node.vue b/node_modules/uview-plus/components/u-parse/node/node.vue new file mode 100644 index 0000000..06035de --- /dev/null +++ b/node_modules/uview-plus/components/u-parse/node/node.vue @@ -0,0 +1,576 @@ +