diff --git a/.eslintrc b/.eslintrc index 56c26d0b0..c435e6b66 100644 --- a/.eslintrc +++ b/.eslintrc @@ -29,6 +29,8 @@ "files": ["src/*.js","src/**/*.js", "demo/*.js", "demo/**/*.js", "i18n/**/*.js", "i18n/*.js", "test/**/*.js", "test/*.js"], "extends": "plugin:@fui/es5", "rules": { + "no-param-reassign": "off", + "quotes": [2, "double"], "comma-dangle": ["error", "never"] // 多行对象字面量中要求拖尾逗号 } }, { diff --git a/.gitignore b/.gitignore index 5305d4e56..7ccb96f74 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ unit.test.statistic.json package-lock.json yarn.lock *.tgz -dist/ \ No newline at end of file +dist/ diff --git a/.npmignore b/.npmignore index bf0de0497..a6aad7230 100644 --- a/.npmignore +++ b/.npmignore @@ -1,7 +1,6 @@ * -!src/less/*.less -!src/less/lib/*.less -!src/less/resource/*.less +!public/less/*.less +!src/less/**/* !dist/lib/*.d.ts !dist/lib/**/*.d.ts !dist/font.css @@ -37,3 +36,5 @@ !babel.config.js !babel.config.ie8.js !.eslintrc +!dist/2.0/jsy.min.css +!dist/2.0/bi.min.css diff --git a/babel.config.ie8.js b/babel.config.ie8.js deleted file mode 100644 index 6cf5fffe7..000000000 --- a/babel.config.ie8.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@fui/babel-preset-fineui').configs.ie8; diff --git a/bi.lessconfig.json b/bi.lessconfig.json new file mode 100644 index 000000000..d4042b18d --- /dev/null +++ b/bi.lessconfig.json @@ -0,0 +1,32 @@ +{ + "@color-primary": "#2C60DB", + "@color-green-100": "#3FC47B", + "@color-light-blue-100": "#19B8EA", + "@color-orange-100": "#FAAA39", + "@color-red-100": "#E65251", + "@color-black": "#000A19", + "@color-light-gray": "#ECEEF3", + "@color-light-gray-theme-dark": "#292F45", + "@border-color-dark-line": "#2E3A4D", + "@color-sliver-theme-dark": "#363E55", + "@border-color-disabled": "#E7E8EB", + + "@color-bi-background-active-radio": "transparent", + "@color-bi-background-active-radio-content": "#2C60DB", + "@color-bi-background-disabled-active-radio-content": "#D0D4DA", + "@color-bi-background-disabled-active-radio-content-theme-dark": "#606479", + "@color-bi-background-disabled-active-checkbox-content": "#D0D4DA", + "@color-bi-background-disabled-active-checkbox-content-theme-dark": "#606479", + "@color-bi-background-tooltip-success": "#2E3A4D", + "@color-bi-text-header-background": "#647185", + "@color-bi-border-tooltip-success": "#2E3A4D", + "@color-bi-background-toast-success": "#FFFFFF", + "@color-bi-background-toast-warning": "#FFFFFF", + "@color-bi-background-toast-error": "#FFFFFF", + "@color-bi-background-toast-normal": "#FFFFFF", + "@color-bi-color-toast-success": "#3FC47B", + "@color-bi-color-toast-warning": "#FAAA39", + "@color-bi-color-toast-error": "#E65251", + "@color-bi-color-toast-normal": "#2C60DB", + "@color-bi-color-toast-text": "#000A19" +} diff --git a/changelog.md b/changelog.md index 74d3a0360..f6824f6d6 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,23 @@ # 更新日志 +2.0(2022-01) +- 提供自定义表单 + +2.0(2021-12) +- 新增Context组件 +- toast支持closable属性,可控制是否显示关闭按钮 +- 新增气泡弹框控件 +- BI.point支持widget添加埋点 +- childContext废弃,替换成provide +- 支持BI.useContext获取上下文环境 +- BI.Msg.alert支持message传json格式 +- 支持BI.config(function(){})进行系统配置 + +2.0(2021-11) +- 限制了复选下拉框一次粘贴添加值个数最大2000 + 2.0(2021-10) - combo增加window.blur事件触发隐藏 + 2.0(2021-09) - 支持自动watch - 支持h函数传递left、right,优化left_right_vertical_adapt布局的jsx写法 diff --git a/demo/app.js b/demo/app.js index 5bc38b985..5fd4f30c3 100644 --- a/demo/app.js +++ b/demo/app.js @@ -40,7 +40,7 @@ BI.$(function () { height: 100 }, { type: "bi.router_view", - name: 'home', + name: 'tool-buttons', deps: 1 }] }); @@ -49,12 +49,6 @@ BI.$(function () { path: '', components: { default: function () { - return Promise.resolve({ - type: "bi.label", - text: 'default' - }); - }, - home: function () { return Promise.resolve({ type: "bi.label", text: 'home' @@ -73,11 +67,19 @@ BI.$(function () { }, { name: 'tables', path: 'tables/:id', - component: function () { - return Promise.resolve({ - type: "bi.label", - text: 'tables' - }); + components: { + default: function () { + return Promise.resolve({ + type: "bi.label", + text: 'table-view' + }); + }, + "tool-buttons": function () { + return Promise.resolve({ + type: "bi.label", + text: '预览按钮', + }); + }, } }] }]; diff --git a/demo/js/base/tip/demo.toast.js b/demo/js/base/tip/demo.toast.js index 9d0352a6f..fcb845964 100644 --- a/demo/js/base/tip/demo.toast.js +++ b/demo/js/base/tip/demo.toast.js @@ -10,7 +10,9 @@ Demo.Toast = BI.inherit(BI.Widget, { text: "简单Toast测试(success)", height: 30, handler: function () { - BI.Msg.toast("这是一条简单的数据"); + BI.Msg.toast("这是一条简单的数据", { + level: "success" + }); } } }, { @@ -20,7 +22,7 @@ Demo.Toast = BI.inherit(BI.Widget, { height: 30, handler: function () { BI.Msg.toast("这是一条很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长的数据", { - level: "normal" + }); } } diff --git a/demo/js/component/demo.form.js b/demo/js/component/demo.form.js new file mode 100644 index 000000000..31ca38195 --- /dev/null +++ b/demo/js/component/demo.form.js @@ -0,0 +1,100 @@ +/** + * @author windy + * @version 2.0 + * Created by windy on 2022/1/11 + */ +Demo.Form = BI.inherit(BI.Widget, { + props: { + baseCls: "demo-form" + }, + render: function () { + var widget = BI.createWidget({ + type: "bi.custom_form", + width: 300, + labelWidth: 100, + items: [{ + validate: function (v) { + return v !== "a" && v !== ""; + }, + tip: function (v) { + if (BI.isEmpty(v)) { + return "不能为空"; + } + return "不合法格式" + }, + label: "E-mail", + el: { + type: 'bi.text_editor', + watermark: "输入a报错", + allowBlank: true, + } + }, { + validate: function (v) { + return BI.isNotEmptyArray(v); + }, + tip: function () { + return "不能为空"; + }, + label: "性别", + el: { + type: 'bi.text_value_combo', + text: "请选择", + items: [{ + text: "男", + value: 1 + }, { + text: "女", + value: 2 + }] + } + }, { + validate: function (v) { + return v !== ""; + }, + tip: function () { + return "不能为空"; + }, + label: "姓名", + el: { + type: 'bi.text_editor', + watermark: "输入姓名", + allowBlank: true, + } + }, { + validate: function (v) { + return v !== ""; + }, + tip: function () { + return "不能为空"; + }, + label: "姓名", + el: { + type: 'bi.textarea_editor', + cls: 'bi-border', + watermark: "输入简介", + allowBlank: true, + height: 200, + } + }], + layout: { + type: "bi.vertical", + vgap: 30 + } + }); + return { + type: "bi.vertical", + hgap: 200, + vgap: 10, + items: [widget, { + type: "bi.button", + text: "提交", + handler: function () { + widget.validate(); + + console.log(widget.getValue()); + } + }] + }; + } +}); +BI.shortcut("demo.form", Demo.Form); \ No newline at end of file diff --git a/demo/js/config/component.js b/demo/js/config/component.js index 32f67a3e4..e6bbb9cf0 100644 --- a/demo/js/config/component.js +++ b/demo/js/config/component.js @@ -20,4 +20,8 @@ Demo.COMPONENT_CONFIG = [{ pId: 5, text: "bi.tree_value_chooser_pane", value: "demo.tree_value_chooser_pane" +}, { + pId: 5, + text: "demo.form", + value: "demo.form" }]; \ No newline at end of file diff --git a/dist/fix/fix.compact.js b/dist/fix/fix.compact.js index 69a0a3196..b8e49eb28 100644 --- a/dist/fix/fix.compact.js +++ b/dist/fix/fix.compact.js @@ -55,6 +55,8 @@ Fix.Model.target = target = targetStack.pop(); } + BI.Model = Fix.Model; + var oldWatch = Fix.watch; Fix.watch = function (model, expOrFn, cb, options) { if (BI.isPlainObject(cb)) { @@ -97,23 +99,17 @@ } } - // _.each(["populate", "addItems", "prependItems"], function (name) { - // var old = BI.Loader.prototype[name]; - // BI.Loader.prototype[name] = function () { - // BI.Widget.pushContext(this); - // try { - // var result = old.apply(this, arguments); - // } catch (e) { - // console.error(e); - // } - // BI.Widget.popContext(); - // return result; - // }; - // }); - function createStore () { var needPop = false; - if (_global.Fix && this._store) { + var workerMode = BI.Providers.getProvider("bi.provider.system").getWorkerMode(); + if (workerMode && this._worker) { + return; + } + if (this.store) { + pushTarget(this.store); + return true; + } + if (this._store) { var store = findStore(this.options.context || this._parent || this.options.element || this._context); if (store) { pushTarget(store); @@ -146,22 +142,20 @@ needPop && popTarget(); }; - var _render = BI.Widget.prototype._render; - BI.Widget.prototype._render = function () { - var needPop = false; - if (_global.Fix && this._store) { - needPop = true; - pushTarget(this.store); + var __initWatch = BI.Widget.prototype.__initWatch; + BI.Widget.prototype.__initWatch = function () { + __initWatch.apply(this, arguments); + var workerMode = BI.Providers.getProvider("bi.provider.system").getWorkerMode(); + if (workerMode && this._worker) { + return; } - _render.apply(this, arguments); - if (_global.Fix && this._store) { + if (this._store) { initWatch(this, this.watch); } - needPop && popTarget(); }; - var unMount = BI.Widget.prototype.__d; - BI.Widget.prototype.__d = function () { + var unMount = BI.Widget.prototype.__destroy; + BI.Widget.prototype.__destroy = function () { try { unMount.apply(this, arguments); } catch (e) { @@ -183,7 +177,7 @@ delete this.__cacheStore; }; - _.each(["__afterRender", "_mount", "__afterMount"], function (name) { + _.each(["_render", "__afterRender", "_mount", "__afterMount"], function (name) { var old = BI.Widget.prototype[name]; old && (BI.Widget.prototype[name] = function () { this.store && pushTarget(this.store); diff --git a/dist/fix/fix.js b/dist/fix/fix.js index 3e93f1601..6e1d60013 100644 --- a/dist/fix/fix.js +++ b/dist/fix/fix.js @@ -90,12 +90,13 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons } } - var bailRE = /[^\w.$]/; + // const bailRE = /[^\w.$]/ function parsePath(path) { - if (bailRE.test(path)) { - return; - } + // 正常表达式比较慢,能不要的就不要了 + // if (bailRE.test(path)) { + // return + // } var segments = path.split('.'); return function (obj) { for (var i = 0; i < segments.length; i++) { @@ -134,8 +135,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons setImmediate(nextTickHandler); }; } else if (typeof MessageChannel !== 'undefined' && (isNative(MessageChannel) || - // PhantomJS - MessageChannel.toString() === '[object MessageChannelConstructor]')) { + // PhantomJS + MessageChannel.toString() === '[object MessageChannelConstructor]')) { var channel = new MessageChannel(); var port = channel.port2; channel.port1.onmessage = nextTickHandler; @@ -144,18 +145,18 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons }; } else /* istanbul ignore next */ - if (typeof Promise !== 'undefined' && isNative(Promise)) { - // use microtask in non-DOM environments, e.g. Weex - var p = Promise.resolve(); - timerFunc = function timerFunc() { - p.then(nextTickHandler); - }; - } else { - // fallback to setTimeout - timerFunc = function timerFunc() { - setTimeout(nextTickHandler, 0); - }; - } + if (typeof Promise !== 'undefined' && isNative(Promise)) { + // use microtask in non-DOM environments, e.g. Weex + var p = Promise.resolve(); + timerFunc = function timerFunc() { + p.then(nextTickHandler); + }; + } else { + // fallback to setTimeout + timerFunc = function timerFunc() { + setTimeout(nextTickHandler, 0); + }; + } return function queueNextTick(cb, ctx) { var _resolve = void 0; @@ -294,7 +295,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons if (isIE9Below) { var VBClassPool = {}; window.execScript([// jshint ignore:line - 'Function parseVB(code)', '\tExecuteGlobal(code)', 'End Function' //转换一段文本为VB代码 + 'Function parseVB(code)', '\tExecuteGlobal(code)', 'End Function' //转换一段文本为VB代码 ].join('\n'), 'VBScript'); var VBMediator = function VBMediator(instance, accessors, name, value) { @@ -310,7 +311,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons // jshint ignore:line var buffer = []; buffer.push('\tPrivate [$vbsetter]', '\tPublic [$accessors]', '\tPublic Default Function [$vbthis](ac' + timeBucket + ', s' + timeBucket + ')', '\t\tSet [$accessors] = ac' + timeBucket + ': set [$vbsetter] = s' + timeBucket, '\t\tSet [$vbthis] = Me', //链式调用 - '\tEnd Function'); + '\tEnd Function'); //添加普通属性,因为VBScript对象不能像JS那样随意增删属性,必须在这里预先定义好 var uniq = { $vbthis: true, @@ -330,12 +331,12 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons } uniq[name] = true; buffer.push( - //由于不知对方会传入什么,因此set, let都用上 - '\tPublic Property Let [' + name + '](val' + timeBucket + ')', //setter - '\t\tCall [$vbsetter](Me, [$accessors], "' + name + '", val' + timeBucket + ')', '\tEnd Property', '\tPublic Property Set [' + name + '](val' + timeBucket + ')', //setter - '\t\tCall [$vbsetter](Me, [$accessors], "' + name + '", val' + timeBucket + ')', '\tEnd Property', '\tPublic Property Get [' + name + ']', //getter - '\tOn Error Resume Next', //必须优先使用set语句,否则它会误将数组当字符串返回 - '\t\tSet[' + name + '] = [$vbsetter](Me, [$accessors],"' + name + '")', '\tIf Err.Number <> 0 Then', '\t\t[' + name + '] = [$vbsetter](Me, [$accessors],"' + name + '")', '\tEnd If', '\tOn Error Goto 0', '\tEnd Property'); + //由于不知对方会传入什么,因此set, let都用上 + '\tPublic Property Let [' + name + '](val' + timeBucket + ')', //setter + '\t\tCall [$vbsetter](Me, [$accessors], "' + name + '", val' + timeBucket + ')', '\tEnd Property', '\tPublic Property Set [' + name + '](val' + timeBucket + ')', //setter + '\t\tCall [$vbsetter](Me, [$accessors], "' + name + '", val' + timeBucket + ')', '\tEnd Property', '\tPublic Property Get [' + name + ']', //getter + '\tOn Error Resume Next', //必须优先使用set语句,否则它会误将数组当字符串返回 + '\t\tSet[' + name + '] = [$vbsetter](Me, [$accessors],"' + name + '")', '\tIf Err.Number <> 0 Then', '\t\t[' + name + '] = [$vbsetter](Me, [$accessors],"' + name + '")', '\tEnd If', '\tOn Error Goto 0', '\tEnd Property'); } for (name in properties) { @@ -353,7 +354,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons className = makeHashCode('VBClass'); window.parseVB('Class ' + className + body); window.parseVB(['Function ' + className + 'Factory(acc, vbm)', //创建实例并传入两个关键的参数 - '\tDim o', '\tSet o = (New ' + className + ')(acc, vbm)', '\tSet ' + className + 'Factory = o', 'End Function'].join('\r\n')); + '\tDim o', '\tSet o = (New ' + className + ')(acc, vbm)', '\tSet ' + className + 'Factory = o', 'End Function'].join('\r\n')); VBClassPool[body] = className; } var ret = window[className + 'Factory'](accessors, VBMediator); //得到其产品 @@ -537,10 +538,10 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons if (this.active) { var value = this.get(); if (value !== this.value || - // Deep watchers and watchers on Object/Arrays should fire even - // when the value is the same, because the value may - // have mutated. - _.isObject(value) && options && options.refresh || this.deep) { + // Deep watchers and watchers on Object/Arrays should fire even + // when the value is the same, because the value may + // have mutated. + _.isObject(value) && options && options.refresh || this.deep) { // set new value var oldValue = this.value; this.value = value; @@ -578,7 +579,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons // remove self from vm's watcher list // this is a somewhat expensive operation so we skip it // if the vm is being destroyed. - remove(this.vm._watchers, this); + remove(this.vm && this.vm._watchers, this); var i = this.deps.length; while (i--) { this.deps[i].removeSub(this); @@ -903,6 +904,10 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons return target; } + function freeze() { + return Object.freeze.apply(null, arguments); + } + /** * Delete a property and trigger change if necessary. */ @@ -975,7 +980,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons options = options || {}; options.user = true; var exps = void 0; - if (_.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { + if (_.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && expOrFn.indexOf("*") < 0) { var watcher = new Watcher(model, expOrFn, cb, options); if (options.immediate) { cb(watcher.value); @@ -1016,45 +1021,96 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons if (_.has(operators, exp)) { return; } - //a.**或a.*形式 - if (/^[1-9a-zA-Z.]+(\*\*$|\*$)/.test(exp) || exp === "**") { - var isGlobal = /\*\*$/.test(exp); - if (isGlobal) { - //a.**的形式 - exp = exp.replace(".**", ""); - } else { - //a.*的形式 - exp = exp.replace(".*", ""); + if (exp.indexOf("*") >= 0) { + //a.**或a.*形式 + if (/^[1-9a-zA-Z.]+(\*\*$|\*$)/.test(exp) || exp === "**" || exp === "*") { + var isGlobal = exp.indexOf("**") >= 0; + if (isGlobal) { + //a.**的形式 + exp = exp.replace(".**", ""); + } else { + //a.*的形式 + exp = exp.replace(".*", ""); + } + var getter = exp === "**" || exp === "*" ? function (m) { + return m; + } : parsePath(exp); + var v = getter.call(model, model); + var _dep = new Dep(); + if (isGlobal) { + (v.__ob__._scopeDeps || (v.__ob__._scopeDeps = [])).push(_dep); + } else { + (v.__ob__._deps || (v.__ob__._deps = [])).push(_dep); + } + var _w = new Watcher(model, function () { + _dep.depend(); + return NaN; + }, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + _w.teardown(); + v.__ob__._scopeDeps && remove(v.__ob__._scopeDeps, _dep); + v.__ob__._deps && remove(v.__ob__._deps, _dep); + }); + return; } - var getter = exp === "**" ? function (m) { - return m; - } : parsePath(exp); - var v = getter.call(model, model); - var dep = new Dep(); - if (isGlobal) { - (v.__ob__._scopeDeps || (v.__ob__._scopeDeps = [])).push(dep); - } else { - (v.__ob__._deps || (v.__ob__._deps = [])).push(dep); + // **.a.**的情况,场景:a.b.c, 如果用b.**监听, a被重新赋值b上的_scopeDes就不存在了 + if (/^(\*\*\.)+[1-9a-zA-Z]+(\.\*\*$)/.test(exp)) { + //先获取到能获取到的对象 + var _paths = exp.split("."); + var _currentModel = model[_paths[1]]; + exp = _paths[1] + ".**"; + //补全路径 + var _parent = _currentModel.__ob__.parent, + _root = _currentModel.__ob__; + while (_parent) { + exp = '*.' + exp; + _root = _parent; + _parent = _parent.parent; + } + var _regStr = routeToRegExp(exp); + var _dep2 = new Dep(); + _root._globalDeps || (_root._globalDeps = {}); + if (_.isArray(_root._globalDeps[_regStr])) { + _root._globalDeps[_regStr].push(_dep2); + } else { + _root._globalDeps[_regStr] = [_dep2]; + } + + var _w2 = new Watcher(_currentModel, function () { + _dep2.depend(); + return NaN; + }, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + if (_root._globalDeps) { + remove(_root._globalDeps[_regStr], _dep2); + + if (_root._globalDeps[_regStr].length === 0) { + delete _root._globalDeps[_regStr]; + _w2.teardown(); + } + } + }); + return; } - var w = new Watcher(model, function () { - dep.depend(); - return NaN; - }, function (newValue, oldValue, attrs) { - callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); - }, options); - watchers.push(function unwatchFn() { - w.teardown(); - v.__ob__._scopeDeps && remove(v.__ob__._scopeDeps, dep); - v.__ob__._deps && remove(v.__ob__._deps, dep); - }); - return; - } - // **.a.**的情况,场景:a.b.c, 如果用b.**监听, a被重新赋值b上的_scopeDes就不存在了 - if (/^(\*\*\.)+[1-9a-zA-Z]+(\.\*\*$)/.test(exp)) { + // 再有结尾有*的就不支持了 + if (exp[exp.length - 1] === "*") { + throw new Error('not support'); + } + //其他含有*的情况,如*.a,*.*.a,a.*.a + var currentModel = model; //先获取到能获取到的对象 var paths = exp.split("."); - var currentModel = model[paths[1]]; - exp = paths[1] + ".**"; + for (var _i = 0, len = paths.length; _i < len; _i++) { + if (paths[_i] === "*") { + break; + } + currentModel = model[paths[_i]]; + } + exp = exp.substr(exp.indexOf("*")); //补全路径 var parent = currentModel.__ob__.parent, root = currentModel.__ob__; @@ -1064,77 +1120,26 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons parent = parent.parent; } var regStr = routeToRegExp(exp); - var _dep = new Dep(); + var dep = new Dep(); root._globalDeps || (root._globalDeps = {}); if (_.isArray(root._globalDeps[regStr])) { - root._globalDeps[regStr].push(_dep); + root._globalDeps[regStr].push(dep); } else { - root._globalDeps[regStr] = [_dep]; + root._globalDeps[regStr] = [dep]; } - var _w = new Watcher(currentModel, function () { - _dep.depend(); + var w = new Watcher(currentModel, function () { + dep.depend(); return NaN; }, function (newValue, oldValue, attrs) { callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); }, options); watchers.push(function unwatchFn() { if (root._globalDeps) { - remove(root._globalDeps[regStr], _dep); - + remove(root._globalDeps[regStr], dep); if (root._globalDeps[regStr].length === 0) { delete root._globalDeps[regStr]; - _w.teardown(); - } - } - }); - return; - } - if (/\*\*$|\*$/.test(exp)) { - throw new Error('not support'); - } - //其他含有*的情况,如*.a,*.*.a,a.*.a - if (/\*/.test(exp)) { - var _currentModel = model; - //先获取到能获取到的对象 - var _paths = exp.split("."); - for (var _i = 0, len = _paths.length; _i < len; _i++) { - if (_paths[_i] === "*") { - break; - } - _currentModel = model[_paths[_i]]; - } - exp = exp.substr(exp.indexOf("*")); - //补全路径 - var _parent = _currentModel.__ob__.parent, - _root = _currentModel.__ob__; - while (_parent) { - exp = '*.' + exp; - _root = _parent; - _parent = _parent.parent; - } - var _regStr = routeToRegExp(exp); - var _dep2 = new Dep(); - _root._globalDeps || (_root._globalDeps = {}); - if (_.isArray(_root._globalDeps[_regStr])) { - _root._globalDeps[_regStr].push(_dep2); - } else { - _root._globalDeps[_regStr] = [_dep2]; - } - - var _w2 = new Watcher(_currentModel, function () { - _dep2.depend(); - return NaN; - }, function (newValue, oldValue, attrs) { - callback(i, newValue, oldValue, _.extend({ index: i }, attrs)); - }, options); - watchers.push(function unwatchFn() { - if (_root._globalDeps) { - remove(_root._globalDeps[_regStr], _dep2); - - if (_root._globalDeps[_regStr].length === 0) { - delete _root._globalDeps[_regStr]; - _w2.teardown(); + w.teardown(); } } }); @@ -1420,12 +1425,15 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var context = this.context; var inject = this.inject; var childContext = this.childContext; + var provide = this.provide; var watch$$1 = this.watch; var actions = this.actions; var keys = _.keys(this.$$model).concat(_.keys(state)).concat(_.keys(computed)).concat(inject || []).concat(context || []); var mixins = this.mixins; defineProps(this, keys); + // deprecated childContext && defineContext(this, childContext); + provide && defineContext(this, provide); this.$$model && (this.model.__ob__ = this.$$model.__ob__); initMixins(this, mixins); this.init(); @@ -1515,6 +1523,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons exports.notify = notify; exports.defineReactive = defineReactive; exports.set = set; + exports.freeze = freeze; exports.del = del; exports.Watcher = Watcher; exports.pushTarget = pushTarget; diff --git a/dist/fix/fix.proxy.js b/dist/fix/fix.proxy.js index 513db8d93..19eca6178 100644 --- a/dist/fix/fix.proxy.js +++ b/dist/fix/fix.proxy.js @@ -1,2035 +1,2478 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Fix = {})); + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Fix = {})); }(this, (function (exports) { 'use strict'; - function _typeof(obj) { - "@babel/helpers - typeof"; + function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _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; + } - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); + } + + function _iterableToArrayLimit(arr, i) { + var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; + + if (_i == null) return; + var _arr = []; + var _n = true; + var _d = false; + + var _s, _e; + + try { + for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _createForOfIteratorHelper(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + + if (!it) { + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + + var F = function () {}; + + return { + s: F, + n: function () { + if (i >= o.length) return { + done: true }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + return { + done: false, + value: o[i++] }; - } - - return _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 _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; - } - - var EMPTY_OBJ = Object.freeze({}); - Object.freeze([]); - var extend = Object.assign; - var hasOwnProperty = Object.prototype.hasOwnProperty; - - var hasOwn = function hasOwn(val, key) { - return hasOwnProperty.call(val, key); + }, + e: function (e) { + throw e; + }, + f: F + }; + } + + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var normalCompletion = true, + didErr = false, + err; + return { + s: function () { + it = it.call(o); + }, + n: function () { + var step = it.next(); + normalCompletion = step.done; + return step; + }, + e: function (e) { + didErr = true; + err = e; + }, + f: function () { + try { + if (!normalCompletion && it.return != null) it.return(); + } finally { + if (didErr) throw err; + } + } }; - - var isArray = Array.isArray; - - var isMap$1 = function isMap(val) { - return toTypeString$1(val) === "[object Map]"; + } + + /** + * Make a map and return a function for checking if a key + * is in that map. + * IMPORTANT: all calls of this function must be prefixed with + * \/\*#\_\_PURE\_\_\*\/ + * So that rollup can tree-shake them if necessary. + */ + function makeMap(str, expectsLowerCase) { + var map = Object.create(null); + var list = str.split(','); + + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; + } + + return expectsLowerCase ? function (val) { + return !!map[val.toLowerCase()]; + } : function (val) { + return !!map[val]; }; + } - var isFunction = function isFunction(val) { - return typeof val === "function"; - }; + Object.freeze({}); + Object.freeze([]); + var extend = Object.assign; + var hasOwnProperty = Object.prototype.hasOwnProperty; - var isString = function isString(val) { - return typeof val === "string"; - }; + var hasOwn = function hasOwn(val, key) { + return hasOwnProperty.call(val, key); + }; - var isSymbol = function isSymbol(val) { - return _typeof(val) === "symbol"; - }; + var isArray = Array.isArray; - var isObject = function isObject(val) { - return val !== null && _typeof(val) === "object"; - }; + var isMap$1 = function isMap(val) { + return toTypeString$1(val) === '[object Map]'; + }; - var objectToString$1 = Object.prototype.toString; + var isFunction = function isFunction(val) { + return typeof val === 'function'; + }; - var toTypeString$1 = function toTypeString(value) { - return objectToString$1.call(value); - }; + var isString = function isString(val) { + return typeof val === 'string'; + }; - var toRawType = function toRawType(value) { - return (// extract "RawType" from strings like "[object RawType]" - toTypeString$1(value).slice(8, -1) - ); - }; + var isSymbol = function isSymbol(val) { + return _typeof(val) === 'symbol'; + }; - var isIntegerKey = function isIntegerKey(key) { - return isString(key) && key !== "NaN" && key[0] !== "-" && "".concat(parseInt(key, 10)) === key; - }; + var isObject = function isObject(val) { + return val !== null && _typeof(val) === 'object'; + }; - var cacheStringFunction = function cacheStringFunction(fn) { - var cache = Object.create(null); - return function (str) { - var hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; - }; - /** - * @private - */ + var objectToString$1 = Object.prototype.toString; + var toTypeString$1 = function toTypeString(value) { + return objectToString$1.call(value); + }; - var capitalize = cacheStringFunction(function (str) { - return str.charAt(0).toUpperCase() + str.slice(1); - }); // compare whether a value has changed, accounting for NaN. + var toRawType = function toRawType(value) { + // extract "RawType" from strings like "[object RawType]" + return toTypeString$1(value).slice(8, -1); + }; - var hasChanged$1 = function hasChanged(value, oldValue) { - return value !== oldValue && (value === value || oldValue === oldValue); - }; + var isIntegerKey = function isIntegerKey(key) { + return isString(key) && key !== 'NaN' && key[0] !== '-' && '' + parseInt(key, 10) === key; + }; - var targetMap = new WeakMap(); - var effectStack = []; - var activeEffect; - var ITERATE_KEY = Symbol("iterate"); - var MAP_KEY_ITERATE_KEY = Symbol("Map key iterate"); + var cacheStringFunction = function cacheStringFunction(fn) { + var cache = Object.create(null); + return function (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + /** + * @private + */ - function isEffect(fn) { - return fn && fn._isEffect === true; - } - function effect(fn) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EMPTY_OBJ; + var capitalize = cacheStringFunction(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1); + }); // compare whether a value has changed, accounting for NaN. - if (isEffect(fn)) { - fn = fn.raw; - } + var hasChanged$1 = function hasChanged(value, oldValue) { + return !Object.is(value, oldValue); + }; - var effect = createReactiveEffect(fn, options); + var activeEffectScope; - if (!options.lazy) { - effect(); - } + function recordEffectScope(effect, scope) { + scope = scope || activeEffectScope; - return effect; + if (scope && scope.active) { + scope.effects.push(effect); } + } - function stop(effect) { - if (effect.active) { - cleanup(effect); + var createDep = function createDep(effects) { + var dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; + }; - if (effect.options.onStop) { - effect.options.onStop(); - } + var wasTracked = function wasTracked(dep) { + return (dep.w & trackOpBit) > 0; + }; - effect.active = false; - } - } - - var uid$1 = 0; + var newTracked = function newTracked(dep) { + return (dep.n & trackOpBit) > 0; + }; - function createReactiveEffect(fn, options) { - var effect = function reactiveEffect() { - if (!effect.active) { - return options.scheduler ? undefined : fn(); - } - - if (!effectStack.includes(effect)) { - cleanup(effect); - - try { - enableTracking(); - effectStack.push(effect); - activeEffect = effect; - return fn(); - } finally { - effectStack.pop(); - resetTracking(); - activeEffect = effectStack[effectStack.length - 1]; - } - } - }; + var initDepMarkers = function initDepMarkers(_ref) { + var deps = _ref.deps; - effect.id = uid$1++; - effect.allowRecurse = !!options.allowRecurse; - effect._isEffect = true; - effect.active = true; - effect.raw = fn; - effect.deps = []; - effect.options = options; - return effect; + if (deps.length) { + for (var i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; // set was tracked + } } + }; - function cleanup(effect) { - var deps = effect.deps; + var finalizeDepMarkers = function finalizeDepMarkers(effect) { + var deps = effect.deps; - if (deps.length) { - for (var i = 0; i < deps.length; i++) { - deps[i].delete(effect); - } + if (deps.length) { + var ptr = 0; - deps.length = 0; - } - } + for (var i = 0; i < deps.length; i++) { + var dep = deps[i]; - var shouldTrack = true; - var trackStack = []; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect); + } else { + deps[ptr++] = dep; + } // clear bits - function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; - } - function enableTracking() { - trackStack.push(shouldTrack); - shouldTrack = true; - } + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } - function resetTracking() { - var last = trackStack.pop(); - shouldTrack = last === undefined ? true : last; + deps.length = ptr; } + }; - function track(target, type, key) { - if (!shouldTrack || activeEffect === undefined) { - return; - } + var targetMap = new WeakMap(); // The number of effects currently being tracked recursively. - var depsMap = targetMap.get(target); + var effectTrackDepth = 0; + var trackOpBit = 1; + /** + * The bitwise track markers support at most 30 levels of recursion. + * This value is chosen to enable modern JS engines to use a SMI on all platforms. + * When recursion depth is greater, fall back to using a full cleanup. + */ - if (!depsMap) { - targetMap.set(target, depsMap = new Map()); - } + var maxMarkerBits = 30; + var effectStack = []; + var activeEffect; + var ITERATE_KEY = Symbol('iterate'); + var MAP_KEY_ITERATE_KEY = Symbol('Map key iterate'); - var dep = depsMap.get(key); + var ReactiveEffect = /*#__PURE__*/function () { + function ReactiveEffect(fn) { + var scheduler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var scope = arguments.length > 2 ? arguments[2] : undefined; - if (!dep) { - depsMap.set(key, dep = new Set()); - } + _classCallCheck(this, ReactiveEffect); - if (!dep.has(activeEffect)) { - dep.add(activeEffect); - activeEffect.deps.push(dep); - - if (activeEffect.options.onTrack) { - activeEffect.options.onTrack({ - effect: activeEffect, - target: target, - type: type, - key: key - }); - } - } + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + recordEffectScope(this, scope); } - function trigger(target, type, key, newValue, oldValue, oldTarget) { - var depsMap = targetMap.get(target); - - if (!depsMap) { - // never been tracked - return; + _createClass(ReactiveEffect, [{ + key: "run", + value: function run() { + if (!this.active) { + return this.fn(); } - var effects = new Set(); - - var add = function add(effectsToAdd) { - if (effectsToAdd) { - effectsToAdd.forEach(function (effect) { - if (effect !== activeEffect || effect.allowRecurse) { - effects.add(effect); - } - }); - } - }; - - if (type === "clear" - /* CLEAR */ - ) { - // collection being cleared - // trigger all effects for target - depsMap.forEach(add); - } else if (key === "length" && isArray(target)) { - depsMap.forEach(function (dep, key) { - if (key === "length" || key >= newValue) { - add(dep); - } - }); - } else { - // schedule runs for SET | ADD | DELETE - if (key !== void 0) { - add(depsMap.get(key)); - } // also run for iteration key on ADD | DELETE | Map.SET - - - switch (type) { - case "add" - /* ADD */ - : - if (!isArray(target)) { - add(depsMap.get(ITERATE_KEY)); - - if (isMap$1(target)) { - add(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (isIntegerKey(key)) { - // new index added to array -> length changes - add(depsMap.get("length")); - } - - break; - - case "delete" - /* DELETE */ - : - if (!isArray(target)) { - add(depsMap.get(ITERATE_KEY)); - - if (isMap$1(target)) { - add(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - - break; - - case "set" - /* SET */ - : - if (isMap$1(target)) { - add(depsMap.get(ITERATE_KEY)); - } - - break; - } - } - - var run = function run(effect) { - if (effect.options.onTrigger) { - effect.options.onTrigger({ - effect: effect, - target: target, - key: key, - type: type, - newValue: newValue, - oldValue: oldValue, - oldTarget: oldTarget - }); - } - - if (effect.options.scheduler) { - effect.options.scheduler(effect); - } else { - effect(); - } - }; - - effects.forEach(run); - } - - var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map(function (key) { - return Symbol[key]; - }).filter(isSymbol)); - var get = /* #__PURE__*/createGetter(); - var shallowGet = /* #__PURE__*/createGetter(false, true); - var readonlyGet = /* #__PURE__*/createGetter(true); - var shallowReadonlyGet = /* #__PURE__*/createGetter(true, true); - var arrayInstrumentations = {}; - ["includes", "indexOf", "lastIndexOf"].forEach(function (key) { - var method = Array.prototype[key]; - - arrayInstrumentations[key] = function () { - var arr = toRaw(this); - - for (var i = 0, l = this.length; i < l; i++) { - track(arr, "get" - /* GET */ - , "".concat(i)); - } // we run the method using the original args first (which may be reactive) - - - for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) { - args[_key2] = arguments[_key2]; - } - - var res = method.apply(arr, args); + if (!effectStack.includes(this)) { + try { + effectStack.push(activeEffect = this); + enableTracking(); + trackOpBit = 1 << ++effectTrackDepth; - if (res === -1 || res === false) { - // if that didn't work, run it again using raw values. - return method.apply(arr, args.map(toRaw)); + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); } else { - return res; + cleanupEffect(this); } - }; - }); - ["push", "pop", "shift", "unshift", "splice"].forEach(function (key) { - var method = Array.prototype[key]; - - arrayInstrumentations[key] = function () { - pauseTracking(); - for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { - args[_key3] = arguments[_key3]; + return this.fn(); + } finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); } - var res = method.apply(this, args); + trackOpBit = 1 << --effectTrackDepth; resetTracking(); - return res; - }; - }); - - function createGetter() { - var isReadonly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var shallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - return function get(target, key, receiver) { - if (key === "__v_isReactive" - /* IS_REACTIVE */ - ) { - return !isReadonly; - } else if (key === "__v_isReadonly" - /* IS_READONLY */ - ) { - return isReadonly; - } else if (key === "__v_raw" - /* RAW */ - && receiver === (isReadonly ? readonlyMap : reactiveMap).get(target)) { - return target; - } + effectStack.pop(); + var n = effectStack.length; + activeEffect = n > 0 ? effectStack[n - 1] : undefined; + } + } + } + }, { + key: "stop", + value: function stop() { + if (this.active) { + cleanupEffect(this); - var targetIsArray = isArray(target); + if (this.onStop) { + this.onStop(); + } - if (targetIsArray && hasOwn(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); - } + this.active = false; + } + } + }]); - var res = Reflect.get(target, key, receiver); + return ReactiveEffect; + }(); - if (isSymbol(key) ? builtInSymbols.has(key) : key === "__proto__" || key === "__v_isRef") { - return res; - } + function cleanupEffect(effect) { + var deps = effect.deps; - if (!isReadonly) { - track(target, "get" - /* GET */ - , key); - } + if (deps.length) { + for (var i = 0; i < deps.length; i++) { + deps[i].delete(effect); + } - if (shallow) { - return res; - } + deps.length = 0; + } + } - if (isRef(res)) { - // ref unwrapping - does not apply for Array + integer key. - var shouldUnwrap = !targetIsArray || !isIntegerKey(key); - return shouldUnwrap ? res.value : res; - } + function effect(fn, options) { + if (fn.effect) { + fn = fn.effect.fn; + } - if (isObject(res)) { - // Convert returned value into a proxy as well. we do the isObject check - // here to avoid invalid value warning. Also need to lazy access readonly - // and reactive here to avoid circular dependency. - return isReadonly ? readonly(res) : reactive(res); - } + var _effect = new ReactiveEffect(fn); - return res; - }; + if (options) { + extend(_effect, options); + if (options.scope) recordEffectScope(_effect, options.scope); } - var set$1 = /* #__PURE__*/createSetter(); - var shallowSet = /* #__PURE__*/createSetter(true); + if (!options || !options.lazy) { + _effect.run(); + } - function createSetter() { - var shallow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - return function set(target, key, value, receiver) { - var oldValue = target[key]; + var runner = _effect.run.bind(_effect); - if (!shallow) { - value = toRaw(value); + runner.effect = _effect; + return runner; + } - if (!isArray(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } - } + function stop(runner) { + runner.effect.stop(); + } - var hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); - var result = Reflect.set(target, key, value, receiver); // don't trigger if target is something up in the prototype chain of original - - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, "add" - /* ADD */ - , key, value); - } else if (hasChanged$1(value, oldValue) || key === "length") { - trigger(target, "set" - /* SET */ - , key, value, oldValue); - } - } + var shouldTrack = true; + var trackStack = []; - return result; - }; - } + function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; + } - function deleteProperty(target, key) { - var hadKey = hasOwn(target, key); - var oldValue = target[key]; - var result = Reflect.deleteProperty(target, key); + function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; + } - if (result && hadKey) { - trigger(target, "delete" - /* DELETE */ - , key, undefined, oldValue); - } + function resetTracking() { + var last = trackStack.pop(); + shouldTrack = last === undefined ? true : last; + } - return result; + function track(target, type, key) { + if (!isTracking()) { + return; } - function has$1(target, key) { - var result = Reflect.has(target, key); + var depsMap = targetMap.get(target); - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, "has" - /* HAS */ - , key); - } - - return result; + if (!depsMap) { + targetMap.set(target, depsMap = new Map()); } - function ownKeys(target) { - track(target, "iterate" - /* ITERATE */ - , isArray(target) ? "length" : ITERATE_KEY); - return Reflect.ownKeys(target); - } + var dep = depsMap.get(key); - var mutableHandlers = { - get: get, - set: set$1, - deleteProperty: deleteProperty, - has: has$1, - ownKeys: ownKeys - }; - var readonlyHandlers = { - get: readonlyGet, - set: function set(target, key) { - { - console.warn("Set operation on key \"".concat(String(key), "\" failed: target is readonly."), target); - } - return true; - }, - deleteProperty: function deleteProperty(target, key) { - { - console.warn("Delete operation on key \"".concat(String(key), "\" failed: target is readonly."), target); - } - return true; - } - }; - extend({}, mutableHandlers, { - get: shallowGet, - set: shallowSet - }); // Props handlers are special in the sense that it should not unwrap top-level - // refs (in order to allow refs to be explicitly passed down), but should - // retain the reactivity of the normal readonly object. - - extend({}, readonlyHandlers, { - get: shallowReadonlyGet - }); - - var toReactive = function toReactive(value) { - return isObject(value) ? reactive(value) : value; - }; - - var toReadonly = function toReadonly(value) { - return isObject(value) ? readonly(value) : value; - }; - - var toShallow = function toShallow(value) { - return value; - }; + if (!dep) { + depsMap.set(key, dep = createDep()); + } - var getProto = function getProto(v) { - return Reflect.getPrototypeOf(v); + var eventInfo = { + effect: activeEffect, + target: target, + type: type, + key: key }; + trackEffects(dep, eventInfo); + } - function get$1(target, key) { - var isReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var isShallow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; - // #1772: readonly(reactive(Map)) should return readonly + reactive version - // of the value - target = target["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var rawKey = toRaw(key); - - if (key !== rawKey) { - !isReadonly && track(rawTarget, "get" - /* GET */ - , key); - } - - !isReadonly && track(rawTarget, "get" - /* GET */ - , rawKey); + function isTracking() { + return shouldTrack && activeEffect !== undefined; + } - var _getProto = getProto(rawTarget), - has = _getProto.has; + function trackEffects(dep, debuggerEventExtraInfo) { + var shouldTrack = false; - var wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; // set newly tracked - if (has.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } + shouldTrack = !wasTracked(dep); + } + } else { + // Full cleanup mode. + shouldTrack = !dep.has(activeEffect); } - function has$1$1(key) { - var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var target = this["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var rawKey = toRaw(key); + if (shouldTrack) { + dep.add(activeEffect); + activeEffect.deps.push(dep); - if (key !== rawKey) { - !isReadonly && track(rawTarget, "has" - /* HAS */ - , key); - } - - !isReadonly && track(rawTarget, "has" - /* HAS */ - , rawKey); - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + if (activeEffect.onTrack) { + activeEffect.onTrack(Object.assign({ + effect: activeEffect + }, debuggerEventExtraInfo)); + } } + } + + function trigger(target, type, key, newValue, oldValue, oldTarget) { + var depsMap = targetMap.get(target); - function size(target) { - var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - target = target["__v_raw" - /* RAW */ - ]; - !isReadonly && track(toRaw(target), "iterate" - /* ITERATE */ - , ITERATE_KEY); - return Reflect.get(target, "size", target); + if (!depsMap) { + // never been tracked + return; } - function add(value) { - value = toRaw(value); - var target = toRaw(this); - var proto = getProto(target); - var hadKey = proto.has.call(target, value); - var result = target.add(value); + var deps = []; - if (!hadKey) { - trigger(target, "add" - /* ADD */ - , value, value); + if (type === "clear" + /* CLEAR */ + ) { + // collection being cleared + // trigger all effects for target + deps = _toConsumableArray(depsMap.values()); + } else if (key === 'length' && isArray(target)) { + depsMap.forEach(function (dep, key) { + if (key === 'length' || key >= newValue) { + deps.push(dep); } + }); + } else { + // schedule runs for SET | ADD | DELETE + if (key !== void 0) { + deps.push(depsMap.get(key)); + } // also run for iteration key on ADD | DELETE | Map.SET - return result; - } - function set$1$1(key, value) { - value = toRaw(value); - var target = toRaw(this); + switch (type) { + case "add" + /* ADD */ + : + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); - var _getProto2 = getProto(target), - has = _getProto2.has, - get = _getProto2.get; + if (isMap$1(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + // new index added to array -> length changes + deps.push(depsMap.get('length')); + } - var hadKey = has.call(target, key); + break; - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } else { - checkIdentityKeys(target, has, key); - } - - var oldValue = get.call(target, key); - var result = target.set(key, value); + case "delete" + /* DELETE */ + : + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); - if (!hadKey) { - trigger(target, "add" - /* ADD */ - , key, value); - } else if (hasChanged$1(value, oldValue) || key === "length") { - trigger(target, "set" - /* SET */ - , key, value, oldValue); - } + if (isMap$1(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } - return result; - } + break; - function deleteEntry(key) { - var target = toRaw(this); + case "set" + /* SET */ + : + if (isMap$1(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } - var _getProto3 = getProto(target), - has = _getProto3.has, - get = _getProto3.get; + break; + } + } - var hadKey = has.call(target, key); + var eventInfo = { + target: target, + type: type, + key: key, + newValue: newValue, + oldValue: oldValue, + oldTarget: oldTarget + }; - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); + if (deps.length === 1) { + if (deps[0]) { + { + triggerEffects(deps[0], eventInfo); + } + } + } else { + var effects = []; + + var _iterator = _createForOfIteratorHelper(deps), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var dep = _step.value; + + if (dep) { + effects.push.apply(effects, _toConsumableArray(dep)); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + { + triggerEffects(createDep(effects), eventInfo); + } + } + } + + function triggerEffects(dep, debuggerEventExtraInfo) { + // spread into array for stabilization + var _iterator2 = _createForOfIteratorHelper(isArray(dep) ? dep : _toConsumableArray(dep)), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var _effect2 = _step2.value; + + if (_effect2 !== activeEffect || _effect2.allowRecurse) { + if (_effect2.onTrigger) { + _effect2.onTrigger(extend({ + effect: _effect2 + }, debuggerEventExtraInfo)); + } + + if (_effect2.scheduler) { + _effect2.scheduler(); + } else { + _effect2.run(); + } + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + var isNonTrackableKeys = /*#__PURE__*/makeMap("__proto__,__v_isRef,__isVue"); + var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map(function (key) { + return Symbol[key]; + }).filter(isSymbol)); + var get = /*#__PURE__*/createGetter(); + var readonlyGet = /*#__PURE__*/createGetter(true); + var arrayInstrumentations = /*#__PURE__*/createArrayInstrumentations(); + + function createArrayInstrumentations() { + var instrumentations = {}; + ['includes', 'indexOf', 'lastIndexOf'].forEach(function (key) { + instrumentations[key] = function () { + var arr = toRaw(this); + + for (var i = 0, l = this.length; i < l; i++) { + track(arr, "get" + /* GET */ + , i + ''); + } // we run the method using the original args first (which may be reactive) + + + for (var _len2 = arguments.length, args = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { + args[_key3] = arguments[_key3]; + } + + var res = arr[key].apply(arr, args); + + if (res === -1 || res === false) { + // if that didn't work, run it again using raw values. + return arr[key].apply(arr, _toConsumableArray(args.map(toRaw))); } else { - checkIdentityKeys(target, has, key); + return res; } + }; + }); + ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(function (key) { + instrumentations[key] = function () { + pauseTracking(); - var oldValue = get ? get.call(target, key) : undefined; // forward the operation before queueing reactions - - var result = target.delete(key); - - if (hadKey) { - trigger(target, "delete" - /* DELETE */ - , key, undefined, oldValue); + for (var _len3 = arguments.length, args = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) { + args[_key4] = arguments[_key4]; } - return result; - } + var res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; + } + + function createGetter() { + var isReadonly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var shallow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + return function get(target, key, receiver) { + if (key === "__v_isReactive" + /* IS_REACTIVE */ + ) { + return !isReadonly; + } else if (key === "__v_isReadonly" + /* IS_READONLY */ + ) { + return isReadonly; + } else if (key === "__v_raw" + /* RAW */ + && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { + return target; + } + + var targetIsArray = isArray(target); + + if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + + var res = Reflect.get(target, key, receiver); + + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + + if (!isReadonly) { + track(target, "get" + /* GET */ + , key); + } + + if (shallow) { + return res; + } + + if (isRef(res)) { + // ref unwrapping - does not apply for Array + integer key. + var shouldUnwrap = !targetIsArray || !isIntegerKey(key); + return shouldUnwrap ? res.value : res; + } + + if (isObject(res)) { + // Convert returned value into a proxy as well. we do the isObject check + // here to avoid invalid value warning. Also need to lazy access readonly + // and reactive here to avoid circular dependency. + return isReadonly ? readonly(res) : reactive(res); + } + + return res; + }; + } - function clear() { - var target = toRaw(this); - var hadItems = target.size !== 0; - var oldTarget = isMap$1(target) ? new Map(target) : new Set(target); // forward the operation before queueing reactions + var set$1 = /*#__PURE__*/createSetter(); - var result = target.clear(); + function createSetter() { + var shallow = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return function set(target, key, value, receiver) { + var oldValue = target[key]; - if (hadItems) { - trigger(target, "clear" - /* CLEAR */ - , undefined, undefined, oldTarget); - } + if (!shallow && !isReadonly(value)) { + value = toRaw(value); + oldValue = toRaw(oldValue); - return result; - } - - function createForEach(isReadonly, isShallow) { - return function forEach(callback, thisArg) { - var observed = this; - var target = observed["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive; - !isReadonly && track(rawTarget, "iterate" - /* ITERATE */ - , ITERATE_KEY); - return target.forEach(function (value, key) { - return (// important: make sure the callback is - // 1. invoked with the reactive map as `this` and 3rd arg - // 2. the value received should be a corresponding reactive/readonly. - callback.call(thisArg, wrap(value), wrap(key), observed) - ); - }); - }; - } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } - function createIterableMethod(method, isReadonly, isShallow) { - return function () { - var target = this["__v_raw" - /* RAW */ - ]; - var rawTarget = toRaw(target); - var targetIsMap = isMap$1(rawTarget); - var isPair = method === "entries" || method === Symbol.iterator && targetIsMap; - var isKeyOnly = method === "keys" && targetIsMap; - var innerIterator = target[method].apply(target, arguments); - var wrap = isReadonly ? toReadonly : isShallow ? toShallow : toReactive; - !isReadonly && track(rawTarget, "iterate" - /* ITERATE */ - , isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); // return a wrapped iterator which returns observed versions of the - // values emitted from the real iterator - - return _defineProperty({ - // iterator protocol - next: function next() { - var _innerIterator$next = innerIterator.next(), - value = _innerIterator$next.value, - done = _innerIterator$next.done; - - return done ? { - value: value, - done: done - } : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done: done - }; - } - }, Symbol.iterator, function () { - return this; - }); - }; - } + var hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + var result = Reflect.set(target, key, value, receiver); // don't trigger if target is something up in the prototype chain of original - function createReadonlyMethod(type) { - return function () { - { - var key = (arguments.length <= 0 ? undefined : arguments[0]) ? "on key \"".concat(arguments.length <= 0 ? undefined : arguments[0], "\" ") : ""; - console.warn("".concat(capitalize(type), " operation ").concat(key, "failed: target is readonly."), toRaw(this)); - } - return type === "delete" - /* DELETE */ - ? false : this; - }; - } + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add" + /* ADD */ + , key, value); + } else if (hasChanged$1(value, oldValue)) { + trigger(target, "set" + /* SET */ + , key, value, oldValue); + } + } - var mutableInstrumentations = { - get: function get(key) { - return get$1(this, key); - }, + return result; + }; + } + + function deleteProperty(target, key) { + var hadKey = hasOwn(target, key); + var oldValue = target[key]; + var result = Reflect.deleteProperty(target, key); + + if (result && hadKey) { + trigger(target, "delete" + /* DELETE */ + , key, undefined, oldValue); + } + + return result; + } + + function has$1(target, key) { + var result = Reflect.has(target, key); + + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has" + /* HAS */ + , key); + } + + return result; + } + + function ownKeys(target) { + track(target, "iterate" + /* ITERATE */ + , isArray(target) ? 'length' : ITERATE_KEY); + return Reflect.ownKeys(target); + } + + var mutableHandlers = { + get: get, + set: set$1, + deleteProperty: deleteProperty, + has: has$1, + ownKeys: ownKeys + }; + var readonlyHandlers = { + get: readonlyGet, + set: function set(target, key) { + { + console.warn("Set operation on key \"".concat(String(key), "\" failed: target is readonly."), target); + } + return true; + }, + deleteProperty: function deleteProperty(target, key) { + { + console.warn("Delete operation on key \"".concat(String(key), "\" failed: target is readonly."), target); + } + return true; + } + }; + + var toShallow = function toShallow(value) { + return value; + }; + + var getProto = function getProto(v) { + return Reflect.getPrototypeOf(v); + }; + + function get$1(target, key) { + var isReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var isShallow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; + // #1772: readonly(reactive(Map)) should return readonly + reactive version + // of the value + target = target["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var rawKey = toRaw(key); + + if (key !== rawKey) { + !isReadonly && track(rawTarget, "get" + /* GET */ + , key); + } + + !isReadonly && track(rawTarget, "get" + /* GET */ + , rawKey); + + var _getProto = getProto(rawTarget), + has = _getProto.has; + + var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + // #3602 readonly(reactive(Map)) + // ensure that the nested reactive `Map` can do tracking for itself + target.get(key); + } + } + + function has$1$1(key) { + var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var target = this["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var rawKey = toRaw(key); + + if (key !== rawKey) { + !isReadonly && track(rawTarget, "has" + /* HAS */ + , key); + } + + !isReadonly && track(rawTarget, "has" + /* HAS */ + , rawKey); + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + } + + function size(target) { + var isReadonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + target = target["__v_raw" + /* RAW */ + ]; + !isReadonly && track(toRaw(target), "iterate" + /* ITERATE */ + , ITERATE_KEY); + return Reflect.get(target, 'size', target); + } + + function add(value) { + value = toRaw(value); + var target = toRaw(this); + var proto = getProto(target); + var hadKey = proto.has.call(target, value); + + if (!hadKey) { + target.add(value); + trigger(target, "add" + /* ADD */ + , value, value); + } + + return this; + } + + function set$1$1(key, value) { + value = toRaw(value); + var target = toRaw(this); + + var _getProto2 = getProto(target), + has = _getProto2.has, + get = _getProto2.get; + + var hadKey = has.call(target, key); + + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + + var oldValue = get.call(target, key); + target.set(key, value); + + if (!hadKey) { + trigger(target, "add" + /* ADD */ + , key, value); + } else if (hasChanged$1(value, oldValue)) { + trigger(target, "set" + /* SET */ + , key, value, oldValue); + } + + return this; + } + + function deleteEntry(key) { + var target = toRaw(this); + + var _getProto3 = getProto(target), + has = _getProto3.has, + get = _getProto3.get; + + var hadKey = has.call(target, key); + + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + + var oldValue = get ? get.call(target, key) : undefined; // forward the operation before queueing reactions + + var result = target.delete(key); + + if (hadKey) { + trigger(target, "delete" + /* DELETE */ + , key, undefined, oldValue); + } + + return result; + } + + function clear() { + var target = toRaw(this); + var hadItems = target.size !== 0; + var oldTarget = isMap$1(target) ? new Map(target) : new Set(target); // forward the operation before queueing reactions + + var result = target.clear(); + + if (hadItems) { + trigger(target, "clear" + /* CLEAR */ + , undefined, undefined, oldTarget); + } + + return result; + } - get size() { - return size(this); - }, + function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + var observed = this; + var target = observed["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate" + /* ITERATE */ + , ITERATE_KEY); + return target.forEach(function (value, key) { + // important: make sure the callback is + // 1. invoked with the reactive map as `this` and 3rd arg + // 2. the value received should be a corresponding reactive/readonly. + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; + } + + function createIterableMethod(method, isReadonly, isShallow) { + return function () { + var target = this["__v_raw" + /* RAW */ + ]; + var rawTarget = toRaw(target); + var targetIsMap = isMap$1(rawTarget); + var isPair = method === 'entries' || method === Symbol.iterator && targetIsMap; + var isKeyOnly = method === 'keys' && targetIsMap; + var innerIterator = target[method].apply(target, arguments); + var wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate" + /* ITERATE */ + , isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); // return a wrapped iterator which returns observed versions of the + // values emitted from the real iterator + + return _defineProperty({ + // iterator protocol + next: function next() { + var _innerIterator$next = innerIterator.next(), + value = _innerIterator$next.value, + done = _innerIterator$next.done; + + return done ? { + value: value, + done: done + } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done: done + }; + } + }, Symbol.iterator, function () { + return this; + }); + }; + } + + function createReadonlyMethod(type) { + return function () { + { + var key = (arguments.length <= 0 ? undefined : arguments[0]) ? "on key \"".concat(arguments.length <= 0 ? undefined : arguments[0], "\" ") : ""; + console.warn("".concat(capitalize(type), " operation ").concat(key, "failed: target is readonly."), toRaw(this)); + } + return type === "delete" + /* DELETE */ + ? false : this; + }; + } - has: has$1$1, - add: add, - set: set$1$1, - delete: deleteEntry, - clear: clear, - forEach: createForEach(false, false) + function createInstrumentations() { + var mutableInstrumentations = { + get: function get(key) { + return get$1(this, key); + }, + + get size() { + return size(this); + }, + + has: has$1$1, + add: add, + set: set$1$1, + delete: deleteEntry, + clear: clear, + forEach: createForEach(false, false) }; var shallowInstrumentations = { - get: function get(key) { - return get$1(this, key, false, true); - }, - - get size() { - return size(this); - }, - - has: has$1$1, - add: add, - set: set$1$1, - delete: deleteEntry, - clear: clear, - forEach: createForEach(false, true) + get: function get(key) { + return get$1(this, key, false, true); + }, + + get size() { + return size(this); + }, + + has: has$1$1, + add: add, + set: set$1$1, + delete: deleteEntry, + clear: clear, + forEach: createForEach(false, true) }; var readonlyInstrumentations = { - get: function get(key) { - return get$1(this, key, true); - }, - - get size() { - return size(this, true); - }, - - has: function has(key) { - return has$1$1.call(this, key, true); - }, - add: createReadonlyMethod("add" - /* ADD */ - ), - set: createReadonlyMethod("set" - /* SET */ - ), - delete: createReadonlyMethod("delete" - /* DELETE */ - ), - clear: createReadonlyMethod("clear" - /* CLEAR */ - ), - forEach: createForEach(true, false) + get: function get(key) { + return get$1(this, key, true); + }, + + get size() { + return size(this, true); + }, + + has: function has(key) { + return has$1$1.call(this, key, true); + }, + add: createReadonlyMethod("add" + /* ADD */ + ), + set: createReadonlyMethod("set" + /* SET */ + ), + delete: createReadonlyMethod("delete" + /* DELETE */ + ), + clear: createReadonlyMethod("clear" + /* CLEAR */ + ), + forEach: createForEach(true, false) + }; + var shallowReadonlyInstrumentations = { + get: function get(key) { + return get$1(this, key, true, true); + }, + + get size() { + return size(this, true); + }, + + has: function has(key) { + return has$1$1.call(this, key, true); + }, + add: createReadonlyMethod("add" + /* ADD */ + ), + set: createReadonlyMethod("set" + /* SET */ + ), + delete: createReadonlyMethod("delete" + /* DELETE */ + ), + clear: createReadonlyMethod("clear" + /* CLEAR */ + ), + forEach: createForEach(true, true) }; - var iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + var iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator]; iteratorMethods.forEach(function (method) { - mutableInstrumentations[method] = createIterableMethod(method, false, false); - readonlyInstrumentations[method] = createIterableMethod(method, true, false); - shallowInstrumentations[method] = createIterableMethod(method, false, true); + mutableInstrumentations[method] = createIterableMethod(method, false, false); + readonlyInstrumentations[method] = createIterableMethod(method, true, false); + shallowInstrumentations[method] = createIterableMethod(method, false, true); + shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true); }); - - function createInstrumentationGetter(isReadonly, shallow) { - var instrumentations = shallow ? shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; - return function (target, key, receiver) { - if (key === "__v_isReactive" - /* IS_REACTIVE */ - ) { - return !isReadonly; - } else if (key === "__v_isReadonly" - /* IS_READONLY */ - ) { - return isReadonly; - } else if (key === "__v_raw" - /* RAW */ - ) { - return target; - } - - return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); - }; - } - - var mutableCollectionHandlers = { - get: createInstrumentationGetter(false, false) + return [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations]; + } + + var _createInstrumentatio = /* #__PURE__*/createInstrumentations(), + _createInstrumentatio2 = _slicedToArray(_createInstrumentatio, 4), + mutableInstrumentations = _createInstrumentatio2[0], + readonlyInstrumentations = _createInstrumentatio2[1], + shallowInstrumentations = _createInstrumentatio2[2], + shallowReadonlyInstrumentations = _createInstrumentatio2[3]; + + function createInstrumentationGetter(isReadonly, shallow) { + var instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return function (target, key, receiver) { + if (key === "__v_isReactive" + /* IS_REACTIVE */ + ) { + return !isReadonly; + } else if (key === "__v_isReadonly" + /* IS_READONLY */ + ) { + return isReadonly; + } else if (key === "__v_raw" + /* RAW */ + ) { + return target; + } + + return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); }; - var readonlyCollectionHandlers = { - get: createInstrumentationGetter(true, false) - }; - - function checkIdentityKeys(target, has, key) { - var rawKey = toRaw(key); - - if (rawKey !== key && has.call(target, rawKey)) { - var type = toRawType(target); - console.warn("Reactive ".concat(type, " contains both the raw and reactive ") + "versions of the same object".concat(type === "Map" ? " as keys" : "", ", ") + "which can lead to inconsistencies. " + "Avoid differentiating between the raw and reactive versions " + "of an object and only use the reactive version if possible."); - } + } + + var mutableCollectionHandlers = { + get: /*#__PURE__*/createInstrumentationGetter(false, false) + }; + var readonlyCollectionHandlers = { + get: /*#__PURE__*/createInstrumentationGetter(true, false) + }; + + function checkIdentityKeys(target, has, key) { + var rawKey = toRaw(key); + + if (rawKey !== key && has.call(target, rawKey)) { + var type = toRawType(target); + console.warn("Reactive ".concat(type, " contains both the raw and reactive ") + "versions of the same object".concat(type === "Map" ? " as keys" : "", ", ") + "which can lead to inconsistencies. " + "Avoid differentiating between the raw and reactive versions " + "of an object and only use the reactive version if possible."); + } + } + + var reactiveMap = new WeakMap(); + var shallowReactiveMap = new WeakMap(); + var readonlyMap = new WeakMap(); + var shallowReadonlyMap = new WeakMap(); + + function targetTypeMap(rawType) { + switch (rawType) { + case 'Object': + case 'Array': + return 1 + /* COMMON */ + ; + + case 'Map': + case 'Set': + case 'WeakMap': + case 'WeakSet': + return 2 + /* COLLECTION */ + ; + + default: + return 0 + /* INVALID */ + ; + } + } + + function getTargetType(value) { + return value["__v_skip" + /* SKIP */ + ] || !Object.isExtensible(value) ? 0 + /* INVALID */ + : targetTypeMap(toRawType(value)); + } + + function reactive(target) { + // if trying to observe a readonly proxy, return the readonly version. + if (target && target["__v_isReadonly" + /* IS_READONLY */ + ]) { + return target; + } + + return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); + } + /** + * Creates a readonly copy of the original object. Note the returned copy is not + * made reactive, but `readonly` can be called on an already reactive object. + */ + + + function readonly(target) { + return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); + } + + function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + console.warn("value cannot be made reactive: ".concat(String(target))); + } + return target; + } // target is already a Proxy, return it. + // exception: calling readonly() on a reactive object + + + if (target["__v_raw" + /* RAW */ + ] && !(isReadonly && target["__v_isReactive" + /* IS_REACTIVE */ + ])) { + return target; + } // target already has corresponding Proxy + + + var existingProxy = proxyMap.get(target); + + if (existingProxy) { + return existingProxy; + } // only a whitelist of value types can be observed. + + + var targetType = getTargetType(target); + + if (targetType === 0 + /* INVALID */ + ) { + return target; + } + + var proxy = new Proxy(target, targetType === 2 + /* COLLECTION */ + ? collectionHandlers : baseHandlers); + proxyMap.set(target, proxy); + return proxy; + } + + function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw" + /* RAW */ + ]); + } + + return !!(value && value["__v_isReactive" + /* IS_REACTIVE */ + ]); + } + + function isReadonly(value) { + return !!(value && value["__v_isReadonly" + /* IS_READONLY */ + ]); + } + + function toRaw(observed) { + var raw = observed && observed["__v_raw" + /* RAW */ + ]; + return raw ? toRaw(raw) : observed; + } + + var toReactive = function toReactive(value) { + return isObject(value) ? reactive(value) : value; + }; + + var toReadonly = function toReadonly(value) { + return isObject(value) ? readonly(value) : value; + }; + + function trackRefValue(ref) { + if (isTracking()) { + ref = toRaw(ref); + + if (!ref.dep) { + ref.dep = createDep(); + } + + { + trackEffects(ref.dep, { + target: ref, + type: "get" + /* GET */ + , + key: 'value' + }); + } + } + } + + function triggerRefValue(ref, newVal) { + ref = toRaw(ref); + + if (ref.dep) { + { + triggerEffects(ref.dep, { + target: ref, + type: "set" + /* SET */ + , + key: 'value', + newValue: newVal + }); + } } + } - var reactiveMap = new WeakMap(); - var readonlyMap = new WeakMap(); + function isRef(r) { + return Boolean(r && r.__v_isRef === true); + } - function targetTypeMap(rawType) { - switch (rawType) { - case "Object": - case "Array": - return 1; + var ComputedRefImpl = /*#__PURE__*/function () { + function ComputedRefImpl(getter, _setter, isReadonly) { + var _this2 = this; - case "Map": - case "Set": - case "WeakMap": - case "WeakSet": - return 2; + _classCallCheck(this, ComputedRefImpl); - default: - return 0; + this._setter = _setter; + this.dep = undefined; + this._dirty = true; + this.__v_isRef = true; + this.effect = new ReactiveEffect(getter, function () { + if (!_this2._dirty) { + _this2._dirty = true; + triggerRefValue(_this2); } - } - - function getTargetType(value) { - return value["__v_skip" - /* SKIP */ - ] || !Object.isExtensible(value) ? 0 - /* INVALID */ - : targetTypeMap(toRawType(value)); - } + }); + this["__v_isReadonly" + /* IS_READONLY */ + ] = isReadonly; + } + + _createClass(ComputedRefImpl, [{ + key: "value", + get: function get() { + // the computed ref may get wrapped by other proxies e.g. readonly() #3376 + var self = toRaw(this); + trackRefValue(self); - function reactive(target) { - // if trying to observe a readonly proxy, return the readonly version. - if (target && target["__v_isReadonly" - /* IS_READONLY */ - ]) { - return target; + if (self._dirty) { + self._dirty = false; + self._value = self.effect.run(); } - return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers); - } // Return a reactive-copy of the original object, where only the root level + return self._value; + }, + set: function set(newValue) { + this._setter(newValue); + } + }]); - function readonly(target) { - return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers); - } // Return a reactive-copy of the original object, where only the root level - - function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers) { - if (!isObject(target)) { - { - console.warn("value cannot be made reactive: ".concat(String(target))); - } - return target; - } // target is already a Proxy, return it. - // exception: calling readonly() on a reactive object - - - if (target["__v_raw" - /* RAW */ - ] && !(isReadonly && target["__v_isReactive" - /* IS_REACTIVE */ - ])) { - return target; - } // target already has corresponding Proxy - - - var proxyMap = isReadonly ? readonlyMap : reactiveMap; - var existingProxy = proxyMap.get(target); - - if (existingProxy) { - return existingProxy; - } // only a whitelist of value types can be observed. + return ComputedRefImpl; + }(); + function computed(getterOrOptions, debugOptions) { + var getter; + var setter; + var onlyGetter = isFunction(getterOrOptions); - var targetType = getTargetType(target); + if (onlyGetter) { + getter = getterOrOptions; - if (targetType === 0 - /* INVALID */ - ) { - return target; - } - - var proxy = new Proxy(target, targetType === 2 - /* COLLECTION */ - ? collectionHandlers : baseHandlers); - proxyMap.set(target, proxy); - return proxy; + setter = function setter() { + console.warn('Write operation failed: computed value is readonly'); + }; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; } - function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value["__v_raw" - /* RAW */ - ]); - } + var cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter); - return !!(value && value["__v_isReactive" - /* IS_REACTIVE */ - ]); + if (debugOptions) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; } - function isReadonly(value) { - return !!(value && value["__v_isReadonly" - /* IS_READONLY */ - ]); - } + return cRef; + } - function toRaw(observed) { - return observed && toRaw(observed["__v_raw" - /* RAW */ - ]) || observed; - } + Promise.resolve(); - function isRef(r) { - return Boolean(r && r.__v_isRef === true); + function noop() {} + function isNative(Ctor) { + return typeof Ctor === "function" && /native code/.test(Ctor.toString()); + } + var isIE = function isIE() { + if (typeof navigator === "undefined") { + return false; } - var ComputedRefImpl = /*#__PURE__*/function () { - function ComputedRefImpl(getter, _setter, isReadonly) { - var _this2 = this; - - _classCallCheck(this, ComputedRefImpl); - - this._setter = _setter; - this._dirty = true; - this.__v_isRef = true; - this.effect = effect(getter, { - lazy: true, - scheduler: function scheduler() { - if (!_this2._dirty) { - _this2._dirty = true; - trigger(toRaw(_this2), "set" - /* SET */ - , "value"); - } - } - }); - this["__v_isReadonly" - /* IS_READONLY */ - ] = isReadonly; - } - - _createClass(ComputedRefImpl, [{ - key: "value", - get: function get() { - if (this._dirty) { - this._value = this.effect(); - this._dirty = false; - } - - track(toRaw(this), "get" - /* GET */ - , "value"); - return this._value; - }, - set: function set(newValue) { - this._setter(newValue); - } - }]); - - return ComputedRefImpl; - }(); - - function computed(getterOrOptions) { - var getter; - var setter; - - if (isFunction(getterOrOptions)) { - getter = getterOrOptions; - - setter = function setter() { - console.warn("Write operation failed: computed value is readonly"); - }; - } else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } + return /(msie|trident)/i.test(navigator.userAgent.toLowerCase()); + }; + var getIEVersion = function getIEVersion() { + var version = 0; - return new ComputedRefImpl(getter, setter, isFunction(getterOrOptions) || !getterOrOptions.set); + if (typeof navigator === "undefined") { + return false; } - function noop() {} - function isNative(Ctor) { - return typeof Ctor === "function" && /native code/.test(Ctor.toString()); - } - var isIE = function isIE() { - if (typeof navigator === "undefined") { - return false; - } + var agent = navigator.userAgent.toLowerCase(); + var v1 = agent.match(/(?:msie\s([\w.]+))/); + var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); - return /(msie|trident)/i.test(navigator.userAgent.toLowerCase()); + if (v1 && v2 && v1[1] && v2[1]) { + version = Math.max(v1[1] * 1, v2[1] * 1); + } else if (v1 && v1[1]) { + version = v1[1] * 1; + } else if (v2 && v2[1]) { + version = v2[1] * 1; + } else { + version = 0; + } + + return version; + }; + isIE() && getIEVersion() < 9; + var _toString = Object.prototype.toString; + function isPlainObject(obj) { + return _toString.call(obj) === "[object Object]"; + } + + function parsePath(path) { + // if (bailRE.test(path)) { + // return; + // } + var segments = path.length > 0 ? path.split(".") : []; + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) return; + obj = obj[segments[i]]; + } + + return obj; }; - var getIEVersion = function getIEVersion() { - var version = 0; - - if (typeof navigator === "undefined") { - return false; + } + var nextTick = function () { + var callbacks = []; + var pending = false; + var timerFunc; + + function nextTickHandler() { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + + for (var i = 0; i < copies.length; i++) { + copies[i](); + } + } // An asynchronous deferring mechanism. + // In pre 2.4, we used to use microtasks (Promise/MutationObserver) + // but microtasks actually has too high a priority and fires in between + // supposedly sequential events (e.g. #4521, #6690) or even between + // bubbling of the same event (#6566). Technically setImmediate should be + // the ideal choice, but it's not available everywhere; and the only polyfill + // that consistently queues the callback after all DOM events triggered in the + // same loop is by using MessageChannel. + + /* istanbul ignore if */ + + + if (typeof setImmediate !== "undefined" && isNative(setImmediate)) { + timerFunc = function timerFunc() { + setImmediate(nextTickHandler); + }; + } else if (typeof MessageChannel !== "undefined" && (isNative(MessageChannel) || // PhantomJS + MessageChannel.toString() === "[object MessageChannelConstructor]")) { + var channel = new MessageChannel(); + var port = channel.port2; + channel.port1.onmessage = nextTickHandler; + + timerFunc = function timerFunc() { + port.postMessage(1); + }; + } else if (typeof Promise !== "undefined" && isNative(Promise)) { + /* istanbul ignore next */ + // use microtask in non-DOM environments, e.g. Weex + var p = Promise.resolve(); + + timerFunc = function timerFunc() { + p.then(nextTickHandler); + }; + } else { + // fallback to setTimeout + timerFunc = function timerFunc() { + setTimeout(nextTickHandler, 0); + }; + } + + return function queueNextTick(cb, ctx) { + var _resolve; + + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + console.error(e); + } + } else if (_resolve) { + _resolve(ctx); } + }); - var agent = navigator.userAgent.toLowerCase(); - var v1 = agent.match(/(?:msie\s([\w.]+))/); - var v2 = agent.match(/(?:trident.*rv:([\w.]+))/); + if (!pending) { + pending = true; + timerFunc(); + } // $flow-disable-line - if (v1 && v2 && v1[1] && v2[1]) { - version = Math.max(v1[1] * 1, v2[1] * 1); - } else if (v1 && v1[1]) { - version = v1[1] * 1; - } else if (v2 && v2[1]) { - version = v2[1] * 1; - } else { - version = 0; - } - return version; + if (!cb && typeof Promise !== "undefined") { + return new Promise(function (resolve) { + _resolve = resolve; + }); + } }; - isIE() && getIEVersion() < 9; - var _toString = Object.prototype.toString; - function isPlainObject(obj) { - return _toString.call(obj) === "[object Object]"; - } - var bailRE = /[^\w.$]/; - function parsePath(path) { - if (bailRE.test(path)) { - return; + }(); + + var mixinInjection = {}; + function getMixins(type) { + return mixinInjection[type]; + } + function mixin(xtype, cls) { + mixinInjection[xtype] = _.cloneDeep(cls); + } + + var queue = []; + var has = {}; + var waiting = false; + var flushing = false; + var index = 0; + + function resetSchedulerState() { + index = queue.length = 0; + has = {}; + waiting = flushing = false; + } + + function flushSchedulerQueue() { + flushing = true; + var watcher; + var id; + var options; // Sort queue before flush. + // This ensures that: + // 1. Components are updated from parent to child. (because parent is always + // created before the child) + // 2. A component's user watchers are run before its render watcher (because + // user watchers are created before the render watcher) + // 3. If a component is destroyed during a parent component's watcher run, + // its watchers can be skipped. + + queue.sort(function (a, b) { + return a.id - b.id; + }); // do not cache length because more watchers might be pushed + // as we run existing watchers + + for (index = 0; index < queue.length; index++) { + watcher = queue[index].watcher; + options = queue[index].options; + id = watcher.id; + has[id] = null; + watcher(options); + } + + resetSchedulerState(); + } + + function queueWatcher(watcher, options) { + var id = watcher.id; + + if (has[id] == null) { + has[id] = true; + + if (!flushing) { + queue.push({ + watcher: watcher, + options: options + }); + } else { + // if already flushing, splice the watcher based on its id + // if already past its id, it will be run next immediately. + var i = queue.length - 1; + + while (i > index && queue[i].watcher.id > watcher.id) { + i--; } - var segments = path.split("."); - return function (obj) { - for (var i = 0; i < segments.length; i++) { - if (!obj) return; - obj = obj[segments[i]]; - } + queue.splice(i + 1, 0, { + watcher: watcher, + options: options + }); + } // queue the flush - return obj; - }; - } - var nextTick = function () { - var callbacks = []; - var pending = false; - var timerFunc; - function nextTickHandler() { - pending = false; - var copies = callbacks.slice(0); - callbacks.length = 0; + if (!waiting) { + waiting = true; + nextTick(flushSchedulerQueue); + } + } + } - for (var i = 0; i < copies.length; i++) { - copies[i](); - } - } // An asynchronous deferring mechanism. - // In pre 2.4, we used to use microtasks (Promise/MutationObserver) - // but microtasks actually has too high a priority and fires in between - // supposedly sequential events (e.g. #4521, #6690) or even between - // bubbling of the same event (#6566). Technically setImmediate should be - // the ideal choice, but it's not available everywhere; and the only polyfill - // that consistently queues the callback after all DOM events triggered in the - // same loop is by using MessageChannel. + function innerWatch(source, cb, options) { + if (!_.isFunction(cb)) { + console.warn("`watch(fn, options?)` signature has been moved to a separate API. " + "Use `watchEffect(fn, options?)` instead. `watch` now only " + "supports `watch(source, cb, options?) signature."); + } - /* istanbul ignore if */ + return doWatch(source, cb, options); + } + var INITIAL_WATCHER_VALUE = {}; + var objectToString = Object.prototype.toString; + var toTypeString = function toTypeString(value) { + return objectToString.call(value); + }; - if (typeof setImmediate !== "undefined" && isNative(setImmediate)) { - timerFunc = function timerFunc() { - setImmediate(nextTickHandler); - }; - } else if (typeof MessageChannel !== "undefined" && (isNative(MessageChannel) || // PhantomJS - MessageChannel.toString() === "[object MessageChannelConstructor]")) { - var channel = new MessageChannel(); - var port = channel.port2; - channel.port1.onmessage = nextTickHandler; - - timerFunc = function timerFunc() { - port.postMessage(1); - }; - } else if (typeof Promise !== "undefined" && isNative(Promise)) { - /* istanbul ignore next */ - // use microtask in non-DOM environments, e.g. Weex - var p = Promise.resolve(); + var isMap = function isMap(val) { + return toTypeString(val) === "[object Map]"; + }; - timerFunc = function timerFunc() { - p.then(nextTickHandler); - }; - } else { - // fallback to setTimeout - timerFunc = function timerFunc() { - setTimeout(nextTickHandler, 0); - }; - } + var isSet = function isSet(val) { + return toTypeString(val) === "[object Set]"; + }; - return function queueNextTick(cb, ctx) { - var _resolve; - - callbacks.push(function () { - if (cb) { - try { - cb.call(ctx); - } catch (e) { - console.error(e); - } - } else if (_resolve) { - _resolve(ctx); - } - }); + var hasChanged = function hasChanged(value, oldValue) { + return value !== oldValue && (value === value || oldValue === oldValue); + }; - if (!pending) { - pending = true; - timerFunc(); - } // $flow-disable-line + var uid = 0; + function doWatch(source, cb, options, instance) { + options = options || {}; + var _options = options, + immediate = _options.immediate, + deep = _options.deep, + sync = _options.sync, + onTrack = _options.onTrack, + onTrigger = _options.onTrigger; - if (!cb && typeof Promise !== "undefined") { - return new Promise(function (resolve) { - _resolve = resolve; - }); - } - }; - }(); - - var mixinInjection = {}; - function getMixins(type) { - return mixinInjection[type]; - } - function mixin(xtype, cls) { - mixinInjection[xtype] = _.cloneDeep(cls); - } - - var queue = []; - var activatedChildren = []; - var has = {}; - var waiting = false; - var flushing = false; - var index = 0; - - function resetSchedulerState() { - index = queue.length = activatedChildren.length = 0; - has = {}; - waiting = flushing = false; - } - - function flushSchedulerQueue() { - flushing = true; - var watcher; - var id; - var options; // Sort queue before flush. - // This ensures that: - // 1. Components are updated from parent to child. (because parent is always - // created before the child) - // 2. A component's user watchers are run before its render watcher (because - // user watchers are created before the render watcher) - // 3. If a component is destroyed during a parent component's watcher run, - // its watchers can be skipped. - - queue.sort(function (a, b) { - return a.id - b.id; - }); // do not cache length because more watchers might be pushed - // as we run existing watchers - - for (index = 0; index < queue.length; index++) { - watcher = queue[index].watcher; - options = queue[index].options; - id = watcher.id; - has[id] = null; - watcher(options); - } + if (!cb) { + if (immediate !== undefined) { + console.warn("watch() \"immediate\" option is only respected when using the " + "watch(source, callback, options?) signature."); + } - resetSchedulerState(); + if (deep !== undefined) { + console.warn("watch() \"deep\" option is only respected when using the " + "watch(source, callback, options?) signature."); + } } - function queueWatcher(watcher, options) { - var id = watcher.id; - - if (has[id] == null) { - has[id] = true; - - if (!flushing) { - queue.push({ - watcher: watcher, - options: options - }); - } else { - // if already flushing, splice the watcher based on its id - // if already past its id, it will be run next immediately. - var i = queue.length - 1; + var warnInvalidSource = function warnInvalidSource(s) { + console.warn("Invalid watch source: ", s, "A watch source can only be a getter/effect function, a ref, " + "a reactive object, or an array of these types."); + }; - while (i > index && queue[i].watcher.id > watcher.id) { - i--; - } + var getter; + var forceTrigger = false; + + if (isRef(source)) { + getter = function getter() { + return source.value; + }; + + forceTrigger = !!source._shallow; + } else if (isReactive(source)) { + getter = function getter() { + return source; + }; + + deep = true; + } else if (_.isArray(source)) { + getter = function getter() { + return source.map(function (s) { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return traverse(s); + } else if (_.isFunction(s)) { + return s.call(instance); + } else { + warnInvalidSource(s); + } + }); + }; + } else if (_.isFunction(source)) { + if (cb) { + // getter with cb + getter = function getter() { + return source.call(instance); + }; + } else { + // no cb -> simple effect + getter = function getter() { + if (instance && instance.isUnmounted) { + return; + } - queue.splice(i + 1, 0, { - watcher: watcher, - options: options - }); - } // queue the flush + if (cleanup) { + cleanup(); + } + return source.call(instance, onInvalidate); + }; + } + } else { + getter = function getter() {}; - if (!waiting) { - waiting = true; - nextTick(flushSchedulerQueue); - } - } + warnInvalidSource(source); } - function innerWatch(source, cb, options) { - if (!_.isFunction(cb)) { - console.warn("`watch(fn, options?)` signature has been moved to a separate API. " + "Use `watchEffect(fn, options?)` instead. `watch` now only " + "supports `watch(source, cb, options?) signature."); - } + if (cb && deep) { + var baseGetter = getter; - return doWatch(source, cb, options); + getter = function getter() { + return traverse(baseGetter()); + }; } - var INITIAL_WATCHER_VALUE = {}; - var objectToString = Object.prototype.toString; - var toTypeString = function toTypeString(value) { - return objectToString.call(value); - }; + var cleanup; - var isMap = function isMap(val) { - return toTypeString(val) === "[object Map]"; + var onInvalidate = function onInvalidate(fn) { + cleanup = runner.options.onStop = function () { + fn.call(instance); + }; }; - var isSet = function isSet(val) { - return toTypeString(val) === "[object Set]"; + var oldValue = _.isArray(source) ? [] : INITIAL_WATCHER_VALUE; + + var job = function job() { + // 这里去掉的原因是,新增属性没有生效也会触发变化监听 + if (!runner.effect.active) { + return; + } + + if (cb) { + // watch(source, cb) + var newValue = runner(); + + if (deep || forceTrigger || hasChanged(newValue, oldValue)) { + // cleanup before running cb again + if (cleanup) { + cleanup(); + } + + cb.apply(instance, [newValue, // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, onInvalidate]); + oldValue = newValue; + } + } else { + // watchEffect + runner(); + } + }; // important: mark the job as a watcher callback so that scheduler knows + // it is allowed to self-trigger (#1727) + + + job.allowRecurse = !!cb; + job.id = ++uid; + var scheduler; + + if (sync === true) { + scheduler = job; + } else { + scheduler = function scheduler() { + return queueWatcher(job); + }; + } + + var runner = effect(function () { + try { + return getter(); + } catch (e) {// 吞掉异常 + } + }, { + lazy: true, + onTrack: onTrack, + onTrigger: onTrigger, + scheduler: scheduler + }); // initial run + + if (cb) { + if (immediate) { + job(); + } else { + oldValue = runner(); + } + } else { + runner(); + } + + return function () { + stop(runner); }; + } - var hasChanged = function hasChanged(value, oldValue) { - return value !== oldValue && (value === value || oldValue === oldValue); - }; + function traverse(value) { + var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set(); - var uid = 0; + if (!_.isObject(value) || seen.has(value)) { + return value; + } - function doWatch(source, cb, options, instance) { - options = options || {}; - var _options = options, - immediate = _options.immediate, - deep = _options.deep, - sync = _options.sync, - onTrack = _options.onTrack, - onTrigger = _options.onTrigger; + seen.add(value); - if (!cb) { - if (immediate !== undefined) { - console.warn("watch() \"immediate\" option is only respected when using the " + "watch(source, callback, options?) signature."); - } + if (isRef(value)) { + traverse(value.value, seen); + } else if (_.isArray(value)) { + for (var i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach(function (v) { + traverse(v, seen); + }); + } else { + for (var key in value) { + traverse(value[key], seen); + } + } - if (deep !== undefined) { - console.warn("watch() \"deep\" option is only respected when using the " + "watch(source, callback, options?) signature."); - } - } + return value; + } - var warnInvalidSource = function warnInvalidSource(s) { - console.warn("Invalid watch source: ", s, "A watch source can only be a getter/effect function, a ref, " + "a reactive object, or an array of these types."); - }; + var falsy; + var operators = { + "||": falsy, + "&&": falsy, + "(": falsy, + ")": falsy + }; - var getter; - var forceTrigger = false; + function runBinaryFunction(binarys) { + var expr = ""; - if (isRef(source)) { - getter = function getter() { - return source.value; - }; + for (var i = 0, len = binarys.length; i < len; i++) { + if (_.isBoolean(binarys[i]) || _.has(operators, binarys[i])) { + expr += binarys[i]; + } else { + expr += "false"; + } + } - forceTrigger = !!source._shallow; - } else if (isReactive(source)) { - getter = function getter() { - return source; - }; + return new Function("return " + expr)(); + } - deep = true; - } else if (_.isArray(source)) { - getter = function getter() { - return source.map(function (s) { - if (isRef(s)) { - return s.value; - } else if (isReactive(s)) { - return traverse(s); - } else if (_.isFunction(s)) { - return s.call(instance); - } else { - warnInvalidSource(s); - } - }); - }; - } else if (_.isFunction(source)) { - if (cb) { - // getter with cb - getter = function getter() { - return source.call(instance); - }; - } else { - // no cb -> simple effect - getter = function getter() { - if (instance && instance.isUnmounted) { - return; - } - - if (cleanup) { - cleanup(); - } - - return source.call(instance, onInvalidate); - }; - } - } else { - getter = function getter() {}; + function watchExp(model, getter) { + var result = getter.call(model, model); - warnInvalidSource(source); - } + if (_.isArray(result)) { + return result.concat(); + } - if (cb && deep) { - var baseGetter = getter; + return result; + } - getter = function getter() { - return traverse(baseGetter()); - }; - } + function watch(model, expOrFn, cb, options) { + if (isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } - var cleanup; + if (typeof cb === "string") { + cb = model[cb]; + } - var onInvalidate = function onInvalidate(fn) { - cleanup = runner.options.onStop = function () { - fn.call(instance); - }; - }; + options = options || {}; + options.user = true; + var exps; - var oldValue = _.isArray(source) ? [] : INITIAL_WATCHER_VALUE; + if (_.isFunction(expOrFn)) { + var watcher = innerWatch(expOrFn, cb, options); + return function unwatchFn() { + watcher(); + }; + } - var job = function job() { - if (!runner.active) { - return; - } + if (!(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { + var paths = expOrFn.split("."); + var prePaths = paths.slice(0, paths.length - 1); + var preGetter = parsePath(prePaths.join(".")); + var v = preGetter.call(model, model); + var getter = parsePath(paths[paths.length - 1]); - if (cb) { - // watch(source, cb) - var newValue = runner(); + var _watcher = innerWatch(function () { + return watchExp(v, getter); + }, cb, options); - if (deep || forceTrigger || hasChanged(newValue, oldValue)) { - // cleanup before running cb again - if (cleanup) { - cleanup(); - } + return function unwatchFn() { + _watcher(); + }; + } - cb.apply(instance, [newValue, // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue, onInvalidate]); - oldValue = newValue; - } - } else { - // watchEffect - runner(); - } - }; // important: mark the job as a watcher callback so that scheduler knows - // it is allowed to self-trigger (#1727) + var watchers = []; + var fns = exps.slice(); + var complete = false, + running = false; + var callback = function callback(index, newValue, oldValue, attrs) { + if (complete === true) { + return; + } - job.allowRecurse = !!cb; - job.id = ++uid; - var scheduler; + fns[index] = true; - if (sync === true) { - scheduler = job; - } else { - scheduler = function scheduler() { - return queueWatcher(job); - }; - } + if (runBinaryFunction(fns)) { + complete = true; + cb(newValue, oldValue, attrs); + } - var runner = effect(getter, { - lazy: true, - onTrack: onTrack, - onTrigger: onTrigger, - scheduler: scheduler - }); // initial run + if (options && options.sync) { + complete = false; + running = false; + fns = exps.slice(); + } else { + if (!running) { + running = true; + nextTick(function () { + complete = false; + running = false; + fns = exps.slice(); + }); + } + } + }; - if (cb) { - if (immediate) { - job(); + _.each(exps, function (exp, i) { + if (_.has(operators, exp)) { + return; + } + + if (exp.indexOf("*") >= 0) { + // eslint-disable-next-line no-inner-declarations + var travers = function travers(root, deps, parent, key, res) { + if (deps.length === _paths.length) { + root !== undefined && res.push({ + parent: parent, + k: key + }); + return; + } + + if (root) { + if (_paths[deps.length] === "*") { + // 遍历所有节点 + for (var k in root) { + travers(root[k], deps.concat([k]), root, k, res); + } } else { - oldValue = runner(); + var nextKey = _paths[deps.length]; + travers(root[nextKey], deps.concat([nextKey]), root, nextKey, res); } - } else { - runner(); - } - - return function () { - stop(runner); + } }; - } - function traverse(value) { - var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set(); + //a.**形式 + if (/^[1-9a-zA-Z.]+\*\*$/.test(exp) || exp === "**") { + exp = exp.replace(".**", ""); - if (!_.isObject(value) || seen.has(value)) { - return value; - } + var _paths2 = exp.split("."); - seen.add(value); + var _prePaths2 = _paths2.slice(0, _paths2.length - 1); - if (isRef(value)) { - traverse(value.value, seen); - } else if (_.isArray(value)) { - for (var i = 0; i < value.length; i++) { - traverse(value[i], seen); - } - } else if (isSet(value) || isMap(value)) { - value.forEach(function (v) { - traverse(v, seen); - }); - } else { - for (var key in value) { - traverse(value[key], seen); - } - } + var _preGetter = parsePath(_prePaths2.join(".")); - return value; - } - - var falsy; - var operators = { - "||": falsy, - "&&": falsy, - "(": falsy, - ")": falsy - }; + var _v2 = _preGetter.call(model, model); - function runBinaryFunction(binarys) { - var expr = ""; + var _getter = exp === "**" ? function (m) { + return m; + } : parsePath(_paths2[_paths2.length - 1]); - for (var i = 0, len = binarys.length; i < len; i++) { - if (_.isBoolean(binarys[i]) || _.has(operators, binarys[i])) { - expr += binarys[i]; - } else { - expr += "false"; + watchers.push(innerWatch(function () { + return watchExp(_v2, _getter); + }, function (newValue, oldValue) { + // a.** 在a变化的时候不会触发change + if (!_.isArray(newValue) && oldValue !== newValue) { + return; } - } - - return new Function("return " + expr)(); - } - - function watchExp(model, exp) { - var getter = parsePath(exp); - var result = getter.call(model, model); - if (_.isArray(result)) { - return result.concat(); + callback(i, NaN, NaN, _.extend({ + index: i + })); + }, _.extend({ + deep: true + }, options))); + return; } - return result; - } + if (/^(\*\*\.)+[1-9a-zA-Z]+(\.\*\*$)/.test(exp)) { + throw new Error("not support"); + } //含有*的情况,如a.*,如*.a,*.*.a,a.*.a + //先获取到能获取到的对象 - function watch(model, expOrFn, cb, options) { - if (isPlainObject(cb)) { - options = cb; - cb = cb.handler; - } - if (typeof cb === "string") { - cb = model[cb]; - } + var _paths = exp.split("."); - options = options || {}; - options.user = true; - var exps; + var _prePaths = []; - if (_.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { - var watcher = innerWatch(_.isFunction(expOrFn) ? expOrFn : function () { - return watchExp(model, expOrFn); - }, cb, options); - return function unwatchFn() { - watcher(); - }; + for (var _i = 0, len = _paths.length; _i < len; _i++) { + if (_paths[_i] === "*") { + break; + } + + _prePaths[_i] = _paths[_i]; } - var watchers = []; - var fns = exps.slice(); - var complete = false, - running = false; + var _v; - var callback = function callback(index, newValue, oldValue, attrs) { - if (complete === true) { - return; - } + if (_prePaths.length > 0) { + var _getter2 = parsePath(_prePaths.join(".")); - fns[index] = true; + _v = _getter2.call(model, model); + } else { + _v = model; + } - if (runBinaryFunction(fns)) { - complete = true; - cb(newValue, oldValue, attrs); - } + _paths = _paths.slice(_prePaths.length); + var changes = []; + watchers.push(innerWatch(function () { + var routes = []; + travers(_v, [], _v, null, routes); - if (options && options.sync) { - complete = false; - running = false; - fns = exps.slice(); - } else { - if (!running) { - running = true; - nextTick(function () { - complete = false; - running = false; - fns = exps.slice(); - }); - } - } - }; + for (var _i2 = 0, _len = routes.length; _i2 < _len; _i2++) { + var _routes$_i = routes[_i2], + parent = _routes$_i.parent, + k = _routes$_i.k; - _.each(exps, function (exp, i) { - if (_.has(operators, exp)) { - return; - } //a.**形式 - - - if (/^[1-9a-zA-Z.]+\*\*$/.test(exp) || exp === "**") { - exp = exp.replace(".**", ""); - var getter = exp === "**" ? function (m) { - return m; - } : parsePath(exp); - var v = getter.call(model, model); - watchers.push(innerWatch(v, function (newValue, oldValue) { - callback(i, newValue, oldValue, _.extend({ - index: i - })); - })); - return; - } + for (var j = 0, l = changes.length; j < l; j++) { + var _changes$j = changes[j], + target = _changes$j.target, + key = _changes$j.key; - if (/^(\*\*\.)+[1-9a-zA-Z]+(\.\*\*$)/.test(exp)) { - throw new Error("not support"); - } //含有*的情况,如a.*,如*.a,*.*.a,a.*.a - - - if (/\*/.test(exp)) { - // eslint-disable-next-line no-inner-declarations - var travers = function travers(root, deps, parent, key, res) { - if (deps.length === paths.length) { - root !== undefined && res.push({ - parent: parent, - k: key - }); - return; - } - - if (root) { - if (paths[deps.length] === "*") { - // 遍历所有节点 - for (var k in root) { - travers(root[k], deps.concat([k]), root, k, res); - } - } else { - var nextKey = paths[deps.length]; - travers(root[nextKey], deps.concat([nextKey]), root, nextKey, res); - } - } - }; - - //先获取到能获取到的对象 - var paths = exp.split("."); - var prePaths = []; - - for (var _i = 0, len = paths.length; _i < len; _i++) { - if (paths[_i] === "*") { - break; - } - - prePaths[_i] = paths[_i]; - } - - var _v; - - if (prePaths.length > 0) { - var _getter = parsePath(prePaths.join(".")); - - _v = _getter.call(model, model); - } else { - _v = model; - } - - paths = paths.slice(prePaths.length); - var changes = []; - watchers.push(innerWatch(function () { - var routes = []; - travers(_v, [], _v, null, routes); - - for (var _i2 = 0, _len = routes.length; _i2 < _len; _i2++) { - var _routes$_i = routes[_i2], - parent = _routes$_i.parent, - k = _routes$_i.k; - - for (var j = 0, l = changes.length; j < l; j++) { - var _changes$j = changes[j], - target = _changes$j.target, - key = _changes$j.key; - - if (target === toRaw(parent) && key === k) { - return true; - } - } - } - }, function (newValue) { - changes = []; - - if (newValue === true) { - callback(i, undefined, undefined, _.extend({ - index: i - })); - } - }, { - deep: true, - onTrigger: function onTrigger(_ref) { - var target = _ref.target, - key = _ref.key; - changes.push({ - target: target, - key: key - }); - } - })); - return; + if (target === toRaw(parent) && key === k) { + return true; + } } + } + }, function (newValue) { + changes = []; - watchers.push(innerWatch(function () { - return watchExp(model, exp); - }, function (newValue, oldValue) { - callback(i, newValue, oldValue, _.extend({ - index: i - })); + if (newValue === true) { + callback(i, NaN, NaN, _.extend({ + index: i })); - }); + } + }, _.extend({}, options, { + deep: true, + onTrigger: function onTrigger(_ref) { + var target = _ref.target, + key = _ref.key; + changes.push({ + target: target, + key: key + }); + } + }))); + return; + } + + var getter = parsePath(exp); + watchers.push(innerWatch(function () { + return watchExp(model, getter); + }, function (newValue, oldValue) { + callback(i, newValue, oldValue, _.extend({ + index: i + })); + }, options)); + }); - return watchers; - } + return watchers; + } - var REACTIVE = true; + var REACTIVE = true; - function initState(vm, state) { - if (state) { - vm.$$state = REACTIVE ? reactive(state) : state; - } + function initState(vm, state) { + if (state) { + vm.$$state = REACTIVE ? reactive(state) : state; } + } - function initComputed(vm, c) { - var $$computed = vm.$$computed = {}; + function initComputed(vm, c) { + var $$computed = vm.$$computed = {}; - for (var key in c) { - $$computed[key] = computed(_.bind(c[key], vm)); - } + for (var key in c) { + $$computed[key] = computed(_.bind(c[key], vm)); } + } - function initWatch(vm, watch) { - vm._watchers || (vm._watchers = []); + function initWatch(vm, watch) { + vm._watchers || (vm._watchers = []); - for (var key in watch) { - var handler = watch[key]; + for (var key in watch) { + var handler = watch[key]; - if (_.isArray(handler)) { - for (var i = 0; i < handler.length; i++) { - vm._watchers.push(createWatcher(vm, key, handler[i])); - } - } else { - vm._watchers.push(createWatcher(vm, key, handler)); - } + if (_.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + vm._watchers.push(createWatcher(vm, key, handler[i])); } + } else { + vm._watchers.push(createWatcher(vm, key, handler)); + } } + } - function createWatcher(vm, keyOrFn, cb, options) { - if (isPlainObject(cb)) { - options = cb; - cb = cb.handler; - } - - if (typeof cb === "string") { - cb = vm[cb]; - } - - return watch(vm.model, keyOrFn, _.bind(cb, vm), options); + function createWatcher(vm, keyOrFn, cb, options) { + if (isPlainObject(cb)) { + options = cb; + cb = cb.handler; } - function initMethods(vm, methods) { - for (var key in methods) { - vm[key] = methods[key] == null ? noop : _.bind(methods[key], vm); - } + if (typeof cb === "string") { + cb = vm[cb]; } - function initMixins(vm, mixins) { - mixins = (mixins || []).slice(0); + return watch(vm.model, keyOrFn, _.bind(cb, vm), options); + } - _.each(mixins.reverse(), function (mixinType) { - var mixin = getMixins(mixinType); - - for (var key in mixin) { - if (typeof mixin[key] !== "function") continue; - if (_.has(vm, key)) continue; - vm[key] = _.bind(mixin[key], vm); - } - }); + function initMethods(vm, methods) { + for (var key in methods) { + vm[key] = methods[key] == null ? noop : _.bind(methods[key], vm); } + } - function defineProps(vm) { - vm.model = new Proxy({}, { - get: function get(target, key) { - if (vm.$$computed && key in vm.$$computed) { - try { - return vm.$$computed[key].value; - } catch (e) {// 吞掉异常 - } + function initMixins(vm, mixins) { + mixins = (mixins || []).slice(0); - return; - } + _.each(mixins.reverse(), function (mixinType) { + var mixin = getMixins(mixinType); - if (vm.$$state && key in vm.$$state) { - return vm.$$state[key]; - } - - var p = vm._parent; - - while (p) { - if (p.$$context && key in p.$$context) { - return p.$$context[key]; - } - - p = p._parent; - } - }, - set: function set(target, key, value) { - if (vm.$$state && key in vm.$$state) { - vm.$$state[key] = value; - return true; - } + for (var key in mixin) { + if (typeof mixin[key] !== "function") continue; + if (_.has(vm, key)) continue; + vm[key] = _.bind(mixin[key], vm); + } + }); + } - var p = vm._parent; + function defineProps(vm) { + vm.model = new Proxy({}, { + get: function get(target, key) { + if (vm.$$computed && key in vm.$$computed) { + try { + return vm.$$computed[key].value; + } catch (e) {// 吞掉异常 + } - while (p) { - if (p.$$context && key in p.$$context) { - p.$$context[key] = value; - return true; - } + return; + } - p = p._parent; - } + if (vm.$$state && key in vm.$$state) { + return vm.$$state[key]; + } - return true; - } - }); - } + var p = vm._parent; - function defineContext(vm, keys) { - var props = {}; - - var _loop = function _loop(i, len) { - var key = keys[i]; - props[key] = { - enumerable: true, - configurable: true, - get: function get() { - return vm.model[key]; - }, - set: function set(val) { - return vm.model[key] = val; - } - }; - }; + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key]; + } - for (var i = 0, len = keys.length; i < len; i++) { - _loop(i); + p = p._parent; + } + }, + set: function set(target, key, value) { + if (vm.$$state && key in vm.$$state) { + vm.$$state[key] = value; + return true; } - vm.$$context = Object.defineProperties({}, props); - } - - function getInjectValue(vm, key) { var p = vm._parent; while (p) { - if (p.$$context && key in p.$$context) { - return p.$$context[key]; - } + if (p.$$context && key in p.$$context) { + p.$$context[key] = value; + return true; + } - p = p._parent; + p = p._parent; } - } - - function getInjectValues(vm) { - var inject = vm.inject || []; - var result = {}; - _.each(inject, function (key) { - result[key] = getInjectValue(vm, key); - }); + return true; + } + }); + } + + function defineContext(vm, keys) { + var props = {}; + + var _loop = function _loop(i, len) { + var key = keys[i]; + props[key] = { + enumerable: true, + configurable: true, + get: function get() { + return vm.model[key]; + }, + set: function set(val) { + return vm.model[key] = val; + } + }; + }; - return result; + for (var i = 0, len = keys.length; i < len; i++) { + _loop(i); } - var Model = /*#__PURE__*/function () { - function Model() { - _classCallCheck(this, Model); - } + vm.$$context = Object.defineProperties({}, props); + } - _createClass(Model, [{ - key: "_constructor", - value: function _constructor(options, destroyHandler) { - this.options = options || {}; - this._parent = Model.target; - var state = _.isFunction(this.state) ? this.state() : this.state; - var computed = this.computed; - var context = this.context; - var inject = this.inject; - var childContext = this.childContext; - var watch = this.watch; - var actions = this.actions; - - _.keys(state).concat(_.keys(computed)).concat(inject || []).concat(context || []); - - var mixins = this.mixins; - defineProps(this); - childContext && defineContext(this, childContext); - initMixins(this, mixins); - this.init(); - initState(this, _.extend(getInjectValues(this), state)); - initComputed(this, computed); - REACTIVE && initWatch(this, watch); - initMethods(this, actions); - this.created && this.created(); - this._destroyHandler = destroyHandler; - } - }, { - key: "_init", - value: function _init() {} - }, { - key: "init", - value: function init() { - this._init(); - } - }, { - key: "destroy", - value: function destroy() { - _.each(this._watchers, function (unwatches) { - unwatches = _.isArray(unwatches) ? unwatches : [unwatches]; - - _.each(unwatches, function (unwatch) { - unwatch(); - }); - }); - - this._watchers && (this._watchers = []); - this.destroyed && this.destroyed(); - this.$$computed = null; - this.$$state = null; - this._destroyHandler && this._destroyHandler(); - } - }]); - - return Model; - }(); - function set(target, key, val) { - if (_.isArray(target)) { - target.length = Math.max(target.length, key); - target.splice(key, 1, val); - return val; - } + function getInjectValue(vm, key) { + var p = vm._parent; + + while (p) { + if (p.$$context && key in p.$$context) { + return p.$$context[key]; + } - target[key] = val; + p = p._parent; } - function del(target, key) { - if (_.isArray(target)) { - target.splice(key, 1); - return; - } + } - if (!_.has(target, key)) { - return; - } + function getInjectValues(vm) { + var inject = vm.inject || []; + var result = {}; - delete target[key]; - } - function define(model) { - return REACTIVE ? reactive(model) : model; + _.each(inject, function (key) { + result[key] = getInjectValue(vm, key); + }); + + return result; + } + + var Model = /*#__PURE__*/function () { + function Model() { + _classCallCheck(this, Model); + } + + _createClass(Model, [{ + key: "_constructor", + value: function _constructor(options, destroyHandler) { + this.options = options || {}; + this._parent = Model.target; + var state = _.isFunction(this.state) ? this.state() : this.state; + var computed = this.computed; + var context = this.context; + var inject = this.inject; + var childContext = this.childContext; + var watch = this.watch; + var actions = this.actions; + + _.keys(state).concat(_.keys(computed)).concat(inject || []).concat(context || []); + + var mixins = this.mixins; + defineProps(this); + childContext && defineContext(this, childContext); + initMixins(this, mixins); + this.init(); + initState(this, _.extend(getInjectValues(this), state)); + initComputed(this, computed); + REACTIVE && initWatch(this, watch); + initMethods(this, actions); + this.created && this.created(); + this._destroyHandler = destroyHandler; + } + }, { + key: "_init", + value: function _init() {} + }, { + key: "init", + value: function init() { + this._init(); + } + }, { + key: "destroy", + value: function destroy() { + _.each(this._watchers, function (unwatches) { + unwatches = _.isArray(unwatches) ? unwatches : [unwatches]; + + _.each(unwatches, function (unwatch) { + unwatch(); + }); + }); + + this._watchers && (this._watchers = []); + this.destroyed && this.destroyed(); + this.$$computed = null; + this.$$state = null; + this._destroyHandler && this._destroyHandler(); + } + }]); + + return Model; + }(); + function set(target, key, val) { + if (_.isArray(target)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + return val; + } + + target[key] = val; + return target; + } + function freeze(value) { + Object.defineProperty(value, '__v_skip', { + configurable: true, + enumerable: false, + value: value + }); + return value; + } + function del(target, key) { + if (_.isArray(target)) { + target.splice(key, 1); + return; } - function config(options) { - options || (options = {}); - if ("reactive" in options) { - REACTIVE = options.reactive; - } + if (!_.has(target, key)) { + return; } - function toJSON(model) { - var result; + delete target[key]; + } + function define(model) { + return REACTIVE ? reactive(model) : model; + } + function config(options) { + options || (options = {}); + + if ("reactive" in options) { + REACTIVE = options.reactive; + } + } - if (_.isArray(model)) { - result = []; + function toJSON(model) { + var result; - for (var i = 0, len = model.length; i < len; i++) { - result[i] = toJSON(model[i]); - } - } else if (model && isPlainObject(model)) { - result = {}; + if (_.isArray(model)) { + result = []; - for (var key in model) { - result[key] = toJSON(model[key]); - } - } else { - result = model; - } + for (var i = 0, len = model.length; i < len; i++) { + result[i] = toJSON(model[i]); + } + } else if (model && isPlainObject(model)) { + result = {}; - return result; + for (var key in model) { + result[key] = toJSON(model[key]); + } + } else { + result = model; } - var version = "3.0"; + return result; + } + + var version = "3.0"; - exports.Model = Model; - exports.config = config; - exports.define = define; - exports.del = del; - exports.mixin = mixin; - exports.set = set; - exports.toJSON = toJSON; - exports.version = version; - exports.watch = watch; + exports.Model = Model; + exports.config = config; + exports.define = define; + exports.del = del; + exports.freeze = freeze; + exports.mixin = mixin; + exports.set = set; + exports.toJSON = toJSON; + exports.version = version; + exports.watch = watch; - Object.defineProperty(exports, '__esModule', { value: true }); + Object.defineProperty(exports, '__esModule', { value: true }); }))); diff --git a/dist/fix/worker.compact.js b/dist/fix/worker.compact.js index 63cfbe759..e537706ad 100644 --- a/dist/fix/worker.compact.js +++ b/dist/fix/worker.compact.js @@ -1,10 +1,17 @@ ;(function () { var contexts = {}; + var init = false; var WORKER; - BI.useWorker = function (wk) { - WORKER = wk; + var enableWorker = function () { + if (init) { + return init; + } + // 开启Worker模式 + BI.config("bi.provider.system", function (provider) { + provider.setWorkerMode(true); + }); var _init = BI.Widget.prototype._init; BI.Widget.prototype._init = function () { this.$destroyWorker = createWorker.call(this); @@ -46,7 +53,16 @@ console.error(e); } }; + init = postMessage; + return postMessage; + }; + BI.useWorker = function (wk) { + if (!_global.Worker || !_global.Proxy) { + return; + } + var postMessage = enableWorker(); + WORKER = wk; if (WORKER) { WORKER.addEventListener("message", function (e) { var data = e.data; @@ -72,7 +88,7 @@ name: name, eventType: "create", options: options, - watches: BI.map(this.watch, function (key) { + watches: BI.map(this.$watch || this.watch, function (key) { return key; }) }); @@ -101,57 +117,7 @@ eventType: "destroy" }); }; - } else { - this.store = BI.Models.getModel(modelType, options); - this.store && (this.store._widget = this); - if (this.store instanceof Fix.Model) { - this.model = this.store.model; - } else { - this.model = this.store; - } - initWatch(this, this.watch); - return function () { - this.store && BI.isFunction(this.store.destroy) && this.store.destroy(); - BI.each(this._watchers, function (i, unwatches) { - unwatches = BI.isArray(unwatches) ? unwatches : [unwatches]; - BI.each(unwatches, function (j, unwatch) { - unwatch(); - }); - }); - this._watchers && (this._watchers = []); - if (this.store) { - this.store._parent && (this.store._parent = null); - this.store._widget && (this.store._widget = null); - this.store = null; - } - }; - } - - } - } - - function initWatch (vm, watch) { - vm._watchers || (vm._watchers = []); - for (var key in watch) { - var handler = watch[key]; - if (BI.isArray(handler)) { - for (var i = 0; i < handler.length; i++) { - vm._watchers.push(createWatcher(vm, key, handler[i])); - } - } else { - vm._watchers.push(createWatcher(vm, key, handler)); } } } - - function createWatcher (vm, keyOrFn, cb, options) { - if (BI.isPlainObject(cb)) { - options = cb; - cb = cb.handler; - } - options = options || {}; - return Fix.watch(vm.model, keyOrFn, _.bind(cb, vm), BI.extend(options, { - store: vm.store - })); - } }()); diff --git a/dist/font/iconfont.eot b/dist/font/iconfont.eot index 096920073..e65645dbd 100644 Binary files a/dist/font/iconfont.eot and b/dist/font/iconfont.eot differ diff --git a/dist/font/iconfont.svg b/dist/font/iconfont.svg index 828e25e8c..a04b152fa 100644 --- a/dist/font/iconfont.svg +++ b/dist/font/iconfont.svg @@ -14,1257 +14,1681 @@ /> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/font/iconfont.ttf b/dist/font/iconfont.ttf index 063794e17..09cb798ae 100644 Binary files a/dist/font/iconfont.ttf and b/dist/font/iconfont.ttf differ diff --git a/dist/font/iconfont.woff b/dist/font/iconfont.woff index 710b16b2b..fb99c8512 100644 Binary files a/dist/font/iconfont.woff and b/dist/font/iconfont.woff differ diff --git a/dist/font/iconfont.woff2 b/dist/font/iconfont.woff2 index 8cb81ad6c..5b9bb3bd0 100644 Binary files a/dist/font/iconfont.woff2 and b/dist/font/iconfont.woff2 differ diff --git a/dist/images/1x/background/marker.png b/dist/images/1x/background/marker.png deleted file mode 100644 index 3929bbb51..000000000 Binary files a/dist/images/1x/background/marker.png and /dev/null differ diff --git a/dist/images/1x/background/mask.png b/dist/images/1x/background/mask.png deleted file mode 100644 index b0a4d406f..000000000 Binary files a/dist/images/1x/background/mask.png and /dev/null differ diff --git a/dist/images/1x/background/wheel.png b/dist/images/1x/background/wheel.png deleted file mode 100644 index 97b343d98..000000000 Binary files a/dist/images/1x/background/wheel.png and /dev/null differ diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_1.png b/dist/images/1x/icon/dark/tree_solid_collapse_1.png new file mode 100644 index 000000000..3825febd3 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_collapse_1.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_2.png b/dist/images/1x/icon/dark/tree_solid_collapse_2.png new file mode 100644 index 000000000..d9c33bada Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_collapse_2.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_3.png b/dist/images/1x/icon/dark/tree_solid_collapse_3.png new file mode 100644 index 000000000..a73232ffb Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_collapse_3.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_4.png b/dist/images/1x/icon/dark/tree_solid_collapse_4.png new file mode 100644 index 000000000..aeb12dd5a Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_collapse_4.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_collapse_5.png b/dist/images/1x/icon/dark/tree_solid_collapse_5.png new file mode 100644 index 000000000..ea1e4a8d6 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_collapse_5.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_expand_1.png b/dist/images/1x/icon/dark/tree_solid_expand_1.png new file mode 100644 index 000000000..6365fbd12 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_expand_1.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_expand_2.png b/dist/images/1x/icon/dark/tree_solid_expand_2.png new file mode 100644 index 000000000..fa29e6eb1 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_expand_2.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_expand_3.png b/dist/images/1x/icon/dark/tree_solid_expand_3.png new file mode 100644 index 000000000..9513a4b82 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_expand_3.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_expand_4.png b/dist/images/1x/icon/dark/tree_solid_expand_4.png new file mode 100644 index 000000000..6be667d7d Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_expand_4.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_expand_5.png b/dist/images/1x/icon/dark/tree_solid_expand_5.png new file mode 100644 index 000000000..66648d619 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_expand_5.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_1.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_1.png new file mode 100644 index 000000000..a64ab7e49 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_vertical_line_1.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_2.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_2.png new file mode 100644 index 000000000..e43e151e7 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_vertical_line_2.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_3.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_3.png new file mode 100644 index 000000000..a7b4e4bf0 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_vertical_line_3.png differ diff --git a/dist/images/1x/icon/dark/tree_solid_vertical_line_4.png b/dist/images/1x/icon/dark/tree_solid_vertical_line_4.png new file mode 100644 index 000000000..20d66af62 Binary files /dev/null and b/dist/images/1x/icon/dark/tree_solid_vertical_line_4.png differ diff --git a/dist/images/1x/icon/tree_solid_collapse_1.png b/dist/images/1x/icon/tree_solid_collapse_1.png new file mode 100644 index 000000000..a5e5dcf9c Binary files /dev/null and b/dist/images/1x/icon/tree_solid_collapse_1.png differ diff --git a/dist/images/1x/icon/tree_solid_collapse_2.png b/dist/images/1x/icon/tree_solid_collapse_2.png new file mode 100644 index 000000000..2acf7e7c4 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_collapse_2.png differ diff --git a/dist/images/1x/icon/tree_solid_collapse_3.png b/dist/images/1x/icon/tree_solid_collapse_3.png new file mode 100644 index 000000000..5bd6fbe19 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_collapse_3.png differ diff --git a/dist/images/1x/icon/tree_solid_collapse_4.png b/dist/images/1x/icon/tree_solid_collapse_4.png new file mode 100644 index 000000000..b445df5d9 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_collapse_4.png differ diff --git a/dist/images/1x/icon/tree_solid_collapse_5.png b/dist/images/1x/icon/tree_solid_collapse_5.png new file mode 100644 index 000000000..f69e7dfb7 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_collapse_5.png differ diff --git a/dist/images/1x/icon/tree_solid_expand_1.png b/dist/images/1x/icon/tree_solid_expand_1.png new file mode 100644 index 000000000..0b28d5e7e Binary files /dev/null and b/dist/images/1x/icon/tree_solid_expand_1.png differ diff --git a/dist/images/1x/icon/tree_solid_expand_2.png b/dist/images/1x/icon/tree_solid_expand_2.png new file mode 100644 index 000000000..e418819a2 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_expand_2.png differ diff --git a/dist/images/1x/icon/tree_solid_expand_3.png b/dist/images/1x/icon/tree_solid_expand_3.png new file mode 100644 index 000000000..6759ade95 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_expand_3.png differ diff --git a/dist/images/1x/icon/tree_solid_expand_4.png b/dist/images/1x/icon/tree_solid_expand_4.png new file mode 100644 index 000000000..b8357157d Binary files /dev/null and b/dist/images/1x/icon/tree_solid_expand_4.png differ diff --git a/dist/images/1x/icon/tree_solid_expand_5.png b/dist/images/1x/icon/tree_solid_expand_5.png new file mode 100644 index 000000000..a4ed55589 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_expand_5.png differ diff --git a/dist/images/1x/icon/tree_solid_vertical_line_1.png b/dist/images/1x/icon/tree_solid_vertical_line_1.png new file mode 100644 index 000000000..b80a5808f Binary files /dev/null and b/dist/images/1x/icon/tree_solid_vertical_line_1.png differ diff --git a/dist/images/1x/icon/tree_solid_vertical_line_2.png b/dist/images/1x/icon/tree_solid_vertical_line_2.png new file mode 100644 index 000000000..894cfd153 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_vertical_line_2.png differ diff --git a/dist/images/1x/icon/tree_solid_vertical_line_3.png b/dist/images/1x/icon/tree_solid_vertical_line_3.png new file mode 100644 index 000000000..8a6914b63 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_vertical_line_3.png differ diff --git a/dist/images/1x/icon/tree_solid_vertical_line_4.png b/dist/images/1x/icon/tree_solid_vertical_line_4.png new file mode 100644 index 000000000..28d18d2a9 Binary files /dev/null and b/dist/images/1x/icon/tree_solid_vertical_line_4.png differ diff --git a/dist/images/2x/background/marker.png b/dist/images/2x/background/marker.png deleted file mode 100644 index 3929bbb51..000000000 Binary files a/dist/images/2x/background/marker.png and /dev/null differ diff --git a/dist/images/2x/background/mask.png b/dist/images/2x/background/mask.png deleted file mode 100644 index b0a4d406f..000000000 Binary files a/dist/images/2x/background/mask.png and /dev/null differ diff --git a/dist/images/2x/background/wheel.png b/dist/images/2x/background/wheel.png deleted file mode 100644 index 97b343d98..000000000 Binary files a/dist/images/2x/background/wheel.png and /dev/null differ diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_1.png b/dist/images/2x/icon/dark/tree_solid_collapse_1.png new file mode 100644 index 000000000..9bd5051d1 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_collapse_1.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_2.png b/dist/images/2x/icon/dark/tree_solid_collapse_2.png new file mode 100644 index 000000000..a111825f4 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_collapse_2.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_3.png b/dist/images/2x/icon/dark/tree_solid_collapse_3.png new file mode 100644 index 000000000..c16ac4fc3 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_collapse_3.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_4.png b/dist/images/2x/icon/dark/tree_solid_collapse_4.png new file mode 100644 index 000000000..f8b7f8ef2 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_collapse_4.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_collapse_5.png b/dist/images/2x/icon/dark/tree_solid_collapse_5.png new file mode 100644 index 000000000..5620b0886 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_collapse_5.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_expand_1.png b/dist/images/2x/icon/dark/tree_solid_expand_1.png new file mode 100644 index 000000000..edae4d431 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_expand_1.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_expand_2.png b/dist/images/2x/icon/dark/tree_solid_expand_2.png new file mode 100644 index 000000000..5951e659f Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_expand_2.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_expand_3.png b/dist/images/2x/icon/dark/tree_solid_expand_3.png new file mode 100644 index 000000000..de68cf779 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_expand_3.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_expand_4.png b/dist/images/2x/icon/dark/tree_solid_expand_4.png new file mode 100644 index 000000000..dee6827fb Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_expand_4.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_expand_5.png b/dist/images/2x/icon/dark/tree_solid_expand_5.png new file mode 100644 index 000000000..6b6a559f9 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_expand_5.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_1.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_1.png new file mode 100644 index 000000000..2c674dfd9 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_vertical_line_1.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_2.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_2.png new file mode 100644 index 000000000..ab5584b5f Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_vertical_line_2.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_3.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_3.png new file mode 100644 index 000000000..adf63d3d5 Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_vertical_line_3.png differ diff --git a/dist/images/2x/icon/dark/tree_solid_vertical_line_4.png b/dist/images/2x/icon/dark/tree_solid_vertical_line_4.png new file mode 100644 index 000000000..17c39572d Binary files /dev/null and b/dist/images/2x/icon/dark/tree_solid_vertical_line_4.png differ diff --git a/dist/images/2x/icon/tree_solid_collapse_1.png b/dist/images/2x/icon/tree_solid_collapse_1.png new file mode 100644 index 000000000..3aa9463ad Binary files /dev/null and b/dist/images/2x/icon/tree_solid_collapse_1.png differ diff --git a/dist/images/2x/icon/tree_solid_collapse_2.png b/dist/images/2x/icon/tree_solid_collapse_2.png new file mode 100644 index 000000000..b0be8e5c0 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_collapse_2.png differ diff --git a/dist/images/2x/icon/tree_solid_collapse_3.png b/dist/images/2x/icon/tree_solid_collapse_3.png new file mode 100644 index 000000000..b592b6a14 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_collapse_3.png differ diff --git a/dist/images/2x/icon/tree_solid_collapse_4.png b/dist/images/2x/icon/tree_solid_collapse_4.png new file mode 100644 index 000000000..f9b67b9cd Binary files /dev/null and b/dist/images/2x/icon/tree_solid_collapse_4.png differ diff --git a/dist/images/2x/icon/tree_solid_collapse_5.png b/dist/images/2x/icon/tree_solid_collapse_5.png new file mode 100644 index 000000000..55e059d6f Binary files /dev/null and b/dist/images/2x/icon/tree_solid_collapse_5.png differ diff --git a/dist/images/2x/icon/tree_solid_expand_1.png b/dist/images/2x/icon/tree_solid_expand_1.png new file mode 100644 index 000000000..751eac8f4 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_expand_1.png differ diff --git a/dist/images/2x/icon/tree_solid_expand_2.png b/dist/images/2x/icon/tree_solid_expand_2.png new file mode 100644 index 000000000..2a94194d1 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_expand_2.png differ diff --git a/dist/images/2x/icon/tree_solid_expand_3.png b/dist/images/2x/icon/tree_solid_expand_3.png new file mode 100644 index 000000000..2300dad28 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_expand_3.png differ diff --git a/dist/images/2x/icon/tree_solid_expand_4.png b/dist/images/2x/icon/tree_solid_expand_4.png new file mode 100644 index 000000000..7eb88716c Binary files /dev/null and b/dist/images/2x/icon/tree_solid_expand_4.png differ diff --git a/dist/images/2x/icon/tree_solid_expand_5.png b/dist/images/2x/icon/tree_solid_expand_5.png new file mode 100644 index 000000000..7ae297dd6 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_expand_5.png differ diff --git a/dist/images/2x/icon/tree_solid_vertical_line_1.png b/dist/images/2x/icon/tree_solid_vertical_line_1.png new file mode 100644 index 000000000..2b1a23d9b Binary files /dev/null and b/dist/images/2x/icon/tree_solid_vertical_line_1.png differ diff --git a/dist/images/2x/icon/tree_solid_vertical_line_2.png b/dist/images/2x/icon/tree_solid_vertical_line_2.png new file mode 100644 index 000000000..429f958ac Binary files /dev/null and b/dist/images/2x/icon/tree_solid_vertical_line_2.png differ diff --git a/dist/images/2x/icon/tree_solid_vertical_line_3.png b/dist/images/2x/icon/tree_solid_vertical_line_3.png new file mode 100644 index 000000000..a44f13db0 Binary files /dev/null and b/dist/images/2x/icon/tree_solid_vertical_line_3.png differ diff --git a/dist/images/2x/icon/tree_solid_vertical_line_4.png b/dist/images/2x/icon/tree_solid_vertical_line_4.png new file mode 100644 index 000000000..7de47eeed Binary files /dev/null and b/dist/images/2x/icon/tree_solid_vertical_line_4.png differ diff --git a/dist/router.js b/dist/router.js deleted file mode 100644 index 77ca04c7c..000000000 --- a/dist/router.js +++ /dev/null @@ -1,3200 +0,0 @@ -/*! - * vue-router v3.5.2 - * (c) 2021 Evan You - * @license MIT - */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory()); - }(this, (function () { 'use strict'; - - /* */ - - function assert (condition, message) { - if (!condition) { - throw new Error(("[vue-router] " + message)) - } - } - - function warn (condition, message) { - if (!condition) { - typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); - } - } - - function extend (a, b) { - for (var key in b) { - a[key] = b[key]; - } - return a - } - - /* */ - - var encodeReserveRE = /[!'()*]/g; - var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); }; - var commaRE = /%2C/g; - - // fixed encodeURIComponent which is more conformant to RFC3986: - // - escapes [!'()*] - // - preserve commas - var encode = function (str) { return encodeURIComponent(str) - .replace(encodeReserveRE, encodeReserveReplacer) - .replace(commaRE, ','); }; - - function decode (str) { - try { - return decodeURIComponent(str) - } catch (err) { - { - warn(false, ("Error decoding \"" + str + "\". Leaving it intact.")); - } - } - return str - } - - function resolveQuery ( - query, - extraQuery, - _parseQuery - ) { - if ( extraQuery === void 0 ) extraQuery = {}; - - var parse = _parseQuery || parseQuery; - var parsedQuery; - try { - parsedQuery = parse(query || ''); - } catch (e) { - warn(false, e.message); - parsedQuery = {}; - } - for (var key in extraQuery) { - var value = extraQuery[key]; - parsedQuery[key] = Array.isArray(value) - ? value.map(castQueryParamValue) - : castQueryParamValue(value); - } - return parsedQuery - } - - var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); }; - - function parseQuery (query) { - var res = {}; - - query = query.trim().replace(/^(\?|#|&)/, ''); - - if (!query) { - return res - } - - query.split('&').forEach(function (param) { - var parts = param.replace(/\+/g, ' ').split('='); - var key = decode(parts.shift()); - var val = parts.length > 0 ? decode(parts.join('=')) : null; - - if (res[key] === undefined) { - res[key] = val; - } else if (Array.isArray(res[key])) { - res[key].push(val); - } else { - res[key] = [res[key], val]; - } - }); - - return res - } - - function stringifyQuery (obj) { - var res = obj - ? Object.keys(obj) - .map(function (key) { - var val = obj[key]; - - if (val === undefined) { - return '' - } - - if (val === null) { - return encode(key) - } - - if (Array.isArray(val)) { - var result = []; - val.forEach(function (val2) { - if (val2 === undefined) { - return - } - if (val2 === null) { - result.push(encode(key)); - } else { - result.push(encode(key) + '=' + encode(val2)); - } - }); - return result.join('&') - } - - return encode(key) + '=' + encode(val) - }) - .filter(function (x) { return x.length > 0; }) - .join('&') - : null; - return res ? ("?" + res) : '' - } - - /* */ - - var trailingSlashRE = /\/?$/; - - function createRoute ( - record, - location, - redirectedFrom, - router - ) { - var stringifyQuery = router && router.options.stringifyQuery; - - var query = location.query || {}; - try { - query = clone(query); - } catch (e) {} - - var route = { - name: location.name || (record && record.name), - meta: (record && record.meta) || {}, - path: location.path || '/', - hash: location.hash || '', - query: query, - params: location.params || {}, - fullPath: getFullPath(location, stringifyQuery), - matched: record ? formatMatch(record) : [] - }; - if (redirectedFrom) { - route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery); - } - return Object.freeze(route) - } - - function clone (value) { - if (Array.isArray(value)) { - return value.map(clone) - } else if (value && typeof value === 'object') { - var res = {}; - for (var key in value) { - res[key] = clone(value[key]); - } - return res - } else { - return value - } - } - - // the starting route that represents the initial state - var START = createRoute(null, { - path: '/' - }); - - function formatMatch (record) { - var res = []; - while (record) { - res.unshift(record); - record = record.parent; - } - return res - } - - function getFullPath ( - ref, - _stringifyQuery - ) { - var path = ref.path; - var query = ref.query; if ( query === void 0 ) query = {}; - var hash = ref.hash; if ( hash === void 0 ) hash = ''; - - var stringify = _stringifyQuery || stringifyQuery; - return (path || '/') + stringify(query) + hash - } - - function isSameRoute (a, b, onlyPath) { - if (b === START) { - return a === b - } else if (!b) { - return false - } else if (a.path && b.path) { - return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath || - a.hash === b.hash && - isObjectEqual(a.query, b.query)) - } else if (a.name && b.name) { - return ( - a.name === b.name && - (onlyPath || ( - a.hash === b.hash && - isObjectEqual(a.query, b.query) && - isObjectEqual(a.params, b.params)) - ) - ) - } else { - return false - } - } - - function isObjectEqual (a, b) { - if ( a === void 0 ) a = {}; - if ( b === void 0 ) b = {}; - - // handle null value #1566 - if (!a || !b) { return a === b } - var aKeys = Object.keys(a).sort(); - var bKeys = Object.keys(b).sort(); - if (aKeys.length !== bKeys.length) { - return false - } - return aKeys.every(function (key, i) { - var aVal = a[key]; - var bKey = bKeys[i]; - if (bKey !== key) { return false } - var bVal = b[key]; - // query values can be null and undefined - if (aVal == null || bVal == null) { return aVal === bVal } - // check nested equality - if (typeof aVal === 'object' && typeof bVal === 'object') { - return isObjectEqual(aVal, bVal) - } - return String(aVal) === String(bVal) - }) - } - - function isIncludedRoute (current, target) { - return ( - current.path.replace(trailingSlashRE, '/').indexOf( - target.path.replace(trailingSlashRE, '/') - ) === 0 && - (!target.hash || current.hash === target.hash) && - queryIncludes(current.query, target.query) - ) - } - - function queryIncludes (current, target) { - for (var key in target) { - if (!(key in current)) { - return false - } - } - return true - } - - function handleRouteEntered (route) { - for (var i = 0; i < route.matched.length; i++) { - var record = route.matched[i]; - for (var name in record.instances) { - var instance = record.instances[name]; - var cbs = record.enteredCbs[name]; - if (!instance || !cbs) { continue } - delete record.enteredCbs[name]; - for (var i$1 = 0; i$1 < cbs.length; i$1++) { - if (!instance._isBeingDestroyed) { cbs[i$1](instance); } - } - } - } - } - - // var View = { - // name: 'RouterView', - // functional: true, - // props: { - // name: { - // type: String, - // default: 'default' - // } - // }, - // render: function render (_, ref) { - // var props = ref.props; - // var children = ref.children; - // var parent = ref.parent; - // var data = ref.data; - - // // used by devtools to display a router-view badge - // data.routerView = true; - - // // directly use parent context's createElement() function - // // so that components rendered by router-view can resolve named slots - // var h = parent.$createElement; - // var name = props.name; - // var route = parent.$route; - // var cache = parent._routerViewCache || (parent._routerViewCache = {}); - - // // determine current view depth, also check to see if the tree - // // has been toggled inactive but kept-alive. - // var depth = 0; - // var inactive = false; - // while (parent && parent._routerRoot !== parent) { - // var vnodeData = parent.$vnode ? parent.$vnode.data : {}; - // if (vnodeData.routerView) { - // depth++; - // } - // if (vnodeData.keepAlive && parent._directInactive && parent._inactive) { - // inactive = true; - // } - // parent = parent.$parent; - // } - // data.routerViewDepth = depth; - - // // render previous view if the tree is inactive and kept-alive - // if (inactive) { - // var cachedData = cache[name]; - // var cachedComponent = cachedData && cachedData.component; - // if (cachedComponent) { - // // #2301 - // // pass props - // if (cachedData.configProps) { - // fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps); - // } - // return h(cachedComponent, data, children) - // } else { - // // render previous empty view - // return h() - // } - // } - - // var matched = route.matched[depth]; - // var component = matched && matched.components[name]; - - // // render empty node if no matched route or no config component - // if (!matched || !component) { - // cache[name] = null; - // return h() - // } - - // // cache component - // cache[name] = { component: component }; - - // // attach instance registration hook - // // this will be called in the instance's injected lifecycle hooks - // data.registerRouteInstance = function (vm, val) { - // // val could be undefined for unregistration - // var current = matched.instances[name]; - // if ( - // (val && current !== vm) || - // (!val && current === vm) - // ) { - // matched.instances[name] = val; - // } - // } - - // // also register instance in prepatch hook - // // in case the same component instance is reused across different routes - // ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) { - // matched.instances[name] = vnode.componentInstance; - // }; - - // // register instance in init hook - // // in case kept-alive component be actived when routes changed - // data.hook.init = function (vnode) { - // if (vnode.data.keepAlive && - // vnode.componentInstance && - // vnode.componentInstance !== matched.instances[name] - // ) { - // matched.instances[name] = vnode.componentInstance; - // } - - // // if the route transition has already been confirmed then we weren't - // // able to call the cbs during confirmation as the component was not - // // registered yet, so we call it here. - // handleRouteEntered(route); - // }; - - // var configProps = matched.props && matched.props[name]; - // // save route and configProps in cache - // if (configProps) { - // extend(cache[name], { - // route: route, - // configProps: configProps - // }); - // fillPropsinData(component, data, route, configProps); - // } - - // return h(component, data, children) - // } - // }; - - // function fillPropsinData (component, data, route, configProps) { - // // resolve props - // var propsToPass = data.props = resolveProps(route, configProps); - // if (propsToPass) { - // // clone to prevent mutation - // propsToPass = data.props = extend({}, propsToPass); - // // pass non-declared props as attrs - // var attrs = data.attrs = data.attrs || {}; - // for (var key in propsToPass) { - // if (!component.props || !(key in component.props)) { - // attrs[key] = propsToPass[key]; - // delete propsToPass[key]; - // } - // } - // } - // } - - // function resolveProps (route, config) { - // switch (typeof config) { - // case 'undefined': - // return - // case 'object': - // return config - // case 'function': - // return config(route) - // case 'boolean': - // return config ? route.params : undefined - // default: - // { - // warn( - // false, - // "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " + - // "expecting an object, function or boolean." - // ); - // } - // } - // } - - /* */ - - function resolvePath ( - relative, - base, - append - ) { - var firstChar = relative.charAt(0); - if (firstChar === '/') { - return relative - } - - if (firstChar === '?' || firstChar === '#') { - return base + relative - } - - var stack = base.split('/'); - - // remove trailing segment if: - // - not appending - // - appending to trailing slash (last segment is empty) - if (!append || !stack[stack.length - 1]) { - stack.pop(); - } - - // resolve relative path - var segments = relative.replace(/^\//, '').split('/'); - for (var i = 0; i < segments.length; i++) { - var segment = segments[i]; - if (segment === '..') { - stack.pop(); - } else if (segment !== '.') { - stack.push(segment); - } - } - - // ensure leading slash - if (stack[0] !== '') { - stack.unshift(''); - } - - return stack.join('/') - } - - function parsePath (path) { - var hash = ''; - var query = ''; - - var hashIndex = path.indexOf('#'); - if (hashIndex >= 0) { - hash = path.slice(hashIndex); - path = path.slice(0, hashIndex); - } - - var queryIndex = path.indexOf('?'); - if (queryIndex >= 0) { - query = path.slice(queryIndex + 1); - path = path.slice(0, queryIndex); - } - - return { - path: path, - query: query, - hash: hash - } - } - - function cleanPath (path) { - return path.replace(/\/\//g, '/') - } - - var isarray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; - }; - - /** - * Expose `pathToRegexp`. - */ - var pathToRegexp_1 = pathToRegexp; - var parse_1 = parse; - var compile_1 = compile; - var tokensToFunction_1 = tokensToFunction; - var tokensToRegExp_1 = tokensToRegExp; - - /** - * The main path matching regexp utility. - * - * @type {RegExp} - */ - var PATH_REGEXP = new RegExp([ - // Match escaped characters that would otherwise appear in future matches. - // This allows the user to escape special characters that won't transform. - '(\\\\.)', - // Match Express-style parameters and un-named parameters with a prefix - // and optional suffixes. Matches appear as: - // - // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] - // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] - // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] - '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' - ].join('|'), 'g'); - - /** - * Parse a string for the raw tokens. - * - * @param {string} str - * @param {Object=} options - * @return {!Array} - */ - function parse (str, options) { - var tokens = []; - var key = 0; - var index = 0; - var path = ''; - var defaultDelimiter = options && options.delimiter || '/'; - var res; - - while ((res = PATH_REGEXP.exec(str)) != null) { - var m = res[0]; - var escaped = res[1]; - var offset = res.index; - path += str.slice(index, offset); - index = offset + m.length; - - // Ignore already escaped sequences. - if (escaped) { - path += escaped[1]; - continue - } - - var next = str[index]; - var prefix = res[2]; - var name = res[3]; - var capture = res[4]; - var group = res[5]; - var modifier = res[6]; - var asterisk = res[7]; - - // Push the current path onto the tokens. - if (path) { - tokens.push(path); - path = ''; - } - - var partial = prefix != null && next != null && next !== prefix; - var repeat = modifier === '+' || modifier === '*'; - var optional = modifier === '?' || modifier === '*'; - var delimiter = res[2] || defaultDelimiter; - var pattern = capture || group; - - tokens.push({ - name: name || key++, - prefix: prefix || '', - delimiter: delimiter, - optional: optional, - repeat: repeat, - partial: partial, - asterisk: !!asterisk, - pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') - }); - } - - // Match any characters still remaining. - if (index < str.length) { - path += str.substr(index); - } - - // If the path exists, push it onto the end. - if (path) { - tokens.push(path); - } - - return tokens - } - - /** - * Compile a string to a template function for the path. - * - * @param {string} str - * @param {Object=} options - * @return {!function(Object=, Object=)} - */ - function compile (str, options) { - return tokensToFunction(parse(str, options), options) - } - - /** - * Prettier encoding of URI path segments. - * - * @param {string} - * @return {string} - */ - function encodeURIComponentPretty (str) { - return encodeURI(str).replace(/[\/?#]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) - } - - /** - * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. - * - * @param {string} - * @return {string} - */ - function encodeAsterisk (str) { - return encodeURI(str).replace(/[?#]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) - } - - /** - * Expose a method for transforming tokens into the path function. - */ - function tokensToFunction (tokens, options) { - // Compile all the tokens into regexps. - var matches = new Array(tokens.length); - - // Compile all the patterns before compilation. - for (var i = 0; i < tokens.length; i++) { - if (typeof tokens[i] === 'object') { - matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)); - } - } - - return function (obj, opts) { - var path = ''; - var data = obj || {}; - var options = opts || {}; - var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; - - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - - if (typeof token === 'string') { - path += token; - - continue - } - - var value = data[token.name]; - var segment; - - if (value == null) { - if (token.optional) { - // Prepend partial segment prefixes. - if (token.partial) { - path += token.prefix; - } - - continue - } else { - throw new TypeError('Expected "' + token.name + '" to be defined') - } - } - - if (isarray(value)) { - if (!token.repeat) { - throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') - } - - if (value.length === 0) { - if (token.optional) { - continue - } else { - throw new TypeError('Expected "' + token.name + '" to not be empty') - } - } - - for (var j = 0; j < value.length; j++) { - segment = encode(value[j]); - - if (!matches[i].test(segment)) { - throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') - } - - path += (j === 0 ? token.prefix : token.delimiter) + segment; - } - - continue - } - - segment = token.asterisk ? encodeAsterisk(value) : encode(value); - - if (!matches[i].test(segment)) { - throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') - } - - path += token.prefix + segment; - } - - return path - } - } - - /** - * Escape a regular expression string. - * - * @param {string} str - * @return {string} - */ - function escapeString (str) { - return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') - } - - /** - * Escape the capturing group by escaping special characters and meaning. - * - * @param {string} group - * @return {string} - */ - function escapeGroup (group) { - return group.replace(/([=!:$\/()])/g, '\\$1') - } - - /** - * Attach the keys as a property of the regexp. - * - * @param {!RegExp} re - * @param {Array} keys - * @return {!RegExp} - */ - function attachKeys (re, keys) { - re.keys = keys; - return re - } - - /** - * Get the flags for a regexp from the options. - * - * @param {Object} options - * @return {string} - */ - function flags (options) { - return options && options.sensitive ? '' : 'i' - } - - /** - * Pull out keys from a regexp. - * - * @param {!RegExp} path - * @param {!Array} keys - * @return {!RegExp} - */ - function regexpToRegexp (path, keys) { - // Use a negative lookahead to match only capturing groups. - var groups = path.source.match(/\((?!\?)/g); - - if (groups) { - for (var i = 0; i < groups.length; i++) { - keys.push({ - name: i, - prefix: null, - delimiter: null, - optional: false, - repeat: false, - partial: false, - asterisk: false, - pattern: null - }); - } - } - - return attachKeys(path, keys) - } - - /** - * Transform an array into a regexp. - * - * @param {!Array} path - * @param {Array} keys - * @param {!Object} options - * @return {!RegExp} - */ - function arrayToRegexp (path, keys, options) { - var parts = []; - - for (var i = 0; i < path.length; i++) { - parts.push(pathToRegexp(path[i], keys, options).source); - } - - var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); - - return attachKeys(regexp, keys) - } - - /** - * Create a path regexp from string input. - * - * @param {string} path - * @param {!Array} keys - * @param {!Object} options - * @return {!RegExp} - */ - function stringToRegexp (path, keys, options) { - return tokensToRegExp(parse(path, options), keys, options) - } - - /** - * Expose a function for taking tokens and returning a RegExp. - * - * @param {!Array} tokens - * @param {(Array|Object)=} keys - * @param {Object=} options - * @return {!RegExp} - */ - function tokensToRegExp (tokens, keys, options) { - if (!isarray(keys)) { - options = /** @type {!Object} */ (keys || options); - keys = []; - } - - options = options || {}; - - var strict = options.strict; - var end = options.end !== false; - var route = ''; - - // Iterate over the tokens and create our regexp string. - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - - if (typeof token === 'string') { - route += escapeString(token); - } else { - var prefix = escapeString(token.prefix); - var capture = '(?:' + token.pattern + ')'; - - keys.push(token); - - if (token.repeat) { - capture += '(?:' + prefix + capture + ')*'; - } - - if (token.optional) { - if (!token.partial) { - capture = '(?:' + prefix + '(' + capture + '))?'; - } else { - capture = prefix + '(' + capture + ')?'; - } - } else { - capture = prefix + '(' + capture + ')'; - } - - route += capture; - } - } - - var delimiter = escapeString(options.delimiter || '/'); - var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; - - // In non-strict mode we allow a slash at the end of match. If the path to - // match already ends with a slash, we remove it for consistency. The slash - // is valid at the end of a path match, not in the middle. This is important - // in non-ending mode, where "/test/" shouldn't match "/test//route". - if (!strict) { - route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; - } - - if (end) { - route += '$'; - } else { - // In non-ending mode, we need the capturing groups to match as much as - // possible by using a positive lookahead to the end or next path segment. - route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; - } - - return attachKeys(new RegExp('^' + route, flags(options)), keys) - } - - /** - * Normalize the given path string, returning a regular expression. - * - * An empty array can be passed in for the keys, which will hold the - * placeholder key descriptions. For example, using `/user/:id`, `keys` will - * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. - * - * @param {(string|RegExp|Array)} path - * @param {(Array|Object)=} keys - * @param {Object=} options - * @return {!RegExp} - */ - function pathToRegexp (path, keys, options) { - if (!isarray(keys)) { - options = /** @type {!Object} */ (keys || options); - keys = []; - } - - options = options || {}; - - if (path instanceof RegExp) { - return regexpToRegexp(path, /** @type {!Array} */ (keys)) - } - - if (isarray(path)) { - return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) - } - - return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) - } - pathToRegexp_1.parse = parse_1; - pathToRegexp_1.compile = compile_1; - pathToRegexp_1.tokensToFunction = tokensToFunction_1; - pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; - - /* */ - - // $flow-disable-line - var regexpCompileCache = Object.create(null); - - function fillParams ( - path, - params, - routeMsg - ) { - params = params || {}; - try { - var filler = - regexpCompileCache[path] || - (regexpCompileCache[path] = pathToRegexp_1.compile(path)); - - // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }} - // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string - if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; } - - return filler(params, { pretty: true }) - } catch (e) { - { - // Fix #3072 no warn if `pathMatch` is string - warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message))); - } - return '' - } finally { - // delete the 0 if it was added - delete params[0]; - } - } - - /* */ - - function normalizeLocation ( - raw, - current, - append, - router - ) { - var next = typeof raw === 'string' ? { path: raw } : raw; - // named target - if (next._normalized) { - return next - } else if (next.name) { - next = extend({}, raw); - var params = next.params; - if (params && typeof params === 'object') { - next.params = extend({}, params); - } - return next - } - - // relative params - if (!next.path && next.params && current) { - next = extend({}, next); - next._normalized = true; - var params$1 = extend(extend({}, current.params), next.params); - if (current.name) { - next.name = current.name; - next.params = params$1; - } else if (current.matched.length) { - var rawPath = current.matched[current.matched.length - 1].path; - next.path = fillParams(rawPath, params$1, ("path " + (current.path))); - } else { - warn(false, "relative params navigation requires a current route."); - } - return next - } - - var parsedPath = parsePath(next.path || ''); - var basePath = (current && current.path) || '/'; - var path = parsedPath.path - ? resolvePath(parsedPath.path, basePath, append || next.append) - : basePath; - - var query = resolveQuery( - parsedPath.query, - next.query, - router && router.options.parseQuery - ); - - var hash = next.hash || parsedPath.hash; - if (hash && hash.charAt(0) !== '#') { - hash = "#" + hash; - } - - return { - _normalized: true, - path: path, - query: query, - hash: hash - } - } - - // var toTypes = [String, Object]; - // var eventTypes = [String, Array]; - - // var noop = function () {}; - - // var warnedCustomSlot; - // var warnedTagProp; - // var warnedEventProp; - - // var Link = { - // name: 'RouterLink', - // props: { - // to: { - // type: toTypes, - // required: true - // }, - // tag: { - // type: String, - // default: 'a' - // }, - // custom: Boolean, - // exact: Boolean, - // exactPath: Boolean, - // append: Boolean, - // replace: Boolean, - // activeClass: String, - // exactActiveClass: String, - // ariaCurrentValue: { - // type: String, - // default: 'page' - // }, - // event: { - // type: eventTypes, - // default: 'click' - // } - // }, - // render: function render (h) { - // var this$1 = this; - - // var router = this.$router; - // var current = this.$route; - // var ref = router.resolve( - // this.to, - // current, - // this.append - // ); - // var location = ref.location; - // var route = ref.route; - // var href = ref.href; - - // var classes = {}; - // var globalActiveClass = router.options.linkActiveClass; - // var globalExactActiveClass = router.options.linkExactActiveClass; - // // Support global empty active class - // var activeClassFallback = - // globalActiveClass == null ? 'router-link-active' : globalActiveClass; - // var exactActiveClassFallback = - // globalExactActiveClass == null - // ? 'router-link-exact-active' - // : globalExactActiveClass; - // var activeClass = - // this.activeClass == null ? activeClassFallback : this.activeClass; - // var exactActiveClass = - // this.exactActiveClass == null - // ? exactActiveClassFallback - // : this.exactActiveClass; - - // var compareTarget = route.redirectedFrom - // ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) - // : route; - - // classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath); - // classes[activeClass] = this.exact || this.exactPath - // ? classes[exactActiveClass] - // : isIncludedRoute(current, compareTarget); - - // var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null; - - // var handler = function (e) { - // if (guardEvent(e)) { - // if (this$1.replace) { - // router.replace(location, noop); - // } else { - // router.push(location, noop); - // } - // } - // }; - - // var on = { click: guardEvent }; - // if (Array.isArray(this.event)) { - // this.event.forEach(function (e) { - // on[e] = handler; - // }); - // } else { - // on[this.event] = handler; - // } - - // var data = { class: classes }; - - // var scopedSlot = - // !this.$scopedSlots.$hasNormal && - // this.$scopedSlots.default && - // this.$scopedSlots.default({ - // href: href, - // route: route, - // navigate: handler, - // isActive: classes[activeClass], - // isExactActive: classes[exactActiveClass] - // }); - - // if (scopedSlot) { - // if (!this.custom) { - // !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\n\n'); - // warnedCustomSlot = true; - // } - // if (scopedSlot.length === 1) { - // return scopedSlot[0] - // } else if (scopedSlot.length > 1 || !scopedSlot.length) { - // { - // warn( - // false, - // (" with to=\"" + (this.to) + "\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.") - // ); - // } - // return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot) - // } - // } - - // { - // if ('tag' in this.$options.propsData && !warnedTagProp) { - // warn( - // false, - // "'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." - // ); - // warnedTagProp = true; - // } - // if ('event' in this.$options.propsData && !warnedEventProp) { - // warn( - // false, - // "'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." - // ); - // warnedEventProp = true; - // } - // } - - // if (this.tag === 'a') { - // data.on = on; - // data.attrs = { href: href, 'aria-current': ariaCurrentValue }; - // } else { - // // find the first child and apply listener and href - // var a = findAnchor(this.$slots.default); - // if (a) { - // // in case the is a static node - // a.isStatic = false; - // var aData = (a.data = extend({}, a.data)); - // aData.on = aData.on || {}; - // // transform existing events in both objects into arrays so we can push later - // for (var event in aData.on) { - // var handler$1 = aData.on[event]; - // if (event in on) { - // aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1]; - // } - // } - // // append new listeners for router-link - // for (var event$1 in on) { - // if (event$1 in aData.on) { - // // on[event] is always a function - // aData.on[event$1].push(on[event$1]); - // } else { - // aData.on[event$1] = handler; - // } - // } - - // var aAttrs = (a.data.attrs = extend({}, a.data.attrs)); - // aAttrs.href = href; - // aAttrs['aria-current'] = ariaCurrentValue; - // } else { - // // doesn't have child, apply listener to self - // data.on = on; - // } - // } - - // return h(this.tag, data, this.$slots.default) - // } - // }; - - function guardEvent (e) { - // don't redirect with control keys - if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return } - // don't redirect when preventDefault called - if (e.defaultPrevented) { return } - // don't redirect on right click - if (e.button !== undefined && e.button !== 0) { return } - // don't redirect if `target="_blank"` - if (e.currentTarget && e.currentTarget.getAttribute) { - var target = e.currentTarget.getAttribute('target'); - if (/\b_blank\b/i.test(target)) { return } - } - // this may be a Weex event which doesn't have this method - if (e.preventDefault) { - e.preventDefault(); - } - return true - } - - function findAnchor (children) { - if (children) { - var child; - for (var i = 0; i < children.length; i++) { - child = children[i]; - if (child.tag === 'a') { - return child - } - if (child.children && (child = findAnchor(child.children))) { - return child - } - } - } - } - - // var _Vue; - - // function install (Vue) { - // if (install.installed && _Vue === Vue) { return } - // install.installed = true; - - // _Vue = Vue; - - // var isDef = function (v) { return v !== undefined; }; - - // var registerInstance = function (vm, callVal) { - // var i = vm.$options._parentVnode; - // if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) { - // i(vm, callVal); - // } - // }; - - // Vue.mixin({ - // beforeCreate: function beforeCreate () { - // if (isDef(this.$options.router)) { - // this._routerRoot = this; - // this._router = this.$options.router; - // this._router.init(this); - // Vue.util.defineReactive(this, '_route', this._router.history.current); - // } else { - // this._routerRoot = (this.$parent && this.$parent._routerRoot) || this; - // } - // registerInstance(this, this); - // }, - // destroyed: function destroyed () { - // registerInstance(this); - // } - // }); - - // Object.defineProperty(Vue.prototype, '$router', { - // get: function get () { return this._routerRoot._router } - // }); - - // Object.defineProperty(Vue.prototype, '$route', { - // get: function get () { return this._routerRoot._route } - // }); - - // Vue.component('RouterView', View); - // Vue.component('RouterLink', Link); - - // var strats = Vue.config.optionMergeStrategies; - // // use the same hook merging strategy for route hooks - // strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created; - // } - - /* */ - - var inBrowser = typeof window !== 'undefined'; - - /* */ - - function createRouteMap ( - routes, - oldPathList, - oldPathMap, - oldNameMap, - parentRoute - ) { - // the path list is used to control path matching priority - var pathList = oldPathList || []; - // $flow-disable-line - var pathMap = oldPathMap || Object.create(null); - // $flow-disable-line - var nameMap = oldNameMap || Object.create(null); - - routes.forEach(function (route) { - addRouteRecord(pathList, pathMap, nameMap, route, parentRoute); - }); - - // ensure wildcard routes are always at the end - for (var i = 0, l = pathList.length; i < l; i++) { - if (pathList[i] === '*') { - pathList.push(pathList.splice(i, 1)[0]); - l--; - i--; - } - } - - { - // warn if routes do not include leading slashes - var found = pathList - // check for missing leading slash - .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; }); - - if (found.length > 0) { - var pathNames = found.map(function (path) { return ("- " + path); }).join('\n'); - warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames)); - } - } - - return { - pathList: pathList, - pathMap: pathMap, - nameMap: nameMap - } - } - - function addRouteRecord ( - pathList, - pathMap, - nameMap, - route, - parent, - matchAs - ) { - var path = route.path; - var name = route.name; - { - assert(path != null, "\"path\" is required in a route configuration."); - assert( - typeof route.component !== 'string', - "route config \"component\" for path: " + (String( - path || name - )) + " cannot be a " + "string id. Use an actual component instead." - ); - - warn( - // eslint-disable-next-line no-control-regex - !/[^\u0000-\u007F]+/.test(path), - "Route with path \"" + path + "\" contains unencoded characters, make sure " + - "your path is correctly encoded before passing it to the router. Use " + - "encodeURI to encode static segments of your path." - ); - } - - var pathToRegexpOptions = - route.pathToRegexpOptions || {}; - var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict); - - if (typeof route.caseSensitive === 'boolean') { - pathToRegexpOptions.sensitive = route.caseSensitive; - } - - var record = { - path: normalizedPath, - regex: compileRouteRegex(normalizedPath, pathToRegexpOptions), - components: route.components || { default: route.component }, - alias: route.alias - ? typeof route.alias === 'string' - ? [route.alias] - : route.alias - : [], - instances: {}, - enteredCbs: {}, - name: name, - parent: parent, - matchAs: matchAs, - redirect: route.redirect, - beforeEnter: route.beforeEnter, - meta: route.meta || {}, - props: - route.props == null - ? {} - : route.components - ? route.props - : { default: route.props } - }; - - if (route.children) { - // Warn if route is named, does not redirect and has a default child route. - // If users navigate to this route by name, the default child will - // not be rendered (GH Issue #629) - { - if ( - route.name && - !route.redirect && - route.children.some(function (child) { return /^\/?$/.test(child.path); }) - ) { - warn( - false, - "Named Route '" + (route.name) + "' has a default child route. " + - "When navigating to this named route (:to=\"{name: '" + (route.name) + "'\"), " + - "the default child route will not be rendered. Remove the name from " + - "this route and use the name of the default child route for named " + - "links instead." - ); - } - } - route.children.forEach(function (child) { - var childMatchAs = matchAs - ? cleanPath((matchAs + "/" + (child.path))) - : undefined; - addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs); - }); - } - - if (!pathMap[record.path]) { - pathList.push(record.path); - pathMap[record.path] = record; - } - - if (route.alias !== undefined) { - var aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; - for (var i = 0; i < aliases.length; ++i) { - var alias = aliases[i]; - if (alias === path) { - warn( - false, - ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.") - ); - // skip in dev to make it work - continue - } - - var aliasRoute = { - path: alias, - children: route.children - }; - addRouteRecord( - pathList, - pathMap, - nameMap, - aliasRoute, - parent, - record.path || '/' // matchAs - ); - } - } - - if (name) { - if (!nameMap[name]) { - nameMap[name] = record; - } else if (!matchAs) { - warn( - false, - "Duplicate named routes definition: " + - "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }" - ); - } - } - } - - function compileRouteRegex ( - path, - pathToRegexpOptions - ) { - var regex = pathToRegexp_1(path, [], pathToRegexpOptions); - { - var keys = Object.create(null); - regex.keys.forEach(function (key) { - warn( - !keys[key.name], - ("Duplicate param keys in route with path: \"" + path + "\"") - ); - keys[key.name] = true; - }); - } - return regex - } - - function normalizePath ( - path, - parent, - strict - ) { - if (!strict) { path = path.replace(/\/$/, ''); } - if (path[0] === '/') { return path } - if (parent == null) { return path } - return cleanPath(((parent.path) + "/" + path)) - } - - /* */ - - - - function createMatcher ( - routes, - router - ) { - var ref = createRouteMap(routes); - var pathList = ref.pathList; - var pathMap = ref.pathMap; - var nameMap = ref.nameMap; - - function addRoutes (routes) { - createRouteMap(routes, pathList, pathMap, nameMap); - } - - function addRoute (parentOrRoute, route) { - var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined; - // $flow-disable-line - createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); - - // add aliases of parent - if (parent && parent.alias.length) { - createRouteMap( - // $flow-disable-line route is defined if parent is - parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), - pathList, - pathMap, - nameMap, - parent - ); - } - } - - function getRoutes () { - return pathList.map(function (path) { return pathMap[path]; }) - } - - function match ( - raw, - currentRoute, - redirectedFrom - ) { - var location = normalizeLocation(raw, currentRoute, false, router); - var name = location.name; - - if (name) { - var record = nameMap[name]; - { - warn(record, ("Route with name '" + name + "' does not exist")); - } - if (!record) { return _createRoute(null, location) } - var paramNames = record.regex.keys - .filter(function (key) { return !key.optional; }) - .map(function (key) { return key.name; }); - - if (typeof location.params !== 'object') { - location.params = {}; - } - - if (currentRoute && typeof currentRoute.params === 'object') { - for (var key in currentRoute.params) { - if (!(key in location.params) && paramNames.indexOf(key) > -1) { - location.params[key] = currentRoute.params[key]; - } - } - } - - location.path = fillParams(record.path, location.params, ("named route \"" + name + "\"")); - return _createRoute(record, location, redirectedFrom) - } else if (location.path) { - location.params = {}; - for (var i = 0; i < pathList.length; i++) { - var path = pathList[i]; - var record$1 = pathMap[path]; - if (matchRoute(record$1.regex, location.path, location.params)) { - return _createRoute(record$1, location, redirectedFrom) - } - } - } - // no match - return _createRoute(null, location) - } - - function redirect ( - record, - location - ) { - var originalRedirect = record.redirect; - var redirect = typeof originalRedirect === 'function' - ? originalRedirect(createRoute(record, location, null, router)) - : originalRedirect; - - if (typeof redirect === 'string') { - redirect = { path: redirect }; - } - - if (!redirect || typeof redirect !== 'object') { - { - warn( - false, ("invalid redirect option: " + (JSON.stringify(redirect))) - ); - } - return _createRoute(null, location) - } - - var re = redirect; - var name = re.name; - var path = re.path; - var query = location.query; - var hash = location.hash; - var params = location.params; - query = re.hasOwnProperty('query') ? re.query : query; - hash = re.hasOwnProperty('hash') ? re.hash : hash; - params = re.hasOwnProperty('params') ? re.params : params; - - if (name) { - // resolved named direct - var targetRecord = nameMap[name]; - { - assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found.")); - } - return match({ - _normalized: true, - name: name, - query: query, - hash: hash, - params: params - }, undefined, location) - } else if (path) { - // 1. resolve relative redirect - var rawPath = resolveRecordPath(path, record); - // 2. resolve params - var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\"")); - // 3. rematch with existing query and hash - return match({ - _normalized: true, - path: resolvedPath, - query: query, - hash: hash - }, undefined, location) - } else { - { - warn(false, ("invalid redirect option: " + (JSON.stringify(redirect)))); - } - return _createRoute(null, location) - } - } - - function alias ( - record, - location, - matchAs - ) { - var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\"")); - var aliasedMatch = match({ - _normalized: true, - path: aliasedPath - }); - if (aliasedMatch) { - var matched = aliasedMatch.matched; - var aliasedRecord = matched[matched.length - 1]; - location.params = aliasedMatch.params; - return _createRoute(aliasedRecord, location) - } - return _createRoute(null, location) - } - - function _createRoute ( - record, - location, - redirectedFrom - ) { - if (record && record.redirect) { - return redirect(record, redirectedFrom || location) - } - if (record && record.matchAs) { - return alias(record, location, record.matchAs) - } - return createRoute(record, location, redirectedFrom, router) - } - - return { - match: match, - addRoute: addRoute, - getRoutes: getRoutes, - addRoutes: addRoutes - } - } - - function matchRoute ( - regex, - path, - params - ) { - var m = path.match(regex); - - if (!m) { - return false - } else if (!params) { - return true - } - - for (var i = 1, len = m.length; i < len; ++i) { - var key = regex.keys[i - 1]; - if (key) { - // Fix #1994: using * with props: true generates a param named 0 - params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i]; - } - } - - return true - } - - function resolveRecordPath (path, record) { - return resolvePath(path, record.parent ? record.parent.path : '/', true) - } - - /* */ - - // use User Timing api (if present) for more accurate key precision - var Time = - inBrowser && window.performance && window.performance.now - ? window.performance - : Date; - - function genStateKey () { - return Time.now().toFixed(3) - } - - var _key = genStateKey(); - - function getStateKey () { - return _key - } - - function setStateKey (key) { - return (_key = key) - } - - /* */ - - var positionStore = Object.create(null); - - function setupScroll () { - // Prevent browser scroll behavior on History popstate - if ('scrollRestoration' in window.history) { - window.history.scrollRestoration = 'manual'; - } - // Fix for #1585 for Firefox - // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678 - // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with - // window.location.protocol + '//' + window.location.host - // location.host contains the port and location.hostname doesn't - var protocolAndPath = window.location.protocol + '//' + window.location.host; - var absolutePath = window.location.href.replace(protocolAndPath, ''); - // preserve existing history state as it could be overriden by the user - var stateCopy = extend({}, window.history.state); - stateCopy.key = getStateKey(); - window.history.replaceState(stateCopy, '', absolutePath); - window.addEventListener('popstate', handlePopState); - return function () { - window.removeEventListener('popstate', handlePopState); - } - } - - function handleScroll ( - router, - to, - from, - isPop - ) { - if (!router.app) { - return - } - - var behavior = router.options.scrollBehavior; - if (!behavior) { - return - } - - { - assert(typeof behavior === 'function', "scrollBehavior must be a function"); - } - - // wait until re-render finishes before scrolling - BI.nextTick(function () { - var position = getScrollPosition(); - var shouldScroll = behavior.call( - router, - to, - from, - isPop ? position : null - ); - - if (!shouldScroll) { - return - } - - if (typeof shouldScroll.then === 'function') { - shouldScroll - .then(function (shouldScroll) { - scrollToPosition((shouldScroll), position); - }) - .catch(function (err) { - { - assert(false, err.toString()); - } - }); - } else { - scrollToPosition(shouldScroll, position); - } - }); - } - - function saveScrollPosition () { - var key = getStateKey(); - if (key) { - positionStore[key] = { - x: window.pageXOffset, - y: window.pageYOffset - }; - } - } - - function handlePopState (e) { - saveScrollPosition(); - if (e.state && e.state.key) { - setStateKey(e.state.key); - } - } - - function getScrollPosition () { - var key = getStateKey(); - if (key) { - return positionStore[key] - } - } - - function getElementPosition (el, offset) { - var docEl = document.documentElement; - var docRect = docEl.getBoundingClientRect(); - var elRect = el.getBoundingClientRect(); - return { - x: elRect.left - docRect.left - offset.x, - y: elRect.top - docRect.top - offset.y - } - } - - function isValidPosition (obj) { - return isNumber(obj.x) || isNumber(obj.y) - } - - function normalizePosition (obj) { - return { - x: isNumber(obj.x) ? obj.x : window.pageXOffset, - y: isNumber(obj.y) ? obj.y : window.pageYOffset - } - } - - function normalizeOffset (obj) { - return { - x: isNumber(obj.x) ? obj.x : 0, - y: isNumber(obj.y) ? obj.y : 0 - } - } - - function isNumber (v) { - return typeof v === 'number' - } - - var hashStartsWithNumberRE = /^#\d/; - - function scrollToPosition (shouldScroll, position) { - var isObject = typeof shouldScroll === 'object'; - if (isObject && typeof shouldScroll.selector === 'string') { - // getElementById would still fail if the selector contains a more complicated query like #main[data-attr] - // but at the same time, it doesn't make much sense to select an element with an id and an extra selector - var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line - ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line - : document.querySelector(shouldScroll.selector); - - if (el) { - var offset = - shouldScroll.offset && typeof shouldScroll.offset === 'object' - ? shouldScroll.offset - : {}; - offset = normalizeOffset(offset); - position = getElementPosition(el, offset); - } else if (isValidPosition(shouldScroll)) { - position = normalizePosition(shouldScroll); - } - } else if (isObject && isValidPosition(shouldScroll)) { - position = normalizePosition(shouldScroll); - } - - if (position) { - // $flow-disable-line - if ('scrollBehavior' in document.documentElement.style) { - window.scrollTo({ - left: position.x, - top: position.y, - // $flow-disable-line - behavior: shouldScroll.behavior - }); - } else { - window.scrollTo(position.x, position.y); - } - } - } - - /* */ - - var supportsPushState = - inBrowser && - (function () { - var ua = window.navigator.userAgent; - - if ( - (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && - ua.indexOf('Mobile Safari') !== -1 && - ua.indexOf('Chrome') === -1 && - ua.indexOf('Windows Phone') === -1 - ) { - return false - } - - return window.history && typeof window.history.pushState === 'function' - })(); - - function pushState (url, replace) { - saveScrollPosition(); - // try...catch the pushState call to get around Safari - // DOM Exception 18 where it limits to 100 pushState calls - var history = window.history; - try { - if (replace) { - // preserve existing history state as it could be overriden by the user - var stateCopy = extend({}, history.state); - stateCopy.key = getStateKey(); - history.replaceState(stateCopy, '', url); - } else { - history.pushState({ key: setStateKey(genStateKey()) }, '', url); - } - } catch (e) { - window.location[replace ? 'replace' : 'assign'](url); - } - } - - function replaceState (url) { - pushState(url, true); - } - - /* */ - - function runQueue (queue, fn, cb) { - var step = function (index) { - if (index >= queue.length) { - cb(); - } else { - if (queue[index]) { - fn(queue[index], function () { - step(index + 1); - }); - } else { - step(index + 1); - } - } - }; - step(0); - } - - // When changing thing, also edit router.d.ts - var NavigationFailureType = { - redirected: 2, - aborted: 4, - cancelled: 8, - duplicated: 16 - }; - - function createNavigationRedirectedError (from, to) { - return createRouterError( - from, - to, - NavigationFailureType.redirected, - ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute( - to - )) + "\" via a navigation guard.") - ) - } - - function createNavigationDuplicatedError (from, to) { - var error = createRouterError( - from, - to, - NavigationFailureType.duplicated, - ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".") - ); - // backwards compatible with the first introduction of Errors - error.name = 'NavigationDuplicated'; - return error - } - - function createNavigationCancelledError (from, to) { - return createRouterError( - from, - to, - NavigationFailureType.cancelled, - ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.") - ) - } - - function createNavigationAbortedError (from, to) { - return createRouterError( - from, - to, - NavigationFailureType.aborted, - ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.") - ) - } - - function createRouterError (from, to, type, message) { - var error = new Error(message); - error._isRouter = true; - error.from = from; - error.to = to; - error.type = type; - - return error - } - - var propertiesToLog = ['params', 'query', 'hash']; - - function stringifyRoute (to) { - if (typeof to === 'string') { return to } - if ('path' in to) { return to.path } - var location = {}; - propertiesToLog.forEach(function (key) { - if (key in to) { location[key] = to[key]; } - }); - return JSON.stringify(location, null, 2) - } - - function isError (err) { - return Object.prototype.toString.call(err).indexOf('Error') > -1 - } - - function isNavigationFailure (err, errorType) { - return ( - isError(err) && - err._isRouter && - (errorType == null || err.type === errorType) - ) - } - - /* */ - - function resolveAsyncComponents (matched) { - return function (to, from, next) { - var hasAsync = false; - var pending = 0; - var error = null; - - flatMapComponents(matched, function (def, _, match, key) { - // if it's a function and doesn't have cid attached, - // assume it's an async component resolve function. - // we are not using Vue's default async resolving mechanism because - // we want to halt the navigation until the incoming component has been - // resolved. - if (typeof def === 'function' && def.cid === undefined) { - hasAsync = true; - pending++; - - var resolve = once(function (resolvedDef) { - if (isESModule(resolvedDef)) { - resolvedDef = resolvedDef.default; - } - // save resolved on async factory in case it's used elsewhere - def.resolved = resolvedDef; - match.components[key] = resolvedDef; - pending--; - if (pending <= 0) { - next(); - } - }); - - var reject = once(function (reason) { - var msg = "Failed to resolve async component " + key + ": " + reason; - warn(false, msg); - if (!error) { - error = isError(reason) - ? reason - : new Error(msg); - next(error); - } - }); - - var res; - try { - res = def(resolve, reject); - } catch (e) { - reject(e); - } - if (res) { - if (typeof res.then === 'function') { - res.then(resolve, reject); - } else { - // new syntax in Vue 2.3 - var comp = res.component; - if (comp && typeof comp.then === 'function') { - comp.then(resolve, reject); - } - } - } - } - }); - - if (!hasAsync) { next(); } - } - } - - function flatMapComponents ( - matched, - fn - ) { - return flatten(matched.map(function (m) { - return Object.keys(m.components).map(function (key) { return fn( - m.components[key], - m.instances[key], - m, key - ); }) - })) - } - - function flatten (arr) { - return Array.prototype.concat.apply([], arr) - } - - var hasSymbol = - typeof Symbol === 'function' && - typeof Symbol.toStringTag === 'symbol'; - - function isESModule (obj) { - return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module') - } - - // in Webpack 2, require.ensure now also returns a Promise - // so the resolve/reject functions may get called an extra time - // if the user uses an arrow function shorthand that happens to - // return that Promise. - function once (fn) { - var called = false; - return function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (called) { return } - called = true; - return fn.apply(this, args) - } - } - - /* */ - - var History = function History (router, base) { - this.router = router; - this.base = normalizeBase(base); - // start with a route object that stands for "nowhere" - this.current = START; - this.pending = null; - this.ready = false; - this.readyCbs = []; - this.readyErrorCbs = []; - this.errorCbs = []; - this.listeners = []; - }; - - History.prototype.listen = function listen (cb) { - this.cb = cb; - }; - - History.prototype.onReady = function onReady (cb, errorCb) { - if (this.ready) { - cb(); - } else { - this.readyCbs.push(cb); - if (errorCb) { - this.readyErrorCbs.push(errorCb); - } - } - }; - - History.prototype.onError = function onError (errorCb) { - this.errorCbs.push(errorCb); - }; - - History.prototype.transitionTo = function transitionTo ( - location, - onComplete, - onAbort - ) { - var this$1 = this; - - var route; - // catch redirect option https://github.com/vuejs/vue-router/issues/3201 - try { - route = this.router.match(location, this.current); - } catch (e) { - this.errorCbs.forEach(function (cb) { - cb(e); - }); - // Exception should still be thrown - throw e - } - var prev = this.current; - this.confirmTransition( - route, - function () { - this$1.updateRoute(route); - onComplete && onComplete(route); - this$1.ensureURL(); - this$1.router.afterHooks.forEach(function (hook) { - hook && hook(route, prev); - }); - - // fire ready cbs once - if (!this$1.ready) { - this$1.ready = true; - this$1.readyCbs.forEach(function (cb) { - cb(route); - }); - } - }, - function (err) { - if (onAbort) { - onAbort(err); - } - if (err && !this$1.ready) { - // Initial redirection should not mark the history as ready yet - // because it's triggered by the redirection instead - // https://github.com/vuejs/vue-router/issues/3225 - // https://github.com/vuejs/vue-router/issues/3331 - if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) { - this$1.ready = true; - this$1.readyErrorCbs.forEach(function (cb) { - cb(err); - }); - } - } - } - ); - }; - - History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) { - var this$1 = this; - - var current = this.current; - this.pending = route; - var abort = function (err) { - // changed after adding errors with - // https://github.com/vuejs/vue-router/pull/3047 before that change, - // redirect and aborted navigation would produce an err == null - if (!isNavigationFailure(err) && isError(err)) { - if (this$1.errorCbs.length) { - this$1.errorCbs.forEach(function (cb) { - cb(err); - }); - } else { - warn(false, 'uncaught error during route navigation:'); - console.error(err); - } - } - onAbort && onAbort(err); - }; - var lastRouteIndex = route.matched.length - 1; - var lastCurrentIndex = current.matched.length - 1; - if ( - isSameRoute(route, current) && - // in the case the route map has been dynamically appended to - lastRouteIndex === lastCurrentIndex && - route.matched[lastRouteIndex] === current.matched[lastCurrentIndex] - ) { - this.ensureURL(); - return abort(createNavigationDuplicatedError(current, route)) - } - - var ref = resolveQueue( - this.current.matched, - route.matched - ); - var updated = ref.updated; - var deactivated = ref.deactivated; - var activated = ref.activated; - - var queue = [].concat( - // in-component leave guards - extractLeaveGuards(deactivated), - // global before hooks - this.router.beforeHooks, - // in-component update hooks - extractUpdateHooks(updated), - // in-config enter guards - activated.map(function (m) { return m.beforeEnter; }), - // async components - resolveAsyncComponents(activated) - ); - - var iterator = function (hook, next) { - if (this$1.pending !== route) { - return abort(createNavigationCancelledError(current, route)) - } - try { - hook(route, current, function (to) { - if (to === false) { - // next(false) -> abort navigation, ensure current URL - this$1.ensureURL(true); - abort(createNavigationAbortedError(current, route)); - } else if (isError(to)) { - this$1.ensureURL(true); - abort(to); - } else if ( - typeof to === 'string' || - (typeof to === 'object' && - (typeof to.path === 'string' || typeof to.name === 'string')) - ) { - // next('/') or next({ path: '/' }) -> redirect - abort(createNavigationRedirectedError(current, route)); - if (typeof to === 'object' && to.replace) { - this$1.replace(to); - } else { - this$1.push(to); - } - } else { - // confirm transition and pass on the value - next(to); - } - }); - } catch (e) { - abort(e); - } - }; - - runQueue(queue, iterator, function () { - // wait until async components are resolved before - // extracting in-component enter guards - var enterGuards = extractEnterGuards(activated); - var queue = enterGuards.concat(this$1.router.resolveHooks); - runQueue(queue, iterator, function () { - if (this$1.pending !== route) { - return abort(createNavigationCancelledError(current, route)) - } - this$1.pending = null; - onComplete(route); - if (this$1.router.app) { - BI.nextTick(function () { - handleRouteEntered(route); - }); - } - }); - }); - }; - - History.prototype.updateRoute = function updateRoute (route) { - this.current = route; - this.cb && this.cb(route); - }; - - History.prototype.setupListeners = function setupListeners () { - // Default implementation is empty - }; - - History.prototype.teardown = function teardown () { - // clean up event listeners - // https://github.com/vuejs/vue-router/issues/2341 - this.listeners.forEach(function (cleanupListener) { - cleanupListener(); - }); - this.listeners = []; - - // reset current history route - // https://github.com/vuejs/vue-router/issues/3294 - this.current = START; - this.pending = null; - }; - - function normalizeBase (base) { - if (!base) { - if (inBrowser) { - // respect tag - var baseEl = document.querySelector('base'); - base = (baseEl && baseEl.getAttribute('href')) || '/'; - // strip full URL origin - base = base.replace(/^https?:\/\/[^\/]+/, ''); - } else { - base = '/'; - } - } - // make sure there's the starting slash - if (base.charAt(0) !== '/') { - base = '/' + base; - } - // remove trailing slash - return base.replace(/\/$/, '') - } - - function resolveQueue ( - current, - next - ) { - var i; - var max = Math.max(current.length, next.length); - for (i = 0; i < max; i++) { - if (current[i] !== next[i]) { - break - } - } - return { - updated: next.slice(0, i), - activated: next.slice(i), - deactivated: current.slice(i) - } - } - - function extractGuards ( - records, - name, - bind, - reverse - ) { - var guards = flatMapComponents(records, function (def, instance, match, key) { - var guard = extractGuard(def, name); - if (guard) { - return Array.isArray(guard) - ? guard.map(function (guard) { return bind(guard, instance, match, key); }) - : bind(guard, instance, match, key) - } - }); - return flatten(reverse ? guards.reverse() : guards) - } - - function extractGuard ( - def, - key - ) { - if (typeof def !== 'function') { - // extend now so that global mixins are applied. - // def = _Vue.extend(def); - } - return def[key] - } - - function extractLeaveGuards (deactivated) { - return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true) - } - - function extractUpdateHooks (updated) { - return extractGuards(updated, 'beforeRouteUpdate', bindGuard) - } - - function bindGuard (guard, instance) { - if (instance) { - return function boundRouteGuard () { - return guard.apply(instance, arguments) - } - } - } - - function extractEnterGuards ( - activated - ) { - return extractGuards( - activated, - 'beforeRouteEnter', - function (guard, _, match, key) { - return bindEnterGuard(guard, match, key) - } - ) - } - - function bindEnterGuard ( - guard, - match, - key - ) { - return function routeEnterGuard (to, from, next) { - return guard(to, from, function (cb) { - if (typeof cb === 'function') { - if (!match.enteredCbs[key]) { - match.enteredCbs[key] = []; - } - match.enteredCbs[key].push(cb); - } - next(cb); - }) - } - } - - /* */ - - var HTML5History = /*@__PURE__*/(function (History) { - function HTML5History (router, base) { - History.call(this, router, base); - - this._startLocation = getLocation(this.base); - } - - if ( History ) HTML5History.__proto__ = History; - HTML5History.prototype = Object.create( History && History.prototype ); - HTML5History.prototype.constructor = HTML5History; - - HTML5History.prototype.setupListeners = function setupListeners () { - var this$1 = this; - - if (this.listeners.length > 0) { - return - } - - var router = this.router; - var expectScroll = router.options.scrollBehavior; - var supportsScroll = supportsPushState && expectScroll; - - if (supportsScroll) { - this.listeners.push(setupScroll()); - } - - var handleRoutingEvent = function () { - var current = this$1.current; - - // Avoiding first `popstate` event dispatched in some browsers but first - // history route not updated since async guard at the same time. - var location = getLocation(this$1.base); - if (this$1.current === START && location === this$1._startLocation) { - return - } - - this$1.transitionTo(location, function (route) { - if (supportsScroll) { - handleScroll(router, route, current, true); - } - }); - }; - window.addEventListener('popstate', handleRoutingEvent); - this.listeners.push(function () { - window.removeEventListener('popstate', handleRoutingEvent); - }); - }; - - HTML5History.prototype.go = function go (n) { - window.history.go(n); - }; - - HTML5History.prototype.push = function push (location, onComplete, onAbort) { - var this$1 = this; - - var ref = this; - var fromRoute = ref.current; - this.transitionTo(location, function (route) { - pushState(cleanPath(this$1.base + route.fullPath)); - handleScroll(this$1.router, route, fromRoute, false); - onComplete && onComplete(route); - }, onAbort); - }; - - HTML5History.prototype.replace = function replace (location, onComplete, onAbort) { - var this$1 = this; - - var ref = this; - var fromRoute = ref.current; - this.transitionTo(location, function (route) { - replaceState(cleanPath(this$1.base + route.fullPath)); - handleScroll(this$1.router, route, fromRoute, false); - onComplete && onComplete(route); - }, onAbort); - }; - - HTML5History.prototype.ensureURL = function ensureURL (push) { - if (getLocation(this.base) !== this.current.fullPath) { - var current = cleanPath(this.base + this.current.fullPath); - push ? pushState(current) : replaceState(current); - } - }; - - HTML5History.prototype.getCurrentLocation = function getCurrentLocation () { - return getLocation(this.base) - }; - - return HTML5History; - }(History)); - - function getLocation (base) { - var path = window.location.pathname; - var pathLowerCase = path.toLowerCase(); - var baseLowerCase = base.toLowerCase(); - // base="/a" shouldn't turn path="/app" into "/a/pp" - // https://github.com/vuejs/vue-router/issues/3555 - // so we ensure the trailing slash in the base - if (base && ((pathLowerCase === baseLowerCase) || - (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { - path = path.slice(base.length); - } - return (path || '/') + window.location.search + window.location.hash - } - - /* */ - - var HashHistory = /*@__PURE__*/(function (History) { - function HashHistory (router, base, fallback) { - History.call(this, router, base); - // check history fallback deeplinking - if (fallback && checkFallback(this.base)) { - return - } - ensureSlash(); - } - - if ( History ) HashHistory.__proto__ = History; - HashHistory.prototype = Object.create( History && History.prototype ); - HashHistory.prototype.constructor = HashHistory; - - // this is delayed until the app mounts - // to avoid the hashchange listener being fired too early - HashHistory.prototype.setupListeners = function setupListeners () { - var this$1 = this; - - if (this.listeners.length > 0) { - return - } - - var router = this.router; - var expectScroll = router.options.scrollBehavior; - var supportsScroll = supportsPushState && expectScroll; - - if (supportsScroll) { - this.listeners.push(setupScroll()); - } - - var handleRoutingEvent = function () { - var current = this$1.current; - if (!ensureSlash()) { - return - } - this$1.transitionTo(getHash(), function (route) { - if (supportsScroll) { - handleScroll(this$1.router, route, current, true); - } - if (!supportsPushState) { - replaceHash(route.fullPath); - } - }); - }; - var eventType = supportsPushState ? 'popstate' : 'hashchange'; - window.addEventListener( - eventType, - handleRoutingEvent - ); - this.listeners.push(function () { - window.removeEventListener(eventType, handleRoutingEvent); - }); - }; - - HashHistory.prototype.push = function push (location, onComplete, onAbort) { - var this$1 = this; - - var ref = this; - var fromRoute = ref.current; - this.transitionTo( - location, - function (route) { - pushHash(route.fullPath); - handleScroll(this$1.router, route, fromRoute, false); - onComplete && onComplete(route); - }, - onAbort - ); - }; - - HashHistory.prototype.replace = function replace (location, onComplete, onAbort) { - var this$1 = this; - - var ref = this; - var fromRoute = ref.current; - this.transitionTo( - location, - function (route) { - replaceHash(route.fullPath); - handleScroll(this$1.router, route, fromRoute, false); - onComplete && onComplete(route); - }, - onAbort - ); - }; - - HashHistory.prototype.go = function go (n) { - window.history.go(n); - }; - - HashHistory.prototype.ensureURL = function ensureURL (push) { - var current = this.current.fullPath; - if (getHash() !== current) { - push ? pushHash(current) : replaceHash(current); - } - }; - - HashHistory.prototype.getCurrentLocation = function getCurrentLocation () { - return getHash() - }; - - return HashHistory; - }(History)); - - function checkFallback (base) { - var location = getLocation(base); - if (!/^\/#/.test(location)) { - window.location.replace(cleanPath(base + '/#' + location)); - return true - } - } - - function ensureSlash () { - var path = getHash(); - if (path.charAt(0) === '/') { - return true - } - replaceHash('/' + path); - return false - } - - function getHash () { - // We can't use window.location.hash here because it's not - // consistent across browsers - Firefox will pre-decode it! - var href = window.location.href; - var index = href.indexOf('#'); - // empty path - if (index < 0) { return '' } - - href = href.slice(index + 1); - - return href - } - - function getUrl (path) { - var href = window.location.href; - var i = href.indexOf('#'); - var base = i >= 0 ? href.slice(0, i) : href; - return (base + "#" + path) - } - - function pushHash (path) { - if (supportsPushState) { - pushState(getUrl(path)); - } else { - window.location.hash = path; - } - } - - function replaceHash (path) { - if (supportsPushState) { - replaceState(getUrl(path)); - } else { - window.location.replace(getUrl(path)); - } - } - - /* */ - - var AbstractHistory = /*@__PURE__*/(function (History) { - function AbstractHistory (router, base) { - History.call(this, router, base); - this.stack = []; - this.index = -1; - } - - if ( History ) AbstractHistory.__proto__ = History; - AbstractHistory.prototype = Object.create( History && History.prototype ); - AbstractHistory.prototype.constructor = AbstractHistory; - - AbstractHistory.prototype.push = function push (location, onComplete, onAbort) { - var this$1 = this; - - this.transitionTo( - location, - function (route) { - this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route); - this$1.index++; - onComplete && onComplete(route); - }, - onAbort - ); - }; - - AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) { - var this$1 = this; - - this.transitionTo( - location, - function (route) { - this$1.stack = this$1.stack.slice(0, this$1.index).concat(route); - onComplete && onComplete(route); - }, - onAbort - ); - }; - - AbstractHistory.prototype.go = function go (n) { - var this$1 = this; - - var targetIndex = this.index + n; - if (targetIndex < 0 || targetIndex >= this.stack.length) { - return - } - var route = this.stack[targetIndex]; - this.confirmTransition( - route, - function () { - var prev = this$1.current; - this$1.index = targetIndex; - this$1.updateRoute(route); - this$1.router.afterHooks.forEach(function (hook) { - hook && hook(route, prev); - }); - }, - function (err) { - if (isNavigationFailure(err, NavigationFailureType.duplicated)) { - this$1.index = targetIndex; - } - } - ); - }; - - AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () { - var current = this.stack[this.stack.length - 1]; - return current ? current.fullPath : '/' - }; - - AbstractHistory.prototype.ensureURL = function ensureURL () { - // noop - }; - - return AbstractHistory; - }(History)); - - /* */ - - var VueRouter = function VueRouter (options) { - if ( options === void 0 ) options = {}; - - this.app = null; - this.apps = []; - this.options = options; - this.beforeHooks = []; - this.resolveHooks = []; - this.afterHooks = []; - this.matcher = createMatcher(options.routes || [], this); - - var mode = options.mode || 'hash'; - this.fallback = - mode === 'history' && !supportsPushState && options.fallback !== false; - if (this.fallback) { - mode = 'hash'; - } - if (!inBrowser) { - mode = 'abstract'; - } - this.mode = mode; - - switch (mode) { - case 'history': - this.history = new HTML5History(this, options.base); - break - case 'hash': - this.history = new HashHistory(this, options.base, this.fallback); - break - case 'abstract': - this.history = new AbstractHistory(this, options.base); - break - default: - { - assert(false, ("invalid mode: " + mode)); - } - } - }; - - var prototypeAccessors = { currentRoute: { configurable: true } }; - - VueRouter.prototype.match = function match (raw, current, redirectedFrom) { - return this.matcher.match(raw, current, redirectedFrom) - }; - - prototypeAccessors.currentRoute.get = function () { - return this.history && this.history.current - }; - - VueRouter.prototype.init = function init (app /* Vue component instance */) { - var this$1 = this; - - this.apps.push(app); - - // set up app destroyed handler - // https://github.com/vuejs/vue-router/issues/2639 - app.once('hook:destroyed', function () { - // clean out app from this.apps array once destroyed - var index = this$1.apps.indexOf(app); - if (index > -1) { this$1.apps.splice(index, 1); } - // ensure we still have a main app or null if no apps - // we do not release the router so it can be reused - if (this$1.app === app) { this$1.app = this$1.apps[0] || null; } - - if (!this$1.app) { this$1.history.teardown(); } - }); - - // main app previously initialized - // return as we don't need to set up new history listener - if (this.app) { - return - } - - this.app = app; - - var history = this.history; - - if (history instanceof HTML5History || history instanceof HashHistory) { - var handleInitialScroll = function (routeOrError) { - var from = history.current; - var expectScroll = this$1.options.scrollBehavior; - var supportsScroll = supportsPushState && expectScroll; - - if (supportsScroll && 'fullPath' in routeOrError) { - handleScroll(this$1, routeOrError, from, false); - } - }; - var setupListeners = function (routeOrError) { - history.setupListeners(); - handleInitialScroll(routeOrError); - }; - history.transitionTo( - history.getCurrentLocation(), - setupListeners, - setupListeners - ); - } - - history.listen(function (route) { - this$1.apps.forEach(function (app) { - app._router.history.current = route; - }); - }); - }; - - VueRouter.prototype.beforeEach = function beforeEach (fn) { - return registerHook(this.beforeHooks, fn) - }; - - VueRouter.prototype.beforeResolve = function beforeResolve (fn) { - return registerHook(this.resolveHooks, fn) - }; - - VueRouter.prototype.afterEach = function afterEach (fn) { - return registerHook(this.afterHooks, fn) - }; - - VueRouter.prototype.onReady = function onReady (cb, errorCb) { - this.history.onReady(cb, errorCb); - }; - - VueRouter.prototype.onError = function onError (errorCb) { - this.history.onError(errorCb); - }; - - VueRouter.prototype.push = function push (location, onComplete, onAbort) { - var this$1 = this; - - // $flow-disable-line - if (!onComplete && !onAbort && typeof Promise !== 'undefined') { - return new Promise(function (resolve, reject) { - this$1.history.push(location, resolve, reject); - }) - } else { - this.history.push(location, onComplete, onAbort); - } - }; - - VueRouter.prototype.replace = function replace (location, onComplete, onAbort) { - var this$1 = this; - - // $flow-disable-line - if (!onComplete && !onAbort && typeof Promise !== 'undefined') { - return new Promise(function (resolve, reject) { - this$1.history.replace(location, resolve, reject); - }) - } else { - this.history.replace(location, onComplete, onAbort); - } - }; - - VueRouter.prototype.go = function go (n) { - this.history.go(n); - }; - - VueRouter.prototype.back = function back () { - this.go(-1); - }; - - VueRouter.prototype.forward = function forward () { - this.go(1); - }; - - VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) { - var route = to - ? to.matched - ? to - : this.resolve(to).route - : this.currentRoute; - if (!route) { - return [] - } - return [].concat.apply( - [], - route.matched.map(function (m) { - return Object.keys(m.components).map(function (key) { - return m.components[key] - }) - }) - ) - }; - - VueRouter.prototype.resolve = function resolve ( - to, - current, - append - ) { - current = current || this.history.current; - var location = normalizeLocation(to, current, append, this); - var route = this.match(location, current); - var fullPath = route.redirectedFrom || route.fullPath; - var base = this.history.base; - var href = createHref(base, fullPath, this.mode); - return { - location: location, - route: route, - href: href, - // for backwards compat - normalizedTo: location, - resolved: route - } - }; - - VueRouter.prototype.getRoutes = function getRoutes () { - return this.matcher.getRoutes() - }; - - VueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) { - this.matcher.addRoute(parentOrRoute, route); - if (this.history.current !== START) { - this.history.transitionTo(this.history.getCurrentLocation()); - } - }; - - Object.defineProperties( VueRouter.prototype, prototypeAccessors ); - - function registerHook (list, fn) { - list.push(fn); - return function () { - var i = list.indexOf(fn); - if (i > -1) { list.splice(i, 1); } - } - } - - function createHref (base, fullPath, mode) { - var path = mode === 'hash' ? '#' + fullPath : fullPath; - return base ? cleanPath(base + '/' + path) : path - } - - // VueRouter.install = install; - VueRouter.version = '3.5.2'; - VueRouter.isNavigationFailure = isNavigationFailure; - VueRouter.NavigationFailureType = NavigationFailureType; - VueRouter.START_LOCATION = START; - - - var $router, cbs = []; - BI.RouterWidget = BI.inherit(BI.Widget, { - init: function () { - this.$router = this._router = BI.Router.$router = $router = new VueRouter({ - routes: this.options.routes - }); - this.$router.beforeEach(function (to, from, next) { - if (to.matched.length === 0) { - //如果上级也未匹配到路由则跳转主页面,如果上级能匹配到则转上级路由 - from.path ? next({ path: from.path }) : next('/'); - } else { - //如果匹配到正确跳转 - next(); - } - }); - this.$router.afterEach(function () { - cbs.forEach(function (cb) {cb();}); - }); - this.$router.init(this); - } - }); - BI.shortcut("bi.router", BI.RouterWidget); - - BI.RouterView = BI.inherit(BI.Widget, { - props: { - deps: 0, - name: 'default' - }, - created: function () { - var self = this, o = this.options; - cbs.push(this._callbackListener = function () { - var current = $router.history.current; - // 匹配的路径名(/component/:id) - var matchedPath = current.matched[o.deps] && current.matched[o.deps].path; - var component = current.matched[o.deps] && current.matched[o.deps].components[o.name]; - - if (BI.isNotNull(component)) { - if (matchedPath) { - BI.each(current.params, function (key, value) { - // 把 :id 替换成具体的值(/component/demo.td) - matchedPath = matchedPath.replace(`:${key}`, value); - }); - } - self.tab.setSelect(matchedPath || "/"); - } - }); - }, - render: function () { - var self = this, o = this.options; - return { - type: "bi.tab", - ref: function (_ref) { - self.tab = _ref; - }, - single: false, // 是不是单页面 - logic: { - dynamic: false - }, - showIndex: false, - cardCreator: function (v) { - return $router.history.current.matched[o.deps].components[o.name]; - } - }; - }, - destroyed: function () { - cbs.remove(this._callbackListener); - } - }); - BI.shortcut("bi.router_view", BI.RouterView); - - BI.Router = BI.Router || VueRouter; - BI.Router.isSameRoute = isSameRoute; - return VueRouter; - - }))); - \ No newline at end of file diff --git a/examples/config-render.html b/examples/config-render.html index ed1f38dc6..41545d3b4 100644 --- a/examples/config-render.html +++ b/examples/config-render.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/demo.worker.js b/examples/demo.worker.js index fecbf994e..dae3c723a 100644 --- a/examples/demo.worker.js +++ b/examples/demo.worker.js @@ -1,6 +1,6 @@ if (this.importScripts) { - importScripts("../dist/fineui_without_jquery_polyfill.js"); - BI.initWorker(); + importScripts("https://fanruan.design/fineui/fineui_without_jquery_polyfill.js"); + BI.useInWorker(); } var Model = BI.inherit(Fix.Model, { state: function () { diff --git a/examples/dev.html b/examples/dev.html index 092b90c16..167c18ac5 100644 --- a/examples/dev.html +++ b/examples/dev.html @@ -2,67 +2,90 @@ - - + +
+ + +
diff --git a/examples/hooks.html b/examples/hooks.html index 66afa9f83..c9302a0d5 100644 --- a/examples/hooks.html +++ b/examples/hooks.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/loader-context.html b/examples/loader-context.html index 72695cc9f..a8ba36a96 100644 --- a/examples/loader-context.html +++ b/examples/loader-context.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/resize.html b/examples/resize.html index 5bd99a35d..dda9edda3 100644 --- a/examples/resize.html +++ b/examples/resize.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/style.html b/examples/style.html index 81063b19c..339f14365 100644 --- a/examples/style.html +++ b/examples/style.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/tab-context.html b/examples/tab-context.html index 9e7cf33ea..6a0a2d130 100644 --- a/examples/tab-context.html +++ b/examples/tab-context.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/test-id.html b/examples/test-id.html index 351cfec20..7eec9e549 100644 --- a/examples/test-id.html +++ b/examples/test-id.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/useContext.html b/examples/useContext.html new file mode 100644 index 000000000..56c78b2ce --- /dev/null +++ b/examples/useContext.html @@ -0,0 +1,97 @@ + + + + + + + + + +
+ + + diff --git a/examples/virtual-group.html b/examples/virtual-group.html index a2e664ea4..a21a37fe6 100644 --- a/examples/virtual-group.html +++ b/examples/virtual-group.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/visible.html b/examples/visible.html index e2ef18d34..790d091c1 100644 --- a/examples/visible.html +++ b/examples/visible.html @@ -2,8 +2,10 @@ - - + + +
diff --git a/examples/worker.html b/examples/worker.html index e9045ab56..759f0eac4 100644 --- a/examples/worker.html +++ b/examples/worker.html @@ -2,9 +2,10 @@ - - - + + + diff --git a/examples/响应式布局.html b/examples/响应式布局.html new file mode 100644 index 000000000..b0148d2b4 --- /dev/null +++ b/examples/响应式布局.html @@ -0,0 +1,419 @@ + + + + + + PullRequest | Code Review as a Service + + + + + + + + + +
+ + + diff --git a/examples/插件设计.html b/examples/插件设计.html index 3c167f45f..91c2b29c8 100644 --- a/examples/插件设计.html +++ b/examples/插件设计.html @@ -2,10 +2,10 @@ - - - - + + +
diff --git a/i18n/i18n.cn.js b/i18n/i18n.cn.js index 77db2c53d..74fb1e212 100644 --- a/i18n/i18n.cn.js +++ b/i18n/i18n.cn.js @@ -197,5 +197,8 @@ BI.i18n = { "BI-Basic_Year_Month_Range_Error": "请选择{R1}年{R2}月-{R3}年{R4}月的日期", "BI-Basic_Year_Quarter_Range_Error": "请选择{R1}年{R2}季度-{R3}年{R4}季度的日期", "BI-Basic_Search_And_Patch_Paste": "搜索,支持批量粘贴、粘贴值通过换行识别", - "BI-Basic_Recommend_Color": "推荐色" + "BI-Basic_Recommend_Color": "推荐色", + "BI-Basic_Too_Much_Value_Get_Two_Thousand": "粘贴的值过多,只能识别出前2000个值", + "BI-Basic_Open": "开", + "BI-Basic_Close": "关", }; \ No newline at end of file diff --git a/index.html b/index.html index b7a7bb2a4..03f734a32 100644 --- a/index.html +++ b/index.html @@ -11,5 +11,4 @@
- diff --git a/jsy.lessconfig.json b/jsy.lessconfig.json new file mode 100644 index 000000000..9efbfa906 --- /dev/null +++ b/jsy.lessconfig.json @@ -0,0 +1,21 @@ +{ + "@background-color-card-primary": "#003D4D", + "@color-primary": "#00acbe", + "font-color-normal": "#0d1540", + "font-color-light-gray": "#0d1540", + "font-color-disabled": "fade(#0d1540, 40)", + "font-color-light-disabled": "fade(#0d1540, 20)", + "font-color-success": "#28b668", + "font-color-negative": "#e65251", + "font-color-warning": "#faaa39", + "font-color-tips": "fade(#0d1540, 40)", + + "background-color-light-disabled": "fade(#0d1540, 5)", + "background-color-dark-success": "#28b668", + "background-color-negative": "#e65251", + "background-color-warning": "#faaa39", + + "border-color-disabled": "#e8eaed", + "border-color-success": "#28b668", + "border-color-negative": "#e65251" +} diff --git a/lib/prepublish/prepublish.js b/lib/prepublish/prepublish.js index 138ba1447..4f082ab6a 100644 --- a/lib/prepublish/prepublish.js +++ b/lib/prepublish/prepublish.js @@ -1,5 +1,7 @@ -const { resolve } = require("path"); +const { resolve, join } = require("path"); const { writeFileSync } = require("fs"); +const { spawnSync } = require('child_process'); +const { bundleWithoutNormalize } = require('../../webpack/attachments'); function pad2(n) {// always returns a string return (n < 10 ? "0" : "") + n; @@ -27,3 +29,35 @@ packageJSON.publishConfig.registry = 'https://npm.fineres.com/'; packageJSON.name = "@fui/core"; writeFileSync(resolve(__dirname, "../../package.json"), JSON.stringify(packageJSON, null, 2)); + +// 将less打包成fineui.less发布到npm以供用户定制主题 +const lessPath = join(process.cwd(), '/src/less'); + +function copyFiles(from, to) { + spawnSync('cp', ['-r', from, to]); +} + +function removeFiles(src) { + spawnSync('rm', ['-rf', src]); +} + +function finalizeCompile() { + let lessContent = ''; + + bundleWithoutNormalize.forEach(path => { + const relativePath = path.replace(/.*src\/less/, 'src/less').replace(/.*public\/less/, 'public/less'); + lessContent += `@import "../../${relativePath}";\n`; + }); + + writeFileSync( + join(lessPath, 'fineui.less'), + lessContent, + ); +} + +removeFiles(`${lessPath}/font`); +removeFiles(`${lessPath}/fineui.less`); + +finalizeCompile(); + +copyFiles(`${process.cwd()}/dist/font`, lessPath); diff --git a/package.json b/package.json index 021470f18..ef8da5f5a 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,15 @@ { "name": "fineui", - "version": "2.0.20211027135252", + "version": "2.0.20220322093515", "description": "fineui", "main": "dist/fineui.min.js", "types": "dist/lib/index.d.ts", - "dependencies": {}, "devDependencies": { + "@babel/core": "^7.17.4", "@babel/polyfill": "7.6.0", - "@fui/babel-preset-fineui": "^1.0.0", + "@fui/babel-preset-fineui": "^2.0.0", "@fui/eslint-plugin": "1.0.11", + "@types/node": "15.6.1", "autoprefixer": "9.6.1", "babel-loader": "8.0.6", "chai": "4.2.0", @@ -22,7 +23,8 @@ "expose-loader": "0.7.5", "express": "4.15.2", "fork-ts-checker-webpack-plugin": "1.4.3", - "grunt": "1.0.1", + "glob": "^7.2.0", + "grunt": "^1.0.1", "html-webpack-plugin": "3.2.0", "husky": "^3.1.0", "karma": "3.1.4", @@ -39,14 +41,13 @@ "optimize-css-assets-webpack-plugin": "5.0.3", "postcss-loader": "3.0.0", "postcss-simple-vars": "5.0.2", - "puppeteer": "2.1.0", + "puppeteer": "^13.3.0", "rimraf": "3.0.2", "script-loader": "0.7.2", "source-map-loader": "0.2.4", "style-loader": "0.23.1", "terser-webpack-plugin": "4.2.3", "typescript": "3.5.2", - "@types/node": "15.6.1", "webpack": "4.35.2", "webpack-cli": "3.3.5", "webpack-dev-server": "3.7.2", @@ -54,7 +55,8 @@ }, "scripts": { "webpack:dev": "node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js -p --progress --host 0.0.0.0 --config=webpack/webpack.dev.js --mode development", - "webpack:prod": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack -p --progress --config=webpack/webpack.prod.js --mode production", + "webpack:prod": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack -p --progress --config=webpack/webpack.prod.js --mode production && npm run biCss && npm run jsyCss", + "webpack:css": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack -p --progress --config=webpack/webpack.css.js --mode production", "start": "node server.js", "build": "npm run webpack:prod && tsc", "postbuild": "node ./lib/postbuild/postbuild.js", @@ -62,7 +64,9 @@ "dev": "npm run webpack:dev", "prepublishToPrivate": "npm run build && node ./lib/prepublish/prepublish.js", "publishToPrivate": "npm publish", - "postpublishToPrivate": " node ./lib/postpublish/postpublish.js" + "postpublishToPrivate": " node ./lib/postpublish/postpublish.js", + "biCss": "cross-env LESS_CONFIG_PATH=bi.lessconfig.json LESS_FILE_NAME=bi npm run webpack:css", + "jsyCss": "cross-env LESS_CONFIG_PATH=jsy.lessconfig.json LESS_FILE_NAME=jsy npm run webpack:css" }, "repository": { "type": "git", diff --git a/private/modern/app.less b/private/modern/app.less deleted file mode 100644 index d086387ac..000000000 --- a/private/modern/app.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/app"; -@import "var"; diff --git a/private/modern/background.less b/private/modern/background.less deleted file mode 100644 index 996147127..000000000 --- a/private/modern/background.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/background"; -@import "var"; diff --git a/private/modern/font.less b/private/modern/font.less deleted file mode 100644 index c236f82ed..000000000 --- a/private/modern/font.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/font"; -@import "var"; diff --git a/private/modern/icon.less b/private/modern/icon.less deleted file mode 100644 index 43e3123c5..000000000 --- a/private/modern/icon.less +++ /dev/null @@ -1,5 +0,0 @@ -@import "../../src/less/resource/icon"; -@import "var"; - - - diff --git a/private/modern/var.less b/private/modern/var.less deleted file mode 100644 index 9eff8bc78..000000000 --- a/private/modern/var.less +++ /dev/null @@ -1,5 +0,0 @@ -@import "../../src/less/index-modern"; -@webUrl: './'; -@fontUrl: '@{webUrl}font/'; //图片的基本地址 -@imageUrl: '@{webUrl}images/1x/'; //图片的基本地址 -@image2xUrl: '@{webUrl}images/2x/'; //2倍图片的基本地址 diff --git a/public/modern/app.less b/public/modern/app.less deleted file mode 100644 index d086387ac..000000000 --- a/public/modern/app.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/app"; -@import "var"; diff --git a/public/modern/background.less b/public/modern/background.less deleted file mode 100644 index 996147127..000000000 --- a/public/modern/background.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/background"; -@import "var"; diff --git a/public/modern/font.less b/public/modern/font.less deleted file mode 100644 index c236f82ed..000000000 --- a/public/modern/font.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/font"; -@import "var"; diff --git a/public/modern/icon.less b/public/modern/icon.less deleted file mode 100644 index 43e3123c5..000000000 --- a/public/modern/icon.less +++ /dev/null @@ -1,5 +0,0 @@ -@import "../../src/less/resource/icon"; -@import "var"; - - - diff --git a/public/modern/var.less b/public/modern/var.less deleted file mode 100644 index 189948635..000000000 --- a/public/modern/var.less +++ /dev/null @@ -1,6 +0,0 @@ -@import "../../src/less/index-modern"; -@webUrl: 'https://fine-design-storage.oss-cn-shanghai.aliyuncs.com/fineui/2.0/'; -@fontUrl: '@{webUrl}font/'; //图片的基本地址 -@imageUrl: '@{webUrl}images/1x/'; //图片的基本地址 -@image2xUrl: '@{webUrl}images/2x/'; //2倍图片的基本地址 - diff --git a/src/base/0.base.js b/src/base/0.base.js index e5eec1d1a..a8aa11a21 100644 --- a/src/base/0.base.js +++ b/src/base/0.base.js @@ -5,6 +5,7 @@ BI.prepares.push(function () { BI.Bubbles = new BI.BubblesController(); BI.Tooltips = new BI.TooltipsController(); BI.Popovers = new BI.PopoverController(); + BI.Drawers = new BI.DrawerController(); BI.Broadcasts = new BI.BroadcastController(); BI.StyleLoaders = new BI.StyleLoaderManager(); }); diff --git a/src/base/1.pane.js b/src/base/1.pane.js index 5bbecf5da..8df568ead 100644 --- a/src/base/1.pane.js +++ b/src/base/1.pane.js @@ -132,7 +132,7 @@ BI.Pane = BI.inherit(BI.Widget, { setTipVisible: function (b) { if (b === true) { this._assertTip(); - this._tipText.setVisible(true); + this._tipText && this._tipText.setVisible(true); } else { this._tipText && this._tipText.setVisible(false); } @@ -150,3 +150,5 @@ BI.Pane = BI.inherit(BI.Widget, { }); BI.Pane.EVENT_LOADED = "EVENT_LOADED"; BI.Pane.EVENT_LOADING = "EVENT_LOADING"; + +BI.shortcut("bi.pane", BI.Pane); diff --git a/src/base/collection/collection.js b/src/base/collection/collection.js index fa16883e4..8605e70c5 100644 --- a/src/base/collection/collection.js +++ b/src/base/collection/collection.js @@ -11,6 +11,9 @@ BI.CollectionView = BI.inherit(BI.Widget, { baseCls: "bi-collection", // width: 400, //必设 // height: 300, //必设 + scrollable: true, + scrollx: false, + scrolly: false, overflowX: true, overflowY: true, cellSizeAndPositionGetter: BI.emptyFn, @@ -18,7 +21,10 @@ BI.CollectionView = BI.inherit(BI.Widget, { verticalOverscanSize: 0, scrollLeft: 0, scrollTop: 0, - items: [] + items: [], + itemFormatter: function (item, index) { + return item; + } }); }, @@ -46,14 +52,30 @@ BI.CollectionView = BI.inherit(BI.Widget, { scrollTop: o.scrollTop }); }); + // 兼容一下 + var scrollable = o.scrollable, scrollx = o.scrollx, scrolly = o.scrolly; + if (o.overflowX === false) { + if (o.overflowY === false) { + scrollable = false; + } else { + scrollable = "y" + } + } else { + if (o.overflowY === false) { + scrollable = "x"; + } + } BI._lazyCreateWidget({ type: "bi.vertical", element: this, - scrollable: o.overflowX === true && o.overflowY === true, - scrolly: o.overflowX === false && o.overflowY === true, - scrollx: o.overflowX === true && o.overflowY === false, + scrollable: scrollable, + scrolly: scrolly, + scrollx: scrollx, items: [this.container] }); + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; if (o.items.length > 0) { this._calculateSizeAndPositionData(); this._populate(); @@ -176,12 +198,13 @@ BI.CollectionView = BI.inherit(BI.Widget, { // } renderedCells.push(child = this.renderedCells[index]); } else { + var item = o.itemFormatter(o.items[datum.index], datum.index); child = BI._lazyCreateWidget(BI.extend({ type: "bi.label", width: datum.width, height: datum.height - }, o.items[datum.index], { - cls: (o.items[datum.index].cls || "") + " collection-cell" + (datum.y === 0 ? " first-row" : "") + (datum.x === 0 ? " first-col" : ""), + }, item, { + cls: (item.cls || "") + " collection-cell" + (datum.y === 0 ? " first-row" : "") + (datum.x === 0 ? " first-col" : ""), _left: datum.x, _top: datum.y })); diff --git a/src/base/combination/bubble.js b/src/base/combination/bubble.js new file mode 100644 index 000000000..e35fa38ca --- /dev/null +++ b/src/base/combination/bubble.js @@ -0,0 +1,494 @@ +!(function () { + /** + * @class BI.Bubble + * @extends BI.Widget + */ + BI.Bubble = BI.inherit(BI.Widget, { + _defaultConfig: function () { + var conf = BI.Bubble.superclass._defaultConfig.apply(this, arguments); + return BI.extend(conf, { + baseCls: (conf.baseCls || "") + " bi-popper", + attributes: { + tabIndex: -1 + }, + trigger: "click", // click || hover || click-hover || "" + toggle: true, + direction: "", + placement: "bottom-start", // top-start/top/top-end/bottom-start/bottom/bottom-end/left-start/left/left-end/right-start/right/right-end + logic: { + dynamic: true + }, + container: null, // popupview放置的容器,默认为this.element + isDefaultInit: false, + destroyWhenHide: false, + hideWhenClickOutside: true, + showArrow: true, + hideWhenBlur: false, + isNeedAdjustHeight: true, // 是否需要高度调整 + isNeedAdjustWidth: true, + stopEvent: false, + stopPropagation: false, + adjustLength: 0, // 调整的距离 + adjustXOffset: 0, + adjustYOffset: 0, + hideChecker: BI.emptyFn, + offsetStyle: "left", // left,right,center + el: {}, + popup: {}, + comboClass: "bi-combo-popup", + hoverClass: "bi-combo-hover", + }); + }, + + render: function () { + var self = this, o = this.options; + this._initCombo(); + // 延迟绑定事件,这样可以将自己绑定的事情优先执行 + BI.nextTick(this._initPullDownAction.bind(this)); + this.combo.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { + if (self.isEnabled() && self.isValid()) { + if (type === BI.Events.EXPAND) { + self._popupView(); + } + if (type === BI.Events.COLLAPSE) { + self._hideView(); + } + if (type === BI.Events.EXPAND) { + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + self.fireEvent(BI.Bubble.EVENT_EXPAND); + } + if (type === BI.Events.COLLAPSE) { + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + self.isViewVisible() && self.fireEvent(BI.Bubble.EVENT_COLLAPSE); + } + if (type === BI.Events.CLICK) { + self.fireEvent(BI.Bubble.EVENT_TRIGGER_CHANGE, obj); + } + } + }); + + self.element.on("mouseenter." + self.getName(), function (e) { + if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { + self.element.addClass(o.hoverClass); + } + }); + self.element.on("mouseleave." + self.getName(), function (e) { + if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { + self.element.removeClass(o.hoverClass); + } + }); + + BI.createWidget(BI.extend({ + element: this + }, BI.LogicFactory.createLogic("vertical", BI.extend(o.logic, { + items: [ + {el: this.combo} + ] + })))); + o.isDefaultInit && (this._assertPopupView()); + }, + + _toggle: function (e) { + this._assertPopupViewRender(); + if (this.popupView.isVisible()) { + this._hideView(e); + } else { + if (this.isEnabled()) { + this._popupView(e); + } + } + }, + + _initPullDownAction: function () { + var self = this, o = this.options; + var evs = (this.options.trigger || "").split(","); + var st = function (e) { + if (o.stopEvent) { + e.stopEvent(); + } + if (o.stopPropagation) { + e.stopPropagation(); + } + }; + + var enterPopup = false; + + function hide (e) { + if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid() && o.toggle === true) { + self._hideView(e); + self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); + self.fireEvent(BI.Bubble.EVENT_COLLAPSE); + } + self.popupView && self.popupView.element.off("mouseenter." + self.getName()).off("mouseleave." + self.getName()); + enterPopup = false; + } + + BI.each(evs, function (i, ev) { + switch (ev) { + case "hover": + self.element.on("mouseenter." + self.getName(), function (e) { + if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { + self._popupView(e); + self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); + self.fireEvent(BI.Bubble.EVENT_EXPAND); + } + }); + self.element.on("mouseleave." + self.getName(), function (e) { + if (self.popupView) { + self.popupView.element.on("mouseenter." + self.getName(), function (e) { + enterPopup = true; + self.popupView.element.on("mouseleave." + self.getName(), function (e) { + hide(e); + }); + self.popupView.element.off("mouseenter." + self.getName()); + }); + BI.defer(function () { + if (!enterPopup) { + hide(e); + } + }, 50); + } + }); + break; + case "click": + var debounce = BI.debounce(function (e) { + if (self.combo.element.__isMouseInBounds__(e)) { + if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { + // if (!o.toggle && self.isViewVisible()) { + // return; + // } + o.toggle ? self._toggle(e) : self._popupView(e); + if (self.isViewVisible()) { + self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); + self.fireEvent(BI.Bubble.EVENT_EXPAND); + } else { + self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); + self.fireEvent(BI.Bubble.EVENT_COLLAPSE); + } + } + } + }, BI.EVENT_RESPONSE_TIME, { + "leading": true, + "trailing": false + }); + self.element.off(ev + "." + self.getName()).on(ev + "." + self.getName(), function (e) { + debounce(e); + st(e); + }); + break; + case "click-hover": + var debounce = BI.debounce(function (e) { + if (self.combo.element.__isMouseInBounds__(e)) { + if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { + // if (self.isViewVisible()) { + // return; + // } + self._popupView(e); + if (self.isViewVisible()) { + self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); + self.fireEvent(BI.Bubble.EVENT_EXPAND); + } + } + } + }, BI.EVENT_RESPONSE_TIME, { + "leading": true, + "trailing": false + }); + self.element.off("click." + self.getName()).on("click." + self.getName(), function (e) { + debounce(e); + st(e); + }); + self.element.on("mouseleave." + self.getName(), function (e) { + if (self.popupView) { + self.popupView.element.on("mouseenter." + self.getName(), function (e) { + enterPopup = true; + self.popupView.element.on("mouseleave." + self.getName(), function (e) { + hide(e); + }); + self.popupView.element.off("mouseenter." + self.getName()); + }); + BI.delay(function () { + if (!enterPopup) { + hide(e); + } + }, 50); + } + }); + break; + } + }); + }, + + _initCombo: function () { + this.combo = BI.createWidget(this.options.el, { + value: this.options.value + }); + }, + + _assertPopupView: function () { + var self = this, o = this.options; + if (this.popupView == null) { + this.popupView = BI.createWidget(this.options.popup, { + type: "bi.bubble_popup_view", + showArrow: o.showArrow, + value: o.value + }, this); + this.popupView.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { + if (type === BI.Events.CLICK) { + self.combo.setValue(self.getValue()); + self.fireEvent(BI.Bubble.EVENT_CHANGE, value, obj); + } + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + }); + this.popupView.setVisible(false); + BI.nextTick(function () { + self.fireEvent(BI.Bubble.EVENT_AFTER_INIT); + }); + } + }, + + _assertPopupViewRender: function () { + this._assertPopupView(); + if (!this._rendered) { + BI.createWidget({ + type: "bi.vertical", + scrolly: false, + element: this.options.container || this, + items: [ + {el: this.popupView} + ] + }); + this._rendered = true; + } + }, + + _hideIf: function (e, skipTriggerChecker) { + // if (this.element.__isMouseInBounds__(e) || (this.popupView && this.popupView.element.__isMouseInBounds__(e))) { + // return; + // } + // BI-10290 公式combo双击公式内容会收起 + if (e && ((skipTriggerChecker !== true && this.element.find(e.target).length > 0) + || (this.popupView && this.popupView.element.find(e.target).length > 0) + || e.target.className === "CodeMirror-cursor" || BI.Widget._renderEngine.createElement(e.target).closest(".CodeMirror-hints").length > 0)) {// BI-9887 CodeMirror的公式弹框需要特殊处理下 + var directions = this.options.direction.split(","); + if (BI.contains(directions, "innerLeft") || BI.contains(directions, "innerRight")) { + // popup可以出现在trigger内部的combo,滚动时不需要消失,而是调整位置 + this.adjustWidth(); + this.adjustHeight(); + } + + return; + } + var isHide = this.options.hideChecker.apply(this, [e]); + if (isHide === false) { + return; + } + this._hideView(e); + return true; + }, + + _hideView: function (e) { + var o = this.options; + this.fireEvent(BI.Bubble.EVENT_BEFORE_HIDEVIEW); + if (this.options.destroyWhenHide === true) { + this.popupView && this.popupView.destroy(); + this.popupView = null; + this._rendered = false; + } else { + this.popupView && this.popupView.invisible(); + } + + if (!e || !this.combo.element.__isMouseInBounds__(e)) { + this.element.removeClass(this.options.hoverClass); + // 应对bi-focus-shadow在收起时不失焦 + this.element.blur(); + } + + if (this.popper) { + this.popper.destroy(); + this.popper = null; + } + + this.element.removeClass(this.options.comboClass); + + BI.Widget._renderEngine.createElement(document).unbind("mousedown." + this.getName()).unbind("mousewheel." + this.getName()); + BI.EVENT_BLUR && o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).unbind("blur." + this.getName()); + this.fireEvent(BI.Bubble.EVENT_AFTER_HIDEVIEW); + }, + + _popupView: function (e) { + var self = this, o = this.options; + this._assertPopupViewRender(); + this.fireEvent(BI.Bubble.EVENT_BEFORE_POPUPVIEW); + // popupVisible是为了获取其宽高, 放到可视范围之外以防止在IE下闪一下 + // this.popupView.css({left: -999999999, top: -99999999}); + this.popupView.visible(); + this.adjustWidth(e); + + if (this.popper) { + this.popper.destroy(); + } + var modifiers = [{ + name: "offset", + options: { + offset: function () { + return [o.adjustXOffset, (o.showArrow ? 9 : 0) + (o.adjustYOffset + o.adjustLength)]; + } + } + }]; + if (this.options.showArrow) { + modifiers.push({ + name: "arrow", + options: { + padding: 5, + element: this.popupView.arrow.element[0] + } + }); + } + this.popper = BI.Popper.createPopper(this.combo.element[0], this.popupView.element[0], { + placement: o.placement, + strategy: "fixed", + modifiers: modifiers + }); + + // this.adjustHeight(e); + + this.element.addClass(this.options.comboClass); + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).unbind("mousedown." + this.getName()); + BI.EVENT_BLUR && o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).unbind("blur." + this.getName()); + + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).bind("mousedown." + this.getName(), BI.bind(this._hideIf, this)); + BI.EVENT_BLUR && o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).bind("blur." + this.getName(), BI.bind(this._hideIf, this)); + this.fireEvent(BI.Bubble.EVENT_AFTER_POPUPVIEW); + }, + + adjustWidth: function (e) { + var o = this.options; + if (!this.popupView) { + return; + } + if (o.isNeedAdjustWidth === true) { + this.resetListWidth(""); + var width = this.popupView.element.outerWidth(); + var maxW = this.element.outerWidth() || o.width; + // BI-93885 最大列宽算法调整 + if (maxW < 500) { + if (width >= 500) { + maxW = 500; + } else if (width > maxW) { + // 防止小数导致差那么一点 + maxW = width + 1; + } + } + + // if (width > maxW + 80) { + // maxW = maxW + 80; + // } else if (width > maxW) { + // maxW = width; + // } + this.resetListWidth(maxW < 100 ? 100 : maxW); + } + }, + + adjustHeight: function () { + + }, + + resetListHeight: function (h) { + this._assertPopupView(); + this.popupView.resetHeight && this.popupView.resetHeight(h); + }, + + resetListWidth: function (w) { + this._assertPopupView(); + this.popupView.resetWidth && this.popupView.resetWidth(w); + }, + + populate: function (items) { + this._assertPopupView(); + this.popupView.populate.apply(this.popupView, arguments); + this.combo.populate && this.combo.populate.apply(this.combo, arguments); + }, + + _setEnable: function (arg) { + BI.Bubble.superclass._setEnable.apply(this, arguments); + if (arg === true) { + this.element.removeClass("base-disabled disabled"); + } else if (arg === false) { + this.element.addClass("base-disabled disabled"); + } + !arg && this.element.removeClass(this.options.hoverClass); + !arg && this.isViewVisible() && this._hideView(); + }, + + setValue: function (v) { + this.combo.setValue(v); + if (BI.isNull(this.popupView)) { + this.options.popup.value = v; + } else { + this.popupView.setValue(v); + } + }, + + getValue: function () { + if (BI.isNull(this.popupView)) { + return this.options.popup.value; + } else { + return this.popupView.getValue(); + } + }, + + isViewVisible: function () { + return this.isEnabled() && this.combo.isEnabled() && !!this.popupView && this.popupView.isVisible(); + }, + + showView: function (e) { + // 减少popup 调整宽高的次数 + if (this.isEnabled() && this.combo.isEnabled() && !this.isViewVisible()) { + this._popupView(e); + } + }, + + hideView: function (e) { + this._hideView(e); + }, + + getView: function () { + return this.popupView; + }, + + getPopupPosition: function () { + return this.position; + }, + + toggle: function () { + this._toggle(); + }, + + destroyed: function () { + BI.Widget._renderEngine.createElement(document) + .unbind("click." + this.getName()) + .unbind("mousedown." + this.getName()) + .unbind("mouseenter." + this.getName()) + .unbind("mouseleave." + this.getName()); + BI.Widget._renderEngine.createElement(window) + .unbind("blur." + this.getName()); + this.popper && this.popper.destroy(); + this.popper = null; + this.popupView && this.popupView._destroy(); + } + }); + BI.Bubble.EVENT_TRIGGER_CHANGE = "EVENT_TRIGGER_CHANGE"; + BI.Bubble.EVENT_CHANGE = "EVENT_CHANGE"; + BI.Bubble.EVENT_EXPAND = "EVENT_EXPAND"; + BI.Bubble.EVENT_COLLAPSE = "EVENT_COLLAPSE"; + BI.Bubble.EVENT_AFTER_INIT = "EVENT_AFTER_INIT"; + + + BI.Bubble.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; + BI.Bubble.EVENT_AFTER_POPUPVIEW = "EVENT_AFTER_POPUPVIEW"; + BI.Bubble.EVENT_BEFORE_HIDEVIEW = "EVENT_BEFORE_HIDEVIEW"; + BI.Bubble.EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; + + BI.shortcut("bi.bubble", BI.Bubble); +}()); diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 0798ceae2..bdb488e4c 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -1,10 +1,14 @@ !(function () { var needHideWhenAnotherComboOpen = {}; + var currentOpenedCombos = {}; /** * @class BI.Combo * @extends BI.Widget */ - BI.Combo = BI.inherit(BI.Widget, { + BI.Combo = BI.inherit(BI.Bubble, { + _const: { + TRIANGLE_LENGTH: 9 + }, _defaultConfig: function () { var conf = BI.Combo.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { @@ -23,6 +27,8 @@ destroyWhenHide: false, hideWhenBlur: true, hideWhenAnotherComboOpen: false, + hideWhenClickOutside: true, + showArrow: false, isNeedAdjustHeight: true, // 是否需要高度调整 isNeedAdjustWidth: true, stopEvent: false, @@ -43,7 +49,8 @@ render: function () { var self = this, o = this.options; this._initCombo(); - this._initPullDownAction(); + // 延迟绑定事件,这样可以将自己绑定的事情优先执行 + BI.nextTick(this._initPullDownAction.bind(this)); this.combo.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { if (self.isEnabled() && self.isValid()) { if (type === BI.Events.EXPAND) { @@ -81,7 +88,7 @@ element: this }, BI.LogicFactory.createLogic("vertical", BI.extend(o.logic, { items: [ - { el: this.combo } + {el: this.combo} ] })))); o.isDefaultInit && (this._assertPopupView()); @@ -93,204 +100,28 @@ }, this)); }, - _toggle: function (e) { - this._assertPopupViewRender(); - if (this.popupView.isVisible()) { - this._hideView(e); - } else { - if (this.isEnabled()) { - this._popupView(e); - } - } - }, - - _initPullDownAction: function () { - var self = this, o = this.options; - var evs = (this.options.trigger || "").split(","); - var st = function (e) { - if (o.stopEvent) { - e.stopEvent(); - } - if (o.stopPropagation) { - e.stopPropagation(); - } - }; - - var enterPopup = false; - - function hide(e) { - if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid() && o.toggle === true) { - self._hideView(e); - self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); - self.fireEvent(BI.Combo.EVENT_COLLAPSE); - } - self.popupView && self.popupView.element.off("mouseenter." + self.getName()).off("mouseleave." + self.getName()); - enterPopup = false; - } - - BI.each(evs, function (i, ev) { - switch (ev) { - case "hover": - self.element.on("mouseenter." + self.getName(), function (e) { - if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { - self._popupView(e); - self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); - self.fireEvent(BI.Combo.EVENT_EXPAND); - } - }); - self.element.on("mouseleave." + self.getName(), function (e) { - if (self.popupView) { - self.popupView.element.on("mouseenter." + self.getName(), function (e) { - enterPopup = true; - self.popupView.element.on("mouseleave." + self.getName(), function (e) { - hide(e); - }); - self.popupView.element.off("mouseenter." + self.getName()); - }); - BI.defer(function () { - if (!enterPopup) { - hide(e); - } - }, 50); - } - }); - break; - case "click": - var debounce = BI.debounce(function (e) { - if (self.combo.element.__isMouseInBounds__(e)) { - if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { - // if (!o.toggle && self.isViewVisible()) { - // return; - // } - o.toggle ? self._toggle(e) : self._popupView(e); - if (self.isViewVisible()) { - self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); - self.fireEvent(BI.Combo.EVENT_EXPAND); - } else { - self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); - self.fireEvent(BI.Combo.EVENT_COLLAPSE); - } - } - } - }, BI.EVENT_RESPONSE_TIME, { - "leading": true, - "trailing": false - }); - self.element.off(ev + "." + self.getName()).on(ev + "." + self.getName(), function (e) { - debounce(e); - st(e); - }); - break; - case "click-hover": - var debounce = BI.debounce(function (e) { - if (self.combo.element.__isMouseInBounds__(e)) { - if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { - // if (self.isViewVisible()) { - // return; - // } - self._popupView(e); - if (self.isViewVisible()) { - self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); - self.fireEvent(BI.Combo.EVENT_EXPAND); - } - } - } - }, BI.EVENT_RESPONSE_TIME, { - "leading": true, - "trailing": false - }); - self.element.off("click." + self.getName()).on("click." + self.getName(), function (e) { - debounce(e); - st(e); - }); - self.element.on("mouseleave." + self.getName(), function (e) { - if (self.popupView) { - self.popupView.element.on("mouseenter." + self.getName(), function (e) { - enterPopup = true; - self.popupView.element.on("mouseleave." + self.getName(), function (e) { - hide(e); - }); - self.popupView.element.off("mouseenter." + self.getName()); - }); - BI.delay(function () { - if (!enterPopup) { - hide(e); - } - }, 50); - } - }); - break; - } - }); - }, - - _initCombo: function () { - this.combo = BI.createWidget(this.options.el, { - value: this.options.value - }); - }, - _assertPopupView: function () { var self = this, o = this.options; if (this.popupView == null) { this.popupView = BI.createWidget(this.options.popup, { type: "bi.popup_view", + showArrow: o.showArrow, value: o.value }, this); this.popupView.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { if (type === BI.Events.CLICK) { self.combo.setValue(self.getValue()); - self.fireEvent(BI.Combo.EVENT_CHANGE, value, obj); + self.fireEvent(BI.Bubble.EVENT_CHANGE, value, obj); } self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); }); this.popupView.setVisible(false); BI.nextTick(function () { - self.fireEvent(BI.Combo.EVENT_AFTER_INIT); - }); - } - }, - - _assertPopupViewRender: function () { - this._assertPopupView(); - if (!this._rendered) { - BI.createWidget({ - type: "bi.vertical", - scrolly: false, - element: this.options.container || this, - items: [ - { el: this.popupView } - ] + self.fireEvent(BI.Bubble.EVENT_AFTER_INIT); }); - this._rendered = true; } }, - _hideIf: function (e, skipTriggerChecker) { - // if (this.element.__isMouseInBounds__(e) || (this.popupView && this.popupView.element.__isMouseInBounds__(e))) { - // return; - // } - // BI-10290 公式combo双击公式内容会收起 - if (e && ((skipTriggerChecker !== true && this.element.find(e.target).length > 0) - || (this.popupView && this.popupView.element.find(e.target).length > 0) - || e.target.className === "CodeMirror-cursor" || BI.Widget._renderEngine.createElement(e.target).closest(".CodeMirror-hints").length > 0)) {// BI-9887 CodeMirror的公式弹框需要特殊处理下 - var directions = this.options.direction.split(","); - if (BI.contains(directions, "innerLeft") || BI.contains(directions, "innerRight")) { - // popup可以出现在trigger内部的combo,滚动时不需要消失,而是调整位置 - this.adjustWidth(); - this.adjustHeight(); - } - - return; - } - var isHide = this.options.hideChecker.apply(this, [e]); - if (isHide === false) { - return; - } - this._hideView(e); - return true; - }, - _hideView: function (e) { var o = this.options; this.fireEvent(BI.Combo.EVENT_BEFORE_HIDEVIEW); @@ -310,9 +141,10 @@ this.element.removeClass(this.options.comboClass); delete needHideWhenAnotherComboOpen[this.getName()]; + delete currentOpenedCombos[this.getName()]; - BI.Widget._renderEngine.createElement(document).unbind("mousedown." + this.getName()).unbind("mousewheel." + this.getName()); - o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).unbind("blur." + this.getName()); + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).unbind("mousedown." + this.getName()).unbind("mousewheel." + this.getName()); + BI.EVENT_BLUR && o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).unbind("blur." + this.getName()); this.fireEvent(BI.Combo.EVENT_AFTER_HIDEVIEW); }, @@ -321,7 +153,7 @@ this._assertPopupViewRender(); this.fireEvent(BI.Combo.EVENT_BEFORE_POPUPVIEW); // popupVisible是为了获取其宽高, 放到可视范围之外以防止在IE下闪一下 - this.popupView.css({ left: -999999999, top: -99999999 }); + this.popupView.css({left: -999999999, top: -99999999}); this.popupView.visible(); BI.each(needHideWhenAnotherComboOpen, function (i, combo) { if (i !== self.getName()) { @@ -330,47 +162,22 @@ } } }); + currentOpenedCombos[this.getName()] = this; this.options.hideWhenAnotherComboOpen && (needHideWhenAnotherComboOpen[this.getName()] = this); this.adjustWidth(e); this.adjustHeight(e); this.element.addClass(this.options.comboClass); - BI.Widget._renderEngine.createElement(document).unbind("mousedown." + this.getName()).unbind("mousewheel." + this.getName()); - o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).unbind("blur." + this.getName()); + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).unbind("mousedown." + this.getName()).unbind("mousewheel." + this.getName()); + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).unbind("mousewheel." + this.getName()); + BI.EVENT_BLUR && o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).unbind("blur." + this.getName()); - BI.Widget._renderEngine.createElement(document).bind("mousedown." + this.getName(), BI.bind(this._hideIf, this)).bind("mousewheel." + this.getName(), BI.bind(this._hideIf, this)); - o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).bind("blur." + this.getName(), BI.bind(this._hideIf, this)); + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).bind("mousedown." + this.getName(), BI.bind(this._hideIf, this)).bind("mousewheel." + this.getName(), BI.bind(this._hideIf, this)); + o.hideWhenClickOutside && BI.Widget._renderEngine.createElement(document).bind("mousewheel." + this.getName(), BI.bind(this._hideIf, this)); + BI.EVENT_BLUR && o.hideWhenBlur && BI.Widget._renderEngine.createElement(window).bind("blur." + this.getName(), BI.bind(this._hideIf, this)); this.fireEvent(BI.Combo.EVENT_AFTER_POPUPVIEW); }, - adjustWidth: function (e) { - var o = this.options; - if (!this.popupView) { - return; - } - if (o.isNeedAdjustWidth === true) { - this.resetListWidth(""); - var width = this.popupView.element.outerWidth(); - var maxW = this.element.outerWidth() || o.width; - // BI-93885 最大列宽算法调整 - if (maxW < 500) { - if (width >= 500) { - maxW = 500; - } else if(width > maxW) { - // 防止小数导致差那么一点 - maxW = width + 1; - } - } - - // if (width > maxW + 80) { - // maxW = maxW + 80; - // } else if (width > maxW) { - // maxW = width; - // } - this.resetListWidth(maxW < 100 ? 100 : maxW); - } - }, - adjustHeight: function (e) { var o = this.options, p = {}; if (!this.popupView) { @@ -406,69 +213,83 @@ switch (o.direction) { case "bottom": case "bottom,right": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, o.adjustYOffset || o.adjustLength, o.isNeedAdjustHeight, ["bottom", "top", "right", "left"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["bottom", "top", "right", "left"], o.offsetStyle); break; case "top": case "top,right": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, o.adjustYOffset || o.adjustLength, o.isNeedAdjustHeight, ["top", "bottom", "right", "left"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["top", "bottom", "right", "left"], o.offsetStyle); break; case "left": case "left,bottom": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "bottom", "top"], o.offsetStyle); break; case "right": case "right,bottom": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "bottom", "top"], o.offsetStyle); break; case "top,left": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, o.adjustYOffset || o.adjustLength, o.isNeedAdjustHeight, ["top", "bottom", "left", "right"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["top", "bottom", "left", "right"], o.offsetStyle); break; case "bottom,left": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, o.adjustYOffset || o.adjustLength, o.isNeedAdjustHeight, ["bottom", "top", "left", "right"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["bottom", "top", "left", "right"], o.offsetStyle); break; case "left,top": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "top", "bottom"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "top", "bottom"], o.offsetStyle); break; case "right,top": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "top", "bottom"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "top", "bottom"], o.offsetStyle); break; case "right,innerRight": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerRight", "innerLeft", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerRight", "innerLeft", "bottom", "top"], o.offsetStyle); break; case "right,innerLeft": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerLeft", "innerRight", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerLeft", "innerRight", "bottom", "top"], o.offsetStyle); break; case "innerRight": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["innerRight", "innerLeft", "right", "left", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["innerRight", "innerLeft", "right", "left", "bottom", "top"], o.offsetStyle); break; case "innerLeft": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength, o.adjustYOffset, o.isNeedAdjustHeight, ["innerLeft", "innerRight", "left", "right", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["innerLeft", "innerRight", "left", "right", "bottom", "top"], o.offsetStyle); break; case "top,custom": case "custom,top": - p = BI.DOM.getTopAdaptPosition(combo, this.popupView, o.adjustYOffset || o.adjustLength, o.isNeedAdjustHeight); + p = BI.DOM.getTopAdaptPosition(combo, this.popupView, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight); + p.dir = "top"; break; case "custom,bottom": case "bottom,custom": - p = BI.DOM.getBottomAdaptPosition(combo, this.popupView, o.adjustYOffset || o.adjustLength, o.isNeedAdjustHeight); + p = BI.DOM.getBottomAdaptPosition(combo, this.popupView, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight); + p.dir = "bottom"; break; case "left,custom": case "custom,left": - p = BI.DOM.getLeftAdaptPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength); + p = BI.DOM.getLeftAdaptPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0)); delete p.top; delete p.adaptHeight; + p.dir = "left"; break; case "custom,right": case "right,custom": - p = BI.DOM.getRightAdaptPosition(combo, this.popupView, o.adjustXOffset || o.adjustLength); + p = BI.DOM.getRightAdaptPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0)); delete p.top; delete p.adaptHeight; + p.dir = "right"; break; } if ("adaptHeight" in p) { this.resetListHeight(p["adaptHeight"]); } + var width = this.combo.element.outerWidth(); + var height = this.combo.element.outerHeight(); + this.popupView.setDirection && this.popupView.setDirection(p.dir, { + width: width, + height: height, + offsetStyle: o.offsetStyle, + adjustXOffset: o.adjustXOffset, + adjustYOffset: o.adjustYOffset, + offset: this.combo.element.offset() + }); if ("left" in p) { this.popupView.element.css({ left: p.left @@ -483,92 +304,30 @@ this.popupView.setVisible(isVisible); }, - resetListHeight: function (h) { - this._assertPopupView(); - this.popupView.resetHeight && this.popupView.resetHeight(h); - }, - - resetListWidth: function (w) { - this._assertPopupView(); - this.popupView.resetWidth && this.popupView.resetWidth(w); - }, - - populate: function (items) { - this._assertPopupView(); - this.popupView.populate.apply(this.popupView, arguments); - this.combo.populate && this.combo.populate.apply(this.combo, arguments); - }, - - _setEnable: function (arg) { - BI.Combo.superclass._setEnable.apply(this, arguments); - if (arg === true) { - this.element.removeClass("base-disabled disabled"); - } else if (arg === false) { - this.element.addClass("base-disabled disabled"); - } - !arg && this.element.removeClass(this.options.hoverClass); - !arg && this.isViewVisible() && this._hideView(); - }, - - setValue: function (v) { - this.combo.setValue(v); - if (BI.isNull(this.popupView)) { - this.options.popup.value = v; - } else { - this.popupView.setValue(v); - } - }, - - getValue: function () { - if (BI.isNull(this.popupView)) { - return this.options.popup.value; - } else { - return this.popupView.getValue(); - } - }, - - isViewVisible: function () { - return this.isEnabled() && this.combo.isEnabled() && !!this.popupView && this.popupView.isVisible(); - }, - - showView: function (e) { - // 减少popup 调整宽高的次数 - if (this.isEnabled() && this.combo.isEnabled() && !this.isViewVisible()) { - this._popupView(e); - } - }, - - hideView: function (e) { - this._hideView(e); - }, - - getView: function () { - return this.popupView; - }, - - getPopupPosition: function () { - return this.position; - }, - - toggle: function () { - this._toggle(); - }, - destroyed: function () { BI.Widget._renderEngine.createElement(document) .unbind("click." + this.getName()) .unbind("mousedown." + this.getName()) .unbind("mousewheel." + this.getName()) .unbind("mouseenter." + this.getName()) - .unbind("mousemove." + this.getName()) .unbind("mouseleave." + this.getName()); BI.Widget._renderEngine.createElement(window) .unbind("blur." + this.getName()); BI.Resizers.remove(this.getName()); this.popupView && this.popupView._destroy(); delete needHideWhenAnotherComboOpen[this.getName()]; + delete currentOpenedCombos[this.getName()]; } }); + BI.Combo.closeAll = function () { + BI.each(currentOpenedCombos, function (i, combo) { + if (combo) { + combo.hideView(); + } + }); + currentOpenedCombos = {}; + needHideWhenAnotherComboOpen = {}; + }; BI.Combo.EVENT_TRIGGER_CHANGE = "EVENT_TRIGGER_CHANGE"; BI.Combo.EVENT_CHANGE = "EVENT_CHANGE"; BI.Combo.EVENT_EXPAND = "EVENT_EXPAND"; diff --git a/src/base/combination/expander.js b/src/base/combination/expander.js index 866949f28..83b99566a 100644 --- a/src/base/combination/expander.js +++ b/src/base/combination/expander.js @@ -25,7 +25,8 @@ BI.Expander = BI.inherit(BI.Widget, { var self = this, o = this.options; this._expanded = !!o.el.open; this._initExpander(); - this._initPullDownAction(); + // 延迟绑定事件,这样可以将自己绑定的事情优先执行 + BI.nextTick(this._initPullDownAction.bind(this)); this.expander.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { if (self.isEnabled() && self.isValid()) { if (type === BI.Events.EXPAND) { diff --git a/src/base/combination/group.button.js b/src/base/combination/group.button.js index 622ede324..4df7b392e 100644 --- a/src/base/combination/group.button.js +++ b/src/base/combination/group.button.js @@ -21,7 +21,7 @@ BI.ButtonGroup = BI.inherit(BI.Widget, { }, render: function () { - var o = this.options; + var self = this, o = this.options; var behaviors = {}; BI.each(o.behaviors, function (key, rule) { behaviors[key] = BI.BehaviorFactory.createBehavior(key, { @@ -29,8 +29,16 @@ BI.ButtonGroup = BI.inherit(BI.Widget, { }); }); this.behaviors = behaviors; - this.populate(o.items); - if(BI.isKey(o.value) || BI.isNotEmptyArray(o.value)){ + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); + if (BI.isFunction(o.value)) { + this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) + } + if (BI.isKey(o.value) || BI.isNotEmptyArray(o.value)) { this.setValue(o.value); } }, @@ -77,11 +85,12 @@ BI.ButtonGroup = BI.inherit(BI.Widget, { _packageBtns: function (btns) { var o = this.options; - for (var i = o.layouts.length - 1; i > 0; i--) { + var layouts = BI.isArray(o.layouts) ? o.layouts : [o.layouts]; + for (var i = layouts.length - 1; i > 0; i--) { btns = BI.map(btns, function (k, it) { - return BI.extend({}, o.layouts[i], { + return BI.extend({}, layouts[i], { items: [ - BI.extend({}, o.layouts[i].el, { + BI.extend({}, layouts[i].el, { el: it }) ] @@ -108,7 +117,7 @@ BI.ButtonGroup = BI.inherit(BI.Widget, { }, _packageLayout: function (items) { - var o = this.options, layout = BI.deepClone(o.layouts[0]); + var o = this.options, layout = BI.deepClone(BI.isArray(o.layouts) ? o.layouts[0] : o.layouts); var lay = BI.formatEL(layout).el; while (lay && lay.items && !BI.isEmpty(lay.items)) { @@ -121,7 +130,7 @@ BI.ButtonGroup = BI.inherit(BI.Widget, { // 如果是一个简单的layout _isSimpleLayout: function () { var o = this.options; - return o.layouts.length === 1 && !BI.isArray(o.items[0]); + return BI.isArray(o.layouts) ? (o.layouts.length === 1 && !BI.isArray(o.items[0])) : true; }, doBehavior: function () { diff --git a/src/base/combination/group.combo.js b/src/base/combination/group.combo.js index 60b7f1873..7c07445ee 100644 --- a/src/base/combination/group.combo.js +++ b/src/base/combination/group.combo.js @@ -16,7 +16,7 @@ BI.ComboGroup = BI.inherit(BI.Widget, { isNeedAdjustWidth: false, el: {type: "bi.text_button", text: "", value: ""}, - children: [], + items: [], popup: { el: { @@ -36,7 +36,7 @@ BI.ComboGroup = BI.inherit(BI.Widget, { _populate: function (item) { var self = this, o = this.options; - var children = o.children; + var children = o.items; if (BI.isEmpty(children)) { throw new Error("ComboGroup构造错误"); } @@ -45,7 +45,7 @@ BI.ComboGroup = BI.inherit(BI.Widget, { ch = BI.formatEL(ch).el; if (!BI.isEmpty(son)) { ch.el = BI.clone(ch); - ch.children = son; + ch.items = son; ch.type = "bi.combo_group"; ch.action = o.action; ch.height = o.height; diff --git a/src/base/combination/group.virtual.js b/src/base/combination/group.virtual.js index cccddd14e..eb2b63b85 100644 --- a/src/base/combination/group.virtual.js +++ b/src/base/combination/group.virtual.js @@ -12,8 +12,16 @@ BI.VirtualGroup = BI.inherit(BI.Widget, { }, render: function () { - var o = this.options; - this.populate(o.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); + if (BI.isFunction(o.value)) { + this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) + } if (BI.isKey(o.value)) { this.setValue(o.value); } @@ -22,12 +30,13 @@ BI.VirtualGroup = BI.inherit(BI.Widget, { _packageBtns: function (items) { var o = this.options; var map = this.buttonMap = {}; - for (var i = o.layouts.length - 1; i > 0; i--) { + var layouts = BI.isArray(o.layouts) ? o.layouts : [o.layouts]; + for (var i = layouts.length - 1; i > 0; i--) { items = BI.map(items, function (k, it) { var el = BI.stripEL(it); - return BI.extend({}, o.layouts[i], { + return BI.extend({}, layouts[i], { items: [ - BI.extend({}, o.layouts[i].el, { + BI.extend({}, layouts[i].el, { el: BI.extend({ ref: function (_ref) { if (BI.isKey(map[el.value])) { @@ -44,7 +53,9 @@ BI.VirtualGroup = BI.inherit(BI.Widget, { }, _packageLayout: function (items) { - var o = this.options, layout = BI.deepClone(o.layouts[0]); + var o = this.options; + var layouts = BI.isArray(o.layouts) ? o.layouts : [o.layouts]; + var layout = BI.deepClone(layouts[0]); var lay = BI.formatEL(layout).el; while (lay && lay.items && !BI.isEmpty(lay.items)) { @@ -100,17 +111,18 @@ BI.VirtualGroup = BI.inherit(BI.Widget, { }, populate: function (items) { - var self = this; items = items || []; this.options.items = items; items = this._packageBtns(items); if (!this.layouts) { this.layouts = BI.createWidget(BI.extend({element: this}, this._packageLayout(items))); } else { - this.layouts.populate(items); + this.layouts.populate(items, { + context: this + }); } } }); BI.VirtualGroup.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.virtual_group", BI.VirtualGroup); \ No newline at end of file +BI.shortcut("bi.virtual_group", BI.VirtualGroup); diff --git a/src/base/combination/loader.js b/src/base/combination/loader.js index a29ba45ce..a56e72708 100644 --- a/src/base/combination/loader.js +++ b/src/base/combination/loader.js @@ -109,8 +109,11 @@ BI.Loader = BI.inherit(BI.Widget, { o.isDefaultInit && BI.isEmpty(o.items) && BI.nextTick(BI.bind(function () { o.isDefaultInit && BI.isEmpty(o.items) && this._populate(); }, this)); - if (BI.isNotEmptyArray(o.items)) { - this._populate(o.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + if (BI.isNotEmptyArray(items)) { + this._populate(items); } }, @@ -162,7 +165,6 @@ BI.Loader = BI.inherit(BI.Widget, { this.button_group.addItems.apply(this.button_group, arguments); }, - _populate: function (items) { var self = this, o = this.options; if (arguments.length === 0 && (BI.isFunction(o.itemsCreator))) { diff --git a/src/base/combination/navigation.js b/src/base/combination/navigation.js index 11b2e092d..b2d5ae867 100644 --- a/src/base/combination/navigation.js +++ b/src/base/combination/navigation.js @@ -50,6 +50,12 @@ BI.Navigation = BI.inherit(BI.Widget, { afterCardCreated: BI.bind(this.afterCardCreated, this), afterCardShow: BI.bind(this.afterCardShow, this) }); + + if (BI.isFunction(o.showIndex)) { + this.__watch(o.showIndex, function (context, newValue) { + self.setSelect(newValue); + }) + } }, created: function () { diff --git a/src/base/combination/searcher.js b/src/base/combination/searcher.js index 7da8689c2..c4fd29025 100644 --- a/src/base/combination/searcher.js +++ b/src/base/combination/searcher.js @@ -307,6 +307,18 @@ BI.Searcher = BI.inherit(BI.Widget, { destroyed: function () { BI.Maskers.remove(this.getName()); + }, + + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + + setWaterMark: function (v) { + this.editor.setWaterMark(v); } }); BI.Searcher.EVENT_CHANGE = "EVENT_CHANGE"; diff --git a/src/base/combination/switcher.js b/src/base/combination/switcher.js index 96a1d3c6a..b464af3d9 100644 --- a/src/base/combination/switcher.js +++ b/src/base/combination/switcher.js @@ -25,7 +25,8 @@ BI.Switcher = BI.inherit(BI.Widget, { render: function () { var self = this, o = this.options; this._initSwitcher(); - this._initPullDownAction(); + // 延迟绑定事件,这样可以将自己绑定的事情优先执行 + BI.nextTick(this._initPullDownAction.bind(this)); this.switcher.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { if (self.isEnabled() && self.isValid()) { if (type === BI.Events.EXPAND) { diff --git a/src/base/combination/tab.js b/src/base/combination/tab.js index 664b0c09a..893513721 100644 --- a/src/base/combination/tab.js +++ b/src/base/combination/tab.js @@ -15,14 +15,15 @@ BI.Tab = BI.inherit(BI.Widget, { tab: false, cardCreator: function (v) { return BI.createWidget(); - } + }, + keepAlives: [] }); }, render: function () { var self = this, o = this.options; if (BI.isObject(o.tab)) { - this.tab = BI.createWidget(this.options.tab, {type: "bi.button_group"}); + this.tab = BI.createWidget(this.options.tab, { type: "bi.button_group" }); this.tab.on(BI.Controller.EVENT_CHANGE, function (type, value, obj) { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); }); @@ -44,6 +45,7 @@ BI.Tab = BI.inherit(BI.Widget, { cardCreator: function (v) { var card = o.cardCreator.apply(self, arguments); self.cardMap[v] = card; + return card; }, afterCardShow: function (v) { @@ -60,7 +62,7 @@ BI.Tab = BI.inherit(BI.Widget, { var self = this, o = this.options; if (o.single === true) { BI.each(this.cardMap, function (name, card) { - if (name !== (currCardName + "")) { + if (name !== (currCardName + "") && self._keepAlive(name) !== true) { self.layout.deleteCardByName(name); delete self.cardMap[name]; } @@ -76,10 +78,23 @@ BI.Tab = BI.inherit(BI.Widget, { } }, - created: function () { + _keepAlive: function (v) { var o = this.options; + + return BI.isFunction(o.keepAlives) ? o.keepAlives(v) : BI.contains(o.keepAlives, v); + }, + + created: function () { + var self = this, o = this.options; if (o.showIndex !== false) { - this.setSelect(o.showIndex); + if (BI.isFunction(o.showIndex)) { + var v = this.__watch(o.showIndex, function (context, newValue) { + self.setSelect(newValue); + }); + this.setSelect(v); + } else { + this.setSelect(o.showIndex); + } } }, @@ -99,6 +114,7 @@ BI.Tab = BI.inherit(BI.Widget, { if (BI.isEqual(name, (cardname + ""))) { self.layout.deleteCardByName(name); delete self.cardMap[name]; + return true; } }); @@ -118,7 +134,8 @@ BI.Tab = BI.inherit(BI.Widget, { getTab: function (v) { this._assertCard(v); - return this.layout.getCardByName(v); + +return this.layout.getCardByName(v); }, setValue: function (v) { diff --git a/src/base/context.js b/src/base/context.js new file mode 100644 index 000000000..ecaf5febf --- /dev/null +++ b/src/base/context.js @@ -0,0 +1,45 @@ +/** + * 表示当前对象 + * + * Created by GUY on 2015/9/7. + * @class BI.EL + * @extends BI.Widget + */ +BI.Context = BI.inherit(BI.Widget, { + props: { + context: "", + watch: {}, + el: {}, + items: [] + }, + + render: function () { + var self = this, o = this.options; + this.context = BI.createWidget(o.items[0] || o.el, { + element: this + }); + this.context.on(BI.Controller.EVENT_CHANGE, function () { + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + }); + }, + + created: function () { + var o = this.options; + if (o.context) { + BI.watch(o.context, o.watch); + } + }, + + setValue: function (v) { + this.context.setValue(v); + }, + + getValue: function () { + return this.context.getValue(); + }, + + populate: function () { + this.context.populate.apply(this, arguments); + } +}); +BI.shortcut("bi.context", BI.Context); diff --git a/src/base/foundation/message.js b/src/base/foundation/message.js index 0b9b174ce..860449ab4 100644 --- a/src/base/foundation/message.js +++ b/src/base/foundation/message.js @@ -32,6 +32,7 @@ BI.Msg = function () { cls: "bi-message-animate bi-message-leave", level: level, autoClose: autoClose, + closable: options.closable, text: message, listeners: [{ eventName: BI.Toast.EVENT_DESTORY, @@ -67,6 +68,10 @@ BI.Msg = function () { toast.element.removeClass("bi-message-enter").addClass("bi-message-leave"); toast.destroy(); }, 5000); + return function () { + toast.element.removeClass("bi-message-enter").addClass("bi-message-leave"); + toast.destroy(); + }; }, _show: function (hasCancel, title, message, callback) { BI.isNull($mask) && ($mask = BI.Widget._renderEngine.createElement("
").css({ @@ -128,6 +133,31 @@ BI.Msg = function () { items: [ { type: "bi.border", + attributes: { + tabIndex: 1 + }, + mounted: function () { + this.element.keyup(function (e) { + if (e.keyCode === BI.KeyCode.ENTER) { + close(); + if (BI.isFunction(callback)) { + callback.apply(null, [true]); + } + } else if (e.keyCode === BI.KeyCode.ESCAPE) { + close(); + if (hasCancel === true) { + if (BI.isFunction(callback)) { + callback.apply(null, [false]); + } + } + } + }); + try { + this.element.focus(); + } catch (e) { + + } + }, cls: "bi-card", items: { north: { @@ -157,14 +187,14 @@ BI.Msg = function () { } } }, - width: 60 + width: 56 } } }, height: 40 }, center: { - el: { + el: BI.isPlainObject(message) ? message : { type: "bi.label", vgap: 10, hgap: 20, diff --git a/src/base/grid/grid.js b/src/base/grid/grid.js index 6096a28c5..b264660a7 100644 --- a/src/base/grid/grid.js +++ b/src/base/grid/grid.js @@ -11,6 +11,9 @@ BI.GridView = BI.inherit(BI.Widget, { baseCls: "bi-grid-view", // width: 400, //必设 // height: 300, //必设 + scrollable: true, + scrollx: false, + scrolly: false, overflowX: true, overflowY: true, overscanColumnCount: 0, @@ -21,7 +24,10 @@ BI.GridView = BI.inherit(BI.Widget, { // estimatedRowSize: 30, //rowHeightGetter为function时必设 scrollLeft: 0, scrollTop: 0, - items: [] + items: [], + itemFormatter: function (item, row, col) { + return item; + } }); }, @@ -49,14 +55,30 @@ BI.GridView = BI.inherit(BI.Widget, { scrollTop: o.scrollTop }); }); + // 兼容一下 + var scrollable = o.scrollable, scrollx = o.scrollx, scrolly = o.scrolly; + if (o.overflowX === false) { + if (o.overflowY === false) { + scrollable = false; + } else { + scrollable = "y" + } + } else { + if (o.overflowY === false) { + scrollable = "x"; + } + } BI._lazyCreateWidget({ type: "bi.vertical", element: this, - scrollable: o.overflowX === true && o.overflowY === true, - scrolly: o.overflowX === false && o.overflowY === true, - scrollx: o.overflowX === true && o.overflowY === false, + scrollable: scrollable, + scrolly: scrolly, + scrollx: scrollx, items: [this.container] }); + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; if (o.items.length > 0) { this._calculateSizeAndPositionData(); this._populate(); @@ -172,12 +194,13 @@ BI.GridView = BI.inherit(BI.Widget, { child = this.renderedCells[index].el; renderedCells.push(this.renderedCells[index]); } else { + var item = o.itemFormatter(o.items[rowIndex][columnIndex], rowIndex, columnIndex); child = BI._lazyCreateWidget(BI.extend({ type: "bi.label", width: columnDatum.size, height: rowDatum.size - }, o.items[rowIndex][columnIndex], { - cls: (o.items[rowIndex][columnIndex].cls || "") + " grid-cell" + (rowIndex === 0 ? " first-row" : "") + (columnIndex === 0 ? " first-col" : ""), + }, item, { + cls: (item.cls || "") + " grid-cell" + (rowIndex === 0 ? " first-row" : "") + (columnIndex === 0 ? " first-col" : ""), _rowIndex: rowIndex, _columnIndex: columnIndex, _left: columnDatum.offset + horizontalOffsetAdjustment, diff --git a/src/base/layer/layer.drawer.js b/src/base/layer/layer.drawer.js new file mode 100644 index 000000000..e62c272dc --- /dev/null +++ b/src/base/layer/layer.drawer.js @@ -0,0 +1,226 @@ +/** + * Popover弹出层, + * @class BI.Popover + * @extends BI.Widget + */ +BI.Drawer = BI.inherit(BI.Widget, { + SIZE: { + SMALL: "small", + NORMAL: "normal", + BIG: "big" + }, + props: { + baseCls: "bi-drawer bi-card", + size: "normal", + placement: "right", // top/bottom/left/right + header: null, + headerHeight: 40, + body: null, + closable: true, // BI-40839 是否显示右上角的关闭按钮 + bodyHgap: 20, + bodyTgap: 10, + bodyBgap: 10 + }, + + render: function () { + var self = this; + var o = this.options; + var items = [{ + el: { + type: "bi.htape", + cls: "bi-message-title bi-header-background", + items: [{ + type: "bi.absolute", + items: [{ + el: BI.isPlainObject(o.header) ? BI.extend({}, o.header, { + extraCls: "bi-font-bold" + }) : { + type: "bi.label", + cls: "bi-font-bold", + height: o.headerHeight, + text: o.header, + title: o.header, + textAlign: "left" + }, + left: 20, + top: 0, + right: 0, + bottom: 0 + }] + }, { + el: o.closable ? { + type: "bi.icon_button", + cls: "bi-message-close close-font", + height: o.headerHeight, + handler: function () { + self.close(); + } + } : { + type: "bi.layout" + }, + width: 56 + }], + height: o.headerHeight + }, + height: o.headerHeight + }, { + el: { + type: "bi.vertical", + scrolly: true, + cls: "drawer-body", + ref: function () { + self.body = this; + }, + items: [{ + el: o.body + }] + }, + hgap: o.bodyHgap, + tgap: o.bodyTgap, + bgap: o.bodyBgap + }]; + + return BI.extend({ + type: "bi.vtape", + items: items + }, this._getSuitableSize()); + }, + + _getSuitableSize: function () { + var o = this.options; + var size = 0; + switch (o.size) { + case "big": + size = 736; + break; + case "small": + size = 200; + break; + case "normal": + default: + size = 378; + break; + } + if (o.placement === "top" || o.placement === "bottom") { + return { + height: o.height || size + }; + } + if (o.placement === "left" || o.placement === "right") { + return { + width: o.width || size + }; + } + }, + + mounted: function () { + var self = this, o = this.options; + switch (o.placement) { + case "right": + self.element.css({ + top: 0, + left: "100%", + bottom: 0 + }); + break; + case "left": + self.element.css({ + top: 0, + right: "100%", + bottom: 0 + }); + break; + case "top": + self.element.css({ + left: 0, + right: 0, + bottom: "100%" + }); + break; + case "bottom": + self.element.css({ + left: 0, + right: 0, + top: "100%" + }); + break; + } + }, + + show: function (callback) { + var self = this, o = this.options; + requestAnimationFrame(function () { + var size = self._getSuitableSize(); + switch (o.placement) { + case "right": + self.element.css({ + transform: "translateX(-" + size.width + "px)" + }); + break; + case "left": + self.element.css({ + transform: "translateX(" + size.width + "px)" + }); + break; + case "top": + self.element.css({ + transform: "translateY(" + size.height + "px)" + }); + break; + case "bottom": + self.element.css({ + transform: "translateY(-" + size.height + "px)" + }); + break; + } + callback && callback(); + }); + }, + + hide: function (callback) { + var self = this, o = this.options; + requestAnimationFrame(function () { + switch (o.placement) { + case "right": + case "left": + self.element.css({ + transform: "translateX(0px)" + }); + break; + case "top": + case "bottom": + self.element.css({ + transform: "translateY(0px)" + }); + break; + } + setTimeout(callback, 300); + }); + }, + + open: function () { + var self = this; + this.show(function () { + self.fireEvent(BI.Drawer.EVENT_OPEN); + }); + }, + + close: function () { + var self = this; + this.hide(function () { + self.fireEvent(BI.Drawer.EVENT_CLOSE); + }); + }, + + setZindex: function (zindex) { + this.element.css({"z-index": zindex}); + }, + + destroyed: function () { + } +}); + +BI.shortcut("bi.drawer", BI.Drawer); + +BI.Drawer.EVENT_CLOSE = "EVENT_CLOSE"; +BI.Drawer.EVENT_OPEN = "EVENT_OPEN"; diff --git a/src/base/layer/layer.popover.js b/src/base/layer/layer.popover.js index 87bd2d405..bce738ef3 100644 --- a/src/base/layer/layer.popover.js +++ b/src/base/layer/layer.popover.js @@ -8,29 +8,32 @@ BI.Popover = BI.inherit(BI.Widget, { SIZE: { SMALL: "small", NORMAL: "normal", - BIG: "big", + BIG: "big" }, MAX_HEIGHT: 600 }, - props: { - baseCls: "bi-popover bi-card bi-border-radius", - size: "normal", // small, normal, big - logic: { - dynamic: false, - }, - header: null, - headerHeight: 40, - body: null, - footer: null, - footerHeight: 44, - closable: true, // BI-40839 是否显示右上角的关闭按钮 - bodyHgap: 20, - bodyTgap: 10 + props: function () { + return { + baseCls: "bi-popover bi-card bi-border-radius", + size: "normal", // small, normal, big + logic: { + dynamic: false + }, + header: null, + headerHeight: 40, + body: null, + footer: null, + footerHeight: 44, + closable: true, // BI-40839 是否显示右上角的关闭按钮 + bodyHgap: BI.SIZE_CONSANTS.H_GAP_SIZE, + bodyTgap: BI.SIZE_CONSANTS.V_GAP_SIZE + }; }, render: function () { - var self = this; var o = this.options; + var self = this; + var o = this.options; var c = this._constant; this.startX = 0; this.startY = 0; @@ -42,11 +45,11 @@ BI.Popover = BI.inherit(BI.Widget, { self.startY += deltaY; self.element.css({ left: BI.clamp(self.startX, 0, W - self.element.width()) + "px", - top: BI.clamp(self.startY, 0, H - self.element.height()) + "px", + top: BI.clamp(self.startY, 0, H - self.element.height()) + "px" }); // BI-12134 没有什么特别好的方法 BI.Resizers._resize({ - target: self.element[0], + target: self.element[0] }); }, function () { self.tracker.releaseMouseMoves(); @@ -55,43 +58,43 @@ BI.Popover = BI.inherit(BI.Widget, { el: { type: "bi.htape", cls: "bi-message-title bi-header-background", - ref: function (_ref) { - self.dragger = _ref; - }, items: [{ - type: "bi.absolute", - items: [{ - el: BI.isPlainObject(o.header) ? BI.extend({}, o.header, { - extraCls: "bi-font-bold", - }) : { - type: "bi.label", - cls: "bi-font-bold", - height: o.headerHeight, - text: o.header, - title: o.header, - textAlign: "left", + el: { + type: "bi.absolute", + ref: function (_ref) { + self.dragger = _ref; }, - left: 20, - top: 0, - right: 0, - bottom: 0, - }], - }, { - el: o.closable ? { + items: [{ + el: BI.isPlainObject(o.header) ? BI.extend({}, o.header, { + extraCls: "bi-font-bold" + }) : { + type: "bi.label", + cls: "bi-font-bold", + height: o.headerHeight, + text: o.header, + title: o.header, + textAlign: "left" + }, + top: 0, + bottom: 0, + left: BI.SIZE_CONSANTS.H_GAP_SIZE, + right: o.closable ? 0 : BI.SIZE_CONSANTS.H_GAP_SIZE + }] + } + }, o.closable ? { + el: { type: "bi.icon_button", cls: "bi-message-close close-font", height: o.headerHeight, handler: function () { self.close(); - }, - } : { - type: "bi.layout", + } }, - width: 56, - }], - height: o.headerHeight, + width: 56 + } : null], + height: o.headerHeight }, - height: o.headerHeight, + height: o.headerHeight }, o.logic.dynamic ? { el: { type: "bi.vertical", @@ -102,14 +105,14 @@ BI.Popover = BI.inherit(BI.Widget, { }, css: { "max-height": this._getSuitableBodyHeight(c.MAX_HEIGHT - o.headerHeight - (o.footer ? o.footerHeight : 0) - o.bodyTgap), - "min-height": this._getSuitableBodyHeight(size.height - o.headerHeight - (o.footer ? o.footerHeight : 0) - o.bodyTgap), + "min-height": this._getSuitableBodyHeight(size.height - o.headerHeight - (o.footer ? o.footerHeight : 0) - o.bodyTgap) }, items: [{ - el: o.body, + el: o.body }], - }, - hgap: o.bodyHgap, - tgap: o.bodyTgap, + hgap: o.bodyHgap, + tgap: o.bodyTgap + } } : { el: { type: "bi.absolute", @@ -118,9 +121,9 @@ BI.Popover = BI.inherit(BI.Widget, { left: o.bodyHgap, top: o.bodyTgap, right: o.bodyHgap, - bottom: 0, - }], - }, + bottom: 0 + }] + } }]; if (o.footer) { items.push({ @@ -128,33 +131,33 @@ BI.Popover = BI.inherit(BI.Widget, { type: "bi.absolute", items: [{ el: o.footer, - left: 20, + left: BI.SIZE_CONSANTS.H_GAP_SIZE, top: 0, - right: 20, - bottom: 0, + right: BI.SIZE_CONSANTS.H_GAP_SIZE, + bottom: 0 }], - height: o.footerHeight, + height: o.footerHeight }, - height: o.footerHeight, + height: o.footerHeight }); } return BI.extend({ - type: o.logic.dynamic ? "bi.vertical" : "bi.vtape", items: items, - width: this._getSuitableWidth(size.width), + width: this._getSuitableWidth(size.width) }, o.logic.dynamic ? { type: "bi.vertical", - scrolly: false, + scrolly: false } : { type: "bi.vtape", - height: this._getSuitableHeight(size.height), + height: this._getSuitableHeight(size.height) }); }, // mounted之后绑定事件 mounted: function () { - var self = this; var o = this.options; + var self = this; + var o = this.options; this.dragger.element.mousedown(function (e) { var pos = self.element.offset(); self.startX = pos.left; @@ -202,7 +205,7 @@ BI.Popover = BI.inherit(BI.Widget, { return { width: o.width || size.width, height: o.height || size.height, - type: size.type || "default", + type: size.type || "default" }; }, @@ -221,10 +224,11 @@ BI.Popover = BI.inherit(BI.Widget, { }, setZindex: function (zindex) { - this.element.css({ "z-index": zindex }); + this.element.css({"z-index": zindex}); }, - destroyed: function () {}, + destroyed: function () { + } }); BI.shortcut("bi.popover", BI.Popover); @@ -232,12 +236,13 @@ BI.shortcut("bi.popover", BI.Popover); BI.BarPopover = BI.inherit(BI.Popover, { _defaultConfig: function () { return BI.extend(BI.BarPopover.superclass._defaultConfig.apply(this, arguments), { - btns: [BI.i18nText("BI-Basic_Sure"), BI.i18nText("BI-Basic_Cancel")], + btns: [BI.i18nText("BI-Basic_OK"), BI.i18nText("BI-Basic_Cancel")] }); }, beforeCreate: function () { - var self = this; var o = this.options; + var self = this; + var o = this.options; o.footer || (o.footer = { type: "bi.right_vertical_adapt", lgap: 10, @@ -249,7 +254,7 @@ BI.BarPopover = BI.inherit(BI.Popover, { handler: function (v) { self.fireEvent(BI.Popover.EVENT_CANCEL, v); self.close(v); - }, + } }, { type: "bi.button", text: this.options.btns[0], @@ -258,10 +263,10 @@ BI.BarPopover = BI.inherit(BI.Popover, { handler: function (v) { self.fireEvent(BI.Popover.EVENT_CONFIRM, v); self.close(v); - }, - }], + } + }] }); - }, + } }); BI.shortcut("bi.bar_popover", BI.BarPopover); diff --git a/src/base/layer/layer.popup.js b/src/base/layer/layer.popup.js index 66db79ec7..a4cd139b3 100644 --- a/src/base/layer/layer.popup.js +++ b/src/base/layer/layer.popup.js @@ -4,9 +4,14 @@ * @extends BI.Widget */ BI.PopupView = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _const: { + TRIANGLE_LENGTH: 9 + }, + _defaultConfig: function (props) { return BI.extend(BI.PopupView.superclass._defaultConfig.apply(this, arguments), { - _baseCls: "bi-popup-view", + _baseCls: "bi-popup-view" + (props.primary ? " bi-primary" : ""), + // 品牌色 + primary: false, maxWidth: "auto", minWidth: 100, // maxHeight: 200, @@ -17,8 +22,9 @@ BI.PopupView = BI.inherit(BI.Widget, { bgap: 0, vgap: 0, hgap: 0, - innerVGap: 0, - innerHGap: 0, + innerVgap: 0, + innerHgap: 0, + showArrow: false, direction: BI.Direction.Top, // 工具栏的方向 stopEvent: false, // 是否停止mousedown、mouseup事件 stopPropagation: false, // 是否停止mousedown、mouseup向上冒泡 @@ -54,12 +60,12 @@ BI.PopupView = BI.inherit(BI.Widget, { "z-index": BI.zIndex_popup, "min-width": BI.isNumeric(o.minWidth) ? (o.minWidth / BI.pixRatio + BI.pixUnit) : o.minWidth, "max-width": BI.isNumeric(o.maxWidth) ? (o.maxWidth / BI.pixRatio + BI.pixUnit) : o.maxWidth - }).bind({ click: fn }); + }).bind({click: fn}); this.element.bind("mousewheel", fn); - o.stopPropagation && this.element.bind({ mousedown: fn, mouseup: fn, mouseover: fn }); - o.stopEvent && this.element.bind({ mousedown: stop, mouseup: stop, mouseover: stop }); + o.stopPropagation && this.element.bind({mousedown: fn, mouseup: fn, mouseover: fn}); + o.stopEvent && this.element.bind({mousedown: stop, mouseup: stop, mouseover: stop}); this.tool = this._createTool(); this.tab = this._createTab(); this.view = this._createView(); @@ -82,25 +88,56 @@ BI.PopupView = BI.inherit(BI.Widget, { bgap: o.bgap, vgap: o.vgap, hgap: o.hgap, - items: BI.LogicFactory.createLogicItemsByDirection(o.direction, - BI.extend({ - cls: "list-view-outer bi-card list-view-shadow" + items: BI.LogicFactory.createLogicItemsByDirection(o.direction, BI.extend({ + cls: "list-view-outer bi-card list-view-shadow" + (o.primary ? " bi-primary" : "") }, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(o.direction), BI.extend({}, o.logic, { items: BI.LogicFactory.createLogicItemsByDirection(o.direction, this.tool, this.tab, this.view, this.toolbar) }))) ) })))); + if (o.showArrow) { + this.arrow = BI.createWidget({ + type: "bi.absolute", + cls: "bi-bubble-arrow", + items: [{ + type: "bi.layout", + cls: "bubble-arrow" + }] + }); + this.arrowWrapper = BI.createWidget({ + type: "bi.absolute", + cls: "bi-bubble-arrow-wrapper", + items: [{ + el: this.arrow, + }] + }); + // 因为三角符号的原因位置变大了,需要占位 + this.placeholder = BI.createWidget({ + type: "bi.layout" + }); + BI.createWidget({ + type: "bi.absolute", + element: this, + items: [{ + el: this.arrowWrapper, + left: 0, + top: 0, + }, { + el: this.placeholder + }] + }); + } }, _createView: function () { var o = this.options; - this.button_group = BI.createWidget(o.el, { type: "bi.button_group", value: o.value }); + this.button_group = BI.createWidget(o.el, {type: "bi.button_group", value: o.value}); this.button_group.element.css({ "min-height": BI.isNumeric(o.minHeight) ? (o.minHeight / BI.pixRatio + BI.pixUnit) : o.minHeight, - "padding-top": o.innerVGap / BI.pixRatio + BI.pixUnit, - "padding-bottom": o.innerVGap / BI.pixRatio + BI.pixUnit, - "padding-left": o.innerHGap / BI.pixRatio + BI.pixUnit, - "padding-right": o.innerHGap / BI.pixRatio + BI.pixUnit, + "padding-top": o.innerVgap / BI.pixRatio + BI.pixUnit, + "padding-bottom": o.innerVgap / BI.pixRatio + BI.pixUnit, + "padding-left": o.innerHgap / BI.pixRatio + BI.pixUnit, + "padding-right": o.innerHgap / BI.pixRatio + BI.pixUnit }); return this.button_group; }, @@ -145,6 +182,204 @@ BI.PopupView = BI.inherit(BI.Widget, { }); }, + setDirection: function (direction, position) { + var o = this.options; + if (o.showArrow) { + var style, wrapperStyle, placeholderStyle; + var adjustXOffset = position.adjustXOffset || 0; + var adjustYOffset = position.adjustYOffset || 0; + var bodyBounds = BI.Widget._renderEngine.createElement("body").bounds(); + var bodyWidth = bodyBounds.width; + var bodyHeight = bodyBounds.height; + var popupWidth = this.element.outerWidth(); + var popupHeight = this.element.outerHeight(); + var offset = position.offset; + var offsetStyle = position.offsetStyle; + var middle = offsetStyle === "center" || offsetStyle === "middle"; + + var minLeft = Math.max(5, offset.left + 5 + popupWidth - bodyWidth); + var minRight = Math.max(5, popupWidth - (offset.left + 5)); + var minTop = Math.max(5, offset.top + 5 + popupHeight - bodyHeight); + var minBottom = Math.max(5, popupHeight - (offset.top + 5)); + + var maxLeft = Math.min(popupWidth - 12 - 5, offset.left + position.width - 12 - 5); + var maxRight = Math.min(popupWidth - 12 - 5, bodyWidth - (offset.left + position.width - 12 - 5)); + var maxTop = Math.min(popupHeight - 12 - 5, offset.top + position.height - 12 - 5); + var maxBottom = Math.min(popupHeight - 12 - 5, bodyHeight - (offset.top + position.height - 12 - 5)); + switch (direction) { + case "bottom": + case "bottom,right": + direction = "bottom"; + style = { + // 5表示留出一定的空间 + left: BI.clamp(((middle ? popupWidth : position.width) - adjustXOffset) / 2 - 6, minLeft, maxLeft) + }; + wrapperStyle = { + top: o.tgap + o.vgap, + left: 0, + right: "", + bottom: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: -this._const.TRIANGLE_LENGTH, + bottom: "" + }; + break; + case "bottom,left": + direction = "bottom"; + style = { + right: BI.clamp(((middle ? popupWidth : position.width) + adjustXOffset) / 2 - 6, minRight, maxRight) + }; + wrapperStyle = { + top: o.bgap + o.vgap, + left: "", + right: 0, + bottom: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: -this._const.TRIANGLE_LENGTH, + bottom: "" + }; + break; + case "top": + case "top,right": + direction = "top"; + style = { + left: BI.clamp(((middle ? popupWidth : position.width) - adjustXOffset) / 2 - 6, minLeft, maxLeft) + }; + wrapperStyle = { + bottom: o.bgap + o.vgap, + left: 0, + right: "", + top: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: "", + bottom: -this._const.TRIANGLE_LENGTH, + }; + break; + case "top,left": + direction = "top"; + style = { + right: BI.clamp(((middle ? popupWidth : position.width) + adjustXOffset) / 2 - 6, minRight, maxRight) + }; + wrapperStyle = { + bottom: o.bgap + o.vgap, + right: 0, + left: "", + top: "", + }; + placeholderStyle = { + left: 0, + right: 0, + height: this._const.TRIANGLE_LENGTH, + top: "", + bottom: -this._const.TRIANGLE_LENGTH, + }; + break; + case "left": + case "left,bottom": + direction = "left"; + style = { + top: BI.clamp(((middle ? popupHeight : position.height) - adjustYOffset) / 2 - 6, minTop, maxTop) + }; + wrapperStyle = { + right: o.rgap + o.hgap, + top: 0, + bottom: "", + left: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + right: -this._const.TRIANGLE_LENGTH, + left: "" + }; + break; + case "left,top": + direction = "left"; + style = { + bottom: BI.clamp(((middle ? popupHeight : position.height) + adjustYOffset) / 2 - 6, minBottom, maxBottom) + }; + wrapperStyle = { + right: o.rgap + o.hgap, + bottom: 0, + top: "", + left: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + right: -this._const.TRIANGLE_LENGTH, + left: "" + }; + break; + case "right": + case "right,bottom": + direction = "right"; + style = { + top: BI.clamp(((middle ? popupHeight : position.height) - adjustYOffset) / 2 - 6, minTop, maxTop) + }; + wrapperStyle = { + left: o.lgap + o.hgap, + top: 0, + bottom: "", + right: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + left: -this._const.TRIANGLE_LENGTH, + right: "" + }; + break; + case "right,top": + direction = "right"; + style = { + bottom: BI.clamp(((middle ? popupHeight : position.height) + adjustYOffset) / 2 - 6, minBottom, maxBottom) + }; + wrapperStyle = { + left: o.lgap + o.hgap, + bottom: 0, + top: "", + right: "", + }; + placeholderStyle = { + top: 0, + bottom: 0, + width: this._const.TRIANGLE_LENGTH, + left: -this._const.TRIANGLE_LENGTH, + right: "" + }; + break; + case "right,innerRight": + break; + case "right,innerLeft": + break; + case "innerRight": + break; + case "innerLeft": + break; + } + this.element.removeClass("left").removeClass("right").removeClass("top").removeClass("bottom").addClass(direction); + this.arrow.element.css(style); + this.arrowWrapper.element.css(wrapperStyle); + this.placeholder.element.css(placeholderStyle); + } + }, + getView: function () { return this.view; }, @@ -162,9 +397,9 @@ BI.PopupView = BI.inherit(BI.Widget, { var tbHeight = this.toolbar ? (this.toolbar.attr("height") || 24) : 0, tabHeight = this.tab ? (this.tab.attr("height") || 24) : 0, toolHeight = ((this.tool && this.tool.attr("height")) || 24) * ((this.tool && this.tool.isVisible()) ? 1 : 0); - var resetHeight = h - tbHeight - tabHeight - toolHeight - 2 * this.options.innerVGap; + var resetHeight = h - tbHeight - tabHeight - toolHeight - 2 * this.options.innerVgap; this.view.resetHeight ? this.view.resetHeight(resetHeight) : - this.view.element.css({ "max-height": resetHeight / BI.pixRatio + BI.pixUnit }); + this.view.element.css({"max-height": resetHeight / BI.pixRatio + BI.pixUnit}); }, setValue: function (selectedValues) { diff --git a/src/base/list/listview.js b/src/base/list/listview.js index 2708e4823..052abc139 100644 --- a/src/base/list/listview.js +++ b/src/base/list/listview.js @@ -13,7 +13,10 @@ BI.ListView = BI.inherit(BI.Widget, { blockSize: 10, scrollTop: 0, el: {}, - items: [] + items: [], + itemFormatter: function (item, index) { + return item; + } }; }, @@ -41,6 +44,9 @@ BI.ListView = BI.inherit(BI.Widget, { // mounted之后绑定事件 mounted: function () { var self = this, o = this.options; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; this._populate(); this.element.scroll(function (e) { o.scrollTop = self.element.scrollTop(); @@ -71,7 +77,9 @@ BI.ListView = BI.inherit(BI.Widget, { }; while ((lastHeight = getElementHeight()) < minContentHeight && index < o.items.length) { var items = o.items.slice(index, index + o.blockSize); - this.container.addItems(items, this); + this.container.addItems(items.map(function (item, i) { + return o.itemFormatter(item, index + i); + }), this); var addedHeight = getElementHeight() - lastHeight; this.cache[cnt] = { index: index, diff --git a/src/base/list/virtualgrouplist.js b/src/base/list/virtualgrouplist.js index 56dd68bb1..7a4a9323b 100644 --- a/src/base/list/virtualgrouplist.js +++ b/src/base/list/virtualgrouplist.js @@ -13,7 +13,10 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { blockSize: 10, scrollTop: 0, rowHeight: "auto", - items: [] + items: [], + itemFormatter: function (item, index) { + return item; + } }; }, @@ -54,10 +57,20 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { // mounted之后绑定事件 mounted: function () { var self = this, o = this.options; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; this._populate(); - this.element.scroll(function (e) { + this.ticking = false; + this.element.scroll(function() { o.scrollTop = self.element.scrollTop(); - self._calculateBlocksToRender(); + if (!self.ticking) { + requestAnimationFrame(function () { + self._calculateBlocksToRender(); + self.ticking = false; + }); + self.ticking = true; + } }); BI.ResizeDetector.addResizeListener(this, function () { self._calculateBlocksToRender(); @@ -79,7 +92,9 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { }; while ((lastHeight = getElementHeight()) < minContentHeight && index < o.items.length) { var items = o.items.slice(index, index + o.blockSize); - this.container.addItems(items, this); + this.container.addItems(items.map(function (item, i) { + return o.itemFormatter(item, index + i) + }), this); var addedHeight = getElementHeight() - lastHeight; this.tree.set(cnt, addedHeight); this.renderedIndex = cnt; @@ -107,7 +122,9 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { } } this.bottomBlank.setHeight(this.tree.sumTo(this.renderedIndex) - this.tree.sumTo(Math.min(end, this.renderedIndex))); - this.container.populate(items); + this.container.populate(items.map(function (item, i) { + return o.itemFormatter(item, (start < 0 ? 0 : start) * o.blockSize + i) + })); } else { for (var i = (start < 0 ? 0 : start); i <= end; i++) { var index = i * o.blockSize; @@ -116,7 +133,9 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { } } this.container.element.height(o.rowHeight * o.items.length - topHeight); - this.container.populate(items); + this.container.populate(items.map(function (item, i) { + return o.itemFormatter(item, (start < 0 ? 0 : start) * o.blockSize + i) + })); } }, diff --git a/src/base/list/virtuallist.js b/src/base/list/virtuallist.js index 7f90c763c..b7f2700c7 100644 --- a/src/base/list/virtuallist.js +++ b/src/base/list/virtuallist.js @@ -12,7 +12,10 @@ BI.VirtualList = BI.inherit(BI.Widget, { overscanHeight: 100, blockSize: 10, scrollTop: 0, - items: [] + items: [], + itemFormatter: function (item, index) { + return item; + } }; }, @@ -50,6 +53,9 @@ BI.VirtualList = BI.inherit(BI.Widget, { // mounted之后绑定事件 mounted: function () { var self = this, o = this.options; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; this._populate(); this.element.scroll(function (e) { o.scrollTop = self.element.scrollTop(); @@ -71,7 +77,9 @@ BI.VirtualList = BI.inherit(BI.Widget, { }; while ((lastHeight = getElementHeight()) < minContentHeight && index < o.items.length) { var items = o.items.slice(index, index + o.blockSize); - this.container.addItems(items, this); + this.container.addItems(items.map(function (item, i) { + return o.itemFormatter(item, index + i) + }), this); var addedHeight = getElementHeight() - lastHeight; this.tree.set(cnt, addedHeight); this.renderedIndex = cnt; @@ -128,7 +136,7 @@ BI.VirtualList = BI.inherit(BI.Widget, { } if (this.cache[i].destroyed === true) { for (var j = index; j < index + o.blockSize && j < o.items.length; j++) { - var w = this.container._addElement(j, o.items[j], this); + var w = this.container._addElement(j, o.itemFormatter(o.items[j], j), this); needMount.push(w); currentFragment.appendChild(w.element[0]); } diff --git a/src/base/pager/pager.js b/src/base/pager/pager.js index 5967271b2..6689774f6 100644 --- a/src/base/pager/pager.js +++ b/src/base/pager/pager.js @@ -12,8 +12,6 @@ BI.Pager = BI.inherit(BI.Widget, { behaviors: {}, layouts: [{ type: "bi.horizontal", - hgap: 10, - vgap: 0 }], dynamicShow: true, // 是否动态显示上一页、下一页、首页、尾页, 若为false,则指对其设置使能状态 @@ -178,7 +176,6 @@ BI.Pager = BI.inherit(BI.Widget, { items: BI.createItems(view, { cls: "bi-list-item-select bi-border-radius", height: 23, - hgap: 10, stopPropagation: true }), behaviors: o.behaviors, diff --git a/src/base/single/0.single.js b/src/base/single/0.single.js index 070935e24..bb926e9a2 100644 --- a/src/base/single/0.single.js +++ b/src/base/single/0.single.js @@ -46,8 +46,11 @@ BI.Single = BI.inherit(BI.Widget, { }, _init: function () { - BI.Single.superclass._init.apply(this, arguments); var self = this, o = this.options; + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + BI.Single.superclass._init.apply(this, arguments); if (BI.isKey(o.title) || BI.isKey(o.warningTitle) || BI.isFunction(o.title) || BI.isFunction(o.warningTitle)) { this.enableHover({ diff --git a/src/base/single/1.text.js b/src/base/single/1.text.js index cc6081e7f..4a22bf531 100644 --- a/src/base/single/1.text.js +++ b/src/base/single/1.text.js @@ -76,7 +76,9 @@ this.text = this; } - var text = this._getShowText(); + var text = BI.isFunction(o.text) ? this.__watch(o.text, function (context, newValue) { + self.setText(newValue); + }) : o.text; // 只要不是undefined就可以显示text值,否则显示value if (!BI.isUndefined(text)) { this.setText(text); diff --git a/src/base/single/button/button.basic.js b/src/base/single/button/button.basic.js index 4a5d68a0c..aab172495 100644 --- a/src/base/single/button/button.basic.js +++ b/src/base/single/button/button.basic.js @@ -10,6 +10,7 @@ BI.BasicButton = BI.inherit(BI.Single, { var conf = BI.BasicButton.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { _baseCls: (conf._baseCls || "") + " bi-basic-button" + (conf.invalid ? "" : " cursor-pointer") + ((BI.isIE() && BI.getIEVersion() < 10) ? " hack" : ""), + // el: {} // 可以通过el来创建button元素 value: "", stopEvent: false, stopPropagation: false, @@ -26,15 +27,14 @@ BI.BasicButton = BI.inherit(BI.Single, { bubble: null }); }, + _init: function () { - BI.BasicButton.superclass._init.apply(this, arguments); + var self = this; var opts = this.options; - if (opts.selected === true) { - BI.nextTick(BI.bind(function () { - this.setSelected(opts.selected); - }, this)); - } - BI.nextTick(BI.bind(this.bindEvent, this)); + opts.selected = BI.isFunction(opts.selected) ? this.__watch(opts.selected, function (context, newValue) { + self.setSelected(newValue); + }) : opts.selected; + BI.BasicButton.superclass._init.apply(this, arguments); if (opts.shadow) { this._createShadow(); @@ -44,6 +44,20 @@ BI.BasicButton = BI.inherit(BI.Single, { } }, + _initRef: function () { + if (this.options.selected === true) { + this.setSelected(true); + } + // 延迟绑定事件,这样可以将自己绑定的事情优先执行 + BI.nextTick(this.bindEvent.bind(this)); + BI.BasicButton.superclass._initRef.apply(this, arguments); + }, + + // 默认render方法 + render: function () { + return this.options.el; + }, + _createShadow: function () { var self = this, o = this.options; @@ -194,6 +208,12 @@ BI.BasicButton = BI.inherit(BI.Single, { }); } hand.click(clk); + // enter键等同于点击 + o.attributes && o.attributes.zIndex >= 0 && hand.keyup(function (e) { + if (e.keyCode === BI.KeyCode.ENTER) { + clk(e); + } + }); break; } }); diff --git a/src/base/single/button/button.node.js b/src/base/single/button/button.node.js index b8fda221f..8e17a4ea5 100644 --- a/src/base/single/button/button.node.js +++ b/src/base/single/button/button.node.js @@ -9,18 +9,17 @@ BI.NodeButton = BI.inherit(BI.BasicButton, { _defaultConfig: function () { var conf = BI.NodeButton.superclass._defaultConfig.apply(this, arguments); - return BI.extend( conf, { + return BI.extend(conf, { _baseCls: (conf._baseCls || "") + " bi-node", open: false }); }, - _init: function () { - BI.NodeButton.superclass._init.apply(this, arguments); - var self = this; - BI.nextTick(function () { - self.setOpened(self.isOpened()); - }); + _initRef: function () { + if (this.isOpened()) { + this.setOpened(this.isOpened()); + } + BI.NodeButton.superclass._initRef.apply(this, arguments); }, doClick: function () { @@ -41,14 +40,14 @@ BI.NodeButton = BI.inherit(BI.BasicButton, { }, triggerCollapse: function () { - if(this.isOpened()) { + if (this.isOpened()) { this.setOpened(false); this.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, this.getValue(), this); } }, triggerExpand: function () { - if(!this.isOpened()) { + if (!this.isOpened()) { this.setOpened(true); this.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, this.getValue(), this); } diff --git a/src/base/single/button/buttons/button.icon.js b/src/base/single/button/buttons/button.icon.js index 5eb104e6d..3def60551 100644 --- a/src/base/single/button/buttons/button.icon.js +++ b/src/base/single/button/buttons/button.icon.js @@ -8,6 +8,12 @@ BI.IconButton = BI.inherit(BI.BasicButton, { var conf = BI.IconButton.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { _baseCls: (conf._baseCls || "") + " bi-icon-button horizon-center", + hgap: 0, + vgap: 0, + tgap: 0, + bgap: 0, + lgap: 0, + rgap: 0, iconWidth: null, iconHeight: null }); @@ -28,6 +34,12 @@ BI.IconButton = BI.inherit(BI.BasicButton, { BI.createWidget({ type: "bi.default", element: this, + hgap: o.hgap, + vgap: o.vgap, + lgap: o.lgap, + rgap: o.rgap, + tgap: o.tgap, + bgap: o.bgap, items: [this.icon] }); } else { @@ -35,6 +47,12 @@ BI.IconButton = BI.inherit(BI.BasicButton, { BI.createWidget({ element: this, type: "bi.center_adapt", + hgap: o.hgap, + vgap: o.vgap, + lgap: o.lgap, + rgap: o.rgap, + tgap: o.tgap, + bgap: o.bgap, items: [this.icon] }); } diff --git a/src/base/single/button/buttons/button.js b/src/base/single/button/buttons/button.js index b5dc71c27..0863d0935 100644 --- a/src/base/single/button/buttons/button.js +++ b/src/base/single/button/buttons/button.js @@ -16,6 +16,9 @@ BI.Button = BI.inherit(BI.BasicButton, { var conf = BI.Button.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { baseCls: (conf.baseCls || "") + " bi-button" + ((BI.isIE() && BI.isIE9Below()) ? " hack" : ""), + attributes: { + tabIndex: 1 + }, minWidth: (props.block === true || props.clear === true) ? 0 : 80, height: 24, shadow: props.clear !== true, @@ -61,7 +64,7 @@ BI.Button = BI.inherit(BI.BasicButton, { type: "bi.icon_label", cls: o.iconCls, width: this._const.iconWidth, - height: o.height, + height: lineHeight, lineHeight: lineHeight, iconWidth: o.iconWidth, iconHeight: o.iconHeight @@ -71,7 +74,7 @@ BI.Button = BI.inherit(BI.BasicButton, { text: o.text, textWidth: BI.isNotNull(o.textWidth) ? o.textWidth - this._const.iconWidth : null, textHeight: textHeight, - height: o.height, + height: lineHeight, value: o.value }); BI.createWidget({ @@ -125,6 +128,15 @@ BI.Button = BI.inherit(BI.BasicButton, { } }, + _setEnable: function (enable) { + BI.Button.superclass._setEnable.apply(this, arguments); + if (enable === true) { + this.element.attr("tabIndex", 1); + } else if (enable === false) { + this.element.removeAttr("tabIndex"); + } + }, + setText: function (text) { BI.Button.superclass.setText.apply(this, arguments); this.text.setText(text); diff --git a/src/base/single/button/listitem/blankiconicontextitem.js b/src/base/single/button/listitem/blankiconicontextitem.js index 9e8301a53..ed8f0b6d1 100644 --- a/src/base/single/button/listitem/blankiconicontextitem.js +++ b/src/base/single/button/listitem/blankiconicontextitem.js @@ -27,45 +27,46 @@ BI.BlankIconIconTextItem = BI.inherit(BI.BasicButton, { }, render: function () { - var o = this.options, c = this._const; - var blank = BI.createWidget({ - type: "bi.layout", - width: o.blankWidth, - height: o.height - }); - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); - this.icon1 = BI.createWidget({ - type: "bi.icon_button", - cls: o.iconCls1, - forceNotSelected: true, - width: o.height, - height: o.height - }); - this.icon2 = BI.createWidget({ - type: "bi.icon_button", - cls: o.iconCls2, - forceNotSelected: true, - width: o.height, - height: o.height - }); + var self = this, o = this.options; - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", blank, this.icon1, this.icon2, this.text) - })))); + return { + type: "bi.vertical_adapt", + columnSize: [o.blankWidth, o.leftIconWrapperWidth || o.height, o.rightIconWrapperWidth || o.height, "fill"], + items: [{ + type: "bi.layout", + width: o.blankWidth + }, { + type: "bi.icon_label", + cls: o.iconCls1, + width: o.leftIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { + type: "bi.icon_label", + cls: o.iconCls2, + width: o.rightIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }] + }; }, doClick: function () { diff --git a/src/base/single/button/listitem/blankicontexticonitem.js b/src/base/single/button/listitem/blankicontexticonitem.js index 99d6ad575..815589387 100644 --- a/src/base/single/button/listitem/blankicontexticonitem.js +++ b/src/base/single/button/listitem/blankicontexticonitem.js @@ -28,57 +28,46 @@ BI.BlankIconTextIconItem = BI.inherit(BI.BasicButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); + var self = this, o = this.options; - var icon1 = BI.createWidget({ - type: "bi.icon_label", - cls: o.iconCls1, - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); - BI.createWidget({ - type: "bi.absolute", - element: this, + return { + type: "bi.vertical_adapt", + columnSize: [o.blankWidth, o.leftIconWrapperWidth || o.height, "fill", o.rightIconWrapperWidth || o.height], items: [{ - el: { - type: "bi.icon_label", - cls: o.iconCls2, - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }, - top: 0, - bottom: 0, - right: 0 - }] - }); - - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", { type: "bi.layout", width: o.blankWidth - }, icon1, this.text, { - type: "bi.layout", - width: o.height - }) - })))); + }, { + type: "bi.icon_label", + cls: o.iconCls1, + width: o.leftIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }, { + type: "bi.icon_label", + cls: o.iconCls2, + width: o.rightIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }] + }; }, doClick: function () { diff --git a/src/base/single/button/listitem/blankicontextitem.js b/src/base/single/button/listitem/blankicontextitem.js index d647637dc..54be05c5b 100644 --- a/src/base/single/button/listitem/blankicontextitem.js +++ b/src/base/single/button/listitem/blankicontextitem.js @@ -26,38 +26,40 @@ BI.BlankIconTextItem = BI.inherit(BI.BasicButton, { }, render: function () { - var o = this.options, c = this._const; - var blank = BI.createWidget({ - type: "bi.layout", - width: o.blankWidth - }); - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); - this.icon = BI.createWidget({ - type: "bi.icon_label", - cls: o.iconCls, - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); + var self = this, o = this.options; - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", blank, this.icon, this.text) - })))); + return { + type: "bi.vertical_adapt", + columnSize: [o.blankWidth, o.iconWrapperWidth || o.height, "fill"], + items: [{ + type: "bi.layout", + width: o.blankWidth + }, { + type: "bi.icon_label", + cls: o.iconCls, + width: o.iconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }] + }; }, doClick: function () { diff --git a/src/base/single/button/listitem/icontexticonitem.js b/src/base/single/button/listitem/icontexticonitem.js index 3cae823de..8db8ae483 100644 --- a/src/base/single/button/listitem/icontexticonitem.js +++ b/src/base/single/button/listitem/icontexticonitem.js @@ -27,55 +27,43 @@ BI.IconTextIconItem = BI.inherit(BI.BasicButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); + var self = this, o = this.options; - var icon1 = BI.createWidget({ - type: "bi.icon_label", - cls: o.iconCls1, - width: o.leftIconWrapperWidth, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); - var blank = BI.createWidget({ - type: "bi.layout", - width: o.height - }); - BI.createWidget({ - type: "bi.absolute", - element: this, + return { + type: "bi.vertical_adapt", + columnSize: [o.leftIconWrapperWidth || o.height, "fill", o.rightIconWrapperWidth || o.height], items: [{ + type: "bi.icon_label", + cls: o.iconCls1, + width: o.leftIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { el: { - type: "bi.icon_label", - cls: o.iconCls2, - width: o.rightIconWrapperWidth, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }, - top: 0, - bottom: 0, - right: 0 + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }, { + type: "bi.icon_label", + cls: o.iconCls2, + width: o.rightIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight }] - }); - - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", icon1, this.text, blank) - })))); + }; }, doClick: function () { diff --git a/src/base/single/button/listitem/icontextitem.js b/src/base/single/button/listitem/icontextitem.js index 648b98381..76c19e25d 100644 --- a/src/base/single/button/listitem/icontextitem.js +++ b/src/base/single/button/listitem/icontextitem.js @@ -27,34 +27,44 @@ BI.IconTextItem = BI.inherit(BI.BasicButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); - this.icon = BI.createWidget({ - type: "bi.icon_label", - cls: o.iconCls, - width: o.iconWrapperWidth || o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); + var self = this, o = this.options; + + return { + type: "bi.vertical_adapt", + columnSize: [o.iconWrapperWidth || o.height, "fill"], + items: [{ + type: "bi.icon_label", + cls: o.iconCls, + width: o.iconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }] + }; + }, - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(o.direction), BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection(o.direction, this.icon, this.text) - })))); + doClick: function () { + BI.IconTextItem.superclass.doClick.apply(this, arguments); + if (this.isValid()) { + this.fireEvent(BI.IconTextItem.EVENT_CHANGE, this.getValue(), this); + } }, setValue: function () { @@ -75,13 +85,6 @@ BI.IconTextItem = BI.inherit(BI.BasicButton, { return this.text.getText(); }, - doClick: function () { - BI.IconTextItem.superclass.doClick.apply(this, arguments); - if (this.isValid()) { - this.fireEvent(BI.IconTextItem.EVENT_CHANGE, this.getValue(), this); - } - }, - doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, diff --git a/src/base/single/button/listitem/texticonitem.js b/src/base/single/button/listitem/texticonitem.js index 7eb468087..92c696780 100644 --- a/src/base/single/button/listitem/texticonitem.js +++ b/src/base/single/button/listitem/texticonitem.js @@ -15,6 +15,7 @@ BI.TextIconItem = BI.inherit(BI.BasicButton, { logic: { dynamic: false }, + iconWrapperWidth: null, iconHeight: null, iconWidth: null, iconCls: "", @@ -26,34 +27,37 @@ BI.TextIconItem = BI.inherit(BI.BasicButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); - this.icon = BI.createWidget({ - type: "bi.icon_label", - cls: o.iconCls, - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); + var self = this, o = this.options; - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", this.text, this.icon) - })))); + return { + type: "bi.vertical_adapt", + columnSize: ["fill", o.iconWrapperWidth || o.height], + items: [{ + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }, { + type: "bi.icon_label", + cls: o.iconCls, + width: o.iconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }] + }; }, doClick: function () { diff --git a/src/base/single/button/node/icontexticonnode.js b/src/base/single/button/node/icontexticonnode.js index 01870423f..79bc0167f 100644 --- a/src/base/single/button/node/icontexticonnode.js +++ b/src/base/single/button/node/icontexticonnode.js @@ -25,55 +25,43 @@ BI.IconTextIconNode = BI.inherit(BI.NodeButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); + var self = this, o = this.options; - var icon1 = BI.createWidget({ - type: "bi.icon_label", - cls: o.iconCls1, - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); - var blank = BI.createWidget({ - type: "bi.layout", - width: o.height, - height: o.height - }); - BI.createWidget({ - type: "bi.absolute", - element: this, + return { + type: "bi.vertical_adapt", + columnSize: [o.leftIconWrapperWidth || o.height, "fill", o.rightIconWrapperWidth || o.height], items: [{ + type: "bi.icon_label", + cls: o.iconCls1, + width: o.leftIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { el: { - type: "bi.icon_label", - cls: o.iconCls2, - width: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }, - top: 0, - bottom: 0, - right: 0 + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }, { + type: "bi.icon_label", + cls: o.iconCls2, + width: o.rightIconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight }] - }); - - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", icon1, this.text, blank) - })))); + }; }, doClick: function () { diff --git a/src/base/single/button/node/icontextnode.js b/src/base/single/button/node/icontextnode.js index 35e5757b8..00f1adf86 100644 --- a/src/base/single/button/node/icontextnode.js +++ b/src/base/single/button/node/icontextnode.js @@ -24,33 +24,44 @@ BI.IconTextNode = BI.inherit(BI.NodeButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); - this.icon = BI.createWidget({ - type: "bi.icon_label", - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); + var self = this, o = this.options; + + return { + type: "bi.vertical_adapt", + columnSize: [o.iconWrapperWidth || o.height, "fill"], + items: [{ + type: "bi.icon_label", + cls: o.iconCls, + width: o.iconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }] + }; + }, - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", this.icon, this.text) - })))); + doClick: function () { + BI.IconTextNode.superclass.doClick.apply(this, arguments); + if (this.isValid()) { + this.fireEvent(BI.IconTextNode.EVENT_CHANGE, this.getValue(), this); + } }, setValue: function () { @@ -71,13 +82,6 @@ BI.IconTextNode = BI.inherit(BI.NodeButton, { return this.text.getText(); }, - doClick: function () { - BI.IconTextNode.superclass.doClick.apply(this, arguments); - if (this.isValid()) { - this.fireEvent(BI.IconTextNode.EVENT_CHANGE, this.getValue(), this); - } - }, - doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, diff --git a/src/base/single/button/node/texticonnode.js b/src/base/single/button/node/texticonnode.js index 2231c4c88..67844bddc 100644 --- a/src/base/single/button/node/texticonnode.js +++ b/src/base/single/button/node/texticonnode.js @@ -23,33 +23,37 @@ BI.TextIconNode = BI.inherit(BI.NodeButton, { }, render: function () { - var o = this.options, c = this._const; - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - hgap: o.textHgap, - vgap: o.textVgap, - lgap: o.textLgap, - rgap: o.textRgap, - text: o.text, - value: o.value, - keyword: o.keyword, - height: o.height - }); - this.icon = BI.createWidget({ - type: "bi.icon_label", - width: o.height, - height: o.height, - iconWidth: o.iconWidth, - iconHeight: o.iconHeight - }); + var self = this, o = this.options; - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", this.text, this.icon) - })))); + return { + type: "bi.vertical_adapt", + columnSize: ["fill", o.iconWrapperWidth || o.height], + items: [{ + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + height: o.height + } + }, { + type: "bi.icon_label", + cls: o.iconCls, + width: o.iconWrapperWidth || o.height, + height: o.height, + iconWidth: o.iconWidth, + iconHeight: o.iconHeight + }] + }; }, doClick: function () { diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js index 3191e4aeb..2d9941bb4 100644 --- a/src/base/single/editor/editor.js +++ b/src/base/single/editor/editor.js @@ -109,12 +109,14 @@ BI.Editor = BI.inherit(BI.Single, { this.editor.on(BI.Input.EVENT_VALID, function () { self._checkWaterMark(); self._setErrorVisible(false); + self.element.removeClass("error"); self.fireEvent(BI.Editor.EVENT_VALID, arguments); }); this.editor.on(BI.Input.EVENT_ERROR, function () { self._checkWaterMark(); self.fireEvent(BI.Editor.EVENT_ERROR, arguments); self._setErrorVisible(self.isEditing()); + self.element.addClass("error"); }); this.editor.on(BI.Input.EVENT_RESTRICT, function () { self._checkWaterMark(); @@ -269,7 +271,7 @@ BI.Editor = BI.inherit(BI.Single, { } if (!this.disabledError && BI.isKey(errorText)) { BI.Bubbles[b ? "show" : "hide"](this.getName(), errorText, this, { - adjustYOffset: 2 + adjustYOffset: o.simple ? 1 : 2 }); this._checkToolTip(); } diff --git a/src/base/single/editor/editor.multifile.js b/src/base/single/editor/editor.multifile.js index d917a4762..1175d01c7 100644 --- a/src/base/single/editor/editor.multifile.js +++ b/src/base/single/editor/editor.multifile.js @@ -78,6 +78,10 @@ BI.MultifileEditor = BI.inherit(BI.Widget, { this.file.select(); }, + getQueue: function () { + return this.file.getQueue(); + }, + getValue: function () { return this.file.getValue(); }, @@ -87,6 +91,12 @@ BI.MultifileEditor = BI.inherit(BI.Widget, { this.file.upload(); }, + sendFiles: function (files) { + this._reset(); + + this.file.sendFiles(files); + }, + reset: function () { this._reset(); } diff --git a/src/base/single/editor/editor.textarea.js b/src/base/single/editor/editor.textarea.js index 177f33b26..67a197ddd 100644 --- a/src/base/single/editor/editor.textarea.js +++ b/src/base/single/editor/editor.textarea.js @@ -5,12 +5,12 @@ * @extends BI.Single */ BI.TextAreaEditor = BI.inherit(BI.Single, { - _defaultConfig: function () { + _defaultConfig: function (conf) { return BI.extend(BI.TextAreaEditor.superclass._defaultConfig.apply(), { baseCls: "bi-textarea-editor", value: "", errorText: "", - adjustYOffset: 2, + adjustYOffset: conf.simple ? 0 : 2, adjustXOffset: 0, offsetStyle: "left", validationChecker: function () { @@ -156,7 +156,9 @@ BI.TextAreaEditor = BI.inherit(BI.Single, { }, _checkError: function () { - this._setErrorVisible(this._isError()); + var isError = this._isError(); + this._setErrorVisible(isError); + this.element[isError ? "addClass" : "removeClass"]("error"); }, _focus: function () { diff --git a/src/base/single/input/file.js b/src/base/single/input/file.js index bf4e207b9..50ec58bdc 100644 --- a/src/base/single/input/file.js +++ b/src/base/single/input/file.js @@ -333,11 +333,10 @@ if (isFunction(handler.onloadstart)) { handler.onloadstart(rpe, {}); } - with (document.body || document.documentElement) { - appendChild(iframe); - appendChild(form); - form.submit(); - } + var d = document.body || document.documentElement; + d.appendChild(iframe); + d.appendChild(form); + form.submit(); return handler; }; @@ -652,7 +651,7 @@ }); }, - setMaxFileLength: function(v) { + setMaxFileLength: function (v) { this.options.maxLength = v; if (this.wrap) { this.wrap.maxLength = v; @@ -671,6 +670,10 @@ return this.wrap ? this.wrap.attach_array : []; }, + getQueue: function () { + return this.wrap.files; + }, + reset: function () { if (this.wrap) { this.wrap.attach_array = []; @@ -679,12 +682,22 @@ } }, + sendFiles: function (files) { + if (!this.wrap) return; + + this.wrap.dom.input.files = files; + + var event = new CustomEvent("change"); + + this.wrap.dom.input.dispatchEvent(event); + }, + _setEnable: function (enable) { BI.File.superclass._setEnable.apply(this, arguments); if (enable === true) { - this.element.attr("disabled", "disabled"); - } else { this.element.removeAttr("disabled"); + } else { + this.element.attr("disabled", "disabled"); } } }); diff --git a/src/base/single/input/input.js b/src/base/single/input/input.js index 837d6d205..41e1ca0de 100644 --- a/src/base/single/input/input.js +++ b/src/base/single/input/input.js @@ -24,7 +24,7 @@ BI.Input = BI.inherit(BI.Single, { var _keydown = BI.debounce(function (keyCode) { self.onKeyDown(keyCode, ctrlKey); self._keydown_ = false; - }, 300); + }, BI.EVENT_RESPONSE_TIME); var _clk = BI.debounce(BI.bind(this._click, this), BI.EVENT_RESPONSE_TIME, { "leading": true, "trailing": false @@ -96,7 +96,7 @@ BI.Input = BI.inherit(BI.Single, { _blur: function () { var self = this; if (self._keydown_ === true) { - BI.delay(blur, 300); + BI.delay(blur, BI.EVENT_RESPONSE_TIME); } else { blur(); } diff --git a/src/base/single/input/radio/radio.js b/src/base/single/input/radio/radio.js index 61096af65..f17e79e9e 100644 --- a/src/base/single/input/radio/radio.js +++ b/src/base/single/input/radio/radio.js @@ -19,7 +19,6 @@ BI.Radio = BI.inherit(BI.BasicButton, { var self = this, o = this.options; return { type: "bi.center_adapt", - element: this.element, items: [{ type: "bi.layout", cls: "radio-content", diff --git a/src/base/single/label/abstract.label.js b/src/base/single/label/abstract.label.js index 8bbfbee15..76fb27fbd 100644 --- a/src/base/single/label/abstract.label.js +++ b/src/base/single/label/abstract.label.js @@ -106,6 +106,7 @@ "line-height": o.height / BI.pixRatio + BI.pixUnit }); json.textAlign = o.textAlign; + delete json.maxWidth; this.text = BI.createWidget(BI.extend(json, { element: this, hgap: o.hgap, @@ -175,6 +176,7 @@ "line-height": o.height / BI.pixRatio + BI.pixUnit }); json.textAlign = o.textAlign; + delete json.maxWidth; this.text = BI.createWidget(BI.extend(json, { element: this, hgap: o.hgap, @@ -251,6 +253,7 @@ "line-height": (o.height - (o.vgap * 2)) / BI.pixRatio + BI.pixUnit }); } + delete json.maxWidth; this.text = BI.createWidget(BI.extend(json, { element: this, hgap: o.hgap, @@ -309,6 +312,7 @@ "line-height": (o.height - (o.vgap * 2)) / BI.pixRatio + BI.pixUnit }); } + delete json.maxWidth; this.text = BI.createWidget(BI.extend(json, { // 2.6 element: this, hgap: o.hgap, diff --git a/src/base/single/label/icon.label.js b/src/base/single/label/icon.label.js index 6575564b1..b5779c3e5 100644 --- a/src/base/single/label/icon.label.js +++ b/src/base/single/label/icon.label.js @@ -7,6 +7,12 @@ BI.IconLabel = BI.inherit(BI.Single, { props: { baseCls: "bi-icon-label horizon-center", + hgap: 0, + vgap: 0, + tgap: 0, + bgap: 0, + lgap: 0, + rgap: 0, iconWidth: null, iconHeight: null, lineHeight: null, @@ -27,6 +33,12 @@ BI.IconLabel = BI.inherit(BI.Single, { BI.createWidget({ type: "bi.default", element: this, + hgap: o.hgap, + vgap: o.vgap, + lgap: o.lgap, + rgap: o.rgap, + tgap: o.tgap, + bgap: o.bgap, items: [this.icon] }); } else { @@ -34,6 +46,12 @@ BI.IconLabel = BI.inherit(BI.Single, { BI.createWidget({ element: this, type: "bi.center_adapt", + hgap: o.hgap, + vgap: o.vgap, + lgap: o.lgap, + rgap: o.rgap, + tgap: o.tgap, + bgap: o.bgap, items: [this.icon] }); } diff --git a/src/base/single/text.pure.js b/src/base/single/text.pure.js index eb7f6e323..7c4d93c0c 100644 --- a/src/base/single/text.pure.js +++ b/src/base/single/text.pure.js @@ -10,7 +10,9 @@ render: function () { var self = this, o = this.options; - var text = this._getShowText(); + var text = BI.isFunction(o.text) ? this.__watch(o.text, function (context, newValue) { + self.setText(newValue); + }) : o.text; if (BI.isKey(text)) { this.setText(text); } else if (BI.isKey(o.value)) { diff --git a/src/base/single/tip/tip.toast.js b/src/base/single/tip/tip.toast.js index afd444fd1..ffbf2b336 100644 --- a/src/base/single/tip/tip.toast.js +++ b/src/base/single/tip/tip.toast.js @@ -7,22 +7,28 @@ */ BI.Toast = BI.inherit(BI.Tip, { _const: { - minWidth: 200, - hgap: 10 + closableMinWidth: 146, + minWidth: 124, + closableMaxWidth: 410, + maxWidth: 400, + hgap: 8 }, _defaultConfig: function () { return BI.extend(BI.Toast.superclass._defaultConfig.apply(this, arguments), { extraCls: "bi-toast", text: "", - level: "success" // success或warning + level: "success", // success或warning + autoClose: true, + closable: null }); }, render: function () { - var self = this, o = this.options; + var self = this, o = this.options, c = this._const; this.element.css({ - minWidth: this._const.minWidth / BI.pixRatio + BI.pixUnit + minWidth: (o.closable ? c.closableMinWidth : c.minWidth) / BI.pixRatio + BI.pixUnit, + maxWidth: (o.closable ? c.closableMaxWidth : c.maxWidth) / BI.pixRatio + BI.pixUnit }); this.element.addClass("toast-" + o.level); var fn = function (e) { @@ -56,24 +62,27 @@ BI.Toast = BI.inherit(BI.Tip, { break; } + var hasCloseIcon = function () { + return o.closable === true || (o.closable === null && o.autoClose === false); + }; var items = [{ type: "bi.icon_label", cls: cls + " toast-icon", width: 36 }, { - el: { + el: BI.isPlainObject(o.text) ? o.text : { type: "bi.label", whiteSpace: "normal", text: o.text, textHeight: 16, textAlign: "left" }, - rgap: o.autoClose ? this._const.hgap : 0 + rgap: hasCloseIcon() ? 0 : this._const.hgap }]; var columnSize = [36, "fill"]; - if (o.autoClose === false) { + if (hasCloseIcon()) { items.push({ type: "bi.icon_button", cls: "close-font toast-icon", @@ -90,7 +99,7 @@ BI.Toast = BI.inherit(BI.Tip, { horizontalAlign: BI.HorizontalAlign.Stretch, element: this, items: items, - vgap: 7, + vgap: 12, columnSize: columnSize }); }, diff --git a/src/case/button/item.multiselect.js b/src/case/button/item.multiselect.js index 965363418..f72ea6e12 100644 --- a/src/case/button/item.multiselect.js +++ b/src/case/button/item.multiselect.js @@ -7,54 +7,66 @@ BI.MultiSelectItem = BI.inherit(BI.BasicButton, { _defaultConfig: function () { return BI.extend(BI.MultiSelectItem.superclass._defaultConfig.apply(this, arguments), { extraCls: "bi-multi-select-item", - height: 24, + attributes: { + tabIndex: 1 + }, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, logic: { dynamic: false }, iconWrapperWidth: 26, - textHgap: 0, - textLgap: 0, - textRgap: 0 }); }, - _init: function () { - BI.MultiSelectItem.superclass._init.apply(this, arguments); + + render: function () { var self = this, o = this.options; this.checkbox = BI.createWidget({ type: "bi.checkbox" }); - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - whiteSpace: "nowrap", - textHeight: o.height, - height: o.height, - hgap: o.hgap, - rgap: o.rgap, - lgap: o.textLgap, - text: o.text, - keyword: o.keyword, - value: o.value, - py: o.py - }); this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) { if (type === BI.Events.CLICK) { self.setSelected(self.isSelected()); } }); - - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", { + return { + type: "bi.vertical_adapt", + columnSize: [o.iconWrapperWidth || o.height, "fill"], + items: [{ type: "bi.center_adapt", - items: [this.checkbox], - width: o.iconWrapperWidth - }, this.text) - })))); + items: [this.checkbox] + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + whiteSpace: "nowrap", + textHeight: o.height, + height: o.height, + hgap: o.textHgap, + rgap: o.textRgap, + lgap: o.textLgap, + vgap: o.textVgap, + text: o.text, + keyword: o.keyword, + value: o.value, + py: o.py + } + }] + }; }, + // _setEnable: function (enable) { + // BI.MultiSelectItem.superclass._setEnable.apply(this, arguments); + // if (enable === true) { + // this.element.attr("tabIndex", 1); + // } else if (enable === false) { + // this.element.removeAttr("tabIndex"); + // } + // }, + doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, diff --git a/src/case/button/item.singleselect.icontext.js b/src/case/button/item.singleselect.icontext.js index 1a70d4c01..47960e9fa 100644 --- a/src/case/button/item.singleselect.icontext.js +++ b/src/case/button/item.singleselect.icontext.js @@ -8,12 +8,15 @@ BI.SingleSelectIconTextItem = BI.inherit(BI.Single, { _defaultConfig: function () { return BI.extend(BI.SingleSelectIconTextItem.superclass._defaultConfig.apply(this, arguments), { extraCls: "bi-single-select-icon-text-item bi-list-item-active", + attributes: { + tabIndex: 1 + }, iconCls: "", - height: 24 + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT }); }, - _init: function () { - BI.SingleSelectIconTextItem.superclass._init.apply(this, arguments); + + render: function () { var self = this, o = this.options; this.text = BI.createWidget({ type: "bi.icon_text_item", @@ -25,6 +28,10 @@ BI.SingleSelectIconTextItem = BI.inherit(BI.Single, { height: o.height, iconHeight: o.iconHeight, iconWidth: o.iconWidth, + textHgap: o.textHgap, + textVgap: o.textVgap, + textLgap: o.textLgap, + textRgap: o.textRgap, text: o.text, keyword: o.keyword, value: o.value, @@ -35,6 +42,15 @@ BI.SingleSelectIconTextItem = BI.inherit(BI.Single, { }); }, + _setEnable: function (enable) { + BI.SingleSelectIconTextItem.superclass._setEnable.apply(this, arguments); + if (enable === true) { + this.element.attr("tabIndex", 1); + } else if (enable === false) { + this.element.removeAttr("tabIndex"); + } + }, + isSelected: function () { return this.text.isSelected(); }, @@ -49,11 +65,7 @@ BI.SingleSelectIconTextItem = BI.inherit(BI.Single, { unRedMark: function () { this.text.unRedMark.apply(this.text, arguments); - }, - - doClick: function () { - BI.SingleSelectIconTextItem.superclass.doClick.apply(this, arguments); } }); -BI.shortcut("bi.single_select_icon_text_item", BI.SingleSelectIconTextItem); \ No newline at end of file +BI.shortcut("bi.single_select_icon_text_item", BI.SingleSelectIconTextItem); diff --git a/src/case/button/item.singleselect.js b/src/case/button/item.singleselect.js index 910b579cd..50a1cf6db 100644 --- a/src/case/button/item.singleselect.js +++ b/src/case/button/item.singleselect.js @@ -2,13 +2,16 @@ BI.SingleSelectItem = BI.inherit(BI.BasicButton, { _defaultConfig: function () { return BI.extend(BI.SingleSelectItem.superclass._defaultConfig.apply(this, arguments), { extraCls: "bi-single-select-item bi-list-item-active", - hgap: 10, - height: 24, + attributes: { + tabIndex: 1 + }, + textHgap: 10, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, textAlign: "left" }); }, - _init: function () { - BI.SingleSelectItem.superclass._init.apply(this, arguments); + + render: function () { var self = this, o = this.options; this.text = BI.createWidget({ type: "bi.label", @@ -17,16 +20,26 @@ BI.SingleSelectItem = BI.inherit(BI.BasicButton, { whiteSpace: "nowrap", textHeight: o.height, height: o.height, - hgap: o.hgap, + hgap: o.hgap || o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, text: o.text, keyword: o.keyword, value: o.value, - title: o.title || o.text, - warningTitle: o.warningTitle, py: o.py }); }, + _setEnable: function (enable) { + BI.SingleSelectItem.superclass._setEnable.apply(this, arguments); + if (enable === true) { + this.element.attr("tabIndex", 1); + } else if (enable === false) { + this.element.removeAttr("tabIndex"); + } + }, + doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, @@ -48,4 +61,4 @@ BI.SingleSelectItem = BI.inherit(BI.BasicButton, { }); BI.SingleSelectItem.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.single_select_item", BI.SingleSelectItem); \ No newline at end of file +BI.shortcut("bi.single_select_item", BI.SingleSelectItem); diff --git a/src/case/button/item.singleselect.radio.js b/src/case/button/item.singleselect.radio.js index 0c6a55d3e..882f912e9 100644 --- a/src/case/button/item.singleselect.radio.js +++ b/src/case/button/item.singleselect.radio.js @@ -7,48 +7,62 @@ BI.SingleSelectRadioItem = BI.inherit(BI.BasicButton, { _defaultConfig: function () { return BI.extend(BI.SingleSelectRadioItem.superclass._defaultConfig.apply(this, arguments), { extraCls: "bi-single-select-radio-item", + attributes: { + tabIndex: 1 + }, logic: { dynamic: false }, - height: 24, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: 16, - hgap: 10, - textHgap: 0, - textLgap: 0, - textRgap: 0 + textHgap: 10, }); }, - _init: function () { - BI.SingleSelectRadioItem.superclass._init.apply(this, arguments); - var self = this, o = this.options; - this.radio = BI.createWidget({ - type: "bi.radio" - }); - this.text = BI.createWidget({ - type: "bi.label", - cls: "list-item-text", - textAlign: "left", - whiteSpace: "nowrap", - textHeight: o.height, - height: o.height, - hgap: o.hgap, - rgap: o.textRgap, - lgap: o.textLgap, - text: o.text, - keyword: o.keyword, - value: o.value, - py: o.py - }); - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic("horizontal", BI.extend(o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("left", { + render: function () { + var self = this, o = this.options; + return { + type: "bi.vertical_adapt", + columnSize: [o.iconWrapperWidth || o.height, "fill"], + items: [{ type: "bi.center_adapt", - items: [this.radio], - width: o.iconWrapperWidth - }, this.text) - })))); + items: [{ + type: "bi.radio", + ref: function (_ref) { + self.radio = _ref; + }, + }] + }, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + cls: "list-item-text", + textAlign: "left", + whiteSpace: "nowrap", + textHeight: o.height, + height: o.height, + hgap: o.hgap || o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + keyword: o.keyword, + value: o.value, + py: o.py + } + }] + }; + }, + + _setEnable: function (enable) { + BI.SingleSelectRadioItem.superclass._setEnable.apply(this, arguments); + if (enable === true) { + this.element.attr("tabIndex", 1); + } else if (enable === false) { + this.element.removeAttr("tabIndex"); + } }, doRedMark: function () { diff --git a/src/case/button/node/node.arrow.js b/src/case/button/node/node.arrow.js index 38fe40ffb..6fc690d7b 100644 --- a/src/case/button/node/node.arrow.js +++ b/src/case/button/node/node.arrow.js @@ -16,43 +16,42 @@ BI.ArrowNode = BI.inherit(BI.NodeButton, { iconWrapperWidth: 16 }); }, - _init: function () { + + render: function () { var self = this, o = this.options; - BI.ArrowNode.superclass._init.apply(this, arguments); this.checkbox = BI.createWidget({ type: "bi.arrow_group_node_checkbox" }); - - this.text = BI.createWidget({ - type: "bi.label", - textAlign: "left", - whiteSpace: "nowrap", - textHeight: o.height, - height: o.height, - hgap: o.hgap, - text: o.text, - value: o.value, - py: o.py, - keyword: o.keyword - }); - this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) { if (type === BI.Events.CLICK) { self.setSelected(self.isSelected()); } self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); }); - - var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); - var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: o.iconWrapperWidth, - el: this.checkbox - }, this.text); - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic(type, BI.extend(o.logic, { - items: items - })))); + return { + type: "bi.vertical_adapt", + columnSize: [o.iconWrapperWidth || o.height, "fill"], + items: [this.checkbox, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + textAlign: "left", + whiteSpace: "nowrap", + textHeight: o.height, + height: o.height, + hgap: o.hgap || o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + py: o.py, + keyword: o.keyword + } + }] + }; }, doRedMark: function () { diff --git a/src/case/button/node/node.first.plus.js b/src/case/button/node/node.first.plus.js index 7969867fb..989cdec0b 100644 --- a/src/case/button/node/node.first.plus.js +++ b/src/case/button/node/node.first.plus.js @@ -23,7 +23,9 @@ BI.FirstPlusGroupNode = BI.inherit(BI.NodeButton, { var self = this, o = this.options; this.checkbox = BI.createWidget({ type: "bi.first_tree_node_checkbox", - stopPropagation: true + stopPropagation: true, + iconHeight: o.height, + iconWidth: o.height }); this.text = BI.createWidget({ type: "bi.label", @@ -48,7 +50,7 @@ BI.FirstPlusGroupNode = BI.inherit(BI.NodeButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: this.checkbox }, this.text); BI.createWidget(BI.extend({ diff --git a/src/case/button/node/node.last.plus.js b/src/case/button/node/node.last.plus.js index acc72d6a3..c1a949e3b 100644 --- a/src/case/button/node/node.last.plus.js +++ b/src/case/button/node/node.last.plus.js @@ -23,7 +23,9 @@ BI.LastPlusGroupNode = BI.inherit(BI.NodeButton, { var self = this, o = this.options; this.checkbox = BI.createWidget({ type: "bi.last_tree_node_checkbox", - stopPropagation: true + stopPropagation: true, + iconHeight: o.height, + iconWidth: o.height }); this.text = BI.createWidget({ type: "bi.label", @@ -48,7 +50,7 @@ BI.LastPlusGroupNode = BI.inherit(BI.NodeButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: this.checkbox }, this.text); BI.createWidget(BI.extend({ diff --git a/src/case/button/node/node.mid.plus.js b/src/case/button/node/node.mid.plus.js index 4615ce7b9..839565114 100644 --- a/src/case/button/node/node.mid.plus.js +++ b/src/case/button/node/node.mid.plus.js @@ -23,7 +23,9 @@ BI.MidPlusGroupNode = BI.inherit(BI.NodeButton, { var self = this, o = this.options; this.checkbox = BI.createWidget({ type: "bi.mid_tree_node_checkbox", - stopPropagation: true + stopPropagation: true, + iconHeight: o.height, + iconWidth: o.height }); this.text = BI.createWidget({ type: "bi.label", @@ -48,7 +50,7 @@ BI.MidPlusGroupNode = BI.inherit(BI.NodeButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: this.checkbox }, this.text); BI.createWidget(BI.extend({ diff --git a/src/case/button/node/node.plus.js b/src/case/button/node/node.plus.js index 16b78b8f1..ec38ca0e0 100644 --- a/src/case/button/node/node.plus.js +++ b/src/case/button/node/node.plus.js @@ -15,26 +15,17 @@ BI.PlusGroupNode = BI.inherit(BI.NodeButton, { id: "", pId: "", open: false, + iconWrapperWidth: null, height: 24 }); }, - _init: function () { - BI.PlusGroupNode.superclass._init.apply(this, arguments); + + render: function () { var self = this, o = this.options; this.checkbox = BI.createWidget({ - type: "bi.tree_node_checkbox" - }); - this.text = BI.createWidget({ - type: "bi.label", - textAlign: "left", - whiteSpace: "nowrap", - textHeight: o.height, - height: o.height, - hgap: o.hgap, - text: o.text, - value: o.value, - keyword: o.keyword, - py: o.py + type: "bi.tree_node_checkbox", + iconHeight: o.height, + iconWidth: o.iconWrapperWidth || o.height }); this.checkbox.on(BI.Controller.EVENT_CHANGE, function (type) { if (type === BI.Events.CLICK) { @@ -42,16 +33,30 @@ BI.PlusGroupNode = BI.inherit(BI.NodeButton, { } self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); }); - var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); - var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, - el: this.checkbox - }, this.text); - BI.createWidget(BI.extend({ - element: this - }, BI.LogicFactory.createLogic(type, BI.extend(o.logic, { - items: items - })))); + return { + type: "bi.vertical_adapt", + columnSize: [o.iconWrapperWidth || o.height, "fill"], + items: [this.checkbox, { + el: { + type: "bi.label", + ref: function (_ref) { + self.text = _ref; + }, + textAlign: "left", + whiteSpace: "nowrap", + textHeight: o.height, + height: o.height, + hgap: o.hgap || o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + text: o.text, + value: o.value, + keyword: o.keyword, + py: o.py + } + }] + }; }, doRedMark: function () { @@ -75,4 +80,4 @@ BI.PlusGroupNode = BI.inherit(BI.NodeButton, { } }); -BI.shortcut("bi.plus_group_node", BI.PlusGroupNode); \ No newline at end of file +BI.shortcut("bi.plus_group_node", BI.PlusGroupNode); diff --git a/src/case/button/switch.js b/src/case/button/switch.js index 5ae460960..e88360266 100644 --- a/src/case/button/switch.js +++ b/src/case/button/switch.js @@ -3,17 +3,26 @@ */ BI.Switch = BI.inherit(BI.BasicButton, { + constants: { + CIRCLE_SIZE: 12 + }, + props: { extraCls: "bi-switch", - height: 22, + attributes: { + tabIndex: 1 + }, + height: 20, width: 44, logic: { dynamic: false - } + }, + showTip: false }, render: function () { - var self = this; + var self = this, o = this.options, c = this.constants; + var tgap = (o.height - c.CIRCLE_SIZE) / 2; return { type: "bi.absolute", ref: function () { @@ -22,20 +31,51 @@ BI.Switch = BI.inherit(BI.BasicButton, { items: [{ el: { type: "bi.text_button", - cls: "circle-button bi-card" + cls: "circle-button" }, - width: 18, - height: 18, - top: 2, - left: this.options.selected ? 24 : 2 + width: 12, + height: 12, + top: tgap, + left: this.options.selected ? 28 : 4 + }, { + type: "bi.label", + text: BI.i18nText("BI-Basic_Open"), + cls: "content-tip", + left: 8, + top: tgap - 2, + invisible: !o.showTip, + ref: function (ref) { + self.openTip = ref; + } + }, { + type: "bi.label", + text: BI.i18nText("BI-Basic_Close"), + cls: "content-tip", + right: 8, + top: tgap - 2, + invisible: !o.showTip, + ref: function (ref) { + self.closeTip = ref; + } }] }; }, + _setEnable: function (enable) { + BI.Switch.superclass._setEnable.apply(this, arguments); + if (enable === true) { + this.element.attr("tabIndex", 1); + } else if (enable === false) { + this.element.removeAttr("tabIndex"); + } + }, + setSelected: function (v) { BI.Switch.superclass.setSelected.apply(this, arguments); - this.layout.attr("items")[0].left = v ? 24 : 2; + this.layout.attr("items")[0].left = v ? 28 : 4; this.layout.resize(); + this.options.showTip && this.openTip.setVisible(v); + this.options.showTip && this.closeTip.setVisible(!v); }, doClick: function () { @@ -44,4 +84,4 @@ BI.Switch = BI.inherit(BI.BasicButton, { } }); BI.Switch.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.switch", BI.Switch); \ No newline at end of file +BI.shortcut("bi.switch", BI.Switch); diff --git a/src/case/button/treeitem/item.first.treeleaf.js b/src/case/button/treeitem/item.first.treeleaf.js index afaa2f6fc..52663de39 100644 --- a/src/case/button/treeitem/item.first.treeleaf.js +++ b/src/case/button/treeitem/item.first.treeleaf.js @@ -28,19 +28,19 @@ BI.FirstTreeLeafItem = BI.inherit(BI.BasicButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : { - width: 12, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, el: { type: "bi.layout", - cls: (o.pNode && o.pNode.isLastNode) ? "" : "base-line-conn-background", - width: 12, + cls: (o.pNode && o.pNode.isLastNode) ? "" : this._getBaseLineCls(), + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, height: o.height } }), { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: { type: "bi.layout", - cls: "first-line-conn-background", - width: 24, + cls: this._getFirstLineCls(), + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: o.height } }, { @@ -53,6 +53,24 @@ BI.FirstTreeLeafItem = BI.inherit(BI.BasicButton, { })))); }, + _getBaseLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "base-solid-line-conn-background"; + default: + return "base-line-conn-background"; + } + }, + + _getFirstLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "first-solid-line-conn-background"; + default: + return "first-line-conn-background"; + } + }, + doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, diff --git a/src/case/button/treeitem/item.last.treeleaf.js b/src/case/button/treeitem/item.last.treeleaf.js index 8b30892a3..76449063e 100644 --- a/src/case/button/treeitem/item.last.treeleaf.js +++ b/src/case/button/treeitem/item.last.treeleaf.js @@ -28,19 +28,19 @@ BI.LastTreeLeafItem = BI.inherit(BI.BasicButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : { - width: 12, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, el: { type: "bi.layout", - cls: (o.pNode && o.pNode.isLastNode) ? "" : "base-line-conn-background", - width: 12, + cls: (o.pNode && o.pNode.isLastNode) ? "" : this._getBaseLineCls(), + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, height: o.height } }), { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: { type: "bi.layout", - cls: "last-line-conn-background", - width: 24, + cls: this._getLastLineCls(), + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: o.height } }, { @@ -53,6 +53,24 @@ BI.LastTreeLeafItem = BI.inherit(BI.BasicButton, { })))); }, + _getBaseLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "base-solid-line-conn-background"; + default: + return "base-line-conn-background"; + } + }, + + _getLastLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "last-solid-line-conn-background"; + default: + return "last-line-conn-background"; + } + }, + doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, diff --git a/src/case/button/treeitem/item.mid.treeleaf.js b/src/case/button/treeitem/item.mid.treeleaf.js index a3a7a6c93..58af36e4e 100644 --- a/src/case/button/treeitem/item.mid.treeleaf.js +++ b/src/case/button/treeitem/item.mid.treeleaf.js @@ -28,19 +28,19 @@ BI.MidTreeLeafItem = BI.inherit(BI.BasicButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, ((o.layer === 0) ? "" : { - width: 12, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, el: { type: "bi.layout", - cls: (o.pNode && o.pNode.isLastNode) ? "" : "base-line-conn-background", - width: 12, + cls: (o.pNode && o.pNode.isLastNode) ? "" : this._getBaseLineCls(), + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2, height: o.height } }), { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: { type: "bi.layout", - cls: "mid-line-conn-background", - width: 24, + cls: this._getMidLineCls(), + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: o.height } }, { @@ -53,6 +53,24 @@ BI.MidTreeLeafItem = BI.inherit(BI.BasicButton, { })))); }, + _getBaseLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "base-solid-line-conn-background"; + default: + return "base-line-conn-background"; + } + }, + + _getMidLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "mid-solid-line-conn-background"; + default: + return "mid-line-conn-background"; + } + }, + doRedMark: function () { this.text.doRedMark.apply(this.text, arguments); }, diff --git a/src/case/button/treeitem/item.root.treeleaf.js b/src/case/button/treeitem/item.root.treeleaf.js index 8e1a9a02f..f4637afdc 100644 --- a/src/case/button/treeitem/item.root.treeleaf.js +++ b/src/case/button/treeitem/item.root.treeleaf.js @@ -31,10 +31,10 @@ BI.RootTreeLeafItem = BI.inherit(BI.BasicButton, { var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: { type: "bi.layout", - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, height: o.height } }, { diff --git a/src/case/calendar/calendar.date.item.js b/src/case/calendar/calendar.date.item.js index b8ee105c6..d575b9557 100644 --- a/src/case/calendar/calendar.date.item.js +++ b/src/case/calendar/calendar.date.item.js @@ -2,6 +2,11 @@ * 专门为calendar的视觉加的button,作为私有button,不能配置任何属性,也不要用这个玩意 */ BI.CalendarDateItem = BI.inherit(BI.BasicButton, { + props: function() { + return { + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 8, + } + }, render: function () { var self = this, o = this.options; @@ -10,7 +15,7 @@ BI.CalendarDateItem = BI.inherit(BI.BasicButton, { items: [{ el: { type: "bi.text_item", - cls: "bi-list-item-select", + cls: "bi-border-radius bi-list-item-select", textAlign: "center", whiteSpace: "normal", text: o.text, @@ -21,8 +26,8 @@ BI.CalendarDateItem = BI.inherit(BI.BasicButton, { }, left: o.lgap, right: o.rgap, - top: 0, - bottom: 0 + top: o.tgap, + bottom: o.bgap }] }; }, @@ -50,4 +55,4 @@ BI.CalendarDateItem = BI.inherit(BI.BasicButton, { return this.text.getValue(); } }); -BI.shortcut("bi.calendar_date_item", BI.CalendarDateItem); \ No newline at end of file +BI.shortcut("bi.calendar_date_item", BI.CalendarDateItem); diff --git a/src/case/calendar/calendar.js b/src/case/calendar/calendar.js index fb762da7e..f5a99e37d 100644 --- a/src/case/calendar/calendar.js +++ b/src/case/calendar/calendar.js @@ -96,12 +96,12 @@ BI.Calendar = BI.inherit(BI.Widget, { this.days = BI.createWidget({ type: "bi.button_group", items: BI.createItems(this._getItems(), {}), + value: o.year + "-" + o.month + "-" + o.day, layouts: [BI.LogicFactory.createLogic("table", BI.extend({}, o.logic, { columns: 7, rows: 6, columnSize: [1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7, 1 / 7], - rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - vgap: 10 + rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 8 }))] }); this.days.on(BI.Controller.EVENT_CHANGE, function () { @@ -111,7 +111,10 @@ BI.Calendar = BI.inherit(BI.Widget, { element: this }, BI.LogicFactory.createLogic("vertical", BI.extend({}, o.logic, { - items: BI.LogicFactory.createLogicItemsByDirection("top", title, this.days) + items: BI.LogicFactory.createLogicItemsByDirection("top", title, { + el: this.days, + tgap: -5 + }) })))); }, @@ -159,11 +162,12 @@ BI.Calendar = BI.inherit(BI.Widget, { whiteSpace: "normal", once: false, forceSelected: true, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, value: o.year + "-" + month + "-" + td.text, disabled: td.lastMonth || td.nextMonth || td.disabled, - lgap: 5, - rgap: 5 + lgap: 2, + rgap: 2, + tgap: 4, + bgap: 4 // selected: td.currentDay }); }); @@ -231,4 +235,4 @@ BI.extend(BI.Calendar, { } }); -BI.shortcut("bi.calendar", BI.Calendar); \ No newline at end of file +BI.shortcut("bi.calendar", BI.Calendar); diff --git a/src/case/calendar/calendar.year.js b/src/case/calendar/calendar.year.js index 7de781159..95fcaccdb 100644 --- a/src/case/calendar/calendar.year.js +++ b/src/case/calendar/calendar.year.js @@ -54,7 +54,7 @@ BI.YearCalendar = BI.inherit(BI.Widget, { rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, })), { type: "bi.center_adapt", - vgap: 1 + vgap: 2 }] }); this.years.on(BI.Controller.EVENT_CHANGE, function () { @@ -62,8 +62,10 @@ BI.YearCalendar = BI.inherit(BI.Widget, { }); BI.createWidget(BI.extend({ element: this - }, BI.LogicFactory.createLogic("vertical", BI.extend({}, o.logic, { + scrolly: true, + vgap: 5, + hgap: 6, items: BI.LogicFactory.createLogicItemsByDirection("top", this.years) })))); }, @@ -105,7 +107,7 @@ BI.YearCalendar = BI.inherit(BI.Widget, { return BI.map(item, function (j, td) { return BI.extend(td, { type: "bi.text_item", - cls: "bi-list-item-select", + cls: "bi-list-item-select bi-border-radius", textAlign: "center", whiteSpace: "normal", once: false, @@ -168,4 +170,4 @@ BI.extend(BI.YearCalendar, { } }); -BI.shortcut("bi.year_calendar", BI.YearCalendar); \ No newline at end of file +BI.shortcut("bi.year_calendar", BI.YearCalendar); diff --git a/src/case/checkbox/check.arrownode.js b/src/case/checkbox/check.arrownode.js index ebcb784d7..26447aca6 100644 --- a/src/case/checkbox/check.arrownode.js +++ b/src/case/checkbox/check.arrownode.js @@ -5,7 +5,7 @@ BI.ArrowTreeGroupNodeCheckbox = BI.inherit(BI.IconButton, { _defaultConfig: function () { return BI.extend(BI.ArrowTreeGroupNodeCheckbox.superclass._defaultConfig.apply(this, arguments), { - extraCls: "bi-arrow-group-node-checkbox" + extraCls: "bi-arrow-group-node-checkbox expander-right-font" }); }, @@ -18,4 +18,4 @@ BI.ArrowTreeGroupNodeCheckbox = BI.inherit(BI.IconButton, { } } }); -BI.shortcut("bi.arrow_group_node_checkbox", BI.ArrowTreeGroupNodeCheckbox); \ No newline at end of file +BI.shortcut("bi.arrow_group_node_checkbox", BI.ArrowTreeGroupNodeCheckbox); diff --git a/src/case/checkbox/check.checkingmarknode.js b/src/case/checkbox/check.checkingmarknode.js index d801828ed..b3996691e 100644 --- a/src/case/checkbox/check.checkingmarknode.js +++ b/src/case/checkbox/check.checkingmarknode.js @@ -6,14 +6,9 @@ BI.CheckingMarkNode = BI.inherit(BI.IconButton, { _defaultConfig: function () { return BI.extend( BI.CheckingMarkNode.superclass._defaultConfig.apply(this, arguments), { - extraCls: "check-mark-font" }); }, - _init: function () { - BI.CheckingMarkNode.superclass._init.apply(this, arguments); - this.setSelected(this.options.selected); - }, setSelected: function (v) { BI.CheckingMarkNode.superclass.setSelected.apply(this, arguments); if(v === true) { @@ -23,4 +18,4 @@ BI.CheckingMarkNode = BI.inherit(BI.IconButton, { } } }); -BI.shortcut("bi.checking_mark_node", BI.CheckingMarkNode); \ No newline at end of file +BI.shortcut("bi.checking_mark_node", BI.CheckingMarkNode); diff --git a/src/case/checkbox/check.first.treenode.js b/src/case/checkbox/check.first.treenode.js index 572908d8d..aa808488f 100644 --- a/src/case/checkbox/check.first.treenode.js +++ b/src/case/checkbox/check.first.treenode.js @@ -6,18 +6,27 @@ BI.FirstTreeNodeCheckbox = BI.inherit(BI.IconButton, { _defaultConfig: function () { return BI.extend( BI.FirstTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), { - extraCls: "tree-collapse-icon-type2", + extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type2" : "tree-collapse-icon-type2", iconWidth: 24, iconHeight: 24 }); }, + getLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type2"; + default: + return "tree-expand-icon-type2"; + } + }, + setSelected: function (v) { BI.FirstTreeNodeCheckbox.superclass.setSelected.apply(this, arguments); if(v === true) { - this.element.addClass("tree-expand-icon-type2"); + this.element.addClass(this.getLineCls()); } else { - this.element.removeClass("tree-expand-icon-type2"); + this.element.removeClass(this.getLineCls()); } } }); diff --git a/src/case/checkbox/check.last.treenode.js b/src/case/checkbox/check.last.treenode.js index e0a9f621d..cb536f8cc 100644 --- a/src/case/checkbox/check.last.treenode.js +++ b/src/case/checkbox/check.last.treenode.js @@ -6,18 +6,27 @@ BI.LastTreeNodeCheckbox = BI.inherit(BI.IconButton, { _defaultConfig: function () { return BI.extend(BI.LastTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), { - extraCls: "tree-collapse-icon-type4", + extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type4" : "tree-collapse-icon-type4", iconWidth: 24, iconHeight: 24 }); }, + getLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type4"; + default: + return "tree-expand-icon-type4"; + } + }, + setSelected: function (v) { BI.LastTreeNodeCheckbox.superclass.setSelected.apply(this, arguments); if (v === true) { - this.element.addClass("tree-expand-icon-type4"); + this.element.addClass(this.getLineCls()); } else { - this.element.removeClass("tree-expand-icon-type4"); + this.element.removeClass(this.getLineCls()); } } }); diff --git a/src/case/checkbox/check.mid.treenode.js b/src/case/checkbox/check.mid.treenode.js index 7679b466e..7ec4e5230 100644 --- a/src/case/checkbox/check.mid.treenode.js +++ b/src/case/checkbox/check.mid.treenode.js @@ -6,18 +6,27 @@ BI.MidTreeNodeCheckbox = BI.inherit(BI.IconButton, { _defaultConfig: function () { return BI.extend( BI.MidTreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), { - extraCls: "tree-collapse-icon-type3", + extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type3" : "tree-collapse-icon-type3", iconWidth: 24, iconHeight: 24 }); }, + getLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type3"; + default: + return "tree-expand-icon-type3"; + } + }, + setSelected: function (v) { BI.MidTreeNodeCheckbox.superclass.setSelected.apply(this, arguments); if(v === true) { - this.element.addClass("tree-expand-icon-type3"); + this.element.addClass(this.getLineCls()); } else { - this.element.removeClass("tree-expand-icon-type3"); + this.element.removeClass(this.getLineCls()); } } }); diff --git a/src/case/checkbox/check.treenode.js b/src/case/checkbox/check.treenode.js index b5642aae4..128bb73c6 100644 --- a/src/case/checkbox/check.treenode.js +++ b/src/case/checkbox/check.treenode.js @@ -6,18 +6,27 @@ BI.TreeNodeCheckbox = BI.inherit(BI.IconButton, { _defaultConfig: function () { return BI.extend( BI.TreeNodeCheckbox.superclass._defaultConfig.apply(this, arguments), { - extraCls: "tree-collapse-icon-type1", + extraCls: BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "tree-solid-collapse-icon-type1" : "tree-collapse-icon-type1", iconWidth: 24, iconHeight: 24 }); }, + getLineCls: function () { + switch (BI.STYLE_CONSTANTS.LINK_LINE_TYPE) { + case "solid": + return "tree-solid-expand-icon-type1"; + default: + return "tree-expand-icon-type1"; + } + }, + setSelected: function (v) { BI.TreeNodeCheckbox.superclass.setSelected.apply(this, arguments); if(v) { - this.element.addClass("tree-expand-icon-type1"); + this.element.addClass(this.getLineCls()); } else { - this.element.removeClass("tree-expand-icon-type1"); + this.element.removeClass(this.getLineCls()); } } }); diff --git a/src/case/colorchooser/colorchooser.custom.js b/src/case/colorchooser/colorchooser.custom.js index 49091a10a..c34d92500 100644 --- a/src/case/colorchooser/colorchooser.custom.js +++ b/src/case/colorchooser/colorchooser.custom.js @@ -19,13 +19,15 @@ BI.CustomColorChooser = BI.inherit(BI.Widget, { BI.CustomColorChooser.superclass._init.apply(this, arguments); var self = this, o = this.options; this.editor = BI.createWidget(o.editor, { - type: "bi.simple_hex_color_picker_editor" + type: "bi.simple_hex_color_picker_editor", + value: o.value }); this.editor.on(BI.ColorPickerEditor.EVENT_CHANGE, function () { self.setValue(this.getValue()); }); this.farbtastic = BI.createWidget({ - type: "bi.farbtastic" + type: "bi.farbtastic", + value: o.value }); this.farbtastic.on(BI.Farbtastic.EVENT_CHANGE, function () { self.setValue(this.getValue()); @@ -66,4 +68,4 @@ BI.CustomColorChooser = BI.inherit(BI.Widget, { } }); BI.CustomColorChooser.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.custom_color_chooser", BI.CustomColorChooser); \ No newline at end of file +BI.shortcut("bi.custom_color_chooser", BI.CustomColorChooser); diff --git a/src/case/colorchooser/colorchooser.js b/src/case/colorchooser/colorchooser.js index 698afa714..737b3a189 100644 --- a/src/case/colorchooser/colorchooser.js +++ b/src/case/colorchooser/colorchooser.js @@ -33,6 +33,7 @@ BI.ColorChooser = BI.inherit(BI.Widget, { ref: function (_ref) { self.trigger = _ref; }, + value: o.value, width: o.el.type ? o.width : o.width - 2, height: o.el.type ? o.height : o.height - 2 }, o.el), diff --git a/src/case/colorchooser/colorchooser.popup.hex.js b/src/case/colorchooser/colorchooser.popup.hex.js index 347dd0401..b8c98cb36 100644 --- a/src/case/colorchooser/colorchooser.popup.hex.js +++ b/src/case/colorchooser/colorchooser.popup.hex.js @@ -16,32 +16,59 @@ BI.HexColorChooserPopup = BI.inherit(BI.Widget, { var self = this, o = this.options; var hasRecommendColors = BI.isNotNull(o.recommendColorsGetter()); return [{ - el: { - type: 'bi.vertical', - items: [{ - el: { - type: "bi.vertical", - hgap: 15, - items: [BI.extend({ - type: o.simple ? "bi.simple_hex_color_picker_editor" : "bi.hex_color_picker_editor", + type: "bi.vertical", + items: [{ + el: { + type: "bi.vertical", + hgap: 15, + items: [BI.extend({ + type: o.simple ? "bi.simple_hex_color_picker_editor" : "bi.hex_color_picker_editor", + value: o.value, + height: o.simple ? 36 : 70, + listeners: [{ + eventName: BI.ColorPickerEditor.EVENT_CHANGE, + action: function () { + self.setValue(this.getValue()); + self._dealStoreColors(); + self.fireEvent(BI.ColorChooserPopup.EVENT_VALUE_CHANGE, arguments); + } + }], + ref: function (_ref) { + self.colorEditor = _ref; + } + }, o.editor), { + el: { + type: "bi.hex_color_picker", + cls: "bi-border-bottom bi-border-right", + items: [this._digestStoreColors(this._getStoreColors())], + height: 22, value: o.value, - height: o.simple ? 36 : 70, listeners: [{ - eventName: BI.ColorPickerEditor.EVENT_CHANGE, + eventName: BI.ColorPicker.EVENT_CHANGE, action: function () { - self.setValue(this.getValue()); + self.setValue(this.getValue()[0]); self._dealStoreColors(); - self.fireEvent(BI.ColorChooserPopup.EVENT_VALUE_CHANGE, arguments); + self.fireEvent(BI.ColorChooserPopup.EVENT_CHANGE, arguments); } }], ref: function (_ref) { - self.colorEditor = _ref; + self.storeColors = _ref; } - }, o.editor), { - el: { + }, + tgap: 10, + height: 22 + }, { + el: hasRecommendColors ? { + type: "bi.vertical", + items: [{ + type: "bi.label", + text: BI.i18nText("BI-Basic_Recommend_Color"), + textAlign: "left", + height: 24 + }, { type: "bi.hex_color_picker", cls: "bi-border-bottom bi-border-right", - items: [this._digestStoreColors(this._getStoreColors())], + items: [this._digestStoreColors(o.recommendColorsGetter())], height: 22, value: o.value, listeners: [{ @@ -53,144 +80,112 @@ BI.HexColorChooserPopup = BI.inherit(BI.Widget, { } }], ref: function (_ref) { - self.storeColors = _ref; + self.recommendColors = _ref; } - }, - tgap: 10, - height: 22 - }, { - el: hasRecommendColors ? { - type: 'bi.vertical', - items: [{ - type: 'bi.label', - text: BI.i18nText('BI-Basic_Recommend_Color'), - textAlign: 'left', - height: 24, - }, { - type: "bi.hex_color_picker", - cls: "bi-border-bottom bi-border-right", - items: [this._digestStoreColors(o.recommendColorsGetter())], - height: 22, - value: o.value, - listeners: [{ - eventName: BI.ColorPicker.EVENT_CHANGE, - action: function () { - self.setValue(this.getValue()[0]); - self._dealStoreColors(); - self.fireEvent(BI.ColorChooserPopup.EVENT_CHANGE, arguments); - } - }], - ref: function (_ref) { - self.recommendColors = _ref; - } - }] - } : { type: 'bi.layout' }, - tgap: hasRecommendColors ? 10 : 0, - height: hasRecommendColors ? 47 : 0 - }, { - el: { - type: 'bi.layout', - cls: 'bi-border-top', - }, - vgap: 10, - height: 1 - }, { - type: 'bi.absolute', - items: [{ - el: { - type: "bi.hex_color_picker", - space: true, - value: o.value, - listeners: [{ - eventName: BI.ColorPicker.EVENT_CHANGE, - action: function () { - self.setValue(this.getValue()[0]); - self._dealStoreColors(); - self.fireEvent(BI.ColorChooserPopup.EVENT_CHANGE, arguments); - } - }], - ref: function (_ref) { - self.colorPicker = _ref; - }, - }, - top: 0, - left: 0, - right: 0, - bottom: 1, - }], - height: 80, - }] - } - }, { - el: { - type: "bi.combo", - cls: "bi-border-top", - container: null, - direction: "right,top", - isNeedAdjustHeight: false, + }] + } : {type: "bi.layout"}, + tgap: hasRecommendColors ? 10 : 0, + height: hasRecommendColors ? 47 : 0 + }, { el: { - type: "bi.text_item", - cls: "color-chooser-popup-more bi-list-item", - textAlign: "center", - height: 24, - textLgap: 10, - text: BI.i18nText("BI-Basic_More") + "..." + type: "bi.layout", + cls: "bi-border-top" }, - popup: { - type: "bi.popup_panel", - buttons: [BI.i18nText("BI-Basic_Cancel"), BI.i18nText("BI-Basic_Save")], - title: BI.i18nText("BI-Custom_Color"), + vgap: 10, + height: 1 + }, { + type: "bi.absolute", + items: [{ el: { - type: "bi.custom_color_chooser", - editor: o.editor, + type: "bi.hex_color_picker", + space: true, + value: o.value, + listeners: [{ + eventName: BI.ColorPicker.EVENT_CHANGE, + action: function () { + self.setValue(this.getValue()[0]); + self._dealStoreColors(); + self.fireEvent(BI.ColorChooserPopup.EVENT_CHANGE, arguments); + } + }], ref: function (_ref) { - self.customColorChooser = _ref; + self.colorPicker = _ref; } }, - stopPropagation: false, - bgap: -1, - rgap: 1, - lgap: 1, - minWidth: 227, - listeners: [{ - eventName: BI.PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON, - action: function (index) { - switch (index) { - case 0: - self.more.hideView(); - break; - case 1: - var color = self.customColorChooser.getValue(); - // farbtastic选择器没有透明和自动选项,点击保存不应该设置透明 - if (BI.isNotEmptyString(color)) { - self.setValue(color); - self._dealStoreColors(); - } - self.more.hideView(); - self.fireEvent(BI.ColorChooserPopup.EVENT_CHANGE, arguments); - break; - } - } - }] + top: 0, + left: 0, + right: 0, + bottom: 1 + }], + height: 80 + }] + } + }, { + el: { + type: "bi.combo", + cls: "bi-border-top", + container: null, + direction: "right,top", + isNeedAdjustHeight: false, + el: { + type: "bi.text_item", + cls: "color-chooser-popup-more bi-list-item", + textAlign: "center", + height: 24, + textLgap: 10, + text: BI.i18nText("BI-Basic_More") + "..." + }, + popup: { + type: "bi.popup_panel", + buttons: [BI.i18nText("BI-Basic_Cancel"), BI.i18nText("BI-Basic_Save")], + title: BI.i18nText("BI-Custom_Color"), + el: { + type: "bi.custom_color_chooser", + value: o.value, + editor: o.editor, + ref: function (_ref) { + self.customColorChooser = _ref; + } }, + stopPropagation: false, + bgap: -1, + rgap: 1, + lgap: 1, + minWidth: 227, listeners: [{ - eventName: BI.Combo.EVENT_AFTER_POPUPVIEW, - action: function () { - self.customColorChooser.setValue(self.getValue()); + eventName: BI.PopupPanel.EVENT_CLICK_TOOLBAR_BUTTON, + action: function (index) { + switch (index) { + case 0: + self.more.hideView(); + break; + case 1: + var color = self.customColorChooser.getValue(); + // farbtastic选择器没有透明和自动选项,点击保存不应该设置透明 + if (BI.isNotEmptyString(color)) { + self.setValue(color); + self._dealStoreColors(); + } + self.more.hideView(); + self.fireEvent(BI.ColorChooserPopup.EVENT_CHANGE, arguments); + break; + } } - }], - ref: function (_ref) { - self.more = _ref; - } + }] }, - tgap: 10, - height: 24 - }] - }, - left: 0, - right: 0, - top: 0, - bottom: 0 + listeners: [{ + eventName: BI.Combo.EVENT_AFTER_POPUPVIEW, + action: function () { + self.customColorChooser.setValue(self.getValue()); + } + }], + ref: function (_ref) { + self.more = _ref; + } + }, + tgap: 10, + height: 24 + }] }, { type: "bi.absolute", items: [{ @@ -212,7 +207,6 @@ BI.HexColorChooserPopup = BI.inherit(BI.Widget, { // 这里就实现的不好了,setValue里面有个editor,editor的setValue会检测错误然后出bubble提示 mounted: function () { - var self = this; var o = this.options; if (BI.isNotNull(o.value)) { this.setValue(o.value); @@ -251,7 +245,7 @@ BI.HexColorChooserPopup = BI.inherit(BI.Widget, { return items; }, - _getStoreColors: function() { + _getStoreColors: function () { var self = this, o = this.options; var colorsArray = BI.string2Array(BI.Cache.getItem("colors") || ""); return BI.filter(colorsArray, function (idx, color) { diff --git a/src/case/colorchooser/colorchooser.trigger.js b/src/case/colorchooser/colorchooser.trigger.js index 8efe4fb79..9f8e370e7 100644 --- a/src/case/colorchooser/colorchooser.trigger.js +++ b/src/case/colorchooser/colorchooser.trigger.js @@ -7,10 +7,10 @@ */ BI.ColorChooserTrigger = BI.inherit(BI.Trigger, { - _defaultConfig: function () { + _defaultConfig: function (config) { var conf = BI.ColorChooserTrigger.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { - baseCls: (conf.baseCls || "") + " bi-color-chooser-trigger bi-border bi-focus-shadow", + baseCls: (conf.baseCls || "") + " bi-color-chooser-trigger bi-focus-shadow " + (config.simple ? "bi-border-bottom" : "bi-border"), height: 22 }); }, diff --git a/src/case/colorchooser/colorchooser.trigger.long.js b/src/case/colorchooser/colorchooser.trigger.long.js index eb15f7551..e6c518c08 100644 --- a/src/case/colorchooser/colorchooser.trigger.long.js +++ b/src/case/colorchooser/colorchooser.trigger.long.js @@ -7,10 +7,10 @@ */ BI.LongColorChooserTrigger = BI.inherit(BI.Trigger, { - _defaultConfig: function () { + _defaultConfig: function (config) { var conf = BI.LongColorChooserTrigger.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { - baseCls: (conf.baseCls || "") + " bi-color-chooser-trigger bi-border bi-focus-shadow", + baseCls: (conf.baseCls || "") + " bi-color-chooser-trigger bi-focus-shadow " + (config.simple ? "bi-border-bottom" : "bi-border"), height: 24 }); }, diff --git a/src/case/colorchooser/colorpicker/colorpicker.hex.js b/src/case/colorchooser/colorpicker/colorpicker.hex.js index fad7c5b84..993607841 100644 --- a/src/case/colorchooser/colorpicker/colorpicker.hex.js +++ b/src/case/colorchooser/colorpicker/colorpicker.hex.js @@ -110,8 +110,6 @@ BI.HexColorPicker = BI.inherit(BI.Widget, { render: function () { var self = this, o = this.options; - this.colors = BI.createWidget(); - return { type: "bi.button_group", items: this._digest(o.items || this._items), @@ -167,4 +165,4 @@ BI.HexColorPicker = BI.inherit(BI.Widget, { } }); BI.HexColorPicker.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.hex_color_picker", BI.HexColorPicker); \ No newline at end of file +BI.shortcut("bi.hex_color_picker", BI.HexColorPicker); diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js index 6aa07afe8..d2be8a8f9 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js @@ -61,7 +61,7 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { tgap: 10, items: [{ type: 'bi.vertical_adapt', - columnSize: [0.5, 'fill'], + columnSize: ["fill", 'fill'], height: 24, items: [{ type: "bi.color_picker_show_button", @@ -72,20 +72,8 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { listeners: [{ eventName: BI.ColorChooserShowButton.EVENT_CHANGE, action: function () { - if (this.isSelected()) { - self.lastColor = self.getValue(); - self.setValue("transparent"); - } else { - if (self.lastColor === "transparent") { - self.lastColor = ""; - } - self.setValue(self.lastColor || "#ffffff"); - } - if ((self.R.isValid() && self.G.isValid() && self.B.isValid()) || - self._isEmptyRGB()) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } + self.setValue("transparent"); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); } }], ref: function (_ref) { @@ -101,16 +89,8 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { listeners: [{ eventName: BI.ColorChooserShowButton.EVENT_CHANGE, action: function () { - if (this.isSelected()) { - self.lastColor = self.getValue(); - self.setValue(""); - } else { - self.setValue(self.lastColor || "#ffffff"); - } - if ((self.R.isValid() && self.G.isValid() && self.B.isValid()) || self._isEmptyRGB()) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } + self.setValue(""); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); } }], ref: function (_ref) { @@ -304,4 +284,4 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { } }); BI.HexColorPickerEditor.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.hex_color_picker_editor", BI.HexColorPickerEditor); \ No newline at end of file +BI.shortcut("bi.hex_color_picker_editor", BI.HexColorPickerEditor); diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.js b/src/case/colorchooser/colorpicker/editor.colorpicker.js index 4be3375a4..9d0dbbca0 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.js @@ -72,16 +72,9 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { title: BI.i18nText("BI-Basic_Auto") }); this.none.on(BI.IconButton.EVENT_CHANGE, function () { - if (this.isSelected()) { - self.lastColor = self.getValue(); - self.setValue(""); - } else { - self.setValue(self.lastColor || "#ffffff"); - } - if ((self.R.isValid() && self.G.isValid() && self.B.isValid()) || self._isEmptyRGB()) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } + var value = self.getValue(); + self.setValue(""); + (value !== "") && self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); }); this.transparent = BI.createWidget({ @@ -94,20 +87,9 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { title: BI.i18nText("BI-Transparent_Color") }); this.transparent.on(BI.IconButton.EVENT_CHANGE, function () { - if (this.isSelected()) { - self.lastColor = self.getValue(); - self.setValue("transparent"); - } else { - if (self.lastColor === "transparent") { - self.lastColor = ""; - } - self.setValue(self.lastColor || "#ffffff"); - } - if ((self.R.isValid() && self.G.isValid() && self.B.isValid()) || - self._isEmptyRGB()) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } + var value = self.getValue(); + self.setValue("transparent"); + (value !== "transparent") && self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); }); BI.createWidget({ diff --git a/src/case/colorchooser/farbtastic/farbtastic.js b/src/case/colorchooser/farbtastic/farbtastic.js index 58eb563ca..a5ec6736b 100644 --- a/src/case/colorchooser/farbtastic/farbtastic.js +++ b/src/case/colorchooser/farbtastic/farbtastic.js @@ -127,42 +127,11 @@ BI.Farbtastic = BI.inherit(BI.BasicButton, { }, _HSLToRGB: function (hsl) { - var m1, m2, r, g, b; - var h = hsl[0], s = hsl[1], l = hsl[2]; - m2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s; - m1 = l * 2 - m2; - return [this._hueToRGB(m1, m2, h + 0.33333), - this._hueToRGB(m1, m2, h), - this._hueToRGB(m1, m2, h - 0.33333)]; - }, - - _hueToRGB: function (m1, m2, h) { - h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h); - if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; - if (h * 2 < 1) return m2; - if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6; - return m1; + return BI.DOM.hsl2rgb(hsl); }, _RGBToHSL: function (rgb) { - var min, max, delta, h, s, l; - var r = rgb[0], g = rgb[1], b = rgb[2]; - min = Math.min(r, Math.min(g, b)); - max = Math.max(r, Math.max(g, b)); - delta = max - min; - l = (min + max) / 2; - s = 0; - if (l > 0 && l < 1) { - s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l)); - } - h = 0; - if (delta > 0) { - if (max == r && max != g) h += (g - b) / delta; - if (max == g && max != b) h += (2 + (b - r) / delta); - if (max == b && max != r) h += (4 + (r - g) / delta); - h /= 6; - } - return [h, s, l]; + return BI.DOM.rgb2hsl(rgb); }, _updateDisplay: function () { diff --git a/src/case/combo/bubblecombo/combo.bubble.js b/src/case/combo/bubblecombo/combo.bubble.js index 8a0af89b3..2f1db8b2d 100644 --- a/src/case/combo/bubblecombo/combo.bubble.js +++ b/src/case/combo/bubblecombo/combo.bubble.js @@ -5,24 +5,23 @@ * @extends BI.Widget */ BI.BubbleCombo = BI.inherit(BI.Widget, { - _const: { - TRIANGLE_LENGTH: 9 - }, _defaultConfig: function () { return BI.extend(BI.BubbleCombo.superclass._defaultConfig.apply(this, arguments), { baseCls: "bi-bubble-combo", trigger: "click", toggle: true, + primary: false, direction: "bottom,left", // top||bottom||left||right||top,left||top,right||bottom,left||bottom,right isDefaultInit: false, destroyWhenHide: false, + hideWhenClickOutside: true, hideWhenBlur: true, isNeedAdjustHeight: true, // 是否需要高度调整 isNeedAdjustWidth: true, stopPropagation: false, adjustLength: 0, // 调整的距离 - // adjustXOffset: 0, - // adjustYOffset: 10, + adjustXOffset: 0, + adjustYOffset: 0, hideChecker: BI.emptyFn, offsetStyle: "left", // left,right,center el: {}, @@ -42,19 +41,23 @@ BI.BubbleCombo = BI.inherit(BI.Widget, { direction: o.direction, isDefaultInit: o.isDefaultInit, hideWhenBlur: o.hideWhenBlur, + hideWhenClickOutside: o.hideWhenClickOutside, destroyWhenHide: o.destroyWhenHide, hideWhenAnotherComboOpen: o.hideWhenAnotherComboOpen, isNeedAdjustHeight: o.isNeedAdjustHeight, isNeedAdjustWidth: o.isNeedAdjustWidth, - adjustLength: this._getAdjustLength(), stopPropagation: o.stopPropagation, - adjustXOffset: 0, - adjustYOffset: 0, + adjustXOffset: o.adjustXOffset, + adjustYOffset: o.adjustYOffset, hideChecker: o.hideChecker, offsetStyle: o.offsetStyle, + showArrow: true, el: o.el, popup: BI.extend({ - type: "bi.bubble_popup_view" + type: "bi.bubble_popup_view", + animation: "bi-zoom-big", + animationDuring: 200, + primary: o.primary }, o.popup) }); this.combo.on(BI.Combo.EVENT_TRIGGER_CHANGE, function () { @@ -76,11 +79,9 @@ BI.BubbleCombo = BI.inherit(BI.Widget, { self.fireEvent(BI.BubbleCombo.EVENT_BEFORE_POPUPVIEW, arguments); }); this.combo.on(BI.Combo.EVENT_AFTER_POPUPVIEW, function () { - self._showTriangle(); self.fireEvent(BI.BubbleCombo.EVENT_AFTER_POPUPVIEW, arguments); }); this.combo.on(BI.Combo.EVENT_BEFORE_HIDEVIEW, function () { - self._hideTriangle(); self.fireEvent(BI.BubbleCombo.EVENT_BEFORE_HIDEVIEW, arguments); }); this.combo.on(BI.Combo.EVENT_AFTER_HIDEVIEW, function () { @@ -88,114 +89,7 @@ BI.BubbleCombo = BI.inherit(BI.Widget, { }); }, - _getAdjustLength: function () { - return this._const.TRIANGLE_LENGTH + this.options.adjustLength; - }, - - _createTriangle: function (direction) { - var pos = {}, op = {}; - var adjustLength = this.options.adjustLength; - var offset = this.element.offset(); - var left = offset.left, right = offset.left + this.element.outerWidth(); - var top = offset.top, bottom = offset.top + this.element.outerHeight(); - switch (direction) { - case "left": - pos = { - top: top, - height: this.element.outerHeight(), - left: left - adjustLength - this._const.TRIANGLE_LENGTH - }; - op = {width: this._const.TRIANGLE_LENGTH}; - break; - case "right": - pos = { - top: top, - height: this.element.outerHeight(), - left: right + adjustLength - }; - op = {width: this._const.TRIANGLE_LENGTH}; - break; - case "top": - pos = { - left: left, - width: this.element.outerWidth(), - top: top - adjustLength - this._const.TRIANGLE_LENGTH - }; - op = {height: this._const.TRIANGLE_LENGTH}; - break; - case "bottom": - pos = { - left: left, - width: this.element.outerWidth(), - top: bottom + adjustLength - }; - op = {height: this._const.TRIANGLE_LENGTH}; - break; - default: - break; - } - this.triangle && this.triangle.destroy(); - this.triangle = BI.createWidget(op, { - type: "bi.center_adapt", - cls: "button-combo-triangle-wrapper", - items: [{ - type: "bi.layout", - cls: "bubble-combo-triangle-" + direction - }] - }); - pos.el = this.triangle; - BI.createWidget({ - type: "bi.absolute", - element: this, - items: [pos] - }); - }, - - _createLeftTriangle: function () { - this._createTriangle("left"); - }, - - _createRightTriangle: function () { - this._createTriangle("right"); - }, - - _createTopTriangle: function () { - this._createTriangle("top"); - }, - - _createBottomTriangle: function () { - this._createTriangle("bottom"); - }, - - _showTriangle: function () { - var pos = this.combo.getPopupPosition(); - switch (pos.dir) { - case "left,top": - case "left,bottom": - this._createLeftTriangle(); - break; - case "right,top": - case "right,bottom": - this._createRightTriangle(); - break; - case "top,left": - case "top,right": - this._createTopTriangle(); - break; - case "bottom,left": - case "bottom,right": - this._createBottomTriangle(); - break; - } - }, - - _hideTriangle: function () { - this.triangle && this.triangle.destroy(); - this.triangle = null; - }, - hideView: function () { - this._hideTriangle(); this.combo && this.combo.hideView(); }, diff --git a/src/case/combo/bubblecombo/popup.bubble.js b/src/case/combo/bubblecombo/popup.bubble.js index 2fa9999ea..c65905821 100644 --- a/src/case/combo/bubblecombo/popup.bubble.js +++ b/src/case/combo/bubblecombo/popup.bubble.js @@ -9,9 +9,10 @@ BI.BubblePopupView = BI.inherit(BI.PopupView, { var config = BI.BubblePopupView.superclass._defaultConfig.apply(this, arguments); return BI.extend(config, { baseCls: config.baseCls + " bi-bubble-popup-view", - minWidth: 220, + minWidth: 70, maxWidth: 300, - minHeight: 90 + // minHeight: 50, + showArrow: true, }); } }); @@ -31,60 +32,65 @@ BI.BubblePopupBarView = BI.inherit(BI.BubblePopupView, { buttons: [{ value: false, text: BI.i18nText("BI-Basic_Cancel"), - ghost: true + level: "ignore" }, { - text: BI.i18nText(BI.i18nText("BI-Basic_Sure")), + text: BI.i18nText(BI.i18nText("BI-Basic_OK")), value: true }] }); }, - _init: function () { - BI.BubblePopupBarView.superclass._init.apply(this, arguments); - }, + _createToolBar: function () { var o = this.options, self = this; var items = []; BI.each(o.buttons, function (i, buttonOpt) { if (BI.isWidget(buttonOpt)) { - items.push(buttonOpt); + items.push({ + el: buttonOpt, + lgap: i === 0 ? 20 : 15, + rgap: i === o.buttons.length - 1 ? 20 : 0 + }); } else { - items.push(BI.extend({ - type: "bi.button", - height: 24, - handler: function (v) { - self.fireEvent(BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, v); - } - }, buttonOpt)); + items.push({ + el: BI.extend({ + type: "bi.button", + height: 24, + handler: function (v) { + self.fireEvent(BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, v); + } + }, buttonOpt), + lgap: i === 0 ? 20 : 15, + rgap: i === o.buttons.length - 1 ? 20 : 0 + }); } }); return BI.createWidget({ - type: "bi.center", - height: 44, - rgap: 15, - items: [{ - type: "bi.right_vertical_adapt", - lgap: 10, - items: items - }] + type: "bi.right_vertical_adapt", + height: 54, + items: items }); }, + _createContent: function () { + return this.options.el; + }, + _createView: function () { var o = this.options; - var button = BI.createWidget({ + var button = BI.createWidget({ type: "bi.button_group", - items: [o.el], + items: [this._createContent()], layouts: [{ type: "bi.vertical", cls: "bar-popup-container", - hgap: 15, - tgap: 10 + hgap: BI.SIZE_CONSANTS.H_GAP_SIZE, + tgap: BI.SIZE_CONSANTS.V_GAP_SIZE }] }); - button.element.css("min-height", o.minHeight - 44); + button.element.css("min-height", o.minHeight - 54); return button; } @@ -98,58 +104,26 @@ BI.shortcut("bi.bubble_bar_popup_view", BI.BubblePopupBarView); * @class BI.TextBubblePopupBarView * @extends BI.BubblePopupView */ -BI.TextBubblePopupBarView = BI.inherit(BI.Widget, { +BI.TextBubblePopupBarView = BI.inherit(BI.BubblePopupBarView, { - props: function () { - return { - baseCls: "bi-text-bubble-bar-popup-view", + _defaultConfig: function () { + var config = BI.TextBubblePopupBarView.superclass._defaultConfig.apply(this, arguments); + return BI.extend(config, { + baseCls: config.baseCls + " bi-text-bubble-bar-popup-view", text: "", - buttons: [{ - level: "ignore", - value: false, - stopPropagation: true, - text: BI.i18nText("BI-Basic_Cancel") - }, { - value: true, - stopPropagation: true, - text: BI.i18nText("BI-Basic_Sure") - }] - }; + }); }, - render: function () { + _createContent: function () { var self = this, o = this.options; - var buttons = BI.map(o.buttons, function (index, buttonOpt) { - if (BI.isWidget(buttonOpt)) { - return buttonOpt; - } - return BI.extend({ - type: "bi.button", - height: 24, - handler: function (v) { - self.fireEvent(BI.TextBubblePopupBarView.EVENT_CHANGE, v); - } - }, buttonOpt); - - }); return { - type: "bi.bubble_bar_popup_view", - minWidth: o.minWidth, - maxWidth: o.maxWidth, - minHeight: o.minHeight, + type: "bi.label", + text: o.text, + whiteSpace: "normal", + textAlign: "left", ref: function () { - self.popup = this; - }, - el: { - type: "bi.label", - text: o.text, - whiteSpace: "normal", - textAlign: "left", - ref: function () { - self.text = this; - } - }, - buttons: buttons + self.text = this; + } }; }, diff --git a/src/case/combo/iconcombo/combo.icon.js b/src/case/combo/iconcombo/combo.icon.js index 409e1a003..81050859a 100644 --- a/src/case/combo/iconcombo/combo.icon.js +++ b/src/case/combo/iconcombo/combo.icon.js @@ -25,8 +25,14 @@ BI.IconCombo = BI.inherit(BI.Widget, { }, _init: function () { - BI.IconCombo.superclass._init.apply(this, arguments); var self = this, o = this.options; + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + BI.IconCombo.superclass._init.apply(this, arguments); this.trigger = BI.createWidget(o.el, { type: "bi.icon_combo_trigger", iconCls: o.iconCls, diff --git a/src/case/combo/iconcombo/popup.iconcombo.js b/src/case/combo/iconcombo/popup.iconcombo.js index 0c6067bac..9b0f4cc80 100644 --- a/src/case/combo/iconcombo/popup.iconcombo.js +++ b/src/case/combo/iconcombo/popup.iconcombo.js @@ -19,7 +19,6 @@ BI.IconComboPopup = BI.inherit(BI.Pane, { type: "bi.button_group", items: BI.createItems(o.items, { type: "bi.single_select_icon_text_item", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, }), chooseType: o.chooseType, layouts: [{ @@ -47,7 +46,6 @@ BI.IconComboPopup = BI.inherit(BI.Pane, { BI.IconComboPopup.superclass.populate.apply(this, arguments); items = BI.createItems(items, { type: "bi.single_select_icon_text_item", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, }); this.popup.populate(items); }, diff --git a/src/case/combo/iconcombo/trigger.iconcombo.js b/src/case/combo/iconcombo/trigger.iconcombo.js index 237846521..65c353504 100644 --- a/src/case/combo/iconcombo/trigger.iconcombo.js +++ b/src/case/combo/iconcombo/trigger.iconcombo.js @@ -42,9 +42,9 @@ BI.IconComboTrigger = BI.inherit(BI.Trigger, { cls: "icon-combo-down-icon trigger-triangle-font font-size-12", width: 12, height: 8, - selected: BI.isNotEmptyString(iconCls) + selected: BI.isNotEmptyString(iconCls), + invisible: !o.isShowDown }); - this.down.setVisible(o.isShowDown); BI.createWidget({ type: "bi.absolute", element: this, @@ -99,4 +99,4 @@ BI.IconComboTrigger = BI.inherit(BI.Trigger, { } }); BI.IconComboTrigger.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.icon_combo_trigger", BI.IconComboTrigger); \ No newline at end of file +BI.shortcut("bi.icon_combo_trigger", BI.IconComboTrigger); diff --git a/src/case/combo/icontextvaluecombo/combo.icontextvalue.js b/src/case/combo/icontextvaluecombo/combo.icontextvalue.js index 118138779..92732d9b1 100644 --- a/src/case/combo/icontextvaluecombo/combo.icontextvalue.js +++ b/src/case/combo/icontextvaluecombo/combo.icontextvalue.js @@ -3,9 +3,9 @@ * combo : icon + text + icon, popup : icon + text */ BI.IconTextValueCombo = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { return BI.extend(BI.IconTextValueCombo.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-icon-text-value-combo bi-border bi-border-radius", + baseCls: "bi-icon-text-value-combo bi-border-radius " + (config.simple ? "bi-border-bottom" : "bi-border"), height: 24, iconHeight: null, iconWidth: null, @@ -15,8 +15,14 @@ BI.IconTextValueCombo = BI.inherit(BI.Widget, { _init: function () { var self = this, o = this.options; - o.height -= 2; BI.isNumeric(o.width) && (o.width -= 2); + BI.isNumeric(o.height) && (o.height -= 2); + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; BI.IconTextValueCombo.superclass._init.apply(this, arguments); this.trigger = BI.createWidget({ type: "bi.select_icon_text_trigger", diff --git a/src/case/combo/icontextvaluecombo/popup.icontextvalue.js b/src/case/combo/icontextvaluecombo/popup.icontextvalue.js index 993bceb45..88db08e67 100644 --- a/src/case/combo/icontextvaluecombo/popup.icontextvalue.js +++ b/src/case/combo/icontextvaluecombo/popup.icontextvalue.js @@ -20,7 +20,6 @@ BI.IconTextValueComboPopup = BI.inherit(BI.Pane, { type: "bi.button_group", items: BI.createItems(o.items, { type: "bi.single_select_icon_text_item", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconHeight: o.iconHeight, iconWidth: o.iconWidth, iconWrapperWidth: o.iconWrapperWidth @@ -55,7 +54,6 @@ BI.IconTextValueComboPopup = BI.inherit(BI.Pane, { var o = this.options; items = BI.createItems(items, { type: "bi.single_select_icon_text_item", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, iconWrapperWidth: o.iconWrapperWidth, iconHeight: o.iconHeight, iconWidth: o.iconWidth, diff --git a/src/case/combo/searchtextvaluecombo/combo.searchtextvalue.js b/src/case/combo/searchtextvaluecombo/combo.searchtextvalue.js index 05553d05a..ac3fad335 100644 --- a/src/case/combo/searchtextvaluecombo/combo.searchtextvalue.js +++ b/src/case/combo/searchtextvaluecombo/combo.searchtextvalue.js @@ -15,12 +15,18 @@ BI.SearchTextValueCombo = BI.inherit(BI.Widget, { render: function () { var self = this, o = this.options; + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; return { type: "bi.absolute", items: [{ el: { type: "bi.combo", - cls: "bi-border bi-focus-shadow", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-focus-shadow", container: o.container, adjustLength: 2, toggle: false, @@ -35,7 +41,7 @@ BI.SearchTextValueCombo = BI.inherit(BI.Widget, { self.trigger = this; }, items: o.items, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, defaultText: o.defaultText, value: o.value, diff --git a/src/case/combo/searchtextvaluecombo/popup.searchtextvalue.js b/src/case/combo/searchtextvaluecombo/popup.searchtextvalue.js index 0118cf84f..dc1107fb1 100644 --- a/src/case/combo/searchtextvaluecombo/popup.searchtextvalue.js +++ b/src/case/combo/searchtextvaluecombo/popup.searchtextvalue.js @@ -17,11 +17,7 @@ BI.SearchTextValueComboPopup = BI.inherit(BI.Pane, { ref: function () { self.popup = this; }, - items: BI.createItems(o.items, { - type: "bi.single_select_item", - textAlign: o.textAlign, - height: 24 - }), + items: this._formatItems(o.items), chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE, layouts: [{ type: "bi.vertical" @@ -45,6 +41,17 @@ BI.SearchTextValueComboPopup = BI.inherit(BI.Pane, { }; }, + _formatItems: function (items) { + var o = this.options; + return BI.map(items, function (i, item) { + return BI.extend({ + type: "bi.single_select_item", + textAlign: o.textAlign, + title: item.title || item.text + }, item); + }); + }, + // mounted之后做check mounted: function() { this.check(); @@ -53,11 +60,7 @@ BI.SearchTextValueComboPopup = BI.inherit(BI.Pane, { populate: function (find, match, keyword) { var items = BI.concat(find, match); BI.SearchTextValueComboPopup.superclass.populate.apply(this, items); - items = BI.createItems(items, { - type: "bi.single_select_item", - height: 24 - }); - this.popup.populate(items, keyword); + this.popup.populate(this._formatItems(items), keyword); }, getValue: function () { diff --git a/src/case/combo/textvaluecheckcombo/combo.textvaluecheck.js b/src/case/combo/textvaluecheckcombo/combo.textvaluecheck.js index 530cc2a01..1b9b9a0ce 100644 --- a/src/case/combo/textvaluecheckcombo/combo.textvaluecheck.js +++ b/src/case/combo/textvaluecheckcombo/combo.textvaluecheck.js @@ -4,9 +4,9 @@ * combo : text + icon, popup : check + text */ BI.TextValueCheckCombo = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { return BI.extend(BI.TextValueCheckCombo.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-text-value-check-combo bi-border", + baseCls: "bi-text-value-check-combo " + (config.simple ? "bi-border-bottom" : "bi-border"), width: 100, height: 24, chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE, @@ -16,8 +16,14 @@ BI.TextValueCheckCombo = BI.inherit(BI.Widget, { _init: function () { var self = this, o = this.options; - o.height -= 2; BI.isNumeric(o.width) && (o.width -= 2); + BI.isNumeric(o.height) && (o.height -= 2); + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; BI.TextValueCheckCombo.superclass._init.apply(this, arguments); this.trigger = BI.createWidget({ type: "bi.select_text_trigger", diff --git a/src/case/combo/textvaluecheckcombo/popup.textvaluecheck.js b/src/case/combo/textvaluecheckcombo/popup.textvaluecheck.js index f5678d870..b25ccc141 100644 --- a/src/case/combo/textvaluecheckcombo/popup.textvaluecheck.js +++ b/src/case/combo/textvaluecheckcombo/popup.textvaluecheck.js @@ -35,11 +35,13 @@ BI.TextValueCheckComboPopup = BI.inherit(BI.Pane, { }, _formatItems: function (items) { + var o = this.options; return BI.map(items, function (i, item) { return BI.extend({ type: "bi.single_select_item", cls: "bi-list-item", - height: 24 + textAlign: o.textAlign, + title: item.title || item.text }, item); }); }, diff --git a/src/case/combo/textvaluecombo/combo.textvalue.js b/src/case/combo/textvaluecombo/combo.textvalue.js index b0242a64d..6b9ef321b 100644 --- a/src/case/combo/textvaluecombo/combo.textvalue.js +++ b/src/case/combo/textvaluecombo/combo.textvalue.js @@ -5,9 +5,9 @@ * 参见场景dashboard布局方式选择 */ BI.TextValueCombo = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { return BI.extend(BI.TextValueCombo.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-text-value-combo bi-border", + baseCls: "bi-text-value-combo " + (config.simple ? "bi-border-bottom" : "bi-border"), height: 24, chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE, text: "", @@ -17,8 +17,14 @@ BI.TextValueCombo = BI.inherit(BI.Widget, { _init: function () { var self = this, o = this.options; - o.height -= 2; BI.isNumeric(o.width) && (o.width -= 2); + BI.isNumeric(o.height) && (o.height -= 2); + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; BI.TextValueCombo.superclass._init.apply(this, arguments); this.trigger = BI.createWidget({ type: "bi.select_text_trigger", diff --git a/src/case/combo/textvaluecombo/combo.textvaluesmall.js b/src/case/combo/textvaluecombo/combo.textvaluesmall.js index 70e551737..b6609544b 100644 --- a/src/case/combo/textvaluecombo/combo.textvaluesmall.js +++ b/src/case/combo/textvaluecombo/combo.textvaluesmall.js @@ -16,8 +16,14 @@ BI.SmallTextValueCombo = BI.inherit(BI.Widget, { }, _init: function () { - BI.SmallTextValueCombo.superclass._init.apply(this, arguments); var self = this, o = this.options; + o.value = BI.isFunction(o.value) ? this.__watch(o.value, function (context, newValue) { + self.setValue(newValue); + }) : o.value; + o.items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + BI.SmallTextValueCombo.superclass._init.apply(this, arguments); this.trigger = BI.createWidget(o.el, { type: "bi.small_select_text_trigger", items: o.items, diff --git a/src/case/combo/textvaluecombo/popup.textvalue.js b/src/case/combo/textvaluecombo/popup.textvalue.js index 5b3c0a8ee..6702f8bfa 100644 --- a/src/case/combo/textvaluecombo/popup.textvalue.js +++ b/src/case/combo/textvaluecombo/popup.textvalue.js @@ -11,11 +11,7 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { var o = this.options, self = this; this.popup = BI.createWidget({ type: "bi.button_group", - items: BI.createItems(o.items, { - type: "bi.single_select_item", - textAlign: o.textAlign, - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - }), + items: this._formatItems(o.items), chooseType: o.chooseType, layouts: [{ type: "bi.vertical" @@ -39,13 +35,20 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { }); }, + _formatItems: function (items) { + var o = this.options; + return BI.map(items, function (i, item) { + return BI.extend({ + type: "bi.single_select_item", + textAlign: o.textAlign, + title: item.title || item.text + }, item); + }); + }, + populate: function (items) { BI.TextValueComboPopup.superclass.populate.apply(this, arguments); - items = BI.createItems(items, { - type: "bi.single_select_item", - height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, - }); - this.popup.populate(items); + this.popup.populate(this._formatItems(items)); }, getValue: function () { @@ -58,4 +61,4 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { }); BI.TextValueComboPopup.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.text_value_combo_popup", BI.TextValueComboPopup); \ No newline at end of file +BI.shortcut("bi.text_value_combo_popup", BI.TextValueComboPopup); diff --git a/src/case/editor/editor.clear.js b/src/case/editor/editor.clear.js index 372d31bdd..253d32431 100644 --- a/src/case/editor/editor.clear.js +++ b/src/case/editor/editor.clear.js @@ -21,6 +21,7 @@ BI.ClearEditor = BI.inherit(BI.Widget, { var self = this, o = this.options; this.editor = BI.createWidget({ type: "bi.editor", + simple: o.simple, height: o.height, watermark: o.watermark, allowBlank: true, @@ -32,6 +33,7 @@ BI.ClearEditor = BI.inherit(BI.Widget, { this.clear = BI.createWidget({ type: "bi.icon_button", stopEvent: true, + invisible: !BI.isKey(o.value), cls: "search-close-h-font" }); this.clear.on(BI.IconButton.EVENT_CHANGE, function () { @@ -113,12 +115,6 @@ BI.ClearEditor = BI.inherit(BI.Widget, { this.editor.on(BI.Editor.EVENT_STOP, function () { self.fireEvent(BI.ClearEditor.EVENT_STOP); }); - - if (BI.isKey(o.value)) { - this.clear.visible(); - } else { - this.clear.invisible(); - } }, _checkClear: function () { @@ -179,4 +175,4 @@ BI.ClearEditor.EVENT_ENTER = "EVENT_ENTER"; BI.ClearEditor.EVENT_RESTRICT = "EVENT_RESTRICT"; BI.ClearEditor.EVENT_REMOVE = "EVENT_REMOVE"; BI.ClearEditor.EVENT_EMPTY = "EVENT_EMPTY"; -BI.shortcut("bi.clear_editor", BI.ClearEditor); \ No newline at end of file +BI.shortcut("bi.clear_editor", BI.ClearEditor); diff --git a/src/case/editor/editor.shelter.js b/src/case/editor/editor.shelter.js index 562cbe3a4..dec410d87 100644 --- a/src/case/editor/editor.shelter.js +++ b/src/case/editor/editor.shelter.js @@ -30,6 +30,7 @@ BI.ShelterEditor = BI.inherit(BI.Widget, { var self = this, o = this.options; this.editor = BI.createWidget({ type: "bi.editor", + simple: o.simple, height: o.height, hgap: o.hgap, vgap: o.vgap, @@ -141,14 +142,16 @@ BI.ShelterEditor = BI.inherit(BI.Widget, { _checkText: function () { var o = this.options; - if (this.editor.getValue() === "") { - this.text.setValue(o.watermark || ""); - this.text.element.addClass("bi-water-mark"); - } else { - this.text.setValue(this.editor.getValue()); - this.text.element.removeClass("bi-water-mark"); - } - BI.isKey(o.keyword) && this.text.doRedMark(o.keyword); + BI.nextTick(BI.bind(function () { + if (this.editor.getValue() === "") { + this.text.setValue(o.watermark || ""); + this.text.element.addClass("bi-water-mark"); + } else { + this.text.setValue(this.editor.getValue()); + this.text.element.removeClass("bi-water-mark"); + } + BI.isKey(o.keyword) && this.text.doRedMark(o.keyword); + }, this)); }, _showInput: function () { diff --git a/src/case/editor/editor.sign.js b/src/case/editor/editor.sign.js index 35ed78e4b..f2ae0560f 100644 --- a/src/case/editor/editor.sign.js +++ b/src/case/editor/editor.sign.js @@ -30,6 +30,7 @@ BI.SignEditor = BI.inherit(BI.Widget, { var self = this, o = this.options; this.editor = BI.createWidget({ type: "bi.editor", + simple: o.simple, height: o.height, hgap: o.hgap, vgap: o.vgap, @@ -176,6 +177,7 @@ BI.SignEditor = BI.inherit(BI.Widget, { setWaterMark: function (v) { this.options.watermark = v; + this._checkText(); this.editor.setWaterMark(v); }, diff --git a/src/case/editor/editor.state.js b/src/case/editor/editor.state.js index dcd8e9147..d1e11b20a 100644 --- a/src/case/editor/editor.state.js +++ b/src/case/editor/editor.state.js @@ -32,6 +32,7 @@ BI.StateEditor = BI.inherit(BI.Widget, { var self = this, o = this.options; this.editor = BI.createWidget(o.el, { type: "bi.editor", + simple: o.simple, height: o.height, hgap: o.hgap, vgap: o.vgap, diff --git a/src/case/editor/editor.state.simple.js b/src/case/editor/editor.state.simple.js index 6fab8d6f8..81b815441 100644 --- a/src/case/editor/editor.state.simple.js +++ b/src/case/editor/editor.state.simple.js @@ -31,6 +31,7 @@ BI.SimpleStateEditor = BI.inherit(BI.Widget, { var self = this, o = this.options; this.editor = BI.createWidget({ type: "bi.editor", + simple: o.simple, height: o.height, hgap: o.hgap, vgap: o.vgap, diff --git a/src/case/layer/layer.multipopup.js b/src/case/layer/layer.multipopup.js index 3979c6927..5b69dabe3 100644 --- a/src/case/layer/layer.multipopup.js +++ b/src/case/layer/layer.multipopup.js @@ -10,7 +10,7 @@ BI.MultiPopupView = BI.inherit(BI.PopupView, { var conf = BI.MultiPopupView.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { _baseCls: (conf._baseCls || "") + " bi-multi-list-view", - buttons: [BI.i18nText("BI-Basic_Sure")] + buttons: [BI.i18nText("BI-Basic_OK")] }); }, diff --git a/src/case/linersegment/button.linear.segment.js b/src/case/linearsegment/button.linear.segment.js similarity index 96% rename from src/case/linersegment/button.linear.segment.js rename to src/case/linearsegment/button.linear.segment.js index be8403844..38479accb 100644 --- a/src/case/linersegment/button.linear.segment.js +++ b/src/case/linearsegment/button.linear.segment.js @@ -5,7 +5,7 @@ BI.LinearSegmentButton = BI.inherit(BI.BasicButton, { once: true, readonly: true, hgap: 10, - height: 25 + height: 24 }, render: function () { @@ -15,6 +15,7 @@ BI.LinearSegmentButton = BI.inherit(BI.BasicButton, { type: "bi.label", text: o.text, height: o.height, + textHeight: o.height - 2, value: o.value, hgap: o.hgap, ref: function () { @@ -51,4 +52,4 @@ BI.LinearSegmentButton = BI.inherit(BI.BasicButton, { this.text.setText(text); } }); -BI.shortcut("bi.linear_segment_button", BI.LinearSegmentButton); \ No newline at end of file +BI.shortcut("bi.linear_segment_button", BI.LinearSegmentButton); diff --git a/src/case/linersegment/linear.segment.js b/src/case/linearsegment/linear.segment.js similarity index 89% rename from src/case/linersegment/linear.segment.js rename to src/case/linearsegment/linear.segment.js index f0060dce3..3c1b677c3 100644 --- a/src/case/linersegment/linear.segment.js +++ b/src/case/linearsegment/linear.segment.js @@ -6,7 +6,7 @@ BI.LinearSegment = BI.inherit(BI.Widget, { layouts: [{ type: "bi.center" }], - height: 29 + height: 30 }, render: function () { @@ -15,9 +15,10 @@ BI.LinearSegment = BI.inherit(BI.Widget, { type: "bi.button_group", items: BI.createItems(o.items, { type: "bi.linear_segment_button", - height: o.height - 1 + height: o.height }), layouts: o.layouts, + value: o.value, listeners: [{ eventName: "__EVENT_CHANGE__", action: function () { @@ -48,4 +49,4 @@ BI.LinearSegment = BI.inherit(BI.Widget, { return this.buttonGroup.getValue(); } }); -BI.shortcut("bi.linear_segment", BI.LinearSegment); \ No newline at end of file +BI.shortcut("bi.linear_segment", BI.LinearSegment); diff --git a/src/case/pager/pager.js b/src/case/pager/pager.js index cc057fd69..0f6bac9b5 100644 --- a/src/case/pager/pager.js +++ b/src/case/pager/pager.js @@ -12,8 +12,6 @@ BI.DetailPager = BI.inherit(BI.Widget, { behaviors: {}, layouts: [{ type: "bi.horizontal", - hgap: 10, - vgap: 0 }], dynamicShow: true, // 是否动态显示上一页、下一页、首页、尾页, 若为false,则指对其设置使能状态 @@ -177,8 +175,7 @@ BI.DetailPager = BI.inherit(BI.Widget, { element: this, items: BI.createItems(view, { cls: "page-item bi-border bi-list-item-active", - height: 23, - hgap: 10 + height: 23 }), behaviors: o.behaviors, layouts: o.layouts @@ -285,4 +282,4 @@ BI.DetailPager = BI.inherit(BI.Widget, { }); BI.DetailPager.EVENT_CHANGE = "EVENT_CHANGE"; BI.DetailPager.EVENT_AFTER_POPULATE = "EVENT_AFTER_POPULATE"; -BI.shortcut("bi.detail_pager", BI.DetailPager); \ No newline at end of file +BI.shortcut("bi.detail_pager", BI.DetailPager); diff --git a/src/case/segment/button.segment.js b/src/case/segment/button.segment.js index 0e3ac343b..2d9d6c19a 100644 --- a/src/case/segment/button.segment.js +++ b/src/case/segment/button.segment.js @@ -10,7 +10,7 @@ BI.SegmentButton = BI.inherit(BI.BasicButton, { _defaultConfig: function () { var conf = BI.SegmentButton.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { - baseCls: (conf.baseCls || "") + " bi-segment-button bi-list-item-select", + baseCls: (conf.baseCls || "") + " bi-segment-button bi-list-item-select bi-card", shadow: true, readonly: true, hgap: 5 diff --git a/src/case/tree/tree.level.js b/src/case/tree/tree.level.js index eb6d5099d..baac6a94c 100644 --- a/src/case/tree/tree.level.js +++ b/src/case/tree/tree.level.js @@ -26,7 +26,7 @@ BI.LevelTree = BI.inherit(BI.Widget, { _formatItems: function (nodes, layer, pNode) { var self = this; BI.each(nodes, function (i, node) { - var extend = { layer: layer }; + var extend = { layer: layer, height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT }; if (!BI.isKey(node.id)) { node.id = BI.UUID(); } diff --git a/src/case/tree/treeexpander/tree.expander.popup.js b/src/case/tree/treeexpander/tree.expander.popup.js index 6deae0982..bf2c6addb 100644 --- a/src/case/tree/treeexpander/tree.expander.popup.js +++ b/src/case/tree/treeexpander/tree.expander.popup.js @@ -1,16 +1,19 @@ !(function () { var Widget = BI.inherit(BI.Widget, { - props: { - baseCls: "bi-tree-expander-popup", - layer: 0, // 第几层级 - el: {}, - isLastNode: false, + props: function () { + return { + baseCls: "bi-tree-expander-popup", + layer: 0, // 第几层级 + el: {}, + isLastNode: false, + }; }, render: function () { var self = this; var o = this.options; + var offset = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2; this.popupView = BI.createWidget(BI.extend(o.el, { value: o.value @@ -19,12 +22,12 @@ this.popupView.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); }); - this.popupView.element.css("margin-left", -12 * o.layer); - this.element.css("margin-left", 12 * o.layer); + this.popupView.element.css("margin-left", -offset * o.layer); + this.element.css("margin-left", offset * o.layer); return { type: "bi.vertical", - cls: !o.isLastNode ? "line" : "", + cls: !o.isLastNode ? (BI.STYLE_CONSTANTS.LINK_LINE_TYPE === "solid" ? "line solid" : "line") : "", scrolly: null, items: [ this.popupView, diff --git a/src/case/trigger/trigger.editor.js b/src/case/trigger/trigger.editor.js index 814f1b870..7243d528f 100644 --- a/src/case/trigger/trigger.editor.js +++ b/src/case/trigger/trigger.editor.js @@ -6,10 +6,6 @@ * @extends BI.Trigger */ BI.EditorTrigger = BI.inherit(BI.Trigger, { - _const: { - hgap: 4 - }, - _defaultConfig: function () { var conf = BI.EditorTrigger.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { @@ -61,10 +57,11 @@ BI.EditorTrigger = BI.inherit(BI.Trigger, { BI.createWidget({ element: this, - type: "bi.htape", + type: "bi.horizontal_fill", items: [ { - el: this.editor + el: this.editor, + width: "fill" }, { el: { type: "bi.trigger_icon_button", diff --git a/src/case/trigger/trigger.icon.text.js b/src/case/trigger/trigger.icon.text.js index eac94ab50..36d156e13 100644 --- a/src/case/trigger/trigger.icon.text.js +++ b/src/case/trigger/trigger.icon.text.js @@ -6,9 +6,6 @@ * @extends BI.Trigger */ BI.IconTextTrigger = BI.inherit(BI.Trigger, { - _const: { - hgap: 4 - }, _defaultConfig: function () { var conf = BI.IconTextTrigger.superclass._defaultConfig.apply(this, arguments); @@ -23,12 +20,18 @@ BI.IconTextTrigger = BI.inherit(BI.Trigger, { _init: function () { BI.IconTextTrigger.superclass._init.apply(this, arguments); - var self = this, o = this.options, c = this._const; + var self = this, o = this.options; this.text = BI.createWidget({ type: "bi.label", cls: "select-text-label" + (BI.isKey(o.textCls) ? (" " + o.textCls) : ""), textAlign: "left", height: o.height, + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + tgap: o.textTgap, + bgap: o.textBgap, text: o.text }); this.trigerButton = BI.createWidget({ @@ -38,7 +41,8 @@ BI.IconTextTrigger = BI.inherit(BI.Trigger, { BI.createWidget({ element: this, - type: "bi.htape", + type: "bi.horizontal_fill", + columnSize: [BI.isEmptyString(o.iconCls) ? 0 : (o.iconWrapperWidth || o.height), "fill", o.triggerWidth || o.height], ref: function (_ref) { self.wrapper = _ref; }, @@ -53,17 +57,13 @@ BI.IconTextTrigger = BI.inherit(BI.Trigger, { iconHeight: o.iconHeight, iconWidth: o.iconWidth, disableSelected: true - }, - width: BI.isEmptyString(o.iconCls) ? 0 : (o.iconWrapperWidth || o.height) - }, - { + } + }, { el: this.text, lgap: BI.isEmptyString(o.iconCls) ? 5 : 0 }, { - el: this.trigerButton, - width: o.triggerWidth || o.height - } - ] + el: this.trigerButton + }] }); }, @@ -76,14 +76,14 @@ BI.IconTextTrigger = BI.inherit(BI.Trigger, { this.icon.setIcon(iconCls); var iconItem = this.wrapper.attr("items")[0]; var textItem = this.wrapper.attr("items")[1]; - if(BI.isNull(iconCls) || BI.isEmptyString(iconCls)) { - if(iconItem.width !== 0) { + if (BI.isNull(iconCls) || BI.isEmptyString(iconCls)) { + if (iconItem.width !== 0) { iconItem.width = 0; textItem.lgap = 5; this.wrapper.resize(); } - }else{ - if(iconItem.width !== (o.iconWrapperWidth || o.height)) { + } else { + if (iconItem.width !== (o.iconWrapperWidth || o.height)) { iconItem.width = (o.iconWrapperWidth || o.height); textItem.lgap = 0; this.wrapper.resize(); @@ -91,7 +91,7 @@ BI.IconTextTrigger = BI.inherit(BI.Trigger, { } }, - setTextCls: function(cls) { + setTextCls: function (cls) { var o = this.options; var oldCls = o.textCls; o.textCls = cls; @@ -102,4 +102,4 @@ BI.IconTextTrigger = BI.inherit(BI.Trigger, { this.text.setText(text); } }); -BI.shortcut("bi.icon_text_trigger", BI.IconTextTrigger); \ No newline at end of file +BI.shortcut("bi.icon_text_trigger", BI.IconTextTrigger); diff --git a/src/case/trigger/trigger.icon.text.select.js b/src/case/trigger/trigger.icon.text.select.js index a980b055a..b0142b91e 100644 --- a/src/case/trigger/trigger.icon.text.select.js +++ b/src/case/trigger/trigger.icon.text.select.js @@ -23,6 +23,12 @@ BI.SelectIconTextTrigger = BI.inherit(BI.Trigger, { text: obj.text, textCls: obj.textCls, iconCls: obj.iconCls, + textHgap: o.textHgap, + textVgap: o.textVgap, + textLgap: o.textLgap, + textRgap: o.textRgap, + textTgap: o.textTgap, + textBgap: o.textBgap, height: o.height, iconHeight: o.iconHeight, iconWidth: o.iconWidth, @@ -71,4 +77,4 @@ BI.SelectIconTextTrigger = BI.inherit(BI.Trigger, { this.options.items = items; } }); -BI.shortcut("bi.select_icon_text_trigger", BI.SelectIconTextTrigger); \ No newline at end of file +BI.shortcut("bi.select_icon_text_trigger", BI.SelectIconTextTrigger); diff --git a/src/case/trigger/trigger.text.js b/src/case/trigger/trigger.text.js index 8fc69d58c..e8ee789df 100644 --- a/src/case/trigger/trigger.text.js +++ b/src/case/trigger/trigger.text.js @@ -6,16 +6,18 @@ * @extends BI.Trigger */ BI.TextTrigger = BI.inherit(BI.Trigger, { - _const: { - hgap: 6 - }, _defaultConfig: function () { + var self = this; var conf = BI.TextTrigger.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { baseCls: (conf.baseCls || "") + " bi-text-trigger", height: 24, - textCls: "" + textHgap: 6, + textCls: "", + title: function () { + return self.text.getText(); + } }); }, @@ -28,12 +30,14 @@ BI.TextTrigger = BI.inherit(BI.Trigger, { textAlign: "left", height: o.height, text: o.text, - title: function () { - return self.text.getText(); - }, tipType: o.tipType, warningTitle: o.warningTitle, - hgap: c.hgap, + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + tgap: o.textTgap, + bgap: o.textBgap, readonly: o.readonly }); this.trigerButton = BI.createWidget({ @@ -43,10 +47,11 @@ BI.TextTrigger = BI.inherit(BI.Trigger, { BI.createWidget({ element: this, - type: "bi.htape", + type: "bi.horizontal_fill", items: [ { - el: this.text + el: this.text, + width: "fill" }, { el: this.trigerButton, width: o.triggerWidth || o.height @@ -72,6 +77,7 @@ BI.TextTrigger = BI.inherit(BI.Trigger, { setTipType: function (v) { this.text.options.tipType = v; + this.options.tipType = v; } }); BI.shortcut("bi.text_trigger", BI.TextTrigger); diff --git a/src/case/trigger/trigger.text.select.js b/src/case/trigger/trigger.text.select.js index 03481d1f2..8b24c1c9c 100644 --- a/src/case/trigger/trigger.text.select.js +++ b/src/case/trigger/trigger.text.select.js @@ -10,7 +10,7 @@ BI.SelectTextTrigger = BI.inherit(BI.Trigger, { _defaultConfig: function () { return BI.extend(BI.SelectTextTrigger.superclass._defaultConfig.apply(this, arguments), { baseCls: "bi-select-text-trigger", - height: 24 + height: 24, }); }, @@ -25,6 +25,12 @@ BI.SelectTextTrigger = BI.inherit(BI.Trigger, { readonly: o.readonly, text: obj.text, textCls: obj.textCls, + textHgap: o.textHgap, + textVgap: o.textVgap, + textLgap: o.textLgap, + textRgap: o.textRgap, + textTgap: o.textTgap, + textBgap: o.textBgap, tipType: o.tipType, warningTitle: o.warningTitle }); diff --git a/src/case/trigger/trigger.text.select.small.js b/src/case/trigger/trigger.text.select.small.js index 215a04f26..9c39fe750 100644 --- a/src/case/trigger/trigger.text.select.small.js +++ b/src/case/trigger/trigger.text.select.small.js @@ -9,7 +9,7 @@ BI.SmallSelectTextTrigger = BI.inherit(BI.Trigger, { _defaultConfig: function () { return BI.extend(BI.SmallSelectTextTrigger.superclass._defaultConfig.apply(this, arguments), { baseCls: "bi-small-select-text-trigger bi-border", - height: 20 + height: 20, }); }, @@ -23,7 +23,13 @@ BI.SmallSelectTextTrigger = BI.inherit(BI.Trigger, { element: this, height: o.height, text: obj.text, - cls: obj.cls + cls: obj.cls, + textHgap: o.textHgap, + textVgap: o.textVgap, + textLgap: o.textLgap, + textRgap: o.textRgap, + textTgap: o.textTgap, + textBgap: o.textBgap, }); }, @@ -61,4 +67,4 @@ BI.SmallSelectTextTrigger = BI.inherit(BI.Trigger, { this.options.items = items; } }); -BI.shortcut("bi.small_select_text_trigger", BI.SmallSelectTextTrigger); \ No newline at end of file +BI.shortcut("bi.small_select_text_trigger", BI.SmallSelectTextTrigger); diff --git a/src/case/trigger/trigger.text.small.js b/src/case/trigger/trigger.text.small.js index 1ddc3907f..6fbb04c3c 100644 --- a/src/case/trigger/trigger.text.small.js +++ b/src/case/trigger/trigger.text.small.js @@ -5,15 +5,12 @@ * @extends BI.Trigger */ BI.SmallTextTrigger = BI.inherit(BI.Trigger, { - _const: { - hgap: 6 - }, - _defaultConfig: function () { var conf = BI.SmallTextTrigger.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { baseCls: (conf.baseCls || "") + " bi-text-trigger", - height: 20 + height: 20, + textHgap: 6, }); }, @@ -25,7 +22,12 @@ BI.SmallTextTrigger = BI.inherit(BI.Trigger, { textAlign: "left", height: o.height, text: o.text, - hgap: c.hgap + hgap: o.textHgap, + vgap: o.textVgap, + lgap: o.textLgap, + rgap: o.textRgap, + tgap: o.textTgap, + bgap: o.textBgap, }); this.trigerButton = BI.createWidget({ type: "bi.trigger_icon_button", @@ -34,10 +36,11 @@ BI.SmallTextTrigger = BI.inherit(BI.Trigger, { BI.createWidget({ element: this, - type: "bi.htape", + type: "bi.horizontal_fill", items: [ { - el: this.text + el: this.text, + width: "fill" }, { el: this.trigerButton, width: o.triggerWidth || o.height @@ -54,4 +57,4 @@ BI.SmallTextTrigger = BI.inherit(BI.Trigger, { this.text.setText(text); } }); -BI.shortcut("bi.small_text_trigger", BI.SmallTextTrigger); \ No newline at end of file +BI.shortcut("bi.small_text_trigger", BI.SmallTextTrigger); diff --git a/src/case/ztree/0.treeview.js b/src/case/ztree/0.treeview.js index f67c9291b..79ffd5bb6 100644 --- a/src/case/ztree/0.treeview.js +++ b/src/case/ztree/0.treeview.js @@ -51,11 +51,11 @@ BI.TreeView = BI.inherit(BI.Pane, { } this.tree = BI.createWidget({ type: "bi.layout", - element: "
    " + element: "" }); BI.createWidget({ type: "bi.default", - element: this.element, + element: this, items: [this.tree] }); }, @@ -140,7 +140,9 @@ BI.TreeView = BI.inherit(BI.Pane, { } return true; } - BI.Msg.toast("Please Wait。", "warning"); // 不展开节点,也不触发onExpand事件 + BI.Msg.toast("Please Wait。", { + level: "warning" + }); // 不展开节点,也不触发onExpand事件 return false; } @@ -184,6 +186,9 @@ BI.TreeView = BI.inherit(BI.Pane, { } function beforeCheck (treeId, treeNode) { + if (treeNode.disabled) { + return false; + } // 下面主动修改了node的halfCheck属性, 节点属性的判断依赖halfCheck,改之前就获取一下 var status = treeNode.getCheckStatus(); treeNode.halfCheck = false; @@ -213,14 +218,23 @@ BI.TreeView = BI.inherit(BI.Pane, { } function onCheck (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } self._selectTreeNode(treeId, treeNode); } function onExpand (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } treeNode.halfCheck = false; } function onCollapse (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } } return setting; @@ -335,22 +349,39 @@ BI.TreeView = BI.inherit(BI.Pane, { var ns = BI.Tree.arrayFormat(nodes); BI.each(ns, function (i, n) { n.isParent = n.isParent || n.parent; - n.value = BI.isUndefined(n.value) ? n.text : n.value; - n.text = BI.isUndefined(n.text) ? n.value : n.text; - if (n.text === null) { - n.text = ""; - } + // n.value = BI.isUndefined(n.value) ? n.text : n.value; + // n.text = BI.isUndefined(n.text) ? n.value : n.text; + // if (n.text === null) { + // n.text = ""; + // } if (BI.isNull(n.title)) { n.title = n.text; } - // 处理标红 - if (BI.isNotNull(n.text)) { - if (BI.isKey(o.paras.keyword)) { - n.text = BI.$("
    ").__textKeywordMarked__(BI.Text.formatText(n.text + ""), o.paras.keyword, n.py).html(); - } else { - n.text = BI.htmlEncode(BI.Text.formatText(n.text + "")); - } + if (n.disabled) { + n.title = n.warningTitle || n.title; } + var text = BI.createWidget(BI.extend({ + cls: "tree-node-text", + css: { + display: "inline" + }, + whiteSpace: "nowrap", + root: true, + keyword: o.paras.keyword + }, n, { + type: "bi.text" + })); + var fragment = BI.Widget._renderEngine.createElement("
    "); + fragment.append(text.element[0]); + n.text = fragment.html(); + // // 处理标红 + // if (BI.isNotNull(n.text)) { + // if (BI.isKey(o.paras.keyword)) { + // n.text = BI.$("
    ").__textKeywordMarked__(BI.Text.formatText(n.text + ""), o.paras.keyword, n.py).html(); + // } else { + // n.text = BI.htmlEncode(BI.Text.formatText(n.text + "")); + // } + // } }); return nodes; }, diff --git a/src/case/ztree/1.asynctree.js b/src/case/ztree/1.asynctree.js index 9bff9ee63..261f2d112 100644 --- a/src/case/ztree/1.asynctree.js +++ b/src/case/ztree/1.asynctree.js @@ -59,6 +59,9 @@ BI.AsyncTree = BI.inherit(BI.TreeView, { }; function onClick (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } var zTree = BI.$.fn.zTree.getZTreeObj(treeId); // 当前点击节点的状态是半选,且为true_part, 则将其改为false_part,使得点击半选后切换到的是全选 var checked = treeNode.checked; @@ -70,6 +73,9 @@ BI.AsyncTree = BI.inherit(BI.TreeView, { } function beforeCheck (treeId, treeNode) { + if (treeNode.disabled) { + return false; + } // 下面主动修改了node的halfCheck属性, 节点属性的判断依赖halfCheck,改之前就获取一下 var status = treeNode.getCheckStatus(); treeNode.halfCheck = false; @@ -98,18 +104,30 @@ BI.AsyncTree = BI.inherit(BI.TreeView, { } function beforeExpand (treeId, treeNode) { + if (treeNode.disabled) { + return false; + } self._beforeExpandNode(treeId, treeNode); } function onCheck (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } self._selectTreeNode(treeId, treeNode); } function onExpand (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } treeNode.halfCheck = false; } function onCollapse (event, treeId, treeNode) { + if (treeNode.disabled) { + return false; + } treeNode.halfCheck = false; } @@ -245,4 +263,4 @@ BI.AsyncTree = BI.inherit(BI.TreeView, { } }); -BI.shortcut("bi.async_tree", BI.AsyncTree); \ No newline at end of file +BI.shortcut("bi.async_tree", BI.AsyncTree); diff --git a/src/case/ztree/jquery.ztree.excheck-3.5.js b/src/case/ztree/jquery.ztree.excheck-3.5.js index ea1e9d277..e28915a6f 100644 --- a/src/case/ztree/jquery.ztree.excheck-3.5.js +++ b/src/case/ztree/jquery.ztree.excheck-3.5.js @@ -455,7 +455,7 @@ chClass += ' bi-checkbox checkbox-content'; break; } - return chClass; + return chClass + (node.disabled ? " disabled" : ""); }, repairAllChk: function(setting, checked) { if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) { diff --git a/src/component/allvaluechooser/abstract.allvaluechooser.js b/src/component/allvaluechooser/abstract.allvaluechooser.js index 1f30e8de8..90cd4afd0 100644 --- a/src/component/allvaluechooser/abstract.allvaluechooser.js +++ b/src/component/allvaluechooser/abstract.allvaluechooser.js @@ -24,6 +24,9 @@ BI.AbstractAllValueChooser = BI.inherit(BI.Widget, { _valueFormatter: function (v) { var text = v; + if (this.options.valueFormatter) { + return this.options.valueFormatter(v); + } if (BI.isNotNull(this.items)) { BI.some(this.items, function (i, item) { // 把value都换成字符串 diff --git a/src/component/allvaluechooser/combo.allvaluechooser.js b/src/component/allvaluechooser/combo.allvaluechooser.js index ac0f03b11..11494b584 100644 --- a/src/component/allvaluechooser/combo.allvaluechooser.js +++ b/src/component/allvaluechooser/combo.allvaluechooser.js @@ -27,6 +27,7 @@ BI.AllValueChooserCombo = BI.inherit(BI.AbstractAllValueChooser, { } this.combo = BI.createWidget({ type: "bi.multi_select_combo", + simple: o.simple, text: o.text, element: this, itemsCreator: BI.bind(this._itemsCreator, this), diff --git a/src/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.js b/src/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.js index 213d56ff7..2ac30295b 100644 --- a/src/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.js +++ b/src/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.js @@ -12,6 +12,7 @@ BI.AllValueMultiTextValueCombo = BI.inherit(BI.Widget, { var value = this._digestValue(o.value); return { type: "bi.search_multi_text_value_combo", + simple: o.simple, text: o.text, height: o.height, items: o.items, diff --git a/src/component/form/form.field.js b/src/component/form/form.field.js new file mode 100644 index 000000000..e6c11a924 --- /dev/null +++ b/src/component/form/form.field.js @@ -0,0 +1,96 @@ +/** + * @author windy + * @version 2.0 + * Created by windy on 2022/1/11 + */ + BI.FormField = BI.inherit(BI.Widget, { + + props: { + baseCls: "bi-form-field", + label: "", + el: {}, + labelAlign: "right", // 文字默认右对齐 + validate: function () { + return true; + } // 默认返回true + }, + + render: function () { + var self = this, o = this.options; + + var field = { + type: "bi.absolute", + items: [{ + el: BI.extend({}, o.el, { + ref: function (_ref) { + self.field = _ref; + o.el.ref && o.el.ref.call(this, _ref); + }, + height: o.el.height || 28, + listeners: BI.concat(o.el.listeners, [{ + eventName: "EVENT_CHANGE", + action: function () { + self.fireEvent("EVENT_CHANGE"); + } + }, { + eventName: "EVENT_CONFIRM", + action: function () { + self.fireEvent("EVENT_CONFIRM"); + } + }]) + }), + left: 0, + bottom: 0, + right: 0, + top: 0 + }, { + el: { + type: "bi.label", + cls: "error-tip bi-error", + ref: function (_ref) { + self.error = _ref; + }, + invisible: true + }, + bottom: -20, + left: 0, + right: 0, + height: 20 + }] + }; + + return { + type: "bi.vertical_adapt", + columnSize: ["auto", "fill"], + verticalAlign: BI.VerticalAlign.Stretch, + items: BI.isKey(o.label) ? [{ + el: { + type: "bi.label", + textAlign: o.labelAlign, + text: o.label, + width: o.labelWidth, + rgap: 20 // 表单文字与右侧输入间距均为20px + } + }, field] : [field] + }; + }, + + getValue: function () { + return this.field.getValue(); + }, + + validate: function () { + var isValid = this.validateWithNoTip(); + !isValid && this.error.setText(this.options.tip(this.field.getValue(), this.field)); + this.error.setVisible(!isValid); + this.field.element[isValid ? "removeClass" : "addClass"]("bi-error"); + + return isValid; + }, + + validateWithNoTip: function () { + return this.options.validate(this.field.getValue(), this.field); + } +}); + +BI.shortcut("bi.form_field", BI.FormField); diff --git a/src/component/form/form.js b/src/component/form/form.js new file mode 100644 index 000000000..27734455f --- /dev/null +++ b/src/component/form/form.js @@ -0,0 +1,93 @@ +/** + * @author windy + * @version 2.0 + * Created by windy on 2022/1/11 + */ + BI.Form = BI.inherit(BI.Widget, { + + props: { + baseCls: "bi-form", + labelAlign: "right", + layout: { + type: "bi.vertical", + vgap: 20 + }, + items: [{ + validate: BI.emptyFn, + tip: BI.emptyFn, + label: "", + el: {} + }], + labelWidth: "" + }, + + render: function () { + var self = this, o = this.options; + + return { + type: "bi.button_group", + items: this._createItems(), + layouts: [o.layout], + ref: function (ref) { + self.group = ref; + } + }; + }, + + _createItems: function () { + var self = this; + var o = this.options; + + return BI.map(o.items, function (idx, item) { + return { + type: "bi.form_field", + height: item.el.height || 28, + labelAlign: o.labelAlign, + labelWidth: o.labelWidth, + el: item.el, + label: item.label, + tip: item.tip, + validate: item.validate, + listeners: [{ + eventName: "EVENT_CHANGE", + action: function () { + self.fireEvent(BI.Form.EVENT_CHANGE, this.validate()); + } + }] + }; + }); + }, + + isAllValid: function () { + return !BI.some(this.validateWithNoTip(), function (idx, v) { + return !v; + }); + }, + + validateWithNoTip: function () { + var validInfo = []; + BI.each(this.group.getAllButtons(), function (idx, button) { + validInfo.push(button.validateWithNoTip()); + }); + + return validInfo; + }, + + validate: function () { + var validInfo = []; + BI.each(this.group.getAllButtons(), function (idx, button) { + validInfo.push(button.validate()); + }); + + return validInfo; + }, + + getValue: function () { + return !this.isAllValid() ? null : BI.map(this.group.getAllButtons(), function (idx, button) { + return button.getValue(); + }); + } +}); + +BI.Form.EVENT_CHANGE = "EVENT_CHANGE"; +BI.shortcut("bi.custom_form", BI.Form); diff --git a/src/component/treevaluechooser/abstract.treevaluechooser.js b/src/component/treevaluechooser/abstract.treevaluechooser.js index cf00c985b..5b3a1f580 100644 --- a/src/component/treevaluechooser/abstract.treevaluechooser.js +++ b/src/component/treevaluechooser/abstract.treevaluechooser.js @@ -14,6 +14,9 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { _valueFormatter: function (v) { var text = v; + if (this.options.valueFormatter) { + return this.options.valueFormatter(v); + } if (BI.isNotNull(this.items)) { BI.some(this.items, function (i, item) { if (item.value === v || item.value + "" === v) { @@ -126,7 +129,8 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { pId: pId, text: node.text + (llen > 0 ? ("(" + BI.i18nText("BI-Basic_Altogether") + llen + BI.i18nText("BI-Basic_Count") + ")") : ""), value: node.value, - open: true + open: true, + disabled: node.disabled }); } }, @@ -460,7 +464,8 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { open: isOpen, checked: checked, halfCheck: half, - flag: flag + flag: flag, + disabled: node.disabled }); } @@ -543,7 +548,8 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { isParent: nodes[i].getChildrenLength() > 0, checked: state[0], halfCheck: state[1], - open: o.open + open: o.open, + disabled: nodes[i].disabled }); } // 如果指定节点全部打开 @@ -553,6 +559,7 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { BI.each(nodes, function (idx, node) { allNodes = BI.concat(allNodes, self._getAllChildren(parentValues.concat([node.value]))); }); + var lastFind; BI.each(allNodes, function (idx, node) { var valueMap = dealWithSelectedValue(node.parentValues, selectedValues); // REPORT-24409 fix: 设置节点全部展开,添加的节点没有给状态 @@ -563,7 +570,13 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { if (find) { parentCheckState.checked = find.halfCheck ? false : find.checked; parentCheckState.half = find.halfCheck; + // 默认展开也需要重置父节点的halfCheck + if (BI.isNotNull(lastFind) && (lastFind !== find || allNodes.length - 1 === idx)) { + lastFind.half = lastFind.halfCheck; + lastFind.halfCheck = false; + } } + lastFind = find; var state = getCheckState(node.value, node.parentValues, valueMap, parentCheckState); result.push({ id: node.id, @@ -574,7 +587,8 @@ BI.AbstractTreeValueChooser = BI.inherit(BI.Widget, { isParent: node.getChildrenLength() > 0, checked: state[0], halfCheck: state[1], - open: self.options.open + open: self.options.open, + disabled: node.disabled }); }); } diff --git a/src/component/treevaluechooser/abstract.treevaluechooser.list.js b/src/component/treevaluechooser/abstract.treevaluechooser.list.js index 048a656f8..0a44af0f1 100644 --- a/src/component/treevaluechooser/abstract.treevaluechooser.list.js +++ b/src/component/treevaluechooser/abstract.treevaluechooser.list.js @@ -145,7 +145,8 @@ BI.AbstractListTreeValueChooser = BI.inherit(BI.AbstractTreeValueChooser, { open: isOpen, checked: checked, halfCheck: false, - flag: flag + flag: flag, + disabled: node.disabled }); } @@ -218,7 +219,8 @@ BI.AbstractListTreeValueChooser = BI.inherit(BI.AbstractTreeValueChooser, { isParent: nodes[i].getChildrenLength() > 0, checked: checked, halfCheck: false, - open: o.open + open: o.open, + disabled: nodes[i].disabled }); } // 如果指定节点全部打开 @@ -240,7 +242,8 @@ BI.AbstractListTreeValueChooser = BI.inherit(BI.AbstractTreeValueChooser, { isParent: node.getChildrenLength() > 0, checked: checked, halfCheck: false, - open: o.open + open: o.open, + disabled: node.disabled }); }); } diff --git a/src/component/treevaluechooser/combo.listtreevaluechooser.js b/src/component/treevaluechooser/combo.listtreevaluechooser.js index 97a682a87..fb6b3dfa8 100644 --- a/src/component/treevaluechooser/combo.listtreevaluechooser.js +++ b/src/component/treevaluechooser/combo.listtreevaluechooser.js @@ -26,6 +26,7 @@ BI.ListTreeValueChooserInsertCombo = BI.inherit(BI.AbstractListTreeValueChooser, } this.combo = BI.createWidget({ type: "bi.multi_tree_list_combo", + simple: o.simple, isNeedAdjustWidth: o.isNeedAdjustWidth, element: this, text: o.text, @@ -101,6 +102,18 @@ BI.ListTreeValueChooserInsertCombo = BI.inherit(BI.AbstractListTreeValueChooser, this._initData(items); } this.combo.populate(); + }, + + focus: function () { + this.combo.focus(); + }, + + blur: function () { + this.combo.blur(); + }, + + setWaterMark: function (v) { + this.combo.setWaterMark(v); } }); diff --git a/src/component/treevaluechooser/combo.treevaluechooser.insert.js b/src/component/treevaluechooser/combo.treevaluechooser.insert.js index 07c4ad9ec..ec60a0a4a 100644 --- a/src/component/treevaluechooser/combo.treevaluechooser.insert.js +++ b/src/component/treevaluechooser/combo.treevaluechooser.insert.js @@ -26,6 +26,7 @@ BI.TreeValueChooserInsertCombo = BI.inherit(BI.AbstractTreeValueChooser, { } this.combo = BI.createWidget({ type: "bi.multi_tree_insert_combo", + simple: o.simple, isNeedAdjustWidth: o.isNeedAdjustWidth, allowEdit: o.allowEdit, text: o.text, @@ -100,6 +101,18 @@ BI.TreeValueChooserInsertCombo = BI.inherit(BI.AbstractTreeValueChooser, { this._initData(items); } this.combo.populate(); + }, + + focus: function () { + this.combo.focus(); + }, + + blur: function () { + this.combo.blur(); + }, + + setWaterMark: function (v) { + this.combo.setWaterMark(v); } }); diff --git a/src/component/treevaluechooser/combo.treevaluechooser.js b/src/component/treevaluechooser/combo.treevaluechooser.js index 452dce5bb..4eec5d7c4 100644 --- a/src/component/treevaluechooser/combo.treevaluechooser.js +++ b/src/component/treevaluechooser/combo.treevaluechooser.js @@ -26,6 +26,7 @@ BI.TreeValueChooserCombo = BI.inherit(BI.AbstractTreeValueChooser, { } this.combo = BI.createWidget({ type: "bi.multi_tree_combo", + simple: o.simple, text: o.text, allowEdit: o.allowEdit, value: o.value, @@ -104,6 +105,18 @@ BI.TreeValueChooserCombo = BI.inherit(BI.AbstractTreeValueChooser, { this._initData(items); } this.combo.populate(); + }, + + focus: function () { + this.combo.focus(); + }, + + blur: function () { + this.combo.blur(); + }, + + setWaterMark: function (v) { + this.combo.setWaterMark(v); } }); diff --git a/src/component/valuechooser/abstract.valuechooser.js b/src/component/valuechooser/abstract.valuechooser.js index bd1ab309c..a97434a84 100644 --- a/src/component/valuechooser/abstract.valuechooser.js +++ b/src/component/valuechooser/abstract.valuechooser.js @@ -22,6 +22,9 @@ BI.AbstractValueChooser = BI.inherit(BI.Widget, { _valueFormatter: function (v) { var text = v; + if (this.options.valueFormatter) { + return this.options.valueFormatter(v); + } if (BI.isNotNull(this.items)) { BI.some(this.items, function (i, item) { // 把value都换成字符串 diff --git a/src/component/valuechooser/combo.valuechooser.insert.js b/src/component/valuechooser/combo.valuechooser.insert.js index cc64d15b6..a2cdce0d9 100644 --- a/src/component/valuechooser/combo.valuechooser.insert.js +++ b/src/component/valuechooser/combo.valuechooser.insert.js @@ -23,6 +23,7 @@ BI.ValueChooserInsertCombo = BI.inherit(BI.AbstractValueChooser, { } this.combo = BI.createWidget({ type: "bi.multi_select_insert_combo", + simple: o.simple, element: this, allowEdit: o.allowEdit, text: o.text, diff --git a/src/component/valuechooser/combo.valuechooser.js b/src/component/valuechooser/combo.valuechooser.js index 9f1a05f8d..3da94a312 100644 --- a/src/component/valuechooser/combo.valuechooser.js +++ b/src/component/valuechooser/combo.valuechooser.js @@ -27,6 +27,7 @@ BI.ValueChooserCombo = BI.inherit(BI.AbstractValueChooser, { } this.combo = BI.createWidget({ type: "bi.multi_select_combo", + simple: o.simple, element: this, allowEdit: o.allowEdit, text: o.text, diff --git a/src/component/valuechooser/combo.valuechooser.nobar.js b/src/component/valuechooser/combo.valuechooser.nobar.js index 3fc381df3..927f70f81 100644 --- a/src/component/valuechooser/combo.valuechooser.nobar.js +++ b/src/component/valuechooser/combo.valuechooser.nobar.js @@ -22,6 +22,7 @@ BI.ValueChooserNoBarCombo = BI.inherit(BI.AbstractValueChooser, { return { type: "bi.multi_select_no_bar_combo", + simple: o.simple, allowEdit: o.allowEdit, text: o.text, value: this._assertValue(o.value), diff --git a/src/core/3.ob.js b/src/core/3.ob.js index 9eab5d35a..2c21a11fb 100644 --- a/src/core/3.ob.js +++ b/src/core/3.ob.js @@ -51,7 +51,11 @@ if (BI.isFunction(this.props)) { props = this.props(config); } - this.options = extend(this._defaultConfig(config), props, config); + var defaultProps = extend(this._defaultConfig(config), props); + var modifiedDefaultProps = (config && config.type && BI.OB.configFunctions[config.type + ".props"]) ? BI.reduce(BI.OB.configFunctions[config.type + ".props"], function (value, conf, index) { + return extend(conf, value.fn(defaultProps, config, value.opt)); + }, {}) : null; + this.options = extend(defaultProps, modifiedDefaultProps, config); }, _init: function () { @@ -62,9 +66,12 @@ _initListeners: function () { var self = this; if (this.options.listeners != null) { - _.each(this.options.listeners, function (lis) { - (lis.target ? lis.target : self)[lis.once ? "once" : "on"] - (lis.eventName, _.bind(lis.action, self)); + _.each(this.options.listeners, function (lis, eventName) { + if (_.isFunction(lis)) { + self.on(eventName, lis); + return; + } + (lis.target ? lis.target : self)[lis.once ? "once" : "on"](lis.eventName, _.bind(lis.action, self)); }); delete this.options.listeners; } diff --git a/src/core/4.widget.js b/src/core/4.widget.js index c3d1e0bc5..deb7758ab 100644 --- a/src/core/4.widget.js +++ b/src/core/4.widget.js @@ -7,6 +7,16 @@ */ !(function () { + var cancelAnimationFrame = + _global.cancelAnimationFrame || + _global.webkitCancelAnimationFrame || + _global.mozCancelAnimationFrame || + _global.oCancelAnimationFrame || + _global.msCancelAnimationFrame || + _global.clearTimeout; + + var requestAnimationFrame = _global.requestAnimationFrame || _global.webkitRequestAnimationFrame || _global.mozRequestAnimationFrame || _global.oRequestAnimationFrame || _global.msRequestAnimationFrame || _global.setTimeout; + function callLifeHook (self, life) { var hooks = [], hook; hook = self[life]; @@ -34,6 +44,8 @@ tag: null, disabled: false, invisible: false, + animation: "", + animationDuring: 0, invalid: false, baseCls: "", extraCls: "", @@ -133,7 +145,13 @@ if (self.options.beforeRender || self.beforeRender) { self.__async = true; - (self.options.beforeRender || self.beforeRender).call(self, render); + var beforeRenderResult = (self.options.beforeRender || self.beforeRender).call(self, render); + if (beforeRenderResult instanceof Promise) { + beforeRenderResult.then(render).catch(function (e) { + _global.console && console.error(e); + render(); + }); + } } else { self._render(); self.__afterRender(); @@ -142,7 +160,13 @@ if (this.options.beforeInit || this.beforeInit) { this.__asking = true; - (this.options.beforeInit || this.beforeInit).call(this, init); + var beforeInitResult = (this.options.beforeInit || this.beforeInit).call(this, init); + if (beforeInitResult instanceof Promise) { + beforeInitResult.then(init).catch(function (e) { + _global.console && console.error(e); + init(); + }); + } } else { init(); } @@ -206,8 +230,6 @@ } } self.element.css(css = newValue); - }, { - deep: true }); this.element.css(css); } else { @@ -224,8 +246,10 @@ return getter.call(self, self); }, (handler && function (v) { handler.call(self, self, v); - }) || BI.emptyFn, options); - this._watchers.push(watcher); + }) || BI.emptyFn, BI.extend({deep: true}, options)); + this._watchers.push(function unwatchFn () { + watcher.teardown(); + }); return watcher.value; } else { return getter(); @@ -273,10 +297,15 @@ }, _initVisual: function () { - var o = this.options; + var self = this, o = this.options; if (o.invisible) { - // 用display属性做显示和隐藏,否则jquery会在显示时将display设为block会覆盖掉display:flex属性 - this.element.css("display", "none"); + var invisible = o.invisible = BI.isFunction(o.invisible) ? this.__watch(o.invisible, function (context, newValue) { + self.setVisible(!newValue); + }) : o.invisible; + if (invisible) { + // 用display属性做显示和隐藏,否则jquery会在显示时将display设为block会覆盖掉display:flex属性 + this.element.css("display", "none"); + } } }, @@ -284,24 +313,30 @@ var self = this, o = this.options; if (o.disabled || o.invalid) { if (this.options.disabled) { - this.setEnable(false); + var disabled = o.disabled = BI.isFunction(o.disabled) ? this.__watch(o.disabled, function (context, newValue) { + self.setEnable(!newValue); + }) : o.disabled; + if (disabled) { + this.setEnable(false); + } } if (this.options.invalid) { - this.setValid(false); + var invalid = o.invalid = BI.isFunction(o.invalid) ? this.__watch(o.invalid, function (context, newValue) { + self.setValid(!newValue); + }) : o.invalid; + if (invalid) { + this.setValid(false); + } } } if (o.effect) { if (BI.isArray(o.effect)) { if (BI.isArray(o.effect[0])) { BI.each(o.effect, function (i, effect) { - self.__watch(effect[0], effect[1], { - deep: true - }); + self.__watch(effect[0], effect[1]); }); } else { - self.__watch(o.effect[0], o.effect[1], { - deep: true - }); + self.__watch(o.effect[0], o.effect[1]); } } else { this.__watch(o.effect); @@ -313,15 +348,22 @@ this._isMounted = false; }, + __initWatch: function () { + // initWatch拦截的方法 + }, + _initElement: function () { var self = this; this.__isMounting = true; - var render = BI.isFunction(this.options.render) ? this.options.render : this.render; + // 当开启worker模式时,可以通过$render来实现另一种效果 + var workerMode = BI.Providers.getProvider("bi.provider.system").getWorkerMode(); + var render = BI.isFunction(this.options.render) ? this.options.render : (workerMode ? (this.$render || this.render) : this.render); var els = render && render.call(this); els = BI.Plugin.getRender(this.options.type, els); if (BI.isPlainObject(els)) { els = [els]; } + this.__initWatch(); if (BI.isArray(els)) { BI.each(els, function (i, el) { if (el) { @@ -356,10 +398,16 @@ lifeHook !== false && !this.__async && callLifeHook(this, "beforeMount"); this._isMounted = true; this.__isMounting = false; + if (this._parent) { + if (!this._parent.isEnabled()) { + this._setEnable(false); + } + if (!this._parent.isValid()) { + this._setValid(false); + } + } for (var key in this._children) { var child = this._children[key]; - !self.isEnabled() && child._setEnable(false); - !self.isValid() && child._setValid(false); child._mount && child._mount(deep ? force : false, deep, lifeHook, predicate, layer + 1); } this._mountChildren && this._mountChildren(); @@ -453,15 +501,55 @@ } }, - setVisible: function (visible) { + _innerSetVisible: function (visible) { + var self = this, o = this.options; + var lastVisible = !o.invisible; this._setVisible(visible); if (visible === true) { // 用this.element.show()会把display属性改成block this.element.css("display", ""); this._mount(); + if (o.animation && !lastVisible) { + this.element.removeClass(o.animation + "-leave").removeClass(o.animation + "-leave-active").addClass(o.animation + "-enter"); + if (this._requestAnimationFrame) { + cancelAnimationFrame(this._requestAnimationFrame); + } + this._requestAnimationFrame = function () { + self.element.addClass(o.animation + "-enter-active"); + }; + requestAnimationFrame(this._requestAnimationFrame); + if (this._animationDuring) { + clearTimeout(this._animationDuring); + } + this._animationDuring = setTimeout(function () { + self.element.removeClass(o.animation + "-enter").removeClass(o.animation + "-enter-active"); + }, o.animationDuring); + } } else if (visible === false) { - this.element.css("display", "none"); + if (o.animation && lastVisible) { + this.element.removeClass(o.animation + "-enter").removeClass(o.animation + "-enter-active").addClass(o.animation + "-leave"); + if (this._requestAnimationFrame) { + cancelAnimationFrame(this._requestAnimationFrame); + } + this._requestAnimationFrame = function () { + self.element.addClass(o.animation + "-leave-active"); + }; + requestAnimationFrame(this._requestAnimationFrame); + if (this._animationDuring) { + clearTimeout(this._animationDuring); + } + this._animationDuring = setTimeout(function () { + self.element.removeClass(o.animation + "-leave").removeClass(o.animation + "-leave-active"); + self.element.css("display", "none"); + }, o.animationDuring); + } else { + this.element.css("display", "none"); + } } + }, + + setVisible: function (visible) { + this._innerSetVisible(visible); this.fireEvent(BI.Events.VIEW, visible); }, @@ -509,6 +597,12 @@ throw new Error("组件:组件名已存在,不能进行添加"); } widget._setParent && widget._setParent(this); + // if (this.options.disabled) { + // widget.options && (widget.options.disabled = true); + // } + // if (this.options.invalid) { + // widget.options && (widget.options.invalid = true); + // } widget.on(BI.Events.DESTROY, function () { BI.remove(self._children, this); }); @@ -627,12 +721,17 @@ }, __d: function () { - callLifeHook(this, "beforeDestroy"); - this.beforeDestroy = null; BI.each(this._children, function (i, widget) { widget && widget._unMount && widget._unMount(); }); this._children = {}; + }, + + // 主要是因为_destroy已经提供了protected方法 + __destroy: function () { + callLifeHook(this, "beforeDestroy"); + this.beforeDestroy = null; + this.__d(); this._parent = null; this._isMounted = false; callLifeHook(this, "destroyed"); @@ -640,7 +739,7 @@ }, _unMount: function () { - this.__d(); + this.__destroy(); this.fireEvent(BI.Events.UNMOUNT); this.purgeListeners(); }, @@ -678,23 +777,40 @@ // } // this._isMounted = false; // this.purgeListeners(); - this._empty(); + + // 去掉组件绑定的watcher + BI.each(this._watchers, function (i, unwatches) { + unwatches = BI.isArray(unwatches) ? unwatches : [unwatches]; + BI.each(unwatches, function (j, unwatch) { + unwatch(); + }); + }); + this._watchers && (this._watchers = []); + this.__d(); + this.element.empty(); this.element.unbind(); this._initCurrent(); this._init(); - this._mount(); // this._initRef(); }, _destroy: function () { - this.__d(); + this.__destroy(); this.element.destroy(); this.purgeListeners(); }, destroy: function () { - this.__d(); - this.element.destroy(); + var self = this, o = this.options; + this.__destroy(); + if (o.animation) { + this._innerSetVisible(false); + setTimeout(function () { + self.element.destroy(); + }, o.animationDuring); + } else { + this.element.destroy(); + } this.fireEvent(BI.Events.UNMOUNT); this.fireEvent(BI.Events.DESTROY); this._purgeRef(); @@ -757,8 +873,52 @@ } }; - BI.watch = function (watch, handler) { + BI.useContext = function (inject) { + if (BI.Model.target) { + var p = BI.Model.target; + if (inject) { + while (p) { + if (p.$$context && inject in p.$$context) { + return p; + } + p = p._parent; + } + } + } + return BI.Model.target; + }; + + BI.watch = function (vm, watch, handler) { + // 必须要保证组件当前环境存在 if (BI.Widget.current) { + if (vm instanceof BI.Model) { + var watchers = []; + if (BI.isKey(watch)) { + var k = watch; + watch = {}; + watch[k] = handler; + } + for (var key in watch) { + var innerHandler = watch[key]; + if (BI.isArray(handler)) { + for (var i = 0; i < handler.length; i++) { + watchers.push(Fix.watch(vm.model, key, innerHandler, { + store: vm + })); + } + } else { + watchers.push(Fix.watch(vm.model, key, innerHandler, { + store: vm + })); + } + } + // vm中一定有_widget + BI.Widget.current._watchers || (BI.Widget.current._watchers = []); + BI.Widget.current._watchers = BI.Widget.current._watchers.concat(watchers); + return; + } + handler = watch; + watch = vm; BI.Widget.current.$watchDelayCallbacks || (BI.Widget.current.$watchDelayCallbacks = []); BI.Widget.current.$watchDelayCallbacks.push([watch, handler]); } diff --git a/src/core/6.inject.js b/src/core/5.inject.js similarity index 75% rename from src/core/6.inject.js rename to src/core/5.inject.js index b60093e31..3cb1d15bf 100644 --- a/src/core/6.inject.js +++ b/src/core/5.inject.js @@ -31,6 +31,9 @@ } } moduleInjection[xtype] = cls; + return function () { + return BI.Modules.getModule(xtype); + }; }; var constantInjection = {}; @@ -39,6 +42,9 @@ _global.console && console.error("constant: [" + xtype + "]已经注册过了"); } constantInjection[xtype] = cls; + return function () { + return BI.Constants.getConstant(xtype); + }; }; var modelInjection = {}; @@ -47,6 +53,9 @@ _global.console && console.error("model: [" + xtype + "] 已经注册过了"); } modelInjection[xtype] = cls; + return function (config) { + return BI.Models.getModel(xtype, config); + }; }; var storeInjection = {}; @@ -55,6 +64,9 @@ _global.console && console.error("store: [" + xtype + "] 已经注册过了"); } storeInjection[xtype] = cls; + return function (config) { + return BI.Stores.getStore(xtype, config); + }; }; var serviceInjection = {}; @@ -63,6 +75,9 @@ _global.console && console.error("service: [" + xtype + "] 已经注册过了"); } serviceInjection[xtype] = cls; + return function (config) { + return BI.Services.getService(xtype, config); + }; }; var providerInjection = {}; @@ -71,10 +86,13 @@ _global.console && console.error("provider: [" + xtype + "] 已经注册过了"); } providerInjection[xtype] = cls; + return function (config) { + return BI.Providers.getProvider(xtype, config); + }; }; - var configFunctions = {}; - var runConfigFunction = BI.runConfigFunction = function (type) { + var configFunctions = BI.OB.configFunctions = {}; + var runConfigFunction = function (type) { if (!type || !configFunctions[type]) { return false; } @@ -132,6 +150,11 @@ } }; BI.config = BI.config || function (type, configFn, opt) { + if (BI.isFunction(type)) { + opt = configFn; + configFn = type; + type = "bi.provider.system"; + } opt = opt || {}; // 系统配置直接执行 @@ -153,84 +176,6 @@ fn: configFn, opt: opt }); - - // // 初始化过或者系统配置需要立刻执行 - // if (BI.initialized || "bi.provider.system" === type) { - // if (constantInjection[type]) { - // return (constantInjection[type] = configFn(constantInjection[type])); - // } - // if (providerInjection[type]) { - // if (!providers[type]) { - // providers[type] = new providerInjection[type](); - // } - // // 如果config被重新配置的话,需要删除掉之前的实例 - // if (providerInstance[type]) { - // delete providerInstance[type]; - // } - // return configFn(providers[type]); - // } - // return BI.Plugin.configWidget(type, configFn, opt); - // } - // if (!configFunctions[type]) { - // configFunctions[type] = []; - // BI.prepares.push(function () { - // var queue = configFunctions[type]; - // var dependencies = BI.Providers.getProvider("bi.provider.system").getDependencies(); - // var modules = moduleInjectionMap.components[type] - // || moduleInjectionMap.constants[type] - // || moduleInjectionMap.services[type] - // || moduleInjectionMap.stores[type] - // || moduleInjectionMap.models[type] - // || moduleInjectionMap.providers[type]; - // for (var i = 0; i < queue.length; i++) { - // var conf = queue[i]; - // var version = conf.opt.version; - // var fn = conf.fn; - // if (modules && version) { - // var findVersion = false; - // for (var j = 0; j < modules.length; j++) { - // var module = modules[i]; - // if (module && dependencies[module.moduleId] && module.version === version) { - // var minVersion = dependencies[module.moduleId].minVersion, - // maxVersion = dependencies[module.moduleId].maxVersion; - // if (minVersion && (moduleInjection[module.moduleId].version || version) < minVersion) { - // findVersion = true; - // break; - // } - // if (maxVersion && (moduleInjection[module.moduleId].version || version) > maxVersion) { - // findVersion = true; - // break; - // } - // } - // } - // if (findVersion === true) { - // _global.console && console.error("moduleId: [" + module.moduleId + "] 接口: [" + type + "] 接口版本: [" + version + "] 已过期,版本要求为:", dependencies[module.moduleId], "=>", moduleInjection[module.moduleId]); - // continue; - // } - // } - // if (constantInjection[type]) { - // constantInjection[type] = fn(constantInjection[type]); - // continue; - // } - // if (providerInjection[type]) { - // if (!providers[type]) { - // providers[type] = new providerInjection[type](); - // } - // if (providerInstance[type]) { - // delete providerInstance[type]; - // } - // fn(providers[type]); - // continue; - // } - // BI.Plugin.configWidget(type, fn); - // } - // configFunctions[type] = null; - // }); - // } - // configFunctions[type].push({ - // fn: configFn, - // opt: opt - // }); }; BI.getReference = BI.getReference || function (type, fn) { @@ -294,7 +239,7 @@ _global.console && console.error("constant: [" + type + "] 未定义"); } runConfigFunction(type); - return constantInjection[type]; + return BI.isFunction(constantInjection[type]) ? constantInjection[type]() : constantInjection[type]; } }; @@ -397,7 +342,7 @@ if (!providers[type]) { providers[type] = new providerInjection[type](); } - if (!providerInstance[type]) { + if (!providerInstance[type] && providers[type].$get) { providerInstance[type] = new (providers[type].$get())(config); } return providerInstance[type]; @@ -426,6 +371,103 @@ } }; + var kv = {}; + BI.shortcut = BI.component = BI.shortcut || function (xtype, cls) { + if (kv[xtype] != null) { + _global.console && console.error("组件: [" + xtype + "] 已经注册过了"); + } + if (cls) { + cls["xtype"] = xtype; + } + kv[xtype] = cls; + }; + + // 根据配置属性生成widget + var createWidget = function (config, context, lazy) { + var cls = kv[config.type]; + + if (!cls) { + throw new Error("组件: [" + config.type + "] 未定义"); + } + var pushed = false; + var widget = new cls(); + widget._context = BI.Widget.context || context; + if (!BI.Widget.context && context) { + pushed = true; + BI.Widget.pushContext(context); + } + callPoint(widget, config.type); + widget._initProps(config); + widget._initRoot(); + widget._constructed(); + // if (!lazy || config.element || config.root) { + widget._lazyConstructor(); + // } + pushed && BI.Widget.popContext(); + return widget; + }; + + BI.createWidget = BI.createWidget || function (item, options, context, lazy) { + item || (item = {}); + if (BI.isWidget(options)) { + context = options; + options = {}; + } else { + options || (options = {}); + } + + var el, w; + if (item.type || options.type) { + el = BI.extend({}, options, item); + } else if (item.el && (item.el.type || options.type)) { + el = BI.extend({}, options, item.el); + } + + if (el) { + runConfigFunction(el.type); + } + + // 先把准备环境准备好 + BI.init(); + + if (BI.isEmpty(item) && BI.isEmpty(options)) { + return BI.createWidget({ + type: "bi.layout" + }); + } + if (BI.isWidget(item)) { + return item; + } + if (el) { + w = BI.Plugin.getWidget(el.type, el); + if (w.type === el.type) { + if (BI.Plugin.hasObject(el.type)) { + w.listeners = (w.listeners || []).concat([{ + eventName: BI.Events.MOUNT, + action: function () { + BI.Plugin.getObject(el.type, this); + } + }]); + } + return createWidget(w, context, lazy); + } + return BI.createWidget(w, options, context, lazy); + } + if (BI.isWidget(item.el)) { + return item.el; + } + throw new Error("组件:无法根据item创建组件", item); + }; + + BI._lazyCreateWidget = BI._lazyCreateWidget || function (item, options, context) { + return BI.createWidget(item, options, context, true); + }; + + BI.createElement = BI.createElement || function () { + var widget = BI.createWidget.apply(this, arguments); + return widget.element; + }; + BI.getResource = BI.getResource || function (type, config) { if (BI.isNotNull(constantInjection[type])) { return BI.Constants.getConstant(type); diff --git a/src/core/5.shortcut.js b/src/core/5.shortcut.js deleted file mode 100644 index 95e488214..000000000 --- a/src/core/5.shortcut.js +++ /dev/null @@ -1,98 +0,0 @@ -(function () { - var kv = {}; - BI.shortcut = BI.component = BI.shortcut || function (xtype, cls) { - if (kv[xtype] != null) { - _global.console && console.error("组件: [" + xtype + "] 已经注册过了"); - } - if (cls) { - cls["xtype"] = xtype; - } - kv[xtype] = cls; - }; - - // 根据配置属性生成widget - var createWidget = function (config, context, lazy) { - var cls = kv[config.type]; - - if (!cls) { - throw new Error("组件: [" + config.type + "] 未定义"); - } - var pushed = false; - var widget = new cls(); - widget._context = BI.Widget.context || context; - if (!BI.Widget.context && context) { - pushed = true; - BI.Widget.pushContext(context); - } - widget._initProps(config); - widget._initRoot(); - widget._constructed(); - // if (!lazy || config.element || config.root) { - widget._lazyConstructor(); - // } - pushed && BI.Widget.popContext(); - return widget; - }; - - BI.createWidget = BI.createWidget || function (item, options, context, lazy) { - item || (item = {}); - if (BI.isWidget(options)) { - context = options; - options = {}; - } else { - options || (options = {}); - } - - var el, w; - if (item.type || options.type) { - el = BI.extend({}, options, item); - } else if (item.el && (item.el.type || options.type)) { - el = BI.extend({}, options, item.el); - } - - if (el) { - BI.runConfigFunction(el.type); - } - - // 先把准备环境准备好 - BI.init(); - - if (BI.isEmpty(item) && BI.isEmpty(options)) { - return BI.createWidget({ - type: "bi.layout" - }); - } - if (BI.isWidget(item)) { - return item; - } - if (el) { - w = BI.Plugin.getWidget(el.type, el); - if (w.type === el.type) { - if (BI.Plugin.hasObject(el.type)) { - w.listeners = (w.listeners || []).concat([{ - eventName: BI.Events.MOUNT, - action: function () { - BI.Plugin.getObject(el.type, this); - } - }]); - } - return createWidget(w, context, lazy); - } - return BI.createWidget(w, options, context, lazy); - } - if (BI.isWidget(item.el)) { - return item.el; - } - throw new Error("组件:无法根据item创建组件", item); - }; - - BI._lazyCreateWidget = BI._lazyCreateWidget || function (item, options, context) { - return BI.createWidget(item, options, context, true); - }; - - BI.createElement = BI.createElement || function () { - var widget = BI.createWidget.apply(this, arguments); - return widget.element; - }; - -})(); diff --git a/src/core/constant/var.js b/src/core/constant/var.js index a5bad8f77..cc767737b 100644 --- a/src/core/constant/var.js +++ b/src/core/constant/var.js @@ -6,6 +6,7 @@ _.extend(BI, { MAX: 0xfffffffffffffff, MIN: -0xfffffffffffffff, EVENT_RESPONSE_TIME: 200, + EVENT_BLUR: true, zIndex_layer: 1e5, zIndex_popover: 1e6, zIndex_popup: 1e7, diff --git a/src/core/controller/controller.drawer.js b/src/core/controller/controller.drawer.js new file mode 100644 index 000000000..68fdadbc8 --- /dev/null +++ b/src/core/controller/controller.drawer.js @@ -0,0 +1,161 @@ +/** + * guy + * popover弹出层控制器, z-index在100w层级 + * @class BI.popoverController + * @extends BI.Controller + */ +BI.DrawerController = BI.inherit(BI.Controller, { + props: function () { + return { + modal: true, // 模态窗口 + render: "body" + }; + }, + + init: function () { + this.modal = this.options.modal; + this.floatManager = {}; + this.floatLayer = {}; + this.floatContainer = {}; + this.floatOpened = {}; + this.zindexMap = {}; + }, + + create: function (name, options, context) { + if (this.has(name)) { + return this; + } + var popover = BI.createWidget(options || {}, { + type: "bi.drawer" + }, context); + this.add(name, popover, options, context); + return this; + }, + + open: function (name) { + var self = this, o = this.options; + if (!this.has(name)) { + return this; + } + if (!this.floatOpened[name]) { + this.floatOpened[name] = true; + var container = this.floatContainer[name]; + var zIndex = BI.Popovers._getZIndex(); + container.element.css("zIndex", zIndex); + this.modal && container.element.__hasZIndexMask__(this.zindexMap[name]) && container.element.__releaseZIndexMask__(this.zindexMap[name]); + this.zindexMap[name] = zIndex; + if (this.modal) { + var mask = container.element.__buildZIndexMask__(BI.Popovers._getZIndex()); + mask.click(function () { + mask.destroy(); + self.get(name).close(); + }); + } + this.get(name).setZindex(BI.Popovers._getZIndex()); + this.floatContainer[name].visible(); + var popover = this.get(name); + popover.show && popover.show(); + } + return this; + }, + + close: function (name) { + if (!this.has(name)) { + return this; + } + if (this.floatOpened[name]) { + delete this.floatOpened[name]; + this.floatContainer[name].invisible(); + this.modal && this.floatContainer[name].element.__releaseZIndexMask__(this.zindexMap[name]); + } + return this; + }, + + show: function (name) { + return this.open(name); + }, + + hide: function (name) { + return this.close(name); + }, + + isVisible: function (name) { + return this.has(name) && this.floatOpened[name] === true; + }, + + add: function (name, popover, options, context) { + var self = this; + options || (options = {}); + if (this.has(name)) { + return this; + } + this.floatContainer[name] = BI.createWidget({ + type: "bi.absolute", + cls: "bi-popup-view", + items: [{ + el: (this.floatLayer[name] = BI.createWidget({ + type: "bi.absolute", + items: [popover] + }, context)), + left: 0, + right: 0, + top: 0, + bottom: 0 + }] + }); + this.floatManager[name] = popover; + (function (key) { + popover.on(BI.Drawer.EVENT_CLOSE, function () { + self.close(key); + }); + })(name); + BI.createWidget({ + type: "bi.absolute", + element: options.container || this.options.render, + items: [{ + el: this.floatContainer[name], + left: 0, + right: 0, + top: 0, + bottom: 0 + }] + }); + return this; + }, + + get: function (name) { + return this.floatManager[name]; + }, + + has: function (name) { + return BI.isNotNull(this.floatManager[name]); + }, + + remove: function (name) { + if (!this.has(name)) { + return this; + } + this.floatContainer[name].destroy(); + this.modal && this.floatContainer[name].element.__releaseZIndexMask__(this.zindexMap[name]); + delete this.floatManager[name]; + delete this.floatLayer[name]; + delete this.zindexMap[name]; + delete this.floatContainer[name]; + delete this.floatOpened[name]; + return this; + }, + + removeAll: function () { + var self = this; + BI.each(this.floatContainer, function (name, container) { + container.destroy(); + self.modal && self.floatContainer[name].element.__releaseZIndexMask__(self.zindexMap[name]); + }); + this.floatManager = {}; + this.floatLayer = {}; + this.floatContainer = {}; + this.floatOpened = {}; + this.zindexMap = {}; + return this; + } +}); diff --git a/src/core/controller/controller.popover.js b/src/core/controller/controller.popover.js index fbe7e29d9..83f1e8d5c 100644 --- a/src/core/controller/controller.popover.js +++ b/src/core/controller/controller.popover.js @@ -48,7 +48,8 @@ BI.PopoverController = BI.inherit(BI.Controller, { this.floatContainer[name].visible(); var popover = this.get(name); popover.show && popover.show(); - var W = BI.Widget._renderEngine.createElement(this.options.render).width(), H = BI.Widget._renderEngine.createElement(this.options.render).height(); + var W = BI.Widget._renderEngine.createElement(this.options.render).width(), + H = BI.Widget._renderEngine.createElement(this.options.render).height(); var w = popover.element.width(), h = popover.element.height(); var left = (W - w) / 2, top = (H - h) / 2; if (left < 0) { @@ -163,5 +164,9 @@ BI.PopoverController = BI.inherit(BI.Controller, { this.floatOpened = {}; this.zindexMap = {}; return this; + }, + + _getZIndex: function () { + return this.zindex++; } }); diff --git a/src/core/9.popper.js b/src/core/controller/popper.js similarity index 100% rename from src/core/9.popper.js rename to src/core/controller/popper.js diff --git a/src/core/func/alias.js b/src/core/func/alias.js index da5af0fb6..3738a83ea 100644 --- a/src/core/func/alias.js +++ b/src/core/func/alias.js @@ -417,16 +417,17 @@ "\"": """, "<": "<", ">": ">", - " ": " " + "\x20": " ", + "\n": " " }; BI.htmlEncode = function (text) { - return BI.isNull(text) ? "" : BI.replaceAll(text + "", "&|\"|<|>|\\s", function (v) { - return SPECIAL_TAGS[v] ? SPECIAL_TAGS[v] : " "; + return BI.isNull(text) ? "" : BI.replaceAll(text + "", BI.keys(SPECIAL_TAGS).join("|"), function (v) { + return SPECIAL_TAGS[v] ? SPECIAL_TAGS[v] : v; }); }; // html decode BI.htmlDecode = function (text) { - return BI.isNull(text) ? "" : BI.replaceAll(text + "", "&|"|<|>| ", function (v) { + return BI.isNull(text) ? "" : BI.replaceAll(text + "", BI.values(SPECIAL_TAGS).join("|"), function (v) { switch (v) { case "&": return "&"; @@ -437,8 +438,11 @@ case ">": return ">"; case " ": - default: return " "; + case " ": + return "\n"; + default: + return v; } }); }; diff --git a/src/core/func/function.js b/src/core/func/function.js index 05c8fe78a..2d3f9a3e8 100644 --- a/src/core/func/function.js +++ b/src/core/func/function.js @@ -40,16 +40,14 @@ _.extend(BI.Func, { * @param items * @param keyword * @param param 搜索哪个属性 - * @param clone 是否需要deepClone */ - getSearchResult: function (items, keyword, param, clone) { + getSearchResult: function (items, keyword, param) { var isArray = BI.isArray(items); items = isArray ? BI.flatten(items) : items; param || (param = "text"); - BI.isNull(clone) && (clone = true); if (!BI.isKey(keyword)) { return { - find: clone ? BI.deepClone(items) : items, + find: items, match: isArray ? [] : {} }; } @@ -61,7 +59,6 @@ _.extend(BI.Func, { if (BI.isNull(item)) { return; } - clone && (item = BI.deepClone(item)); t = BI.stripEL(item); text = BI.find([t[param], t.text, t.value, t.name, t], function (index, val) { return BI.isNotNull(val); diff --git a/src/core/h.js b/src/core/h.js index c3c117f91..b768b1415 100644 --- a/src/core/h.js +++ b/src/core/h.js @@ -39,7 +39,20 @@ BI.h = function (type, props, children) { right: children }, props); } + if (children.length === 1) { + if (BI.isKey(children[0])) { + return BI.extend({ + type: type + }, { text: children[0] }, props); + } + if (BI.isFunction(children[0])) { + return BI.extend({ + type: type + }, { items: children[0] }, props); + } + } + return BI.extend({ type: type - }, children.length > 0 ? {items: children} : {}, props); + }, children.length > 0 ? { items: children } : {}, props); }; diff --git a/src/core/logic/logic.js b/src/core/logic/logic.js index e5de9d24e..fab052e19 100644 --- a/src/core/logic/logic.js +++ b/src/core/logic/logic.js @@ -30,7 +30,7 @@ BI.LogicFactory = { case BI.LogicFactory.Type.HorizontalFill: logic = BI.HorizontalFillLayoutLogic; break; - default : + default: logic = BI.Logic; break; } @@ -43,7 +43,6 @@ BI.LogicFactory = { case BI.Direction.Bottom: case BI.Direction.Custom: return BI.LogicFactory.Type.Vertical; - break; case BI.Direction.Left: case BI.Direction.Right: return BI.LogicFactory.Type.Horizontal; @@ -78,4 +77,4 @@ BI.LogicFactory = { } return items; } -}; \ No newline at end of file +}; diff --git a/src/core/logic/logic.layout.js b/src/core/logic/logic.layout.js index d86d914ba..21ce0f9b8 100644 --- a/src/core/logic/logic.layout.js +++ b/src/core/logic/logic.layout.js @@ -19,7 +19,9 @@ BI.VerticalLayoutLogic = BI.inherit(BI.Logic, { lgap: 0, rgap: 0, tgap: 0, - bgap: 0 + bgap: 0, + innerVgap: 0, + innerHgap: 0 }; }, @@ -41,6 +43,8 @@ BI.VerticalLayoutLogic = BI.inherit(BI.Logic, { rgap: o.rgap, tgap: o.tgap, bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, items: o.items }; } @@ -68,7 +72,9 @@ BI.HorizontalLayoutLogic = BI.inherit(BI.Logic, { lgap: 0, rgap: 0, tgap: 0, - bgap: 0 + bgap: 0, + innerVgap: 0, + innerHgap: 0 }; }, @@ -90,6 +96,8 @@ BI.HorizontalLayoutLogic = BI.inherit(BI.Logic, { rgap: o.rgap, tgap: o.tgap, bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, items: o.items }; } @@ -163,7 +171,9 @@ BI.HorizontalFillLayoutLogic = BI.inherit(BI.Logic, { lgap: 0, rgap: 0, tgap: 0, - bgap: 0 + bgap: 0, + innerVgap: 0, + innerHgap: 0 }; }, @@ -190,6 +200,8 @@ BI.HorizontalFillLayoutLogic = BI.inherit(BI.Logic, { rgap: o.rgap, tgap: o.tgap, bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, items: o.items }; } diff --git a/src/core/platform/web/config.js b/src/core/platform/web/config.js index ccfd4fe8a..0076811fd 100644 --- a/src/core/platform/web/config.js +++ b/src/core/platform/web/config.js @@ -2,17 +2,35 @@ BI.prepares.push(function () { // 注册布局 // adapt类布局优先级规则 - // 1、在非IE且支持flex的浏览器下使用flex布局 - // 2、IE或者不支持flex的浏览器下使用inline布局 - // 3、在2的情况下如果布局的items大于1的话使用display:table的布局 - // 4、在3的情况下如果IE版本低于8使用table标签布局 - var _isSupportFlex; + // 1、支持flex的浏览器下使用flex布局 + // 2、不支持flex的浏览器下使用inline布局 + // 3、当列宽既需要自动列宽又需要自适应列宽时,inline布局也处理不了了。当横向出滚动条时使用table布局,不出滚动条时使用float布局 + var _isSupportFlex, _isSupportGrid; var isSupportFlex = function () { if (_isSupportFlex == null) { _isSupportFlex = !!(BI.isSupportCss3 && BI.isSupportCss3("flex")); } return _isSupportFlex; }; + var isSupportGrid = function () { + if (_isSupportGrid == null) { + _isSupportGrid = !!(BI.isSupportCss3 && BI.isSupportCss3("grid")); + } + return _isSupportGrid; + }; + // 判断浏览器是否支持sticky 属性 + var isSupportSticky = (function () { + var vendorList = ["", "-webkit-", "-ms-", "-moz-", "-o-"], + vendorListLength = vendorList.length, + stickyElement = document.createElement("div"); + for (var i = 0; i < vendorListLength; i++) { + stickyElement.style.position = vendorList[i] + "sticky"; + if (stickyElement.style.position !== "") { + return true; + } + } + return false; + })(); BI.Plugin.configWidget("bi.horizontal", function (ob) { var supportFlex = isSupportFlex(); // // 在横向自适应场景下我们需要使用table的自适应撑出滚动条的特性(flex处理不了这种情况) @@ -57,6 +75,9 @@ BI.prepares.push(function () { horizontalAlign: BI.HorizontalAlign.Stretch }, ob, {type: "bi.table_adapt"}); } + if (BI.Providers.getProvider("bi.provider.system").getResponsiveMode()) { + return BI.extend({}, ob, {type: "bi.responsive_inline"}); + } return ob; }); BI.Plugin.configWidget("bi.center_adapt", function (ob) { @@ -141,8 +162,43 @@ BI.prepares.push(function () { scrolly: false }, ob, {type: "bi.flex_vertical"}); } + if (ob.scrollable === true || ob.scrollx === true || ob.scrolly === true) { + // 有滚动条,降级到table布局处理 + return BI.extend({}, ob, { + type: "bi.td", + items: BI.map(ob.items, function (i, item) { + return [item]; + }) + }); + } + var hasAuto = false; + if (ob.rowSize && ob.rowSize.length > 0) { + if (ob.rowSize.indexOf("") >= 0) { + hasAuto = true; + } + } else { + BI.each(ob.items, function (i, item) { + if (BI.isNull(item.height) || item.height === "") { + hasAuto = true; + } + }); + } + if (hasAuto) { + // 有自动高的时候 + return BI.extend({}, ob, {type: "bi.vtape_auto"}); + } return BI.extend({}, ob, {type: "bi.vtape"}); }); + BI.Plugin.configWidget("bi.horizontal_sticky", function (ob) { + if (!isSupportSticky) { + return BI.extend({}, ob, {type: "bi.horizontal_fill"}); + } + }); + BI.Plugin.configWidget("bi.vertical_sticky", function (ob) { + if (!isSupportSticky) { + return BI.extend({}, ob, {type: "bi.vertical_fill"}); + } + }); BI.Plugin.configWidget("bi.left_right_vertical_adapt", function (ob) { if (isSupportFlex()) { @@ -155,19 +211,32 @@ BI.prepares.push(function () { }); BI.Plugin.configWidget("bi.flex_horizontal", function (ob) { if (ob.scrollable === true || ob.scrollx !== false) { - if (ob.hgap > 0 || ob.rgap > 0) {// flex中最后一个margin-right不生效 + if (ob.hgap > 0 || ob.lgap > 0 || ob.rgap > 0) { + if (BI.Providers.getProvider("bi.provider.system").getResponsiveMode()) { + return BI.extend({}, ob, {type: "bi.responsive_flex_scrollable_horizontal"}); + } return BI.extend({}, ob, {type: "bi.flex_scrollable_horizontal"}); } } + if (BI.Providers.getProvider("bi.provider.system").getResponsiveMode()) { + return BI.extend({}, ob, {type: "bi.responsive_flex_horizontal"}); + } }); BI.Plugin.configWidget("bi.flex_vertical", function (ob) { if (ob.scrollable === true || ob.scrollx === true) { - if (ob.hgap > 0 || ob.rgap > 0) {// flex中最后一个margin-right不生效 + if (ob.hgap > 0 || ob.lgap > 0 || ob.rgap > 0) { return BI.extend({}, ob, {type: "bi.flex_scrollable_vertical"}); } } }); + BI.Plugin.configWidget("bi.table", function (ob) { + if (!isSupportGrid()) { + return BI.extend({}, ob, {type: "bi.td"}); + } + return ob; + }); + BI.Plugin.configWidget("bi.radio", function (ob) { if (BI.isIE() && BI.getIEVersion() <= 9) { return BI.extend({}, ob, {type: "bi.image_radio"}); diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 63583c0c3..52976e103 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -149,157 +149,6 @@ } }); - BI.extend(BI.DOM, { - isColor: function (color) { - return color && (this.isRGBColor(color) || this.isHexColor(color)); - }, - - isRGBColor: function (color) { - if (!color) { - return false; - } - return color.substr(0, 3) === "rgb"; - }, - - isHexColor: function (color) { - if (!color) { - return false; - } - return color[0] === "#" && color.length === 7; - }, - - isDarkColor: function (hex) { - if (!hex || !this.isHexColor(hex)) { - return false; - } - var rgb = this.rgb2json(this.hex2rgb(hex)); - var grayLevel = Math.round(rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114); - if (grayLevel < 192/** 网上给的是140**/) { - return true; - } - return false; - }, - - // 获取对比颜色 - getContrastColor: function (color) { - if (!color || !this.isColor(color)) { - return ""; - } - if (this.isDarkColor(color)) { - return "#FFFFFF"; - } - return "#3D4D66"; - }, - - rgb2hex: function (rgbColour) { - if (!rgbColour || rgbColour.substr(0, 3) != "rgb") { - return ""; - } - var rgbValues = rgbColour.match(/\d+(\.\d+)?/g); - var red = BI.parseInt(rgbValues[0]); - var green = BI.parseInt(rgbValues[1]); - var blue = BI.parseInt(rgbValues[2]); - - var hexColour = "#" + this.int2hex(red) + this.int2hex(green) + this.int2hex(blue); - - return hexColour; - }, - - rgb2json: function (rgbColour) { - if (!rgbColour) { - return {}; - } - if (!this.isRGBColor(rgbColour)) { - return {}; - } - var rgbValues = rgbColour.match(/\d+(\.\d+)?/g); - return { - r: BI.parseInt(rgbValues[0]), - g: BI.parseInt(rgbValues[1]), - b: BI.parseInt(rgbValues[2]) - }; - }, - - rgba2json: function (rgbColour) { - if (!rgbColour) { - return {}; - } - var rgbValues = rgbColour.match(/\d+(\.\d+)?/g); - return { - r: BI.parseInt(rgbValues[0]), - g: BI.parseInt(rgbValues[1]), - b: BI.parseInt(rgbValues[2]), - a: BI.parseFloat(rgbValues[3]) - }; - }, - - json2rgb: function (rgb) { - if (!BI.isKey(rgb.r) || !BI.isKey(rgb.g) || !BI.isKey(rgb.b)) { - return ""; - } - return "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")"; - }, - - json2rgba: function (rgba) { - if (!BI.isKey(rgba.r) || !BI.isKey(rgba.g) || !BI.isKey(rgba.b)) { - return ""; - } - return "rgba(" + rgba.r + "," + rgba.g + "," + rgba.b + "," + rgba.a + ")"; - }, - - int2hex: function (strNum) { - var hexdig = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; - - return hexdig[strNum >>> 4] + "" + hexdig[strNum & 15]; - }, - - hex2rgb: function (color) { - if (!color) { - return ""; - } - if (!this.isHexColor(color)) { - return color; - } - var tempValue = "rgb(", colorArray; - - if (color.length === 7) { - colorArray = [BI.parseInt("0x" + color.substring(1, 3)), - BI.parseInt("0x" + color.substring(3, 5)), - BI.parseInt("0x" + color.substring(5, 7))]; - } else if (color.length === 4) { - colorArray = [BI.parseInt("0x" + color.substring(1, 2)), - BI.parseInt("0x" + color.substring(2, 3)), - BI.parseInt("0x" + color.substring(3, 4))]; - } - tempValue += colorArray[0] + ","; - tempValue += colorArray[1] + ","; - tempValue += colorArray[2] + ")"; - - return tempValue; - }, - - rgba2rgb: function (rgbColor, bgColor) { - if (BI.isNull(bgColor)) { - bgColor = 1; - } - if (rgbColor.substr(0, 4) != "rgba") { - return ""; - } - var rgbValues = rgbColor.match(/\d+(\.\d+)?/g); - if (rgbValues.length < 4) { - return ""; - } - var R = BI.parseFloat(rgbValues[0]); - var G = BI.parseFloat(rgbValues[1]); - var B = BI.parseFloat(rgbValues[2]); - var A = BI.parseFloat(rgbValues[3]); - - return "rgb(" + Math.floor(255 * (bgColor * (1 - A)) + R * A) + "," + - Math.floor(255 * (bgColor * (1 - A)) + G * A) + "," + - Math.floor(255 * (bgColor * (1 - A)) + B * A) + ")"; - } - }); - BI.extend(BI.DOM, { getLeftPosition: function (combo, popup, extraWidth) { @@ -346,7 +195,8 @@ }, isInnerLeftSpaceEnough: function (combo, popup, extraWidth) { - var viewBounds = popup.element.bounds(),windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + var viewBounds = popup.element.bounds(), + windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); return BI.DOM.getInnerLeftPosition(combo, popup, extraWidth).left + viewBounds.width <= windowBounds.width; }, diff --git a/src/core/platform/web/function.js b/src/core/platform/web/function.js index 9a2f5f807..faa40307b 100644 --- a/src/core/platform/web/function.js +++ b/src/core/platform/web/function.js @@ -44,7 +44,7 @@ _.extend(BI, { if(!_global.navigator) { return false; } - return /edge/i.test(navigator.userAgent.toLowerCase()); + return /edg/i.test(navigator.userAgent.toLowerCase()); }, isChrome: function () { @@ -126,4 +126,4 @@ _.extend(BI, { } return false; } -}); \ No newline at end of file +}); diff --git a/src/core/7.plugin.js b/src/core/plugin.js similarity index 100% rename from src/core/7.plugin.js rename to src/core/plugin.js diff --git a/src/core/structure/cache.js b/src/core/structure/cache.js index dc6f78714..5f17bd630 100644 --- a/src/core/structure/cache.js +++ b/src/core/structure/cache.js @@ -47,7 +47,7 @@ BI.Cache = { }, addCookie: function (name, value, path, expiresHours) { - var cookieString = name + "=" + escape(value); + var cookieString = name + "=" + encodeURI(value); // 判断是否设置过期时间 if (expiresHours && expiresHours > 0) { var date = new Date(); @@ -62,7 +62,7 @@ BI.Cache = { }, getCookie: function (name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); - if (arr = document.cookie.match(reg)) {return unescape(arr[2]);} + if (arr = document.cookie.match(reg)) {return decodeURI(arr[2]);} return null; }, deleteCookie: function (name, path) { @@ -74,4 +74,4 @@ BI.Cache = { } document.cookie = cookieString; } -}; \ No newline at end of file +}; diff --git a/src/core/system.js b/src/core/system.js index 3fae2a600..123bd88be 100644 --- a/src/core/system.js +++ b/src/core/system.js @@ -7,12 +7,25 @@ !(function () { var system = { dependencies: {}, - size: { // 尺寸 + responsiveMode: false, + workerMode: false, + size: { + // 尺寸 + // 通用尺寸 TOOL_BAR_HEIGHT: 24, LIST_ITEM_HEIGHT: 24, TRIGGER_HEIGHT: 24, - TOAST_TOP: 10 - }, + TOAST_TOP: 10, + H_GAP_SIZE: "M", + V_GAP_SIZE: "S" + } + }; + + // 具体尺寸还没定,先写着 + var sizeMap = { + "S": 10, + "M" : 20, + "L": 24 }; var provider = function () { @@ -20,7 +33,15 @@ this.SYSTEM = system; this.setSize = function (opt) { - BI.deepExtend(system, { size: opt }); + BI.deepExtend(system, {size: opt}); + }; + + this.setResponsiveMode = function (mode) { + system.responsiveMode = !!mode; + }; + + this.setWorkerMode = function (mode) { + system.workerMode = !!mode; }; this.addDependency = function (moduleId, minVersion, maxVersion) { @@ -38,7 +59,22 @@ return BI.inherit(BI.OB, { getSize: function () { - return system.size; + var size = system.size; + var H_GAP_SIZE = sizeMap[size.H_GAP_SIZE]; + var V_GAP_SIZE = sizeMap[size.V_GAP_SIZE]; + + return BI.extend({}, size, { + H_GAP_SIZE: H_GAP_SIZE, + V_GAP_SIZE: V_GAP_SIZE + }); + }, + + getResponsiveMode: function () { + return system.responsiveMode; + }, + + getWorkerMode: function () { + return system.workerMode; }, getDependencies: function () { @@ -52,5 +88,8 @@ })(); BI.prepares.push(function () { - BI.SIZE_CONSANTS = BI.Providers.getProvider('bi.provider.system').getSize(); + BI.SIZE_CONSANTS = BI.Providers.getProvider("bi.provider.system").getSize(); + // 不再增加线型的配置了,之后不维护前置版本直接删掉,都用实线连接线 + BI.STYLE_CONSTANTS = {}; + BI.STYLE_CONSTANTS.LINK_LINE_TYPE = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT === 24 ? "dashed" : "solid"; }); diff --git a/src/core/utils/color.js b/src/core/utils/color.js new file mode 100644 index 000000000..1c14c3739 --- /dev/null +++ b/src/core/utils/color.js @@ -0,0 +1,190 @@ +BI.DOM = BI.DOM || {}; +BI.extend(BI.DOM, { + isColor: function (color) { + return color && (this.isRGBColor(color) || this.isHexColor(color)); + }, + + isRGBColor: function (color) { + if (!color) { + return false; + } + return color.substr(0, 3) === "rgb"; + }, + + isHexColor: function (color) { + if (!color) { + return false; + } + return color[0] === "#" && color.length === 7; + }, + + isDarkColor: function (hex) { + if (!hex || !this.isHexColor(hex)) { + return false; + } + var rgb = this.rgb2json(this.hex2rgb(hex)); + var grayLevel = Math.round(rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114); + if (grayLevel < 192/** 网上给的是140**/) { + return true; + } + return false; + }, + + // 获取对比颜色 + getContrastColor: function (color) { + if (!color || !this.isColor(color)) { + return ""; + } + if (this.isDarkColor(color)) { + return "#FFFFFF"; + } + return "#3D4D66"; + }, + + rgb2hex: function (rgbColour) { + if (!rgbColour || rgbColour.substr(0, 3) != "rgb") { + return ""; + } + var rgbValues = rgbColour.match(/\d+(\.\d+)?/g); + var red = BI.parseInt(rgbValues[0]); + var green = BI.parseInt(rgbValues[1]); + var blue = BI.parseInt(rgbValues[2]); + + var hexColour = "#" + this.int2hex(red) + this.int2hex(green) + this.int2hex(blue); + + return hexColour; + }, + + _hue2rgb: function (m1, m2, h) { + h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h); + if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; + if (h * 2 < 1) return m2; + if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6; + return m1; + }, + + hsl2rgb: function (hsl) { + var m1, m2, r, g, b; + var h = hsl[0], s = hsl[1], l = hsl[2]; + m2 = (l <= 0.5) ? l * (s + 1) : l + s - l * s; + m1 = l * 2 - m2; + return [this._hue2rgb(m1, m2, h + 0.33333), + this._hue2rgb(m1, m2, h), + this._hue2rgb(m1, m2, h - 0.33333)]; + }, + + rgb2hsl: function (rgb) { + var min, max, delta, h, s, l; + var r = rgb[0], g = rgb[1], b = rgb[2]; + min = Math.min(r, Math.min(g, b)); + max = Math.max(r, Math.max(g, b)); + delta = max - min; + l = (min + max) / 2; + s = 0; + if (l > 0 && l < 1) { + s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l)); + } + h = 0; + if (delta > 0) { + if (max == r && max != g) h += (g - b) / delta; + if (max == g && max != b) h += (2 + (b - r) / delta); + if (max == b && max != r) h += (4 + (r - g) / delta); + h /= 6; + } + return [h, s, l]; + }, + + rgb2json: function (rgbColour) { + if (!rgbColour) { + return {}; + } + if (!this.isRGBColor(rgbColour)) { + return {}; + } + var rgbValues = rgbColour.match(/\d+(\.\d+)?/g); + return { + r: BI.parseInt(rgbValues[0]), + g: BI.parseInt(rgbValues[1]), + b: BI.parseInt(rgbValues[2]) + }; + }, + + rgba2json: function (rgbColour) { + if (!rgbColour) { + return {}; + } + var rgbValues = rgbColour.match(/\d+(\.\d+)?/g); + return { + r: BI.parseInt(rgbValues[0]), + g: BI.parseInt(rgbValues[1]), + b: BI.parseInt(rgbValues[2]), + a: BI.parseFloat(rgbValues[3]) + }; + }, + + json2rgb: function (rgb) { + if (!BI.isKey(rgb.r) || !BI.isKey(rgb.g) || !BI.isKey(rgb.b)) { + return ""; + } + return "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")"; + }, + + json2rgba: function (rgba) { + if (!BI.isKey(rgba.r) || !BI.isKey(rgba.g) || !BI.isKey(rgba.b)) { + return ""; + } + return "rgba(" + rgba.r + "," + rgba.g + "," + rgba.b + "," + rgba.a + ")"; + }, + + int2hex: function (strNum) { + var hexdig = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; + + return hexdig[strNum >>> 4] + "" + hexdig[strNum & 15]; + }, + + hex2rgb: function (color) { + if (!color) { + return ""; + } + if (!this.isHexColor(color)) { + return color; + } + var tempValue = "rgb(", colorArray; + + if (color.length === 7) { + colorArray = [BI.parseInt("0x" + color.substring(1, 3)), + BI.parseInt("0x" + color.substring(3, 5)), + BI.parseInt("0x" + color.substring(5, 7))]; + } else if (color.length === 4) { + colorArray = [BI.parseInt("0x" + color.substring(1, 2)), + BI.parseInt("0x" + color.substring(2, 3)), + BI.parseInt("0x" + color.substring(3, 4))]; + } + tempValue += colorArray[0] + ","; + tempValue += colorArray[1] + ","; + tempValue += colorArray[2] + ")"; + + return tempValue; + }, + + rgba2rgb: function (rgbColor, bgColor) { + if (BI.isNull(bgColor)) { + bgColor = 1; + } + if (rgbColor.substr(0, 4) != "rgba") { + return ""; + } + var rgbValues = rgbColor.match(/\d+(\.\d+)?/g); + if (rgbValues.length < 4) { + return ""; + } + var R = BI.parseFloat(rgbValues[0]); + var G = BI.parseFloat(rgbValues[1]); + var B = BI.parseFloat(rgbValues[2]); + var A = BI.parseFloat(rgbValues[3]); + + return "rgb(" + Math.floor(255 * (bgColor * (1 - A)) + R * A) + "," + + Math.floor(255 * (bgColor * (1 - A)) + G * A) + "," + + Math.floor(255 * (bgColor * (1 - A)) + B * A) + ")"; + } +}); diff --git a/src/core/10.worker.js b/src/core/worker.js similarity index 92% rename from src/core/10.worker.js rename to src/core/worker.js index e23d73c5d..d3ba08ee4 100644 --- a/src/core/10.worker.js +++ b/src/core/worker.js @@ -1,6 +1,10 @@ !(function () { - BI.initWorker = function () { + BI.useInWorker = function () { function createWatcher (model, keyOrFn, cb, options) { + if (BI.isPlainObject(cb)) { + options = cb; + cb = cb.handler; + } options = options || {}; return Fix.watch(model, keyOrFn, cb, BI.extend(options, { store: model diff --git a/src/core/wrapper/layout.js b/src/core/wrapper/layout.js index 01ff69be8..2bb053c6d 100644 --- a/src/core/wrapper/layout.js +++ b/src/core/wrapper/layout.js @@ -14,7 +14,9 @@ BI.Layout = BI.inherit(BI.Widget, { scrollable: null, // true, false, null scrollx: false, // true, false scrolly: false, // true, false - items: [] + items: [], + innerHgap: 0, + innerVgap: 0, }; }, @@ -27,8 +29,6 @@ BI.Layout = BI.inherit(BI.Widget, { o.columnSize = this.__watch(columnSizeFn, function (context, newValue) { o.columnSize = newValue; self.resize(); - }, { - deep: true }); } if (BI.isFunction(o.rowSize)) { @@ -36,8 +36,6 @@ BI.Layout = BI.inherit(BI.Widget, { o.rowSize = this.__watch(rowSizeFn, function (context, newValue) { o.rowSize = newValue; self.resize(); - }, { - deep: true }); } }, @@ -60,11 +58,24 @@ BI.Layout = BI.inherit(BI.Widget, { _init4Scroll: function () { switch (this.options.scrollable) { case true: + case "xy": this.element.css("overflow", "auto"); - break; + return; case false: this.element.css("overflow", "hidden"); - break; + return; + case "x": + this.element.css({ + "overflow-x": "auto", + "overflow-y": "hidden" + }); + return; + case "y": + this.element.css({ + "overflow-x": "hidden", + "overflow-y": "auto" + }); + return; default : break; } @@ -73,6 +84,7 @@ BI.Layout = BI.inherit(BI.Widget, { "overflow-x": "auto", "overflow-y": "hidden" }); + return; } if (this.options.scrolly) { this.element.css({ @@ -240,8 +252,8 @@ BI.Layout = BI.inherit(BI.Widget, { var w = this._newElement(newIndex, item); // 需要有个地方临时存一下新建的组件,否则如果直接使用newIndex的话,newIndex位置的元素可能会被用到 this._children[this._getChildName(newIndex) + "-temp"] = w; - var nextSibling = del.element[0].nextSibling; - if (nextSibling) { + var nextSibling = del.element.next(); + if (nextSibling.length > 0) { BI.Widget._renderEngine.createElement(nextSibling).before(w.element); } else { w.element.appendTo(this._getWrapper()); @@ -267,26 +279,87 @@ BI.Layout = BI.inherit(BI.Widget, { this.options.items.splice(index, 1); }, + _clearGap: function (w) { + w.element.css({ + "margin-top": "", + "margin-bottom": "", + "margin-left": "", + "margin-right": "" + }); + }, + + _optimiseGap: function (gap) { + return (gap > 0 && gap < 1) ? (gap * 100).toFixed(1) + "%" : gap / BI.pixRatio + BI.pixUnit; + }, + _handleGap: function (w, item, hIndex, vIndex) { var o = this.options; - if (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0) !== 0) { + var innerLgap, innerRgap, innerTgap, innerBgap; + if (BI.isNull(vIndex)) { + innerTgap = innerBgap = o.innerVgap; + innerLgap = hIndex === 0 ? o.innerHgap : 0; + innerRgap = hIndex === o.items.length - 1 ? o.innerHgap : 0; + } else { + innerLgap = innerRgap = o.innerHgap; + innerTgap = vIndex === 0 ? o.innerVgap : 0; + innerBgap = vIndex === o.items.length - 1 ? o.innerVgap : 0; + } + if (o.vgap + o.tgap + innerTgap + (item.tgap || 0) + (item.vgap || 0) !== 0) { + var top = ((BI.isNull(vIndex) || vIndex === 0) ? o.vgap : 0) + o.tgap + innerTgap + (item.tgap || 0) + (item.vgap || 0); + w.element.css({ + "margin-top": this._optimiseGap(top) + }); + } + if (o.hgap + o.lgap + innerLgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { + var left = ((BI.isNull(hIndex) || hIndex === 0) ? o.hgap : 0) + o.lgap + innerLgap + (item.lgap || 0) + (item.hgap || 0); + w.element.css({ + "margin-left": this._optimiseGap(left) + }); + } + if (o.hgap + o.rgap + innerRgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { + var right = o.hgap + o.rgap + innerRgap + (item.rgap || 0) + (item.hgap || 0); + w.element.css({ + "margin-right": this._optimiseGap(right) + }); + } + if (o.vgap + o.bgap + innerBgap + (item.bgap || 0) + (item.vgap || 0) !== 0) { + var bottom = o.vgap + o.bgap + innerBgap + (item.bgap || 0) + (item.vgap || 0); + w.element.css({ + "margin-bottom": this._optimiseGap(bottom) + }); + } + }, + + // 横向换纵向 + _handleReverseGap: function (w, item, index) { + var o = this.options; + var innerLgap, innerRgap, innerTgap, innerBgap; + innerLgap = innerRgap = o.innerHgap; + innerTgap = index === 0 ? o.innerVgap : 0; + innerBgap = index === o.items.length - 1 ? o.innerVgap : 0; + if (o.vgap + o.tgap + innerTgap + (item.tgap || 0) + (item.vgap || 0) !== 0) { + var top = (index === 0 ? o.vgap : 0) + (index === 0 ? o.tgap : 0) + innerTgap + (item.tgap || 0) + (item.vgap || 0); w.element.css({ - "margin-top": (((BI.isNull(vIndex) || vIndex === 0) ? o.vgap : 0) + o.tgap + (item.tgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-top": this._optimiseGap(top) }); } - if (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { + if (o.hgap + o.lgap + innerLgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { + var left = o.hgap + o.lgap + innerLgap + (item.lgap || 0) + (item.hgap || 0); w.element.css({ - "margin-left": (((BI.isNull(hIndex) || hIndex === 0) ? o.hgap : 0) + o.lgap + (item.lgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-left": this._optimiseGap(left) }); } - if (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { + if (o.hgap + o.rgap + innerRgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { + var right = o.hgap + o.rgap + innerRgap + (item.rgap || 0) + (item.hgap || 0); w.element.css({ - "margin-right": (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-right": this._optimiseGap(right) }); } - if (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0) !== 0) { + // 这里的代码是关键 + if (o.vgap + o.hgap + o.bgap + innerBgap + (item.bgap || 0) + (item.vgap || 0) !== 0) { + var bottom = (index === o.items.length - 1 ? o.vgap : o.hgap) + (index === o.items.length - 1 ? o.bgap : 0) + innerBgap + (item.bgap || 0) + (item.vgap || 0); w.element.css({ - "margin-bottom": (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-bottom": this._optimiseGap(bottom) }); } }, @@ -420,6 +493,7 @@ BI.Layout = BI.inherit(BI.Widget, { var shouldUpdate = this.shouldUpdateItem(oldIndex, vnode); var child = this._children[this._getChildName(oldIndex)]; if (shouldUpdate) { + this._children[this._getChildName(newIndex) + "-temp"] = child; return child._update(this._getOptions(vnode), shouldUpdate); } if (shouldUpdate === null && !this._compare(oldVnode, vnode)) { @@ -430,7 +504,7 @@ BI.Layout = BI.inherit(BI.Widget, { } }, - updateChildren: function (oldCh, newCh) { + updateChildren: function (oldCh, newCh, context) { var self = this; var oldStartIdx = 0, newStartIdx = 0; var oldEndIdx = oldCh.length - 1; @@ -484,7 +558,7 @@ BI.Layout = BI.inherit(BI.Widget, { } else { var sameOldVnode = findOldVnode(oldCh, newStartVnode, oldStartIdx, oldEndIdx); if (BI.isNull(sameOldVnode[0])) { // 不存在就把新的放到左边 - var node = addNode(newStartVnode, newStartIdx); + var node = addNode(newStartVnode, newStartIdx, context); insertBefore(node, oldStartVnode); } else { // 如果新节点在旧节点区间中存在就复用一下 var sameOldIndex = sameOldVnode[1]; @@ -499,7 +573,7 @@ BI.Layout = BI.inherit(BI.Widget, { } if (oldStartIdx > oldEndIdx) { before = BI.isNull(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1]; - addVnodes(before, newCh, newStartIdx, newEndIdx); + addVnodes(before, newCh, newStartIdx, newEndIdx, context); } else if (newStartIdx > newEndIdx) { removeVnodes(oldCh, oldStartIdx, oldEndIdx); } @@ -524,15 +598,15 @@ BI.Layout = BI.inherit(BI.Widget, { } } - function addNode (vnode, index) { + function addNode (vnode, index, context) { var opt = self._getOptions(vnode); var key = opt.key == null ? index : opt.key; - return children[key] = self._newElement(index, vnode); + return children[key] = self._newElement(index, vnode, context); } - function addVnodes (before, vnodes, startIdx, endIdx) { + function addVnodes (before, vnodes, startIdx, endIdx, context) { for (; startIdx <= endIdx; ++startIdx) { - var node = addNode(vnodes[startIdx], startIdx); + var node = addNode(vnodes[startIdx], startIdx, context); insertBefore(node, before, false, startIdx); } } @@ -600,16 +674,18 @@ BI.Layout = BI.inherit(BI.Widget, { update: function (opt) { var o = this.options; var items = opt.items || []; + var context = opt.context; var oldItems = o.items; this.options.items = items; - return this.updateChildren(oldItems, items); + return this.updateChildren(oldItems, items, context); }, - stroke: function (items) { + stroke: function (items, options) { + options = options || {}; var self = this; BI.each(items, function (i, item) { if (item) { - self._addElement(i, item); + self._addElement(i, item, options.context); } }); }, @@ -640,14 +716,18 @@ BI.Layout = BI.inherit(BI.Widget, { this.options.items = []; }, - populate: function (items) { + populate: function (items, options) { items = items || []; + options = options || {}; if (this._isMounted) { - this.update({items: items}); + this.update({ + items: items, + context: options.context + }); return; } this.options.items = items; - this.stroke(items); + this.stroke(items, options); }, resize: function () { diff --git a/src/core/wrapper/layout/adapt/absolute.center.js b/src/core/wrapper/layout/adapt/absolute.center.js index f5da01bbc..67d37c4bc 100644 --- a/src/core/wrapper/layout/adapt/absolute.center.js +++ b/src/core/wrapper/layout/adapt/absolute.center.js @@ -18,7 +18,11 @@ BI.AbsoluteCenterLayout = BI.inherit(BI.Layout, { render: function () { BI.AbsoluteCenterLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { @@ -26,10 +30,10 @@ BI.AbsoluteCenterLayout = BI.inherit(BI.Layout, { var w = BI.AbsoluteCenterLayout.superclass._addElement.apply(this, arguments); w.element.css({ position: "absolute", - left: (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit, - right: (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit, - top: (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit, - bottom: (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit, + left: this._optimiseGap(o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0)), + right: this._optimiseGap(o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0)), + top: this._optimiseGap(o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0)), + bottom: this._optimiseGap(o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0)), margin: "auto" }); return w; diff --git a/src/core/wrapper/layout/adapt/absolute.horizontal.js b/src/core/wrapper/layout/adapt/absolute.horizontal.js index a8561cd0a..81bd4d05c 100644 --- a/src/core/wrapper/layout/adapt/absolute.horizontal.js +++ b/src/core/wrapper/layout/adapt/absolute.horizontal.js @@ -37,7 +37,9 @@ BI.AbsoluteHorizontalLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/adapt/absolute.leftrightvertical.js b/src/core/wrapper/layout/adapt/absolute.leftrightvertical.js index 8ea35e148..148897cfe 100644 --- a/src/core/wrapper/layout/adapt/absolute.leftrightvertical.js +++ b/src/core/wrapper/layout/adapt/absolute.leftrightvertical.js @@ -23,6 +23,8 @@ BI.AbsoluteLeftRightVerticalAdaptLayout = BI.inherit(BI.Layout, { BI.AbsoluteLeftRightVerticalAdaptLayout.superclass.render.apply(this, arguments); return { type: "bi.htape", + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, ref: function (_ref) { self.layout = _ref; }, diff --git a/src/core/wrapper/layout/adapt/absolute.vertical.js b/src/core/wrapper/layout/adapt/absolute.vertical.js index 58133199b..94a6e39fe 100644 --- a/src/core/wrapper/layout/adapt/absolute.vertical.js +++ b/src/core/wrapper/layout/adapt/absolute.vertical.js @@ -37,7 +37,9 @@ BI.AbsoluteVerticalLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/adapt/adapt.center.js b/src/core/wrapper/layout/adapt/adapt.center.js index dc15360da..fb088c5a9 100644 --- a/src/core/wrapper/layout/adapt/adapt.center.js +++ b/src/core/wrapper/layout/adapt/adapt.center.js @@ -38,7 +38,9 @@ BI.CenterAdaptLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/adapt/adapt.leftrightvertical.js b/src/core/wrapper/layout/adapt/adapt.leftrightvertical.js index 7591c71cd..cafc1dafb 100644 --- a/src/core/wrapper/layout/adapt/adapt.leftrightvertical.js +++ b/src/core/wrapper/layout/adapt/adapt.leftrightvertical.js @@ -34,6 +34,8 @@ BI.LeftRightVerticalAdaptLayout = BI.inherit(BI.Layout, { if (leftRight.left || "left" in o.items) { layoutArray.push({ type: "bi.left", + lgap: o.innerHgap, + vgap: o.innerVgap, items: [{ el: { type: "bi.vertical_adapt", @@ -55,6 +57,8 @@ BI.LeftRightVerticalAdaptLayout = BI.inherit(BI.Layout, { if (leftRight.right || "right" in o.items) { layoutArray.push({ type: "bi.right", + rgap: o.innerHgap, + vgap: o.innerVgap, items: [{ el: { type: "bi.vertical_adapt", @@ -144,6 +148,8 @@ BI.LeftVerticalAdaptLayout = BI.inherit(BI.Layout, { tgap: o.tgap, bgap: o.bgap, vgap: o.vgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, scrollx: o.scrollx, scrolly: o.scrolly, scrollable: o.scrollable @@ -196,6 +202,8 @@ BI.RightVerticalAdaptLayout = BI.inherit(BI.Layout, { tgap: o.tgap, bgap: o.bgap, vgap: o.vgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, scrollx: o.scrollx, scrolly: o.scrolly, scrollable: o.scrollable diff --git a/src/core/wrapper/layout/adapt/adapt.table.js b/src/core/wrapper/layout/adapt/adapt.table.js index daed0c33d..9af2aa8cc 100644 --- a/src/core/wrapper/layout/adapt/adapt.table.js +++ b/src/core/wrapper/layout/adapt/adapt.table.js @@ -19,8 +19,8 @@ BI.TableAdaptLayout = BI.inherit(BI.Layout, { }); }, render: function () { - var o = this.options; BI.TableAdaptLayout.superclass.render.apply(this, arguments); + var self = this, o = this.options; this.$table = BI.Widget._renderEngine.createElement("
    ").css({ position: "relative", display: "table", @@ -28,7 +28,10 @@ BI.TableAdaptLayout = BI.inherit(BI.Layout, { height: (o.verticalAlign !== BI.VerticalAlign.Top) ? "100%" : "auto", "white-space": "nowrap" }); - this.populate(this.options.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _hasFill: function () { @@ -48,9 +51,7 @@ BI.TableAdaptLayout = BI.inherit(BI.Layout, { var td, width = ""; var columnSize = o.columnSize.length > 0 ? o.columnSize[i] : item.width; if (columnSize > 0) { - width = columnSize < 1 ? - ((columnSize * 100).toFixed(1) + "%") - : (columnSize + (i === 0 ? o.hgap : 0) + o.hgap + o.lgap + o.rgap); + width = this._optimiseGap(columnSize + (i === 0 ? o.hgap : 0) + o.hgap + o.lgap + o.rgap); } if ((BI.isNull(columnSize) || columnSize === "") && this._hasFill()) { width = 2; @@ -71,17 +72,16 @@ BI.TableAdaptLayout = BI.inherit(BI.Layout, { if (o.verticalAlign === BI.VerticalAlign.Stretch) { var top = o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0), bottom = o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0); - w.element.css("height", "calc(100% - " + ((top + bottom) / BI.pixRatio + BI.pixUnit) + ")"); + w.element.css("height", "calc(100% - " + this._optimiseGap(top + bottom) + ")"); } // 对于表现为td的元素设置最大宽度,有几点需要注意 // 1、由于直接对td设置最大宽度是在规范中未定义的, 所以要使用类似td:firstChild来迂回实现 // 2、不能给多个td设置最大宽度,这样只会平分宽度 // 3、多百分比宽度就算了 if (columnSize > 0) { - columnSize = columnSize < 1 ? width : width / BI.pixRatio + BI.pixUnit; td.element.css({ - "max-width": columnSize, - "min-width": columnSize + "max-width": width, + "min-width": width }); } if (i === 0) { diff --git a/src/core/wrapper/layout/adapt/adapt.vertical.js b/src/core/wrapper/layout/adapt/adapt.vertical.js index 71a30d15c..31c227595 100644 --- a/src/core/wrapper/layout/adapt/adapt.vertical.js +++ b/src/core/wrapper/layout/adapt/adapt.vertical.js @@ -38,7 +38,9 @@ BI.VerticalAdaptLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/adapt/auto.horizontal.js b/src/core/wrapper/layout/adapt/auto.horizontal.js index 197b2badc..ed0f5e29c 100644 --- a/src/core/wrapper/layout/adapt/auto.horizontal.js +++ b/src/core/wrapper/layout/adapt/auto.horizontal.js @@ -18,7 +18,11 @@ BI.HorizontalAutoLayout = BI.inherit(BI.Layout, { render: function () { BI.HorizontalAutoLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { diff --git a/src/core/wrapper/layout/adapt/inline.center.js b/src/core/wrapper/layout/adapt/inline.center.js index 072d86ac3..5d7d073af 100644 --- a/src/core/wrapper/layout/adapt/inline.center.js +++ b/src/core/wrapper/layout/adapt/inline.center.js @@ -40,7 +40,9 @@ BI.InlineCenterAdaptLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/adapt/inline.horizontal.js b/src/core/wrapper/layout/adapt/inline.horizontal.js index 242d03f96..09874f1b5 100644 --- a/src/core/wrapper/layout/adapt/inline.horizontal.js +++ b/src/core/wrapper/layout/adapt/inline.horizontal.js @@ -40,7 +40,9 @@ BI.InlineHorizontalAdaptLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/adapt/inline.vertical.js b/src/core/wrapper/layout/adapt/inline.vertical.js index 9f888521c..09d76592e 100644 --- a/src/core/wrapper/layout/adapt/inline.vertical.js +++ b/src/core/wrapper/layout/adapt/inline.vertical.js @@ -40,7 +40,9 @@ BI.InlineVerticalAdaptLayout = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/fill/auto.vtape.js b/src/core/wrapper/layout/fill/auto.vtape.js new file mode 100644 index 000000000..16491ebab --- /dev/null +++ b/src/core/wrapper/layout/fill/auto.vtape.js @@ -0,0 +1,125 @@ +BI.AutoVerticalTapeLayout = BI.inherit(BI.Layout, { + props: function () { + return BI.extend(BI.AutoVerticalTapeLayout.superclass.props.apply(this, arguments), { + baseCls: "bi-auto-htape", + horizontalAlign: BI.HorizontalAlign.Stretch, + verticalAlign: BI.VerticalAlign.Stretch, + hgap: 0, + vgap: 0, + lgap: 0, + rgap: 0, + tgap: 0, + bgap: 0, + rowSize: [], + items: [] + }); + }, + + render: function () { + var self = this, o = this.options; + return { + type: "bi.vtape", + ref: function (_ref) { + self.layout = _ref; + }, + items: o.items, + horizontalAlign: o.horizontalAlign, + verticalAlign: o.verticalAlign, + rowSize: o.rowSize, + hgap: o.hgap, + vgap: o.vgap, + lgap: o.lgap, + rgap: o.rgap, + tgap: o.tgap, + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, + }; + }, + + _handleResize: function () { + var self = this, o = this.options; + var items = o.items; + var top = {}, bottom = {}; + top[0] = o.innerVgap; + bottom[items.length - 1] = o.innerVgap; + + BI.any(items, function (i, item) { + if (BI.isEmptyObject(item)) { + return true; + } + var w = self.layout.getWidgetByName(self._getChildName(i)); + var rowSize = o.rowSize.length > 0 ? o.rowSize[i] : item.height; + if (o.rowSize.length > 0) { + if (item.height >= 1 && o.rowSize[i] >= 1 && o.rowSize[i] !== item.height) { + rowSize = item.height; + } + } + if (BI.isNull(top[i])) { + var preRowSize = o.rowSize.length > 0 ? o.rowSize[i - 1] : items[i - 1].height; + if (preRowSize === "") { + preRowSize = self.layout.getWidgetByName(self._getChildName(i - 1)).element.height(); + } + top[i] = top[i - 1] + preRowSize + (items[i - 1].tgap || 0) + (items[i - 1].bgap || 0) + 2 * (items[i - 1].vgap || 0) + o.vgap + o.tgap + o.bgap; + } + w.element.css({ + top: self._optimiseGap(top[i] + (item.vgap || 0) + (item.tgap || 0) + o.vgap + o.tgap) + }); + + if (rowSize === "fill") { + return true; + } + }); + BI.backAny(items, function (i, item) { + if (BI.isEmptyObject(item)) { + return true; + } + var w = self.layout.getWidgetByName(self._getChildName(i)); + var rowSize = o.rowSize.length > 0 ? o.rowSize[i] : item.height; + if (BI.isNull(bottom[i])) { + var nextRowSize = o.rowSize.length > 0 ? o.rowSize[i + 1] : items[i + 1].height; + if (nextRowSize === "") { + nextRowSize = self.layout.getWidgetByName(self._getChildName(i + 1)).element.height(); + } + bottom[i] = bottom[i + 1] + nextRowSize + (items[i + 1].tgap || 0) + (items[i + 1].bgap || 0) + 2 * (items[i + 1].vgap || 0) + o.vgap + o.tgap + o.bgap; + } + w.element.css({ + bottom: self._optimiseGap(bottom[i] + (item.vgap || 0) + (item.bgap || 0) + o.vgap + o.bgap), + }); + + if (rowSize === "fill") { + return true; + } + }); + }, + + mounted: function () { + if (window.ResizeObserver) { + this.resizeObserver = new window.ResizeObserver(this._handleResize.bind(this)); + this.resizeObserver.observe(this.element[0]); + } + if (window.MutationObserver) { + this.mutationObserver = new window.MutationObserver(this._handleResize.bind(this)); + this.mutationObserver.observe(this.element[0], { + attributes: true, + childList: true, + subtree: true + }); + } + this._handleResize(); + }, + + destroyed: function () { + this.resizeObserver && this.resizeObserver.unobserve(this.element[0]); + this.mutationObserver && this.mutationObserver.disconnect(); + }, + + resize: function () { + this.layout.resize(); + }, + + populate: function (items) { + this.layout.populate.apply(this.layout, arguments); + } +}); +BI.shortcut("bi.vtape_auto", BI.AutoVerticalTapeLayout); diff --git a/src/core/wrapper/layout/fill/float.fill.horizontal.js b/src/core/wrapper/layout/fill/float.fill.horizontal.js index b9d234660..d6607703b 100644 --- a/src/core/wrapper/layout/fill/float.fill.horizontal.js +++ b/src/core/wrapper/layout/fill/float.fill.horizontal.js @@ -16,7 +16,11 @@ BI.FloatHorizontalFillLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FloatHorizontalFillLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, addItem: function (item) { @@ -43,42 +47,42 @@ BI.FloatHorizontalFillLayout = BI.inherit(BI.Layout, { } if (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0) !== 0) { w.element.css({ - "margin-top": (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-top": self._optimiseGap(o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0)) }); } if (desc) { if (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { w.element.css({ - "margin-right": ((i === o.items.length - 1 ? o.hgap : 0) + o.rgap + (item.rgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-right": self._optimiseGap((i === o.items.length - 1 ? o.hgap : 0) + o.rgap + (item.rgap || 0) + (item.hgap || 0)) }); } if (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { w.element.css({ - "margin-left": (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-left": self._optimiseGap(o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0)) }); } } else { if (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { w.element.css({ - "margin-left": ((i === 0 ? o.hgap : 0) + o.lgap + (item.lgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-left": self._optimiseGap((i === 0 ? o.hgap : 0) + o.lgap + (item.lgap || 0) + (item.hgap || 0)) }); } if (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { w.element.css({ - "margin-right": (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-right": self._optimiseGap(o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0)) }); } } if (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0) !== 0) { w.element.css({ - "margin-bottom": (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-bottom": self._optimiseGap(o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0)) }); } var top = o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0), bottom = o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0); if (o.verticalAlign === BI.VerticalAlign.Stretch && BI.isNull(item.height)) { w.element.css({ - height: "calc(100% - " + ((top + bottom) / BI.pixRatio + BI.pixUnit) + ")" + height: "calc(100% - " + self._optimiseGap(top + bottom) + ")" }); } w.element.css({ diff --git a/src/core/wrapper/layout/flex/flex.center.js b/src/core/wrapper/layout/flex/flex.center.js index 9ffc0337f..8944b3add 100644 --- a/src/core/wrapper/layout/flex/flex.center.js +++ b/src/core/wrapper/layout/flex/flex.center.js @@ -37,6 +37,8 @@ BI.FlexCenterLayout = BI.inherit(BI.Layout, { vgap: o.vgap, tgap: o.tgap, bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, items: o.items }; }, diff --git a/src/core/wrapper/layout/flex/flex.horizontal.center.js b/src/core/wrapper/layout/flex/flex.horizontal.center.js index a97188fed..220f1f394 100644 --- a/src/core/wrapper/layout/flex/flex.horizontal.center.js +++ b/src/core/wrapper/layout/flex/flex.horizontal.center.js @@ -38,6 +38,8 @@ BI.FlexHorizontalCenter = BI.inherit(BI.Layout, { vgap: o.vgap, tgap: o.tgap, bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, items: o.items }; }, diff --git a/src/core/wrapper/layout/flex/flex.horizontal.js b/src/core/wrapper/layout/flex/flex.horizontal.js index c6877c383..1d921c89f 100644 --- a/src/core/wrapper/layout/flex/flex.horizontal.js +++ b/src/core/wrapper/layout/flex/flex.horizontal.js @@ -23,7 +23,7 @@ BI.FlexHorizontalLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FlexHorizontalLayout.superclass.render.apply(this, arguments); - var o = this.options; + var self = this, o = this.options; this.element.addClass("v-" + o.verticalAlign).addClass("h-" + o.horizontalAlign); if (o.scrollable === true || o.scrollx === true) { this.element.addClass("f-scroll-x"); @@ -31,7 +31,10 @@ BI.FlexHorizontalLayout = BI.inherit(BI.Layout, { if (o.scrollable === true || o.scrolly === true) { this.element.addClass("f-scroll-y"); } - this.populate(this.options.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _hasFill: function () { @@ -74,7 +77,7 @@ BI.FlexHorizontalLayout = BI.inherit(BI.Layout, { } } if (columnSize > 0) { - w.element.width(columnSize < 1 ? ((columnSize * 100).toFixed(1) + "%") : (columnSize / BI.pixRatio + BI.pixUnit)); + w.element.width(this._optimiseGap(columnSize)); } if (columnSize === "fill") { w.element.addClass("f-f"); diff --git a/src/core/wrapper/layout/flex/flex.leftrightvertical.center.js b/src/core/wrapper/layout/flex/flex.leftrightvertical.center.js index aefb271dd..322d48fb4 100644 --- a/src/core/wrapper/layout/flex/flex.leftrightvertical.center.js +++ b/src/core/wrapper/layout/flex/flex.leftrightvertical.center.js @@ -28,7 +28,9 @@ BI.FlexLeftRightVerticalAdaptLayout = BI.inherit(BI.Layout, { items: this._formatItems(o.items), scrollx: o.scrollx, scrolly: o.scrolly, - scrollable: o.scrollable + scrollable: o.scrollable, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/flex/flex.vertical.center.js b/src/core/wrapper/layout/flex/flex.vertical.center.js index 11795cd15..cf2e55077 100644 --- a/src/core/wrapper/layout/flex/flex.vertical.center.js +++ b/src/core/wrapper/layout/flex/flex.vertical.center.js @@ -39,6 +39,8 @@ BI.FlexVerticalCenter = BI.inherit(BI.Layout, { lgap: o.lgap, rgap: o.rgap, hgap: o.hgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, items: o.items }; }, diff --git a/src/core/wrapper/layout/flex/flex.vertical.js b/src/core/wrapper/layout/flex/flex.vertical.js index f5fa620aa..e885f5b9e 100644 --- a/src/core/wrapper/layout/flex/flex.vertical.js +++ b/src/core/wrapper/layout/flex/flex.vertical.js @@ -22,7 +22,7 @@ BI.FlexVerticalLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FlexVerticalLayout.superclass.render.apply(this, arguments); - var o = this.options; + var self = this, o = this.options; this.element.addClass("h-" + o.horizontalAlign).addClass("v-" + o.verticalAlign); if (o.scrollable === true || o.scrollx === true) { this.element.addClass("f-scroll-x"); @@ -30,7 +30,10 @@ BI.FlexVerticalLayout = BI.inherit(BI.Layout, { if (o.scrollable === true || o.scrolly === true) { this.element.addClass("f-scroll-y"); } - this.populate(this.options.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _hasFill: function () { @@ -73,7 +76,7 @@ BI.FlexVerticalLayout = BI.inherit(BI.Layout, { } } if (rowSize > 0) { - w.element.height(rowSize < 1 ? ((rowSize * 100).toFixed(1) + "%") : (rowSize / BI.pixRatio + BI.pixUnit)); + w.element.height(this._optimiseGap(rowSize)); } if (rowSize === "fill") { w.element.addClass("f-f"); diff --git a/src/core/wrapper/layout/flex/wrapper/flex.wrapper.horizontal.js b/src/core/wrapper/layout/flex/wrapper/flex.wrapper.horizontal.js index f0715b150..94e10fb14 100644 --- a/src/core/wrapper/layout/flex/wrapper/flex.wrapper.horizontal.js +++ b/src/core/wrapper/layout/flex/wrapper/flex.wrapper.horizontal.js @@ -24,10 +24,13 @@ BI.FlexWrapperHorizontalLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FlexWrapperHorizontalLayout.superclass.render.apply(this, arguments); - var o = this.options; + var self = this, o = this.options; this.element.addClass("v-" + o.verticalAlign).addClass("h-" + o.horizontalAlign); this.$wrapper = BI.Widget._renderEngine.createElement("
    ").addClass("f-s-h-w v-" + o.verticalAlign).addClass("h-" + o.horizontalAlign); - this.populate(this.options.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _hasFill: function () { @@ -70,7 +73,7 @@ BI.FlexWrapperHorizontalLayout = BI.inherit(BI.Layout, { } } if (columnSize > 0) { - w.element.width(columnSize < 1 ? ((columnSize * 100).toFixed(1) + "%") : (columnSize / BI.pixRatio + BI.pixUnit)); + w.element.width(this._optimiseGap(columnSize)); } if (columnSize === "fill") { w.element.addClass("f-f"); diff --git a/src/core/wrapper/layout/flex/wrapper/flex.wrapper.vertical.js b/src/core/wrapper/layout/flex/wrapper/flex.wrapper.vertical.js index c46f8c222..f9d85948f 100644 --- a/src/core/wrapper/layout/flex/wrapper/flex.wrapper.vertical.js +++ b/src/core/wrapper/layout/flex/wrapper/flex.wrapper.vertical.js @@ -24,10 +24,13 @@ BI.FlexWrapperVerticalLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FlexWrapperVerticalLayout.superclass.render.apply(this, arguments); - var o = this.options; + var self = this, o = this.options; this.element.addClass("v-" + o.verticalAlign).addClass("h-" + o.horizontalAlign); this.$wrapper = BI.Widget._renderEngine.createElement("
    ").addClass("f-s-v-w h-" + o.horizontalAlign).addClass("v-" + o.verticalAlign); - this.populate(this.options.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _hasFill: function () { @@ -70,7 +73,7 @@ BI.FlexWrapperVerticalLayout = BI.inherit(BI.Layout, { } } if (rowSize > 0) { - w.element.height(rowSize < 1 ? ((rowSize * 100).toFixed(1) + "%") : (rowSize / BI.pixRatio + BI.pixUnit)); + w.element.height(this._optimiseGap(rowSize)); } if (rowSize === "fill") { w.element.addClass("f-f"); diff --git a/src/core/wrapper/layout/float/float.absolute.center.js b/src/core/wrapper/layout/float/float.absolute.center.js index afe3e77b7..08cc5b326 100644 --- a/src/core/wrapper/layout/float/float.absolute.center.js +++ b/src/core/wrapper/layout/float/float.absolute.center.js @@ -12,7 +12,11 @@ BI.FloatAbsoluteCenterLayout = BI.inherit(BI.Layout, { render: function () { BI.FloatAbsoluteCenterLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { diff --git a/src/core/wrapper/layout/float/float.absolute.horizontal.js b/src/core/wrapper/layout/float/float.absolute.horizontal.js index 5ccc22daf..b9aae3708 100644 --- a/src/core/wrapper/layout/float/float.absolute.horizontal.js +++ b/src/core/wrapper/layout/float/float.absolute.horizontal.js @@ -35,7 +35,9 @@ BI.FloatAbsoluteHorizontalLayout = BI.inherit(BI.Layout, { bgap: o.bgap, // lgap和rgap不传的话内部不会设置left和right lgap: o.lgap, - rgap: o.rgap + rgap: o.rgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/float/float.absolute.leftrightvertical.js b/src/core/wrapper/layout/float/float.absolute.leftrightvertical.js index 365d2dbcd..26bea2558 100644 --- a/src/core/wrapper/layout/float/float.absolute.leftrightvertical.js +++ b/src/core/wrapper/layout/float/float.absolute.leftrightvertical.js @@ -29,6 +29,8 @@ BI.FloatAbsoluteLeftRightVerticalAdaptLayout = BI.inherit(BI.Layout, { verticalAlign: o.verticalAlign, items: this._formatItems(o.items), vgap: "50%", + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, scrollx: o.scrollx, scrolly: o.scrolly, scrollable: o.scrollable diff --git a/src/core/wrapper/layout/float/float.absolute.vertical.js b/src/core/wrapper/layout/float/float.absolute.vertical.js index bea82bb3c..01b949b06 100644 --- a/src/core/wrapper/layout/float/float.absolute.vertical.js +++ b/src/core/wrapper/layout/float/float.absolute.vertical.js @@ -35,7 +35,9 @@ BI.FloatAbsoluteVerticalLayout = BI.inherit(BI.Layout, { rgap: o.rgap, // tgap和bgap不传的话内部不会设置top和bottom tgap: o.tgap, - bgap: o.bgap + bgap: o.bgap, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, }; }, diff --git a/src/core/wrapper/layout/float/float.horizontal.js b/src/core/wrapper/layout/float/float.horizontal.js index 110b4494f..97ac66b49 100644 --- a/src/core/wrapper/layout/float/float.horizontal.js +++ b/src/core/wrapper/layout/float/float.horizontal.js @@ -51,6 +51,8 @@ BI.FloatHorizontalLayout = BI.inherit(BI.Layout, { }], horizontalAlign: o.horizontalAlign, verticalAlign: o.verticalAlign, + innerHgap: o.innerHgap, + innerVgap: o.innerVgap, scrollx: o.scrollx, scrolly: o.scrolly, scrollable: o.scrollable diff --git a/src/core/wrapper/layout/layout.absolute.js b/src/core/wrapper/layout/layout.absolute.js index 6a59eb133..6333b38a8 100644 --- a/src/core/wrapper/layout/layout.absolute.js +++ b/src/core/wrapper/layout/layout.absolute.js @@ -17,65 +17,91 @@ BI.AbsoluteLayout = BI.inherit(BI.Layout, { }, render: function () { BI.AbsoluteLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { var o = this.options; var w = BI.AbsoluteLayout.superclass._addElement.apply(this, arguments); var left = 0, right = 0, top = 0, bottom = 0; - if (BI.isNotNull(item.left)) { - w.element.css({left: BI.isNumber(item.left) ? item.left / BI.pixRatio + BI.pixUnit : item.left}); - left += item.left; + var offsets = BI.pick(item, ["top", "right", "bottom", "left"]); + + if (BI.isKey(item.inset)) { + var insets = BI.map((item.inset + "").split(" "), function (i, str) { + return BI.parseFloat(str); + }); + switch (insets.length) { + case 1: + offsets = {top: insets[0], bottom: insets[0], left: insets[0], right: insets[0]} + break; + case 2: + offsets = {top: insets[0], bottom: insets[0], left: insets[1], right: insets[1]} + break; + case 3: + offsets = {top: insets[0], left: insets[1], right: insets[1], bottom: insets[2]} + break + case 4: + default: + offsets = {top: insets[0], right: insets[1], bottom: insets[2], left: insets[3]} + break; + } + } + if (BI.isNotNull(offsets.left)) { + w.element.css({left: BI.isNumber(offsets.left) ? this._optimiseGap(offsets.left) : offsets.left}); + left += offsets.left; } - if (BI.isNotNull(item.right)) { - w.element.css({right: BI.isNumber(item.right) ? item.right / BI.pixRatio + BI.pixUnit : item.right}); - right += item.right; + if (BI.isNotNull(offsets.right)) { + w.element.css({right: BI.isNumber(offsets.right) ? this._optimiseGap(offsets.right) : offsets.right}); + right += offsets.right; } - if (BI.isNotNull(item.top)) { - w.element.css({top: BI.isNumber(item.top) ? item.top / BI.pixRatio + BI.pixUnit : item.top}); - top += item.top; + if (BI.isNotNull(offsets.top)) { + w.element.css({top: BI.isNumber(offsets.top) ? this._optimiseGap(offsets.top) : offsets.top}); + top += offsets.top; } - if (BI.isNotNull(item.bottom)) { - w.element.css({bottom: BI.isNumber(item.bottom) ? item.bottom / BI.pixRatio + BI.pixUnit : item.bottom}); - bottom += item.bottom; + if (BI.isNotNull(offsets.bottom)) { + w.element.css({bottom: BI.isNumber(offsets.bottom) ? this._optimiseGap(offsets.bottom) : offsets.bottom}); + bottom += offsets.bottom; } if (BI.isNotNull(o.hgap)) { left += o.hgap; - w.element.css({left: left / BI.pixRatio + BI.pixUnit}); + w.element.css({left: this._optimiseGap(left)}); right += o.hgap; - w.element.css({right: right / BI.pixRatio + BI.pixUnit}); + w.element.css({right: this._optimiseGap(right)}); } if (BI.isNotNull(o.vgap)) { top += o.vgap; - w.element.css({top: top / BI.pixRatio + BI.pixUnit}); + w.element.css({top: this._optimiseGap(top)}); bottom += o.vgap; - w.element.css({bottom: bottom / BI.pixRatio + BI.pixUnit}); + w.element.css({bottom: this._optimiseGap(bottom)}); } if (BI.isNotNull(o.lgap)) { left += o.lgap; - w.element.css({left: left / BI.pixRatio + BI.pixUnit}); + w.element.css({left: this._optimiseGap(left)}); } if (BI.isNotNull(o.rgap)) { right += o.rgap; - w.element.css({right: right / BI.pixRatio + BI.pixUnit}); + w.element.css({right: this._optimiseGap(right)}); } if (BI.isNotNull(o.tgap)) { top += o.tgap; - w.element.css({top: top / BI.pixRatio + BI.pixUnit}); + w.element.css({top: this._optimiseGap(top)}); } if (BI.isNotNull(o.bgap)) { bottom += o.bgap; - w.element.css({bottom: bottom / BI.pixRatio + BI.pixUnit}); + w.element.css({bottom: this._optimiseGap(bottom)}); } if (BI.isNotNull(item.width)) { - w.element.css({width: BI.isNumber(item.width) ? item.width / BI.pixRatio + BI.pixUnit : item.width}); + w.element.css({width: BI.isNumber(item.width) ? this._optimiseGap(item.width) : item.width}); } if (BI.isNotNull(item.height)) { - w.element.css({height: BI.isNumber(item.height) ? item.height / BI.pixRatio + BI.pixUnit : item.height}); + w.element.css({height: BI.isNumber(item.height) ? this._optimiseGap(item.height) : item.height}); } w.element.css({position: "absolute"}); return w; diff --git a/src/core/wrapper/layout/layout.adaptive.js b/src/core/wrapper/layout/layout.adaptive.js index 7c19e1928..20b758ef4 100644 --- a/src/core/wrapper/layout/layout.adaptive.js +++ b/src/core/wrapper/layout/layout.adaptive.js @@ -2,17 +2,21 @@ BI.AdaptiveLayout = BI.inherit(BI.Layout, { props: function () { return BI.extend(BI.AdaptiveLayout.superclass.props.apply(this, arguments), { baseCls: "bi-adaptive", - hgap: null, - vgap: null, - lgap: null, - rgap: null, - tgap: null, - bgap: null + hgap: 0, + vgap: 0, + lgap: 0, + rgap: 0, + tgap: 0, + bgap: 0 }); }, render: function () { BI.AdaptiveLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { @@ -21,32 +25,32 @@ BI.AdaptiveLayout = BI.inherit(BI.Layout, { w.element.css({position: "relative"}); if (BI.isNotNull(item.left)) { w.element.css({ - left: BI.isNumber(item.left) ? item.left / BI.pixRatio + BI.pixUnit : item.left + left: BI.isNumber(item.left) ? this._optimiseGap(item.left) : item.left }); } if (BI.isNotNull(item.right)) { w.element.css({ - right: BI.isNumber(item.right) ? item.right / BI.pixRatio + BI.pixUnit : item.right + right: BI.isNumber(item.right) ? this._optimiseGap(item.right) : item.right }); } if (BI.isNotNull(item.top)) { w.element.css({ - top: BI.isNumber(item.top) ? item.top / BI.pixRatio + BI.pixUnit : item.top + top: BI.isNumber(item.top) ? this._optimiseGap(item.top) : item.top }); } if (BI.isNotNull(item.bottom)) { w.element.css({ - bottom: BI.isNumber(item.bottom) ? item.bottom / BI.pixRatio + BI.pixUnit : item.bottom + bottom: BI.isNumber(item.bottom) ? this._optimiseGap(item.bottom) : item.bottom }); } this._handleGap(w, item); if (BI.isNotNull(item.width)) { - w.element.css({width: BI.isNumber(item.width) ? item.width / BI.pixRatio + BI.pixUnit : item.width}); + w.element.css({width: BI.isNumber(item.width) ? this._optimiseGap(item.width) : item.width}); } if (BI.isNotNull(item.height)) { - w.element.css({height: BI.isNumber(item.height) ? item.height / BI.pixRatio + BI.pixUnit : item.height}); + w.element.css({height: BI.isNumber(item.height) ? this._optimiseGap(item.height) : item.height}); } return w; }, diff --git a/src/core/wrapper/layout/layout.border.js b/src/core/wrapper/layout/layout.border.js index 212c545d4..15d3877af 100644 --- a/src/core/wrapper/layout/layout.border.js +++ b/src/core/wrapper/layout/layout.border.js @@ -13,7 +13,11 @@ BI.BorderLayout = BI.inherit(BI.Layout, { }, render: function () { BI.BorderLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, addItem: function (item) { @@ -35,12 +39,12 @@ BI.BorderLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); this.addWidget(this._getChildName("north"), w); } - this.getWidgetByName(this._getChildName("north")).element.height(item.height / BI.pixRatio + BI.pixUnit) + this.getWidgetByName(this._getChildName("north")).element.height(this._optimiseGap(item.height)) .css({ position: "absolute", - top: (item.top || 0) / BI.pixRatio + BI.pixUnit, - left: (item.left || 0) / BI.pixRatio + BI.pixUnit, - right: (item.right || 0) / BI.pixRatio + BI.pixUnit, + top: this._optimiseGap(item.top || 0), + left: this._optimiseGap(item.left || 0), + right: this._optimiseGap(item.right || 0), bottom: "initial" }); } @@ -55,12 +59,12 @@ BI.BorderLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); this.addWidget(this._getChildName("south"), w); } - this.getWidgetByName(this._getChildName("south")).element.height(item.height / BI.pixRatio + BI.pixUnit) + this.getWidgetByName(this._getChildName("south")).element.height(this._optimiseGap(item.height)) .css({ position: "absolute", - bottom: (item.bottom || 0) / BI.pixRatio + BI.pixUnit, - left: (item.left || 0) / BI.pixRatio + BI.pixUnit, - right: (item.right || 0) / BI.pixRatio + BI.pixUnit, + bottom: this._optimiseGap(item.bottom || 0), + left: this._optimiseGap(item.left || 0), + right: this._optimiseGap(item.right || 0), top: "initial" }); } @@ -75,12 +79,12 @@ BI.BorderLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); this.addWidget(this._getChildName("west"), w); } - this.getWidgetByName(this._getChildName("west")).element.width(item.width / BI.pixRatio + BI.pixUnit) + this.getWidgetByName(this._getChildName("west")).element.width(this._optimiseGap(item.width)) .css({ position: "absolute", - left: (item.left || 0) / BI.pixRatio + BI.pixUnit, - top: top / BI.pixRatio + BI.pixUnit, - bottom: bottom / BI.pixRatio + BI.pixUnit, + left: this._optimiseGap(item.left || 0), + top: this._optimiseGap(top), + bottom: this._optimiseGap(bottom), right: "initial" }); } @@ -95,12 +99,12 @@ BI.BorderLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); this.addWidget(this._getChildName("east"), w); } - this.getWidgetByName(this._getChildName("east")).element.width(item.width / BI.pixRatio + BI.pixUnit) + this.getWidgetByName(this._getChildName("east")).element.width(this._optimiseGap(item.width)) .css({ position: "absolute", - right: (item.right || 0) / BI.pixRatio + BI.pixUnit, - top: top / BI.pixRatio + BI.pixUnit, - bottom: bottom / BI.pixRatio + BI.pixUnit, + right: this._optimiseGap(item.right || 0), + top: this._optimiseGap(top), + bottom: this._optimiseGap(bottom), left: "initial" }); } @@ -117,10 +121,10 @@ BI.BorderLayout = BI.inherit(BI.Layout, { this.getWidgetByName(this._getChildName("center")).element .css({ position: "absolute", - top: top / BI.pixRatio + BI.pixUnit, - bottom: bottom / BI.pixRatio + BI.pixUnit, - left: left / BI.pixRatio + BI.pixUnit, - right: right / BI.pixRatio + BI.pixUnit + top: this._optimiseGap(top), + bottom: this._optimiseGap(bottom), + left: this._optimiseGap(left), + right: this._optimiseGap(right) }); } } diff --git a/src/core/wrapper/layout/layout.card.js b/src/core/wrapper/layout/layout.card.js index 5ca2bec63..97034efba 100644 --- a/src/core/wrapper/layout/layout.card.js +++ b/src/core/wrapper/layout/layout.card.js @@ -16,7 +16,11 @@ BI.CardLayout = BI.inherit(BI.Layout, { render: function () { BI.CardLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, stroke: function (items) { @@ -38,7 +42,13 @@ BI.CardLayout = BI.inherit(BI.Layout, { } else { var w = self.getWidgetByName(self._getChildName(item.cardName)); } - w.element.css({position: "absolute", top: "0", right: "0", bottom: "0", left: "0"}); + w.element.css({ + position: "relative", + top: "0", + left: "0", + width: "100%", + height: "100%" + }); w.setVisible(false); } }); diff --git a/src/core/wrapper/layout/layout.default.js b/src/core/wrapper/layout/layout.default.js index a35f99a07..90e4bf569 100644 --- a/src/core/wrapper/layout/layout.default.js +++ b/src/core/wrapper/layout/layout.default.js @@ -18,7 +18,11 @@ BI.DefaultLayout = BI.inherit(BI.Layout, { }, render: function () { BI.DefaultLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { diff --git a/src/core/wrapper/layout/layout.division.js b/src/core/wrapper/layout/layout.division.js index 54fe3dbcc..988d118be 100644 --- a/src/core/wrapper/layout/layout.division.js +++ b/src/core/wrapper/layout/layout.division.js @@ -15,7 +15,11 @@ BI.DivisionLayout = BI.inherit(BI.Layout, { }, render: function () { BI.DivisionLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, addItem: function (item) { diff --git a/src/core/wrapper/layout/layout.flow.js b/src/core/wrapper/layout/layout.flow.js index 2061b4513..4efc35123 100644 --- a/src/core/wrapper/layout/layout.flow.js +++ b/src/core/wrapper/layout/layout.flow.js @@ -21,8 +21,23 @@ BI.FloatLeftLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FloatLeftLayout.superclass.render.apply(this, arguments); - var o = this.options; - this.populate(this.options.items); + var self = this, o = this.options; + if (o.innerHgap !== 0) { + this.element.css({ + paddingLeft: this._optimiseGap(o.innerHgap), + paddingRight: this._optimiseGap(o.innerHgap) + }) + } + if (o.innerVgap !== 0) { + this.element.css({ + paddingTop: this._optimiseGap(o.innerVgap), + paddingBottom: this._optimiseGap(o.innerVgap) + }) + } + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { @@ -30,35 +45,39 @@ BI.FloatLeftLayout = BI.inherit(BI.Layout, { var w = BI.FloatLeftLayout.superclass._addElement.apply(this, arguments); w.element.css({position: "relative", float: "left"}); if (BI.isNotNull(item.left)) { - w.element.css({left: BI.isNumber(item.left) ? item.left / BI.pixRatio + BI.pixUnit : item.left}); + w.element.css({left: BI.isNumber(item.left) ? this._optimiseGap(item.left) : item.left}); } if (BI.isNotNull(item.right)) { - w.element.css({right: BI.isNumber(item.right) ? item.right / BI.pixRatio + BI.pixUnit : item.right}); + w.element.css({right: BI.isNumber(item.right) ? this._optimiseGap(item.right) : item.right}); } if (BI.isNotNull(item.top)) { - w.element.css({top: BI.isNumber(item.top) ? item.top / BI.pixRatio + BI.pixUnit : item.top}); + w.element.css({top: BI.isNumber(item.top) ? this._optimiseGap(item.top) : item.top}); } if (BI.isNotNull(item.bottom)) { - w.element.css({bottom: BI.isNumber(item.bottom) ? item.bottom / BI.pixRatio + BI.pixUnit : item.bottom}); + w.element.css({bottom: BI.isNumber(item.bottom) ? this._optimiseGap(item.bottom) : item.bottom}); } if (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0) !== 0) { + var top = o.vgap / 2 + o.tgap + (item.tgap || 0) + (item.vgap || 0); w.element.css({ - "margin-top": (o.vgap / 2 + o.tgap + (item.tgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-top": this._optimiseGap(top) }); } if (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { + var left = o.hgap / 2 + o.lgap + (item.lgap || 0) + (item.hgap || 0); w.element.css({ - "margin-left": (o.hgap / 2 + o.lgap + (item.lgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-left": this._optimiseGap(left) }); } if (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { + var right = o.hgap / 2 + o.rgap + (item.rgap || 0) + (item.hgap || 0); w.element.css({ - "margin-right": (o.hgap / 2 + o.rgap + (item.rgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-right": this._optimiseGap(right) }); } if (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0) !== 0) { + var bottom = o.vgap / 2 + o.bgap + (item.bgap || 0) + (item.vgap || 0); w.element.css({ - "margin-bottom": (o.vgap / 2 + o.bgap + (item.bgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit + "margin-bottom": this._optimiseGap(bottom) }); } return w; @@ -94,8 +113,23 @@ BI.FloatRightLayout = BI.inherit(BI.Layout, { }, render: function () { BI.FloatRightLayout.superclass.render.apply(this, arguments); - var o = this.options; - this.populate(this.options.items); + var self = this, o = this.options; + if (o.innerHgap !== 0) { + this.element.css({ + paddingLeft: this._optimiseGap(o.innerHgap), + paddingRight: this._optimiseGap(o.innerHgap) + }) + } + if (o.innerVgap !== 0) { + this.element.css({ + paddingTop: this._optimiseGap(o.innerVgap), + paddingBottom: this._optimiseGap(o.innerVgap) + }) + } + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { diff --git a/src/core/wrapper/layout/layout.grid.js b/src/core/wrapper/layout/layout.grid.js index dac59e74a..a81c31681 100644 --- a/src/core/wrapper/layout/layout.grid.js +++ b/src/core/wrapper/layout/layout.grid.js @@ -15,7 +15,11 @@ BI.GridLayout = BI.inherit(BI.Layout, { }, render: function () { BI.GridLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, addItem: function () { diff --git a/src/core/wrapper/layout/layout.inline.js b/src/core/wrapper/layout/layout.inline.js index 9e3b35470..a1d889337 100644 --- a/src/core/wrapper/layout/layout.inline.js +++ b/src/core/wrapper/layout/layout.inline.js @@ -27,11 +27,14 @@ BI.InlineLayout = BI.inherit(BI.Layout, { render: function () { BI.InlineLayout.superclass.render.apply(this, arguments); - var o = this.options; + var self = this, o = this.options; this.element.css({ textAlign: o.horizontalAlign }); - this.populate(o.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { @@ -52,7 +55,7 @@ BI.InlineLayout = BI.inherit(BI.Layout, { }); w.element.addClass("i-item"); if (columnSize === "fill" || columnSize === "") { - var length = o.hgap; + var length = 0, gap = o.hgap + o.innerHgap; var fillCount = 0, autoCount = 0; for (var k = 0, len = o.columnSize.length || o.items.length; k < len; k++) { var cz = o.columnSize.length > 0 ? o.columnSize[k] : o.items[k].width; @@ -63,24 +66,28 @@ BI.InlineLayout = BI.inherit(BI.Layout, { autoCount++; cz = 0; } - length += o.hgap + o.lgap + o.rgap + (o.items[k].lgap || 0) + (o.items[k].rgap || 0) + (o.items[k].hgap || 0) + cz; + gap += o.hgap + o.lgap + o.rgap + (o.items[k].lgap || 0) + (o.items[k].rgap || 0) + (o.items[k].hgap || 0); + length += cz; } + length = length > 0 && length < 1 ? (length * 100).toFixed(1) + "%" : length / BI.pixRatio + BI.pixUnit; + gap = gap > 0 && gap < 1 ? (gap * 100).toFixed(1) + "%" : gap / BI.pixRatio + BI.pixUnit; if (columnSize === "fill") { - w.element.css("min-width", "calc((100% - " + (length / BI.pixRatio + BI.pixUnit) + ")" + (fillCount > 1 ? "/" + fillCount : "") + ")"); + w.element.css("min-width", "calc((100% - " + length + " - " + gap + ")" + (fillCount > 1 ? "/" + fillCount : "") + ")"); } if (o.horizontalAlign === BI.HorizontalAlign.Stretch || !(o.scrollable === true || o.scrollx === true)) { if (columnSize === "fill") { - w.element.css("max-width", "calc((100% - " + (length / BI.pixRatio + BI.pixUnit) + ")" + (fillCount > 1 ? "/" + fillCount : "") + ")"); + w.element.css("max-width", "calc((100% - " + length + " - " + gap + ")" + (fillCount > 1 ? "/" + fillCount : "") + ")"); } else { - w.element.css("max-width", "calc((100% - " + (length / BI.pixRatio + BI.pixUnit) + ")" + (autoCount > 1 ? "/" + autoCount : "") + ")"); + w.element.css("max-width", "calc((100% - " + length + " - " + gap + ")" + (autoCount > 1 ? "/" + autoCount : "") + ")"); } } } this._handleGap(w, item, i); if (o.verticalAlign === BI.VerticalAlign.Stretch && BI.isNull(item.height)) { - var top = o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0), - bottom = o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0); - w.element.css("height", "calc(100% - " + ((top + bottom) / BI.pixRatio + BI.pixUnit) + ")"); + var top = o.innerVgap + o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0), + bottom = o.innerVgap + o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0); + var gap = (top + bottom) > 0 && (top + bottom) < 1 ? ((top + bottom) * 100).toFixed(1) + "%" : (top + bottom) / BI.pixRatio + BI.pixUnit; + w.element.css("height", "calc(100% - " + gap + ")"); } return w; }, diff --git a/src/core/wrapper/layout/layout.lattice.js b/src/core/wrapper/layout/layout.lattice.js index 9b5731815..34845aa7b 100644 --- a/src/core/wrapper/layout/layout.lattice.js +++ b/src/core/wrapper/layout/layout.lattice.js @@ -16,7 +16,11 @@ BI.LatticeLayout = BI.inherit(BI.Layout, { }, render: function () { BI.LatticeLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { diff --git a/src/core/wrapper/layout/layout.table.js b/src/core/wrapper/layout/layout.table.js index 82ffd3973..6352672c2 100644 --- a/src/core/wrapper/layout/layout.table.js +++ b/src/core/wrapper/layout/layout.table.js @@ -8,9 +8,12 @@ BI.TableLayout = BI.inherit(BI.Layout, { props: function () { return BI.extend(BI.TableLayout.superclass.props.apply(this, arguments), { baseCls: "bi-t", - scrolly: true, + // scrolly: true, columnSize: [], - rowSize: 30, // or [30,30,30] + rowSize: [], + horizontalAlign: BI.HorizontalAlign.Stretch, + verticalAlign: BI.VerticalAlign.Stretch, + // rowSize: 30, // or [30,30,30] hgap: 0, vgap: 0, items: [] @@ -18,13 +21,44 @@ BI.TableLayout = BI.inherit(BI.Layout, { }, render: function () { BI.TableLayout.superclass.render.apply(this, arguments); - this.rows = 0; - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + + var columnSize = o.columnSize.length > 0 ? o.columnSize : BI.range(items[0].length).fill(""); + + if (columnSize.length > 0) { + var template = []; + for (var i = 0; i < columnSize.length; i++) { + if (columnSize[i] === "") { + template.push("auto"); + } else if (columnSize[i] === "fill") { + template.push("1fr"); + } else { + template.push(this._optimiseGap(columnSize[i])); + } + } + this.element.css({ + "grid-template-columns": template.join(" "), + "grid-template-rows": BI.isArray(o.rowSize) ? BI.map(o.rowSize, function (i, size) { + return self._optimiseGap(size); + }).join(" ") : BI.range(o.items.length).fill(this._optimiseGap(o.rowSize)).join(" "), + "grid-row-gap": this._optimiseGap(o.vgap), + "grid-column-gap": this._optimiseGap(o.hgap) + }); + } + return { + type: "bi.default", + ref: function (_ref) { + self.layout = _ref; + }, + items: this._formatItems(items) + }; }, - _addElement: function (idx, arr) { + _formatItems: function (items) { var o = this.options; - var abs = [], left = 0, right = 0, i, j; function firstElement (item, row, col) { if (row === 0) { @@ -36,6 +70,7 @@ BI.TableLayout = BI.inherit(BI.Layout, { item.addClass(BI.isOdd(row + 1) ? "odd-row" : "even-row"); item.addClass(BI.isOdd(col + 1) ? "odd-col" : "even-col"); item.addClass("center-element"); + return item; } function firstObject (item, row, col) { @@ -49,85 +84,49 @@ BI.TableLayout = BI.inherit(BI.Layout, { BI.isOdd(row + 1) ? (cls += " odd-row") : (cls += " even-row"); BI.isOdd(col + 1) ? (cls += " odd-col") : (cls += " even-col"); item.cls = (item.cls || "") + cls + " center-element"; + return item; } function first (item, row, col) { if (item instanceof BI.Widget) { - firstElement(item.element, row, col); + return firstElement(item.element, row, col); } else if (item.el instanceof BI.Widget) { - firstElement(item.el.element, row, col); + return firstElement(item.el.element, row, col); } else if (item.el) { - firstObject(item.el, row, col); + return firstObject(item.el, row, col); } else { - firstObject(item, row, col); + return firstObject(item, row, col); } } - for (i = 0; i < arr.length; i++) { - if (BI.isNumber(o.columnSize[i])) { - first(arr[i], this.rows, i); - abs.push(BI.extend({ - top: 0, - bottom: 0, - left: o.columnSize[i] < 1 ? (left * 100).toFixed(1) + "%" : left, - width: o.columnSize[i] < 1 ? (o.columnSize[i] * 100).toFixed(1) + "%" : o.columnSize[i] - }, arr[i])); - left += o.columnSize[i] + (o.columnSize[i] < 1 ? 0 : o.hgap); - } else { - break; - } - } - for (j = arr.length - 1; j > i; j--) { - if (BI.isNumber(o.columnSize[j])) { - first(arr[j], this.rows, j); - abs.push(BI.extend({ - top: 0, - bottom: 0, - right: o.columnSize[j] < 1 ? (right * 100).toFixed(1) + "%" : right, - width: o.columnSize[j] < 1 ? (o.columnSize[j] * 100).toFixed(1) + "%" : o.columnSize[j] - }, arr[j])); - right += o.columnSize[j] + (o.columnSize[j] < 1 ? 0 : o.hgap); - } else { - throw new Error("构造错误", arr); - } - } - if (i >= 0 && i < arr.length) { - first(arr[i], this.rows, i); - abs.push(BI.extend({ - top: 0, - bottom: 0, - left: left < 1 ? (left * 100).toFixed(1) + "%" : left, - right: right < 1 ? (right * 100).toFixed(1) + "%" : right - }, arr[i])); - } - var w = BI._lazyCreateWidget({ - type: "bi.absolute", - height: BI.isArray(o.rowSize) ? o.rowSize[this.rows] : o.rowSize, - items: abs - }); - if (this.rows > 0) { - this.getWidgetByName(this._getChildName(this.rows - 1)).element.css({ - "margin-bottom": o.vgap / BI.pixRatio + BI.pixUnit - }); + function wrapLayout (item) { + return { + type: "bi.horizontal_fill", + columnSize: ["fill"], + horizontalAlign: o.horizontalAlign, + verticalAlign: o.verticalAlign, + items: [BI.formatEL(item)] + }; } - w.element.css({ - position: "relative" - }); - this.addWidget(this._getChildName(this.rows++), w); - return w; + + return BI.reduce(items, function (row, result, i) { + return result.concat(BI.map(row, function (j, item) { + if (BI.isEmpty(item)) { + return first(wrapLayout({ + type: "bi.layout" + }), i, j); + } + return first(wrapLayout(item), i, j); + })); + }, []); }, resize: function () { // console.log("table布局不需要resize"); }, - update: function (opt) { - return this.forceUpdate(opt); - }, - populate: function (items) { - BI.TableLayout.superclass.populate.apply(this, arguments); - this._mount(); + this.layout.populate(this._formatItems(items)); } }); BI.shortcut("bi.table", BI.TableLayout); diff --git a/src/core/wrapper/layout/layout.tape.js b/src/core/wrapper/layout/layout.tape.js index 5723f3461..8652862da 100644 --- a/src/core/wrapper/layout/layout.tape.js +++ b/src/core/wrapper/layout/layout.tape.js @@ -20,7 +20,11 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { }, render: function () { BI.HTapeLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, addItem: function (item) { @@ -41,10 +45,17 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { } else { w = self.getWidgetByName(self._getChildName(i)); } + var columnSize = o.columnSize.length > 0 ? o.columnSize[i] : item.width; + if (o.columnSize.length > 0) { + if (item.width >= 1 && o.columnSize[i] >= 1 && o.columnSize[i] !== item.width) { + columnSize = item.width; + } + } w.element.css({ position: "absolute", - top: ((item.vgap || 0) + (item.tgap || 0) + o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - bottom: ((item.bgap || 0) + (item.vgap || 0) + o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit + top: self._optimiseGap((item.vgap || 0) + (item.tgap || 0) + o.innerVgap + o.vgap + o.tgap), + bottom: self._optimiseGap((item.bgap || 0) + (item.vgap || 0) + o.innerVgap + o.vgap + o.bgap), + width: BI.isNumber(columnSize) ? self._optimiseGap(columnSize) : "" }); if (o.verticalAlign === BI.VerticalAlign.Middle) { w.element.css({ @@ -59,8 +70,8 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { }); var left = {}, right = {}; - left[0] = 0; - right[items.length - 1] = 0; + left[0] = o.innerHgap; + right[items.length - 1] = o.innerHgap; BI.any(items, function (i, item) { if (BI.isEmptyObject(item)) { @@ -77,17 +88,10 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { var preColumnSize = o.columnSize.length > 0 ? o.columnSize[i - 1] : items[i - 1].width; left[i] = left[i - 1] + preColumnSize + (items[i - 1].lgap || 0) + (items[i - 1].rgap || 0) + 2 * (items[i - 1].hgap || 0) + o.hgap + o.lgap + o.rgap; } - if (columnSize < 1 && columnSize > 0) { - w.element.css({ - left: (left[i] * 100).toFixed(1) + "%", - width: (columnSize * 100).toFixed(1) + "%" - }); - } else { - w.element.css({ - left: (left[i] + (item.lgap || 0) + (item.hgap || 0) + o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - width: BI.isNumber(columnSize) ? columnSize / BI.pixRatio + BI.pixUnit : "" - }); - } + w.element.css({ + left: self._optimiseGap(left[i] + (item.lgap || 0) + (item.hgap || 0) + o.hgap + o.lgap) + }); + if (columnSize === "" || columnSize === "fill") { return true; } @@ -102,17 +106,10 @@ BI.HTapeLayout = BI.inherit(BI.Layout, { var nextColumnSize = o.columnSize.length > 0 ? o.columnSize[i + 1] : items[i + 1].width; right[i] = right[i + 1] + nextColumnSize + (items[i + 1].lgap || 0) + (items[i + 1].rgap || 0) + 2 * (items[i + 1].hgap || 0) + o.hgap + o.lgap + o.rgap; } - if (columnSize < 1 && columnSize > 0) { - w.element.css({ - right: (right[i] * 100).toFixed(1) + "%", - width: (columnSize * 100).toFixed(1) + "%" - }); - } else { - w.element.css({ - right: (right[i] + (item.rgap || 0) + (item.hgap || 0) + o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, - width: BI.isNumber(columnSize) ? columnSize / BI.pixRatio + BI.pixUnit : "" - }); - } + w.element.css({ + right: self._optimiseGap(right[i] + (item.rgap || 0) + (item.hgap || 0) + o.hgap + o.rgap) + }); + if (columnSize === "" || columnSize === "fill") { return true; } @@ -173,10 +170,17 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { } else { w = self.getWidgetByName(self._getChildName(i)); } + var rowSize = o.rowSize.length > 0 ? o.rowSize[i] : item.height; + if (o.rowSize.length > 0) { + if (item.height >= 1 && o.rowSize[i] >= 1 && o.rowSize[i] !== item.height) { + rowSize = item.height; + } + } w.element.css({ position: "absolute", - left: ((item.lgap || 0) + (item.hgap || 0) + o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - right: ((item.hgap || 0) + (item.rgap || 0) + o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit + left: self._optimiseGap((item.lgap || 0) + (item.hgap || 0) + o.innerHgap + o.hgap + o.lgap), + right: self._optimiseGap((item.hgap || 0) + (item.rgap || 0) + o.innerHgap + o.hgap + o.rgap), + height: BI.isNumber(rowSize) ? self._optimiseGap(rowSize) : "" }); if (o.horizontalAlign === BI.HorizontalAlign.Center) { w.element.css({ @@ -191,8 +195,8 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { }); var top = {}, bottom = {}; - top[0] = 0; - bottom[items.length - 1] = 0; + top[0] = o.innerVgap; + bottom[items.length - 1] = o.innerVgap; BI.any(items, function (i, item) { if (BI.isEmptyObject(item)) { @@ -209,17 +213,10 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { var preRowSize = o.rowSize.length > 0 ? o.rowSize[i - 1] : items[i - 1].height; top[i] = top[i - 1] + preRowSize + (items[i - 1].tgap || 0) + (items[i - 1].bgap || 0) + 2 * (items[i - 1].vgap || 0) + o.vgap + o.tgap + o.bgap; } - if (rowSize < 1 && rowSize > 0) { - w.element.css({ - top: (top[i] * 100).toFixed(1) + "%", - height: (rowSize * 100).toFixed(1) + "%" - }); - } else { - w.element.css({ - top: (top[i] + (item.vgap || 0) + (item.tgap || 0) + o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - height: BI.isNumber(rowSize) ? rowSize / BI.pixRatio + BI.pixUnit : "" - }); - } + w.element.css({ + top: self._optimiseGap(top[i] + (item.vgap || 0) + (item.tgap || 0) + o.vgap + o.tgap) + }); + if (rowSize === "" || rowSize === "fill") { return true; } @@ -234,17 +231,10 @@ BI.VTapeLayout = BI.inherit(BI.Layout, { var nextRowSize = o.rowSize.length > 0 ? o.rowSize[i + 1] : items[i + 1].height; bottom[i] = bottom[i + 1] + nextRowSize + (items[i + 1].tgap || 0) + (items[i + 1].bgap || 0) + 2 * (items[i + 1].vgap || 0) + o.vgap + o.tgap + o.bgap; } - if (rowSize < 1 && rowSize > 0) { - w.element.css({ - bottom: (bottom[i] * 100).toFixed(1) + "%", - height: (rowSize * 100).toFixed(1) + "%" - }); - } else { - w.element.css({ - bottom: (bottom[i] + (item.vgap || 0) + (item.bgap || 0) + o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, - height: BI.isNumber(rowSize) ? rowSize / BI.pixRatio + BI.pixUnit : "" - }); - } + w.element.css({ + bottom: self._optimiseGap(bottom[i] + (item.vgap || 0) + (item.bgap || 0) + o.vgap + o.bgap) + }); + if (rowSize === "" || rowSize === "fill") { return true; } diff --git a/src/core/wrapper/layout/layout.td.js b/src/core/wrapper/layout/layout.td.js index ba5b2adef..17a469754 100644 --- a/src/core/wrapper/layout/layout.td.js +++ b/src/core/wrapper/layout/layout.td.js @@ -32,7 +32,10 @@ BI.TdLayout = BI.inherit(BI.Layout, { "border-collapse": "separate" }); this.rows = 0; - this.populate(this.options.items); + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (idx, arr) { @@ -75,15 +78,14 @@ BI.TdLayout = BI.inherit(BI.Layout, { } } - var height = o.rowSize[idx] === "" ? "" : (o.rowSize[idx] < 1 ? ((o.rowSize[idx] * 100).toFixed(1) + "%") : o.rowSize[idx]); - var rowHeight = BI.isNumber(o.rowSize[idx]) ? (o.rowSize[idx] <= 1 ? height : height / BI.pixRatio + BI.pixUnit) : height; + var height = BI.isNumber(o.rowSize) ? this._optimiseGap(o.rowSize) : (o.rowSize[idx] === "" ? this._optimiseGap(1) : this._optimiseGap(o.rowSize[idx])); var tr = BI._lazyCreateWidget({ type: "bi.default", tagName: "tr", height: height, css: { - "max-height": rowHeight, - "min-height": rowHeight + "max-height": height, + "min-height": height } }); @@ -92,37 +94,16 @@ BI.TdLayout = BI.inherit(BI.Layout, { if (o.verticalAlign === BI.VerticalAlign.Stretch) { var top = o.vgap + o.tgap + (arr[i].tgap || 0) + (arr[i].vgap || 0), bottom = o.vgap + o.bgap + (arr[i].bgap || 0) + (arr[i].vgap || 0); - w.element.css("height", "calc(100% - " + ((top + bottom) / BI.pixRatio + BI.pixUnit) + ")"); + w.element.css("height", "calc(100% - " + this._optimiseGap(top + bottom) + ")"); } w.element.css({position: "relative", top: "0", left: "0", margin: "0px auto"}); var item = arr[i]; - if (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0) !== 0) { - w.element.css({ - "margin-top": (o.vgap + o.tgap + (item.tgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit - }); - } - if (o.hgap + o.lgap + (item.lgap || 0) + (item.hgap || 0) !== 0) { - w.element.css({ - "margin-left": ((i === 0 ? o.hgap : 0) + o.lgap + (item.lgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit - }); - } - if (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0) !== 0) { - w.element.css({ - "margin-right": (o.hgap + o.rgap + (item.rgap || 0) + (item.hgap || 0)) / BI.pixRatio + BI.pixUnit - }); - } - if (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0) !== 0) { - w.element.css({ - "margin-bottom": (o.vgap + o.bgap + (item.bgap || 0) + (item.vgap || 0)) / BI.pixRatio + BI.pixUnit - }); - } + this._handleGap(w, item, i); first(w, this.rows++, i); var width = ""; var columnSize = o.columnSize.length > 0 ? o.columnSize[i] : item.width; if (columnSize > 0) { - width = columnSize < 1 ? - ((columnSize * 100).toFixed(1) + "%") - : (columnSize + (i === 0 ? o.hgap : 0) + o.hgap + o.lgap + o.rgap); + width = this._optimiseGap(columnSize + (i === 0 ? o.hgap : 0) + o.hgap + o.lgap + o.rgap); } function hasFill() { if (o.columnSize.length > 0) { @@ -148,10 +129,9 @@ BI.TdLayout = BI.inherit(BI.Layout, { // 2、不能给多个td设置最大宽度,这样只会平分宽度 // 3、多百分比宽度就算了 if (columnSize > 0) { - columnSize = columnSize < 1 ? width : width / BI.pixRatio + BI.pixUnit; td.element.css({ - "max-width": columnSize, - "min-width": columnSize + "max-width": width, + "min-width": width }); } td.element.css({ diff --git a/src/core/wrapper/layout/layout.vertical.js b/src/core/wrapper/layout/layout.vertical.js index 90c78e1b7..b181b1d41 100644 --- a/src/core/wrapper/layout/layout.vertical.js +++ b/src/core/wrapper/layout/layout.vertical.js @@ -19,7 +19,11 @@ BI.VerticalLayout = BI.inherit(BI.Layout, { }, render: function () { BI.VerticalLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, _addElement: function (i, item) { diff --git a/src/core/wrapper/layout/layout.window.js b/src/core/wrapper/layout/layout.window.js index 7094bb7ee..c7d14623c 100644 --- a/src/core/wrapper/layout/layout.window.js +++ b/src/core/wrapper/layout/layout.window.js @@ -22,7 +22,11 @@ BI.WindowLayout = BI.inherit(BI.Layout, { }, render: function () { BI.WindowLayout.superclass.render.apply(this, arguments); - this.populate(this.options.items); + var self = this, o = this.options; + var items = BI.isFunction(o.items) ? this.__watch(o.items, function (context, newValue) { + self.populate(newValue); + }) : o.items; + this.populate(items); }, addItem: function (item) { @@ -100,9 +104,9 @@ BI.WindowLayout = BI.inherit(BI.Layout, { if (BI.isNull(top[i])) { top[i] = top[i - 1] + (o.rowSize[i - 1] < 1 ? o.rowSize[i - 1] : o.rowSize[i - 1] + o.vgap + o.bgap); } - var t = top[i] <= 1 ? (top[i] * 100).toFixed(1) + "%" : (top[i] + o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, h = ""; + var t = this._optimiseGap(top[i] + o.vgap + o.tgap), h = ""; if (BI.isNumber(o.rowSize[i])) { - h = o.rowSize[i] <= 1 ? (o.rowSize[i] * 100).toFixed(1) + "%" : o.rowSize[i] / BI.pixRatio + BI.pixUnit; + h = this._optimiseGap(o.rowSize[i]); } wi.element.css({top: t, height: h}); first(wi, i, j); @@ -118,9 +122,9 @@ BI.WindowLayout = BI.inherit(BI.Layout, { if (BI.isNull(bottom[i])) { bottom[i] = bottom[i + 1] + (o.rowSize[i + 1] < 1 ? o.rowSize[i + 1] : o.rowSize[i + 1] + o.vgap + o.tgap); } - var b = bottom[i] <= 1 ? (bottom[i] * 100).toFixed(1) + "%" : (bottom[i] + o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, h = ""; + var b = this._optimiseGap(bottom[i] + o.vgap + o.bgap), h = ""; if (BI.isNumber(o.rowSize[i])) { - h = o.rowSize[i] <= 1 ? (o.rowSize[i] * 100).toFixed(1) + "%" : o.rowSize[i] / BI.pixRatio + BI.pixUnit; + h = this._optimiseGap(o.rowSize[i]); } wi.element.css({bottom: b, height: h}); first(wi, i, j); @@ -136,9 +140,9 @@ BI.WindowLayout = BI.inherit(BI.Layout, { if (BI.isNull(left[j])) { left[j] = left[j - 1] + (o.columnSize[j - 1] < 1 ? o.columnSize[j - 1] : o.columnSize[j - 1] + o.hgap + o.rgap); } - var l = left[j] <= 1 ? (left[j] * 100).toFixed(1) + "%" : (left[j] + o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, w = ""; + var l = this._optimiseGap(left[j] + o.hgap + o.lgap), w = ""; if (BI.isNumber(o.columnSize[j])) { - w = o.columnSize[j] <= 1 ? (o.columnSize[j] * 100).toFixed(1) + "%" : o.columnSize[j] / BI.pixRatio + BI.pixUnit; + w = this._optimiseGap(o.columnSize[j]); } wi.element.css({left: l, width: w}); first(wi, i, j); @@ -154,9 +158,9 @@ BI.WindowLayout = BI.inherit(BI.Layout, { if (BI.isNull(right[j])) { right[j] = right[j + 1] + (o.columnSize[j + 1] < 1 ? o.columnSize[j + 1] : o.columnSize[j + 1] + o.hgap + o.lgap); } - var r = right[j] <= 1 ? (right[j] * 100).toFixed(1) + "%" : (right[j] + o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, w = ""; + var r = this._optimiseGap(right[j] + o.hgap + o.rgap), w = ""; if (BI.isNumber(o.columnSize[j])) { - w = o.columnSize[j] <= 1 ? (o.columnSize[j] * 100).toFixed(1) + "%" : o.columnSize[j] / BI.pixRatio + BI.pixUnit; + w = this._optimiseGap(o.columnSize[j]); } wi.element.css({right: r, width: w}); first(wi, i, j); diff --git a/src/core/wrapper/layout/middle/middle.center.js b/src/core/wrapper/layout/middle/middle.center.js index a21472d72..9d80a094f 100644 --- a/src/core/wrapper/layout/middle/middle.center.js +++ b/src/core/wrapper/layout/middle/middle.center.js @@ -35,10 +35,10 @@ BI.CenterLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); w.element.css({ position: "absolute", - left: (o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - right: (o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, - top: (o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - bottom: (o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, + left: self._optimiseGap(o.hgap + o.lgap), + right: self._optimiseGap(o.hgap + o.rgap), + top: self._optimiseGap(o.vgap + o.tgap), + bottom: self._optimiseGap(o.vgap + o.bgap), width: "auto", height: "auto" }); diff --git a/src/core/wrapper/layout/middle/middle.float.center.js b/src/core/wrapper/layout/middle/middle.float.center.js index b5edb61fc..d1e2a4695 100644 --- a/src/core/wrapper/layout/middle/middle.float.center.js +++ b/src/core/wrapper/layout/middle/middle.float.center.js @@ -36,10 +36,10 @@ BI.FloatCenterLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); w.element.css({ position: "absolute", - left: (o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - right: (o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, - top: (o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - bottom: (o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, + left: self._optimiseGap(o.hgap + o.lgap), + right: self._optimiseGap(o.hgap + o.rgap), + top: self._optimiseGap(o.vgap + o.tgap), + bottom: self._optimiseGap(o.vgap + o.bgap), width: "auto", height: "auto" }); diff --git a/src/core/wrapper/layout/middle/middle.horizontal.js b/src/core/wrapper/layout/middle/middle.horizontal.js index f54f32996..c42fde9c0 100644 --- a/src/core/wrapper/layout/middle/middle.horizontal.js +++ b/src/core/wrapper/layout/middle/middle.horizontal.js @@ -34,10 +34,10 @@ BI.HorizontalCenterLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); w.element.css({ position: "absolute", - left: (o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - right: (o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, - top: (o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - bottom: (o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, + left: self._optimiseGap(o.hgap + o.lgap), + right: self._optimiseGap(o.hgap + o.rgap), + top: self._optimiseGap(o.vgap + o.tgap), + bottom: self._optimiseGap(o.vgap + o.bgap), width: "auto" }); list[i].el.addItem(w); diff --git a/src/core/wrapper/layout/middle/middle.vertical.js b/src/core/wrapper/layout/middle/middle.vertical.js index bedb60a22..b835bc4f6 100644 --- a/src/core/wrapper/layout/middle/middle.vertical.js +++ b/src/core/wrapper/layout/middle/middle.vertical.js @@ -35,10 +35,10 @@ BI.VerticalCenterLayout = BI.inherit(BI.Layout, { var w = BI._lazyCreateWidget(item); w.element.css({ position: "absolute", - left: (o.hgap + o.lgap) / BI.pixRatio + BI.pixUnit, - right: (o.hgap + o.rgap) / BI.pixRatio + BI.pixUnit, - top: (o.vgap + o.tgap) / BI.pixRatio + BI.pixUnit, - bottom: (o.vgap + o.bgap) / BI.pixRatio + BI.pixUnit, + left: self._optimiseGap(o.hgap + o.lgap), + right: self._optimiseGap(o.hgap + o.rgap), + top: self._optimiseGap(o.vgap + o.tgap), + bottom: self._optimiseGap(o.vgap + o.bgap), height: "auto" }); list[i].el.addItem(w); diff --git a/src/core/wrapper/layout/responsive/responsive.flex.horizontal.js b/src/core/wrapper/layout/responsive/responsive.flex.horizontal.js new file mode 100644 index 000000000..70d7ddddb --- /dev/null +++ b/src/core/wrapper/layout/responsive/responsive.flex.horizontal.js @@ -0,0 +1,57 @@ +/** + * 横向响应式布局 + * Created by GUY on 2016/12/2. + * + * @class BI.ResponsiveFlexHorizontalLayout + * @extends BI.FlexHorizontalLayout + */ +BI.ResponsiveFlexHorizontalLayout = BI.inherit(BI.FlexHorizontalLayout, { + // props: function () { + // return BI.extend(BI.ResponsiveFlexHorizontalLayout.superclass.props.apply(this, arguments), { + // // extraCls: "bi-responsive-f-h" + // }); + // }, + + mounted: function () { + var self = this, o = this.options; + if (o.horizontalAlign !== BI.HorizontalAlign.Center){ + return; + } + var defaultResize = function () { + if (o.scrollable !== true && o.scrollx !== true) { + var clientWidth = document.body.clientWidth; + if(self.element.width() > 2/3 * clientWidth){ + if (clientWidth <= 768) { + BI.each(self._children, function (i, child) { + self._clearGap(child); + self._handleReverseGap(child, o.items[i], i | 0); + }); + self.element.css("flex-direction", "column"); + } + } + } + } + var resize = function () { + defaultResize(); + if (o.scrollable !== true && o.scrollx !== true) { + var clientWidth = document.body.clientWidth; + if(self.element.width() > 2/3 * clientWidth){ + if (clientWidth > 768) { + BI.each(self._children, function (i, child) { + self._clearGap(child); + }) + self.resize(); + self.element.css("flex-direction", "row"); + } + } + } + } + this.unResize = BI.Resizers.add(this.getName(), resize); + defaultResize(); + }, + + destroyed: function () { + this.unResize(); + } +}); +BI.shortcut("bi.responsive_flex_horizontal", BI.ResponsiveFlexHorizontalLayout); diff --git a/src/core/wrapper/layout/responsive/responsive.flex.wrapper.horizontal.js b/src/core/wrapper/layout/responsive/responsive.flex.wrapper.horizontal.js new file mode 100644 index 000000000..5e8fcfd95 --- /dev/null +++ b/src/core/wrapper/layout/responsive/responsive.flex.wrapper.horizontal.js @@ -0,0 +1,59 @@ +/** + * 横向响应式布局 + * Created by GUY on 2016/12/2. + * + * @class BI.ResponsiveFlexWrapperHorizontalLayout + * @extends BI.FlexWrapperHorizontalLayout + */ +BI.ResponsiveFlexWrapperHorizontalLayout = BI.inherit(BI.FlexWrapperHorizontalLayout, { + // props: function () { + // return BI.extend(BI.ResponsiveFlexWrapperHorizontalLayout.superclass.props.apply(this, arguments), { + // extraCls: "bi-responsive-f-h" + // }); + // }, + + mounted: function () { + var self = this, o = this.options; + if (o.horizontalAlign !== BI.HorizontalAlign.Center){ + return; + } + var defaultResize = function () { + if (o.scrollable !== true && o.scrollx !== true) { + var clientWidth = document.body.clientWidth; + if(self.element.width() > 2/3 * clientWidth){ + if (clientWidth <= 768) { + BI.each(self._children, function (i, child) { + self._clearGap(child); + self._handleReverseGap(child, o.items[i], i | 0); + }); + self.element.css("flex-direction", "column"); + self.$wrapper.element.css("flex-direction", "column"); + } + } + } + } + var resize = function () { + defaultResize(); + if (o.scrollable !== true && o.scrollx !== true) { + var clientWidth = document.body.clientWidth; + if(self.element.width() > 2/3 * clientWidth){ + if (clientWidth > 768) { + BI.each(self._children, function (i, child) { + self._clearGap(child); + }) + self.resize(); + self.element.css("flex-direction", "row"); + self.$wrapper.element.css("flex-direction", "row"); + } + } + } + } + this.unResize = BI.Resizers.add(this.getName(), resize); + defaultResize(); + }, + + destroyed: function () { + this.unResize(); + } +}); +BI.shortcut("bi.responsive_flex_scrollable_horizontal", BI.ResponsiveFlexWrapperHorizontalLayout); diff --git a/src/core/wrapper/layout/responsive/responsive.inline..js b/src/core/wrapper/layout/responsive/responsive.inline..js new file mode 100644 index 000000000..08f27fcfc --- /dev/null +++ b/src/core/wrapper/layout/responsive/responsive.inline..js @@ -0,0 +1,50 @@ +/** + * 横向响应式布局 + * Created by GUY on 2016/12/2. + * + * @class BI.ResponsiveInlineLayout + * @extends BI.InlineLayout + */ +BI.ResponsiveInlineLayout = BI.inherit(BI.InlineLayout, { + mounted: function () { + var self = this, o = this.options; + if (o.horizontalAlign !== BI.HorizontalAlign.Center){ + return; + } + var defaultResize = function () { + if (o.scrollable !== true && o.scrollx !== true) { + var clientWidth = document.body.clientWidth; + if(self.element.width() > 2/3 * clientWidth){ + if (clientWidth <= 768) { + BI.each(self._children, function (i, child) { + self._clearGap(child); + self._handleReverseGap(child, o.items[i], i | 0); + child.elemenet.css("display", ""); + }); + } + } + } + } + var resize = function () { + defaultResize(); + if (o.scrollable !== true && o.scrollx !== true) { + var clientWidth = document.body.clientWidth; + if(self.element.width() > 2/3 * clientWidth){ + if (clientWidth > 768) { + BI.each(self._children, function (i, child) { + self._clearGap(child); + }) + self.resize(); + } + } + } + } + this.unResize = BI.Resizers.add(this.getName(), resize); + defaultResize(); + }, + + destroyed: function () { + this.unResize(); + } +}); +BI.shortcut("bi.responsive_inline", BI.ResponsiveInlineLayout); diff --git a/src/core/wrapper/layout/sticky/sticky.horizontal.js b/src/core/wrapper/layout/sticky/sticky.horizontal.js new file mode 100644 index 000000000..f178afd6b --- /dev/null +++ b/src/core/wrapper/layout/sticky/sticky.horizontal.js @@ -0,0 +1,38 @@ +/** + * 横向黏性布局 + */ +BI.HorizontalStickyLayout = BI.inherit(BI.FlexHorizontalLayout, { + props: function () { + return BI.extend(BI.HorizontalStickyLayout.superclass.props.apply(this, arguments), { + extraCls: "bi-h-sticky", + horizontalAlign: BI.HorizontalAlign.Stretch, + verticalAlign: BI.VerticalAlign.Stretch + }); + }, + + _addElement: function (i, item) { + var o = this.options; + var w = BI.HorizontalStickyLayout.superclass._addElement.apply(this, arguments); + var columnSize = o.columnSize.length > 0 ? o.columnSize[i] : item.width >= 1 ? null : item.width; + if (o.columnSize.length > 0) { + if (item.width >= 1 && o.columnSize[i] >= 1 && o.columnSize[i] !== item.width) { + columnSize = null; + } + } + if (columnSize !== "fill") { + var firstItemFill = o.columnSize[0] === "fill" || o.items[0].width === "fill"; + w.element.css({ + position: "sticky", + zIndex: 1, + left: firstItemFill ? "" : 0, + right: firstItemFill ? 0 : "" + }); + } else { + w.element.css({ + overflow: "" + }); + } + return w; + } +}); +BI.shortcut("bi.horizontal_sticky", BI.HorizontalStickyLayout); diff --git a/src/core/wrapper/layout/sticky/sticky.vertical.js b/src/core/wrapper/layout/sticky/sticky.vertical.js new file mode 100644 index 000000000..d99b8828e --- /dev/null +++ b/src/core/wrapper/layout/sticky/sticky.vertical.js @@ -0,0 +1,38 @@ +/** + * 纵向黏性布局 + */ +BI.VerticalStickyLayout = BI.inherit(BI.FlexVerticalLayout, { + props: function () { + return BI.extend(BI.VerticalStickyLayout.superclass.props.apply(this, arguments), { + extraCls: "bi-v-sticky", + horizontalAlign: BI.HorizontalAlign.Stretch, + verticalAlign: BI.VerticalAlign.Stretch + }); + }, + + _addElement: function (i, item) { + var o = this.options; + var w = BI.VerticalStickyLayout.superclass._addElement.apply(this, arguments); + var rowSize = o.rowSize.length > 0 ? o.rowSize[i] : item.height >= 1 ? null : item.height; + if (o.rowSize.length > 0) { + if (item.height >= 1 && o.rowSize[i] >= 1 && o.rowSize[i] !== item.height) { + rowSize = null; + } + } + if (rowSize !== "fill") { + var firstItemFill = o.rowSize[0] === "fill" || o.items[0].height === "fill"; + w.element.css({ + position: "sticky", + zIndex: 1, + top: firstItemFill ? "" : 0, + bottom: firstItemFill ? 0 : "" + }); + } else { + w.element.css({ + overflow: "" + }); + } + return w; + } +}); +BI.shortcut("bi.vertical_sticky", BI.VerticalStickyLayout); diff --git a/src/data/pool/pool.buffer.js b/src/data/pool/pool.buffer.js deleted file mode 100644 index 9e85ba6f6..000000000 --- a/src/data/pool/pool.buffer.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * 缓冲池 - * @type {{Buffer: {}}} - */ - -(function () { - var Buffer = {}; - var MODE = false;// 设置缓存模式为关闭 - - BI.BufferPool = { - put: function (name, cache) { - if (BI.isNotNull(Buffer[name])) { - throw new Error("key值:[" + name + "] 已存在!", Buffer); - } - Buffer[name] = cache; - }, - - get: function (name) { - return Buffer[name]; - } - }; -})(); diff --git a/src/data/pool/pool.sharing.js b/src/data/pool/pool.sharing.js deleted file mode 100644 index f13d487ed..000000000 --- a/src/data/pool/pool.sharing.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * 共享池 - * @type {{Shared: {}}} - */ - -(function () { - var _Shared = {}; - BI.SharingPool = { - _Shared: _Shared, - put: function (name, shared) { - _Shared[name] = shared; - }, - - cat: function () { - var args = Array.prototype.slice.call(arguments, 0), - copy = _Shared; - for (var i = 0; i < args.length; i++) { - copy = copy && copy[args[i]]; - } - return copy; - }, - - get: function () { - return BI.deepClone(this.cat.apply(this, arguments)); - }, - - remove: function (key) { - delete _Shared[key]; - } - }; -})(); \ No newline at end of file diff --git a/src/data/req/req.js b/src/data/req/req.js deleted file mode 100644 index 0d809eeb3..000000000 --- a/src/data/req/req.js +++ /dev/null @@ -1,3 +0,0 @@ -BI.Req = { - -}; diff --git a/src/less/base/calendar/calendar.year.less b/src/less/base/calendar/calendar.year.less deleted file mode 100644 index 47650c671..000000000 --- a/src/less/base/calendar/calendar.year.less +++ /dev/null @@ -1,6 +0,0 @@ -@import "../../index"; - -.bi-year-calendar { - padding-top: 5px; - padding-bottom: 5px; -} \ No newline at end of file diff --git a/src/less/base/colorchooser/colorchooser.popup.less b/src/less/base/colorchooser/colorchooser.popup.less index 68f22f049..c1dd8ecda 100644 --- a/src/less/base/colorchooser/colorchooser.popup.less +++ b/src/less/base/colorchooser/colorchooser.popup.less @@ -3,6 +3,6 @@ .bi-color-chooser-popup { & .disable-mask { .opacity(0.5); - background-color: @color-bi-background-default; + background-color: @color-bi-background-disabled-chooser-popup-mask; } } \ No newline at end of file diff --git a/src/less/base/colorchooser/colorchooser.trigger.less b/src/less/base/colorchooser/colorchooser.trigger.less index 75a812cc4..95739ca30 100644 --- a/src/less/base/colorchooser/colorchooser.trigger.less +++ b/src/less/base/colorchooser/colorchooser.trigger.less @@ -2,4 +2,10 @@ .bi-color-chooser-trigger { .border-radius(2px); -} \ No newline at end of file +} + +.bi-combo-popup { + &>.bi-color-chooser-trigger { + border-color: @color-bi-border-hover-combo; + } +} diff --git a/src/less/base/colorchooser/colorpicker/button.colorpicker.less b/src/less/base/colorchooser/colorpicker/button.colorpicker.less index b82c6cc7b..3e85065bc 100644 --- a/src/less/base/colorchooser/colorpicker/button.colorpicker.less +++ b/src/less/base/colorchooser/colorpicker/button.colorpicker.less @@ -2,7 +2,7 @@ .bi-color-picker-button { & .color-picker-button-mask { - border: 1px solid @color-bi-border-black; + border: 1px solid @color-bi-border-picker-button-mask; } } @@ -10,7 +10,7 @@ .bi-theme-dark { .bi-color-picker-button { & .color-picker-button-mask { - border: 1px solid @color-bi-border-default; + border: 1px solid @color-bi-border-picker-button-mask-theme-dark; } } } \ No newline at end of file diff --git a/src/less/base/colorchooser/colorpicker/button.colorshow.less b/src/less/base/colorchooser/colorpicker/button.colorshow.less index d0f3411e5..85aac4635 100644 --- a/src/less/base/colorchooser/colorpicker/button.colorshow.less +++ b/src/less/base/colorchooser/colorpicker/button.colorshow.less @@ -2,6 +2,6 @@ .bi-color-chooser-show-button { &.active, &:active { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-active-chooser-show-button; } } \ No newline at end of file diff --git a/src/less/base/colorchooser/colorpicker/editor.colorpicker.less b/src/less/base/colorchooser/colorpicker/editor.colorpicker.less index 1aded34ca..12239c7de 100644 --- a/src/less/base/colorchooser/colorpicker/editor.colorpicker.less +++ b/src/less/base/colorchooser/colorpicker/editor.colorpicker.less @@ -1,8 +1,7 @@ @import "../../../index"; -@import "../../../resource/background"; .bi-color-picker-editor { & .color-picker-editor-display { .border-radius(2px); } -} \ No newline at end of file +} diff --git a/src/less/base/colorchooser/farbtastic/farbtastic.less b/src/less/base/colorchooser/farbtastic/farbtastic.less index c5513f1cb..38e719ea6 100644 --- a/src/less/base/colorchooser/farbtastic/farbtastic.less +++ b/src/less/base/colorchooser/farbtastic/farbtastic.less @@ -1,9 +1,24 @@ @import "../../../index"; +@import "../../../image"; + .bi-farbtastic { & * { cursor: crosshair; } + & .marker { margin: -8px 0 0 -8px; } + + .overlay { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAABlCAYAAABUfC3PAAAAB3RJTUUH1gcOCDMLN+YTsQAAB5hJREFUeNrtXdtS5DoMbKkG/v+Lj/cJCgbb6pbkZDjFVFHLxjepWzc7mQD8fV7uY3/6/ClxUg77vxBqLzTXHePtxfpfDkR33yv7XEbIXQKdaLt63vF0vRVHOwjwrv1K0jrHXLFGu5K7PnZw/QyIY9Juh2SR5rUGYKvCsXNW1u7qc8m1x4FEnwHgJGgnyT2i110C2mHln8MTo+fL6HMn+K8CQtRmTxVXZACzsZJMqgVllbVkfwRzKOCOjUyDnNeKxkeNV0i5QqCr16iMt8CAVkZhC6+zXaJXNkV20e8meE0XAawcLPnOyvA4sE+worcxfTtCY8YT7AC5ppCCjgUKSnauWQHZDhhfmRQjhGXAVIFXCcq0zWQcmz4qUZbpk9k8mhC6WoRMzJuZ3xa/o3HNFCmVo/yTwL3C3Cfl/PavNVl8l6KWCD2/+d9p21dPWe1Y0bXYi4zNGMpJmbekMEcNDFFXgxj1NaLYsESkOEbWipTnY4cRKFglS0m6Rs7xdcMWXYvasvqk5ngEhKi7WiYEsJZbUXAmjwfXTnhD6pqyeRwFgLqtSSUm8kqFSCOKEqsYWXT2xZbLqidABHpVJXqShKzx7PqrxkmREuUJVhglpLEbOYWsCCCfkDrLJx6QXwHeMuHLgqPpAe0GmSq8JUOBJyy5IiMKvy/nYcOXEWdZVmjLtLNk7ios35A6854MWer/w0SffQhBATirSAYYhgQjiah6/nKOzOYxKont4mu2yAV3yQTRsIwlJQt+VBicIIQpCjy4ZqIX0vkho5cavlZAg7TijGKZtsp4Fyz8hEF9klJ9Jjg6H1NJtAZSPADIC+SpZElErY5ZmMoJDcn4CkAypLByZjwjlP8RVE2DKAKYHIIDhPhTxZRNrFVSukIvneh3lqAcXURKQCAOTR7kB8EvkXziwQlmU4hGq0Qxd1R/vq5jDWtJD04McrPInGupIa0KGLNOBtQjhD8IcFQvQhJwNMzR8eNJ8p8JWhHmk3EpTzHSE6rAYqPAKqH7BBRfKHyalIohfOrw2JTDzD5DCWNV0rCI4UqIYaz3FHH0fA/BIwB+lw4hjrN7oGjX3WnJfogQZ/B4TLxk9Rh/dCOJ9azo9iube3wXAhYgzOJ+1SM6vcyjkpgpgS1RVVUSOBO6VuRWwMuQlyb8QZSrI7npO1U9uVCOejI0McQ6kbTVOeXN4whOjpWbXOz9+53wECq0CkGzkOei9btC9CNRGTH33tXi4ORxiCfDkieveSEnUaQwXwg1wlOUe+1OHvHsknZHjGf+j4VXeYXYSCEnYy6rgCfBU6xxpwsa54vkczKETXPKY8NsViArAOUNYcQDME7o2REmP/cpb4sJvlo2kmA5WdmolY4TyTmqeCr5pMtApwXKjpTTCRAiMI78fsKJE2EWUE+W0yzZFCkoWsauxMyUlpkStusYxQtyA8Ixy5sIrrKYB9WSQz+f6iYSjZEAwpq+I+WdqBTQbBWO2jlRdfzqrKxr71KS6cNTKqea3cfdK4NwoX/3Ka8367fLZ9PwhSZQO4+7M0fvSBDWCXZW3hF5CqNodFSSBQHE+iiQdtdtZTB3Ht8ueOLjlNIZUnARKVb1lOx9afv7absP9PluGIaUqApTLRPEMXsnEHcQwDwXsH3u622SCLEhpbRgcXwHCVUjU7+Ooeaw8ZxTIFYRaHiwQX3CEIm+uMDLup7SnCb6TgXQDACjZDdRmeeinZQXK1LekyGg42sJp772gBuNCcHt6Mj4Pz0Fm8NICMKh4OJVUpD0mm6PRHHt8XGTqwokkmOZUIKCQWTGYnFQquKALJarkhgE2CiEEzSFIlSUPxAmO0jZHrNAUCirMIiKqnvtjF5ekAObR3RnL0/4kei7Xpcxq0YYUiDKUCUuY+mefEKU9aLl0T2IMIYmN0bB/SEAXvH+jjZ2vWn4QtKaVCWxKRM71gRRWKjzKg8n+uYZuF3bD09BwZI7x1aB73zTEIr6qbJNS+LsQgD/Tq2Ol6Qp45AIfx2GFnnM0lPeEwIpArAvaasAgaIOyhgmBJaurcKXnVxUaLtCHpYIu0jGoeQUFACsEpBp6zQSRW4g90rdo6TgwFzd8172ivREn5AUFBbqBkYNQezYjAwn9R+zRJ+ZGA0gd1lq57wVg8wawNRTugHtAoPNIR3EP3/PcwgGUcUCz/sUkEp3kYIDxtBNvhoxqrJ9C18ZpRlLi8buXH7VfyQUH2KYVoGPchD9NwS+ekrGarqsr9uKM+2jGBa7xnx6SpdiHe27hJn5ixW76536KDLsjGBKCkRXXQHHgMiu29Hvt/z+I3xdBUTX+JUB7Lxr92eumLf9gQyBI6n/t7OvaCDjitgkWKWNIQWFsWzbHWuMZ1Ii5aMKZtdXGYsCAVWgVePceeLIzD8jpcN6hiD4B2HPIScLWAdpp8Ywfab7FHaynWVnBe5U9oQeFZnZa2OW6NUYPogck1EKLzIHG1LbZF55SkWo3zzmFeTbekpl4ivaT43dATyuwOXr5rEifFTasvPvwt5oIPnufkzfEZES5Q9mwUGWoSDWYOWoAnfnOCp8XSnQyfmsYey4QN+x2qe84sduMIY7PsMA/Ie/z0t9/gHKOXPlZc81WwAAAABJRU5ErkJggg==") no-repeat 50%; + } + + .marker { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAK3RFWHRDcmVhdGlvbiBUaW1lAHZyIDE0IGp1bCAyMDA2IDEzOjMxOjIzICswMTAwHvJDZwAAAAd0SU1FB9YHDgsgJYiZ4bUAAAAJcEhZcwAALiIAAC4iAari3ZIAAAAEZ0FNQQAAsY8L/GEFAAAB5ElEQVR42q2Tz0sqURTH72Qq4mASSAoSIfSDdCEI8qJFLXSjLYSQNoGLINrI8/0ZD9q0KnDlKkIMebmP9xZRCEEiLQLBiMiNJDYq/Zg573vpCkM6CdGBD3Pn3OvXe77nDGPfENKwJBHx/CxYAtNAAVfgXJKk7khVCCyCP6ALVKAJXkEdbINxw5tgM4HHPphSFEUql8usXq8zWZZZKBRiPp+PH3sBx2Br4FbiBg+aplGxWKRgMPiMH1+YTKZDq9V64na7G+l0mprNJo7RG/g94IEoQSsUCuRyue6QToIJYAJWMA/Bo2QySZ1Ohws9gZBeZI570Gq1yO/395BKGJg+ZbFYznK5HAmf9vQiKW5iqVQim832Fyn5E+83Y7EYieAdY2Nig7dRqtVqrNfr3YiWGsVltVrtr2f0IrwEZrfbGeqWhQ9GMeFwOPprRS9SAWo4HGZOp/MH1l4DAS6+HolE+u9Xek9kcK+qKqVSKUL/s0hPDhFY83g8j5VKhcQg7nxs80/w0mg0KB6Pa2az+RTpDbDA3sd/lwvk8/l+Z7iS/FHEAor8H9rtNmWzWYpGo+T1eikQCFAmkyFxAy7AJ255aMHYcIID8d1oNBi8hGuwwkYFDq0CPlG3YsTb4B/4BRwjBb4S/wGzT16tu5THiAAAAABJRU5ErkJggg==") no-repeat 50%; + } + + .wheel { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAADDCAYAAAA/f6WqAAAAB3RJTUUH1gcOCDIojJpTggAALYlJREFUeNrtnXmYHUW58H9V1WdmMtlDQtijSSDKorLovRAWAwqyiBJugoCK6CfqRdSLityLkIsiF9SIyqIsRhZBlu+TK0JEQBBFUEAEZQ9LgkCABBPIJJnMdFd9f5wzM2d6qrqr+/SZmUy6nqef06e6z9Ld76/epd6qgrKUpSxlKUtZylKWspSlLGVxF1HeguKLAQmTp0JlOuitQU+BaHJ105NBj4JoDEQKolYwoxAmQtKBxKBYi6ITxWokK1GsQPI6ilcQLEWxjBfpFGDKu13CMBwEXsA2bTB+BzA7Qbgz6B0hmgl6GugxEAG6tkX0va/fr70XBhQgqb72bLb3kgjFy0ieQ/EUiscQPErAo/yNlaL6pWUpYWia8Cv4l21BzwYzG6K9IHo7mBarcPcTfG0BwROGNED67xsUy5E8gOSPBNyD5mH+VGqREoaGhX+/KSD3h+j9EL231uILt+AnaYACYcgCiKADxZ+R3IHgNlp4jFvpKuEoYUgBYL8A2mYB80AfDGZXiCp+gu8CwXY8AYaigHABInkJyW+R3Mga7uBu1pZglDDUAJinIJoOZh5ER0L0LjDSLsjaQ9BThN5VlwZDEUD0hwIkK1DcguQ61vN7cTPrShg2Sef3Q+Nh1GGgPwF6X9CV/K2/zghCThgaAUWmOuXLEPwcxZW8wBJxN2EJw4g3g6btCOLTEM0DPdXd6usMTnAW08hxrB4Gl3AH/YR3YF3Pq+08l3YIYucJulH8HskiWrlJXERHCcOIguC4NmjbB6KTQB8EumWgIOuMwp0Vjoww2IAIKN6UkgM0RP37JUguJeBKfshrI923ECMbghPaITgMzMmg31ONBLkEX3uaP41C4DgnDkMQa8HjMKiCwZBOvwIUKxFcTsAFLOQfI7UfQ4xMCL48GsLDgK+A3qNP2NNMH90kCNLMJgcMPj6ELxg2gQ88YOj/ugrJIgQX0MYL4syRBYUYWRCc1AptBwFngN7dHQnKA4GPo5xUlwJLEgxZBD5wCH1WcylZW6xCcAkB3xdn8koJw7CCYIGEaCcwZ4I+HLRyh0V9Wn2dQ6C1p4lUAAxJgGQxpdIiTK7XvnOXYvgGa7heLGTtxi5HcuMH4VtTQJ4N8o8gjwChqozXb5KBdSQcc21g/245NO2K628Iy99JuwwRuwyfWyh4CwGL2IxbzDnsba5HlTAMkUlk+NZc0PeA+BrIsenSkf50/QBwSdww1Pu+ly499utva/9z9kNwGy/wPfNttihhGDQIEIZzt4dtLgd5PcgdskGQZ8Mi/Hm+owmCPRSbDRbJKARfoMI95gfMNwtoK2Form/QBucdD8EfQH4EpHILv3S85tEOvsJdMBhZv6Z5gu7WEvE2SDEDyTVswU/NhWxbwtAUEH6wDUy+FOSlIKfadLW/VpANCn+jrX9B5lWjFl6WWyQTXgfWKeAjVLjL/ITDzAKCEoZCIJinDD/+AAR3gvgoSJluFskM2sH2HUU1szmBSPu478/JDIKfdgvTbqe0tkkzENzAWznHXMTEEoaGQLi4HQ78Ksj/C2p71x3P1pTZzofGfQhvqTZAN9AJrK1tbwJravvrgK5azNX9dUWYSdIRQUozh4SHU913bhuSLzOGX5irmDXc4w3DFISfbgFiIURHV9MojKW/QJPcsZanL8GzX8C5hRFE6yFcD3otRMsgeh7ClyH8J4SrIHoD9Bro6qyez3qgQkArCoVkDAHjUYwnYBIBUwiYRsAMFJuhaEPRTkCFAJHYv5Clv6K+r0KSrWNOpuz3ZMbC51DcJuZbYC9hsIFwza6gL4NoN7fw+/QupwHQQCdZddMQroNoNURPQPgg6Ceg+3nQS+GZ5YJiH7qZzngqbIdkOhVmongHinejmErAWAIquTvusiT3JeUyJQPSAfw3a7hQHE9nCYM7WiRh54MgvAz0VunCn0cz5Emr6N0MhJ0QrYDoftB3QfgIrH9M8MjqIbtv+xHQxUwUO6PYE8X+KKahGEeAStQasgEgkjTDQK1QX6cRXIThdHEEq0sYBoDwYAWWfRKib4MZlw5AxEDTqdG0bBcA0TqIXoDoFtC/gbV/EdyzatiamPsRUOHtVJhNhblI3oViEgHKy4RKy4LtEe7AA4Iks0lwM4bPig/yUglDLwg3tYM+tbZV0k2jpHyjJCiSxigPgKATwuerAES3QHS/4OaNblikAcFcZqI4AMlcAnZHMYGgFgBNM5V8/Qfbe5noP/TUP4Tgo+JAntjkYTDcNQY6zgZ9YnXscSMQZMlGtYKgQa+E6G4Ir4aOOwU3rWGEFAOSY9iJVo5EMg/FTBQtmf0IHxCUFwg9GmIJAUeJ9/LXTRYGw+3jofs8MJ/oP/CmZzMeplIaCF7aIaqZQdfChqsEVz3BCC/mWMYxhkNRnIDi3QS0o2qRKVfqt8wAhy8Q9ZEmwTHsx31DNaJODB0It04C9SPQ8/3MoiwOs7dmiEA/B9Fl0HWV4JLlbGLFzKOFrZiD4osE7ItktNOx9knz9neibdtyJB9nL347FECIoQHh9vGgLqmCYAoEwXuEmga9DKJFsP4ywUWvsIkXcwIVJvF+JCfXIlLtmUFQHjCkA/EaAUeKPbhnxMNg+NM46Dof9Mft5lBen8ErgmQgehX05dB5keB7/6As/Z/PSbQynkNp4atIdkfV9Vv4hliTzKN0cwkEL6GYL3bj3hELg+E3o2H098CcMBAA4wGAacA8CteCvhHEtwVn/L0U+5Rn9TXGM4GPIjkZyVt7e7obgcEHhD4gliGZK97JQyMOhmo/QvhNMKf0OcvGA4asKRgDHGZd7RXWC6Dzl4Izw1LUMzy3bzMDxQICjkTRnjjnUp6+BjsIPftP08LBYhbPjRgYqj3LH/wcmO+DDuwANAKDE4Q3wFwF684RfP2lUrRzPr+LqbCBuSjOQPE2VK2PwqdHOq926APiHhRzxQ6s2OhhqE7l+JcPgrgazJhk08jk1AoDHGYN0eNVLfT6bwRnlusVFPEsz2crWvgGAcegGOXVz5A9olSVStUPiJ8zhk+LLZs76cAgwPD4bhAthmiqn5/gA0RSx1vYCdENoE8TnFg6yM3QEq18FMkCJNv19k34RpOy+A19GsIgOJdlnC7mNG8OWNFcEJ6dCht+DXpXf7PIBwhnROk10N+AsZcK5neVotvEZ3s576CFHxKwNxLlBUNWEPqbSxsQfIptuUaI5vRBiOaB8GA7jF0E+qg+4faFISsQkQH9GIRfEHzirlJUBwmIq5lMC2ehOA5FW2KOUh4QBg4tXYnkELEVDzTjemRzQDASJn4J5Dz7lamMdyHxPA3yTlAfLkEY3CKOZSUv80UkZyB5I5ew26fHt4OkmIzgJ+bV5kxH06Rhny8cAPK06nhlm1clPO6KV1MSgrwO5NGCo58txXMIgPgiG/grCxGchOTV1MemUh6zcoLQE87dBcV3jaFl2JtJhqVbgrwLzCy3aZSlw81pGnXXcopOEczvKMVyGJhNt3EIkh+j2DZRoPOYSf3NpYiAzzCORUXmMMliQTAVqJwLalZygFmQX59KQG4AdR50fbkEYRhpiQNZjORjSJ5FYgqNLPUXJYXgf1jDTsPYTHrtGFBHu+cOSRsB4nVX1oH4FnScLpi/vhTBYQbE/tyN4WgUj6NiQLh6q33Npv7t6RQCLjCG0cPOTDL8cxroe6tjl02CWZQUUTIpppHeANHZIM4WzCnTKoazyXQ/uyK4DslMJKKBHuiBnXD9X79Che8VEW4VxYBgAlh9OZhj7RAYTxCiBP8h6gJzLrx8Vk8fgjGm7FkeIgXgPCBE7zHzAO8h4OcopjtGuKXHVUTKvmAVitlCND5stCAY3vww6BuAYKDwpznNPs6zCUFfDOu+IpjTO72IMaZrOFz/EP32UH7eCwYA8zD7U+FqJFvk6ltwOdK1VyPACBZLmCsEG4ZUGAxvbAbqPjDb24U/i3awwRLpaup15/GCvfuNRzbGrB3EaxcFnCMG+f8U9d+8/3scBgDzGEehuATFuLpVRf1iKo75XI3oe9WgNRzfKrhyyGAwGAFd3wR9mlsT2LSEC4q4mRSZ6voL+kjBbgOyFo0xqxoQNNEEYRVDCEqzrj9TnRUGEDzDSQjO7ddT7asZ7NogLllLu+A940T+7NYGYejcEeR91XmOkkwjHy1h1Q7PAIcKdnza+vvGrMhwTWIQIRGD9Ps+5zb7+0TMTJL2Z0XAUhYScGJvLpMtUzVhlu8ebaCFs4n9zhj4Wl5nWuQHwQTA9aCPSIYgyTxKNJlWgT5G8LZbnf/BmJcyPsyGH3ZOYRMb0ffn+S6RBgOAWck4urgBwfv7RZg8zCPTZxINkKq6/Y4QZk8S/G1QYejGHCzhJoEJql+SVytY07i7QP8nzDgvqYfRGLM06cEU8XBzfGeW80WD/6VZv5P7s0kwAJgXmEkri1Fs7wVB7dvi2iDBAP/VJDhCiOxz3IqcWqHSBXdK2Lsn3bz6ZYb8TrSp9xOuh67jBDskRgeMMUsyCE8RIOQVHFHQ8WYJtiiqLg0GAPMah1LhWiRjXH5CzEFOBaFOokIFcyaJ7LNr5IKhE3OogZskyP5T9Zve1+waofczS2D9+wQzXki9qcY8nvGBNyqAIid8RQleoYLr8epzLDsMBsEazkVwci21YgAIBn8QLFAsngqHZ9UOIo9WWAt3ippWsK9lUa8pMmmItaCPFWzxS6//YswjOYRBDJJgFfm5Is91fdanEUl69YYBwKxiAi3cgmLPHv/B5SBnAaFWFxrYf2vBH7LIdua1tt6EA4G96gEwdSBU90Vd0pOqQVF/po69CqqhYnE5XPirTK5L9pasaIHJKrB5fyuPgMbPNY738f363zEpdfWf92+FJ7LarOVkJL9GMdFYTKKsENTVBxr+0xj+KAS6KZrBYNQquF3AHJ8lhWXMfErWCtHTEOwnGOM9u50x5r6M2iDPa14zwxe0PN8lMv5n399Nq3Mdr3egMy2MbgxnaTjVgGoEBEtdGMLsGYL7m6IZVsBeAvZ1aYX6OtnvmKgBIeu0RD+tsAHU1wXtWad57M7Q0mcRwqyCluXz3oLlccz3901KnU+jaSz31hQQmfyuhkM07OobezR+YATAfxjDMb79Dt4wLMBIAyebatcIWACoh8JlOonavug7y4BcDC035orwNi6kaQLrC1bS7+eBQWT8ftt7E9tPOm6DxniYTA0VIVjdaTjDwPUaRukcELhMJgMffgpmAU8WaiYtx+xk4CEBLVmWDXavvdnrZP8T5P4C8UhmZ96YW5uh6nEvKisyAiRShDftu/N+n0i5bt/PCs//Vu9Aq+zPEdUB1xo4Uldbx8TwqQcEvceBC94mOKlQzRDCcS4Q4k2MTNAUfa8CAVohFuUBIaYZsgp9ViH0FTAfOLK+9xXGrIIsPZzjNIe5kKxfIYjWGM6MYH8NkzxCp17mUm37yNOG03YQvFkIDC9h2rvhWN81to0HJLXXVzfADxq4j905W/9mtqJ5W9ws/62+Tub8j9oRZRIpPoMrgtQQGGMFj64wXGPgRBPTDnm0Qt02eT0cAVyR9h+8YsKdVQdnqyyrISettRlVNY0O4ZLRiBcbhCFtCxPeh3Vbt2PftnUn1MUuc0Bd5FnnM0OCsfVaWupMhjrXhuUVhzOdq2j4voaVPstP+ixNWXdxn1xg0mU9lWaDEc/AzQIOyboAfXK4lZcE7DYW8Vrem2eM+VmDtrpPnSiotZc5fzvtPJnhs83aeq8tj8/QzwoxLNTwHz3awaYRyKYZalY+79xN8HhDZtKTsKWAA7LecekwnUxfJ+MVExsAoVa6ChTWLALo+9n649rzvKy32uQUXhP7vUb6pgrzH9bDjyvwSQMTsoRUiYFC/+OBgY8AZzRkJkUwV0OrzzKBOkF9xepWGbikgHvXnWNLM3fClM/4mlKhxUxy1UU5N98pyxOTwVLMpbgJFD9WqKk0U7Akgv8XgklamNhncYLYNv96g8qtGQxGPArzohzOsnBrBiPguimIZQXAEGYMS+Zp/X1b86Tv0I46mxbQHorWdcttXUDxvlBivyFjTrUcaMoPiDzFHehCx5ILuEDDRzSMzuEwD6C49vkdtoJdgQdzwfAIvEXAnjQgMZantl7CTwu6b90Z4+CNCr/M4A+k1aWZTtKjnZEOgdcOv0J71NmAMI4IeVNMpbfAI0/CHzUcaHJA4NgEcFRuGCI4TEDFN/aX9LTqDNS/bE1h63R1eQiqLxTS47hO+WzSucIhpGk2vchwjsvfMAxMLtYJmiEOhImBEBd+U6R2EALzqOEKA3M0VBqBIGbXfcgYTnGlZyTAYISBg4yj6ZUWMGwSEXtaoYFFAqEL1AxZW+8iIi8yQ4svE0wXFxw6BRjpMImwdO2kQU0KEMLiI8TrmjHlzk0hvGxgWh4AtCUWbGDGHbA98HQmGB6EURHs49IEJqWu3siseyKvATcWeMO6M9jwPnUyIxB4tPARfhkrLnPIODSCsfgCBnvOpIx1ssXNJCyaAIcTLYrWBLays6DjL4ZrIjiVujBr1s6Q2DGp4f2ZYeiCvYBxcS3gep8ERt3+r3dAvFHgPQubHGOXnsddLbm27MuYA+0j+PH38dBo/HbLmBYwlscU1xRxhU6d7yoHwzyymOk3aviSgVG+ppAjtFoPyYHAhZlgiOB9OLSASdEIWJ4w0CXgfwu+X12DJPhJpk7asA6RAIF2QCUTQLAlBUsGZs9Lh2kUb8fiZpELgDgEJmYuFQ7GUnhoK3gW2NnDH3Bpg/j+fosNrYdYZt8LXP5CBPvkyTwz7qZ6JVD0yjrdBdr5WTSCfbRr8nHtcaxeqHVCJ5kruiMtoU8bFDJmHtnqfGWsaZphviD6g+EXGnbq6ZHGw0ewmUx1x8dreBfwZy8YfgPtGnbzScK33X2Hl7p4d8TaYQCDSGjls9S5nF9bK+8KXwrHvq7TDjZzxWYyxf2GtDoXEMbS2rvqbB1yhZYQfmXgq9TGOvjAQLp22NsbBgF7aGhzAeBrMtVHkTTc0YTGo5viHN1GWn7XexcIwmLX21p9bdEA2qEdbEJvYvuqTm6wdNTVD04nBqgLCNFkLfFwBK8Ab9X+plCaQz0bWBj/IVc6xt6+XeEJ3d/1+QbrgN81CQafbFVbmoUt/SIpJSNL+kVaykZStmpIcpqGLRlYk57x6lp02zXs2KfjtynaoL7MEYQh3OFzM9Lq627WXrYs1sChmt5ta/mT6lL8i0dnI14dIs2Q1fzx0R6S9AF9OsEk0rFzjeO4TQu4Wn1jCY/aepJtDaC0aAzfKGbTp/XX8DsDx9fGNXs50ZCYXLX5DJgGPJ8CgxEadrGZRXFV4vIbLHD8sUn3qSgYpKf5IzPAIRMAS1q+Ly26Y1KO9dQpiwAnJWbGv98XjKZrhxDuN9XIYeDjJJMCRrWTm11SYVgMY7urOUkDhD5tigTHFBKhhD81EYYsznCaRiAmnHgKc2Spiwusy4GWFqfZJuz1Ah73H+LPXaaYwRY3sZ+fEAfL1gs9KCAAHA7P/gKWAzOSWn0PjVD/fhfgpkQYumFHXXcT07SCSIFBQOf6hOSogmDI6+SKlNbbt+X3eXUtyJTU0tvMJOlwklXsNa01t2mGJCjSvqdpUAiBud5wXxyGJMHXjj9WV79zqs/QBbu4Jh8yDhhSzKkXDod/DLKZJGksWlSE8MsEPyIu7PHlOXQCLEmmT1aNYNMOtkiWtsDBYJpLEdwr4JiehjpN8E1CzLd2MekwGNhe4zcHYhIMddri73X9JUMBQ5L5k0X4XX6AzZySHr6By0ewQSBJnxVFZdQEceWuU4AwGeSt8GLgqbAaYWvJoQUG/LkQZi4wyDPrpp8MLM7KdNdIDiyhA+k4Vvu8MSSPOx0EMylJ+NPMpEY1RBoItgVeXVDUH7OdB96ZzE67P2lGwqwTBBStGZ6Oqs/bG4YUWtu2hq2AF50waJhuPIWfBGh07zX4zWaWs3Q5hNRX+Mkh8FkiQ2mtv80kskWNkjrS6h+FItuQTNss0EkAJGmKppaPwUs/gVVQXQTdVz3phJsgYXoiDBFMT1oYIGl+QYs5FZpY+KoJmsFX+H3Mn0Yd4qSl+RTJS3271rGJawRXNoJ0+JQueUlacUg6zCWRYno1rwhMZFgCbJOh9U/09HUVht9bYfgpZoKGcSIh3ECC1rDMQBUKeKGJtygkexKdzOEwZzWFbFBoS51J0BhJGkHG4LBFler3SXhUrnTzeJdRnghV0Z1vzxmYYzyFPUkl1gh/i9OB7obNlaNHsSeYnhGGtR9vTs9zWj9DHi2RxfxpxDeIw5CkGWy+gcrQ+vtGkbAIvw8Ag6ohwioM/Xq9jR0aLxvRwBQnDBo2czUhUcpdtMFgmhdSTfIZfNIlmgmDzFCXpBHix5VFOxiHlqjvc3A5uq7Hlzbm2qSEe5vZ8r0o+oIJia2+cUel6vc3S4Jhiklu6Z130mZKGXi9yTB0F+An5DGRfPyEtDqfTVn6FOJ1PmaRSdEMPhDYhH9Qi4FV2gMGl3awhNDcmiGEKfEBtFlAIBaSYOhgyGMa5QmRpqxl3/BmUuqUBYI0c8k42jkXCPFxGTLFRGvmw14t6uTcpAh82p/SSTAIGOPzJcLjeA2mfzbfjMzkM8iMmsKnTnn6DMpyXFmO+8IQd55VgqaoN5mIWb1xS9g2e0fS4J9BC7GGsEp6wpCmHWplTJJmaBd+Qu7llQ0CDF0ZQqZJHWl5o0eupDtf/yAeMq2HQqXAYNMIqgEHuh4KYemDiHcADnrnWxesrtRk3PeHUhr3dicMUW0xEtedynqlBlYPIzMpr/BnjRjZWvk0bRDV7RuH8yxjEOAAIwkSm0kU1WkL11iMLDO0NLO8GTb4OzEbstUJgwEV75ExBf3wRghDI0BozwhRvIdZxLSFzVwyjqhSHJKefeVW3APg0HVQRHV19Vt8xr1B8xnWgWmluNFEJnZv4tGksUX2kWhYOwxgaDSvKClalOQfiDqhttW5IDEOAJKiS1giTGmCqiymURIIrmGgg1baYW036AK/MtFnKKwIiv3X1t8Q1WkqjTHC0cq6Jgo3jtbYNnAm3hoL0meOiMcZXIm9NoESObp00pa50ikhU+FpGhEDgsEGImrid8d9ho4Cv1tSS6rayMugjPMti5eZNNrkG6vhKmuSzKRQDAXuZSmLR+kEERT0XcISfY3D0FWUM1w7f0L5CMtSYBnXXR3Mn1lVO2zPDUkwrDN+Qp56Tm2bVD6/shQYLZkga2aSaACCumPrUn2GRoCIeYQlDGUprIQwUYIUHoIO9lXfY7La4YQhhBW+wWPjAYOwZMGWpSwNRDImRHUwJAFhG3IQ1xgGVjhhMLAi/gU6Iwyx8aglDGUprGiYSCyaJNyC7mM2rUjyGV7Pkh/uMcRu2/IRlqWo0gXbKA8YpKf/EB9iIGM+w2tR3fq78Vlssy5MHMLoT2Gmlo+xLAVphukhiLwLZlvqVjhh+AFitYY3fRahTlsgvbYFErYrH2NZCnKgp4f5hH7Ae1PdX5qoUSJ4rj4RxWf6b9vc6rX9IIS3lo+xLAV4z6Jngrs0INJAqJua/jmnz0DfCbu6/ACT7DDH/QcFvK18kmVptHwAtg5hou/M8Lb38c465QNDmmOcYWo/AexYPsqyNFoE7BBCRVqE3DXLQdLMkEDnLHg5EYYIluTQAE5IDOwCRjRxvtWybBJWErM0BMYTBkHyFKkCnqmfZ9XlM/zdZmuZDL5DbNvusDLEWpbGI0l7hSDzLGOlLT5DCI/Gf8M28fDjom4kU5oWSBsIq6EtgD1o7sx6ZRnhznMEe9q0QNos8HFtIfrkcgAMAzTD1bBGw1JfLZAUau2JKEXwr+UTLUvesi/MDGHLyDOSpD00h4G/p2oGEEZj/m5is3H7agTHvIezy0dalrwlgncLaPFYO3CABnDUmdACg3T8+AO2tVKT1lpN6X/Yef+yJ7os+WF4r65aGF5ZETZZjdW9djss84KhG+7J28XtOK9dwHvLx1qWHP5CEMH7fHqeM6QN3YsYmINqhWEtPKih00VXGomWLdDwvvLJliVr2RXeFcEWEf5awOXL1smndSlmKwy3w7oIHtIeP5ghxHrIOzCjy8dbliwlhA9G0JY3Mc8GRwj3eMNQdaL5g2/Sk6c3P3k0zCkfb1kymEhKw9zIkqmqM8hkTDu88Qo8nAEGCOGOPFohwZxq0fDh8gmXxbfsALtpmOHrC6TJaO393c+I/hMBpMKwEu4Na+ncOoXKDI7LwbtjxpePuSw+RcMRcRMpTdZ0SuPcDbe5fs8Jw19gvYY/pNlfaZGlWBRg8xCOKB9zWdLKFMOYCI6JEgbzJDXEDi2hu+D2zDCAMBH8JgsAOj36FETwKTCyfNxlSSqtcHgEW2VxmD3k89m/1RJRM8IAGm7W0K09QlgZPP3dZsFu5eMuS4LjLDQcF0El7xBPW8Mcwi8R7klfEmH4AywN4b5GQqqWPzVKw/HlEy+L00SCd4YwO0tOXJK5VNuMgeuSfjfFXBFGww05+hSSHBsRwVFvwUwrH3tZbCWEz2to90nP9oGkduzpR+GvDcAAG+AXEWxw+QRpuUsOWidqOKF87GWJl7GG7Q0cmda3kLUhDuF6RPKM9qkw/BWWR/Bbn8hRBnNKRnDcVMzm5eMvS393gc9GMD7J1HbJXEJiXmjg2rTf9ojqCKPhp0k/6mO3Weq2BP69fPxl6Y0gGWaE8DENIq1T1wWItoNy7zPwZAEwwKuwOISXfbSDT1Jf7ZjUcMIkzDalGJSl5it8ScPkLAN1fML7ISyyZanmgmE5Yp2Gq3WCNvDJUbJc2FQNXyzFoCwYdtaxTra0ccyefWAr18KNPn9B+v9XroigK01FaT8I6n2HT7Zj3llKwyYNggKxwMDEPONmUhroa/8peLNQGJ6AJzQsTnJefHunLZGlBWCCUio21aIOBnUoKEHNntGe1oUmscOtsxsu9P0XGdIihI5gYQRRXtPIEXUSGg5RZc7SpqoVJkDlG6BG1a8KbGpQRBmgsIDxv6/DU02AAZ6D+wz83icnJCkcZoGj1cBZYLYopWNTK2O/AuodVQjiW34oNITdcF5S+kVDMICIumGhri547kWo9gREw0wEXy+T+DYlrTD2X0D9OyhVD8DANePFgImw00x0Dbe/CQ9m+TuZBe8luE3DvQlEeneU9E4PLgCFRPEJWvhgKSWbAgjjJ0Dr90BN6A9B0tYfioSGOOyC//EJpzYEA4juLjgnimmHtE4Q2zFDrCFQjEbxHdpMuabDyPYTBIz6L1D/Ul2izaUVlONV9E536rBEbuuEe7P+rVwmyco67ZBmFrmAQFiuu7rNpMK3wbSWUjNSy9aHgPpcn3kkGQiESgGiCoVF3sKoqhWiQYEBRHcEZ2sIPXNDel+NsFxb/2sXKI5gIp+vnV2WEaUVtpkJwXmgxgzUADIHEH1Q1GRscQj35flruZ3VVXB7BL/yBaFXG7iut399CwGnMYWDSukZSSDMHAejLoRg5sBWUGY0ldQALWGgw8DpebRCQzCACDV8vX4NOBcIA7SBdJpI9dtEAs5nK7NDKUUjwk8IIPgmyAP6/ATpEGwfEGzniB9hmUN1EGCADngihPNdDnSvg5x0HQp3IxEwg4DL2MJMKaVpY3eYdzkR1Akglbt1lwnvU02lpWC+k6VfoVAYQJgNcF4ES5wmkXQArxLuRX//YTaj+RGzzNhSqjbWsut8kN8A1ebWCK79JEHq/R4NagGi/1K2gwwDgHhdwyk9znSiNvABYOB9kUg+BJzDNNNWCtbGphXesz+o70MwLtlOTmo1U0Ott0LndQ1LckFXHACXIzi2F2TXqxwQCPAAH5B0ITmXiLN4XHSVUrYxgPCv7wHxc9DTk3NLezbj2K9/b2L7ehVEsxEdTzT6dwtKfRAhcBqSl1Odf5ViMrn8CEULklNo49Qyw3VjAGHfXaHyM1Bvdbf8MqN2sGkJvgUdTxYixYXegIo5DsllCIIBrb5oSCvUb+tQnMMazi01xHAF4YB3g74czNtBC/dQMJOiHVzaovf1blhxKIK1ww8GTIVWfoLiY06hrzebVAoc7kDDBiQ/IOK/+ZNYX0rfcALhA/uB/gmY6RAJP/PIx1SKgxCtAPZHvPpoUX+9+B7edrMlkruQzLICIHNuAzVlN4pL0XyNu0VHKYXDAYRDDwF+DHpbv6kj8voMOoLoM7B8USOh1Cb5DHVlnViO5CQk65w97Ao/MzKpj0JSQXICLVzCB8p+iKGFAImZ+zGoLAK1rZ8vkGYPi6Rj18Lyq4oEoTmaoXp3JJM4Fck3kUjvaJJKMKHc7zWKu9B8hlvFs6VkDrpZ1ArjvwD6NIjGJw/Vr2/lXT6DTvIRAP13iA5ELHul6EtpYiKcaWdzfoLkI4l+gfBsQJL7JgySxwj4Ar8Qd5USOlggHD0Z1FkQHgemLXlmrSjFUfYymVZCeAji+QeacTnNzQrd3ExF8WsUu2aKIPmAYDefXkPyDeBSbigjTc0F4VPvgOiHoPeGSPkBkAWIATBsAP0peOqaos2jwYEBYEuzGwGLUUzNBYMrf8vdMdmJ4gYqnMbl4h+l1BYNwQkV4KNgFkC0XTV0GnkKvy8QA+oMROfCE6cjCJt1ac0fb7ycvwInIOjI5E8lgZD8mTYkx2JYzPHm4HJMdZEgnLgVVH4E6kKQ06rZp42qea8OqGuhclYzQRgczdDjUM/gc0i+j6x1yCkPLZElodFuOr1BwFUYzuFi8VIpzY1ogzFzITod9NtBS/c8FT7h1DTtUP8+ugfMXMTDK5p9mYM4ksxUmMU3UZyCROTqgfaBYWDqh0bxBJIFPMIvuVuEpXRneWxfmQFqAegjIWpPXrfJd1pqb4f5adAHIx58bjAudXCHVU41o5nMQhSfyeQ7pCU7puVBVffXIrkRwXf4rvhbKeVpEHxtPLR+FPTJEL21rzc5bUFknxU80mDQgFkGG+Yi/vLQYF3y4I8xnmnGMZrzkXy8KTAkgaEwKF5FcgVwId8qHeyBEPygFToOheiroHcHXUmd8N1r33iYT72pFi9CdBTivnsH89KHZsD97mY8cAmS+Q050T6v9jEjmoBlKBbRymWcIl4pIbi4Ah3vh+hkiPasmkQ+k/7oHBoicXsNuo9E/PGewb4FQzf7xI5mEmP4ESoBCIV/eobKAEPfFqF4DsllGH7G18TLmx4EC1pg8hzQXwS9L0Sjk9dj8lkZPC8I0XKIPga/u7NZfQnDE4YeDdHK91Ac3+tUZ8tPyqYVJBBYz4kI+AeKa5FcyYniiZEPwcXjQR4K0Qmg96g5xyLdJEozl9I63FwdbdEyMMcgbrt3qG7J0M9LtJ8Zg+FsJCfWhnjm8x3ShtbWw+AaVBSgkbyO4ncEXI3mTv6PWDOCtICE7XcCcySE80HPgKjFb7W+PP5CUii1X27SEgiPQtz616G8PcNjkq7dTTvjORXJqSgqDadlpDvS/evsgHQS8DyKW2jhFlq5n8PFuo0PAAT8aiZ0HwDhXAh3Bz0BIpm+IJSPv5AlH8m6PQTRsYibnxzqWzV8Zqzb3VSYxCeRfJuAcdbsVd/UjCwgpG8GxToULxBwCxVuw/Agh4lVwxeAuwII3w7de4M+AqJ3gZ4EofJbB8d3xbQsZpJthFt0M2z4LOKWYdEhOsymbzSSgzkIyWUotvLWCD490kEKIGlb0AtGJ4oVVHgAyV0EPIzgcfYZQjjMXQGMnQnrdwG9J0RzQE+DaFwVgKzLimfRCLk62zToi8B8HXHDG8NF+obnXKaHm10RXIZit960DZXDf0gPsbocahsItjpd0xpvEPAEAQ8geBLJc7SzlO1ZjhBRsYL/7HhgO+icDnp7CN8B+t0Qbg7hWIgq/QU1xHsxYnyXFvTRDM76DogWwMsXIe7uHE5iN3wn9j3EbMEoFqI4ul+kKW9vdJpjbRN86YAhSAQmQtFJhXW1Xu9lKJ6nhZeR/JOAVSjeoMIaJJ0ERFRYD90VoLWaDt01ttqqMx7CSRBOgXAaRDMg2gx0G4TtNcEX/YU6JB8MWcOoefoVomXQ/Tnovg1xQzTcRG54z3J9mGlnNCchOR3F6NwzEPoAoRJ8i8BTawQJwFToW5kpIKyFc6PauRFSi5pTK6A7AK2qYEQJQu1zLKtfkBY9ytvrHP2u6h9c/dRwFbfhnd58s1iH5rso/g3BEufEAj4Tl9XXxetdm8859ZuruRH93guggqANwWgEo4FxwFhgNNAOoqWGTsIX2Y75bDLjcdeNTdvvPb8TxELonDucQRj+MADcICJ+Jm5Fsz+CnyHQqc8r6bnLjLLhC4DrOwtX2PEfLwqSLDcnDYLeumdBzoOnTkVcs2q4i9rGM/DlavEihk8j+TSCV1PHhAjPBi1N0PPIkI+si0aAiJ+T96JkxgtMaoX6HYuqM1hEcxAX3oy4e6NIm9+4RoFdITq5lJ8C+yC4FkHopamFBxBpWiSTICfIrMj6wSwfEgVtPjfK2co8A+IYWH084kcbVVbwRjgkUhguFktQfALDUcDTTm2Q10zOoiFkgq8hizCZ6h+Va8ur2ijoJklArgfxQzD7IBZej7iic2OTrI13fPD5YgMXiF8QsTdwLoI1drO1yT7C8G44CtYYTrV7N5gD4ZmTEd/daNPhN/7B8ueLFYzmv4DZtZFsUaYGrSi/YVgIfpKN53uhMov2WArmk9BxKOJb9wzHvoOR08+QtZxkWpnAgQScgWSP1MxWnzEPPkl+efKeBnwuS85QWkeZz3FXz7JXZ9oqiC6B6DzEaa+OFPEZmUvLftmMZhKHIvkqkj1S0zTyJPVlzW+SRcGgyZdg10iaRVQHgV4E0fnQ8Q/EmXokic3IXmd5gWlnFIdR4WQk70HV0jp8YZAFgWFLEvSGIQ0Cn9Zfe9QlQrASwsthwwUjEYJNA4Y+KNqYyD4oTkJyUG0VIP90jaxp4ElawAmUT1pEoxAknWeFYQmYS2HdlfDF1xDCjGQx2TRg6IMiYHN2pMKngXkETE1cilfGWnJJtoFCSblNMg0G3YAfkPZdtvN684i6Qd9dNYc6foX4/Caz9sWmBUNvMYLzGM84DiPgEyj27R1h55vlakv/lp5aIBWGNBB8tUgmv2AZRD8HcSU8uQRx5iY32domCkNdud4oupmOZB6KI1G8C4nM5UNk9SlkVhiS6vOkYEcrILoFzHVQ+T3i8HWbsiiUMNSXu0zASmZR4d+QHFwbXFTJPAVNnjqpG2z5faZ7jAD9IoR3grkR1t4B89aOdF+ghKFhS8pIbmIKo9gfwfuRzEExDYXIPGCoKTB4j0/ugOjPYG6H7ttg1WMwv3so5iUqYRhJ5tQUtqXCbCSzUeyF5O0oWgoBIhEG7esgG9DLQd8P0b1g7oHoYdizs2z9SxiaqTkES2llFbNQ7ETAzkh2RDKzpkHGZAJEag8N0HssAv0yRM+Bfgq6HwPzKISPwo0rR2o/QAnDxmpiLWMqMJ1WtgamoJiMYjKSyQSMQjIGhULQhqINpaPqYHltIFoLUSdEq6sdXtEK0K9D9AqYpRAtQ2xXrn9dlrKUpSxlKUtZylKWwSj/HyHl/ePsagXCAAAAAElFTkSuQmCC") no-repeat 50%; + } } diff --git a/src/less/base/combo/combo.bubble.less b/src/less/base/combo/combo.bubble.less index 337077402..a6f21add1 100644 --- a/src/less/base/combo/combo.bubble.less +++ b/src/less/base/combo/combo.bubble.less @@ -1,45 +1,12 @@ @import "../../index"; -.bi-bubble-combo { - & .button-combo-triangle-wrapper { - position: fixed !important; - // 消除祖先节点设置的line-height:normal对空白节点的行高影响 - line-height: 0; - .z-index-layer(@zIndex-popup); - // ie10一下无背景色会鼠标穿透 - .background-color(@color-bi-background-default, 0); - } - & .bubble-combo-triangle-left { - z-index: 1; - .triangle-right(); - } - & .bubble-combo-triangle-right { - z-index: 1; - .triangle-left(); - } - & .bubble-combo-triangle-top { - z-index: 1; - .triangle-bottom(); - } - & .bubble-combo-triangle-bottom { - z-index: 1; - .triangle-top(); - } - & .bubble-combo-triangle-left, & .bubble-combo-triangle-right, & .bubble-combo-triangle-top, & .bubble-combo-triangle-bottom { - &:before { - background-color: @color-bi-background-default; - } - } -} - -.bi-theme-dark { - .bi-bubble-combo { - & .bubble-combo-triangle-left, & .bubble-combo-triangle-right, & .bubble-combo-triangle-top, & .bubble-combo-triangle-bottom { - &:before { - background-color: @color-bi-background-default-theme-dark; - border-bottom: 1px solid @border-color-light-line-theme-dark; - border-right: 1px solid @border-color-light-line-theme-dark; - } - } - } -} +// .bi-bubble-combo { +// & .button-combo-triangle-wrapper { +// position: fixed !important; +// // 消除祖先节点设置的line-height:normal对空白节点的行高影响 +// line-height: 0; +// .z-index-layer(@zIndex-popup); +// // ie10一下无背景色会鼠标穿透 +// .background-color(@color-bi-background-default, 0); +// } +// } diff --git a/src/less/base/combo/combo.less b/src/less/base/combo/combo.less index a4203f7ec..e6b8bcded 100644 --- a/src/less/base/combo/combo.less +++ b/src/less/base/combo/combo.less @@ -22,14 +22,14 @@ } } &.bi-combo-popup, &.bi-combo-hover, &:hover { - &.bi-border { - border-color: @color-bi-border-highlight; + &.bi-border, &.bi-border-bottom { + border-color: @color-bi-border-hover-combo; } } &.disabled { &.bi-combo-hover, &:hover { - &.bi-border { - border-color: @color-bi-border-line; + &.bi-border, &.bi-border-bottom { + border-color: @color-bi-border-hover-disabled-combo; } } } @@ -39,8 +39,8 @@ .bi-combo { &.disabled { &.bi-combo-hover, &:hover { - &.bi-border { - border-color: @color-bi-border-line-theme-dark; + &.bi-border, &.bi-border-bottom { + border-color: @color-bi-border-hover-disabled-combo-theme-dark; } } } diff --git a/src/less/base/combo/combo.searchtextvalue.less b/src/less/base/combo/combo.searchtextvalue.less index 086ae4125..de0ec79b3 100644 --- a/src/less/base/combo/combo.searchtextvalue.less +++ b/src/less/base/combo/combo.searchtextvalue.less @@ -10,9 +10,12 @@ &.combo-error { & .bi-search-text-value-trigger{ & .bi-text-button { - color: @color-bi-text-failure; + color: @color-bi-text-error-hover-search-text-value-combo; } } + &>.bi-border, &>.bi-border-bottom { + border-color: @border-color-negative; + } } // 此combo的trigger_button是absolute上去的,与bi-combo在同一层级,独立写一下 & .bi-combo.bi-combo-popup + .bi-trigger-icon-button { diff --git a/src/less/base/combo/combo.textvalue.icon.less b/src/less/base/combo/combo.textvalue.icon.less index fd4cead41..79fef76ed 100644 --- a/src/less/base/combo/combo.textvalue.icon.less +++ b/src/less/base/combo/combo.textvalue.icon.less @@ -4,8 +4,11 @@ &.combo-error { & .bi-text-trigger { & .select-text-label{ - color: @color-bi-text-failure; + color: @color-bi-text-error-hover-text-value-icon-combo; } } + &.bi-border, &.bi-border-bottom { + border-color: @border-color-negative; + } } } \ No newline at end of file diff --git a/src/less/base/combo/combo.textvalue.less b/src/less/base/combo/combo.textvalue.less index 5a906910f..dbf76aaa0 100644 --- a/src/less/base/combo/combo.textvalue.less +++ b/src/less/base/combo/combo.textvalue.less @@ -4,8 +4,11 @@ &.combo-error { & .bi-select-text-trigger { & .select-text-label { - color: @color-bi-text-failure; + color: @color-bi-text-error-hover-text-value-combo; } } + &.bi-border, &.bi-border-bottom { + border-color: @border-color-negative; + } } } \ No newline at end of file diff --git a/src/less/base/combo/combo.textvaluecheck.less b/src/less/base/combo/combo.textvaluecheck.less index 8ce4dec9c..9965f103f 100644 --- a/src/less/base/combo/combo.textvaluecheck.less +++ b/src/less/base/combo/combo.textvaluecheck.less @@ -2,8 +2,8 @@ .bi-text-value-check-combo { &.bi-combo-popup, &:hover { - & > .bi-border { - border-color: @color-bi-border-highlight; + & > .bi-border, & > .bi-border-bottom { + border-color: @color-bi-border-hover-text-value-check-combo; } } } \ No newline at end of file diff --git a/src/less/base/combo/combo.textvaluedownlist.less b/src/less/base/combo/combo.textvaluedownlist.less index 17e9b54ea..823410272 100644 --- a/src/less/base/combo/combo.textvaluedownlist.less +++ b/src/less/base/combo/combo.textvaluedownlist.less @@ -2,8 +2,8 @@ .bi-text-value-down-list-combo { &.bi-combo-popup, &:hover { - & > .bi-border { - border-color: @color-bi-border-highlight; + & > .bi-border, & > .bi-border-bottom { + border-color: @color-bi-border-hover-text-value-down-list-combo; } } } \ No newline at end of file diff --git a/src/less/base/editor/editor.search.small.less b/src/less/base/editor/editor.search.small.less index d25b4546a..234609f99 100644 --- a/src/less/base/editor/editor.search.small.less +++ b/src/less/base/editor/editor.search.small.less @@ -1,19 +1,23 @@ @import "../../index"; -/*************BI.SearchEditor******************/ + .bi-small-search-editor { & .bi-editor { font-size: @font-size-12; - & .bi-input{ + + & .bi-input { font-size: @font-size-12; } - & .bi-label{ + + & .bi-label { font-size: @font-size-12; } } -& .close-font{ - font-size: @font-size-16; -} - & .search-font{ + + & .close-font { + font-size: @font-size-16; + } + + & .search-font { font-size: @font-size-16; } -} \ No newline at end of file +} diff --git a/src/less/base/foundation/bi.message.less b/src/less/base/foundation/bi.message.less index e3c482013..1e48abe01 100644 --- a/src/less/base/foundation/bi.message.less +++ b/src/less/base/foundation/bi.message.less @@ -1,21 +1,21 @@ @import "../../index"; .bi-message-title { - font-size: 14px; + font-size: @font-size-14; cursor: pointer; } .bi-message-text { - font-size: 16px; + font-size: @font-size-16; .user-select-enable(); } .bi-message-content { - font-size: 16px; + font-size: @font-size-16; } .bi-message-close { - font-size: 16px; + font-size: @font-size-16; } .bi-message-animate { @@ -30,4 +30,4 @@ .bi-message-leave { opacity: 0; transform: translateY(-100%); -} \ No newline at end of file +} diff --git a/src/less/base/loader/sort.list.less b/src/less/base/loader/sort.list.less index 18733ce5e..14dc71457 100644 --- a/src/less/base/loader/sort.list.less +++ b/src/less/base/loader/sort.list.less @@ -1,5 +1,5 @@ @import "../../index"; .bi-sortable-holder { - border: 1px dashed @color-bi-border-line; + border: 1px dashed @color-bi-border-sortable-holder; } diff --git a/src/less/base/pager/pager.all.count.less b/src/less/base/pager/pager.all.count.less index f9f7227db..717c2f5ec 100644 --- a/src/less/base/pager/pager.all.count.less +++ b/src/less/base/pager/pager.all.count.less @@ -8,6 +8,6 @@ font-size: @font-size-16; } & .row-count { - color: @color-bi-text-highlight; + color: @color-bi-text-all-count-pager-row-count; } } \ No newline at end of file diff --git a/src/less/base/pane.less b/src/less/base/pane.less index 27cbda2d0..a83e80756 100644 --- a/src/less/base/pane.less +++ b/src/less/base/pane.less @@ -7,7 +7,7 @@ min-height: 55px; } & .loading-container { - .background-color(@color-bi-background-normal, 0); + .background-color(@color-bi-background-pane-loading, 0); } } @@ -15,7 +15,7 @@ font-size: 0; // 直接控制div标签将会导致使用div的table布局样式问题 & .animate-rect { - .background-color(@background-color-highlight, 90%); + .background-color(@color-bi-background-pane-animate-rect, 90%); .border-radius(1.5px); .animation(loading-widget 0.8s infinite linear); } diff --git a/src/less/base/segment/button.segment.less b/src/less/base/segment/button.segment.less index fa24f8331..acb0a7b43 100644 --- a/src/less/base/segment/button.segment.less +++ b/src/less/base/segment/button.segment.less @@ -1,15 +1,16 @@ @import "../../index"; .bi-segment-button { - color: @color-bi-text-highlight; - &.active { - &:active { - color: @color-bi-text; - background-color: @color-bi-background-highlight; - } + @transition: color 0.3s, background 0.3s, border-color 0.3s, box-shadow 0.3s; + .transition(@transition); + color: @color-bi-text-segment-button; +} + +.bi-line-segment-button { + .line-segment-button-line { + .transition(background 0.3s); } - &:active { - color: @color-bi-text-highlight; - .background-color(@color-bi-background-highlight, 10%); + &.active, &:active { + font-weight: bold; } -} \ No newline at end of file +} diff --git a/src/less/base/segment/segment.less b/src/less/base/segment/segment.less index 7796d85af..cfbf6c77e 100644 --- a/src/less/base/segment/segment.less +++ b/src/less/base/segment/segment.less @@ -3,20 +3,19 @@ .bi-segment{ & > .center-element{ .overflow-hidden(); - background: @color-bi-background-default; - border-right: 1px solid @color-bi-border-highlight; - border-top: 1px solid @color-bi-border-highlight; - border-bottom: 1px solid @color-bi-border-highlight; + border-right: 1px solid @color-bi-split-segment; + border-top: 1px solid @color-bi-split-segment; + border-bottom: 1px solid @color-bi-split-segment; } & > .first-element{ - border-left: 1px solid @color-bi-border-highlight; + border-left: 1px solid @color-bi-split-segment; .border-corner-radius(2px,0px,0px,2px) } & > .last-element{ .border-corner-radius(0px,2px,2px,0px) } &.disabled > .center-element, &.disabled > .first-element{ - border-color: @color-bi-border-disabled; + border-color: @color-bi-split-disabled-segment; } } @@ -24,13 +23,12 @@ .bi-segment { & > .center-element{ .overflow-hidden(); - background: @color-bi-background-default-theme-dark; - border-right: 1px solid @color-bi-border-line-theme-dark; - border-top: 1px solid @color-bi-border-line-theme-dark; - border-bottom: 1px solid @color-bi-border-line-theme-dark; + border-right: 1px solid @color-bi-split-segment-theme-dark; + border-top: 1px solid @color-bi-split-segment-theme-dark; + border-bottom: 1px solid @color-bi-split-segment-theme-dark; } & > .first-element{ - border-left: 1px solid @color-bi-border-line-theme-dark; + border-left: 1px solid @color-bi-split-segment-theme-dark; } } } diff --git a/src/less/base/single/button/button.half.less b/src/less/base/single/button/button.half.less index 2aa630fa1..79669689e 100644 --- a/src/less/base/single/button/button.half.less +++ b/src/less/base/single/button/button.half.less @@ -9,7 +9,7 @@ top: 2px; width: 8px; height: 8px; - background-color: @color-bi-background-highlight; + background-color: @color-bi-background-half-button-content; content: ''; } } diff --git a/src/less/base/single/button/button.less b/src/less/base/single/button/button.less index 4f4b65d33..d8f511c01 100644 --- a/src/less/base/single/button/button.less +++ b/src/less/base/single/button/button.less @@ -7,8 +7,9 @@ body .bi-button, #body .bi-button { .border-radius(0px); } .border-radius(2px); - border: 1px solid @color-bi-border-highlight; - background-color: @color-bi-background-highlight; + outline: 0; + border: 1px solid @color-bi-border-button; + background-color: @color-bi-background-button; .box-sizing(border-box); text-align: center; vertical-align: middle; @@ -22,11 +23,11 @@ body .bi-button, #body .bi-button { font-size: inherit; border-width: 0; background-color: transparent; - &:hover { - .opacity(0.9); + &:hover, &:focus { + .opacity(0.8); } &:active { - .opacity(0.8); + .opacity(1); } &:after { display: none; @@ -38,84 +39,137 @@ body .bi-button, #body .bi-button { } &.button-common { &, & .b-font:before { - color: @color-bi-text; + color: @color-bi-text-common-button; } &.clear, &.clear .b-font:before { - color: @color-bi-text-highlight; + color: @color-bi-text-common-clear-button; } - &.ghost{ - &, & .b-font:before{ - color: @color-bi-text-highlight; + &.ghost { + &, & .b-font:before { + color: @color-bi-text-common-ghost-button; } - &:hover{ + &:hover, &:focus { color: @color-bi-text; - background-color: @color-bi-background-highlight; + background-color: @color-bi-background-hover-common-ghost-button; } - &:active{ - background-color: @color-bi-background-highlight; + &:active { + background-color: @color-bi-background-active-common-ghost-button; } } } &.button-ignore { & { + background-color: @color-bi-background-ignore-button; + &:not(.clear, .ghost) { + border-color: @color-bi-border-ignore-button; + } + } + &:not(.clear, .ghost) { &, & .b-font:before { - color: @color-bi-text-highlight; + color: @color-bi-text-ignore-button; } - background-color: transparent; - border-color: @color-bi-border-highlight; } &.clear { background-color: transparent; border-width: 0; } + &.ghost { + &:hover, &:focus { + border-color: @color-bi-border-ignore-button; + &, & .b-font:before { + color: @color-bi-text-ignore-button; + } + } + background-color: transparent; + border-color: @color-bi-border-dark-gray-line; + } } &.button-success { & { &, & .b-font:before { - color: @color-bi-text; + color: @color-bi-text-success-button; } - background-color: @color-bi-background-success; - border-color: @color-bi-border-success; + background-color: @color-bi-background-success-button; + border-color: @color-bi-border-success-button; } &.clear { &, & .b-font:before { - color: @color-bi-text-success; + color: @color-bi-text-success-clear-button; } background-color: transparent; border-width: 0; } + &.ghost { + &, & .b-font:before { + color: @color-bi-text-success-ghost-button; + } + background-color: transparent; + &:hover, &:focus { + color: @color-bi-text; + background-color: @color-bi-background-success-button; + } + &:active { + background-color: @color-bi-background-success-button; + } + } } &.button-warning { & { &, & .b-font:before { - color: @color-bi-text; + color: @color-bi-text-warning-button; } - background-color: @color-bi-background-warning; - border-color: @color-bi-border-warning; + background-color: @color-bi-background-warning-button; + border-color: @color-bi-border-warning-button; } &.clear { &, & .b-font:before { - color: @color-bi-text-redmark; + color: @color-bi-text-warning-clear-button; } background-color: transparent; border-width: 0; } + &.ghost { + &, & .b-font:before { + color: @color-bi-text-warning-ghost-button; + } + background-color: transparent; + &:hover, &:focus { + color: @color-bi-text; + background-color: @color-bi-background-warning-button; + } + &:active { + background-color: @color-bi-background-warning-button; + } + } } &.button-error { & { &, & .b-font:before { - color: @color-bi-text; + color: @color-bi-text-error-button; } - background-color: @color-bi-background-failure; - border-color: @color-bi-border-failure; + background-color: @color-bi-background-error-button; + border-color: @color-bi-border-error-button; } &.clear { &, & .b-font:before { - color: @color-bi-text-failure; + color: @color-bi-text-error-clear-button; } background-color: transparent; border-width: 0; } + &.ghost { + &, & .b-font:before { + color: @color-bi-text-error-ghost-button; + } + background-color: transparent; + &:hover, &:focus { + color: @color-bi-text; + background-color: @color-bi-background-error-button; + } + &:active { + background-color: @color-bi-background-error-button; + } + } } &.button-common.disabled, &.button-success.disabled, @@ -123,12 +177,12 @@ body .bi-button, #body .bi-button { &.button-warning.disabled { &, &.base-disabled { &, & .b-font:before { - color: @color-bi-text-disabled !important; + color: @color-bi-text-disabled-button !important; } - background-color: fade(@color-bi-background-light-disabled, 20%) !important; - @ieColor: argb(fade(@color-bi-background-light-disabled, 20%)); + background-color: fade(@color-bi-background-disabled-button, 20%) !important; + @ieColor: argb(fade(@color-bi-background-disabled-button, 20%)); filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr=@{ieColor},endColorstr=@{ieColor})"; - border-color: @color-bi-border-disabled !important; + border-color: @color-bi-border-disabled-button !important; } &:after { display: none; @@ -136,10 +190,10 @@ body .bi-button, #body .bi-button { } &.button-ignore.disabled { &, & .b-font:before { - color: @color-bi-text-disabled !important; + color: @color-bi-text-disabled-ignore-button !important; } - background: @color-bi-background-default !important; - border-color: @color-bi-border-line !important; + background: @color-bi-background-disabled-ignore-button !important; + border-color: @color-bi-border-disabled-ignore-button !important; &:after { display: none; } @@ -151,23 +205,60 @@ body .bi-button, #body .bi-button { &.button-ignore.disabled { &.clear { &, & .b-font:before { - color: @color-bi-text-disabled !important; + color: @color-bi-text-disabled-ignore-clear-button !important; } background: transparent !important; border-width: 0 !important; - &:hover, &:active { + &:hover, &:focus, &:active { .opacity(1); } } &.ghost { &, & .b-font:before { - color: @color-bi-text-highlight !important; + // color: @color-bi-text-disabled-ignore-ghost-button !important; } background: transparent !important; - border-color: @color-bi-text-highlight !important; + // border-color: @color-bi-border-disabled-ignore-ghost-button !important; .opacity(0.5); } } + &.button-ignore.disabled { + &.ghost { + .opacity(1); + } + } + &.button-common.disabled { + &.ghost { + &, & .b-font:before { + color: @color-bi-text-disabled-common-ghost-button !important; + } + border-color: @color-bi-border-disabled-common-ghost-button !important; + } + } + &.button-success.disabled { + &.ghost { + &, & .b-font:before { + color: @color-bi-text-disabled-success-ghost-button !important; + } + border-color: @color-bi-border-disabled-success-ghost-button !important; + } + } + &.button-warning.disabled { + &.ghost { + &, & .b-font:before { + color: @color-bi-text-disabled-warning-ghost-button !important; + } + border-color: @color-bi-border-disabled-warning-ghost-button !important; + } + } + &.button-error.disabled { + &.ghost { + &, & .b-font:before { + color: @color-bi-text-disabled-error-ghost-button !important; + } + border-color: @color-bi-border-disabled-error-ghost-button !important; + } + } } .bi-basic-button { @@ -195,10 +286,10 @@ body .bi-button, #body .bi-button { .opacity(0.1); .transition(@activeStopVal) } - &:hover{ + &:hover, &:focus { & .bi-button-mask { .opacity(0.1); - background-color: @color-bi-background-default; + background-color: @color-bi-background-hover-button-mask; .transition(@hoverVal); } } @@ -206,7 +297,7 @@ body .bi-button, #body .bi-button { &.button-ignore { &:after { content: ""; - background-color: @color-bi-background-highlight; + background-color: @color-bi-background-ignore-button-mask; .border-radius(10px); display: block; width: 100%; @@ -227,8 +318,10 @@ body .bi-button, #body .bi-button { .opacity(0.1); .transition(@activeStopVal) } - &:hover{ - background-color: @color-bi-blue-10; + &:hover, &:focus { + &:not(.clear, .ghost) { + background-color: @color-bi-background-hover-ignore-button-mask; + } .transition(@hoverVal); } } @@ -238,48 +331,60 @@ body .bi-button, #body .bi-button { } .bi-theme-dark { - body .bi-button, #body .bi-button { - &.button-common { - &.ghost{ - &, & .b-font:before{ - color: @color-bi-text; - border-color: @color-bi-border-default; - } - &:hover{ - color: @color-bi-text-normal; - background-color: @color-bi-background-default; - } - &:active{ - .background-color(@color-bi-background-default, 90%); - } - } - } + .bi-button, #body .bi-button { &.button-ignore { - &:hover{ - background-color: @color-bi-blue-10; + background-color: @color-bi-background-ignore-button-theme-dark; + &:hover, &:focus { + background-color: @color-bi-background-hover-ignore-button-theme-dark; } - &:active{ - background-color: @color-bi-blue-10; + &:active { + background-color: @color-bi-background-active-ignore-button-theme-dark; + } + &.clear { + background-color: transparent; } - } - &.button-common.disabled{ &.ghost { - &, & .b-font:before { - color: @color-bi-text !important; - } - background: transparent !important; - border-color: @color-bi-border-default !important; - .opacity(0.5); + border-color: @color-bi-border-dark-gray-line-theme-dark; } } + + &.button-common.disabled, &.button-success.disabled, &.button-error.disabled, - &.button-warning.disabled, - &.button-ignore.disabled { + &.button-warning.disabled { &, &.base-disabled { - background-color: fade(@color-bi-background-light-disabled-theme-dark, 20%) !important; - @ieColor: argb(fade(@color-bi-background-light-disabled-theme-dark, 20%)); + border-color: @color-bi-border-dark-gray-line-theme-dark !important; + background-color: fade(@color-bi-background-disabled-button-theme-dark, 20%) !important; + @ieColor: argb(fade(@color-bi-background-disabled-button-theme-dark, 20%)); filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr=@{ieColor},endColorstr=@{ieColor})"; + + &.clear { + background-color: transparent !important; + } + &.ghost { + // 深色系下灰化就统一用灰化色 + &, & .b-font:before { + color: @color-bi-text-disabled-theme-dark !important; + } + background: transparent !important; + .opacity(1); + } + } + } + &.button-ignore.disabled { + &, &.base-disabled { + &, & .b-font:before { + color: @color-bi-text-disabled-theme-dark !important; + } + border-color: @color-bi-border-dark-gray-line-theme-dark !important; + background-color: @color-bi-background-ignore-button-theme-dark !important; + &.clear { + background-color: transparent !important; + } + &.ghost { + background: transparent !important; + .opacity(1); + } } } } diff --git a/src/less/base/single/button/item.singleselect.icontext.less b/src/less/base/single/button/item.singleselect.icontext.less index cacdad2e7..94228aaf8 100644 --- a/src/less/base/single/button/item.singleselect.icontext.less +++ b/src/less/base/single/button/item.singleselect.icontext.less @@ -3,7 +3,7 @@ .bi-single-select-icon-text-item{ &:active, &.active { & .b-font:before { - color: @color-bi-text-highlight; + color: @color-bi-text-active-single-select-icon-text-item; } } } \ No newline at end of file diff --git a/src/less/base/single/button/switch.less b/src/less/base/single/button/switch.less index 9093c84d7..22ba538c9 100644 --- a/src/less/base/single/button/switch.less +++ b/src/less/base/single/button/switch.less @@ -1,33 +1,31 @@ @import "../../../index"; -.bi-switch{ +.bi-switch { + font-size: @font-size-12; .border-radius(40px 40px 40px 40px); - background-color: @color-bi-background-dark-gray; - &:active, &.active { - background-color: @color-bi-background-highlight; + background-color: @color-bi-background-switch; + .transition(all .2s); + &.active { + background-color: @color-bi-background-active-switch; } & .circle-button{ - .border-radius(9px 9px 9px 9px); + .border-radius(6px 6px 6px 6px); + .transition(all .2s ease-in-out); + background-color: @color-bi-background-active-switch-content; } &.disabled { - background-color: @color-bi-background-disabled; - &:active { - background-color: @color-bi-background-disabled; - } + opacity: 0.5; + } + & .content-tip { + color: @color-bi-font-switch-tip; } } .bi-theme-dark { - .bi-switch{ - background-color: @color-bi-background-dark-gray-theme-dark; - &:active, &.active { - background-color: @color-bi-background-highlight; - } - &.disabled { - background-color: @color-bi-background-disabled-theme-dark; - &:active { - background-color: @color-bi-background-disabled-theme-dark; - } + .bi-switch { + background-color: @color-bi-background-switch-theme-dark; + &.active { + background-color: @color-bi-background-active-switch; } } -} \ No newline at end of file +} diff --git a/src/less/base/single/icon.less b/src/less/base/single/icon.less deleted file mode 100644 index a885cefdf..000000000 --- a/src/less/base/single/icon.less +++ /dev/null @@ -1,5 +0,0 @@ -.x-icon.b-font { - // todo 删掉文件 - //margin: auto; - //width: 100%; -} diff --git a/src/less/base/single/input/checkbox.less b/src/less/base/single/input/checkbox.less index 96507bfd2..89c9b205b 100644 --- a/src/less/base/single/input/checkbox.less +++ b/src/less/base/single/input/checkbox.less @@ -3,13 +3,15 @@ .bi-checkbox { & .checkbox-content, &.checkbox-content { .border-radius(2px); - border: 1px solid @color-bi-border-dark-line; - box-sizing: border-box; + border: 1px solid @color-bi-border-checkbox; + .box-sizing(border-box); + .transition(all .1s); &:after { position: absolute; display: table; - top: 50%; - left: 20%; + // 百分比会出现像素误差 + top: 6px; + left: 2px; border: 2px solid transparent; border-top: 0; border-left: 0; @@ -17,34 +19,38 @@ height: 9px; .box-sizing(border-box); .transform(rotate(45deg) scale(1) translate(-50%, -50%)); + @transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s; + .transition(@transition); content: ''; } &.hover, &:hover { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-checkbox; } } - &.active, &:active { + &.active { & .checkbox-content, &.checkbox-content{ - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-checkbox; + background-color: @color-bi-background-active-checkbox; &:after { - border-color: @color-bi-border-default; + border-color: @color-bi-background-active-checkbox-content; opacity: 1; } } } &.disabled { & .checkbox-content, &.checkbox-content { - background-color: @color-bi-background-disabled; - border-color: @color-bi-border-disabled; + background-color: @color-bi-background-disabled-checkbox; + border-color: @color-bi-border-disabled-checkbox; } & .checkbox-content:after, &.checkbox-content:after { opacity: 0; } &.active { & .checkbox-content, &.checkbox-content { - background-color: @color-bi-background-dark-gray; + background-color: @color-bi-background-disabled-active-checkbox; &:after { opacity: 1; + border-color: @color-bi-background-disabled-active-checkbox-content; } } } @@ -54,24 +60,31 @@ .bi-theme-dark { .bi-checkbox { & .checkbox-content, &.checkbox-content { - border-color: @color-bi-border-dark-line-theme-dark; + border-color: @color-bi-border-checkbox-theme-dark; &.hover, &:hover { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-checkbox-theme-dark; } } - &.active, &:active { + &.active { & .checkbox-content, &.checkbox-content { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-checkbox-theme-dark; + background-color: @color-bi-background-active-checkbox-theme-dark; + &:after { + border-color: @color-bi-background-active-checkbox-content-theme-dark; + } } } &.disabled { & .checkbox-content, &.checkbox-content { - background-color: @color-bi-background-disabled-theme-dark; + background-color: @color-bi-background-disabled-checkbox-theme-dark; } &.active { & .checkbox-content, &.checkbox-content { - background-color: @color-bi-background-dark-gray-theme-dark; - border-color: @color-bi-border-disabled-theme-dark; + background-color: @color-bi-background-disabled-active-checkbox-theme-dark; + border-color: @color-bi-border-disabled-checkbox-theme-dark; + &:after { + border-color: @color-bi-background-disabled-active-checkbox-content-theme-dark; + } } } } diff --git a/src/less/base/single/input/input.less b/src/less/base/single/input/input.less index 7d94427f2..6d4017e5c 100644 --- a/src/less/base/single/input/input.less +++ b/src/less/base/single/input/input.less @@ -14,6 +14,6 @@ &.bi-input-error{ border: none; - color:@color-bi-text-failure !important; + color:@color-bi-color-error-input-text-area !important; } } \ No newline at end of file diff --git a/src/less/base/single/input/radio.less b/src/less/base/single/input/radio.less index 2e2cda48a..1f5383177 100644 --- a/src/less/base/single/input/radio.less +++ b/src/less/base/single/input/radio.less @@ -3,18 +3,20 @@ .bi-radio { & .radio-content, &.radio-content { .border-radius(8px); - border: 1px solid @color-bi-border-dark-line; + border: 1px solid @color-bi-border-radio; .box-sizing(border-box); + .transition(all .1s); &:after { content: ""; } &.hover, &:hover { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-radio; } } - &:active, &.active { + &.active { & .radio-content, &.radio-content { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-radio; + background-color: @color-bi-background-active-radio; &:after { width: 6px; height: 6px; @@ -23,24 +25,26 @@ top: 50%; left: 50%; .border-radius(3px); - background-color: @color-bi-background-default; + background-color: @color-bi-background-active-radio-content; .transform(translate(-50%, -50%)); + @transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s; + .transition(@transition); } } } &.disabled { & .radio-content, &.radio-content { - background-color: @color-bi-background-disabled; - border-color: @color-bi-border-disabled; + background-color: @color-bi-background-disabled-radio; + border-color: @color-bi-border-disabled-radio; } & .radio-content:after, &.radio-content:after { background-color: transparent; } &.active { & .radio-content, &.radio-content { - background-color: @color-bi-background-dark-gray; + background-color: @color-bi-background-disabled-active-radio; &:after { - background-color: @color-bi-background-default; + background-color: @color-bi-background-disabled-active-radio-content; } } } @@ -50,27 +54,33 @@ .bi-theme-dark { .bi-radio { & .radio-content, &.radio-content { - border-color: @color-bi-border-dark-line-theme-dark; + border-color: @color-bi-border-radio-theme-dark; &.hover, &:hover { - border-color: @color-bi-border-highlight; + border-color: @color-bi-border-hover-active-radio-theme-dark; } } - &.active, &:active { + &.active { & .radio-content, &.radio-content { - border-color: @color-bi-border-highlight; + border-color:@color-bi-border-hover-active-radio-theme-dark; + &:after { + background-color: @color-bi-background-active-radio-content-theme-dark; + } } } &.disabled { & .radio-content, &.radio-content { - background-color: @color-bi-background-disabled-theme-dark; + background-color: @color-bi-background-disabled-radio-theme-dark; &.hover, &:hover { - border-color: @color-bi-border-dark-line-theme-dark; + border-color: @color-bi-border-radio-theme-dark; } } &.active { & .radio-content, &.radio-content { - background-color: @color-bi-background-dark-gray-theme-dark; - border-color: @color-bi-border-disabled-theme-dark; + background-color: @color-bi-background-disabled-active-radio-theme-dark; + border-color: @color-bi-border-disabled-radio-theme-dark; + &:after { + background-color: @color-bi-background-disabled-active-radio-content-theme-dark; + } } } } diff --git a/src/less/base/single/tip/tip.less b/src/less/base/single/tip/tip.less index 99a050472..087f342a6 100644 --- a/src/less/base/single/tip/tip.less +++ b/src/less/base/single/tip/tip.less @@ -1,6 +1,5 @@ @import "../../../index"; - .bi-tip{ position: fixed !important; } diff --git a/src/less/base/single/tip/tip.toast.less b/src/less/base/single/tip/tip.toast.less index ef682969a..49b174614 100644 --- a/src/less/base/single/tip/tip.toast.less +++ b/src/less/base/single/tip/tip.toast.less @@ -1,9 +1,8 @@ @import "../../../index"; .bi-toast{ - color: @color-bi-text; - max-width: 400px; - min-width: 150px; + color: @color-bi-color-toast-text; + line-height: @font-size-16; .border-radius(2px); &.toast-success{ background: @color-bi-background-toast-success; diff --git a/src/less/base/tree/tree.display.less b/src/less/base/tree/tree.display.less index 87675cf74..20124e7d6 100644 --- a/src/less/base/tree/tree.display.less +++ b/src/less/base/tree/tree.display.less @@ -2,7 +2,7 @@ .bi-display-tree{ .ztree * { - color: @color-bi-text-gray; + color: @color-bi-text-display-tree; } & .ztree li a, & .ztree li span{ diff --git a/src/less/base/tree/tree.expander.less b/src/less/base/tree/tree.expander.less index 85a928cd4..b2e5b0c85 100644 --- a/src/less/base/tree/tree.expander.less +++ b/src/less/base/tree/tree.expander.less @@ -1,9 +1,28 @@ @import "../../index"; +@import "../../image"; +@import "../../lib/icon"; .bi-tree-expander-popup.line:before { position: absolute; content: ""; - border-left: 1px dashed @color-bi-border-dark-gray-line; height: 100%; - left: 11px; + width: 24px; + .imagePath(@icon-tree-vertical-line-1, 0, 0, repeat-y); } +.bi-tree-expander-popup.line.solid:before { + .imagePath(@icon-tree-solid-vertical-line-1, 0, 0, repeat-y); + width: 24px; + left:4px; +} + +.bi-theme-dark { + .bi-tree-expander-popup.line:before { + width: 24px; + .imagePath(@icon-tree-vertical-line-1-theme-dark, 0, 0, repeat-y); + } + .bi-tree-expander-popup.line.solid:before { + .imagePath(@icon-tree-solid-vertical-line-1-theme-dark, 0, 0, repeat-y); + width: 24px; + left:4px; + } +} diff --git a/src/less/base/tree/ztree.less b/src/less/base/tree/ztree.less index 2d30068d9..630c48b45 100644 --- a/src/less/base/tree/ztree.less +++ b/src/less/base/tree/ztree.less @@ -25,24 +25,74 @@ padding: 0 0 0 18px } +.ztree.solid li ul { + margin: 0; + padding: 0 0 0 24px +} + +// 此处不用2倍图,改用css画虚线 +// z-tree的line是一整块子节点区域,所以不能使用background-size: contain +// 使用1倍图太模糊,这边就使用css自己画了,calc属性支持IE9, IE8反正会走hack, 不影响 +.ztree li ul.line { + position: relative; + &:before { + position: absolute; + content: ''; + border-left: 1px dashed @border-color-dark-gray-line; + height: calc(~"100% - 3px"); + left: 11px; + margin-top: 1px; + } +} + +.ztree.solid li ul.line { + &:before { + border-left: 1px solid @border-color-dark-gray-line; + height: 100%; + left: 15px; + margin-top: 0; + } +} + +.bi-theme-dark { + .ztree li ul.line { + &:before { + border-left: 1px dashed @border-color-dark-gray-line; + } + } + .ztree.solid li ul.line { + &:before { + border-left: 1px solid @border-color-dark-gray-line-theme-dark; + } + } +} + .ztree li a { padding: 1px 3px 0 0; margin: 0; cursor: pointer; - height: 24px; + height: 23px; background-color: transparent; text-decoration: none; vertical-align: top; display: inline-block; - &:hover { - .background-color(@color-bi-background-highlight, 10%); - } - &:active { - color: @color-bi-text-highlight; - .background-color(@color-bi-background-highlight, 15%); + .tree-node-text { + &:not(.disabled) { + &:hover { + .background-color(@color-bi-background-highlight, 10%); + } + &:active { + color: @color-bi-text-highlight; + .background-color(@color-bi-background-highlight, 15%); + } + } } } +.ztree.solid li a { + height: 31px; +} + .ztree li a.curSelectedNode { } @@ -90,6 +140,10 @@ } } +.ztree.solid li span { + line-height: 32px; +} + .ztree li span.button { line-height: 0; margin: 0; @@ -111,7 +165,14 @@ box-sizing: border-box; &.active { background-color: @color-bi-background-highlight; - border-color: @color-bi-border-highlight;; + border-color: @color-bi-border-highlight; + } + &.disabled { + border: 1px solid @color-bi-border-disabled; + background-color: @color-bi-background-disabled; + &.active { + border-color: @color-bi-border-disabled; + } } } &.bi-half-button { @@ -206,6 +267,11 @@ height: 24px } +.ztree.solid li span.button.switch { + width: 32px; + height: 32px +} + .ztree li span.button.switch.noline_open { width: 0; } diff --git a/src/less/base/view/drawer.less b/src/less/base/view/drawer.less new file mode 100644 index 000000000..80a8ca1be --- /dev/null +++ b/src/less/base/view/drawer.less @@ -0,0 +1,6 @@ +@import "../../index"; + +.bi-drawer { + .box-shadows(-6px 0 16px -8px #00000014, -9px 0 28px #0000000d, -12px 0 48px 16px #00000008); + .transitions(transform .3s cubic-bezier(.23, 1, .32, 1), box-shadow .3s cubic-bezier(.23, 1, .32, 1)); +} diff --git a/src/less/base/view/popover.less b/src/less/base/view/popover.less index 4600d797c..27b65a895 100644 --- a/src/less/base/view/popover.less +++ b/src/less/base/view/popover.less @@ -2,4 +2,4 @@ .bi-popover { border: 1px solid transparent; -} \ No newline at end of file +} diff --git a/src/less/base/view/popupview.less b/src/less/base/view/popupview.less index 43f2c0c84..318518b57 100644 --- a/src/less/base/view/popupview.less +++ b/src/less/base/view/popupview.less @@ -1,6 +1,5 @@ @import "../../index"; -/**********BI.BIListView*************/ .bi-popup-view { position: fixed !important; overflow-y: visible !important; @@ -15,12 +14,12 @@ padding-bottom: 5px; } & .list-view-shadow { - .box-shadow(0 1px 5px 0, fade(@color-bi-background-black, 20)); + .box-shadow(0 1px 5px 0, fade(@color-bi-background-list-view-shadow, 20)); } & .list-view-toolbar { line-height: 24px; & > .center-element { - border-left: 1px solid @color-bi-border-line; + border-left: 1px solid @color-bi-border-list-view-toolbar; } & > .first-element { border-left: none; @@ -28,7 +27,105 @@ } } +.bi-popup-view[data-popper-placement^='top'], .bi-popup-view.top { + > .bi-bubble-arrow-wrapper { + bottom: 0; + left: 0; + > .bi-bubble-arrow { + bottom: -12px; + width: 14px; + > .bubble-arrow { + bottom: 8px; + left: 1px; + } + } + } +} +.bi-popup-view[data-popper-placement^='bottom'], .bi-popup-view.bottom { + > .bi-bubble-arrow-wrapper { + top: 0; + left: 0; + > .bi-bubble-arrow { + top: -12px; + width: 14px; + > .bubble-arrow { + top: 8px; + left: 1px; + } + } + } +} +.bi-popup-view[data-popper-placement^='left'], .bi-popup-view.left { + > .bi-bubble-arrow-wrapper { + right: 0; + top: 0; + > .bi-bubble-arrow { + right: -12px; + height: 14px; + > .bubble-arrow { + right: 8px; + top: 1px; + } + } + } +} +.bi-popup-view[data-popper-placement^='right'], .bi-popup-view.right { + > .bi-bubble-arrow-wrapper { + left: 0; + top: 0; + > .bi-bubble-arrow { + left: -12px; + height: 14px; + > .bubble-arrow { + left: 8px; + top: 1px; + } + } + } +} + +.bi-bubble-arrow { + width: 12px; + height: 12px; + // 消除祖先节点设置的line-height:normal对空白节点的行高影响 + line-height: 0; + overflow: hidden; + .bubble-arrow { + width: 12px; + height: 12px; + position: absolute; + &:before { + width: 12px; + height: 12px; + position: absolute; + content: ""; + background: @color-bi-background-default; + top: 0; + left: 0; + transition: transform 0.2s ease-out 0s, visibility 0.2s ease-out 0s; + visibility: visible; + transform: translateX(0px) rotate(-135deg); + transform-origin: center center; + .box-shadow(3px 3px 10px 0,rgba(0,0,0,6%)); + } + } +} + +.bi-popup-view.bi-primary { + .bi-bubble-arrow { + .bubble-arrow { + &:before { + background-color: @background-color-card-primary; + color: @color-card-primary; + } + } + } +} + .bi-theme-dark { + .bubble-arrow:before { + background: @color-bi-background-default-theme-dark; + } .bi-popup-view { & .list-view-toolbar { & > .center-element { @@ -42,4 +139,4 @@ & .list-view-shadow { .box-shadow(0 1px 5px 0, fade(@background-color-normal-theme-dark, 80)); } -} \ No newline at end of file +} diff --git a/src/less/component/form/form.less b/src/less/component/form/form.less new file mode 100644 index 000000000..b4e77e0a8 --- /dev/null +++ b/src/less/component/form/form.less @@ -0,0 +1,14 @@ +@import "../../index"; + +.bi-form { + & .bi-form-field.error { + & .bi-border, & .bi-border-bottom { + border-color: @border-color-negative; + } + } + & .bi-form-field { + & .error-tip { + background-color: @color-bi-background-error-form; + } + } +} \ No newline at end of file diff --git a/src/less/core/normalize2.less b/src/less/core/normalize2.less index cb936708d..11c876b5c 100644 --- a/src/less/core/normalize2.less +++ b/src/less/core/normalize2.less @@ -1,20 +1,5 @@ @import "../index"; -html, -body, -div, -ul, -ol, -li, -img, -a, -span, -p, -* { - margin: 0; - padding: 0; -} - a { outline: none; text-decoration: none; @@ -48,14 +33,6 @@ textarea { outline: none; } -ul { - list-style: disc; -} - -li { - list-style-type: none; -} - i { //font-style: normal; -webkit-font-smoothing: antialiased; diff --git a/src/less/core/utils/common.less b/src/less/core/utils/common.less index facfb9054..5d9b11c3e 100644 --- a/src/less/core/utils/common.less +++ b/src/less/core/utils/common.less @@ -122,6 +122,10 @@ & .bi-textarea { color: @color-bi-text-card; } + &.bi-primary { + background-color: @background-color-card-primary; + color: @color-card-primary; + } } .bi-theme-dark { @@ -177,6 +181,9 @@ &.disabled { border-color: @color-bi-border-disabled !important; } + &.error { + border-color: @border-color-negative; + } } .bi-border-top { @@ -184,6 +191,9 @@ &.disabled { border-color: @color-bi-border-disabled !important; } + &.error { + border-color: @border-color-negative; + } } .bi-border-right { @@ -191,6 +201,9 @@ &.disabled { border-color: @color-bi-border-disabled !important; } + &.error { + border-color: @border-color-negative; + } } .bi-border-bottom { @@ -198,6 +211,9 @@ &.disabled { border-color: @color-bi-border-disabled !important; } + &.error { + border-color: @border-color-negative; + } } .bi-border-left { @@ -205,6 +221,9 @@ &.disabled { border-color: @color-bi-border-disabled !important; } + &.error { + border-color: @border-color-negative; + } } .bi-theme-dark { diff --git a/src/less/core/utils/list-item.less b/src/less/core/utils/list-item.less index f6e1a4549..8964830cd 100644 --- a/src/less/core/utils/list-item.less +++ b/src/less/core/utils/list-item.less @@ -337,13 +337,69 @@ } } +// hover的时候背景变化 -- 变灰 +// active的时候文字高亮背景变化 -- 变灰 +.bi-list-item-active3, .bi-list-item-select3 { + &:hover, &.hover { + background-color: @color-bi-background-normal; + } + &:active, &.active { + color: @color-bi-text-highlight; + & .bi-input { + color: @color-bi-text-highlight; + } + & .bi-textarea { + color: @color-bi-text-highlight; + } + background-color: @color-bi-background-normal; + } + &.disabled { + &:hover, &.hover, &:active, &.active { + background-color: @color-bi-background-default !important; + } + } +} + +.bi-theme-dark { + .bi-list-item-active3, .bi-list-item-select3 { + &:hover, &.hover { + background-color: @color-bi-background-normal-theme-dark; + } + &:active, &.active { + color: @color-bi-text-highlight; + & .bi-input { + color: @color-bi-text-highlight; + } + & .bi-textarea { + color: @color-bi-text-highlight; + } + background-color: @color-bi-background-normal-theme-dark; + } + &.disabled { + &:hover, &.hover, &:active, &.active { + background-color: @color-bi-background-default-theme-dark !important; + } + } + } +} + // hover的时候背景变化 // active的时候背景高亮 .bi-list-item-select { &:hover, &.hover { .background-color(@color-bi-background-highlight, 10%); } - &:active, &.active { + &:active { + color: @color-bi-text-highlight; + & .bi-input { + color: @color-bi-text-highlight; + } + & .bi-textarea { + color: @color-bi-text-highlight; + } + .background-color(@color-bi-background-highlight, 15%); + } + &.active { color: @color-bi-text; & .bi-input { color: @color-bi-text; @@ -471,7 +527,17 @@ } .background-color(@color-bi-background-default, 5%); } - &:active, &.active { + &:active { + color: @color-bi-text; + & .bi-input { + color: @color-bi-text; + } + & .bi-textarea { + color: @color-bi-text; + } + .background-color(@color-bi-background-default, 5%); + } + &.active { color: @color-bi-text; & .bi-input { color: @color-bi-text; @@ -600,52 +666,6 @@ } } -// hover的时候背景变化 -- 变灰 -// active的时候文字高亮背景变化 -- 变灰 -.bi-list-item-select3 { - &:hover, &.hover { - background-color: @color-bi-background-normal; - } - &:active, &.active { - color: @color-bi-text-highlight; - & .bi-input { - color: @color-bi-text-highlight; - } - & .bi-textarea { - color: @color-bi-text-highlight; - } - background-color: @color-bi-background-normal; - } - &.disabled { - &:hover, &.hover, &:active, &.active { - background-color: @color-bi-background-default !important; - } - } -} - -.bi-theme-dark { - .bi-list-item-select3 { - &:hover, &.hover { - background-color: @color-bi-background-normal-theme-dark; - } - &:active, &.active { - color: @color-bi-text-highlight; - & .bi-input { - color: @color-bi-text-highlight; - } - & .bi-textarea { - color: @color-bi-text-highlight; - } - background-color: @color-bi-background-normal-theme-dark; - } - &.disabled { - &:hover, &.hover, &:active, &.active { - background-color: @color-bi-background-default-theme-dark !important; - } - } - } -} - // 去掉list-item效果 .bi-list-item-none { &:hover, &.hover { diff --git a/src/less/core/utils/motion/fade.less b/src/less/core/utils/motion/fade.less new file mode 100644 index 000000000..d51a68c75 --- /dev/null +++ b/src/less/core/utils/motion/fade.less @@ -0,0 +1,35 @@ +@import "../../../index"; + +.fade-motion(@className, @keyframeName) { + .make-motion(@className, @keyframeName); + .@{className}-enter, + .@{className}-appear { + opacity: 0; + animation-timing-function: linear; + } + .@{className}-leave { + animation-timing-function: linear; + } +} + +.fade-motion(bi-fade, biFade); + +.keyframes(biFadeIn, { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +}); + +.keyframes(biFadeOut, { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +}); diff --git a/src/less/core/utils/motion/move.less b/src/less/core/utils/motion/move.less new file mode 100644 index 000000000..3024c2a8b --- /dev/null +++ b/src/less/core/utils/motion/move.less @@ -0,0 +1,130 @@ +@import "../../../index"; + +.move-motion(@className, @keyframeName) { + .make-motion(@className, @keyframeName); + .@{className}-enter, + .@{className}-appear { + opacity: 0; + animation-timing-function: @ease-out-circ; + } + .@{className}-leave { + animation-timing-function: @ease-in-circ; + } +} + +.move-motion(bi-move-up, biMoveUp); +.move-motion(bi-move-down, biMoveDown); +.move-motion(bi-move-left, biMoveLeft); +.move-motion(bi-move-right, biMoveRight); + +.keyframes(biMoveDownIn, { + 0% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +}); + +.keyframes(biMoveDownOut, { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } +}); + +.keyframes(biMoveLeftIn, { + 0% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +}); + +.keyframes(biMoveLeftOut, { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } +}); + +.keyframes(biMoveRightIn, { + 0% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +}); + +.keyframes(biMoveRightOut, { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } +}); + +.keyframes(biMoveUpIn, { + 0% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +}); + +.keyframes(biMoveUpOut, { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } +}); diff --git a/src/less/core/utils/motion/slide.less b/src/less/core/utils/motion/slide.less new file mode 100644 index 000000000..0fa6567a4 --- /dev/null +++ b/src/less/core/utils/motion/slide.less @@ -0,0 +1,130 @@ +@import "../../../index"; + +.slide-motion(@className, @keyframeName) { + .make-motion(@className, @keyframeName); + .@{className}-enter, + .@{className}-appear { + opacity: 0; + animation-timing-function: @ease-out-quint; + } + .@{className}-leave { + animation-timing-function: @ease-in-quint; + } +} + +.slide-motion(bi-slide-up, biSlideUp); +.slide-motion(bi-slide-down, biSlideDown); +.slide-motion(bi-slide-left, biSlideLeft); +.slide-motion(bi-slide-right, biSlideRight); + +.keyframes(biSlideUpIn, { + 0% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + + 100% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } +}); + +.keyframes(biSlideUpOut, { + 0% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } + + 100% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +}); + +.keyframes(biSlideDownIn, { + 0% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } + + 100% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } +}); + +.keyframes(biSlideDownOut, { + 0% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } + + 100% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } +}); + +.keyframes(biSlideLeftIn, { + 0% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + + 100% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } +}); + +.keyframes(biSlideLeftOut, { + 0% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } + + 100% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +}); + +.keyframes(biSlideRightIn, { + 0% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } + + 100% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } +}); + +.keyframes(biSlideRightOut, { + 0% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } + + 100% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } +}); diff --git a/src/less/core/utils/motion/zoom.less b/src/less/core/utils/motion/zoom.less new file mode 100644 index 000000000..2407b8428 --- /dev/null +++ b/src/less/core/utils/motion/zoom.less @@ -0,0 +1,180 @@ +@import "../../../index"; + +.zoom-motion(@className, @keyframeName, @duration: @animation-duration-base) { + .make-motion(@className, @keyframeName, @duration); + .@{className}-enter, + .@{className}-appear { + transform: scale(0); // need this by yiminghe + opacity: 0; + animation-timing-function: @ease-out-circ; + + &-prepare { + transform: none; + } + } + .@{className}-leave { + animation-timing-function: @ease-in-out-circ; + } +} + +// For Modal, Select choosen item +.zoom-motion(bi-zoom, biZoom); +// For Popover, Popconfirm, Dropdown +.zoom-motion(bi-zoom-big, biZoomBig); +// For Tooltip +.zoom-motion(bi-zoom-big-fast, biZoomBig, @animation-duration-fast); + +.zoom-motion(bi-zoom-up, biZoomUp); +.zoom-motion(bi-zoom-down, biZoomDown); +.zoom-motion(bi-zoom-left, biZoomLeft); +.zoom-motion(bi-zoom-right, biZoomRight); + +.keyframes(biZoomIn, { + 0% { + transform: scale(0.2); + opacity: 0; + } + + 100% { + transform: scale(1); + opacity: 1; + } +}); + +.keyframes(biZoomOut, { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0.2); + opacity: 0; + } +}); + +.keyframes(biZoomBigIn, { + 0% { + transform: scale(0.8); + opacity: 0; + } + + 100% { + transform: scale(1); + opacity: 1; + } +}); + +.keyframes(biZoomBigOut, { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0.8); + opacity: 0; + } +}); + +.keyframes(biZoomUpIn, { + 0% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 50% 0%; + } +}); + +.keyframes(biZoomUpOut, { + 0% { + transform: scale(1); + transform-origin: 50% 0%; + } + + 100% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } +}); + +.keyframes(biZoomLeftIn, { + 0% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 0% 50%; + } +}); + +.keyframes(biZoomLeftOut, { + 0% { + transform: scale(1); + transform-origin: 0% 50%; + } + + 100% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } +}); + +.keyframes(biZoomRightIn, { + 0% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 100% 50%; + } +}); + +.keyframes(biZoomRightOut, { + 0% { + transform: scale(1); + transform-origin: 100% 50%; + } + + 100% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } +}); + +.keyframes(biZoomDownIn, { + 0% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 50% 100%; + } +}); + +.keyframes(biZoomDownOut, { + 0% { + transform: scale(1); + transform-origin: 50% 100%; + } + + 100% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } +}); diff --git a/src/less/core/wrapper/flex.horizontal.less b/src/less/core/wrapper/flex.horizontal.less index b58fe25c4..b6a8ccc97 100644 --- a/src/less/core/wrapper/flex.horizontal.less +++ b/src/less/core/wrapper/flex.horizontal.less @@ -160,10 +160,12 @@ } > .f-s-n { - -webkit-flex-shrink: 0; - -moz-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; + &, &.f-f { + -webkit-flex-shrink: 0; + -moz-flex-shrink: 0; + -ms-flex-shrink: 0; + flex-shrink: 0; + } } > .f-f { @@ -171,5 +173,10 @@ -moz-flex-grow: 1; -ms-flex-grow: 1; flex-grow: 1; + // IE10下默认shrink为0 + -webkit-flex-shrink: 1; + -moz-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; } } diff --git a/src/less/core/wrapper/flex.vertical.less b/src/less/core/wrapper/flex.vertical.less index 1772deb9f..c8fbefa6b 100644 --- a/src/less/core/wrapper/flex.vertical.less +++ b/src/less/core/wrapper/flex.vertical.less @@ -159,10 +159,12 @@ } > .f-s-n { - -webkit-flex-shrink: 0; - -moz-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; + &, &.f-f { + -webkit-flex-shrink: 0; + -moz-flex-shrink: 0; + -ms-flex-shrink: 0; + flex-shrink: 0; + } } > .f-f { @@ -170,5 +172,10 @@ -moz-flex-grow: 1; -ms-flex-grow: 1; flex-grow: 1; + // IE10下默认shrink为0 + -webkit-flex-shrink: 1; + -moz-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; } } diff --git a/src/less/core/wrapper/flex.wrapper.horizontal.less b/src/less/core/wrapper/flex.wrapper.horizontal.less index a54b68075..89de62f88 100644 --- a/src/less/core/wrapper/flex.wrapper.horizontal.less +++ b/src/less/core/wrapper/flex.wrapper.horizontal.less @@ -256,10 +256,12 @@ } > .f-s-n { - -webkit-flex-shrink: 0; - -moz-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; + &, &.f-f { + -webkit-flex-shrink: 0; + -moz-flex-shrink: 0; + -ms-flex-shrink: 0; + flex-shrink: 0; + } } > .f-f { @@ -267,6 +269,11 @@ -moz-flex-grow: 1; -ms-flex-grow: 1; flex-grow: 1; + // IE10下默认shrink为0 + -webkit-flex-shrink: 1; + -moz-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; } } } diff --git a/src/less/core/wrapper/flex.wrapper.vertical.less b/src/less/core/wrapper/flex.wrapper.vertical.less index c836d9244..477891105 100644 --- a/src/less/core/wrapper/flex.wrapper.vertical.less +++ b/src/less/core/wrapper/flex.wrapper.vertical.less @@ -250,10 +250,12 @@ } > .f-s-n { - -webkit-flex-shrink: 0; - -moz-flex-shrink: 0; - -ms-flex-shrink: 0; - flex-shrink: 0; + &, &.f-f { + -webkit-flex-shrink: 0; + -moz-flex-shrink: 0; + -ms-flex-shrink: 0; + flex-shrink: 0; + } } > .f-f { @@ -261,6 +263,11 @@ -moz-flex-grow: 1; -ms-flex-grow: 1; flex-grow: 1; + // IE10下默认shrink为0 + -webkit-flex-shrink: 1; + -moz-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; } } } diff --git a/src/less/core/wrapper/table.less b/src/less/core/wrapper/table.less new file mode 100644 index 000000000..f1a408c09 --- /dev/null +++ b/src/less/core/wrapper/table.less @@ -0,0 +1,3 @@ +.bi-t { + display: grid; +} \ No newline at end of file diff --git a/src/less/index-modern.less b/src/less/index-modern.less deleted file mode 100644 index 3edda1ca0..000000000 --- a/src/less/index-modern.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "lib/colors-modern"; -@import "lib/theme-modern"; diff --git a/src/less/index.less b/src/less/index.less index 5bf77d7b2..3644b8e34 100644 --- a/src/less/index.less +++ b/src/less/index.less @@ -2,6 +2,7 @@ @import "box-model"; @import "typographic"; @import "visual"; +@import "motion"; @import "var"; @import "lib/colors"; @import "lib/theme"; diff --git a/src/less/lib/background.less b/src/less/lib/background.less index 1f291a5fe..a331a88da 100644 --- a/src/less/lib/background.less +++ b/src/less/lib/background.less @@ -8,7 +8,3 @@ @background-trans-color-disabled: "background/trans_disable.png"; @background-auto-color-square-normal: "icon/auto_square_normal.png"; @background-auto-color-no-square-normal: "icon/auto_no_square_normal.png"; - -@background-farbtastic-wheel:"background/wheel.png"; -@background-farbtastic-overlay:"background/mask.png"; -@background-farbtastic-marker:"background/marker.png"; diff --git a/src/less/lib/colors-modern.less b/src/less/lib/colors-modern.less deleted file mode 100644 index 72d0c388d..000000000 --- a/src/less/lib/colors-modern.less +++ /dev/null @@ -1,181 +0,0 @@ -@import "constant"; - -// 通用色彩库。从constant.less中获取相关颜色,不要出现#xxxxxx - -//默认字体颜色 -@color-bi-text-normal: var(--color-bi-text-normal); -//深色主题默认字体颜色 -@color-bi-text-theme-dark: var(--color-bi-text-theme-dark); -@color-bi-text-normal-theme-dark: var(--color-bi-text-normal-theme-dark); -//黑色字体颜色 -@color-bi-text-black: var(--color-bi-text-black); -//深色主题黑色字体颜色 -@color-bi-text-black-theme-dark: var(--color-bi-text-black-theme-dark); -//灰色字体颜色 -@color-bi-text-gray: var(--color-bi-text-gray); -//浅灰色字体 -@color-bi-text-light-gray: var(--color-bi-text-light-gray); -//深色主题浅灰色字体 -@color-bi-text-light-gray-theme-dark: var(--color-bi-text-light-gray-theme-dark); -//白色字体颜色 -@color-bi-text: var(--color-bi-text); -@color-bi-text-white: var(--color-bi-text-white); -//深色主题白色字体颜色 -@color-bi-text-white-theme-dark: var(--color-bi-text-white-theme-dark); -//灰化字体颜色 -@color-bi-text-disabled: var(--color-bi-text-disabled); -//深色主题灰化字体颜色 -@color-bi-text-disabled-theme-dark: var(--color-bi-text-disabled-theme-dark); -//灰化图标色 -@color-bi-icon-disabled: var(--color-bi-icon-disabled); -//深色主题灰化图标颜色 -@color-bi-icon-disabled-theme-dark: var(--color-bi-icon-disabled-theme-dark); -//提示字体颜色 -@color-bi-text-tips: var(--color-bi-text-tips); -//深色主题提示字体颜色 -@color-bi-text-tips-theme-dark: var(--color-bi-text-tips-theme-dark); -//成功字体颜色 -@color-bi-text-success: var(--color-bi-text-success); -//失败字体颜色 -@color-bi-text-failure: var(--color-bi-text-failure); -//基本提亮颜色 -@color-bi-text-highlight: var(--color-bi-text-highlight); -//标红色 -@color-bi-text-redmark: var(--color-bi-text-redmark); - -//普通背景 -@color-bi-background-normal: var(--color-bi-background-normal); -//深色主题普通背景 -@color-bi-background-normal-theme-dark: var(--color-bi-background-normal-theme-dark); -//默认背景 -@color-bi-background-default: var(--color-bi-background-default); -//深色主题默认背景 -@color-bi-background-default-theme-dark: var(--color-bi-background-default-theme-dark); -//黑色背景 -@color-bi-background-black: var(--color-bi-background-black); -//深色主题黑色背景 -@color-bi-background-black-theme-dark: var(--color-bi-background-black-theme-dark); -//浅黑色背景 -@color-bi-background-light-black: var(--color-bi-background-light-black); -//深色主题浅黑色背景 -@color-bi-background-light-black-theme-dark: var(--color-bi-background-light-black-theme-dark); -//深灰色背景 -@color-bi-background-dark-gray: var(--color-bi-background-dark-gray); -//深色主题深灰色背景 -@color-bi-background-dark-gray-theme-dark: var(--color-bi-background-dark-gray-theme-dark); -//灰色背景(浅) -@color-bi-background-light-gray: var(--color-bi-background-light-gray); -//深色主题灰色背景(浅) -@color-bi-background-light-gray-theme-dark: var(--color-bi-background-light-gray-theme-dark); -//灰色背景(中) -@color-bi-background-medium-gray: var(--color-bi-background-medium-gray); -//深色主题灰色背景(中) -@color-bi-background-medium-gray-theme-dark: var(--color-bi-background-medium-gray-theme-dark); -//灰化背景 -@color-bi-background-disabled: var(--color-bi-background-disabled); -//深色主题灰化背景 -@color-bi-background-disabled-theme-dark: var(--color-bi-background-disabled-theme-dark); -//浅灰化背景 -@color-bi-background-light-disabled: var(--color-bi-background-light-disabled); -//深色主题浅灰化背景 -@color-bi-background-light-disabled-theme-dark: var(--color-bi-background-light-disabled-theme-dark); -//成功背景色 -@color-bi-background-success: var(--color-bi-background-success); -//成功背景色(浅) -@color-bi-background-light-success: var(--color-bi-background-light-success); -//失败背景色 -@color-bi-background-failure: var(--color-bi-background-failure); -//失败背景色(浅) -@color-bi-background-light-failure: var(--color-bi-background-light-failure); -//失败背景色(深) -@color-bi-background-dark-failure: var(--color-bi-background-dark-failure); -//警示背景色 -@color-bi-background-warning: var(--color-bi-background-warning); -//警示背景色(浅) -@color-bi-background-light-warning: var(--color-bi-background-light-warning); -//背景提亮色 -@color-bi-background-highlight: var(--color-bi-background-highlight); -//背景提亮色(浅) -@color-bi-background-light-highlight: var(--color-bi-background-light-highlight); - -//黑色边框色 -@color-bi-border-black: var(--color-bi-border-black); -//默认边框色 -@color-bi-border-default: var(--color-bi-border-default); -//边框线色 -@color-bi-border-line: var(--color-bi-border-line); -//深色主题边框线色 -@color-bi-border-line-theme-dark: var(--color-bi-border-line-theme-dark); -//深灰色边框线 -@color-bi-border-dark-gray-line: var(--color-bi-border-dark-gray-line); -//深灰色主题深色边框线 -@color-bi-border-dark-gray-line-theme-dark: var(--color-bi-border-dark-gray-line-theme-dark); -//深色边框线 -@color-bi-border-dark-line: var(--color-bi-border-dark-line); -//深色主题深色边框线 -@color-bi-border-dark-line-theme-dark: var(--color-bi-border-dark-line-theme-dark); -//灰化边框 -@color-bi-border-disabled: var(--color-bi-border-disabled); -//深色主题灰化边框 -@color-bi-border-disabled-theme-dark: var(--color-bi-border-disabled-theme-dark); -//成功边框色 -@color-bi-border-success: var(--color-bi-border-success); -//失败边框色 -@color-bi-border-failure: var(--color-bi-border-failure); -//警示边框色 -@color-bi-border-warning: var(--color-bi-border-warning); -//边框提亮 -@color-bi-border-highlight: var(--color-bi-border-highlight); - -//颜色百分比 -//green -@color-bi-green-80: var(--color-bi-green-80); -@color-bi-green-60: var(--color-bi-green-60); -@color-bi-green-40: var(--color-bi-green-40); -@color-bi-green-30: var(--color-bi-green-30); -@color-bi-green-20: var(--color-bi-green-20); -@color-bi-green-10: var(--color-bi-green-10); -@color-bi-green-5: var(--color-bi-green-5); - -//blue -@color-bi-blue-80: var(--color-bi-blue-80); -@color-bi-blue-60: var(--color-bi-blue-60); -@color-bi-blue-40: var(--color-bi-blue-40); -@color-bi-blue-30: var(--color-bi-blue-30); -@color-bi-blue-20: var(--color-bi-blue-20); -@color-bi-blue-10: var(--color-bi-blue-10); -@color-bi-blue-5: var(--color-bi-blue-5); - -//light-blue -@color-bi-light-blue-80: var(--color-bi-light-blue-80); -@color-bi-light-blue-60: var(--color-bi-light-blue-60); -@color-bi-light-blue-40: var(--color-bi-light-blue-40); -@color-bi-light-blue-30: var(--color-bi-light-blue-30); -@color-bi-light-blue-20: var(--color-bi-light-blue-20); -@color-bi-light-blue-10: var(--color-bi-light-blue-10); -@color-bi-light-blue-5: var(--color-bi-light-blue-5); - -// orange -@color-bi-orange-80: var(--color-bi-orange-80); -@color-bi-orange-60: var(--color-bi-orange-60); -@color-bi-orange-40: var(--color-bi-orange-40); -@color-bi-orange-30: var(--color-bi-orange-30); -@color-bi-orange-20: var(--color-bi-orange-20); -@color-bi-orange-10: var(--color-bi-orange-10); -@color-bi-orange-5: var(--color-bi-orange-5); - -// red -@color-bi-red-80: var(--color-bi-red-80); -@color-bi-red-60: var(--color-bi-red-60); -@color-bi-red-40: var(--color-bi-red-40); -@color-bi-red-30: var(--color-bi-red-30); -@color-bi-red-20: var(--color-bi-red-20); -@color-bi-red-10: var(--color-bi-red-10); -@color-bi-red-5: var(--color-bi-red-5); - -// yellow -@color-bi-yellow-80: var(--color-bi-yellow-80); -@color-bi-yellow-60: var(--color-bi-yellow-60); -@color-bi-yellow-40: var(--color-bi-yellow-40); -@color-bi-yellow-20: var(--color-bi-yellow-20); -@color-bi-yellow-5: var(--color-bi-yellow-5); diff --git a/src/less/lib/colors.less b/src/less/lib/colors.less index 81f9e5197..394bb5f66 100644 --- a/src/less/lib/colors.less +++ b/src/less/lib/colors.less @@ -26,10 +26,6 @@ @color-bi-text-disabled: @font-color-disabled; //深色主题灰化字体颜色 @color-bi-text-disabled-theme-dark: @font-color-disabled-theme-dark; -//灰化图标色 -@color-bi-icon-disabled: @font-color-light-disabled; -//深色主题灰化图标颜色 -@color-bi-icon-disabled-theme-dark: @font-color-light-disabled-theme-dark; //提示字体颜色 @color-bi-text-tips: @font-color-tips; //深色主题提示字体颜色 @@ -43,6 +39,11 @@ //标红色 @color-bi-text-redmark: @font-color-warning; +//灰化图标色 +@color-bi-icon-disabled: @font-color-light-disabled; +//深色主题灰化图标颜色 +@color-bi-icon-disabled-theme-dark: @font-color-light-disabled-theme-dark; + //普通背景 @color-bi-background-normal: @background-color-normal; //深色主题普通背景 @@ -126,56 +127,3 @@ @color-bi-border-warning: @border-color-warning; //边框提亮 @color-bi-border-highlight: @border-color-highlight; - -//颜色百分比 -//green -@color-bi-green-80: fade(@font-color-success, 80); -@color-bi-green-60: fade(@font-color-success, 60); -@color-bi-green-40: fade(@font-color-success, 40); -@color-bi-green-30: fade(@font-color-success, 30); -@color-bi-green-20: fade(@font-color-success, 20); -@color-bi-green-10: fade(@font-color-success, 10); -@color-bi-green-5: fade(@font-color-success, 5); - -//blue -@color-bi-blue-80: fade(@font-color-highlight, 80); -@color-bi-blue-60: fade(@font-color-highlight, 60); -@color-bi-blue-40: fade(@font-color-highlight, 40); -@color-bi-blue-30: fade(@font-color-highlight, 30); -@color-bi-blue-20: fade(@font-color-highlight, 20); -@color-bi-blue-10: fade(@font-color-highlight, 10); -@color-bi-blue-5: fade(@font-color-highlight, 5); - -//light-blue -@color-bi-light-blue-80: fade(@font-color-light-highlight, 80); -@color-bi-light-blue-60: fade(@font-color-light-highlight, 60); -@color-bi-light-blue-40: fade(@font-color-light-highlight, 40); -@color-bi-light-blue-30: fade(@font-color-light-highlight, 30); -@color-bi-light-blue-20: fade(@font-color-light-highlight, 20); -@color-bi-light-blue-10: fade(@font-color-light-highlight, 10); -@color-bi-light-blue-5: fade(@font-color-light-highlight, 5); - -// orange -@color-bi-orange-80: fade(@font-color-warning, 80); -@color-bi-orange-60: fade(@font-color-warning, 60); -@color-bi-orange-40: fade(@font-color-warning, 40); -@color-bi-orange-30: fade(@font-color-warning, 30); -@color-bi-orange-20: fade(@font-color-warning, 20); -@color-bi-orange-10: fade(@font-color-warning, 10); -@color-bi-orange-5: fade(@font-color-warning, 5); - -// red -@color-bi-red-80: fade(@font-color-negative, 80); -@color-bi-red-60: fade(@font-color-negative, 60); -@color-bi-red-40: fade(@font-color-negative, 40); -@color-bi-red-30: fade(@font-color-negative, 30); -@color-bi-red-20: fade(@font-color-negative, 20); -@color-bi-red-10: fade(@font-color-negative, 10); -@color-bi-red-5: fade(@font-color-negative, 5); - -// yellow -@color-bi-yellow-80: fade(@font-color-yellow, 90); -@color-bi-yellow-60: fade(@font-color-yellow, 60); -@color-bi-yellow-40: fade(@font-color-yellow, 40); -@color-bi-yellow-20: fade(@font-color-yellow, 20); -@color-bi-yellow-5: fade(@font-color-yellow, 5); diff --git a/src/less/lib/constant.less b/src/less/lib/constant.less index 4d99501bf..5236ce2cb 100644 --- a/src/less/lib/constant.less +++ b/src/less/lib/constant.less @@ -20,93 +20,227 @@ @opacity-15: 0.15; @opacity-20: 0.2; +// 色板 +// 品牌 +@color-primary: #3685f2; +@color-card-primary: @color-white; +@background-color-card-primary: #1e4092; + +//green +@color-green-100: #13cd66; +@color-green-90: fade(@color-green-100, 90); +@color-green-80: fade(@color-green-100, 80); +@color-green-60: fade(@color-green-100, 60); +@color-green-50: fade(@color-green-100, 50); +@color-green-40: fade(@color-green-100, 40); +@color-green-30: fade(@color-green-100, 30); +@color-green-20: fade(@color-green-100, 20); +@color-green-10: fade(@color-green-100, 10); +@color-green-5: fade(@color-green-100, 5); + +//cyan +@color-sea-green-100: #3FB4AB; +@color-sea-green-90: fade(@color-sea-green-100, 90); +@color-sea-green-80: fade(@color-sea-green-100, 80); +@color-sea-green-60: fade(@color-sea-green-100, 60); +@color-sea-green-50: fade(@color-sea-green-100, 50); +@color-sea-green-40: fade(@color-sea-green-100, 40); +@color-sea-green-30: fade(@color-sea-green-100, 30); +@color-sea-green-20: fade(@color-sea-green-100, 20); +@color-sea-green-10: fade(@color-sea-green-100, 10); +@color-sea-green-5: fade(@color-sea-green-100, 5); + +//blue +@color-blue-100: @color-primary; +@color-blue-90: fade(@color-blue-100, 90); +@color-blue-80: fade(@color-blue-100, 80); +@color-blue-60: fade(@color-blue-100, 60); +@color-blue-50: fade(@color-blue-100, 50); +@color-blue-40: fade(@color-blue-100, 40); +@color-blue-30: fade(@color-blue-100, 30); +@color-blue-20: fade(@color-blue-100, 20); +@color-blue-10: fade(@color-blue-100, 10); +@color-blue-5: fade(@color-blue-100, 5); + +//light-blue +@color-light-blue-100: #eaf2fd; +@color-light-blue-90: fade(@color-light-blue-100, 90); +@color-light-blue-80: fade(@color-light-blue-100, 80); +@color-light-blue-60: fade(@color-light-blue-100, 60); +@color-light-blue-50: fade(@color-light-blue-100, 50); +@color-light-blue-40: fade(@color-light-blue-100, 40); +@color-light-blue-30: fade(@color-light-blue-100, 30); +@color-light-blue-20: fade(@color-light-blue-100, 20); +@color-light-blue-10: fade(@color-light-blue-100, 10); +@color-light-blue-5: fade(@color-light-blue-100, 5); + +// orange +@color-orange-100: #faaa39; +@color-orange-90: fade(@color-orange-100, 90); +@color-orange-80: fade(@color-orange-100, 80); +@color-orange-60: fade(@color-orange-100, 60); +@color-orange-50: fade(@color-orange-100, 50); +@color-orange-40: fade(@color-orange-100, 40); +@color-orange-30: fade(@color-orange-100, 30); +@color-orange-20: fade(@color-orange-100, 20); +@color-orange-10: fade(@color-orange-100, 10); +@color-orange-5: fade(@color-orange-100, 5); + +// red +@color-red-100: #e65251; +@color-red-90: fade(@color-red-100, 90); +@color-red-80: fade(@color-red-100, 80); +@color-red-60: fade(@color-red-100, 60); +@color-red-50: fade(@color-red-100, 50); +@color-red-40: fade(@color-red-100, 40); +@color-red-30: fade(@color-red-100, 30); +@color-red-20: fade(@color-red-100, 20); +@color-red-10: fade(@color-red-100, 10); +@color-red-5: fade(@color-red-100, 5); + +// yellow +@color-yellow-100: #ffc101; +@color-yellow-80: fade(@color-yellow-100, 90); +@color-yellow-60: fade(@color-yellow-100, 60); +@color-yellow-40: fade(@color-yellow-100, 40); +@color-yellow-20: fade(@color-yellow-100, 20); +@color-yellow-5: fade(@color-yellow-100, 5); + +// black +@color-black-100: #232e40; +@color-black-90: fade(@color-black-100, 90); +@color-black-80: fade(@color-black-100, 80); +@color-black-60: fade(@color-black-100, 60); +@color-black-50: fade(@color-black-100, 50); +@color-black-40: fade(@color-black-100, 40); +@color-black-30: fade(@color-black-100, 30); +@color-black-20: fade(@color-black-100, 20); +@color-black-10: fade(@color-black-100, 10); +@color-black-5: fade(@color-black-100, 5); + +// white +@color-white-100: #FFFFFF; +@color-white-90: fade(@color-white-100, 90); +@color-white-80: fade(@color-white-100, 80); +@color-white-60: fade(@color-white-100, 60); +@color-white-50: fade(@color-white-100, 50); +@color-white-40: fade(@color-white-100, 40); +@color-white-30: fade(@color-white-100, 30); +@color-white-20: fade(@color-white-100, 20); +@color-white-10: fade(@color-white-100, 10); +@color-white-5: fade(@color-white-100, 5); + +@color-black: @color-black-100; +@color-black-theme-dark: #F7F9FC; +@color-state-gray: #2E3A4D; +@color-state-gray-theme-dark: #D6E0EC; +@color-light-state-gray: #647185; +@color-light-state-gray-theme-dark: #AFB7C6; +@color-dim-gray: #9EA6B2; +@color-dim-gray-theme-dark: #878d9f; +@color-gray: #C4C9D1; +@color-gray-theme-dark: #6B7084; +@color-dark-gray: #D0D4DA; +@color-dark-gray-theme-dark: #606479; +@color-sliver: #E7E8EB; +@color-sliver-theme-dark: #363E55; +@color-light-gray: #647185; +@color-light-gray-theme-dark: #afb7c6; +@color-gainsboro: #F5F6F9; +@color-gainsboro-theme-dark: #191F35; +@color-white: @color-white-100; +@color-white-theme-dark: #20263B; + +@color-transparent: transparent; + + //font color -@font-color-black: #232e40; +@font-color-black: @color-black; @font-color-normal: #3d4d66; @font-color-normal-theme-dark: #d6e0dc; -@font-color-light-gray: #647185; -@font-color-light-gray-theme-dark: #afb7c6; -@font-color-disabled: #9ea6b2; -@font-color-disabled-theme-dark: #878d9f; -@font-color-tips: #9ea6b2; -@font-color-tips-theme-dark: #6b7084; -@font-color-light-disabled: #d0d4da; -@font-color-light-disabled-theme-dark: #606479; +@font-color-light-gray: @color-light-gray; +@font-color-light-gray-theme-dark: @color-light-gray-theme-dark; +@font-color-disabled: @color-dim-gray; +@font-color-disabled-theme-dark: @color-dim-gray-theme-dark; +@font-color-tips: @color-dim-gray; +@font-color-tips-theme-dark: @color-gray-theme-dark; +@font-color-light-disabled: @color-dark-gray; +@font-color-light-disabled-theme-dark: @color-dark-gray-theme-dark; @font-color-gray: #999999; -@font-color-white: #ffffff; -@font-color-white-theme-dark: #20263b; -@font-color-light-highlight: #eaf2fd; +@font-color-white: @color-white; +@font-color-white-theme-dark: @color-white-theme-dark; +@font-color-light-highlight: @color-light-blue-100; @font-color-medium-highlight: #d7e7fc; -@font-color-highlight: #3685f2; +@font-color-highlight: @color-blue-100; @font-color-blue: #23beef; @font-color-light-blue: #e9f8fd; -@font-color-success: #13cd66; -@font-color-warning: #faaa39; -@font-color-negative: #e65251; -@font-color-yellow: #ffc101; +@font-color-success: @color-green-100; +@font-color-warning: @color-orange-100; +@font-color-negative: @color-red-100; +@font-color-yellow: @color-yellow-100; //background color -@background-color-black: #232E40; -@background-color-black-theme-dark: #606479; +@background-color-black: @color-black; +@background-color-black-theme-dark: @color-dark-gray-theme-dark; @background-color-light-black: #3d4d66; @background-color-light-black-theme-dark: #d6e0dc; -@background-color-default: #ffffff; -@background-color-default-theme-dark: #20263b; +@background-color-default: @color-white; +@background-color-default-theme-dark: @color-white-theme-dark; @background-color-normal: #f7f8fa; @background-color-normal-theme-dark: #191b2b; -@background-color-light-highlight: #eaf2fd; +@background-color-light-highlight: @color-light-blue-100; @background-color-medium-highlight: #d7e7fc; -@background-color-highlight: #3685f2; +@background-color-highlight: @color-blue-100; @background-color-blue: #23beef; @background-color-light-blue: #e9f8fd; @background-color-dark: #d4dadd; @background-color-light-gray: #f2f4f7; @background-color-light-gray-theme-dark: #292f45; @background-color-medium-gray: #e8eaed; -@background-color-medium-gray-theme-dark: #363e55; -@background-color-dark-gray: #d0d4da; -@background-color-dark-gray-theme-dark: #606479; +@background-color-medium-gray-theme-dark: @color-sliver-theme-dark; +@background-color-dark-gray: @color-dark-gray; +@background-color-dark-gray-theme-dark: @color-dark-gray-theme-dark; @background-color-disabled: #f2f4f7; @background-color-disabled-theme-dark: #292f45; -@background-color-light-disabled: #9ea6b2; -@background-color-light-disabled-theme-dark: #878d9f; -@background-color-yellow: #ffc101; +@background-color-light-disabled: @color-dim-gray; +@background-color-light-disabled-theme-dark: @color-dim-gray-theme-dark; +@background-color-yellow: @color-yellow-100; -@background-color-negative: #e65251; +@background-color-negative: @color-red-100; @background-color-light-negative: #ffecec; @background-color-dark-negative: #3A2940; @background-color-light-warning: #feeed7; -@background-color-warning: #faaa39; +@background-color-warning: @color-orange-100; -@background-color-dark-success: #13cd66; +@background-color-dark-success: @color-green-100; @background-color-light-success: #e1f4e7; -@background-color-normal-success: #647185; +@background-color-normal-success: @color-light-gray; //border color -@border-color-default: #ffffff; -@border-color-black: #232e40; +@border-color-default: @color-white; +@border-color-black: @color-black; @border-color-line: #e8eaed; -@border-color-line-theme-dark: #363e55; +@border-color-line-theme-dark: @color-sliver-theme-dark; @border-color-light-line: #f2f4f7; @border-color-light-line-theme-dark: #292f45; -@border-color-dark-gray-line: #d0d4da; -@border-color-dark-gray-line-theme-dark: #606479; -@border-color-dark-line: #9ea6b2; -@border-color-dark-line-theme-dark: #878d9f; -@border-color-highlight: #3685f2; +@border-color-dark-gray-line: @color-dark-gray; +@border-color-dark-gray-line-theme-dark: @color-dark-gray-theme-dark; +@border-color-dark-line: @color-dim-gray; +@border-color-dark-line-theme-dark: @color-dim-gray-theme-dark; +@border-color-highlight: @color-blue-100; -@border-color-success: #13cd66; +@border-color-success: @color-green-100; @border-color-warning: #fbb03b; -@border-color-negative: #e65251; +@border-color-negative: @color-red-100; @border-color-light-negative: #f4cbcb; -@border-color-normal-success: #647185; +@border-color-normal-success: @color-light-gray; //split color @border-color-disabled: #e8eaed; -@border-color-disabled-theme-dark: #363e55; +@border-color-disabled-theme-dark: @color-sliver-theme-dark; //scroll color -@scroll-color: #232e40; -@scroll-color-theme-dark: #ffffff; -@scroll-thumb-color: #232e40; -@scroll-thumb-color-theme-dark: #232e40; +@scroll-color: @color-black; +@scroll-color-theme-dark: @color-white; +@scroll-thumb-color: @color-black; +@scroll-thumb-color-theme-dark: @color-black; diff --git a/src/less/lib/font.less b/src/less/lib/font.less index 3e545b4c4..d4760ec0e 100644 --- a/src/less/lib/font.less +++ b/src/less/lib/font.less @@ -1,57 +1,57 @@ //字体库 -@font-cross: "e6d0"; +@font-cross: "e1ab"; -@font-circle-close: "e6d5"; +@font-circle-close: "e1a9"; -@font-search: "e6dc"; +@font-search: "e1c3"; -@font-date: "e733"; -@font-time: "e6b1"; -@font-change: "e72f"; +@font-date: "e1d3"; +@font-time: "e1ae"; +@font-change: "e1cd"; -@font-dot: "e762"; +@font-dot: "e1aa"; -@font-plus: "e75b"; -@font-minus: "e75a"; +@font-plus: "e1a0"; +@font-minus: "e19e"; -@font-right-triangle: "e70c"; +@font-right-triangle: "e1bd"; -@font-copy: "e6bd"; -@font-check-mark: "e6cf"; +@font-copy: "e1ad"; +@font-check-mark: "e1b0"; -@font-arrow-left: "e70d"; -@font-arrow-right: "e70c"; +@font-arrow-left: "e1bc"; +@font-arrow-right: "e1bd"; -@font-up-triangle: "e70a"; -@font-down-triangle: "e70b"; +@font-up-triangle: "e1c6"; +@font-down-triangle: "e1c9"; -@font-solid-left: "e6d9"; -@font-solid-right: "e6d8"; -@font-solid-top: "e6d6"; -@font-solid-bottom: "e6d7"; +@font-solid-left: "e1c4"; +@font-solid-right: "e1a5"; +@font-solid-top: "e1ac"; +@font-solid-bottom: "e1a4"; -@font-trigger-triangle: "e64e"; +@font-trigger-triangle: "e1d5"; -@font-less: "e75e"; -@font-less-equal: "e761"; +@font-less: "e1d1"; +@font-less-equal: "e1d2"; -@font-bold: "e697"; -@font-italic: "e69d"; -@font-underline: "e69c"; -@font-color: "e698"; -@font-background: "e699"; -@font-color-underline: "e69a"; -@font-align-left: "e6ca"; -@font-align-center: "e6bf"; -@font-align-right: "e6c8"; +@font-bold: "e19b"; +@font-italic: "e199"; +@font-underline: "e1d6"; +@font-color: "e198"; +@font-background: "e19a"; +@font-color-underline: "e19c"; +@font-align-left: "e1a7"; +@font-align-center: "e1a2"; +@font-align-right: "e1af"; -@font-tip-error: "e757"; -@font-tip-success: "e756"; -@font-tip-warning: "e755"; -@font-tip-message: "e74b"; +@font-tip-error: "e1da"; +@font-tip-success: "e1db"; +@font-tip-warning: "e1d7"; +@font-tip-message: "e1d9"; -@font-key: "e740"; +@font-key: "e1d0"; -@font-add: "e6dd"; +@font-add: "e1c7"; diff --git a/src/less/lib/icon.less b/src/less/lib/icon.less index 5c62fc736..dc228abce 100644 --- a/src/less/lib/icon.less +++ b/src/less/lib/icon.less @@ -41,6 +41,36 @@ @icon-tree-vertical-line-3-theme-dark: "icon/dark/tree_vertical_line_3.png"; @icon-tree-vertical-line-4-theme-dark: "icon/dark/tree_vertical_line_4.png"; +@icon-tree-solid-expand-type1: "icon/tree_solid_expand_1.png"; +@icon-tree-solid-expand-type2: "icon/tree_solid_expand_2.png"; +@icon-tree-solid-expand-type3: "icon/tree_solid_expand_3.png"; +@icon-tree-solid-expand-type4: "icon/tree_solid_expand_4.png"; + +@icon-tree-solid-collapse-type1: "icon/tree_solid_collapse_1.png"; +@icon-tree-solid-collapse-type2: "icon/tree_solid_collapse_2.png"; +@icon-tree-solid-collapse-type3: "icon/tree_solid_collapse_3.png"; +@icon-tree-solid-collapse-type4: "icon/tree_solid_collapse_4.png"; + +@icon-tree-solid-vertical-line-1: "icon/tree_solid_vertical_line_1.png"; +@icon-tree-solid-vertical-line-2: "icon/tree_solid_vertical_line_2.png"; +@icon-tree-solid-vertical-line-3: "icon/tree_solid_vertical_line_3.png"; +@icon-tree-solid-vertical-line-4: "icon/tree_solid_vertical_line_4.png"; + +@icon-tree-solid-expand-type1-theme-dark: "icon/dark/tree_solid_expand_1.png"; +@icon-tree-solid-expand-type2-theme-dark: "icon/dark/tree_solid_expand_2.png"; +@icon-tree-solid-expand-type3-theme-dark: "icon/dark/tree_solid_expand_3.png"; +@icon-tree-solid-expand-type4-theme-dark: "icon/dark/tree_solid_expand_4.png"; + +@icon-tree-solid-collapse-type1-theme-dark: "icon/dark/tree_solid_collapse_1.png"; +@icon-tree-solid-collapse-type2-theme-dark: "icon/dark/tree_solid_collapse_2.png"; +@icon-tree-solid-collapse-type3-theme-dark: "icon/dark/tree_solid_collapse_3.png"; +@icon-tree-solid-collapse-type4-theme-dark: "icon/dark/tree_solid_collapse_4.png"; + +@icon-tree-solid-vertical-line-1-theme-dark: "icon/dark/tree_solid_vertical_line_1.png"; +@icon-tree-solid-vertical-line-2-theme-dark: "icon/dark/tree_solid_vertical_line_2.png"; +@icon-tree-solid-vertical-line-3-theme-dark: "icon/dark/tree_solid_vertical_line_3.png"; +@icon-tree-solid-vertical-line-4-theme-dark: "icon/dark/tree_solid_vertical_line_4.png"; + @icon-loading: "icon/loading.gif"; @icon-wave-loading: "icon/wave_loading.gif"; diff --git a/src/less/lib/theme.less b/src/less/lib/theme.less index 412fef77a..d83ef3789 100644 --- a/src/less/lib/theme.less +++ b/src/less/lib/theme.less @@ -14,6 +14,9 @@ //按钮的mask颜色 @color-bi-background-button-mask: @color-bi-background-black; +@color-bi-background-hover-button-mask: @color-bi-background-default; +@color-bi-background-ignore-button-mask: @color-bi-background-highlight; +@color-bi-background-hover-ignore-button-mask: @color-blue-10; //水印字体颜色 @color-bi-text-water-mark: @color-bi-text-tips; @@ -24,6 +27,11 @@ @color-bi-background-toast-warning: @color-bi-background-warning; @color-bi-background-toast-error: @color-bi-background-failure; @color-bi-background-toast-normal: @color-bi-background-highlight; +@color-bi-color-toast-success: @color-bi-text; +@color-bi-color-toast-warning: @color-bi-text; +@color-bi-color-toast-error: @color-bi-text; +@color-bi-color-toast-normal: @color-bi-text; +@color-bi-color-toast-text: @color-bi-text; //bubble @color-bi-background-bubble-success: @color-bi-background-light-success; @@ -50,3 +58,174 @@ @color-bi-text-card: @color-bi-text-normal; @color-bi-text-card-theme-dark: @color-bi-text-theme-dark; +// 控件 +// 按钮 +@color-bi-border-button: @color-bi-border-highlight; +@color-bi-background-button: @color-bi-background-highlight; +@color-bi-text-common-button: @color-bi-text; +@color-bi-text-common-clear-button: @color-bi-text-highlight; +@color-bi-text-common-ghost-button: @color-bi-text-highlight; +@color-bi-text-common-ghost-button-theme-dark: @color-bi-text; +@color-bi-text-disabled-common-ghost-button-theme-dark: @color-bi-text; +@color-bi-border-disabled-common-ghost-button-theme-dark: @color-bi-border-default; +@color-bi-border-common-ghost-button-theme-dark: @color-bi-border-default; +@color-bi-background-hover-common-ghost-button: @color-bi-background-highlight; +@color-bi-text-hover-common-ghost-button-theme-dark: @color-bi-text-normal; +@color-bi-background-hover-common-ghost-button-theme-dark: @color-bi-background-default; +@color-bi-background-active-common-ghost-button: @color-bi-background-highlight; +@color-bi-background-active-common-ghost-button-theme-dark: @color-bi-background-default; +@color-bi-text-ignore-button: @color-bi-text-highlight; +@color-bi-border-ignore-button: @color-bi-border-highlight; +@color-bi-background-ignore-button: @color-bi-background-default; +@color-bi-background-ignore-button-theme-dark: @color-bi-background-default-theme-dark; +@color-bi-background-hover-ignore-button-theme-dark: @color-blue-10; +@color-bi-background-active-ignore-button-theme-dark: @color-blue-10; +@color-bi-text-success-button: @color-bi-text; +@color-bi-background-success-button: @color-bi-background-success; +@color-bi-border-success-button: @color-bi-border-success; +@color-bi-text-success-clear-button: @color-bi-text-success; +@color-bi-text-success-ghost-button: @color-bi-text-success; +@color-bi-text-warning-button: @color-bi-text; +@color-bi-background-warning-button: @color-bi-background-warning; +@color-bi-border-warning-button: @color-bi-border-warning; +@color-bi-text-warning-clear-button: @color-bi-text-redmark; +@color-bi-text-warning-ghost-button: @color-bi-text-redmark; +@color-bi-text-error-button: @color-bi-text; +@color-bi-background-error-button: @color-bi-background-failure; +@color-bi-border-error-button: @color-bi-border-failure; +@color-bi-text-error-clear-button: @color-bi-text-failure; +@color-bi-text-error-ghost-button: @color-bi-text-failure; +@color-bi-text-disabled-button: @color-bi-text-disabled; +@color-bi-background-disabled-button: @color-bi-background-light-disabled; +@color-bi-border-disabled-button: @color-bi-border-disabled; +@color-bi-text-disabled-ignore-button: @color-bi-text-disabled; +@color-bi-background-disabled-ignore-button: @color-bi-background-default; +@color-bi-border-disabled-ignore-button: @color-bi-border-line; +@color-bi-text-disabled-ignore-clear-button: @color-bi-text-disabled; +@color-bi-text-disabled-common-ghost-button: @color-bi-text-highlight; +@color-bi-border-disabled-common-ghost-button: @color-bi-border-highlight; +@color-bi-text-disabled-success-ghost-button: @color-bi-text-success; +@color-bi-border-disabled-success-ghost-button: @color-bi-border-success; +@color-bi-text-disabled-warning-ghost-button: @color-bi-text-redmark; +@color-bi-border-disabled-warning-ghost-button: @color-bi-border-warning; +@color-bi-text-disabled-error-ghost-button: @color-bi-text-failure; +@color-bi-border-disabled-error-ghost-button: @color-bi-border-failure; +@color-bi-background-disabled-button-theme-dark: @color-bi-background-light-disabled-theme-dark; + +// 单选按钮 +@color-bi-border-radio: @color-bi-border-dark-line; +@color-bi-border-radio-theme-dark: @color-bi-border-dark-line-theme-dark; +@color-bi-border-disabled-radio: @color-bi-border-disabled; +@color-bi-border-disabled-radio-theme-dark: @color-bi-border-disabled-theme-dark; +@color-bi-border-hover-active-radio: @color-bi-border-highlight; +@color-bi-border-hover-active-radio-theme-dark: @color-bi-border-highlight; +@color-bi-background-active-radio-content-theme-dark: @color-bi-background-default; +@color-bi-background-disabled-active-radio-content-theme-dark: @color-transparent; +@color-bi-background-radio: @color-bi-background-default; +@color-bi-background-active-radio: @color-bi-background-highlight; +@color-bi-background-active-radio-content: @color-bi-background-default; +@color-bi-background-disabled-active-radio-content: @color-bi-background-default; +@color-bi-background-disabled-radio: @color-bi-background-disabled; +@color-bi-background-disabled-radio-theme-dark: @color-bi-background-disabled-theme-dark; +@color-bi-background-disabled-active-radio: @color-bi-background-dark-gray; +@color-bi-background-disabled-active-radio-theme-dark: @color-bi-background-dark-gray-theme-dark; +// 复选按钮 +@color-bi-border-checkbox: @color-bi-border-dark-line; +@color-bi-border-checkbox-theme-dark: @color-bi-border-dark-line-theme-dark; +@color-bi-border-disabled-checkbox: @color-bi-border-disabled; +@color-bi-border-disabled-checkbox-theme-dark: @color-bi-border-disabled-theme-dark; +@color-bi-border-hover-active-checkbox: @color-bi-border-highlight; +@color-bi-border-hover-active-checkbox-theme-dark: @color-bi-border-highlight; +@color-bi-background-disabled-checkbox: @color-bi-background-disabled; +@color-bi-background-disabled-checkbox-theme-dark: @color-bi-background-disabled-theme-dark; +@color-bi-background-disabled-active-checkbox: @color-bi-background-dark-gray; +@color-bi-background-disabled-active-checkbox-theme-dark: @color-bi-background-dark-gray-theme-dark; +@color-bi-background-active-checkbox: @color-bi-background-highlight; +@color-bi-background-active-checkbox-theme-dark: @color-bi-background-highlight; +@color-bi-background-active-checkbox-content: @color-bi-background-default; +@color-bi-background-disabled-active-checkbox-content: @color-bi-background-default; +@color-bi-background-active-checkbox-content-theme-dark: @color-bi-background-default; +@color-bi-background-disabled-active-checkbox-content-theme-dark: @color-transparent; +// 开关 +@color-bi-background-switch: @color-bi-background-dark-gray; +@color-bi-background-switch-theme-dark: @color-bi-background-dark-gray-theme-dark; +@color-bi-background-active-switch: @color-bi-background-highlight; +@color-bi-background-active-switch-content: @color-bi-background-default; +@color-bi-font-switch-tip: @color-white; +@color-bi-background-active-switch-theme-dark: @color-bi-background-highlight; +@color-bi-background-disabled-switch: @color-bi-background-disabled; +@color-bi-background-disabled-switch-theme-dark: @color-bi-background-disabled-theme-dark; +// 滑块 +@color-bi-background-slider-button: @color-bi-background-default; +@color-bi-background-hover-slider-button: @color-bi-background-normal; +@color-bi-border-disabled-slider-button: @color-bi-border-disabled; +@color-bi-background-hover-disabled-slider-button: @color-bi-background-normal; +@color-bi-background-slider-button-theme-dark: @color-bi-background-default-theme-dark; +@color-bi-background-hover-slider-button-theme-dark: @color-bi-background-normal-theme-dark; +@color-bi-background-hover-disabled-slider-button-theme-dark: @color-bi-background-normal-theme-dark; +@color-bi-background-slider-gray-track: @color-bi-background-light-black; +@color-bi-background-slider-gray-track-theme-dark: @color-bi-background-light-black-theme-dark; +@color-bi-background-disabled-slider-blue-track: @color-bi-background-dark-gray; +@color-bi-background-disabled-slider-blue-track-theme-dark: @color-bi-background-dark-gray-theme-dark; +// 颜色选择器 +@color-bi-border-picker-button-mask: @color-bi-border-black; +@color-bi-border-picker-button-mask-theme-dark: @color-bi-border-default; +@color-bi-border-active-chooser-show-button: @color-bi-border-highlight; +@color-bi-background-disabled-chooser-popup-mask: @color-bi-background-default; +// combo +@color-bi-border-hover-combo: @color-bi-border-highlight; +@color-bi-border-hover-disabled-combo: @color-bi-border-line; +@color-bi-border-hover-disabled-combo-theme-dark: @color-bi-border-line-theme-dark; +@color-bi-border-hover-text-value-down-list-combo: @color-bi-border-highlight; +@color-bi-border-hover-text-value-check-combo: @color-bi-border-highlight; +@color-bi-text-error-hover-text-value-combo: @color-bi-text-failure; +@color-bi-text-error-hover-text-value-icon-combo: @color-bi-text-failure; +@color-bi-text-error-hover-search-text-value-combo: @color-bi-text-failure; +@color-bi-background-bubble-combo-triangle: @color-bi-background-default; +@color-bi-background-bubble-combo-triangle-theme-dark: @color-bi-background-default-theme-dark; +@color-bi-border-bubble-combo-triangle-theme-dark: @border-color-light-line-theme-dark; +// 排序列表 +@color-bi-border-sortable-holder: @color-bi-border-line; +// 分页 +@color-bi-text-all-count-pager-row-count: @color-bi-text-highlight; +// segment +@color-bi-text-segment-button: @color-bi-text-highlight; +@color-bi-split-segment: @color-bi-border-highlight; +@color-bi-split-segment-theme-dark: @color-bi-border-line-theme-dark; +@color-bi-split-disabled-segment: @color-bi-border-disabled; +// 半选 +@color-bi-background-half-button-content: @color-bi-background-highlight; +// items +@color-bi-text-active-single-select-icon-text-item: @color-bi-text-highlight; +// editor +@color-bi-color-error-input-text-area: @color-bi-text-failure; +// tree +@color-bi-text-display-tree: @color-bi-text-gray; +@color-bi-border-tree-expander-popup-line: @color-bi-border-dark-gray-line; +@color-bi-border-tree-expander-popup-line-theme-dark: @color-bi-border-dark-gray-line-theme-dark; +// popup +@color-bi-background-list-view-shadow: @color-bi-background-black; +@color-bi-border-list-view-toolbar: @color-bi-border-line; +// pane +@color-bi-background-pane-loading: @color-bi-background-normal; +@color-bi-background-pane-animate-rect: @background-color-highlight; +// interactive arrangement +@color-bi-background-interactive-arrangement-dragtag-line: @color-bi-text-redmark; +// 复选下拉 +@color-bi-text-multi-select-search-pane-toolbar: @color-bi-text-redmark; +@color-bi-text-error-multi-select-trigger: @color-bi-text-failure; +@color-bi-background-multi-select-trigger-check-selected: @color-blue-10; +// 复选树 +@color-bi-text-multi-tree-check-pane-check-button: @color-bi-text-highlight; +// 单选下拉 +@color-bi-text-single-select-search-pane-toolbar: @color-bi-text-redmark; +// 时间控件 +@color-bi-text-error-date-interval: @color-bi-text-failure; +@color-bi-text-error-time-interval: @color-bi-text-failure; +@color-bi-border-year-popup: @color-bi-border-line; +@color-bi-border-year-popup-theme-dark: @color-bi-border-line-theme-dark; +@color-bi-text-error-year-interval: @color-bi-text-failure; +@color-bi-text-error-year-month-interval: @color-bi-text-failure; +@color-bi-text-error-year-quarter-interval: @color-bi-text-failure; +// 表单 +@color-bi-background-error-form: @color-red-5; diff --git a/src/less/modern.less b/src/less/modern.less deleted file mode 100644 index b439a8920..000000000 --- a/src/less/modern.less +++ /dev/null @@ -1,465 +0,0 @@ -//core -@import "core/normalize.less"; -@import "core/normalize2.less"; -@import "core/utils/animation.less"; -@import "core/utils/common.less"; -@import "core/utils/cursor.less"; -@import "core/utils/list-item.less"; -@import "core/utils/position.less"; -@import "core/utils/size.less"; -@import "core/utils/sizing.less"; -@import "core/utils/typographic.less"; -@import "core/wrapper/flex.horizontal.less"; -@import "core/wrapper/flex.vertical.less"; -@import "core/wrapper/flex.wrapper.horizontal.less"; -@import "core/wrapper/flex.wrapper.vertical.less"; -@import "core/wrapper/float.absolute.less"; -@import "core/wrapper/inline.less"; - -//base case -@import "base/pane.less"; -@import "base/calendar/calendar.year.less"; -@import "base/colorchooser/colorchooser.trigger.less"; -@import "base/colorchooser/colorchooser.popup.less"; -@import "base/colorchooser/colorpicker/button.colorpicker.less"; -@import "base/colorchooser/colorpicker/button.colorshow.less"; -@import "base/colorchooser/colorpicker/editor.colorpicker.less"; -@import "base/colorchooser/farbtastic/farbtastic.less"; -@import "base/combo/combo.bubble.less"; -@import "base/combo/combo.less"; -@import "base/combo/combo.searchtextvalue.less"; -@import "base/combo/combo.textvalue.icon.less"; -@import "base/combo/combo.textvalue.less"; -@import "base/combo/combo.textvaluecheck.less"; -@import "base/combo/combo.textvaluedownlist.less"; -@import "base/combo/popup.bubble.bar.less"; -@import "base/combo/popup.bubble.less"; -@import "base/editor/editor.search.less"; -@import "base/editor/editor.search.small.less"; -@import "base/foundation/bi.message.less"; -@import "base/layer/layer.multiselect.less"; -@import "base/layer/panel.less"; -@import "base/loader/sort.list.less"; -@import "base/pager/pager.all.count.less"; -@import "base/pager/pager.direction.less"; -@import "base/pager/pager.less"; -@import "base/segment/button.segment.less"; -@import "base/segment/segment.less"; -@import "base/single/html.less"; -@import "base/single/icon.less"; -@import "base/single/label.less"; -@import "base/single/text.less"; -@import "base/single/button/button.half.less"; -@import "base/single/button/button.less"; -@import "base/single/button/item.singleselect.icontext.less"; -@import "base/single/button/switch.less"; -@import "base/single/editor/editor.multifile.less"; -@import "base/single/editor/editor.textarea.less"; -@import "base/single/input/checkbox.less"; -@import "base/single/input/file.less"; -@import "base/single/input/input.less"; -@import "base/single/input/radio.less"; -@import "base/single/tip/tip.bubble.less"; -@import "base/single/tip/tip.less"; -@import "base/single/tip/tip.toast.less"; -@import "base/single/tip/tip.tooltip.less"; -@import "base/tree/tree.branch.less"; -@import "base/tree/tree.display.less"; -@import "base/tree/tree.expander.less"; -@import "base/tree/tree.list.display.less"; -@import "base/tree/ztree.less"; -@import "base/trigger/trigger.less"; -@import "base/trigger/trigger.selecttext.less"; -@import "base/trigger/trigger.selecttextsmall.less"; -@import "base/view/popover.less"; -@import "base/view/popupview.less"; - -//widget -@import "widget/date/trigger.date.less"; -@import "widget/downlist/popup.downlist.less"; -@import "widget/dynamicdatecombo/dynamicdatepopup.less"; -@import "widget/dynamicdatecombo/dynamicdatetime.combo.less"; -@import "widget/dynamicdatecombo/dynamicdatetimepopup.less"; -@import "widget/interactivearrangement/interactivearrangement.less"; -@import "widget/intervalslider/intervalslider.label.less"; -@import "widget/intervalslider/intervalslider.less"; -@import "widget/month/trigger.month.less"; -@import "widget/multilayerselecttree/multilayerselecttree.combo.less"; -@import "widget/multilayerselecttree/multilayerselecttree.leveltree.less"; -@import "widget/multilayersingletree/multilayersingletree.combo.less"; -@import "widget/multilayersingletree/multilayersingletree.leveltree.less"; -@import "widget/multiselect/multiselect.combo.less"; -@import "widget/multiselect/multiselect.insert.combo.less"; -@import "widget/multiselect/check/multiselect.check.pane.less"; -@import "widget/multiselect/search/multiselect.search.pane.less"; -@import "widget/multiselect/trigger/button.checkselected.less"; -@import "widget/multistringlist/multistringlist.insert.less"; -@import "widget/multistringlist/multistringlist.less"; -@import "widget/multitree/multi.tree.combo.less"; -@import "widget/multitree/popup.multi.tree.less"; -@import "widget/multitree/check/multi.tree.check.pane.less"; -@import "widget/multitree/trigger/multi.tree.button.checkselected.less"; -@import "widget/numbereditor/number.editor.less"; -@import "widget/numberinterval/numberinterval.less"; -@import "widget/quarter/trigger.quarter.less"; -@import "widget/searchmultiselect/searchmultiselect.less"; -@import "widget/singleselect/singleselect.combo.less"; -@import "widget/singleselect/search/singleselect.search.pane.less"; -@import "widget/singleslider/singlelider.label.less"; -@import "widget/singleslider/singlelider.normal.less"; -@import "widget/singleslider/singleslider.less"; -@import "widget/singleslider/slider/widget.slider.less"; -@import "widget/singleslider/track/widget.track.less"; -@import "widget/timecombo/timecombo.less"; -@import "widget/timeinterval/dateinterval.less"; -@import "widget/timeinterval/timeinterval.less"; -@import "widget/year/popup.year.less"; -@import "widget/year/trigger.year.less"; -@import "widget/yearinterval/yearinterval.less"; -@import "widget/yearmonth/popup.yearmonth.less"; -@import "widget/yearmonthinterval/yearmonthinterval.less"; -@import "widget/yearquarter/popup.yearquarter.less"; -@import "widget/yearquarterinterval/yearquarterinterval.less"; - -@import "lib/colors-modern"; -@import "lib/theme-modern"; - -:root{ - --font-size-12: 12px; - --font-size-13: 13px; - --font-size-14: 14px; - --font-size-15: 15px; - --font-size-16: 16px; - --font-size-18: 18px; - --font-size-20: 20px; - --font-size-22: 22px; - --font-size-24: 24px; - --font-size-30: 30px; - --font-size-40: 40px; - --font-size-50: 50px; - --font-size-60: 60px; - --font-size-70: 70px; - --radius-2: 2px; - --radius-6: 6px; - - --opacity-15: 0.15; - --opacity-20: 0.2; - - //font color - --font-color-black: #232e40; - --font-color-normal: #3d4d66; - --font-color-normal-theme-dark: #d6e0dc; - --font-color-light-gray: #647185; - --font-color-light-gray-theme-dark: #afb7c6; - --font-color-disabled: #9ea6b2; - --font-color-disabled-theme-dark: #878d9f; - --font-color-tips: #9ea6b2; - --font-color-tips-theme-dark: #6b7084; - --font-color-light-disabled: #d0d4da; - --font-color-light-disabled-theme-dark: #606479; - --font-color-gray: #999999; - --font-color-white: #ffffff; - --font-color-white-theme-dark: #20263b; - --font-color-light-highlight: #eaf2fd; - --font-color-medium-highlight: #d7e7fc; - --font-color-highlight: #3685f2; - --font-color-blue: #23beef; - --font-color-light-blue: #e9f8fd; - --font-color-success: #13cd66; - --font-color-warning: #faaa39; - --font-color-negative: #e65251; - --font-color-yellow: #ffc101; - - //background color - --background-color-black: #232E40; - --background-color-black-theme-dark: #606479; - --background-color-light-black: #3d4d66; - --background-color-light-black-theme-dark: #d6e0dc; - --background-color-default: #ffffff; - --background-color-default-theme-dark: #20263b; - --background-color-normal: #f7f8fa; - --background-color-normal-theme-dark: #191b2b; - --background-color-light-highlight: #eaf2fd; - --background-color-medium-highlight: #d7e7fc; - --background-color-highlight: #3685f2; - --background-color-blue: #23beef; - --background-color-light-blue: #e9f8fd; - --background-color-dark: #d4dadd; - --background-color-light-gray: #f2f4f7; - --background-color-light-gray-theme-dark: #292f45; - --background-color-medium-gray: #e8eaed; - --background-color-medium-gray-theme-dark: #363e55; - --background-color-dark-gray: #d0d4da; - --background-color-dark-gray-theme-dark: #606479; - --background-color-disabled: #f2f4f7; - --background-color-disabled-theme-dark: #292f45; - --background-color-light-disabled: #9ea6b2; - --background-color-light-disabled-theme-dark: #878d9f; - --background-color-yellow: #ffc101; - - --background-color-negative: #e65251; - --background-color-light-negative: #ffecec; - --background-color-dark-negative: #3A2940; - --background-color-light-warning: #feeed7; - --background-color-warning: #faaa39; - - --background-color-dark-success: #13cd66; - --background-color-light-success: #e1f4e7; - --background-color-normal-success: #647185; - - //border color - --border-color-default: #ffffff; - --border-color-black: #232e40; - --border-color-line: #e8eaed; - --border-color-line-theme-dark: #363e55; - --border-color-light-line: #f2f4f7; - --border-color-light-line-theme-dark: #292f45; - --border-color-dark-gray-line: #d0d4da; - --border-color-dark-gray-line-theme-dark: #606479; - --border-color-dark-line: #9ea6b2; - --border-color-dark-line-theme-dark: #878d9f; - --border-color-highlight: #3685f2; - - --border-color-warning: #fbb03b; - --border-color-negative: #e65251; - --border-color-success: #13cd66; - --border-color-light-negative: #f4cbcb; - --border-color-normal-success: #647185; - - //split color - --border-color-disabled: #e8eaed; - --border-color-disabled-theme-dark: #363e55; - - //scroll color - --scroll-color: #232e40; - --scroll-color-theme-dark: #ffffff; - --scroll-thumb-color: #232e40; - --scroll-thumb-color-theme-dark: #232e40; - - //默认字体颜色 - --color-bi-text-normal: var(--font-color-normal); - //深色主题默认字体颜色 - --color-bi-text-theme-dark: var(--font-color-normal-theme-dark); - --color-bi-text-normal-theme-dark: var(--font-color-normal-theme-dark); - //黑色字体颜色 - --color-bi-text-black: var(--font-color-black); - //深色主题黑色字体颜色 - --color-bi-text-black-theme-dark: var(--font-color-normal-theme-dark); - //灰色字体颜色 - --color-bi-text-gray: var(--font-color-gray); - //浅灰色字体 - --color-bi-text-light-gray: var(--font-color-light-gray); - //深色主题浅灰色字体 - --color-bi-text-light-gray-theme-dark: var(--font-color-light-gray-theme-dark); - //白色字体颜色 - --color-bi-text: var(--font-color-white); - --color-bi-text-white: var(--font-color-white); - //深色主题白色字体颜色 - --color-bi-text-white-theme-dark: var(--font-color-white-theme-dark); - //灰化字体颜色 - --color-bi-text-disabled: var(--font-color-disabled); - //深色主题灰化字体颜色 - --color-bi-text-disabled-theme-dark: var(--font-color-disabled-theme-dark); - //灰化图标色 - --color-bi-icon-disabled: var(--font-color-light-disabled); - //深色主题灰化图标颜色 - --color-bi-icon-disabled-theme-dark: var(--font-color-light-disabled-theme-dark); - //提示字体颜色 - --color-bi-text-tips: var(--font-color-tips); - //深色主题提示字体颜色 - --color-bi-text-tips-theme-dark: var(--font-color-tips-theme-dark); - //成功字体颜色 - --color-bi-text-success: var(--font-color-success); - //失败字体颜色 - --color-bi-text-failure: var(--font-color-negative); - //基本提亮颜色 - --color-bi-text-highlight: var(--font-color-highlight); - //标红色 - --color-bi-text-redmark: var(--font-color-warning); - - //普通背景 - --color-bi-background-normal: var(--background-color-normal); - //深色主题普通背景 - --color-bi-background-normal-theme-dark: var(--background-color-normal-theme-dark); - //默认背景 - --color-bi-background-default: var(--background-color-default); - //深色主题默认背景 - --color-bi-background-default-theme-dark: var(--background-color-default-theme-dark); - //黑色背景 - --color-bi-background-black: var(--background-color-black); - //深色主题黑色背景 - --color-bi-background-black-theme-dark: var(--background-color-black-theme-dark); - //浅黑色背景 - --color-bi-background-light-black: var(--background-color-light-black); - //深色主题浅黑色背景 - --color-bi-background-light-black-theme-dark: var(--background-color-light-black-theme-dark); - //深灰色背景 - --color-bi-background-dark-gray: var(--background-color-dark-gray); - //深色主题深灰色背景 - --color-bi-background-dark-gray-theme-dark: var(--background-color-dark-gray-theme-dark); - //灰色背景(浅) - --color-bi-background-light-gray: var(--background-color-light-gray); - //深色主题灰色背景(浅) - --color-bi-background-light-gray-theme-dark: var(--background-color-light-gray-theme-dark); - //灰色背景(中) - --color-bi-background-medium-gray: var(--background-color-medium-gray); - //深色主题灰色背景(中) - --color-bi-background-medium-gray-theme-dark: var(--background-color-medium-gray-theme-dark); - //灰化背景 - --color-bi-background-disabled: var(--background-color-disabled); - //深色主题灰化背景 - --color-bi-background-disabled-theme-dark: var(--background-color-disabled-theme-dark); - //浅灰化背景 - --color-bi-background-light-disabled: var(--background-color-light-disabled); - //深色主题浅灰化背景 - --color-bi-background-light-disabled-theme-dark: var(--background-color-light-disabled-theme-dark); - //成功背景色 - --color-bi-background-success: var(--background-color-dark-success); - //成功背景色(浅) - --color-bi-background-light-success: var(--background-color-light-success); - //失败背景色 - --color-bi-background-failure: var(--background-color-negative); - //失败背景色(浅) - --color-bi-background-light-failure: var(--background-color-light-negative); - //失败背景色(深) - --color-bi-background-dark-failure: var(--background-color-dark-negative); - //警示背景色 - --color-bi-background-warning: var(--background-color-warning); - //警示背景色(浅) - --color-bi-background-light-warning: var(--background-color-light-warning); - //背景提亮色 - --color-bi-background-highlight: var(--background-color-highlight); - //背景提亮色(浅) - --color-bi-background-light-highlight: var(--background-color-light-highlight); - - //黑色边框色 - --color-bi-border-black: var(--border-color-black); - //默认边框色 - --color-bi-border-default: var(--border-color-default); - //边框线色 - --color-bi-border-line: var(--border-color-line); - //深色主题边框线色 - --color-bi-border-line-theme-dark: var(--border-color-line-theme-dark); - //深灰色边框线 - --color-bi-border-dark-gray-line: var(--border-color-dark-gray-line); - //深灰色主题深色边框线 - --color-bi-border-dark-gray-line-theme-dark: var(--border-color-dark-gray-line-theme-dark); - //深色边框线 - --color-bi-border-dark-line: var(--border-color-dark-line); - //深色主题深色边框线 - --color-bi-border-dark-line-theme-dark: var(--border-color-dark-line-theme-dark); - //灰化边框 - --color-bi-border-disabled: var(--border-color-disabled); - //深色主题灰化边框 - --color-bi-border-disabled-theme-dark: var(--border-color-disabled-theme-dark); - //成功边框色 - --color-bi-border-success: var(--border-color-success); - //失败边框色 - --color-bi-border-failure: var(--border-color-negative); - //警示边框色 - --color-bi-border-warning: var(--border-color-warning); - //边框提亮 - --color-bi-border-highlight: var(--border-color-highlight); - - //颜色百分比 - //green - --color-bi-green-80: fade(@font-color-success, 80); - --color-bi-green-60: fade(@font-color-success, 60); - --color-bi-green-40: fade(@font-color-success, 40); - --color-bi-green-30: fade(@font-color-success, 30); - --color-bi-green-20: fade(@font-color-success, 20); - --color-bi-green-10: fade(@font-color-success, 10); - --color-bi-green-5: fade(@font-color-success, 5); - - //blue - --color-bi-blue-80: fade(@font-color-highlight, 80); - --color-bi-blue-60: fade(@font-color-highlight, 60); - --color-bi-blue-40: fade(@font-color-highlight, 40); - --color-bi-blue-30: fade(@font-color-highlight, 30); - --color-bi-blue-20: fade(@font-color-highlight, 20); - --color-bi-blue-10: fade(@font-color-highlight, 10); - --color-bi-blue-5: fade(@font-color-highlight, 5); - - //light-blue - --color-bi-light-blue-80: fade(@font-color-light-highlight, 80); - --color-bi-light-blue-60: fade(@font-color-light-highlight, 60); - --color-bi-light-blue-40: fade(@font-color-light-highlight, 40); - --color-bi-light-blue-30: fade(@font-color-light-highlight, 30); - --color-bi-light-blue-20: fade(@font-color-light-highlight, 20); - --color-bi-light-blue-10: fade(@font-color-light-highlight, 10); - --color-bi-light-blue-5: fade(@font-color-light-highlight, 5); - - // orange - --color-bi-orange-80: fade(@font-color-warning, 80); - --color-bi-orange-60: fade(@font-color-warning, 60); - --color-bi-orange-40: fade(@font-color-warning, 40); - --color-bi-orange-30: fade(@font-color-warning, 30); - --color-bi-orange-20: fade(@font-color-warning, 20); - --color-bi-orange-10: fade(@font-color-warning, 10); - --color-bi-orange-5: fade(@font-color-warning, 5); - - // red - --color-bi-red-80: fade(@font-color-negative, 80); - --color-bi-red-60: fade(@font-color-negative, 60); - --color-bi-red-40: fade(@font-color-negative, 40); - --color-bi-red-30: fade(@font-color-negative, 30); - --color-bi-red-20: fade(@font-color-negative, 20); - --color-bi-red-10: fade(@font-color-negative, 10); - --color-bi-red-5: fade(@font-color-negative, 5); - - // yellow - --color-bi-yellow-80: fade(@font-color-yellow, 90); - --color-bi-yellow-60: fade(@font-color-yellow, 60); - --color-bi-yellow-40: fade(@font-color-yellow, 40); - --color-bi-yellow-20: fade(@font-color-yellow, 20); - --color-bi-yellow-5: fade(@font-color-yellow, 5); - - - //tooltip - //成功背景(专属配色) - --color-bi-background-tooltip-success: var(--background-color-normal-success); - //成功边框(专属配色) - --color-bi-border-tooltip-success: var(--border-color-normal-success); - //失败背景 - --color-bi-background-tooltip-failure: var(--color-bi-background-failure); - //失败边框 - --color-bi-border-tooltip-failure: var(--color-bi-border-failure); - - //按钮的mask颜色 - --color-bi-background-button-mask: var(--color-bi-background-black); - - //水印字体颜色 - --color-bi-text-water-mark: var(--color-bi-text-tips); - --color-bi-text-water-mark-theme-dark: var(--color-bi-text-tips-theme-dark); - - //toast - --color-bi-background-toast-success: var(--color-bi-background-success); - --color-bi-background-toast-warning: var(--color-bi-background-warning); - --color-bi-background-toast-error: var(--color-bi-background-failure); - --color-bi-background-toast-normal: var(--color-bi-background-highlight); - - //bubble - --color-bi-background-bubble-success: var(--color-bi-background-light-success); - --color-bi-background-bubble-warning: var(--color-bi-background-light-warning); - --color-bi-background-bubble-error: var(--color-bi-background-light-failure); - --color-bi-background-bubble-error-theme-dark: var(--color-bi-background-dark-failure); - --color-bi-background-bubble-normal: var(--color-bi-background-light-highlight); - - //bi-background背景 - --color-bi-background-background: var(--color-bi-background-normal); - --color-bi-background-background-theme-dark: var(--color-bi-background-normal-theme-dark); - --color-bi-text-background: var(--color-bi-text-normal); - --color-bi-text-background-theme-dark: var(--color-bi-text-theme-dark); - - //bi-header-background背景 - --color-bi-background-header-background: var(--color-bi-background-light-gray); - --color-bi-background-header-background-theme-dark: var(--color-bi-background-light-gray-theme-dark); - --color-bi-text-header-background: var(--color-bi-text-light-gray); - --color-bi-text-header-background-theme-dark: var(--color-bi-text-light-gray-theme-dark); - - //bi-card卡片 - --color-bi-background-card: var(--color-bi-background-default); - --color-bi-background-card-theme-dark: var(--color-bi-background-default-theme-dark); - --color-bi-text-card: var(--color-bi-text-normal); - --color-bi-text-card-theme-dark: var(--color-bi-text-theme-dark); -} diff --git a/src/less/motion.less b/src/less/motion.less new file mode 100644 index 000000000..d5e02987e --- /dev/null +++ b/src/less/motion.less @@ -0,0 +1,54 @@ +// Animation +@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); +@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); +@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); +@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); +@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); +@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); +@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); +@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); +@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); +@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); +@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86); +@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); +@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); +@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + +// Animation +@animation-duration-slow: 0.3s; // Modal +@animation-duration-base: 0.2s; +@animation-duration-fast: 0.1s; // Tooltip + +.motion-common(@duration: @animation-duration-base) { + animation-duration: @duration; + animation-fill-mode: both; +} + +.motion-common-leave(@duration: @animation-duration-base) { + animation-duration: @duration; + animation-fill-mode: both; +} + +.make-motion(@className, @keyframeName, @duration: @animation-duration-base) { + .@{className}-enter, + .@{className}-appear { + .motion-common(@duration); + + animation-play-state: paused; + } + .@{className}-leave { + .motion-common-leave(@duration); + + animation-play-state: paused; + } + .@{className}-enter.@{className}-enter-active, + .@{className}-appear.@{className}-appear-active { + animation-name: ~'@{keyframeName}In'; + animation-play-state: running; + } + .@{className}-leave.@{className}-leave-active { + animation-name: ~'@{keyframeName}Out'; + animation-play-state: running; + pointer-events: none; + } +} diff --git a/src/less/resource/background.less b/src/less/resource/background.less index 77225009a..4e1c6a51e 100644 --- a/src/less/resource/background.less +++ b/src/less/resource/background.less @@ -1,18 +1,7 @@ @import "../image"; @import "../lib/icon"; @import "../lib/background"; - -.bi-farbtastic .wheel { - .imagePath(@background-farbtastic-wheel); -} - -.bi-farbtastic .overlay { - .imagePath(@background-farbtastic-overlay); -} - -.bi-farbtastic .marker { - .imagePath(@background-farbtastic-marker); -} +@import "../base/tree/tree.expander.less"; .bi-display-tree { & .ztree li span.button.switch.center_open { @@ -26,47 +15,19 @@ & .ztree li span.button.switch.bottom_open { .image2xPath(@icon-tree-vertical-line-4); } - - & .ztree.hack li span.button.switch.center_open { - .imagePath(@icon-tree-vertical-line-3); - } - - & .ztree.hack li span.button.switch.roots_open { - .imagePath(@icon-tree-vertical-line-2); - } - - & .ztree.hack li span.button.switch.bottom_open { - .imagePath(@icon-tree-vertical-line-4); - } } -// 此处不用2倍图,改用css画虚线 -// z-tree的line是一整块子节点区域,所以不能使用background-size: contain -// 使用1倍图太模糊,这边就使用css自己画了,calc属性支持IE9, IE8反正会走hack, 不影响 -.ztree li ul.line { - position: relative; - &:before { - position: absolute; - content: ''; - border-left: 1px dashed #D0D4DA; - height: calc(~"100% - 3px"); - left: 11px; - margin-top: 1px; +.bi-display-tree { + & .ztree.solid li span.button.switch.center_open { + .image2xPath(@icon-tree-solid-vertical-line-3); } -} - -.ztree.hack li ul.line { - .imagePath(@icon-tree-vertical-line-1, 0, 1px, repeat-y); -} -.bi-theme-dark { - .ztree li ul.line { - &:before { - border-left: 1px dashed #606479; - } + & .ztree.solid li span.button.switch.roots_open { + .image2xPath(@icon-tree-solid-vertical-line-2); } - .ztree.hack li ul.line { - .imagePath(@icon-tree-vertical-line-1-theme-dark, 0, 1px, repeat-y); + + & .ztree.solid li span.button.switch.bottom_open { + .image2xPath(@icon-tree-solid-vertical-line-4); } } @@ -74,16 +35,16 @@ .image2xPath(@icon-tree-expand-type1); } -.ztree.hack li span.button.root_open { - .imagePath(@icon-tree-expand-type1); +.ztree.solid li span.button.root_open { + .image2xPath(@icon-tree-solid-expand-type1); } .bi-theme-dark { .ztree li span.button.root_open { .image2xPath(@icon-tree-expand-type1-theme-dark); } - .ztree.hack li span.button.root_open { - .imagePath(@icon-tree-expand-type1-theme-dark); + .ztree.solid li span.button.root_open { + .image2xPath(@icon-tree-solid-expand-type1-theme-dark); } } @@ -91,16 +52,16 @@ .image2xPath(@icon-tree-collapse-type1); } -.ztree.hack li span.button.root_close { - .imagePath(@icon-tree-collapse-type1); +.ztree.solid li span.button.root_close { + .image2xPath(@icon-tree-solid-collapse-type1); } .bi-theme-dark { .ztree li span.button.root_close { .image2xPath(@icon-tree-collapse-type1-theme-dark); } - .ztree.hack li span.button.root_close { - .imagePath(@icon-tree-collapse-type1-theme-dark); + .ztree.solid li span.button.root_close { + .image2xPath(@icon-tree-solid-collapse-type1-theme-dark); } } @@ -108,16 +69,16 @@ .image2xPath(@icon-tree-expand-type2); } -.ztree.hack li span.button.roots_open { - .imagePath(@icon-tree-expand-type2); +.ztree.solid li span.button.roots_open { + .image2xPath(@icon-tree-solid-expand-type2); } .bi-theme-dark { .ztree li span.button.roots_open { .image2xPath(@icon-tree-expand-type2-theme-dark); } - .ztree.hack li span.button.roots_open { - .imagePath(@icon-tree-expand-type2-theme-dark); + .ztree.solid li span.button.roots_open { + .image2xPath(@icon-tree-solid-expand-type2-theme-dark); } } @@ -125,16 +86,16 @@ .image2xPath(@icon-tree-collapse-type2); } -.ztree.hack li span.button.roots_close { - .imagePath(@icon-tree-collapse-type2); +.ztree.solid li span.button.roots_close { + .image2xPath(@icon-tree-solid-collapse-type2); } .bi-theme-dark { .ztree li span.button.roots_close { .image2xPath(@icon-tree-collapse-type2-theme-dark); } - .ztree.hack li span.button.roots_close { - .imagePath(@icon-tree-collapse-type2-theme-dark); + .ztree.solid li span.button.roots_close { + .image2xPath(@icon-tree-solid-collapse-type2-theme-dark); } } @@ -142,16 +103,16 @@ .image2xPath(@icon-tree-expand-type3); } -.ztree.hack li span.button.center_open { - .imagePath(@icon-tree-expand-type3); +.ztree.solid li span.button.center_open { + .image2xPath(@icon-tree-solid-expand-type3); } .bi-theme-dark { .ztree li span.button.center_open { .image2xPath(@icon-tree-expand-type3-theme-dark); } - .ztree.hack li span.button.center_open { - .imagePath(@icon-tree-expand-type3-theme-dark); + .ztree.solid li span.button.center_open { + .image2xPath(@icon-tree-solid-expand-type3-theme-dark); } } @@ -159,16 +120,16 @@ .image2xPath(@icon-tree-collapse-type3); } -.ztree.hack li span.button.center_close { - .imagePath(@icon-tree-collapse-type3); +.ztree.solid li span.button.center_close { + .image2xPath(@icon-tree-solid-collapse-type3); } .bi-theme-dark { .ztree li span.button.center_close { .image2xPath(@icon-tree-collapse-type3-theme-dark); } - .ztree.hack li span.button.center_close { - .imagePath(@icon-tree-collapse-type3-theme-dark); + .ztree.solid li span.button.center_close { + .image2xPath(@icon-tree-solid-collapse-type3-theme-dark); } } @@ -176,16 +137,16 @@ .image2xPath(@icon-tree-expand-type4); } -.ztree.hack li span.button.bottom_open { - .imagePath(@icon-tree-expand-type4); +.ztree.solid li span.button.bottom_open { + .image2xPath(@icon-tree-solid-expand-type4); } .bi-theme-dark { .ztree li span.button.bottom_open { .image2xPath(@icon-tree-expand-type4-theme-dark); } - .ztree.hack li span.button.bottom_open { - .imagePath(@icon-tree-expand-type4-theme-dark); + .ztree.solid li span.button.bottom_open { + .image2xPath(@icon-tree-solid-expand-type4-theme-dark); } } @@ -193,16 +154,16 @@ .image2xPath(@icon-tree-collapse-type4); } -.ztree.hack li span.button.bottom_close { - .imagePath(@icon-tree-collapse-type4); +.ztree.solid li span.button.bottom_close { + .image2xPath(@icon-tree-solid-collapse-type4); } .bi-theme-dark { .ztree li span.button.bottom_close { .image2xPath(@icon-tree-collapse-type4-theme-dark); } - .ztree.hack li span.button.bottom_close { - .imagePath(@icon-tree-collapse-type4-theme-dark); + .ztree.solid li span.button.bottom_close { + .image2xPath(@icon-tree-solid-collapse-type4-theme-dark); } } @@ -210,16 +171,16 @@ .image2xPath(@icon-tree-vertical-line-2); } -.ztree.hack li span.button.roots_docu { - .imagePath(@icon-tree-vertical-line-2); +.ztree.solid li span.button.roots_docu { + .image2xPath(@icon-tree-solid-vertical-line-2); } .bi-theme-dark { .ztree li span.button.roots_docu { .image2xPath(@icon-tree-vertical-line-2-theme-dark); } - .ztree.hack li span.button.roots_docu { - .imagePath(@icon-tree-vertical-line-2-theme-dark); + .ztree.solid li span.button.roots_docu { + .image2xPath(@icon-tree-solid-vertical-line-2-theme-dark); } } @@ -227,16 +188,16 @@ .image2xPath(@icon-tree-vertical-line-3); } -.ztree.hack li span.button.center_docu { - .imagePath(@icon-tree-vertical-line-3); +.ztree.solid li span.button.center_docu { + .image2xPath(@icon-tree-solid-vertical-line-3); } .bi-theme-dark { .ztree li span.button.center_docu { .image2xPath(@icon-tree-vertical-line-3-theme-dark); } - .ztree.hack li span.button.center_docu { - .imagePath(@icon-tree-vertical-line-3-theme-dark); + .ztree.solid li span.button.center_docu { + .image2xPath(@icon-tree-solid-vertical-line-3-theme-dark); } } @@ -244,16 +205,16 @@ .image2xPath(@icon-tree-vertical-line-4); } -.ztree.hack li span.button.bottom_docu { - .imagePath(@icon-tree-vertical-line-4); +.ztree.solid li span.button.bottom_docu { + .image2xPath(@icon-tree-solid-vertical-line-4); } .bi-theme-dark { .ztree li span.button.bottom_docu { .image2xPath(@icon-tree-vertical-line-4-theme-dark); } - .ztree.hack li span.button.bottom_docu { - .imagePath(@icon-tree-vertical-line-4-theme-dark); + .ztree.solid li span.button.bottom_docu { + .image2xPath(@icon-tree-solid-vertical-line-4-theme-dark); } } @@ -261,50 +222,86 @@ .image2xPath(@icon-loading); } -.ztree.hack li span.button.ico_loading { - .imagePath(@icon-loading); -} - .base-line-conn-background { .imagePath(@icon-tree-vertical-line-1, 0, 0, repeat-y); } +.base-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-1, 0, 0, repeat-y); +} + .bi-theme-dark { .base-line-conn-background { .imagePath(@icon-tree-vertical-line-1-theme-dark, 0, 0, repeat-y); } } +.bi-theme-dark { + .base-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-1-theme-dark, 0, 0, repeat-y); + } +} + .first-line-conn-background { .imagePath(@icon-tree-vertical-line-2); } +.first-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-2); +} + .bi-theme-dark { .first-line-conn-background { .imagePath(@icon-tree-vertical-line-2-theme-dark); } } +.bi-theme-dark { + .first-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-2-theme-dark); + } +} + .mid-line-conn-background { .imagePath(@icon-tree-vertical-line-3); } +.mid-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-3); +} + .bi-theme-dark { .mid-line-conn-background { .imagePath(@icon-tree-vertical-line-3-theme-dark); } } +.bi-theme-dark { + .mid-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-3-theme-dark); + } +} + .last-line-conn-background { .imagePath(@icon-tree-vertical-line-4); } +.last-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-4); +} + .bi-theme-dark { .last-line-conn-background { .imagePath(@icon-tree-vertical-line-4-theme-dark); } } +.bi-theme-dark { + .last-solid-line-conn-background { + .image2xPath(@icon-tree-solid-vertical-line-4-theme-dark); + } +} + .loading-background { .image2xPath(@icon-loading); } @@ -379,4 +376,4 @@ } } -.background(wave-loading, @icon-wave-loading); \ No newline at end of file +.background(wave-loading, @icon-wave-loading); diff --git a/src/less/resource/font.less b/src/less/resource/font.less index d1a6b6354..7e7e4e91c 100644 --- a/src/less/resource/font.less +++ b/src/less/resource/font.less @@ -1,5 +1,6 @@ @import "../lib/font"; @import "../lib/colors"; +@import "../lib/theme"; @import "../image"; .addFontRes(); @@ -81,10 +82,10 @@ .font-hover-active(pull-down-ha-font, @font-down-triangle, @color-bi-text-light-gray); //toast -.font(toast-error-font, @font-tip-error); -.font(toast-success-font, @font-tip-success); -.font(toast-warning-font, @font-tip-warning); -.font(toast-message-font, @font-tip-message); +.font(toast-error-font, @font-tip-error, @color-bi-color-toast-error); +.font(toast-success-font, @font-tip-success, @color-bi-color-toast-success); +.font(toast-warning-font, @font-tip-warning, @color-bi-color-toast-warning); +.font(toast-message-font, @font-tip-message, @color-bi-color-toast-normal); //数值区间 .font(less-font, @font-less); diff --git a/src/less/resource/icon.less b/src/less/resource/icon.less index 1ca769404..a97b429da 100644 --- a/src/less/resource/icon.less +++ b/src/less/resource/icon.less @@ -13,6 +13,17 @@ .icon(tree-vertical-line-type2, @icon-tree-vertical-line-2); .icon(tree-vertical-line-type3, @icon-tree-vertical-line-3); .icon(tree-vertical-line-type4, @icon-tree-vertical-line-4); +.icon(tree-solid-collapse-icon-type1, @icon-tree-solid-collapse-type1); +.icon(tree-solid-collapse-icon-type2, @icon-tree-solid-collapse-type2); +.icon(tree-solid-collapse-icon-type3, @icon-tree-solid-collapse-type3); +.icon(tree-solid-collapse-icon-type4, @icon-tree-solid-collapse-type4); +.icon(tree-solid-expand-icon-type1, @icon-tree-solid-expand-type1); +.icon(tree-solid-expand-icon-type2, @icon-tree-solid-expand-type2); +.icon(tree-solid-expand-icon-type3, @icon-tree-solid-expand-type3); +.icon(tree-solid-expand-icon-type4, @icon-tree-solid-expand-type4); +.icon(tree-solid-vertical-line-type2, @icon-tree-solid-vertical-line-2); +.icon(tree-solid-vertical-line-type3, @icon-tree-solid-vertical-line-3); +.icon(tree-solid-vertical-line-type4, @icon-tree-solid-vertical-line-4); //CheckBox .icon_custom(check-box-icon, @icon-checkbox-normal, @icon-checkbox-normal, @icon-checkbox-normal, @icon-checkbox-active, @icon-checkbox-disable, @icon-checkbox-active-disable); @@ -43,6 +54,17 @@ .icon(tree-vertical-line-type2, @icon-tree-vertical-line-2-theme-dark); .icon(tree-vertical-line-type3, @icon-tree-vertical-line-3-theme-dark); .icon(tree-vertical-line-type4, @icon-tree-vertical-line-4-theme-dark); + .icon(tree-solid-collapse-icon-type1, @icon-tree-solid-collapse-type1-theme-dark); + .icon(tree-solid-collapse-icon-type2, @icon-tree-solid-collapse-type2-theme-dark); + .icon(tree-solid-collapse-icon-type3, @icon-tree-solid-collapse-type3-theme-dark); + .icon(tree-solid-collapse-icon-type4, @icon-tree-solid-collapse-type4-theme-dark); + .icon(tree-solid-expand-icon-type1, @icon-tree-solid-expand-type1-theme-dark); + .icon(tree-solid-expand-icon-type2, @icon-tree-solid-expand-type2-theme-dark); + .icon(tree-solid-expand-icon-type3, @icon-tree-solid-expand-type3-theme-dark); + .icon(tree-solid-expand-icon-type4, @icon-tree-solid-expand-type4-theme-dark); + .icon(tree-solid-vertical-line-type2, @icon-tree-solid-vertical-line-2-theme-dark); + .icon(tree-solid-vertical-line-type3, @icon-tree-solid-vertical-line-3-theme-dark); + .icon(tree-solid-vertical-line-type4, @icon-tree-solid-vertical-line-4-theme-dark); .icon_select(trans-color-icon, @icon-trans-normal-dark, @icon-trans-select-dark, @icon-trans-disable-dark); .icon(auto-square-color-icon, @icon-auto-square-normal-dark); diff --git a/src/less/visual.less b/src/less/visual.less index cebb0eb61..fca93b43c 100644 --- a/src/less/visual.less +++ b/src/less/visual.less @@ -1,19 +1,19 @@ .text-shadow(none) { - text-shadow: none; - -moz-text-shadow: none; -webkit-text-shadow: none; + -moz-text-shadow: none; + text-shadow: none; } .text-shadow(@x, @y, @blur, @color) when not (@x = none) { - text-shadow: @arguments; - -moz-text-shadow: @arguments; -webkit-text-shadow: @arguments; + -moz-text-shadow: @arguments; + text-shadow: @arguments; } .box-shadow(none) { - box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none; + box-shadow: none; } .box-shadow(@style, @c) when (iscolor(@c)) { @@ -23,15 +23,15 @@ } .box-shadow(@x, @y, @blur, @spreed: 0px, @color, @inset: outset) when (iscolor(@color)) and (isnumber(unit(@spreed))){ - box-shadow: @arguments; -webkit-box-shadow: @arguments; -moz-box-shadow: @arguments; + box-shadow: @arguments; } .box-shadows(@shadow1, @shadow2, @shadow3) { - box-shadow: @shadow1, @shadow2, @shadow3; -webkit-box-shadow: @shadow1, @shadow2, @shadow3; -moz-box-shadow: @shadow1, @shadow2, @shadow3; + box-shadow: @shadow1, @shadow2, @shadow3; } .background-color(@color, @alpha) { @@ -53,6 +53,13 @@ transition: @transition; } +.transitions(@transition1, @transition2) { + -webkit-transition: @transition1, @transition2; + -moz-transition: @transition1, @transition2; + -o-transition: @transition1, @transition2; + transition: @transition1, @transition2; +} + .rotate(@rotate) { -webkit-transform: rotate(@rotate); -moz-transform: rotate(@rotate); @@ -90,40 +97,40 @@ } .border-corner-top-radius(@leftTop, @rightTop) { - -moz-border-radius-topleft: @leftTop; -webkit-border-top-left-radius: @leftTop; - -moz-border-radius-topright: @rightTop; + -moz-border-radius-topleft: @leftTop; -webkit-border-top-right-radius: @rightTop; + -moz-border-radius-topright: @rightTop; border-top-left-radius: @leftTop; border-top-right-radius: @rightTop; } .border-corner-bottom-radius(@leftBottom, @rightBottom) { - -moz-border-radius-bottomleft: @rightBottom; -webkit-border-bottom-left-radius: @rightBottom; - -moz-border-radius-bottomright: @leftBottom; + -moz-border-radius-bottomleft: @rightBottom; -webkit-border-bottom-right-radius: @rightBottom; + -moz-border-radius-bottomright: @leftBottom; border-bottom-right-radius: @rightBottom; border-bottom-left-radius: @leftBottom; } .border-corner-left-radius(@leftTop, @leftBottom) { - -moz-border-radius-topleft: @leftTop; -webkit-border-top-left-radius: @leftTop; - -moz-border-radius-bottomleft: @leftBottom; + -moz-border-radius-topleft: @leftTop; -webkit-border-bottom-left-radius: @leftBottom; + -moz-border-radius-bottomleft: @leftBottom; border-top-left-radius: @leftTop; border-bottom-left-radius: @leftBottom; } .border-corner-right-radius(@rightTop, @rightBottom) { - -moz-border-radius-topright: @rightTop; -webkit-border-top-right-radius: @rightTop; - -moz-border-radius-bottomright: @rightBottom; + -moz-border-radius-topright: @rightTop; -webkit-border-bottom-right-radius: @rightBottom; + -moz-border-radius-bottomright: @rightBottom; border-top-right-radius: @rightTop; border-bottom-right-radius: @rightBottom; @@ -345,4 +352,4 @@ visibility: hidden; } } -} \ No newline at end of file +} diff --git a/src/less/widget/interactivearrangement/interactivearrangement.less b/src/less/widget/interactivearrangement/interactivearrangement.less deleted file mode 100644 index f83588097..000000000 --- a/src/less/widget/interactivearrangement/interactivearrangement.less +++ /dev/null @@ -1,11 +0,0 @@ -@import "../../index"; - -.bi-interactive-arrangement { - & .interactive-arrangement-dragtag-line { - z-index: @zIndex-tip; - background-color: @color-bi-text-redmark; - } - & .interactive-arrangement-dragtag-icon { - z-index: @zIndex-tip; - } -} \ No newline at end of file diff --git a/src/less/widget/multiselect/multiselect.combo.less b/src/less/widget/multiselect/multiselect.combo.less index 4db735bcb..643062ec9 100644 --- a/src/less/widget/multiselect/multiselect.combo.less +++ b/src/less/widget/multiselect/multiselect.combo.less @@ -2,7 +2,7 @@ @val: transform .3s ease; .bi-multi-select-combo{ & .multi-select-trigger-icon-button{ - font-size: 16px; + font-size: @font-size-16; } // 此combo的trigger_button是absolute上去的,与bi-combo在同一层级,独立写一下 & .bi-combo.bi-combo-popup + .bi-trigger-icon-button { @@ -17,4 +17,4 @@ .transition(@val); } } -} \ No newline at end of file +} diff --git a/src/less/widget/multiselect/search/multiselect.search.pane.less b/src/less/widget/multiselect/search/multiselect.search.pane.less index 6f31a3dcb..97dfa3ace 100644 --- a/src/less/widget/multiselect/search/multiselect.search.pane.less +++ b/src/less/widget/multiselect/search/multiselect.search.pane.less @@ -3,6 +3,6 @@ .bi-multi-select-search-pane{ .multi-select-toolbar{ - color: @color-bi-text-redmark; + color: @color-bi-text-multi-select-search-pane-toolbar; } } \ No newline at end of file diff --git a/src/less/widget/multiselect/trigger/button.checkselected.less b/src/less/widget/multiselect/trigger/button.checkselected.less index a408e4659..deea8a46b 100644 --- a/src/less/widget/multiselect/trigger/button.checkselected.less +++ b/src/less/widget/multiselect/trigger/button.checkselected.less @@ -4,4 +4,8 @@ z-index: 1; min-width: 16px; .border-radius(8px); + &:active { + color: @color-bi-text-highlight; + background-color: @color-bi-background-multi-select-trigger-check-selected; + } } diff --git a/src/less/widget/multitree/check/multi.tree.check.pane.less b/src/less/widget/multitree/check/multi.tree.check.pane.less index b7231b149..3d40ae597 100644 --- a/src/less/widget/multitree/check/multi.tree.check.pane.less +++ b/src/less/widget/multitree/check/multi.tree.check.pane.less @@ -4,6 +4,6 @@ & .multi-tree-continue-select { } & .multi-tree-check-selected { - color: @color-bi-text-highlight; + color: @color-bi-text-multi-tree-check-pane-check-button; } } \ No newline at end of file diff --git a/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less b/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less index 4bc62b2d3..b4903d3ba 100644 --- a/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less +++ b/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less @@ -2,11 +2,14 @@ .bi-multi-tree-check-selected-button { & .trigger-check-selected{ - color: @color-bi-text-highlight; + color: @color-bi-text-multi-tree-check-pane-check-button; z-index: 1; } .trigger-check-text { .border-radius(8px); z-index: 1; + &:active { + background-color: @color-bi-background-multi-select-trigger-check-selected; + } } } \ No newline at end of file diff --git a/src/less/widget/searchmultiselect/searchmultiselect.less b/src/less/widget/searchmultiselect/searchmultiselect.less index f924f044b..ff7a3c41c 100644 --- a/src/less/widget/searchmultiselect/searchmultiselect.less +++ b/src/less/widget/searchmultiselect/searchmultiselect.less @@ -7,7 +7,7 @@ &.combo-error { & .bi-multi-select-searcher { & .tip-text-style{ - color: @color-bi-text-failure; + color: @color-bi-text-error-multi-select-trigger; } } } diff --git a/src/less/widget/singleselect/search/singleselect.search.pane.less b/src/less/widget/singleselect/search/singleselect.search.pane.less index 6674b663a..0ac8837e0 100644 --- a/src/less/widget/singleselect/search/singleselect.search.pane.less +++ b/src/less/widget/singleselect/search/singleselect.search.pane.less @@ -3,6 +3,6 @@ .bi-single-select-search-pane{ & .single-select-toolbar{ - color: @color-bi-text-redmark; + color: @color-bi-text-single-select-search-pane-toolbar; } } \ No newline at end of file diff --git a/src/less/widget/singleslider/slider/widget.slider.less b/src/less/widget/singleslider/slider/widget.slider.less index 745994c4c..9ecc523d8 100644 --- a/src/less/widget/singleslider/slider/widget.slider.less +++ b/src/less/widget/singleslider/slider/widget.slider.less @@ -6,23 +6,24 @@ border-width: 2px; border-style: solid; .border-radius(8px); - background-color: @color-bi-background-default; - height: 12px; - width: 12px; - top: 6px; - left: -8px; + background-color: @color-bi-background-slider-button; + height: 8px; + width: 8px; + top: 8px; + left: -6px; &:hover, &.hover { .border-radius(10px); - background-color: @color-bi-background-normal; - width: 16px; - height: 16px; - top: 4px; - left: -10px; + background-color: @color-bi-background-hover-slider-button; + width: 12px; + height: 12px; + top: 6px; + left: -8px; + .box-shadow(0 2px 4px 1px,rgba(0, 35, 11, 20%)); } &.disabled { - border-color: @color-bi-border-disabled; + border-color: @color-bi-border-disabled-slider-button; &:hover, &.hover { - background-color: @color-bi-background-normal; + background-color: @color-bi-background-hover-disabled-slider-button; width: 12px; height: 12px; top: 6px; @@ -35,13 +36,13 @@ .bi-theme-dark { .bi-single-slider-button { & .slider-button { - background-color: @color-bi-background-default-theme-dark; + background-color: @color-bi-background-slider-button; &:hover, &.hover { - background-color: @color-bi-background-normal-theme-dark; + background-color: @color-bi-background-hover-slider-button-theme-dark; } &.disabled { &:hover, &.hover { - background-color: @color-bi-background-normal-theme-dark; + background-color: @color-bi-background-hover-disabled-slider-button-theme-dark; } } } diff --git a/src/less/widget/singleslider/track/widget.track.less b/src/less/widget/singleslider/track/widget.track.less index c978ca9c2..ba1fdebb3 100644 --- a/src/less/widget/singleslider/track/widget.track.less +++ b/src/less/widget/singleslider/track/widget.track.less @@ -2,14 +2,14 @@ .bi-slider-track { & .gray-track { - .background-color(@color-bi-background-light-black, 10%); + .background-color(@color-bi-background-slider-gray-track, 10%); .border-radius(3px); } & .blue-track { .border-radius(3px); } & .disabled-blue-track { - background-color: @color-bi-background-dark-gray; + background-color: @color-bi-background-disabled-slider-blue-track; .border-radius(3px); } } @@ -17,11 +17,11 @@ .bi-theme-dark { .bi-slider-track { & .gray-track { - .background-color(@color-bi-background-light-black-theme-dark, 10%); + .background-color(@color-bi-background-slider-gray-track-theme-dark, 10%); .border-radius(3px); } & .disabled-blue-track { - background-color: @color-bi-background-dark-gray-theme-dark; + background-color: @color-bi-background-disabled-slider-blue-track-theme-dark; .border-radius(3px); } } diff --git a/src/less/widget/timeinterval/dateinterval.less b/src/less/widget/timeinterval/dateinterval.less index c4cdaa260..0680ad971 100644 --- a/src/less/widget/timeinterval/dateinterval.less +++ b/src/less/widget/timeinterval/dateinterval.less @@ -2,9 +2,9 @@ .bi-date-interval{ &.time-error .bi-input{ - color:@color-bi-text-failure + color: @color-bi-text-error-date-interval; } &.time-error .sign-editor-text{ - color:@color-bi-text-failure + color: @color-bi-text-error-date-interval; } } \ No newline at end of file diff --git a/src/less/widget/timeinterval/timeinterval.less b/src/less/widget/timeinterval/timeinterval.less index 6f2490940..81e252c20 100644 --- a/src/less/widget/timeinterval/timeinterval.less +++ b/src/less/widget/timeinterval/timeinterval.less @@ -7,10 +7,10 @@ &.time-error { & .bi-date-time-trigger{ & .bi-input{ - color:@color-bi-text-failure + color: @color-bi-text-error-time-interval; } & .sign-editor-text{ - color:@color-bi-text-failure + color: @color-bi-text-error-time-interval; } } } diff --git a/src/less/widget/year/popup.year.less b/src/less/widget/year/popup.year.less index a64116b65..814878f89 100644 --- a/src/less/widget/year/popup.year.less +++ b/src/less/widget/year/popup.year.less @@ -4,7 +4,7 @@ & .year-popup-navigation { line-height: 30px; & > .center-element { - border-left: 1px solid @color-bi-border-line; + border-left: 1px solid @color-bi-border-year-popup; } & > .first-element { border-left: none; @@ -19,7 +19,7 @@ .bi-year-popup { & .year-popup-navigation { & > .center-element { - border-left: 1px solid @color-bi-border-line-theme-dark; + border-left: 1px solid @color-bi-border-year-popup-theme-dark; } & > .first-element { border-left: none; diff --git a/src/less/widget/yearinterval/yearinterval.less b/src/less/widget/yearinterval/yearinterval.less index 6b58bd87d..8a4929dac 100644 --- a/src/less/widget/yearinterval/yearinterval.less +++ b/src/less/widget/yearinterval/yearinterval.less @@ -2,9 +2,9 @@ .bi-year-interval{ &.time-error .bi-input{ - color:@color-bi-text-failure + color: @color-bi-text-error-year-interval; } &.time-error .sign-editor-text{ - color:@color-bi-text-failure + color: @color-bi-text-error-year-interval; } } \ No newline at end of file diff --git a/src/less/widget/yearmonthinterval/yearmonthinterval.less b/src/less/widget/yearmonthinterval/yearmonthinterval.less index d66deb475..12db6801c 100644 --- a/src/less/widget/yearmonthinterval/yearmonthinterval.less +++ b/src/less/widget/yearmonthinterval/yearmonthinterval.less @@ -2,9 +2,9 @@ .bi-year-month-interval{ &.time-error .bi-input{ - color:@color-bi-text-failure + color: @color-bi-text-error-year-month-interval; } &.time-error .sign-editor-text{ - color:@color-bi-text-failure + color: @color-bi-text-error-year-month-interval; } } \ No newline at end of file diff --git a/src/less/widget/yearquarterinterval/yearquarterinterval.less b/src/less/widget/yearquarterinterval/yearquarterinterval.less index bd37cbc64..380e59fbe 100644 --- a/src/less/widget/yearquarterinterval/yearquarterinterval.less +++ b/src/less/widget/yearquarterinterval/yearquarterinterval.less @@ -2,9 +2,9 @@ .bi-year-quarter-interval{ &.time-error .bi-input{ - color:@color-bi-text-failure + color: @color-bi-text-error-year-quarter-interval; } &.time-error .sign-editor-text{ - color:@color-bi-text-failure + color: @color-bi-text-error-year-quarter-interval; } } \ No newline at end of file diff --git a/src/polyfill/array.js b/src/polyfill/array.js deleted file mode 100644 index e3b248fc9..000000000 --- a/src/polyfill/array.js +++ /dev/null @@ -1,96 +0,0 @@ -// Production steps of ECMA-262, Edition 5, 15.4.4.14 -// Reference: http://es5.github.io/#x15.4.4.14 -if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function (searchElement, fromIndex) { - - var k; - - // 1. Let o be the result of calling ToObject passing - // the this value as the argument. - if (this == null) { - throw new TypeError("\"this\" is null or not defined"); - } - - var o = Object(this); - - // 2. Let lenValue be the result of calling the Get - // internal method of o with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = o.length >>> 0; - - // 4. If len is 0, return -1. - if (len === 0) { - return -1; - } - - // 5. If argument fromIndex was passed let n be - // ToInteger(fromIndex); else let n be 0. - var n = fromIndex | 0; - - // 6. If n >= len, return -1. - if (n >= len) { - return -1; - } - - // 7. If n >= 0, then Let k be n. - // 8. Else, n<0, Let k be len - abs(n). - // If k is less than 0, then let k be 0. - k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 9. Repeat, while k < len - while (k < len) { - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the - // HasProperty internal method of o with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - // i. Let elementK be the result of calling the Get - // internal method of o with the argument ToString(k). - // ii. Let same be the result of applying the - // Strict Equality Comparison Algorithm to - // searchElement and elementK. - // iii. If same is true, return k. - if (k in o && o[k] === searchElement) { - return k; - } - k++; - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf) { - Array.prototype.lastIndexOf = function (searchElement /* , fromIndex*/) { - "use strict"; - - if (this === void 0 || this === null) { - throw new TypeError(); - } - - var n, k, - t = Object(this), - len = t.length >>> 0; - if (len === 0) { - return -1; - } - - n = len - 1; - if (arguments.length > 1) { - n = Number(arguments[1]); - if (n != n) { - n = 0; - } else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - } - - for (k = n >= 0 - ? Math.min(n, len - 1) - : len - Math.abs(n); k >= 0; k--) { - if (k in t && t[k] === searchElement) { - return k; - } - } - return -1; - }; -} diff --git a/src/polyfill/event.js b/src/polyfill/event.js new file mode 100644 index 000000000..346ec16c8 --- /dev/null +++ b/src/polyfill/event.js @@ -0,0 +1,15 @@ +(function () { + if (typeof window.CustomEvent === "function") return false; // If not IE + + function CustomEvent (event, params) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent("CustomEvent"); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + + return evt; + } + + CustomEvent.prototype = window.Event.prototype; + + window.CustomEvent = CustomEvent; +}()); diff --git a/src/polyfill/localStorage.js b/src/polyfill/localStorage.js deleted file mode 100644 index c0521faf8..000000000 --- a/src/polyfill/localStorage.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * 前端缓存 - */ -_global.localStorage || (_global.localStorage = { - items: {}, - setItem: function (k, v) { - BI.Cache.addCookie(k, v); - }, - getItem: function (k) { - return BI.Cache.getCookie(k); - }, - removeItem: function (k) { - BI.Cache.deleteCookie(k); - }, - key: function () { - - }, - clear: function () { - this.items = {}; - } -}); \ No newline at end of file diff --git a/src/polyfill/lodash.js b/src/polyfill/lodash.js deleted file mode 100644 index 88be39f0f..000000000 --- a/src/polyfill/lodash.js +++ /dev/null @@ -1,51 +0,0 @@ - -if (!Object.keys) { - Object.keys = function(o) { - if (o !== Object(o)) { - throw new TypeError('Object.keys called on a non-object'); - } - // fix的问题 - var falsy; - var skipArray = { - __ob__: falsy, - $accessors: falsy, - $vbthis: falsy, - $vbsetter: falsy - }; - var k = [], p; - for (p in o) { - if (!(p in skipArray)) { - if (Object.prototype.hasOwnProperty.call(o, p)) { - k.push(p); - } - } - } - return k; - }; -} - -if (!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -} - -/* 统一采用core-js的polyfill,此块暂去 -// https://stackoverflow.com/questions/10919915/ie8-getprototypeof-method -if (typeof Object.getPrototypeOf !== "function") { - Object.getPrototypeOf = "".__proto__ === String.prototype - ? function (object) { - return object.__proto__; - } - : function (object) { - // May break if the constructor has been tampered with - return object.constructor.prototype; - }; -} - */ - -if(!Date.now) { - Date.now = function () { - return new Date().valueOf(); - }; -} \ No newline at end of file diff --git a/src/core/proto/number.js b/src/polyfill/number.js similarity index 99% rename from src/core/proto/number.js rename to src/polyfill/number.js index 436ec268d..fee048503 100644 --- a/src/core/proto/number.js +++ b/src/polyfill/number.js @@ -139,4 +139,4 @@ if (!Number.prototype.toFixed || (0.00008).toFixed(3) !== "0.000" || }; })(); -} \ No newline at end of file +} diff --git a/src/polyfill/set.js b/src/polyfill/set.js deleted file mode 100644 index f8f895d17..000000000 --- a/src/polyfill/set.js +++ /dev/null @@ -1,16 +0,0 @@ -if (typeof Set !== "undefined" && Set.toString().match(/native code/)) { - -} else { - Set = function () { - this.set = {}; - }; - Set.prototype.has = function (key) { - return this.set[key] !== undefined; - }; - Set.prototype.add = function (key) { - this.set[key] = 1; - }; - Set.prototype.clear = function () { - this.set = {}; - }; -} \ No newline at end of file diff --git a/src/router/0.router.js b/src/router/0.router.js new file mode 100644 index 000000000..279289fc0 --- /dev/null +++ b/src/router/0.router.js @@ -0,0 +1,627 @@ +(function () { + var Events = { + + // Bind an event to a `callback` function. Passing `"all"` will bind + // the callback to all events fired. + on: function (name, callback, context) { + if (!eventsApi(this, "on", name, [callback, context]) || !callback) return this; + this._events || (this._events = {}); + var events = this._events[name] || (this._events[name] = []); + events.push({callback: callback, context: context, ctx: context || this}); + return this; + }, + + // Bind an event to only be triggered a single time. After the first time + // the callback is invoked, it will be removed. + once: function (name, callback, context) { + if (!eventsApi(this, "once", name, [callback, context]) || !callback) return this; + var self = this; + var once = _.once(function () { + self.off(name, once); + callback.apply(this, arguments); + }); + once._callback = callback; + return this.on(name, once, context); + }, + + // Remove one or many callbacks. If `context` is null, removes all + // callbacks with that function. If `callback` is null, removes all + // callbacks for the event. If `name` is null, removes all bound + // callbacks for all events. + off: function (name, callback, context) { + if (!this._events || !eventsApi(this, "off", name, [callback, context])) return this; + + // Remove all callbacks for all events. + if (!name && !callback && !context) { + this._events = void 0; + return this; + } + + var names = name ? [name] : _.keys(this._events); + for (var i = 0, length = names.length; i < length; i++) { + name = names[i]; + + // Bail out if there are no events stored. + var events = this._events[name]; + if (!events) continue; + + // Remove all callbacks for this event. + if (!callback && !context) { + delete this._events[name]; + continue; + } + + // Find any remaining events. + var remaining = []; + for (var j = 0, k = events.length; j < k; j++) { + var event = events[j]; + if ( + callback && callback !== event.callback && + callback !== event.callback._callback || + context && context !== event.context + ) { + remaining.push(event); + } + } + + // Replace events if there are any remaining. Otherwise, clean up. + if (remaining.length) { + this._events[name] = remaining; + } else { + delete this._events[name]; + } + } + + return this; + }, + + un: function () { + this.off.apply(this, arguments); + }, + + // Trigger one or many events, firing all bound callbacks. Callbacks are + // passed the same arguments as `trigger` is, apart from the event name + // (unless you're listening on `"all"`, which will cause your callback to + // receive the true name of the event as the first argument). + trigger: function (name) { + if (!this._events) return this; + var args = slice.call(arguments, 1); + if (!eventsApi(this, "trigger", name, args)) return this; + var events = this._events[name]; + var allEvents = this._events.all; + if (events) triggerEvents(events, args); + if (allEvents) triggerEvents(allEvents, arguments); + return this; + }, + + fireEvent: function () { + this.trigger.apply(this, arguments); + }, + + // Inversion-of-control versions of `on` and `once`. Tell *this* object to + // listen to an event in another object ... keeping track of what it's + // listening to. + listenTo: function (obj, name, callback) { + var listeningTo = this._listeningTo || (this._listeningTo = {}); + var id = obj._listenId || (obj._listenId = _.uniqueId("l")); + listeningTo[id] = obj; + if (!callback && typeof name === "object") callback = this; + obj.on(name, callback, this); + return this; + }, + + listenToOnce: function (obj, name, callback) { + if (typeof name === "object") { + for (var event in name) this.listenToOnce(obj, event, name[event]); + return this; + } + if (eventSplitter.test(name)) { + var names = name.split(eventSplitter); + for (var i = 0, length = names.length; i < length; i++) { + this.listenToOnce(obj, names[i], callback); + } + return this; + } + if (!callback) return this; + var once = _.once(function () { + this.stopListening(obj, name, once); + callback.apply(this, arguments); + }); + once._callback = callback; + return this.listenTo(obj, name, once); + }, + + // Tell this object to stop listening to either specific events ... or + // to every object it's currently listening to. + stopListening: function (obj, name, callback) { + var listeningTo = this._listeningTo; + if (!listeningTo) return this; + var remove = !name && !callback; + if (!callback && typeof name === "object") callback = this; + if (obj) (listeningTo = {})[obj._listenId] = obj; + for (var id in listeningTo) { + obj = listeningTo[id]; + obj.off(name, callback, this); + if (remove || _.isEmpty(obj._events)) delete this._listeningTo[id]; + } + return this; + } + + }; + + // Regular expression used to split event strings. + var eventSplitter = /\s+/; + + // Implement fancy features of the Events API such as multiple event + // names `"change blur"` and jQuery-style event maps `{change: action}` + // in terms of the existing API. + var eventsApi = function (obj, action, name, rest) { + if (!name) return true; + + // Handle event maps. + if (typeof name === "object") { + for (var key in name) { + obj[action].apply(obj, [key, name[key]].concat(rest)); + } + return false; + } + + // Handle space separated event names. + if (eventSplitter.test(name)) { + var names = name.split(eventSplitter); + for (var i = 0, length = names.length; i < length; i++) { + obj[action].apply(obj, [names[i]].concat(rest)); + } + return false; + } + + return true; + }; + + // A difficult-to-believe, but optimized internal dispatch function for + // triggering events. Tries to keep the usual cases speedy (most internal + // BI events have 3 arguments). + var triggerEvents = function (events, args) { + var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]; + switch (args.length) { + case 0: + while (++i < l) (ev = events[i]).callback.call(ev.ctx); + return; + case 1: + while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); + return; + case 2: + while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); + return; + case 3: + while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); + return; + default: + while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); + return; + } + }; + + // BI.Router + // --------------- + + // Routers map faux-URLs to actions, and fire events when routes are + // matched. Creating a new one sets its `routes` hash, if not set statically. + var Router = BI.Router = function (options) { + options || (options = {}); + if (options.routes) this.routes = options.routes; + this._bindRoutes(); + this._init.apply(this, arguments); + }; + + // Cached regular expressions for matching named param parts and splatted + // parts of route strings. + var optionalParam = /\((.*?)\)/g; + var namedParam = /(\(\?)?:\w+/g; + var splatParam = /\*\w+/g; + var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g; + + // Set up all inheritable **BI.Router** properties and methods. + _.extend(Router.prototype, Events, { + + // _init is an empty function by default. Override it with your own + // initialization logic. + _init: function () { + }, + + // Manually bind a single named route to a callback. For example: + // + // this.route('search/:query/p:num', 'search', function(query, num) { + // ... + // }); + // + route: function (route, name, callback) { + if (!_.isRegExp(route)) route = this._routeToRegExp(route); + if (_.isFunction(name)) { + callback = name; + name = ""; + } + if (!callback) callback = this[name]; + var router = this; + BI.history.route(route, function (fragment) { + var args = router._extractParameters(route, fragment); + if (router.execute(callback, args, name) !== false) { + router.trigger.apply(router, ["route:" + name].concat(args)); + router.trigger("route", name, args); + BI.history.trigger("route", router, name, args); + } + }); + return this; + }, + + // Execute a route handler with the provided parameters. This is an + // excellent place to do pre-route setup or post-route cleanup. + execute: function (callback, args, name) { + if (callback) callback.apply(this, args); + }, + + // Simple proxy to `BI.history` to save a fragment into the history. + navigate: function (fragment, options) { + BI.history.navigate(fragment, options); + return this; + }, + + // Bind all defined routes to `BI.history`. We have to reverse the + // order of the routes here to support behavior where the most general + // routes can be defined at the bottom of the route map. + _bindRoutes: function () { + if (!this.routes) return; + this.routes = _.result(this, "routes"); + var route, routes = _.keys(this.routes); + while ((route = routes.pop()) != null) { + this.route(route, this.routes[route]); + } + }, + + // Convert a route string into a regular expression, suitable for matching + // against the current location hash. + _routeToRegExp: function (route) { + route = route.replace(escapeRegExp, "\\$&") + .replace(optionalParam, "(?:$1)?") + .replace(namedParam, function (match, optional) { + return optional ? match : "([^/?]+)"; + }) + .replace(splatParam, "([^?]*?)"); + return new RegExp("^" + route + "(?:\\?([\\s\\S]*))?$"); + }, + + // Given a route, and a URL fragment that it matches, return the array of + // extracted decoded parameters. Empty or unmatched parameters will be + // treated as `null` to normalize cross-browser behavior. + _extractParameters: function (route, fragment) { + var params = route.exec(fragment).slice(1); + return _.map(params, function (param, i) { + // Don't decode the search params. + if (i === params.length - 1) return param || null; + var resultParam = null; + if (param) { + try { + resultParam = decodeURIComponent(param); + } catch (e) { + resultParam = param; + } + } + return resultParam; + }); + } + + }); + + // History + // ---------------- + + // Handles cross-browser history management, based on either + // [pushState](http://diveintohtml5.info/history.html) and real URLs, or + // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange) + // and URL fragments. If the browser supports neither (old IE, natch), + // falls back to polling. + var History = function () { + this.handlers = []; + this.checkUrl = _.bind(this.checkUrl, this); + + // Ensure that `History` can be used outside of the browser. + if (typeof window !== "undefined") { + this.location = _global.location; + this.history = _global.history; + } + }; + + // Cached regex for stripping a leading hash/slash and trailing space. + var routeStripper = /^[#\/]|\s+$/g; + + // Cached regex for stripping leading and trailing slashes. + var rootStripper = /^\/+|\/+$/g; + + // Cached regex for stripping urls of hash. + var pathStripper = /#.*$/; + + // Has the history handling already been started? + History.started = false; + + // Set up all inheritable **BI.History** properties and methods. + _.extend(History.prototype, Events, { + + // The default interval to poll for hash changes, if necessary, is + // twenty times a second. + interval: 50, + + // Are we at the app root? + atRoot: function () { + var path = this.location.pathname.replace(/[^\/]$/, "$&/"); + return path === this.root && !this.getSearch(); + }, + + // In IE6, the hash fragment and search params are incorrect if the + // fragment contains `?`. + getSearch: function () { + var match = this.location.href.replace(/#.*/, "").match(/\?.+/); + return match ? match[0] : ""; + }, + + // Gets the true hash value. Cannot use location.hash directly due to bug + // in Firefox where location.hash will always be decoded. + getHash: function (window) { + var match = (window || this).location.href.match(/#(.*)$/); + return match ? match[1] : ""; + }, + + // Get the pathname and search params, without the root. + getPath: function () { + var path = this.location.pathname + this.getSearch(); + try { + path = decodeURI(path); + } catch(e) { + } + var root = this.root.slice(0, -1); + if (!path.indexOf(root)) path = path.slice(root.length); + return path.charAt(0) === "/" ? path.slice(1) : path; + }, + + // Get the cross-browser normalized URL fragment from the path or hash. + getFragment: function (fragment) { + if (fragment == null) { + if (this._hasPushState || !this._wantsHashChange) { + fragment = this.getPath(); + } else { + fragment = this.getHash(); + } + } + return fragment.replace(routeStripper, ""); + }, + + // Start the hash change handling, returning `true` if the current URL matches + // an existing route, and `false` otherwise. + start: function (options) { + if (History.started) throw new Error("BI.history has already been started"); + History.started = true; + + // Figure out the initial configuration. Do we need an iframe? + // Is pushState desired ... is it available? + this.options = _.extend({root: "/"}, this.options, options); + this.root = this.options.root; + this._wantsHashChange = this.options.hashChange !== false; + this._hasHashChange = "onhashchange" in window; + this._wantsPushState = !!this.options.pushState; + this._hasPushState = !!(this.options.pushState && this.history && this.history.pushState); + this.fragment = this.getFragment(); + + // Normalize root to always include a leading and trailing slash. + this.root = ("/" + this.root + "/").replace(rootStripper, "/"); + + // Transition from hashChange to pushState or vice versa if both are + // requested. + if (this._wantsHashChange && this._wantsPushState) { + + // If we've started off with a route from a `pushState`-enabled + // browser, but we're currently in a browser that doesn't support it... + if (!this._hasPushState && !this.atRoot()) { + var root = this.root.slice(0, -1) || "/"; + this.location.replace(root + "#" + this.getPath()); + // Return immediately as browser will do redirect to new url + return true; + + // Or if we've started out with a hash-based route, but we're currently + // in a browser where it could be `pushState`-based instead... + } else if (this._hasPushState && this.atRoot()) { + this.navigate(this.getHash(), {replace: true}); + } + + } + + // Proxy an iframe to handle location events if the browser doesn't + // support the `hashchange` event, HTML5 history, or the user wants + // `hashChange` but not `pushState`. + if (!this._hasHashChange && this._wantsHashChange && (!this._wantsPushState || !this._hasPushState)) { + var iframe = document.createElement("iframe"); + iframe.src = "javascript:0"; + iframe.style.display = "none"; + iframe.tabIndex = -1; + var body = document.body; + // Using `appendChild` will throw on IE < 9 if the document is not ready. + this.iframe = body.insertBefore(iframe, body.firstChild).contentWindow; + this.iframe.document.open().close(); + this.iframe.location.hash = "#" + this.fragment; + } + + // Add a cross-platform `addEventListener` shim for older browsers. + var addEventListener = _global.addEventListener || function (eventName, listener) { + return attachEvent("on" + eventName, listener); + }; + + // Depending on whether we're using pushState or hashes, and whether + // 'onhashchange' is supported, determine how we check the URL state. + if (this._hasPushState) { + addEventListener("popstate", this.checkUrl, false); + } else if (this._wantsHashChange && this._hasHashChange && !this.iframe) { + addEventListener("hashchange", this.checkUrl, false); + } else if (this._wantsHashChange) { + this._checkUrlInterval = setInterval(this.checkUrl, this.interval); + } + + if (!this.options.silent) return this.loadUrl(); + }, + + // Disable BI.history, perhaps temporarily. Not useful in a real app, + // but possibly useful for unit testing Routers. + stop: function () { + // Add a cross-platform `removeEventListener` shim for older browsers. + var removeEventListener = _global.removeEventListener || function (eventName, listener) { + return detachEvent("on" + eventName, listener); + }; + + // Remove window listeners. + if (this._hasPushState) { + removeEventListener("popstate", this.checkUrl, false); + } else if (this._wantsHashChange && this._hasHashChange && !this.iframe) { + removeEventListener("hashchange", this.checkUrl, false); + } + + // Clean up the iframe if necessary. + if (this.iframe) { + document.body.removeChild(this.iframe.frameElement); + this.iframe = null; + } + + // Some environments will throw when clearing an undefined interval. + if (this._checkUrlInterval) clearInterval(this._checkUrlInterval); + History.started = false; + }, + + // Add a route to be tested when the fragment changes. Routes added later + // may override previous routes. + route: function (route, callback) { + this.handlers.unshift({route: route, callback: callback}); + }, + + // check route is Exist. if exist, return the route + checkRoute: function (route) { + for (var i = 0; i < this.handlers.length; i++) { + if (this.handlers[i].route.toString() === Router.prototype._routeToRegExp(route).toString()) { + return this.handlers[i]; + } + } + + return null; + }, + + // remove a route match in routes + unRoute: function (route) { + var index = _.findIndex(this.handlers, function (handler) { + return handler.route.test(route); + }); + if (index > -1) { + this.handlers.splice(index, 1); + } + }, + + // Checks the current URL to see if it has changed, and if it has, + // calls `loadUrl`, normalizing across the hidden iframe. + checkUrl: function (e) { + var current = this.getFragment(); + try { + // getFragment 得到的值是编码过的,而this.fragment是没有编码过的 + // 英文路径没有问题,遇上中文和空格有问题了 + current = decodeURIComponent(current); + } catch(e) { + } + // If the user pressed the back button, the iframe's hash will have + // changed and we should use that for comparison. + if (current === this.fragment && this.iframe) { + current = this.getHash(this.iframe); + } + + if (current === this.fragment) return false; + if (this.iframe) this.navigate(current); + this.loadUrl(); + }, + + // Attempt to load the current URL fragment. If a route succeeds with a + // match, returns `true`. If no defined routes matches the fragment, + // returns `false`. + loadUrl: function (fragment) { + fragment = this.fragment = this.getFragment(fragment); + return _.some(this.handlers, function (handler) { + if (handler.route.test(fragment)) { + handler.callback(fragment); + return true; + } + }); + }, + + // Save a fragment into the hash history, or replace the URL state if the + // 'replace' option is passed. You are responsible for properly URL-encoding + // the fragment in advance. + // + // The options object can contain `trigger: true` if you wish to have the + // route callback be fired (not usually desirable), or `replace: true`, if + // you wish to modify the current URL without adding an entry to the history. + navigate: function (fragment, options) { + if (!History.started) return false; + if (!options || options === true) options = {trigger: !!options}; + + // Normalize the fragment. + fragment = this.getFragment(fragment || ""); + + // Don't include a trailing slash on the root. + var root = this.root; + if (fragment === "" || fragment.charAt(0) === "?") { + root = root.slice(0, -1) || "/"; + } + var url = root + fragment; + + // Strip the hash and decode for matching. + fragment = fragment.replace(pathStripper, "") + try { + fragment = decodeURI(fragment); + } catch(e) { + } + + if (this.fragment === fragment) return; + this.fragment = fragment; + + // If pushState is available, we use it to set the fragment as a real URL. + if (this._hasPushState) { + this.history[options.replace ? "replaceState" : "pushState"]({}, document.title, url); + + // If hash changes haven't been explicitly disabled, update the hash + // fragment to store history. + } else if (this._wantsHashChange) { + this._updateHash(this.location, fragment, options.replace); + if (this.iframe && (fragment !== this.getHash(this.iframe))) { + // Opening and closing the iframe tricks IE7 and earlier to push a + // history entry on hash-tag change. When replace is true, we don't + // want this. + if (!options.replace) this.iframe.document.open().close(); + this._updateHash(this.iframe.location, fragment, options.replace); + } + + // If you've told us that you explicitly don't want fallback hashchange- + // based history, then `navigate` becomes a page refresh. + } else { + return this.location.assign(url); + } + if (options.trigger) return this.loadUrl(fragment); + }, + + // Update the hash location, either replacing the current entry, or adding + // a new one to the browser history. + _updateHash: function (location, fragment, replace) { + if (replace) { + var href = location.href.replace(/(javascript:|#).*$/, ""); + location.replace(href + "#" + fragment); + } else { + // Some browsers require that `hash` contains a leading #. + location.hash = "#" + fragment; + } + } + + }); + + // Create the default BI.history. + BI.history = new History; +}()); \ No newline at end of file diff --git a/src/router/router.js b/src/router/router.js index 279289fc0..efcf2f777 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -1,627 +1,3204 @@ -(function () { - var Events = { - - // Bind an event to a `callback` function. Passing `"all"` will bind - // the callback to all events fired. - on: function (name, callback, context) { - if (!eventsApi(this, "on", name, [callback, context]) || !callback) return this; - this._events || (this._events = {}); - var events = this._events[name] || (this._events[name] = []); - events.push({callback: callback, context: context, ctx: context || this}); - return this; - }, - - // Bind an event to only be triggered a single time. After the first time - // the callback is invoked, it will be removed. - once: function (name, callback, context) { - if (!eventsApi(this, "once", name, [callback, context]) || !callback) return this; - var self = this; - var once = _.once(function () { - self.off(name, once); - callback.apply(this, arguments); - }); - once._callback = callback; - return this.on(name, once, context); - }, - - // Remove one or many callbacks. If `context` is null, removes all - // callbacks with that function. If `callback` is null, removes all - // callbacks for the event. If `name` is null, removes all bound - // callbacks for all events. - off: function (name, callback, context) { - if (!this._events || !eventsApi(this, "off", name, [callback, context])) return this; - - // Remove all callbacks for all events. - if (!name && !callback && !context) { - this._events = void 0; - return this; +/*! + * vue-router v3.5.2 + * (c) 2021 Evan You + * @license MIT + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory()); + }(this, (function () { 'use strict'; + + /* */ + + function assert (condition, message) { + if (!condition) { + throw new Error(("[vue-router] " + message)) + } + } + + function warn (condition, message) { + if (!condition) { + typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); + } + } + + function extend (a, b) { + for (var key in b) { + a[key] = b[key]; + } + return a + } + + /* */ + + var encodeReserveRE = /[!'()*]/g; + var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); }; + var commaRE = /%2C/g; + + // fixed encodeURIComponent which is more conformant to RFC3986: + // - escapes [!'()*] + // - preserve commas + var encode = function (str) { return encodeURIComponent(str) + .replace(encodeReserveRE, encodeReserveReplacer) + .replace(commaRE, ','); }; + + function decode (str) { + try { + return decodeURIComponent(str) + } catch (err) { + { + warn(false, ("Error decoding \"" + str + "\". Leaving it intact.")); + } + } + return str + } + + function resolveQuery ( + query, + extraQuery, + _parseQuery + ) { + if ( extraQuery === void 0 ) extraQuery = {}; + + var parse = _parseQuery || parseQuery; + var parsedQuery; + try { + parsedQuery = parse(query || ''); + } catch (e) { + warn(false, e.message); + parsedQuery = {}; + } + for (var key in extraQuery) { + var value = extraQuery[key]; + parsedQuery[key] = Array.isArray(value) + ? value.map(castQueryParamValue) + : castQueryParamValue(value); + } + return parsedQuery + } + + var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); }; + + function parseQuery (query) { + var res = {}; + + query = query.trim().replace(/^(\?|#|&)/, ''); + + if (!query) { + return res + } + + query.split('&').forEach(function (param) { + var parts = param.replace(/\+/g, ' ').split('='); + var key = decode(parts.shift()); + var val = parts.length > 0 ? decode(parts.join('=')) : null; + + if (res[key] === undefined) { + res[key] = val; + } else if (Array.isArray(res[key])) { + res[key].push(val); + } else { + res[key] = [res[key], val]; + } + }); + + return res + } + + function stringifyQuery (obj) { + var res = obj + ? Object.keys(obj) + .map(function (key) { + var val = obj[key]; + + if (val === undefined) { + return '' } - - var names = name ? [name] : _.keys(this._events); - for (var i = 0, length = names.length; i < length; i++) { - name = names[i]; - - // Bail out if there are no events stored. - var events = this._events[name]; - if (!events) continue; - - // Remove all callbacks for this event. - if (!callback && !context) { - delete this._events[name]; - continue; - } - - // Find any remaining events. - var remaining = []; - for (var j = 0, k = events.length; j < k; j++) { - var event = events[j]; - if ( - callback && callback !== event.callback && - callback !== event.callback._callback || - context && context !== event.context - ) { - remaining.push(event); - } + + if (val === null) { + return encode(key) + } + + if (Array.isArray(val)) { + var result = []; + val.forEach(function (val2) { + if (val2 === undefined) { + return } - - // Replace events if there are any remaining. Otherwise, clean up. - if (remaining.length) { - this._events[name] = remaining; + if (val2 === null) { + result.push(encode(key)); } else { - delete this._events[name]; + result.push(encode(key) + '=' + encode(val2)); } + }); + return result.join('&') } - - return this; - }, - - un: function () { - this.off.apply(this, arguments); - }, - - // Trigger one or many events, firing all bound callbacks. Callbacks are - // passed the same arguments as `trigger` is, apart from the event name - // (unless you're listening on `"all"`, which will cause your callback to - // receive the true name of the event as the first argument). - trigger: function (name) { - if (!this._events) return this; - var args = slice.call(arguments, 1); - if (!eventsApi(this, "trigger", name, args)) return this; - var events = this._events[name]; - var allEvents = this._events.all; - if (events) triggerEvents(events, args); - if (allEvents) triggerEvents(allEvents, arguments); - return this; - }, - - fireEvent: function () { - this.trigger.apply(this, arguments); - }, - - // Inversion-of-control versions of `on` and `once`. Tell *this* object to - // listen to an event in another object ... keeping track of what it's - // listening to. - listenTo: function (obj, name, callback) { - var listeningTo = this._listeningTo || (this._listeningTo = {}); - var id = obj._listenId || (obj._listenId = _.uniqueId("l")); - listeningTo[id] = obj; - if (!callback && typeof name === "object") callback = this; - obj.on(name, callback, this); - return this; - }, - - listenToOnce: function (obj, name, callback) { - if (typeof name === "object") { - for (var event in name) this.listenToOnce(obj, event, name[event]); - return this; + + return encode(key) + '=' + encode(val) + }) + .filter(function (x) { return x.length > 0; }) + .join('&') + : null; + return res ? ("?" + res) : '' + } + + /* */ + + var trailingSlashRE = /\/?$/; + + function createRoute ( + record, + location, + redirectedFrom, + router + ) { + var stringifyQuery = router && router.options.stringifyQuery; + + var query = location.query || {}; + try { + query = clone(query); + } catch (e) {} + + var route = { + name: location.name || (record && record.name), + meta: (record && record.meta) || {}, + path: location.path || '/', + hash: location.hash || '', + query: query, + params: location.params || {}, + fullPath: getFullPath(location, stringifyQuery), + matched: record ? formatMatch(record) : [] + }; + if (redirectedFrom) { + route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery); + } + return Object.freeze(route) + } + + function clone (value) { + if (Array.isArray(value)) { + return value.map(clone) + } else if (value && typeof value === 'object') { + var res = {}; + for (var key in value) { + res[key] = clone(value[key]); + } + return res + } else { + return value + } + } + + // the starting route that represents the initial state + var START = createRoute(null, { + path: '/' + }); + + function formatMatch (record) { + var res = []; + while (record) { + res.unshift(record); + record = record.parent; + } + return res + } + + function getFullPath ( + ref, + _stringifyQuery + ) { + var path = ref.path; + var query = ref.query; if ( query === void 0 ) query = {}; + var hash = ref.hash; if ( hash === void 0 ) hash = ''; + + var stringify = _stringifyQuery || stringifyQuery; + return (path || '/') + stringify(query) + hash + } + + function isSameRoute (a, b, onlyPath) { + if (b === START) { + return a === b + } else if (!b) { + return false + } else if (a.path && b.path) { + return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath || + a.hash === b.hash && + isObjectEqual(a.query, b.query)) + } else if (a.name && b.name) { + return ( + a.name === b.name && + (onlyPath || ( + a.hash === b.hash && + isObjectEqual(a.query, b.query) && + isObjectEqual(a.params, b.params)) + ) + ) + } else { + return false + } + } + + function isObjectEqual (a, b) { + if ( a === void 0 ) a = {}; + if ( b === void 0 ) b = {}; + + // handle null value #1566 + if (!a || !b) { return a === b } + var aKeys = Object.keys(a).sort(); + var bKeys = Object.keys(b).sort(); + if (aKeys.length !== bKeys.length) { + return false + } + return aKeys.every(function (key, i) { + var aVal = a[key]; + var bKey = bKeys[i]; + if (bKey !== key) { return false } + var bVal = b[key]; + // query values can be null and undefined + if (aVal == null || bVal == null) { return aVal === bVal } + // check nested equality + if (typeof aVal === 'object' && typeof bVal === 'object') { + return isObjectEqual(aVal, bVal) + } + return String(aVal) === String(bVal) + }) + } + + function isIncludedRoute (current, target) { + return ( + current.path.replace(trailingSlashRE, '/').indexOf( + target.path.replace(trailingSlashRE, '/') + ) === 0 && + (!target.hash || current.hash === target.hash) && + queryIncludes(current.query, target.query) + ) + } + + function queryIncludes (current, target) { + for (var key in target) { + if (!(key in current)) { + return false + } + } + return true + } + + function handleRouteEntered (route) { + for (var i = 0; i < route.matched.length; i++) { + var record = route.matched[i]; + for (var name in record.instances) { + var instance = record.instances[name]; + var cbs = record.enteredCbs[name]; + if (!instance || !cbs) { continue } + delete record.enteredCbs[name]; + for (var i$1 = 0; i$1 < cbs.length; i$1++) { + if (!instance._isBeingDestroyed) { cbs[i$1](instance); } + } + } + } + } + + // var View = { + // name: 'RouterView', + // functional: true, + // props: { + // name: { + // type: String, + // default: 'default' + // } + // }, + // render: function render (_, ref) { + // var props = ref.props; + // var children = ref.children; + // var parent = ref.parent; + // var data = ref.data; + + // // used by devtools to display a router-view badge + // data.routerView = true; + + // // directly use parent context's createElement() function + // // so that components rendered by router-view can resolve named slots + // var h = parent.$createElement; + // var name = props.name; + // var route = parent.$route; + // var cache = parent._routerViewCache || (parent._routerViewCache = {}); + + // // determine current view depth, also check to see if the tree + // // has been toggled inactive but kept-alive. + // var depth = 0; + // var inactive = false; + // while (parent && parent._routerRoot !== parent) { + // var vnodeData = parent.$vnode ? parent.$vnode.data : {}; + // if (vnodeData.routerView) { + // depth++; + // } + // if (vnodeData.keepAlive && parent._directInactive && parent._inactive) { + // inactive = true; + // } + // parent = parent.$parent; + // } + // data.routerViewDepth = depth; + + // // render previous view if the tree is inactive and kept-alive + // if (inactive) { + // var cachedData = cache[name]; + // var cachedComponent = cachedData && cachedData.component; + // if (cachedComponent) { + // // #2301 + // // pass props + // if (cachedData.configProps) { + // fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps); + // } + // return h(cachedComponent, data, children) + // } else { + // // render previous empty view + // return h() + // } + // } + + // var matched = route.matched[depth]; + // var component = matched && matched.components[name]; + + // // render empty node if no matched route or no config component + // if (!matched || !component) { + // cache[name] = null; + // return h() + // } + + // // cache component + // cache[name] = { component: component }; + + // // attach instance registration hook + // // this will be called in the instance's injected lifecycle hooks + // data.registerRouteInstance = function (vm, val) { + // // val could be undefined for unregistration + // var current = matched.instances[name]; + // if ( + // (val && current !== vm) || + // (!val && current === vm) + // ) { + // matched.instances[name] = val; + // } + // } + + // // also register instance in prepatch hook + // // in case the same component instance is reused across different routes + // ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) { + // matched.instances[name] = vnode.componentInstance; + // }; + + // // register instance in init hook + // // in case kept-alive component be actived when routes changed + // data.hook.init = function (vnode) { + // if (vnode.data.keepAlive && + // vnode.componentInstance && + // vnode.componentInstance !== matched.instances[name] + // ) { + // matched.instances[name] = vnode.componentInstance; + // } + + // // if the route transition has already been confirmed then we weren't + // // able to call the cbs during confirmation as the component was not + // // registered yet, so we call it here. + // handleRouteEntered(route); + // }; + + // var configProps = matched.props && matched.props[name]; + // // save route and configProps in cache + // if (configProps) { + // extend(cache[name], { + // route: route, + // configProps: configProps + // }); + // fillPropsinData(component, data, route, configProps); + // } + + // return h(component, data, children) + // } + // }; + + // function fillPropsinData (component, data, route, configProps) { + // // resolve props + // var propsToPass = data.props = resolveProps(route, configProps); + // if (propsToPass) { + // // clone to prevent mutation + // propsToPass = data.props = extend({}, propsToPass); + // // pass non-declared props as attrs + // var attrs = data.attrs = data.attrs || {}; + // for (var key in propsToPass) { + // if (!component.props || !(key in component.props)) { + // attrs[key] = propsToPass[key]; + // delete propsToPass[key]; + // } + // } + // } + // } + + // function resolveProps (route, config) { + // switch (typeof config) { + // case 'undefined': + // return + // case 'object': + // return config + // case 'function': + // return config(route) + // case 'boolean': + // return config ? route.params : undefined + // default: + // { + // warn( + // false, + // "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " + + // "expecting an object, function or boolean." + // ); + // } + // } + // } + + /* */ + + function resolvePath ( + relative, + base, + append + ) { + var firstChar = relative.charAt(0); + if (firstChar === '/') { + return relative + } + + if (firstChar === '?' || firstChar === '#') { + return base + relative + } + + var stack = base.split('/'); + + // remove trailing segment if: + // - not appending + // - appending to trailing slash (last segment is empty) + if (!append || !stack[stack.length - 1]) { + stack.pop(); + } + + // resolve relative path + var segments = relative.replace(/^\//, '').split('/'); + for (var i = 0; i < segments.length; i++) { + var segment = segments[i]; + if (segment === '..') { + stack.pop(); + } else if (segment !== '.') { + stack.push(segment); + } + } + + // ensure leading slash + if (stack[0] !== '') { + stack.unshift(''); + } + + return stack.join('/') + } + + function parsePath (path) { + var hash = ''; + var query = ''; + + var hashIndex = path.indexOf('#'); + if (hashIndex >= 0) { + hash = path.slice(hashIndex); + path = path.slice(0, hashIndex); + } + + var queryIndex = path.indexOf('?'); + if (queryIndex >= 0) { + query = path.slice(queryIndex + 1); + path = path.slice(0, queryIndex); + } + + return { + path: path, + query: query, + hash: hash + } + } + + function cleanPath (path) { + return path.replace(/\/\//g, '/') + } + + var isarray = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]'; + }; + + /** + * Expose `pathToRegexp`. + */ + var pathToRegexp_1 = pathToRegexp; + var parse_1 = parse; + var compile_1 = compile; + var tokensToFunction_1 = tokensToFunction; + var tokensToRegExp_1 = tokensToRegExp; + + /** + * The main path matching regexp utility. + * + * @type {RegExp} + */ + var PATH_REGEXP = new RegExp([ + // Match escaped characters that would otherwise appear in future matches. + // This allows the user to escape special characters that won't transform. + '(\\\\.)', + // Match Express-style parameters and un-named parameters with a prefix + // and optional suffixes. Matches appear as: + // + // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] + // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] + // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] + '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' + ].join('|'), 'g'); + + /** + * Parse a string for the raw tokens. + * + * @param {string} str + * @param {Object=} options + * @return {!Array} + */ + function parse (str, options) { + var tokens = []; + var key = 0; + var index = 0; + var path = ''; + var defaultDelimiter = options && options.delimiter || '/'; + var res; + + while ((res = PATH_REGEXP.exec(str)) != null) { + var m = res[0]; + var escaped = res[1]; + var offset = res.index; + path += str.slice(index, offset); + index = offset + m.length; + + // Ignore already escaped sequences. + if (escaped) { + path += escaped[1]; + continue + } + + var next = str[index]; + var prefix = res[2]; + var name = res[3]; + var capture = res[4]; + var group = res[5]; + var modifier = res[6]; + var asterisk = res[7]; + + // Push the current path onto the tokens. + if (path) { + tokens.push(path); + path = ''; + } + + var partial = prefix != null && next != null && next !== prefix; + var repeat = modifier === '+' || modifier === '*'; + var optional = modifier === '?' || modifier === '*'; + var delimiter = res[2] || defaultDelimiter; + var pattern = capture || group; + + tokens.push({ + name: name || key++, + prefix: prefix || '', + delimiter: delimiter, + optional: optional, + repeat: repeat, + partial: partial, + asterisk: !!asterisk, + pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') + }); + } + + // Match any characters still remaining. + if (index < str.length) { + path += str.substr(index); + } + + // If the path exists, push it onto the end. + if (path) { + tokens.push(path); + } + + return tokens + } + + /** + * Compile a string to a template function for the path. + * + * @param {string} str + * @param {Object=} options + * @return {!function(Object=, Object=)} + */ + function compile (str, options) { + return tokensToFunction(parse(str, options), options) + } + + /** + * Prettier encoding of URI path segments. + * + * @param {string} + * @return {string} + */ + function encodeURIComponentPretty (str) { + return encodeURI(str).replace(/[\/?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) + } + + /** + * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. + * + * @param {string} + * @return {string} + */ + function encodeAsterisk (str) { + return encodeURI(str).replace(/[?#]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) + } + + /** + * Expose a method for transforming tokens into the path function. + */ + function tokensToFunction (tokens, options) { + // Compile all the tokens into regexps. + var matches = new Array(tokens.length); + + // Compile all the patterns before compilation. + for (var i = 0; i < tokens.length; i++) { + if (typeof tokens[i] === 'object') { + matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)); + } + } + + return function (obj, opts) { + var path = ''; + var data = obj || {}; + var options = opts || {}; + var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent; + + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + path += token; + + continue + } + + var value = data[token.name]; + var segment; + + if (value == null) { + if (token.optional) { + // Prepend partial segment prefixes. + if (token.partial) { + path += token.prefix; + } + + continue + } else { + throw new TypeError('Expected "' + token.name + '" to be defined') } - if (eventSplitter.test(name)) { - var names = name.split(eventSplitter); - for (var i = 0, length = names.length; i < length; i++) { - this.listenToOnce(obj, names[i], callback); - } - return this; + } + + if (isarray(value)) { + if (!token.repeat) { + throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') } - if (!callback) return this; - var once = _.once(function () { - this.stopListening(obj, name, once); - callback.apply(this, arguments); - }); - once._callback = callback; - return this.listenTo(obj, name, once); - }, - - // Tell this object to stop listening to either specific events ... or - // to every object it's currently listening to. - stopListening: function (obj, name, callback) { - var listeningTo = this._listeningTo; - if (!listeningTo) return this; - var remove = !name && !callback; - if (!callback && typeof name === "object") callback = this; - if (obj) (listeningTo = {})[obj._listenId] = obj; - for (var id in listeningTo) { - obj = listeningTo[id]; - obj.off(name, callback, this); - if (remove || _.isEmpty(obj._events)) delete this._listeningTo[id]; + + if (value.length === 0) { + if (token.optional) { + continue + } else { + throw new TypeError('Expected "' + token.name + '" to not be empty') + } } - return this; - } - - }; - - // Regular expression used to split event strings. - var eventSplitter = /\s+/; - - // Implement fancy features of the Events API such as multiple event - // names `"change blur"` and jQuery-style event maps `{change: action}` - // in terms of the existing API. - var eventsApi = function (obj, action, name, rest) { - if (!name) return true; - - // Handle event maps. - if (typeof name === "object") { - for (var key in name) { - obj[action].apply(obj, [key, name[key]].concat(rest)); + + for (var j = 0; j < value.length; j++) { + segment = encode(value[j]); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') + } + + path += (j === 0 ? token.prefix : token.delimiter) + segment; } - return false; - } - - // Handle space separated event names. - if (eventSplitter.test(name)) { - var names = name.split(eventSplitter); - for (var i = 0, length = names.length; i < length; i++) { - obj[action].apply(obj, [names[i]].concat(rest)); + + continue + } + + segment = token.asterisk ? encodeAsterisk(value) : encode(value); + + if (!matches[i].test(segment)) { + throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') + } + + path += token.prefix + segment; + } + + return path + } + } + + /** + * Escape a regular expression string. + * + * @param {string} str + * @return {string} + */ + function escapeString (str) { + return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1') + } + + /** + * Escape the capturing group by escaping special characters and meaning. + * + * @param {string} group + * @return {string} + */ + function escapeGroup (group) { + return group.replace(/([=!:$\/()])/g, '\\$1') + } + + /** + * Attach the keys as a property of the regexp. + * + * @param {!RegExp} re + * @param {Array} keys + * @return {!RegExp} + */ + function attachKeys (re, keys) { + re.keys = keys; + return re + } + + /** + * Get the flags for a regexp from the options. + * + * @param {Object} options + * @return {string} + */ + function flags (options) { + return options && options.sensitive ? '' : 'i' + } + + /** + * Pull out keys from a regexp. + * + * @param {!RegExp} path + * @param {!Array} keys + * @return {!RegExp} + */ + function regexpToRegexp (path, keys) { + // Use a negative lookahead to match only capturing groups. + var groups = path.source.match(/\((?!\?)/g); + + if (groups) { + for (var i = 0; i < groups.length; i++) { + keys.push({ + name: i, + prefix: null, + delimiter: null, + optional: false, + repeat: false, + partial: false, + asterisk: false, + pattern: null + }); + } + } + + return attachKeys(path, keys) + } + + /** + * Transform an array into a regexp. + * + * @param {!Array} path + * @param {Array} keys + * @param {!Object} options + * @return {!RegExp} + */ + function arrayToRegexp (path, keys, options) { + var parts = []; + + for (var i = 0; i < path.length; i++) { + parts.push(pathToRegexp(path[i], keys, options).source); + } + + var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options)); + + return attachKeys(regexp, keys) + } + + /** + * Create a path regexp from string input. + * + * @param {string} path + * @param {!Array} keys + * @param {!Object} options + * @return {!RegExp} + */ + function stringToRegexp (path, keys, options) { + return tokensToRegExp(parse(path, options), keys, options) + } + + /** + * Expose a function for taking tokens and returning a RegExp. + * + * @param {!Array} tokens + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ + function tokensToRegExp (tokens, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options); + keys = []; + } + + options = options || {}; + + var strict = options.strict; + var end = options.end !== false; + var route = ''; + + // Iterate over the tokens and create our regexp string. + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + + if (typeof token === 'string') { + route += escapeString(token); + } else { + var prefix = escapeString(token.prefix); + var capture = '(?:' + token.pattern + ')'; + + keys.push(token); + + if (token.repeat) { + capture += '(?:' + prefix + capture + ')*'; + } + + if (token.optional) { + if (!token.partial) { + capture = '(?:' + prefix + '(' + capture + '))?'; + } else { + capture = prefix + '(' + capture + ')?'; } - return false; + } else { + capture = prefix + '(' + capture + ')'; + } + + route += capture; } - - return true; - }; - - // A difficult-to-believe, but optimized internal dispatch function for - // triggering events. Tries to keep the usual cases speedy (most internal - // BI events have 3 arguments). - var triggerEvents = function (events, args) { - var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]; - switch (args.length) { - case 0: - while (++i < l) (ev = events[i]).callback.call(ev.ctx); - return; - case 1: - while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); - return; - case 2: - while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); - return; - case 3: - while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); - return; - default: - while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); - return; + } + + var delimiter = escapeString(options.delimiter || '/'); + var endsWithDelimiter = route.slice(-delimiter.length) === delimiter; + + // In non-strict mode we allow a slash at the end of match. If the path to + // match already ends with a slash, we remove it for consistency. The slash + // is valid at the end of a path match, not in the middle. This is important + // in non-ending mode, where "/test/" shouldn't match "/test//route". + if (!strict) { + route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'; + } + + if (end) { + route += '$'; + } else { + // In non-ending mode, we need the capturing groups to match as much as + // possible by using a positive lookahead to the end or next path segment. + route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'; + } + + return attachKeys(new RegExp('^' + route, flags(options)), keys) + } + + /** + * Normalize the given path string, returning a regular expression. + * + * An empty array can be passed in for the keys, which will hold the + * placeholder key descriptions. For example, using `/user/:id`, `keys` will + * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`. + * + * @param {(string|RegExp|Array)} path + * @param {(Array|Object)=} keys + * @param {Object=} options + * @return {!RegExp} + */ + function pathToRegexp (path, keys, options) { + if (!isarray(keys)) { + options = /** @type {!Object} */ (keys || options); + keys = []; + } + + options = options || {}; + + if (path instanceof RegExp) { + return regexpToRegexp(path, /** @type {!Array} */ (keys)) + } + + if (isarray(path)) { + return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options) + } + + return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options) + } + pathToRegexp_1.parse = parse_1; + pathToRegexp_1.compile = compile_1; + pathToRegexp_1.tokensToFunction = tokensToFunction_1; + pathToRegexp_1.tokensToRegExp = tokensToRegExp_1; + + /* */ + + // $flow-disable-line + var regexpCompileCache = Object.create(null); + + function fillParams ( + path, + params, + routeMsg + ) { + params = params || {}; + try { + var filler = + regexpCompileCache[path] || + (regexpCompileCache[path] = pathToRegexp_1.compile(path)); + + // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }} + // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string + if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; } + + return filler(params, { pretty: true }) + } catch (e) { + { + // Fix #3072 no warn if `pathMatch` is string + warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message))); } - }; - - // BI.Router - // --------------- - - // Routers map faux-URLs to actions, and fire events when routes are - // matched. Creating a new one sets its `routes` hash, if not set statically. - var Router = BI.Router = function (options) { - options || (options = {}); - if (options.routes) this.routes = options.routes; - this._bindRoutes(); - this._init.apply(this, arguments); - }; - - // Cached regular expressions for matching named param parts and splatted - // parts of route strings. - var optionalParam = /\((.*?)\)/g; - var namedParam = /(\(\?)?:\w+/g; - var splatParam = /\*\w+/g; - var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g; - - // Set up all inheritable **BI.Router** properties and methods. - _.extend(Router.prototype, Events, { - - // _init is an empty function by default. Override it with your own - // initialization logic. - _init: function () { - }, - - // Manually bind a single named route to a callback. For example: - // - // this.route('search/:query/p:num', 'search', function(query, num) { - // ... - // }); - // - route: function (route, name, callback) { - if (!_.isRegExp(route)) route = this._routeToRegExp(route); - if (_.isFunction(name)) { - callback = name; - name = ""; + return '' + } finally { + // delete the 0 if it was added + delete params[0]; + } + } + + /* */ + + function normalizeLocation ( + raw, + current, + append, + router + ) { + var next = typeof raw === 'string' ? { path: raw } : raw; + // named target + if (next._normalized) { + return next + } else if (next.name) { + next = extend({}, raw); + var params = next.params; + if (params && typeof params === 'object') { + next.params = extend({}, params); + } + return next + } + + // relative params + if (!next.path && next.params && current) { + next = extend({}, next); + next._normalized = true; + var params$1 = extend(extend({}, current.params), next.params); + if (current.name) { + next.name = current.name; + next.params = params$1; + } else if (current.matched.length) { + var rawPath = current.matched[current.matched.length - 1].path; + next.path = fillParams(rawPath, params$1, ("path " + (current.path))); + } else { + warn(false, "relative params navigation requires a current route."); + } + return next + } + + var parsedPath = parsePath(next.path || ''); + var basePath = (current && current.path) || '/'; + var path = parsedPath.path + ? resolvePath(parsedPath.path, basePath, append || next.append) + : basePath; + + var query = resolveQuery( + parsedPath.query, + next.query, + router && router.options.parseQuery + ); + + var hash = next.hash || parsedPath.hash; + if (hash && hash.charAt(0) !== '#') { + hash = "#" + hash; + } + + return { + _normalized: true, + path: path, + query: query, + hash: hash + } + } + + // var toTypes = [String, Object]; + // var eventTypes = [String, Array]; + + // var noop = function () {}; + + // var warnedCustomSlot; + // var warnedTagProp; + // var warnedEventProp; + + // var Link = { + // name: 'RouterLink', + // props: { + // to: { + // type: toTypes, + // required: true + // }, + // tag: { + // type: String, + // default: 'a' + // }, + // custom: Boolean, + // exact: Boolean, + // exactPath: Boolean, + // append: Boolean, + // replace: Boolean, + // activeClass: String, + // exactActiveClass: String, + // ariaCurrentValue: { + // type: String, + // default: 'page' + // }, + // event: { + // type: eventTypes, + // default: 'click' + // } + // }, + // render: function render (h) { + // var this$1 = this; + + // var router = this.$router; + // var current = this.$route; + // var ref = router.resolve( + // this.to, + // current, + // this.append + // ); + // var location = ref.location; + // var route = ref.route; + // var href = ref.href; + + // var classes = {}; + // var globalActiveClass = router.options.linkActiveClass; + // var globalExactActiveClass = router.options.linkExactActiveClass; + // // Support global empty active class + // var activeClassFallback = + // globalActiveClass == null ? 'router-link-active' : globalActiveClass; + // var exactActiveClassFallback = + // globalExactActiveClass == null + // ? 'router-link-exact-active' + // : globalExactActiveClass; + // var activeClass = + // this.activeClass == null ? activeClassFallback : this.activeClass; + // var exactActiveClass = + // this.exactActiveClass == null + // ? exactActiveClassFallback + // : this.exactActiveClass; + + // var compareTarget = route.redirectedFrom + // ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router) + // : route; + + // classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath); + // classes[activeClass] = this.exact || this.exactPath + // ? classes[exactActiveClass] + // : isIncludedRoute(current, compareTarget); + + // var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null; + + // var handler = function (e) { + // if (guardEvent(e)) { + // if (this$1.replace) { + // router.replace(location, noop); + // } else { + // router.push(location, noop); + // } + // } + // }; + + // var on = { click: guardEvent }; + // if (Array.isArray(this.event)) { + // this.event.forEach(function (e) { + // on[e] = handler; + // }); + // } else { + // on[this.event] = handler; + // } + + // var data = { class: classes }; + + // var scopedSlot = + // !this.$scopedSlots.$hasNormal && + // this.$scopedSlots.default && + // this.$scopedSlots.default({ + // href: href, + // route: route, + // navigate: handler, + // isActive: classes[activeClass], + // isExactActive: classes[exactActiveClass] + // }); + + // if (scopedSlot) { + // if (!this.custom) { + // !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\n\n'); + // warnedCustomSlot = true; + // } + // if (scopedSlot.length === 1) { + // return scopedSlot[0] + // } else if (scopedSlot.length > 1 || !scopedSlot.length) { + // { + // warn( + // false, + // (" with to=\"" + (this.to) + "\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.") + // ); + // } + // return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot) + // } + // } + + // { + // if ('tag' in this.$options.propsData && !warnedTagProp) { + // warn( + // false, + // "'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." + // ); + // warnedTagProp = true; + // } + // if ('event' in this.$options.propsData && !warnedEventProp) { + // warn( + // false, + // "'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link." + // ); + // warnedEventProp = true; + // } + // } + + // if (this.tag === 'a') { + // data.on = on; + // data.attrs = { href: href, 'aria-current': ariaCurrentValue }; + // } else { + // // find the first child and apply listener and href + // var a = findAnchor(this.$slots.default); + // if (a) { + // // in case the is a static node + // a.isStatic = false; + // var aData = (a.data = extend({}, a.data)); + // aData.on = aData.on || {}; + // // transform existing events in both objects into arrays so we can push later + // for (var event in aData.on) { + // var handler$1 = aData.on[event]; + // if (event in on) { + // aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1]; + // } + // } + // // append new listeners for router-link + // for (var event$1 in on) { + // if (event$1 in aData.on) { + // // on[event] is always a function + // aData.on[event$1].push(on[event$1]); + // } else { + // aData.on[event$1] = handler; + // } + // } + + // var aAttrs = (a.data.attrs = extend({}, a.data.attrs)); + // aAttrs.href = href; + // aAttrs['aria-current'] = ariaCurrentValue; + // } else { + // // doesn't have child, apply listener to self + // data.on = on; + // } + // } + + // return h(this.tag, data, this.$slots.default) + // } + // }; + + function guardEvent (e) { + // don't redirect with control keys + if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return } + // don't redirect when preventDefault called + if (e.defaultPrevented) { return } + // don't redirect on right click + if (e.button !== undefined && e.button !== 0) { return } + // don't redirect if `target="_blank"` + if (e.currentTarget && e.currentTarget.getAttribute) { + var target = e.currentTarget.getAttribute('target'); + if (/\b_blank\b/i.test(target)) { return } + } + // this may be a Weex event which doesn't have this method + if (e.preventDefault) { + e.preventDefault(); + } + return true + } + + function findAnchor (children) { + if (children) { + var child; + for (var i = 0; i < children.length; i++) { + child = children[i]; + if (child.tag === 'a') { + return child + } + if (child.children && (child = findAnchor(child.children))) { + return child + } + } + } + } + + // var _Vue; + + // function install (Vue) { + // if (install.installed && _Vue === Vue) { return } + // install.installed = true; + + // _Vue = Vue; + + // var isDef = function (v) { return v !== undefined; }; + + // var registerInstance = function (vm, callVal) { + // var i = vm.$options._parentVnode; + // if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) { + // i(vm, callVal); + // } + // }; + + // Vue.mixin({ + // beforeCreate: function beforeCreate () { + // if (isDef(this.$options.router)) { + // this._routerRoot = this; + // this._router = this.$options.router; + // this._router.init(this); + // Vue.util.defineReactive(this, '_route', this._router.history.current); + // } else { + // this._routerRoot = (this.$parent && this.$parent._routerRoot) || this; + // } + // registerInstance(this, this); + // }, + // destroyed: function destroyed () { + // registerInstance(this); + // } + // }); + + // Object.defineProperty(Vue.prototype, '$router', { + // get: function get () { return this._routerRoot._router } + // }); + + // Object.defineProperty(Vue.prototype, '$route', { + // get: function get () { return this._routerRoot._route } + // }); + + // Vue.component('RouterView', View); + // Vue.component('RouterLink', Link); + + // var strats = Vue.config.optionMergeStrategies; + // // use the same hook merging strategy for route hooks + // strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created; + // } + + /* */ + + var inBrowser = typeof window !== 'undefined'; + + /* */ + + function createRouteMap ( + routes, + oldPathList, + oldPathMap, + oldNameMap, + parentRoute + ) { + // the path list is used to control path matching priority + var pathList = oldPathList || []; + // $flow-disable-line + var pathMap = oldPathMap || Object.create(null); + // $flow-disable-line + var nameMap = oldNameMap || Object.create(null); + + routes.forEach(function (route) { + addRouteRecord(pathList, pathMap, nameMap, route, parentRoute); + }); + + // ensure wildcard routes are always at the end + for (var i = 0, l = pathList.length; i < l; i++) { + if (pathList[i] === '*') { + pathList.push(pathList.splice(i, 1)[0]); + l--; + i--; + } + } + + { + // warn if routes do not include leading slashes + var found = pathList + // check for missing leading slash + .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; }); + + if (found.length > 0) { + var pathNames = found.map(function (path) { return ("- " + path); }).join('\n'); + warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames)); + } + } + + return { + pathList: pathList, + pathMap: pathMap, + nameMap: nameMap + } + } + + function addRouteRecord ( + pathList, + pathMap, + nameMap, + route, + parent, + matchAs + ) { + var path = route.path; + var name = route.name; + { + assert(path != null, "\"path\" is required in a route configuration."); + assert( + typeof route.component !== 'string', + "route config \"component\" for path: " + (String( + path || name + )) + " cannot be a " + "string id. Use an actual component instead." + ); + + warn( + // eslint-disable-next-line no-control-regex + !/[^\u0000-\u007F]+/.test(path), + "Route with path \"" + path + "\" contains unencoded characters, make sure " + + "your path is correctly encoded before passing it to the router. Use " + + "encodeURI to encode static segments of your path." + ); + } + + var pathToRegexpOptions = + route.pathToRegexpOptions || {}; + var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict); + + if (typeof route.caseSensitive === 'boolean') { + pathToRegexpOptions.sensitive = route.caseSensitive; + } + + var record = { + path: normalizedPath, + regex: compileRouteRegex(normalizedPath, pathToRegexpOptions), + components: route.components || { default: route.component }, + alias: route.alias + ? typeof route.alias === 'string' + ? [route.alias] + : route.alias + : [], + instances: {}, + enteredCbs: {}, + name: name, + parent: parent, + matchAs: matchAs, + redirect: route.redirect, + beforeEnter: route.beforeEnter, + meta: route.meta || {}, + props: + route.props == null + ? {} + : route.components + ? route.props + : { default: route.props } + }; + + if (route.children) { + // Warn if route is named, does not redirect and has a default child route. + // If users navigate to this route by name, the default child will + // not be rendered (GH Issue #629) + { + if ( + route.name && + !route.redirect && + route.children.some(function (child) { return /^\/?$/.test(child.path); }) + ) { + warn( + false, + "Named Route '" + (route.name) + "' has a default child route. " + + "When navigating to this named route (:to=\"{name: '" + (route.name) + "'\"), " + + "the default child route will not be rendered. Remove the name from " + + "this route and use the name of the default child route for named " + + "links instead." + ); + } + } + route.children.forEach(function (child) { + var childMatchAs = matchAs + ? cleanPath((matchAs + "/" + (child.path))) + : undefined; + addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs); + }); + } + + if (!pathMap[record.path]) { + pathList.push(record.path); + pathMap[record.path] = record; + } + + if (route.alias !== undefined) { + var aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; + for (var i = 0; i < aliases.length; ++i) { + var alias = aliases[i]; + if (alias === path) { + warn( + false, + ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.") + ); + // skip in dev to make it work + continue + } + + var aliasRoute = { + path: alias, + children: route.children + }; + addRouteRecord( + pathList, + pathMap, + nameMap, + aliasRoute, + parent, + record.path || '/' // matchAs + ); + } + } + + if (name) { + if (!nameMap[name]) { + nameMap[name] = record; + } else if (!matchAs) { + warn( + false, + "Duplicate named routes definition: " + + "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }" + ); + } + } + } + + function compileRouteRegex ( + path, + pathToRegexpOptions + ) { + var regex = pathToRegexp_1(path, [], pathToRegexpOptions); + { + var keys = Object.create(null); + regex.keys.forEach(function (key) { + warn( + !keys[key.name], + ("Duplicate param keys in route with path: \"" + path + "\"") + ); + keys[key.name] = true; + }); + } + return regex + } + + function normalizePath ( + path, + parent, + strict + ) { + if (!strict) { path = path.replace(/\/$/, ''); } + if (path[0] === '/') { return path } + if (parent == null) { return path } + return cleanPath(((parent.path) + "/" + path)) + } + + /* */ + + + + function createMatcher ( + routes, + router + ) { + var ref = createRouteMap(routes); + var pathList = ref.pathList; + var pathMap = ref.pathMap; + var nameMap = ref.nameMap; + + function addRoutes (routes) { + createRouteMap(routes, pathList, pathMap, nameMap); + } + + function addRoute (parentOrRoute, route) { + var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined; + // $flow-disable-line + createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); + + // add aliases of parent + if (parent && parent.alias.length) { + createRouteMap( + // $flow-disable-line route is defined if parent is + parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), + pathList, + pathMap, + nameMap, + parent + ); + } + } + + function getRoutes () { + return pathList.map(function (path) { return pathMap[path]; }) + } + + function match ( + raw, + currentRoute, + redirectedFrom + ) { + var location = normalizeLocation(raw, currentRoute, false, router); + var name = location.name; + + if (name) { + var record = nameMap[name]; + { + warn(record, ("Route with name '" + name + "' does not exist")); + } + if (!record) { return _createRoute(null, location) } + var paramNames = record.regex.keys + .filter(function (key) { return !key.optional; }) + .map(function (key) { return key.name; }); + + if (typeof location.params !== 'object') { + location.params = {}; + } + + if (currentRoute && typeof currentRoute.params === 'object') { + for (var key in currentRoute.params) { + if (!(key in location.params) && paramNames.indexOf(key) > -1) { + location.params[key] = currentRoute.params[key]; + } } - if (!callback) callback = this[name]; - var router = this; - BI.history.route(route, function (fragment) { - var args = router._extractParameters(route, fragment); - if (router.execute(callback, args, name) !== false) { - router.trigger.apply(router, ["route:" + name].concat(args)); - router.trigger("route", name, args); - BI.history.trigger("route", router, name, args); - } - }); - return this; - }, - - // Execute a route handler with the provided parameters. This is an - // excellent place to do pre-route setup or post-route cleanup. - execute: function (callback, args, name) { - if (callback) callback.apply(this, args); - }, - - // Simple proxy to `BI.history` to save a fragment into the history. - navigate: function (fragment, options) { - BI.history.navigate(fragment, options); - return this; - }, - - // Bind all defined routes to `BI.history`. We have to reverse the - // order of the routes here to support behavior where the most general - // routes can be defined at the bottom of the route map. - _bindRoutes: function () { - if (!this.routes) return; - this.routes = _.result(this, "routes"); - var route, routes = _.keys(this.routes); - while ((route = routes.pop()) != null) { - this.route(route, this.routes[route]); + } + + location.path = fillParams(record.path, location.params, ("named route \"" + name + "\"")); + return _createRoute(record, location, redirectedFrom) + } else if (location.path) { + location.params = {}; + for (var i = 0; i < pathList.length; i++) { + var path = pathList[i]; + var record$1 = pathMap[path]; + if (matchRoute(record$1.regex, location.path, location.params)) { + return _createRoute(record$1, location, redirectedFrom) } - }, - - // Convert a route string into a regular expression, suitable for matching - // against the current location hash. - _routeToRegExp: function (route) { - route = route.replace(escapeRegExp, "\\$&") - .replace(optionalParam, "(?:$1)?") - .replace(namedParam, function (match, optional) { - return optional ? match : "([^/?]+)"; - }) - .replace(splatParam, "([^?]*?)"); - return new RegExp("^" + route + "(?:\\?([\\s\\S]*))?$"); - }, - - // Given a route, and a URL fragment that it matches, return the array of - // extracted decoded parameters. Empty or unmatched parameters will be - // treated as `null` to normalize cross-browser behavior. - _extractParameters: function (route, fragment) { - var params = route.exec(fragment).slice(1); - return _.map(params, function (param, i) { - // Don't decode the search params. - if (i === params.length - 1) return param || null; - var resultParam = null; - if (param) { - try { - resultParam = decodeURIComponent(param); - } catch (e) { - resultParam = param; - } - } - return resultParam; + } + } + // no match + return _createRoute(null, location) + } + + function redirect ( + record, + location + ) { + var originalRedirect = record.redirect; + var redirect = typeof originalRedirect === 'function' + ? originalRedirect(createRoute(record, location, null, router)) + : originalRedirect; + + if (typeof redirect === 'string') { + redirect = { path: redirect }; + } + + if (!redirect || typeof redirect !== 'object') { + { + warn( + false, ("invalid redirect option: " + (JSON.stringify(redirect))) + ); + } + return _createRoute(null, location) + } + + var re = redirect; + var name = re.name; + var path = re.path; + var query = location.query; + var hash = location.hash; + var params = location.params; + query = re.hasOwnProperty('query') ? re.query : query; + hash = re.hasOwnProperty('hash') ? re.hash : hash; + params = re.hasOwnProperty('params') ? re.params : params; + + if (name) { + // resolved named direct + var targetRecord = nameMap[name]; + { + assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found.")); + } + return match({ + _normalized: true, + name: name, + query: query, + hash: hash, + params: params + }, undefined, location) + } else if (path) { + // 1. resolve relative redirect + var rawPath = resolveRecordPath(path, record); + // 2. resolve params + var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\"")); + // 3. rematch with existing query and hash + return match({ + _normalized: true, + path: resolvedPath, + query: query, + hash: hash + }, undefined, location) + } else { + { + warn(false, ("invalid redirect option: " + (JSON.stringify(redirect)))); + } + return _createRoute(null, location) + } + } + + function alias ( + record, + location, + matchAs + ) { + var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\"")); + var aliasedMatch = match({ + _normalized: true, + path: aliasedPath + }); + if (aliasedMatch) { + var matched = aliasedMatch.matched; + var aliasedRecord = matched[matched.length - 1]; + location.params = aliasedMatch.params; + return _createRoute(aliasedRecord, location) + } + return _createRoute(null, location) + } + + function _createRoute ( + record, + location, + redirectedFrom + ) { + if (record && record.redirect) { + return redirect(record, redirectedFrom || location) + } + if (record && record.matchAs) { + return alias(record, location, record.matchAs) + } + return createRoute(record, location, redirectedFrom, router) + } + + return { + match: match, + addRoute: addRoute, + getRoutes: getRoutes, + addRoutes: addRoutes + } + } + + function matchRoute ( + regex, + path, + params + ) { + var m = path.match(regex); + + if (!m) { + return false + } else if (!params) { + return true + } + + for (var i = 1, len = m.length; i < len; ++i) { + var key = regex.keys[i - 1]; + if (key) { + // Fix #1994: using * with props: true generates a param named 0 + params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i]; + } + } + + return true + } + + function resolveRecordPath (path, record) { + return resolvePath(path, record.parent ? record.parent.path : '/', true) + } + + /* */ + + // use User Timing api (if present) for more accurate key precision + var Time = + inBrowser && window.performance && window.performance.now + ? window.performance + : Date; + + function genStateKey () { + return Time.now().toFixed(3) + } + + var _key = genStateKey(); + + function getStateKey () { + return _key + } + + function setStateKey (key) { + return (_key = key) + } + + /* */ + + var positionStore = Object.create(null); + + function setupScroll () { + // Prevent browser scroll behavior on History popstate + if ('scrollRestoration' in window.history) { + window.history.scrollRestoration = 'manual'; + } + // Fix for #1585 for Firefox + // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678 + // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with + // window.location.protocol + '//' + window.location.host + // location.host contains the port and location.hostname doesn't + var protocolAndPath = window.location.protocol + '//' + window.location.host; + var absolutePath = window.location.href.replace(protocolAndPath, ''); + // preserve existing history state as it could be overriden by the user + var stateCopy = extend({}, window.history.state); + stateCopy.key = getStateKey(); + window.history.replaceState(stateCopy, '', absolutePath); + window.addEventListener('popstate', handlePopState); + return function () { + window.removeEventListener('popstate', handlePopState); + } + } + + function handleScroll ( + router, + to, + from, + isPop + ) { + if (!router.app) { + return + } + + var behavior = router.options.scrollBehavior; + if (!behavior) { + return + } + + { + assert(typeof behavior === 'function', "scrollBehavior must be a function"); + } + + // wait until re-render finishes before scrolling + BI.nextTick(function () { + var position = getScrollPosition(); + var shouldScroll = behavior.call( + router, + to, + from, + isPop ? position : null + ); + + if (!shouldScroll) { + return + } + + if (typeof shouldScroll.then === 'function') { + shouldScroll + .then(function (shouldScroll) { + scrollToPosition((shouldScroll), position); + }) + .catch(function (err) { + { + assert(false, err.toString()); + } }); + } else { + scrollToPosition(shouldScroll, position); } - - }); - - // History - // ---------------- - - // Handles cross-browser history management, based on either - // [pushState](http://diveintohtml5.info/history.html) and real URLs, or - // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange) - // and URL fragments. If the browser supports neither (old IE, natch), - // falls back to polling. - var History = function () { - this.handlers = []; - this.checkUrl = _.bind(this.checkUrl, this); - - // Ensure that `History` can be used outside of the browser. - if (typeof window !== "undefined") { - this.location = _global.location; - this.history = _global.history; + }); + } + + function saveScrollPosition () { + var key = getStateKey(); + if (key) { + positionStore[key] = { + x: window.pageXOffset, + y: window.pageYOffset + }; + } + } + + function handlePopState (e) { + saveScrollPosition(); + if (e.state && e.state.key) { + setStateKey(e.state.key); + } + } + + function getScrollPosition () { + var key = getStateKey(); + if (key) { + return positionStore[key] + } + } + + function getElementPosition (el, offset) { + var docEl = document.documentElement; + var docRect = docEl.getBoundingClientRect(); + var elRect = el.getBoundingClientRect(); + return { + x: elRect.left - docRect.left - offset.x, + y: elRect.top - docRect.top - offset.y + } + } + + function isValidPosition (obj) { + return isNumber(obj.x) || isNumber(obj.y) + } + + function normalizePosition (obj) { + return { + x: isNumber(obj.x) ? obj.x : window.pageXOffset, + y: isNumber(obj.y) ? obj.y : window.pageYOffset + } + } + + function normalizeOffset (obj) { + return { + x: isNumber(obj.x) ? obj.x : 0, + y: isNumber(obj.y) ? obj.y : 0 + } + } + + function isNumber (v) { + return typeof v === 'number' + } + + var hashStartsWithNumberRE = /^#\d/; + + function scrollToPosition (shouldScroll, position) { + var isObject = typeof shouldScroll === 'object'; + if (isObject && typeof shouldScroll.selector === 'string') { + // getElementById would still fail if the selector contains a more complicated query like #main[data-attr] + // but at the same time, it doesn't make much sense to select an element with an id and an extra selector + var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line + ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line + : document.querySelector(shouldScroll.selector); + + if (el) { + var offset = + shouldScroll.offset && typeof shouldScroll.offset === 'object' + ? shouldScroll.offset + : {}; + offset = normalizeOffset(offset); + position = getElementPosition(el, offset); + } else if (isValidPosition(shouldScroll)) { + position = normalizePosition(shouldScroll); + } + } else if (isObject && isValidPosition(shouldScroll)) { + position = normalizePosition(shouldScroll); + } + + if (position) { + // $flow-disable-line + if ('scrollBehavior' in document.documentElement.style) { + window.scrollTo({ + left: position.x, + top: position.y, + // $flow-disable-line + behavior: shouldScroll.behavior + }); + } else { + window.scrollTo(position.x, position.y); + } + } + } + + /* */ + + var supportsPushState = + inBrowser && + (function () { + var ua = window.navigator.userAgent; + + if ( + (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && + ua.indexOf('Mobile Safari') !== -1 && + ua.indexOf('Chrome') === -1 && + ua.indexOf('Windows Phone') === -1 + ) { + return false + } + + return window.history && typeof window.history.pushState === 'function' + })(); + + function pushState (url, replace) { + saveScrollPosition(); + // try...catch the pushState call to get around Safari + // DOM Exception 18 where it limits to 100 pushState calls + var history = window.history; + try { + if (replace) { + // preserve existing history state as it could be overriden by the user + var stateCopy = extend({}, history.state); + stateCopy.key = getStateKey(); + history.replaceState(stateCopy, '', url); + } else { + history.pushState({ key: setStateKey(genStateKey()) }, '', url); } + } catch (e) { + window.location[replace ? 'replace' : 'assign'](url); + } + } + + function replaceState (url) { + pushState(url, true); + } + + /* */ + + function runQueue (queue, fn, cb) { + var step = function (index) { + if (index >= queue.length) { + cb(); + } else { + if (queue[index]) { + fn(queue[index], function () { + step(index + 1); + }); + } else { + step(index + 1); + } + } + }; + step(0); + } + + // When changing thing, also edit router.d.ts + var NavigationFailureType = { + redirected: 2, + aborted: 4, + cancelled: 8, + duplicated: 16 }; - - // Cached regex for stripping a leading hash/slash and trailing space. - var routeStripper = /^[#\/]|\s+$/g; - - // Cached regex for stripping leading and trailing slashes. - var rootStripper = /^\/+|\/+$/g; - - // Cached regex for stripping urls of hash. - var pathStripper = /#.*$/; - - // Has the history handling already been started? - History.started = false; - - // Set up all inheritable **BI.History** properties and methods. - _.extend(History.prototype, Events, { - - // The default interval to poll for hash changes, if necessary, is - // twenty times a second. - interval: 50, - - // Are we at the app root? - atRoot: function () { - var path = this.location.pathname.replace(/[^\/]$/, "$&/"); - return path === this.root && !this.getSearch(); - }, - - // In IE6, the hash fragment and search params are incorrect if the - // fragment contains `?`. - getSearch: function () { - var match = this.location.href.replace(/#.*/, "").match(/\?.+/); - return match ? match[0] : ""; - }, - - // Gets the true hash value. Cannot use location.hash directly due to bug - // in Firefox where location.hash will always be decoded. - getHash: function (window) { - var match = (window || this).location.href.match(/#(.*)$/); - return match ? match[1] : ""; - }, - - // Get the pathname and search params, without the root. - getPath: function () { - var path = this.location.pathname + this.getSearch(); + + function createNavigationRedirectedError (from, to) { + return createRouterError( + from, + to, + NavigationFailureType.redirected, + ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute( + to + )) + "\" via a navigation guard.") + ) + } + + function createNavigationDuplicatedError (from, to) { + var error = createRouterError( + from, + to, + NavigationFailureType.duplicated, + ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".") + ); + // backwards compatible with the first introduction of Errors + error.name = 'NavigationDuplicated'; + return error + } + + function createNavigationCancelledError (from, to) { + return createRouterError( + from, + to, + NavigationFailureType.cancelled, + ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.") + ) + } + + function createNavigationAbortedError (from, to) { + return createRouterError( + from, + to, + NavigationFailureType.aborted, + ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.") + ) + } + + function createRouterError (from, to, type, message) { + var error = new Error(message); + error._isRouter = true; + error.from = from; + error.to = to; + error.type = type; + + return error + } + + var propertiesToLog = ['params', 'query', 'hash']; + + function stringifyRoute (to) { + if (typeof to === 'string') { return to } + if ('path' in to) { return to.path } + var location = {}; + propertiesToLog.forEach(function (key) { + if (key in to) { location[key] = to[key]; } + }); + return JSON.stringify(location, null, 2) + } + + function isError (err) { + return Object.prototype.toString.call(err).indexOf('Error') > -1 + } + + function isNavigationFailure (err, errorType) { + return ( + isError(err) && + err._isRouter && + (errorType == null || err.type === errorType) + ) + } + + /* */ + + function resolveAsyncComponents (matched) { + return function (to, from, next) { + var hasAsync = false; + var pending = 0; + var error = null; + + flatMapComponents(matched, function (def, _, match, key) { + // if it's a function and doesn't have cid attached, + // assume it's an async component resolve function. + // we are not using Vue's default async resolving mechanism because + // we want to halt the navigation until the incoming component has been + // resolved. + if (typeof def === 'function' && def.cid === undefined) { + hasAsync = true; + pending++; + + var resolve = once(function (resolvedDef) { + if (isESModule(resolvedDef)) { + resolvedDef = resolvedDef.default; + } + // save resolved on async factory in case it's used elsewhere + def.resolved = resolvedDef; + match.components[key] = resolvedDef; + pending--; + if (pending <= 0) { + next(); + } + }); + + var reject = once(function (reason) { + var msg = "Failed to resolve async component " + key + ": " + reason; + warn(false, msg); + if (!error) { + error = isError(reason) + ? reason + : new Error(msg); + next(error); + } + }); + + var res; try { - path = decodeURI(path); - } catch(e) { + res = def(resolve, reject); + } catch (e) { + reject(e); } - var root = this.root.slice(0, -1); - if (!path.indexOf(root)) path = path.slice(root.length); - return path.charAt(0) === "/" ? path.slice(1) : path; - }, - - // Get the cross-browser normalized URL fragment from the path or hash. - getFragment: function (fragment) { - if (fragment == null) { - if (this._hasPushState || !this._wantsHashChange) { - fragment = this.getPath(); - } else { - fragment = this.getHash(); + if (res) { + if (typeof res.then === 'function') { + res.then(resolve, reject); + } else { + // new syntax in Vue 2.3 + var comp = res.component; + if (comp && typeof comp.then === 'function') { + comp.then(resolve, reject); } + } } - return fragment.replace(routeStripper, ""); - }, - - // Start the hash change handling, returning `true` if the current URL matches - // an existing route, and `false` otherwise. - start: function (options) { - if (History.started) throw new Error("BI.history has already been started"); - History.started = true; - - // Figure out the initial configuration. Do we need an iframe? - // Is pushState desired ... is it available? - this.options = _.extend({root: "/"}, this.options, options); - this.root = this.options.root; - this._wantsHashChange = this.options.hashChange !== false; - this._hasHashChange = "onhashchange" in window; - this._wantsPushState = !!this.options.pushState; - this._hasPushState = !!(this.options.pushState && this.history && this.history.pushState); - this.fragment = this.getFragment(); - - // Normalize root to always include a leading and trailing slash. - this.root = ("/" + this.root + "/").replace(rootStripper, "/"); - - // Transition from hashChange to pushState or vice versa if both are - // requested. - if (this._wantsHashChange && this._wantsPushState) { - - // If we've started off with a route from a `pushState`-enabled - // browser, but we're currently in a browser that doesn't support it... - if (!this._hasPushState && !this.atRoot()) { - var root = this.root.slice(0, -1) || "/"; - this.location.replace(root + "#" + this.getPath()); - // Return immediately as browser will do redirect to new url - return true; - - // Or if we've started out with a hash-based route, but we're currently - // in a browser where it could be `pushState`-based instead... - } else if (this._hasPushState && this.atRoot()) { - this.navigate(this.getHash(), {replace: true}); - } - - } - - // Proxy an iframe to handle location events if the browser doesn't - // support the `hashchange` event, HTML5 history, or the user wants - // `hashChange` but not `pushState`. - if (!this._hasHashChange && this._wantsHashChange && (!this._wantsPushState || !this._hasPushState)) { - var iframe = document.createElement("iframe"); - iframe.src = "javascript:0"; - iframe.style.display = "none"; - iframe.tabIndex = -1; - var body = document.body; - // Using `appendChild` will throw on IE < 9 if the document is not ready. - this.iframe = body.insertBefore(iframe, body.firstChild).contentWindow; - this.iframe.document.open().close(); - this.iframe.location.hash = "#" + this.fragment; - } - - // Add a cross-platform `addEventListener` shim for older browsers. - var addEventListener = _global.addEventListener || function (eventName, listener) { - return attachEvent("on" + eventName, listener); - }; - - // Depending on whether we're using pushState or hashes, and whether - // 'onhashchange' is supported, determine how we check the URL state. - if (this._hasPushState) { - addEventListener("popstate", this.checkUrl, false); - } else if (this._wantsHashChange && this._hasHashChange && !this.iframe) { - addEventListener("hashchange", this.checkUrl, false); - } else if (this._wantsHashChange) { - this._checkUrlInterval = setInterval(this.checkUrl, this.interval); - } - - if (!this.options.silent) return this.loadUrl(); - }, - - // Disable BI.history, perhaps temporarily. Not useful in a real app, - // but possibly useful for unit testing Routers. - stop: function () { - // Add a cross-platform `removeEventListener` shim for older browsers. - var removeEventListener = _global.removeEventListener || function (eventName, listener) { - return detachEvent("on" + eventName, listener); - }; - - // Remove window listeners. - if (this._hasPushState) { - removeEventListener("popstate", this.checkUrl, false); - } else if (this._wantsHashChange && this._hasHashChange && !this.iframe) { - removeEventListener("hashchange", this.checkUrl, false); - } - - // Clean up the iframe if necessary. - if (this.iframe) { - document.body.removeChild(this.iframe.frameElement); - this.iframe = null; - } - - // Some environments will throw when clearing an undefined interval. - if (this._checkUrlInterval) clearInterval(this._checkUrlInterval); - History.started = false; - }, - - // Add a route to be tested when the fragment changes. Routes added later - // may override previous routes. - route: function (route, callback) { - this.handlers.unshift({route: route, callback: callback}); - }, - - // check route is Exist. if exist, return the route - checkRoute: function (route) { - for (var i = 0; i < this.handlers.length; i++) { - if (this.handlers[i].route.toString() === Router.prototype._routeToRegExp(route).toString()) { - return this.handlers[i]; - } - } - - return null; - }, - - // remove a route match in routes - unRoute: function (route) { - var index = _.findIndex(this.handlers, function (handler) { - return handler.route.test(route); + } + }); + + if (!hasAsync) { next(); } + } + } + + function flatMapComponents ( + matched, + fn + ) { + return flatten(matched.map(function (m) { + return Object.keys(m.components).map(function (key) { return fn( + m.components[key], + m.instances[key], + m, key + ); }) + })) + } + + function flatten (arr) { + return Array.prototype.concat.apply([], arr) + } + + var hasSymbol = + typeof Symbol === 'function' && + typeof Symbol.toStringTag === 'symbol'; + + function isESModule (obj) { + return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module') + } + + // in Webpack 2, require.ensure now also returns a Promise + // so the resolve/reject functions may get called an extra time + // if the user uses an arrow function shorthand that happens to + // return that Promise. + function once (fn) { + var called = false; + return function () { + var args = [], len = arguments.length; + while ( len-- ) args[ len ] = arguments[ len ]; + + if (called) { return } + called = true; + return fn.apply(this, args) + } + } + + /* */ + + var History = function History (router, base) { + this.router = router; + this.base = normalizeBase(base); + // start with a route object that stands for "nowhere" + this.current = START; + this.pending = null; + this.ready = false; + this.readyCbs = []; + this.readyErrorCbs = []; + this.errorCbs = []; + this.listeners = []; + }; + + History.prototype.listen = function listen (cb) { + this.cb = cb; + }; + + History.prototype.onReady = function onReady (cb, errorCb) { + if (this.ready) { + cb(); + } else { + this.readyCbs.push(cb); + if (errorCb) { + this.readyErrorCbs.push(errorCb); + } + } + }; + + History.prototype.onError = function onError (errorCb) { + this.errorCbs.push(errorCb); + }; + + History.prototype.transitionTo = function transitionTo ( + location, + onComplete, + onAbort + ) { + var this$1 = this; + + var route; + // catch redirect option https://github.com/vuejs/vue-router/issues/3201 + try { + route = this.router.match(location, this.current); + } catch (e) { + this.errorCbs.forEach(function (cb) { + cb(e); + }); + // Exception should still be thrown + throw e + } + var prev = this.current; + this.confirmTransition( + route, + function () { + this$1.updateRoute(route); + onComplete && onComplete(route); + this$1.ensureURL(); + this$1.router.afterHooks.forEach(function (hook) { + hook && hook(route, prev); + }); + + // fire ready cbs once + if (!this$1.ready) { + this$1.ready = true; + this$1.readyCbs.forEach(function (cb) { + cb(route); }); - if (index > -1) { - this.handlers.splice(index, 1); - } + } }, - - // Checks the current URL to see if it has changed, and if it has, - // calls `loadUrl`, normalizing across the hidden iframe. - checkUrl: function (e) { - var current = this.getFragment(); - try { - // getFragment 得到的值是编码过的,而this.fragment是没有编码过的 - // 英文路径没有问题,遇上中文和空格有问题了 - current = decodeURIComponent(current); - } catch(e) { + function (err) { + if (onAbort) { + onAbort(err); + } + if (err && !this$1.ready) { + // Initial redirection should not mark the history as ready yet + // because it's triggered by the redirection instead + // https://github.com/vuejs/vue-router/issues/3225 + // https://github.com/vuejs/vue-router/issues/3331 + if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) { + this$1.ready = true; + this$1.readyErrorCbs.forEach(function (cb) { + cb(err); + }); } - // If the user pressed the back button, the iframe's hash will have - // changed and we should use that for comparison. - if (current === this.fragment && this.iframe) { - current = this.getHash(this.iframe); + } + } + ); + }; + + History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) { + var this$1 = this; + + var current = this.current; + this.pending = route; + var abort = function (err) { + // changed after adding errors with + // https://github.com/vuejs/vue-router/pull/3047 before that change, + // redirect and aborted navigation would produce an err == null + if (!isNavigationFailure(err) && isError(err)) { + if (this$1.errorCbs.length) { + this$1.errorCbs.forEach(function (cb) { + cb(err); + }); + } else { + warn(false, 'uncaught error during route navigation:'); + console.error(err); + } + } + onAbort && onAbort(err); + }; + var lastRouteIndex = route.matched.length - 1; + var lastCurrentIndex = current.matched.length - 1; + if ( + isSameRoute(route, current) && + // in the case the route map has been dynamically appended to + lastRouteIndex === lastCurrentIndex && + route.matched[lastRouteIndex] === current.matched[lastCurrentIndex] + ) { + this.ensureURL(); + return abort(createNavigationDuplicatedError(current, route)) + } + + var ref = resolveQueue( + this.current.matched, + route.matched + ); + var updated = ref.updated; + var deactivated = ref.deactivated; + var activated = ref.activated; + + var queue = [].concat( + // in-component leave guards + extractLeaveGuards(deactivated), + // global before hooks + this.router.beforeHooks, + // in-component update hooks + extractUpdateHooks(updated), + // in-config enter guards + activated.map(function (m) { return m.beforeEnter; }), + // async components + resolveAsyncComponents(activated) + ); + + var iterator = function (hook, next) { + if (this$1.pending !== route) { + return abort(createNavigationCancelledError(current, route)) + } + try { + hook(route, current, function (to) { + if (to === false) { + // next(false) -> abort navigation, ensure current URL + this$1.ensureURL(true); + abort(createNavigationAbortedError(current, route)); + } else if (isError(to)) { + this$1.ensureURL(true); + abort(to); + } else if ( + typeof to === 'string' || + (typeof to === 'object' && + (typeof to.path === 'string' || typeof to.name === 'string')) + ) { + // next('/') or next({ path: '/' }) -> redirect + abort(createNavigationRedirectedError(current, route)); + if (typeof to === 'object' && to.replace) { + this$1.replace(to); + } else { + this$1.push(to); + } + } else { + // confirm transition and pass on the value + next(to); } - - if (current === this.fragment) return false; - if (this.iframe) this.navigate(current); - this.loadUrl(); - }, - - // Attempt to load the current URL fragment. If a route succeeds with a - // match, returns `true`. If no defined routes matches the fragment, - // returns `false`. - loadUrl: function (fragment) { - fragment = this.fragment = this.getFragment(fragment); - return _.some(this.handlers, function (handler) { - if (handler.route.test(fragment)) { - handler.callback(fragment); - return true; - } + }); + } catch (e) { + abort(e); + } + }; + + runQueue(queue, iterator, function () { + // wait until async components are resolved before + // extracting in-component enter guards + var enterGuards = extractEnterGuards(activated); + var queue = enterGuards.concat(this$1.router.resolveHooks); + runQueue(queue, iterator, function () { + if (this$1.pending !== route) { + return abort(createNavigationCancelledError(current, route)) + } + this$1.pending = null; + onComplete(route); + if (this$1.router.app) { + BI.nextTick(function () { + handleRouteEntered(route); }); - }, - - // Save a fragment into the hash history, or replace the URL state if the - // 'replace' option is passed. You are responsible for properly URL-encoding - // the fragment in advance. - // - // The options object can contain `trigger: true` if you wish to have the - // route callback be fired (not usually desirable), or `replace: true`, if - // you wish to modify the current URL without adding an entry to the history. - navigate: function (fragment, options) { - if (!History.started) return false; - if (!options || options === true) options = {trigger: !!options}; - - // Normalize the fragment. - fragment = this.getFragment(fragment || ""); - - // Don't include a trailing slash on the root. - var root = this.root; - if (fragment === "" || fragment.charAt(0) === "?") { - root = root.slice(0, -1) || "/"; + } + }); + }); + }; + + History.prototype.updateRoute = function updateRoute (route) { + this.current = route; + this.cb && this.cb(route); + }; + + History.prototype.setupListeners = function setupListeners () { + // Default implementation is empty + }; + + History.prototype.teardown = function teardown () { + // clean up event listeners + // https://github.com/vuejs/vue-router/issues/2341 + this.listeners.forEach(function (cleanupListener) { + cleanupListener(); + }); + this.listeners = []; + + // reset current history route + // https://github.com/vuejs/vue-router/issues/3294 + this.current = START; + this.pending = null; + }; + + function normalizeBase (base) { + if (!base) { + if (inBrowser) { + // respect tag + var baseEl = document.querySelector('base'); + base = (baseEl && baseEl.getAttribute('href')) || '/'; + // strip full URL origin + base = base.replace(/^https?:\/\/[^\/]+/, ''); + } else { + base = '/'; + } + } + // make sure there's the starting slash + if (base.charAt(0) !== '/') { + base = '/' + base; + } + // remove trailing slash + return base.replace(/\/$/, '') + } + + function resolveQueue ( + current, + next + ) { + var i; + var max = Math.max(current.length, next.length); + for (i = 0; i < max; i++) { + if (current[i] !== next[i]) { + break + } + } + return { + updated: next.slice(0, i), + activated: next.slice(i), + deactivated: current.slice(i) + } + } + + function extractGuards ( + records, + name, + bind, + reverse + ) { + var guards = flatMapComponents(records, function (def, instance, match, key) { + var guard = extractGuard(def, name); + if (guard) { + return Array.isArray(guard) + ? guard.map(function (guard) { return bind(guard, instance, match, key); }) + : bind(guard, instance, match, key) + } + }); + return flatten(reverse ? guards.reverse() : guards) + } + + function extractGuard ( + def, + key + ) { + if (typeof def !== 'function') { + // extend now so that global mixins are applied. + // def = _Vue.extend(def); + } + return def[key] + } + + function extractLeaveGuards (deactivated) { + return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true) + } + + function extractUpdateHooks (updated) { + return extractGuards(updated, 'beforeRouteUpdate', bindGuard) + } + + function bindGuard (guard, instance) { + if (instance) { + return function boundRouteGuard () { + return guard.apply(instance, arguments) + } + } + } + + function extractEnterGuards ( + activated + ) { + return extractGuards( + activated, + 'beforeRouteEnter', + function (guard, _, match, key) { + return bindEnterGuard(guard, match, key) + } + ) + } + + function bindEnterGuard ( + guard, + match, + key + ) { + return function routeEnterGuard (to, from, next) { + return guard(to, from, function (cb) { + if (typeof cb === 'function') { + if (!match.enteredCbs[key]) { + match.enteredCbs[key] = []; } - var url = root + fragment; - - // Strip the hash and decode for matching. - fragment = fragment.replace(pathStripper, "") - try { - fragment = decodeURI(fragment); - } catch(e) { + match.enteredCbs[key].push(cb); + } + next(cb); + }) + } + } + + /* */ + + var HTML5History = /*@__PURE__*/(function (History) { + function HTML5History (router, base) { + History.call(this, router, base); + + this._startLocation = getLocation(this.base); + } + + if ( History ) HTML5History.__proto__ = History; + HTML5History.prototype = Object.create( History && History.prototype ); + HTML5History.prototype.constructor = HTML5History; + + HTML5History.prototype.setupListeners = function setupListeners () { + var this$1 = this; + + if (this.listeners.length > 0) { + return + } + + var router = this.router; + var expectScroll = router.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll) { + this.listeners.push(setupScroll()); + } + + var handleRoutingEvent = function () { + var current = this$1.current; + + // Avoiding first `popstate` event dispatched in some browsers but first + // history route not updated since async guard at the same time. + var location = getLocation(this$1.base); + if (this$1.current === START && location === this$1._startLocation) { + return + } + + this$1.transitionTo(location, function (route) { + if (supportsScroll) { + handleScroll(router, route, current, true); } - - if (this.fragment === fragment) return; - this.fragment = fragment; - - // If pushState is available, we use it to set the fragment as a real URL. - if (this._hasPushState) { - this.history[options.replace ? "replaceState" : "pushState"]({}, document.title, url); - - // If hash changes haven't been explicitly disabled, update the hash - // fragment to store history. - } else if (this._wantsHashChange) { - this._updateHash(this.location, fragment, options.replace); - if (this.iframe && (fragment !== this.getHash(this.iframe))) { - // Opening and closing the iframe tricks IE7 and earlier to push a - // history entry on hash-tag change. When replace is true, we don't - // want this. - if (!options.replace) this.iframe.document.open().close(); - this._updateHash(this.iframe.location, fragment, options.replace); - } - - // If you've told us that you explicitly don't want fallback hashchange- - // based history, then `navigate` becomes a page refresh. - } else { - return this.location.assign(url); + }); + }; + window.addEventListener('popstate', handleRoutingEvent); + this.listeners.push(function () { + window.removeEventListener('popstate', handleRoutingEvent); + }); + }; + + HTML5History.prototype.go = function go (n) { + window.history.go(n); + }; + + HTML5History.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + pushState(cleanPath(this$1.base + route.fullPath)); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HTML5History.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo(location, function (route) { + replaceState(cleanPath(this$1.base + route.fullPath)); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, onAbort); + }; + + HTML5History.prototype.ensureURL = function ensureURL (push) { + if (getLocation(this.base) !== this.current.fullPath) { + var current = cleanPath(this.base + this.current.fullPath); + push ? pushState(current) : replaceState(current); + } + }; + + HTML5History.prototype.getCurrentLocation = function getCurrentLocation () { + return getLocation(this.base) + }; + + return HTML5History; + }(History)); + + function getLocation (base) { + var path = window.location.pathname; + var pathLowerCase = path.toLowerCase(); + var baseLowerCase = base.toLowerCase(); + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { + path = path.slice(base.length); + } + return (path || '/') + window.location.search + window.location.hash + } + + /* */ + + var HashHistory = /*@__PURE__*/(function (History) { + function HashHistory (router, base, fallback) { + History.call(this, router, base); + // check history fallback deeplinking + if (fallback && checkFallback(this.base)) { + return + } + ensureSlash(); + } + + if ( History ) HashHistory.__proto__ = History; + HashHistory.prototype = Object.create( History && History.prototype ); + HashHistory.prototype.constructor = HashHistory; + + // this is delayed until the app mounts + // to avoid the hashchange listener being fired too early + HashHistory.prototype.setupListeners = function setupListeners () { + var this$1 = this; + + if (this.listeners.length > 0) { + return + } + + var router = this.router; + var expectScroll = router.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll) { + this.listeners.push(setupScroll()); + } + + var handleRoutingEvent = function () { + var current = this$1.current; + if (!ensureSlash()) { + return + } + this$1.transitionTo(getHash(), function (route) { + if (supportsScroll) { + handleScroll(this$1.router, route, current, true); } - if (options.trigger) return this.loadUrl(fragment); - }, - - // Update the hash location, either replacing the current entry, or adding - // a new one to the browser history. - _updateHash: function (location, fragment, replace) { - if (replace) { - var href = location.href.replace(/(javascript:|#).*$/, ""); - location.replace(href + "#" + fragment); - } else { - // Some browsers require that `hash` contains a leading #. - location.hash = "#" + fragment; + if (!supportsPushState) { + replaceHash(route.fullPath); } + }); + }; + var eventType = supportsPushState ? 'popstate' : 'hashchange'; + window.addEventListener( + eventType, + handleRoutingEvent + ); + this.listeners.push(function () { + window.removeEventListener(eventType, handleRoutingEvent); + }); + }; + + HashHistory.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo( + location, + function (route) { + pushHash(route.fullPath); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, + onAbort + ); + }; + + HashHistory.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + var ref = this; + var fromRoute = ref.current; + this.transitionTo( + location, + function (route) { + replaceHash(route.fullPath); + handleScroll(this$1.router, route, fromRoute, false); + onComplete && onComplete(route); + }, + onAbort + ); + }; + + HashHistory.prototype.go = function go (n) { + window.history.go(n); + }; + + HashHistory.prototype.ensureURL = function ensureURL (push) { + var current = this.current.fullPath; + if (getHash() !== current) { + push ? pushHash(current) : replaceHash(current); + } + }; + + HashHistory.prototype.getCurrentLocation = function getCurrentLocation () { + return getHash() + }; + + return HashHistory; + }(History)); + + function checkFallback (base) { + var location = getLocation(base); + if (!/^\/#/.test(location)) { + window.location.replace(cleanPath(base + '/#' + location)); + return true + } + } + + function ensureSlash () { + var path = getHash(); + if (path.charAt(0) === '/') { + return true + } + replaceHash('/' + path); + return false + } + + function getHash () { + // We can't use window.location.hash here because it's not + // consistent across browsers - Firefox will pre-decode it! + var href = window.location.href; + var index = href.indexOf('#'); + // empty path + if (index < 0) { return '' } + + href = href.slice(index + 1); + + return href + } + + function getUrl (path) { + var href = window.location.href; + var i = href.indexOf('#'); + var base = i >= 0 ? href.slice(0, i) : href; + return (base + "#" + path) + } + + function pushHash (path) { + if (supportsPushState) { + pushState(getUrl(path)); + } else { + window.location.hash = path; + } + } + + function replaceHash (path) { + if (supportsPushState) { + replaceState(getUrl(path)); + } else { + window.location.replace(getUrl(path)); + } + } + + /* */ + + var AbstractHistory = /*@__PURE__*/(function (History) { + function AbstractHistory (router, base) { + History.call(this, router, base); + this.stack = []; + this.index = -1; + } + + if ( History ) AbstractHistory.__proto__ = History; + AbstractHistory.prototype = Object.create( History && History.prototype ); + AbstractHistory.prototype.constructor = AbstractHistory; + + AbstractHistory.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + this.transitionTo( + location, + function (route) { + this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route); + this$1.index++; + onComplete && onComplete(route); + }, + onAbort + ); + }; + + AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + this.transitionTo( + location, + function (route) { + this$1.stack = this$1.stack.slice(0, this$1.index).concat(route); + onComplete && onComplete(route); + }, + onAbort + ); + }; + + AbstractHistory.prototype.go = function go (n) { + var this$1 = this; + + var targetIndex = this.index + n; + if (targetIndex < 0 || targetIndex >= this.stack.length) { + return } - + var route = this.stack[targetIndex]; + this.confirmTransition( + route, + function () { + var prev = this$1.current; + this$1.index = targetIndex; + this$1.updateRoute(route); + this$1.router.afterHooks.forEach(function (hook) { + hook && hook(route, prev); + }); + }, + function (err) { + if (isNavigationFailure(err, NavigationFailureType.duplicated)) { + this$1.index = targetIndex; + } + } + ); + }; + + AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () { + var current = this.stack[this.stack.length - 1]; + return current ? current.fullPath : '/' + }; + + AbstractHistory.prototype.ensureURL = function ensureURL () { + // noop + }; + + return AbstractHistory; + }(History)); + + /* */ + + var VueRouter = function VueRouter (options) { + if ( options === void 0 ) options = {}; + + this.app = null; + this.apps = []; + this.options = options; + this.beforeHooks = []; + this.resolveHooks = []; + this.afterHooks = []; + this.matcher = createMatcher(options.routes || [], this); + + var mode = options.mode || 'hash'; + this.fallback = + mode === 'history' && !supportsPushState && options.fallback !== false; + if (this.fallback) { + mode = 'hash'; + } + if (!inBrowser) { + mode = 'abstract'; + } + this.mode = mode; + + switch (mode) { + case 'history': + this.history = new HTML5History(this, options.base); + break + case 'hash': + this.history = new HashHistory(this, options.base, this.fallback); + break + case 'abstract': + this.history = new AbstractHistory(this, options.base); + break + default: + { + assert(false, ("invalid mode: " + mode)); + } + } + }; + + var prototypeAccessors = { currentRoute: { configurable: true } }; + + VueRouter.prototype.match = function match (raw, current, redirectedFrom) { + return this.matcher.match(raw, current, redirectedFrom) + }; + + prototypeAccessors.currentRoute.get = function () { + return this.history && this.history.current + }; + + VueRouter.prototype.init = function init (app /* Vue component instance */) { + var this$1 = this; + + this.apps.push(app); + + // set up app destroyed handler + // https://github.com/vuejs/vue-router/issues/2639 + app.once('hook:destroyed', function () { + // clean out app from this.apps array once destroyed + var index = this$1.apps.indexOf(app); + if (index > -1) { this$1.apps.splice(index, 1); } + // ensure we still have a main app or null if no apps + // we do not release the router so it can be reused + if (this$1.app === app) { this$1.app = this$1.apps[0] || null; } + + if (!this$1.app) { this$1.history.teardown(); } + }); + + // main app previously initialized + // return as we don't need to set up new history listener + if (this.app) { + return + } + + this.app = app; + + var history = this.history; + + if (history instanceof HTML5History || history instanceof HashHistory) { + var handleInitialScroll = function (routeOrError) { + var from = history.current; + var expectScroll = this$1.options.scrollBehavior; + var supportsScroll = supportsPushState && expectScroll; + + if (supportsScroll && 'fullPath' in routeOrError) { + handleScroll(this$1, routeOrError, from, false); + } + }; + var setupListeners = function (routeOrError) { + history.setupListeners(); + handleInitialScroll(routeOrError); + }; + history.transitionTo( + history.getCurrentLocation(), + setupListeners, + setupListeners + ); + } + + history.listen(function (route) { + this$1.apps.forEach(function (app) { + app._router.history.current = route; + }); + }); + }; + + VueRouter.prototype.beforeEach = function beforeEach (fn) { + return registerHook(this.beforeHooks, fn) + }; + + VueRouter.prototype.beforeResolve = function beforeResolve (fn) { + return registerHook(this.resolveHooks, fn) + }; + + VueRouter.prototype.afterEach = function afterEach (fn) { + return registerHook(this.afterHooks, fn) + }; + + VueRouter.prototype.onReady = function onReady (cb, errorCb) { + this.history.onReady(cb, errorCb); + }; + + VueRouter.prototype.onError = function onError (errorCb) { + this.history.onError(errorCb); + }; + + VueRouter.prototype.push = function push (location, onComplete, onAbort) { + var this$1 = this; + + // $flow-disable-line + if (!onComplete && !onAbort && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + this$1.history.push(location, resolve, reject); + }) + } else { + this.history.push(location, onComplete, onAbort); + } + }; + + VueRouter.prototype.replace = function replace (location, onComplete, onAbort) { + var this$1 = this; + + // $flow-disable-line + if (!onComplete && !onAbort && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + this$1.history.replace(location, resolve, reject); + }) + } else { + this.history.replace(location, onComplete, onAbort); + } + }; + + VueRouter.prototype.go = function go (n) { + this.history.go(n); + }; + + VueRouter.prototype.back = function back () { + this.go(-1); + }; + + VueRouter.prototype.forward = function forward () { + this.go(1); + }; + + VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) { + var route = to + ? to.matched + ? to + : this.resolve(to).route + : this.currentRoute; + if (!route) { + return [] + } + return [].concat.apply( + [], + route.matched.map(function (m) { + return Object.keys(m.components).map(function (key) { + return m.components[key] + }) + }) + ) + }; + + VueRouter.prototype.resolve = function resolve ( + to, + current, + append + ) { + current = current || this.history.current; + var location = normalizeLocation(to, current, append, this); + var route = this.match(location, current); + var fullPath = route.redirectedFrom || route.fullPath; + var base = this.history.base; + var href = createHref(base, fullPath, this.mode); + return { + location: location, + route: route, + href: href, + // for backwards compat + normalizedTo: location, + resolved: route + } + }; + + VueRouter.prototype.getRoutes = function getRoutes () { + return this.matcher.getRoutes() + }; + + VueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) { + this.matcher.addRoute(parentOrRoute, route); + if (this.history.current !== START) { + this.history.transitionTo(this.history.getCurrentLocation()); + } + }; + + Object.defineProperties( VueRouter.prototype, prototypeAccessors ); + + function registerHook (list, fn) { + list.push(fn); + return function () { + var i = list.indexOf(fn); + if (i > -1) { list.splice(i, 1); } + } + } + + function createHref (base, fullPath, mode) { + var path = mode === 'hash' ? '#' + fullPath : fullPath; + return base ? cleanPath(base + '/' + path) : path + } + + // VueRouter.install = install; + VueRouter.version = '3.5.2'; + VueRouter.isNavigationFailure = isNavigationFailure; + VueRouter.NavigationFailureType = NavigationFailureType; + VueRouter.START_LOCATION = START; + + + var $router, cbs = []; + BI.RouterWidget = BI.inherit(BI.Widget, { + init: function () { + this.$router = this._router = BI.Router.$router = $router = new VueRouter({ + routes: this.options.routes + }); + this.$router.beforeEach(function (to, from, next) { + if (to.matched.length === 0) { + //如果上级也未匹配到路由则跳转主页面,如果上级能匹配到则转上级路由 + from.path ? next({ path: from.path }) : next('/'); + } else { + //如果匹配到正确跳转 + next(); + } + }); + this.$router.afterEach(function () { + cbs.forEach(function (cb) {cb();}); + }); + this.$router.init(this); + } + }); + BI.shortcut("bi.router", BI.RouterWidget); + + BI.RouterView = BI.inherit(BI.Widget, { + props: { + baseCls: 'bi-router-view', + deps: 0, + name: 'default' + }, + created: function () { + var self = this, o = this.options; + cbs.push(this._callbackListener = function () { + var current = $router.history.current; + // 匹配的路径名(/component/:id) + var matchedPath = current.matched[o.deps] && current.matched[o.deps].path; + var component = current.matched[o.deps] && current.matched[o.deps].components[o.name]; + + if (BI.isNotNull(component)) { + if (matchedPath) { + BI.each(current.params, function (key, value) { + // 把 :id 替换成具体的值(/component/demo.td) + matchedPath = matchedPath.replace(`:${key}`, value); + }); + } + self.tab.setSelect(matchedPath || "/"); + } + }); + // "bi.router_view"是由"bi.tab"实现的,cardCreator是一个异步过程,在"bi.router_view"创建之前,cbs里不会有创建子组件的方法,在初始化路由时,没法直接渲染到子组件,所以这里手动加了一次调用 + this._callbackListener(); + }, + render: function () { + var self = this, o = this.options; + return { + type: "bi.tab", + ref: function (_ref) { + self.tab = _ref; + }, + single: o.single, // 是不是单页面 + keepAlives: o.keepAlives, + logic: { + dynamic: false + }, + showIndex: false, + cardCreator: function (v) { + return $router.history.current.matched[o.deps].components[o.name]; + } + }; + }, + destroyed: function () { + BI.remove(cbs, this._callbackListener); + } }); - - // Create the default BI.history. - BI.history = new History; -}()); \ No newline at end of file + BI.shortcut("bi.router_view", BI.RouterView); + + BI.Router = BI.Router || VueRouter; + BI.Router.isSameRoute = isSameRoute; + return VueRouter; + + }))); + \ No newline at end of file diff --git a/src/snabbdom/element2Snabbdom.js b/src/snabbdom/element2Snabbdom.js deleted file mode 100644 index 1a99bdc53..000000000 --- a/src/snabbdom/element2Snabbdom.js +++ /dev/null @@ -1,49 +0,0 @@ -!function () { - var patch = BI.Snabbdom.init([BI.Snabbdom.attributesModule, BI.Snabbdom.classModule, BI.Snabbdom.datasetModule, BI.Snabbdom.propsModule, BI.Snabbdom.styleModule, BI.Snabbdom.eventListenersModule]); - BI.Element2Vnode = function (parentNode) { - if (parentNode.nodeType === 3) { - return BI.Snabbdom.vnode(undefined, undefined, undefined, parentNode.textContent, parentNode); - } - var data = BI.jQuery._data(parentNode); - var on = {}; - BI.each(data && data.events, function (eventName, events) { - on[eventName] = function () { - var ob = this, args = arguments; - BI.each(events, function (i, ev) { - ev.handler.apply(ob, args); - }); - }; - }); - var attrs = {}; - var elmAttrs = parentNode.attributes; - var elmChildren = parentNode.childNodes; - var key = parentNode.getAttribute("key"); - for (var i = 0, n = elmAttrs.length; i < n; i++) { - var name = elmAttrs[i].nodeName; - if (name !== "id" && name !== "class") { - attrs[name] = elmAttrs[i].nodeValue; - } - } - var vnode = BI.Snabbdom.vnode(parentNode.nodeName, { - class: BI.makeObject(parentNode.classList), - attrs: attrs, - key: key, - on: on, - hook: { - create: function () { - BI.each(BI.Widget._renderEngine.createElement(parentNode).data("__widgets"), function (i, w) { - w.element = BI.Widget._renderEngine.createElement(vnode.elm); - }); - } - } - }, BI.map(elmChildren, function (i, childNode) { - return BI.Element2Vnode(childNode); - }), undefined, parentNode); - return vnode; - }; - - BI.patchVNode = function (element, node) { - patch(element, node); - }; -}(); - diff --git a/src/snabbdom/snabbdom.js b/src/snabbdom/snabbdom.js deleted file mode 100644 index 4965fcad5..000000000 --- a/src/snabbdom/snabbdom.js +++ /dev/null @@ -1,1052 +0,0 @@ -(function (global, factory) { - factory(BI.Snabbdom = BI.Snabbdom || {}); -})(this, function (exports) { - 'use strict'; - - function createElement(tagName) { - return document.createElement(tagName); - } - function createElementNS(namespaceURI, qualifiedName) { - return document.createElementNS(namespaceURI, qualifiedName); - } - function createTextNode(text) { - return document.createTextNode(text); - } - function createComment(text) { - return document.createComment(text); - } - function insertBefore(parentNode, newNode, referenceNode) { - parentNode.insertBefore(newNode, referenceNode); - } - function removeChild(node, child) { - node.removeChild(child); - } - function appendChild(node, child) { - node.appendChild(child); - } - function parentNode(node) { - return node.parentNode; - } - function nextSibling(node) { - return node.nextSibling; - } - function tagName(elm) { - return elm.tagName; - } - function setTextContent(node, text) { - node.textContent = text; - } - function getTextContent(node) { - return node.textContent; - } - function isElement(node) { - return node.nodeType === 1; - } - function isText(node) { - return node.nodeType === 3; - } - function isComment(node) { - return node.nodeType === 8; - } - var htmlDomApi = { - createElement: createElement, - createElementNS: createElementNS, - createTextNode: createTextNode, - createComment: createComment, - insertBefore: insertBefore, - removeChild: removeChild, - appendChild: appendChild, - parentNode: parentNode, - nextSibling: nextSibling, - tagName: tagName, - setTextContent: setTextContent, - getTextContent: getTextContent, - isElement: isElement, - isText: isText, - isComment: isComment - }; - - function vnode(sel, data, children, text, elm) { - var key = data === undefined ? undefined : data.key; - return { sel: sel, data: data, children: children, text: text, elm: elm, key: key }; - } - - var array = Array.isArray; - function primitive(s) { - return typeof s === "string" || typeof s === "number"; - } - - function isUndef(s) { - return s === undefined; - } - function isDef(s) { - return s !== undefined; - } - var emptyNode = vnode("", {}, [], undefined, undefined); - function sameVnode(vnode1, vnode2) { - return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel; - } - function isVnode(vnode) { - return vnode.sel !== undefined; - } - function createKeyToOldIdx(children, beginIdx, endIdx) { - var _a; - var map = {}; - for (var i = beginIdx; i <= endIdx; ++i) { - var key = (_a = children[i]) === null || _a === void 0 ? void 0 : _a.key; - if (key !== undefined) { - map[key] = i; - } - } - return map; - } - var hooks = ["create", "update", "remove", "destroy", "pre", "post"]; - function init(modules, domApi) { - var i = void 0; - var j = void 0; - var cbs = { - create: [], - update: [], - remove: [], - destroy: [], - pre: [], - post: [] - }; - var api = domApi !== undefined ? domApi : htmlDomApi; - for (i = 0; i < hooks.length; ++i) { - cbs[hooks[i]] = []; - for (j = 0; j < modules.length; ++j) { - var hook = modules[j][hooks[i]]; - if (hook !== undefined) { - cbs[hooks[i]].push(hook); - } - } - } - function emptyNodeAt(elm) { - var id = elm.id ? "#" + elm.id : ""; - var c = elm.className ? "." + elm.className.split(" ").join(".") : ""; - return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm); - } - function createRmCb(childElm, listeners) { - return function rmCb() { - if (--listeners === 0) { - var parent = api.parentNode(childElm); - api.removeChild(parent, childElm); - } - }; - } - function createElm(vnode, insertedVnodeQueue) { - var _a, _b; - var i = void 0; - var data = vnode.data; - if (data !== undefined) { - var _init = (_a = data.hook) === null || _a === void 0 ? void 0 : _a.init; - if (isDef(_init)) { - _init(vnode); - data = vnode.data; - } - } - var children = vnode.children; - var sel = vnode.sel; - if (sel === "!") { - if (isUndef(vnode.text)) { - vnode.text = ""; - } - vnode.elm = api.createComment(vnode.text); - } else if (sel !== undefined) { - // Parse selector - var hashIdx = sel.indexOf("#"); - var dotIdx = sel.indexOf(".", hashIdx); - var hash = hashIdx > 0 ? hashIdx : sel.length; - var dot = dotIdx > 0 ? dotIdx : sel.length; - var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel; - var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag) : api.createElement(tag); - if (hash < dot) elm.setAttribute("id", sel.slice(hash + 1, dot)); - if (dotIdx > 0) elm.setAttribute("class", sel.slice(dot + 1).replace(/\./g, " ")); - for (i = 0; i < cbs.create.length; ++i) { - cbs.create[i](emptyNode, vnode); - }if (array(children)) { - for (i = 0; i < children.length; ++i) { - var ch = children[i]; - if (ch != null) { - api.appendChild(elm, createElm(ch, insertedVnodeQueue)); - } - } - } else if (primitive(vnode.text)) { - api.appendChild(elm, api.createTextNode(vnode.text)); - } - var _hook = vnode.data.hook; - if (isDef(_hook)) { - (_b = _hook.create) === null || _b === void 0 ? void 0 : _b.call(_hook, emptyNode, vnode); - if (_hook.insert) { - insertedVnodeQueue.push(vnode); - } - } - } else { - vnode.elm = api.createTextNode(vnode.text); - } - return vnode.elm; - } - function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) { - for (; startIdx <= endIdx; ++startIdx) { - var ch = vnodes[startIdx]; - if (ch != null) { - api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before); - } - } - } - function invokeDestroyHook(vnode) { - var _a, _b; - var data = vnode.data; - if (data !== undefined) { - (_b = (_a = data === null || data === void 0 ? void 0 : data.hook) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, vnode); - for (var _i = 0; _i < cbs.destroy.length; ++_i) { - cbs.destroy[_i](vnode); - }if (vnode.children !== undefined) { - for (var _j = 0; _j < vnode.children.length; ++_j) { - var child = vnode.children[_j]; - if (child != null && typeof child !== "string") { - invokeDestroyHook(child); - } - } - } - } - } - function removeVnodes(parentElm, vnodes, startIdx, endIdx) { - var _a, _b; - for (; startIdx <= endIdx; ++startIdx) { - var listeners = void 0; - var rm = void 0; - var ch = vnodes[startIdx]; - if (ch != null) { - if (isDef(ch.sel)) { - invokeDestroyHook(ch); - listeners = cbs.remove.length + 1; - rm = createRmCb(ch.elm, listeners); - for (var _i2 = 0; _i2 < cbs.remove.length; ++_i2) { - cbs.remove[_i2](ch, rm); - }var removeHook = (_b = (_a = ch === null || ch === void 0 ? void 0 : ch.data) === null || _a === void 0 ? void 0 : _a.hook) === null || _b === void 0 ? void 0 : _b.remove; - if (isDef(removeHook)) { - removeHook(ch, rm); - } else { - rm(); - } - } else { - // Text node - api.removeChild(parentElm, ch.elm); - } - } - } - } - function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) { - var oldStartIdx = 0; - var newStartIdx = 0; - var oldEndIdx = oldCh.length - 1; - var oldStartVnode = oldCh[0]; - var oldEndVnode = oldCh[oldEndIdx]; - var newEndIdx = newCh.length - 1; - var newStartVnode = newCh[0]; - var newEndVnode = newCh[newEndIdx]; - var oldKeyToIdx = void 0; - var idxInOld = void 0; - var elmToMove = void 0; - var before = void 0; - while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) { - if (oldStartVnode == null) { - oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left - } else if (oldEndVnode == null) { - oldEndVnode = oldCh[--oldEndIdx]; - } else if (newStartVnode == null) { - newStartVnode = newCh[++newStartIdx]; - } else if (newEndVnode == null) { - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode(oldStartVnode, newStartVnode)) { - patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue); - oldStartVnode = oldCh[++oldStartIdx]; - newStartVnode = newCh[++newStartIdx]; - } else if (sameVnode(oldEndVnode, newEndVnode)) { - patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue); - oldEndVnode = oldCh[--oldEndIdx]; - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode(oldStartVnode, newEndVnode)) { - // Vnode moved right - patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue); - api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm)); - oldStartVnode = oldCh[++oldStartIdx]; - newEndVnode = newCh[--newEndIdx]; - } else if (sameVnode(oldEndVnode, newStartVnode)) { - // Vnode moved left - patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue); - api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm); - oldEndVnode = oldCh[--oldEndIdx]; - newStartVnode = newCh[++newStartIdx]; - } else { - if (oldKeyToIdx === undefined) { - oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); - } - idxInOld = oldKeyToIdx[newStartVnode.key]; - if (isUndef(idxInOld)) { - // New element - api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm); - } else { - elmToMove = oldCh[idxInOld]; - if (elmToMove.sel !== newStartVnode.sel) { - api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm); - } else { - patchVnode(elmToMove, newStartVnode, insertedVnodeQueue); - oldCh[idxInOld] = undefined; - api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm); - } - } - newStartVnode = newCh[++newStartIdx]; - } - } - if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) { - if (oldStartIdx > oldEndIdx) { - before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm; - addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue); - } else { - removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx); - } - } - } - function patchVnode(oldVnode, vnode, insertedVnodeQueue) { - var _a, _b, _c, _d, _e; - var hook = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.hook; - (_b = hook === null || hook === void 0 ? void 0 : hook.prepatch) === null || _b === void 0 ? void 0 : _b.call(hook, oldVnode, vnode); - var elm = vnode.elm = oldVnode.elm; - var oldCh = oldVnode.children; - var ch = vnode.children; - if (oldVnode === vnode) return; - if (vnode.data !== undefined) { - for (var _i3 = 0; _i3 < cbs.update.length; ++_i3) { - cbs.update[_i3](oldVnode, vnode); - }(_d = (_c = vnode.data.hook) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c, oldVnode, vnode); - } - if (isUndef(vnode.text)) { - if (isDef(oldCh) && isDef(ch)) { - if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue); - } else if (isDef(ch)) { - if (isDef(oldVnode.text)) api.setTextContent(elm, ""); - addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue); - } else if (isDef(oldCh)) { - removeVnodes(elm, oldCh, 0, oldCh.length - 1); - } else if (isDef(oldVnode.text)) { - api.setTextContent(elm, ""); - } - } else if (oldVnode.text !== vnode.text) { - if (isDef(oldCh)) { - removeVnodes(elm, oldCh, 0, oldCh.length - 1); - } - api.setTextContent(elm, vnode.text); - } - (_e = hook === null || hook === void 0 ? void 0 : hook.postpatch) === null || _e === void 0 ? void 0 : _e.call(hook, oldVnode, vnode); - } - return function patch(oldVnode, vnode) { - var i = void 0, - elm = void 0, - parent = void 0; - var insertedVnodeQueue = []; - for (i = 0; i < cbs.pre.length; ++i) { - cbs.pre[i](); - }if (!isVnode(oldVnode)) { - oldVnode = emptyNodeAt(oldVnode); - } - if (sameVnode(oldVnode, vnode)) { - patchVnode(oldVnode, vnode, insertedVnodeQueue); - } else { - elm = oldVnode.elm; - parent = api.parentNode(elm); - createElm(vnode, insertedVnodeQueue); - if (parent !== null) { - api.insertBefore(parent, vnode.elm, api.nextSibling(elm)); - removeVnodes(parent, [oldVnode], 0, 0); - } - } - for (i = 0; i < insertedVnodeQueue.length; ++i) { - insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]); - } - for (i = 0; i < cbs.post.length; ++i) { - cbs.post[i](); - }return vnode; - }; - } - - function addNS(data, children, sel) { - data.ns = "http://www.w3.org/2000/svg"; - if (sel !== "foreignObject" && children !== undefined) { - for (var i = 0; i < children.length; ++i) { - var childData = children[i].data; - if (childData !== undefined) { - addNS(childData, children[i].children, children[i].sel); - } - } - } - } - function h(sel, b, c) { - var data = {}; - var children = void 0; - var text = void 0; - var i = void 0; - if (c !== undefined) { - if (b !== null) { - data = b; - } - if (array(c)) { - children = c; - } else if (primitive(c)) { - text = c; - } else if (c && c.sel) { - children = [c]; - } - } else if (b !== undefined && b !== null) { - if (array(b)) { - children = b; - } else if (primitive(b)) { - text = b; - } else if (b && b.sel) { - children = [b]; - } else { - data = b; - } - } - if (children !== undefined) { - for (i = 0; i < children.length; ++i) { - if (primitive(children[i])) children[i] = vnode(undefined, undefined, undefined, children[i], undefined); - } - } - if (sel[0] === "s" && sel[1] === "v" && sel[2] === "g" && (sel.length === 3 || sel[3] === "." || sel[3] === "#")) { - addNS(data, children, sel); - } - return vnode(sel, data, children, text, undefined); - } - - function copyToThunk(vnode, thunk) { - vnode.data.fn = thunk.data.fn; - vnode.data.args = thunk.data.args; - thunk.data = vnode.data; - thunk.children = vnode.children; - thunk.text = vnode.text; - thunk.elm = vnode.elm; - } - function init$1(thunk) { - var cur = thunk.data; - var vnode = cur.fn.apply(undefined, cur.args); - copyToThunk(vnode, thunk); - } - function prepatch(oldVnode, thunk) { - var i = void 0; - var old = oldVnode.data; - var cur = thunk.data; - var oldArgs = old.args; - var args = cur.args; - if (old.fn !== cur.fn || oldArgs.length !== args.length) { - copyToThunk(cur.fn.apply(undefined, args), thunk); - return; - } - for (i = 0; i < args.length; ++i) { - if (oldArgs[i] !== args[i]) { - copyToThunk(cur.fn.apply(undefined, args), thunk); - return; - } - } - copyToThunk(oldVnode, thunk); - } - var thunk = function thunk(sel, key, fn, args) { - if (args === undefined) { - args = fn; - fn = key; - key = undefined; - } - return h(sel, { - key: key, - hook: { init: init$1, prepatch: prepatch }, - fn: fn, - args: args - }); - }; - - function pre(vnode, newVnode) { - var attachData = vnode.data.attachData; - // Copy created placeholder and real element from old vnode - newVnode.data.attachData.placeholder = attachData.placeholder; - newVnode.data.attachData.real = attachData.real; - // Mount real element in vnode so the patch process operates on it - vnode.elm = vnode.data.attachData.real; - } - function post(_, vnode) { - // Mount dummy placeholder in vnode so potential reorders use it - vnode.elm = vnode.data.attachData.placeholder; - } - function destroy(vnode) { - // Remove placeholder - if (vnode.elm !== undefined) { - vnode.elm.parentNode.removeChild(vnode.elm); - } - // Remove real element from where it was inserted - vnode.elm = vnode.data.attachData.real; - } - function create(_, vnode) { - var real = vnode.elm; - var attachData = vnode.data.attachData; - var placeholder = document.createElement("span"); - // Replace actual element with dummy placeholder - // Snabbdom will then insert placeholder instead - vnode.elm = placeholder; - attachData.target.appendChild(real); - attachData.real = real; - attachData.placeholder = placeholder; - } - function attachTo(target, vnode) { - if (vnode.data === undefined) vnode.data = {}; - if (vnode.data.hook === undefined) vnode.data.hook = {}; - var data = vnode.data; - var hook = vnode.data.hook; - data.attachData = { target: target, placeholder: undefined, real: undefined }; - hook.create = create; - hook.prepatch = pre; - hook.postpatch = post; - hook.destroy = destroy; - return vnode; - } - - function toVNode(node, domApi) { - var api = domApi !== undefined ? domApi : htmlDomApi; - var text = void 0; - if (api.isElement(node)) { - var id = node.id ? "#" + node.id : ""; - var cn = node.getAttribute("class"); - var c = cn ? "." + cn.split(" ").join(".") : ""; - var sel = api.tagName(node).toLowerCase() + id + c; - var attrs = {}; - var children = []; - var name = void 0; - var i = void 0, - n = void 0; - var elmAttrs = node.attributes; - var elmChildren = node.childNodes; - for (i = 0, n = elmAttrs.length; i < n; i++) { - name = elmAttrs[i].nodeName; - if (name !== "id" && name !== "class") { - attrs[name] = elmAttrs[i].nodeValue; - } - } - for (i = 0, n = elmChildren.length; i < n; i++) { - children.push(toVNode(elmChildren[i], domApi)); - } - return vnode(sel, { attrs: attrs }, children, undefined, node); - } else if (api.isText(node)) { - text = api.getTextContent(node); - return vnode(undefined, undefined, undefined, text, node); - } else if (api.isComment(node)) { - text = api.getTextContent(node); - return vnode("!", {}, [], text, node); - } else { - return vnode("", {}, [], undefined, node); - } - } - - var xlinkNS = "http://www.w3.org/1999/xlink"; - var xmlNS = "http://www.w3.org/XML/1998/namespace"; - var colonChar = 58; - var xChar = 120; - function updateAttrs(oldVnode, vnode) { - var key = void 0; - var elm = vnode.elm; - var oldAttrs = oldVnode.data.attrs; - var attrs = vnode.data.attrs; - if (!oldAttrs && !attrs) return; - if (oldAttrs === attrs) return; - oldAttrs = oldAttrs || {}; - attrs = attrs || {}; - // update modified attributes, add new attributes - for (key in attrs) { - var cur = attrs[key]; - var old = oldAttrs[key]; - if (old !== cur) { - if (cur === true) { - elm.setAttribute(key, ""); - } else if (cur === false) { - elm.removeAttribute(key); - } else { - if (key.charCodeAt(0) !== xChar) { - elm.setAttribute(key, cur); - } else if (key.charCodeAt(3) === colonChar) { - // Assume xml namespace - elm.setAttributeNS(xmlNS, key, cur); - } else if (key.charCodeAt(5) === colonChar) { - // Assume xlink namespace - elm.setAttributeNS(xlinkNS, key, cur); - } else { - elm.setAttribute(key, cur); - } - } - } - } - // remove removed attributes - // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value) - // the other option is to remove all attributes with value == undefined - for (key in oldAttrs) { - if (!(key in attrs)) { - elm.removeAttribute(key); - } - } - } - var attributesModule = { create: updateAttrs, update: updateAttrs }; - - function updateClass(oldVnode, vnode) { - var cur = void 0; - var name = void 0; - var elm = vnode.elm; - var oldClass = oldVnode.data["class"]; - var klass = vnode.data["class"]; - if (!oldClass && !klass) return; - if (oldClass === klass) return; - oldClass = oldClass || {}; - klass = klass || {}; - for (name in oldClass) { - if (oldClass[name] && !Object.prototype.hasOwnProperty.call(klass, name)) { - // was `true` and now not provided - elm.classList.remove(name); - } - } - for (name in klass) { - cur = klass[name]; - if (cur !== oldClass[name]) { - elm.classList[cur ? "add" : "remove"](name); - } - } - } - var classModule = { create: updateClass, update: updateClass }; - - var CAPS_REGEX = /[A-Z]/g; - function updateDataset(oldVnode, vnode) { - var elm = vnode.elm; - var oldDataset = oldVnode.data.dataset; - var dataset = vnode.data.dataset; - var key = void 0; - if (!oldDataset && !dataset) return; - if (oldDataset === dataset) return; - oldDataset = oldDataset || {}; - dataset = dataset || {}; - var d = elm.dataset; - for (key in oldDataset) { - if (!dataset[key]) { - if (d) { - if (key in d) { - delete d[key]; - } - } else { - elm.removeAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase()); - } - } - } - for (key in dataset) { - if (oldDataset[key] !== dataset[key]) { - if (d) { - d[key] = dataset[key]; - } else { - elm.setAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase(), dataset[key]); - } - } - } - } - var datasetModule = { create: updateDataset, update: updateDataset }; - - function invokeHandler(handler, vnode, event) { - if (typeof handler === "function") { - // call function handler - handler.call(vnode, event, vnode); - } else if (typeof handler === "object") { - // call multiple handlers - for (var i = 0; i < handler.length; i++) { - invokeHandler(handler[i], vnode, event); - } - } - } - function handleEvent(event, vnode) { - var name = event.type; - var on = vnode.data.on; - // call event handler(s) if exists - if (on && on[name]) { - invokeHandler(on[name], vnode, event); - } - } - function createListener() { - return function handler(event) { - handleEvent(event, handler.vnode); - }; - } - function updateEventListeners(oldVnode, vnode) { - var oldOn = oldVnode.data.on; - var oldListener = oldVnode.listener; - var oldElm = oldVnode.elm; - var on = vnode && vnode.data.on; - var elm = vnode && vnode.elm; - var name = void 0; - // optimization for reused immutable handlers - if (oldOn === on) { - return; - } - // remove existing listeners which no longer used - if (oldOn && oldListener) { - // if element changed or deleted we remove all existing listeners unconditionally - if (!on) { - for (name in oldOn) { - // remove listener if element was changed or existing listeners removed - oldElm.removeEventListener(name, oldListener, false); - } - } else { - for (name in oldOn) { - // remove listener if existing listener removed - if (!on[name]) { - oldElm.removeEventListener(name, oldListener, false); - } - } - } - } - // add new listeners which has not already attached - if (on) { - // reuse existing listener or create new - var listener = vnode.listener = oldVnode.listener || createListener(); - // update vnode for listener - listener.vnode = vnode; - // if element changed or added we add all needed listeners unconditionally - if (!oldOn) { - for (name in on) { - // add listener if element was changed or new listeners added - elm.addEventListener(name, listener, false); - } - } else { - for (name in on) { - // add listener if new listener added - if (!oldOn[name]) { - elm.addEventListener(name, listener, false); - } - } - } - } - } - var eventListenersModule = { - create: updateEventListeners, - update: updateEventListeners, - destroy: updateEventListeners - }; - - var raf = typeof window !== "undefined" && window.requestAnimationFrame || setTimeout; - var nextFrame = function nextFrame(fn) { - raf(function () { - raf(fn); - }); - }; - function setNextFrame(obj, prop, val) { - nextFrame(function () { - obj[prop] = val; - }); - } - function getTextNodeRect(textNode) { - var rect = void 0; - if (document.createRange) { - var range = document.createRange(); - range.selectNodeContents(textNode); - if (range.getBoundingClientRect) { - rect = range.getBoundingClientRect(); - } - } - return rect; - } - function calcTransformOrigin(isTextNode, textRect, boundingRect) { - if (isTextNode) { - if (textRect) { - // calculate pixels to center of text from left edge of bounding box - var relativeCenterX = textRect.left + textRect.width / 2 - boundingRect.left; - var relativeCenterY = textRect.top + textRect.height / 2 - boundingRect.top; - return relativeCenterX + "px " + relativeCenterY + "px"; - } - } - return "0 0"; // top left - } - function getTextDx(oldTextRect, newTextRect) { - if (oldTextRect && newTextRect) { - return oldTextRect.left + oldTextRect.width / 2 - (newTextRect.left + newTextRect.width / 2); - } - return 0; - } - function getTextDy(oldTextRect, newTextRect) { - if (oldTextRect && newTextRect) { - return oldTextRect.top + oldTextRect.height / 2 - (newTextRect.top + newTextRect.height / 2); - } - return 0; - } - function isTextElement(elm) { - return elm.childNodes.length === 1 && elm.childNodes[0].nodeType === 3; - } - var removed = void 0; - var created = void 0; - function pre$1() { - removed = {}; - created = []; - } - function create$1(oldVnode, vnode) { - var hero = vnode.data.hero; - if (hero && hero.id) { - created.push(hero.id); - created.push(vnode); - } - } - function destroy$1(vnode) { - var hero = vnode.data.hero; - if (hero && hero.id) { - var elm = vnode.elm; - vnode.isTextNode = isTextElement(elm); // is this a text node? - vnode.boundingRect = elm.getBoundingClientRect(); // save the bounding rectangle to a new property on the vnode - vnode.textRect = vnode.isTextNode ? getTextNodeRect(elm.childNodes[0]) : null; // save bounding rect of inner text node - var computedStyle = window.getComputedStyle(elm, undefined); // get current styles (includes inherited properties) - vnode.savedStyle = JSON.parse(JSON.stringify(computedStyle)); // save a copy of computed style values - removed[hero.id] = vnode; - } - } - function post$1() { - var i = void 0, - id = void 0, - newElm = void 0, - oldVnode = void 0, - oldElm = void 0, - hRatio = void 0, - wRatio = void 0, - oldRect = void 0, - newRect = void 0, - dx = void 0, - dy = void 0, - origTransform = void 0, - origTransition = void 0, - newStyle = void 0, - oldStyle = void 0, - newComputedStyle = void 0, - isTextNode = void 0, - newTextRect = void 0, - oldTextRect = void 0; - for (i = 0; i < created.length; i += 2) { - id = created[i]; - newElm = created[i + 1].elm; - oldVnode = removed[id]; - if (oldVnode) { - isTextNode = oldVnode.isTextNode && isTextElement(newElm); // Are old & new both text? - newStyle = newElm.style; - newComputedStyle = window.getComputedStyle(newElm, undefined); // get full computed style for new element - oldElm = oldVnode.elm; - oldStyle = oldElm.style; - // Overall element bounding boxes - newRect = newElm.getBoundingClientRect(); - oldRect = oldVnode.boundingRect; // previously saved bounding rect - // Text node bounding boxes & distances - if (isTextNode) { - newTextRect = getTextNodeRect(newElm.childNodes[0]); - oldTextRect = oldVnode.textRect; - dx = getTextDx(oldTextRect, newTextRect); - dy = getTextDy(oldTextRect, newTextRect); - } else { - // Calculate distances between old & new positions - dx = oldRect.left - newRect.left; - dy = oldRect.top - newRect.top; - } - hRatio = newRect.height / Math.max(oldRect.height, 1); - wRatio = isTextNode ? hRatio : newRect.width / Math.max(oldRect.width, 1); // text scales based on hRatio - // Animate new element - origTransform = newStyle.transform; - origTransition = newStyle.transition; - if (newComputedStyle.display === "inline") { - // inline elements cannot be transformed - newStyle.display = "inline-block"; // this does not appear to have any negative side effects - } - newStyle.transition = origTransition + "transform 0s"; - newStyle.transformOrigin = calcTransformOrigin(isTextNode, newTextRect, newRect); - newStyle.opacity = "0"; - newStyle.transform = origTransform + "translate(" + dx + "px, " + dy + "px) " + "scale(" + 1 / wRatio + ", " + 1 / hRatio + ")"; - setNextFrame(newStyle, "transition", origTransition); - setNextFrame(newStyle, "transform", origTransform); - setNextFrame(newStyle, "opacity", "1"); - // Animate old element - for (var key in oldVnode.savedStyle) { - // re-apply saved inherited properties - if (String(parseInt(key)) !== key) { - var ms = key.substring(0, 2) === "ms"; - var moz = key.substring(0, 3) === "moz"; - var webkit = key.substring(0, 6) === "webkit"; - if (!ms && !moz && !webkit) { - // ignore prefixed style properties - oldStyle[key] = oldVnode.savedStyle[key]; - } - } - } - oldStyle.position = "absolute"; - oldStyle.top = oldRect.top + "px"; // start at existing position - oldStyle.left = oldRect.left + "px"; - oldStyle.width = oldRect.width + "px"; // Needed for elements who were sized relative to their parents - oldStyle.height = oldRect.height + "px"; // Needed for elements who were sized relative to their parents - oldStyle.margin = "0"; // Margin on hero element leads to incorrect positioning - oldStyle.transformOrigin = calcTransformOrigin(isTextNode, oldTextRect, oldRect); - oldStyle.transform = ""; - oldStyle.opacity = "1"; - document.body.appendChild(oldElm); - setNextFrame(oldStyle, "transform", "translate(" + -dx + "px, " + -dy + "px) scale(" + wRatio + ", " + hRatio + ")"); // scale must be on far right for translate to be correct - setNextFrame(oldStyle, "opacity", "0"); - oldElm.addEventListener("transitionend", function (ev) { - if (ev.propertyName === "transform") { - document.body.removeChild(ev.target); - } - }); - } - } - removed = created = undefined; - } - var heroModule = { - pre: pre$1, - create: create$1, - destroy: destroy$1, - post: post$1 - }; - - function updateProps(oldVnode, vnode) { - var key = void 0; - var cur = void 0; - var old = void 0; - var elm = vnode.elm; - var oldProps = oldVnode.data.props; - var props = vnode.data.props; - if (!oldProps && !props) return; - if (oldProps === props) return; - oldProps = oldProps || {}; - props = props || {}; - for (key in props) { - cur = props[key]; - old = oldProps[key]; - if (old !== cur && (key !== "value" || elm[key] !== cur)) { - elm[key] = cur; - } - } - } - var propsModule = { create: updateProps, update: updateProps }; - - // Bindig `requestAnimationFrame` like this fixes a bug in IE/Edge. See #360 and #409. - var raf$1 = typeof window !== "undefined" && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window)) || setTimeout; - var nextFrame$1 = function nextFrame$1(fn) { - raf$1(function () { - raf$1(fn); - }); - }; - var reflowForced = false; - function setNextFrame$1(obj, prop, val) { - nextFrame$1(function () { - obj[prop] = val; - }); - } - function updateStyle(oldVnode, vnode) { - var cur = void 0; - var name = void 0; - var elm = vnode.elm; - var oldStyle = oldVnode.data.style; - var style = vnode.data.style; - if (!oldStyle && !style) return; - if (oldStyle === style) return; - oldStyle = oldStyle || {}; - style = style || {}; - var oldHasDel = "delayed" in oldStyle; - for (name in oldStyle) { - if (!style[name]) { - if (name[0] === "-" && name[1] === "-") { - elm.style.removeProperty(name); - } else { - elm.style[name] = ""; - } - } - } - for (name in style) { - cur = style[name]; - if (name === "delayed" && style.delayed) { - for (var name2 in style.delayed) { - cur = style.delayed[name2]; - if (!oldHasDel || cur !== oldStyle.delayed[name2]) { - setNextFrame$1(elm.style, name2, cur); - } - } - } else if (name !== "remove" && cur !== oldStyle[name]) { - if (name[0] === "-" && name[1] === "-") { - elm.style.setProperty(name, cur); - } else { - elm.style[name] = cur; - } - } - } - } - function applyDestroyStyle(vnode) { - var style = void 0; - var name = void 0; - var elm = vnode.elm; - var s = vnode.data.style; - if (!s || !(style = s.destroy)) return; - for (name in style) { - elm.style[name] = style[name]; - } - } - function applyRemoveStyle(vnode, rm) { - var s = vnode.data.style; - if (!s || !s.remove) { - rm(); - return; - } - if (!reflowForced) { - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - vnode.elm.offsetLeft; - reflowForced = true; - } - var name = void 0; - var elm = vnode.elm; - var i = 0; - var style = s.remove; - var amount = 0; - var applied = []; - for (name in style) { - applied.push(name); - elm.style[name] = style[name]; - } - var compStyle = getComputedStyle(elm); - var props = compStyle["transition-property"].split(", "); - for (; i < props.length; ++i) { - if (applied.indexOf(props[i]) !== -1) amount++; - } - elm.addEventListener("transitionend", function (ev) { - if (ev.target === elm) --amount; - if (amount === 0) rm(); - }); - } - function forceReflow() { - reflowForced = false; - } - var styleModule = { - pre: forceReflow, - create: updateStyle, - update: updateStyle, - destroy: applyDestroyStyle, - remove: applyRemoveStyle - }; - - exports.array = array; - exports.attachTo = attachTo; - exports.attributesModule = attributesModule; - exports.classModule = classModule; - exports.datasetModule = datasetModule; - exports.eventListenersModule = eventListenersModule; - exports.h = h; - exports.heroModule = heroModule; - exports.htmlDomApi = htmlDomApi; - exports.init = init; - exports.primitive = primitive; - exports.propsModule = propsModule; - exports.styleModule = styleModule; - exports.thunk = thunk; - exports.toVNode = toVNode; - exports.vnode = vnode; - - exports.__esModule = true; -}); diff --git a/src/widget/date/calendar/combo.month.date.js b/src/widget/date/calendar/combo.month.date.js index cbdb552dc..cb5e6f20f 100644 --- a/src/widget/date/calendar/combo.month.date.js +++ b/src/widget/date/calendar/combo.month.date.js @@ -27,8 +27,10 @@ BI.MonthDateCombo = BI.inherit(BI.Trigger, { behaviors: o.behaviors }); - this.popup.on(BI.YearPopup.EVENT_CHANGE, function () { + this.popup.on(BI.MonthPopup.EVENT_CHANGE, function () { self.setValue(self.popup.getValue()); + self.combo.hideView(); + self.fireEvent(BI.MonthDateCombo.EVENT_CHANGE); }); @@ -41,15 +43,15 @@ BI.MonthDateCombo = BI.inherit(BI.Trigger, { isNeedAdjustWidth: false, el: this.trigger, popup: { - minWidth: 85, + minWidth: 100, stopPropagation: false, - el: this.popup + el: { + type: "bi.vertical", + hgap: 6, + items: [this.popup] + } } }); - this.combo.on(BI.Combo.EVENT_CHANGE, function () { - self.combo.hideView(); - self.fireEvent(BI.MonthDateCombo.EVENT_CHANGE); - }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { self.doBehavior(); diff --git a/src/widget/date/calendar/combo.year.date.js b/src/widget/date/calendar/combo.year.date.js index 348949da9..c8e72580b 100644 --- a/src/widget/date/calendar/combo.year.date.js +++ b/src/widget/date/calendar/combo.year.date.js @@ -28,7 +28,8 @@ BI.YearDateCombo = BI.inherit(BI.Trigger, { type: "bi.year_popup", behaviors: o.behaviors, min: o.min, - max: o.max + max: o.max, + width: 122 }); this.popup.on(BI.YearPopup.EVENT_CHANGE, function () { diff --git a/src/widget/date/calendar/picker.date.js b/src/widget/date/calendar/picker.date.js index 458da3d7d..369982dfa 100644 --- a/src/widget/date/calendar/picker.date.js +++ b/src/widget/date/calendar/picker.date.js @@ -11,31 +11,32 @@ BI.DatePicker = BI.inherit(BI.Widget, { baseCls: "bi-date-picker", height: 40, min: "1900-01-01", // 最小日期 - max: "2099-12-31", // 最大日期 + max: "2099-12-31" // 最大日期 }); }, _init: function () { BI.DatePicker.superclass._init.apply(this, arguments); - var self = this; var o = this.options; + var self = this; + var o = this.options; this._year = BI.getDate().getFullYear(); this._month = BI.getDate().getMonth() + 1; this.left = BI.createWidget({ type: "bi.icon_button", cls: "pre-page-h-font", width: 24, - height: 24, + height: 24 }); this.left.on(BI.IconButton.EVENT_CHANGE, function () { if (self._month === 1) { self.setValue({ year: (self.year.getValue() - 1) || (BI.getDate().getFullYear() - 1), - month: 12, + month: 12 }); } else { self.setValue({ year: self.year.getValue() || BI.getDate().getFullYear(), - month: (self.month.getValue() - 1) || BI.getDate().getMonth(), + month: (self.month.getValue() - 1) || BI.getDate().getMonth() }); } self.fireEvent(BI.DatePicker.EVENT_CHANGE); @@ -47,19 +48,19 @@ BI.DatePicker = BI.inherit(BI.Widget, { type: "bi.icon_button", cls: "next-page-h-font", width: 24, - height: 24, + height: 24 }); this.right.on(BI.IconButton.EVENT_CHANGE, function () { if (self._month === 12) { self.setValue({ year: (self.year.getValue() + 1) || (BI.getDate().getFullYear() + 1), - month: 1, + month: 1 }); } else { self.setValue({ year: self.year.getValue() || BI.getDate().getFullYear(), - month: (self.month.getValue() + 1) || (BI.getDate().getMonth() + 2), + month: (self.month.getValue() + 1) || (BI.getDate().getMonth() + 2) }); } self.fireEvent(BI.DatePicker.EVENT_CHANGE); @@ -71,7 +72,7 @@ BI.DatePicker = BI.inherit(BI.Widget, { type: "bi.year_date_combo", behaviors: o.behaviors, min: o.min, - max: o.max, + max: o.max }); this.year.on(BI.YearDateCombo.EVENT_CHANGE, function () { self.setValue({ @@ -91,7 +92,7 @@ BI.DatePicker = BI.inherit(BI.Widget, { this.month.on(BI.MonthDateCombo.EVENT_CHANGE, function () { self.setValue({ year: self.year.getValue() || self._year, - month: self.month.getValue(), + month: self.month.getValue() }); self.fireEvent(BI.DatePicker.EVENT_CHANGE); }); @@ -105,33 +106,26 @@ BI.DatePicker = BI.inherit(BI.Widget, { items: [{ el: { type: "bi.center_adapt", - items: [this.left], + items: [this.left] }, - width: 24, + width: 24 }, { - type: "bi.center_adapt", - items: [{ - el: { - type: "bi.horizontal", - width: 120, - rgap: 10, - items: [{ - el: this.year, - lgap: 10, - }, this.month], - }, - }], + el: { + type: "bi.center_adapt", + hgap: 10, + items: [this.year, this.month] + } }, { el: { type: "bi.center_adapt", - items: [this.right], + items: [this.right] }, - width: 24, - }], + width: 24 + }] }); this.setValue({ year: this._year, - month: this._month, + month: this._month }); }, @@ -177,7 +171,7 @@ BI.DatePicker = BI.inherit(BI.Widget, { return valid; }, - _getCheckMinMaxDate: function() { + _getCheckMinMaxDate: function () { var o = this.options; var minDate = BI.parseDateTime(o.min, "%Y-%X-%d"); var maxDate = BI.parseDateTime(o.max, "%Y-%X-%d"); @@ -219,9 +213,9 @@ BI.DatePicker = BI.inherit(BI.Widget, { getValue: function () { return { year: this.year.getValue(), - month: this.month.getValue(), + month: this.month.getValue() }; - }, + } }); BI.DatePicker.EVENT_CHANGE = "EVENT_CHANGE"; BI.DatePicker.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; diff --git a/src/widget/date/calendar/popup.calendar.date.js b/src/widget/date/calendar/popup.calendar.date.js index 9ddf99649..ce2892f55 100644 --- a/src/widget/date/calendar/popup.calendar.date.js +++ b/src/widget/date/calendar/popup.calendar.date.js @@ -87,8 +87,8 @@ BI.DateCalendarPopup = BI.inherit(BI.Widget, { type: "bi.vertical", items: [{ el: this.calendar, - hgap: 5, - bgap: 12 + hgap: 12, + bgap: 7 }] }, { type: "bi.absolute", @@ -148,4 +148,4 @@ BI.DateCalendarPopup = BI.inherit(BI.Widget, { }); BI.DateCalendarPopup.EVENT_CHANGE = "EVENT_CHANGE"; BI.DateCalendarPopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; -BI.shortcut("bi.date_calendar_popup", BI.DateCalendarPopup); \ No newline at end of file +BI.shortcut("bi.date_calendar_popup", BI.DateCalendarPopup); diff --git a/src/widget/date/calendar/popup.month.js b/src/widget/date/calendar/popup.month.js index 195b9302f..23d262424 100644 --- a/src/widget/date/calendar/popup.month.js +++ b/src/widget/date/calendar/popup.month.js @@ -34,8 +34,7 @@ BI.MonthPopup = BI.inherit(BI.Widget, { rowSize: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1 })), { type: "bi.center_adapt", - vgap: 1, - hgap: 2 + vgap: 2, }], value: o.value }); @@ -63,13 +62,13 @@ BI.MonthPopup = BI.inherit(BI.Widget, { return BI.map(item, function (j, td) { return { type: "bi.text_item", - cls: "bi-list-item-select", + cls: "bi-border-radius bi-list-item-select", textAlign: "center", whiteSpace: "nowrap", once: false, forceSelected: true, height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT - 1, - width: 38, + width: 30, value: td, text: td, disabled: !BI.contains(m, td) diff --git a/src/widget/date/calendar/trigger.triangle.date.js b/src/widget/date/calendar/trigger.triangle.date.js index e77bef98c..32c61dc1f 100644 --- a/src/widget/date/calendar/trigger.triangle.date.js +++ b/src/widget/date/calendar/trigger.triangle.date.js @@ -14,7 +14,7 @@ BI.DateTriangleTrigger = BI.inherit(BI.Trigger, { _defaultConfig: function () { return BI.extend( BI.DateTriangleTrigger.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-date-triangle-trigger pull-down-ha-font cursor-pointer", + baseCls: "bi-date-triangle-trigger solid-triangle-bottom-font cursor-pointer", height: 24 }); }, diff --git a/src/widget/datetime/datetime.combo.js b/src/widget/datetime/datetime.combo.js index 81224c021..d436da1a8 100644 --- a/src/widget/datetime/datetime.combo.js +++ b/src/widget/datetime/datetime.combo.js @@ -6,7 +6,8 @@ BI.DateTimeCombo = BI.inherit(BI.Single, { popupHeight: 290, popupWidth: 270, comboAdjustHeight: 1, - border: 1 + border: 1, + iconWidth: 24 }, _defaultConfig: function () { return BI.extend(BI.DateTimeCombo.superclass._defaultConfig.apply(this, arguments), { @@ -83,7 +84,7 @@ BI.DateTimeCombo = BI.inherit(BI.Single, { var triggerBtn = BI.createWidget({ type: "bi.icon_button", cls: "bi-trigger-icon-button date-font", - width: opts.height, + width: this.constants.iconWidth, height: opts.height, }); triggerBtn.on(BI.IconButton.EVENT_CHANGE, function () { @@ -96,21 +97,9 @@ BI.DateTimeCombo = BI.inherit(BI.Single, { BI.createWidget({ type: "bi.htape", + columnSize: ["", this.constants.iconWidth], element: this, - items: [{ - type: "bi.absolute", - items: [{ - el: this.combo, - top: 0, - left: 0, - right: 0, - bottom: 0 - }, { - el: triggerBtn, - top: 0, - right: 0 - }] - }] + items: [this.combo, triggerBtn] }); }, diff --git a/src/widget/datetime/datetime.trigger.js b/src/widget/datetime/datetime.trigger.js index ea0d047cb..d161585e6 100644 --- a/src/widget/datetime/datetime.trigger.js +++ b/src/widget/datetime/datetime.trigger.js @@ -3,7 +3,8 @@ */ BI.DateTimeTrigger = BI.inherit(BI.Trigger, { _const: { - hgap: 4 + hgap: 4, + iconWidth:24 }, _defaultConfig: function () { @@ -33,7 +34,7 @@ BI.DateTimeTrigger = BI.inherit(BI.Trigger, { el: this.text },{ el: BI.createWidget(), - width: o.height + width: this._const.iconWidth }] }); this.setValue(o.value); diff --git a/src/widget/downlist/popup.downlist.js b/src/widget/downlist/popup.downlist.js index b9ebed40e..5abb8fe96 100644 --- a/src/widget/downlist/popup.downlist.js +++ b/src/widget/downlist/popup.downlist.js @@ -110,10 +110,11 @@ BI.DownListPopup = BI.inherit(BI.Pane, { }] }, - innerVGap: 5, + innerVgap: 5, maxHeight: 378 }; item.el.childValues = []; + item.items = item.children; BI.each(item.children, function (i, child) { var fatherValue = BI.deepClone(item.el.value); var childValue = BI.deepClone(child.value); @@ -127,6 +128,7 @@ BI.DownListPopup = BI.inherit(BI.Pane, { dynamic: true }; child.father = fatherValue; + child.childValue = child.value; self.fatherValueMap[self._createChildValue(fatherValue, childValue)] = fatherValue; self.childValueMap[self._createChildValue(fatherValue, childValue)] = childValue; child.value = self._createChildValue(fatherValue, childValue); @@ -284,4 +286,4 @@ BI.DownListPopup = BI.inherit(BI.Pane, { BI.DownListPopup.EVENT_CHANGE = "EVENT_CHANGE"; BI.DownListPopup.EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; -BI.shortcut("bi.down_list_popup", BI.DownListPopup); \ No newline at end of file +BI.shortcut("bi.down_list_popup", BI.DownListPopup); diff --git a/src/widget/dynamicdate/dynamicdate.combo.js b/src/widget/dynamicdate/dynamicdate.combo.js index ef010b87f..185e1ca35 100644 --- a/src/widget/dynamicdate/dynamicdate.combo.js +++ b/src/widget/dynamicdate/dynamicdate.combo.js @@ -3,7 +3,8 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, { popupHeight: 259, popupWidth: 270, comboAdjustHeight: 1, - border: 1 + border: 1, + iconWidth: 24 }, props: { @@ -30,230 +31,201 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, { this.storeTriggerValue = ""; var date = BI.getDate(); this.storeValue = opts.value; - + var border = opts.simple ? 1 : 2; + return { type: "bi.absolute", items: [{ el: { - type: "bi.htape", - cls: "bi-border bi-border-radius bi-focus-shadow", - items: [{ - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: opts.height - 2, - height: opts.height - 2, - ref: function () { - self.changeIcon = this; - } - }, - width: opts.height - 2 - }, { - type: "bi.absolute", + type: "bi.combo", + cls: (opts.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius bi-focus-shadow", + container: opts.container, + ref: function () { + self.combo = this; + }, + toggle: false, + isNeedAdjustHeight: opts.isNeedAdjustHeight, + isNeedAdjustWidth: opts.isNeedAdjustWidth, + destroyWhenHide: true, + el: { + type: "bi.horizontal_fill", + columnSize: [this.constants.iconWidth, "fill"], + height: opts.height - border, items: [{ el: { - type: "bi.combo", - container: opts.container, + type: "bi.icon_button", + cls: "bi-trigger-icon-button date-change-h-font", + width: opts.height - border, + height: opts.height - border, ref: function () { - self.combo = this; - }, - toggle: false, - isNeedAdjustHeight: opts.isNeedAdjustHeight, - isNeedAdjustWidth: opts.isNeedAdjustWidth, - destroyWhenHide: true, - el: { - type: "bi.dynamic_date_trigger", - min: opts.minDate, - max: opts.maxDate, - format: opts.format, - allowEdit: opts.allowEdit, - watermark: opts.watermark, - height: opts.height - 2, - value: opts.value, - ref: function () { - self.trigger = this; - }, - listeners: [{ - eventName: BI.DynamicDateTrigger.EVENT_KEY_DOWN, - action: function () { - if (self.combo.isViewVisible()) { - self.combo.hideView(); - } - self.fireEvent(BI.DynamicDateCombo.EVENT_KEY_DOWN, arguments); - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_STOP, - action: function () { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_FOCUS, - action: function () { - self.storeTriggerValue = self.trigger.getKey(); - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - self.fireEvent(BI.DynamicDateCombo.EVENT_FOCUS); - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_BLUR, - action: function () { - self.fireEvent(BI.DynamicDateCombo.EVENT_BLUR); - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_ERROR, - action: function () { - self.storeValue = { - type: BI.DynamicDateCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1 - } - }; - self.fireEvent(BI.DynamicDateCombo.EVENT_ERROR); - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_VALID, - action: function () { - self.fireEvent(BI.DynamicDateCombo.EVENT_VALID); - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.DynamicDateCombo.EVENT_CHANGE); - } - }, { - eventName: BI.DynamicDateTrigger.EVENT_CONFIRM, - action: function () { - var dateStore = self.storeTriggerValue; - var dateObj = self.trigger.getKey(); - if (self.combo.isViewVisible() || BI.isEqual(dateObj, dateStore)) { - return; - } - if (BI.isNotEmptyString(dateObj) && !BI.isEqual(dateObj, dateStore)) { - self.storeValue = self.trigger.getValue(); - self.setValue(self.trigger.getValue()); - } else if (BI.isEmptyString(dateObj)) { - self.storeValue = null; - self.trigger.setValue(); - } - self._checkDynamicValue(self.storeValue); - self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); - } - }] - }, - adjustLength: this.constants.comboAdjustHeight, - popup: { - el: { - type: "bi.dynamic_date_popup", - width: opts.isNeedAdjustWidth ? opts.width : undefined, - supportDynamic: opts.supportDynamic, - behaviors: opts.behaviors, - min: opts.minDate, - max: opts.maxDate, - ref: function () { - self.popup = this; - }, - listeners: [{ - eventName: BI.DynamicDatePopup.BUTTON_CLEAR_EVENT_CHANGE, - action: function () { - self.setValue(); - self.combo.hideView(); - self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDatePopup.BUTTON_lABEL_EVENT_CHANGE, - action: function () { - var date = BI.getDate(); - self.setValue({ - type: BI.DynamicDateCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate() - } - }); - self.combo.hideView(); - self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDatePopup.BUTTON_OK_EVENT_CHANGE, - action: function () { - var value = self.popup.getValue(); - if (self._checkValue(value)) { - self.setValue(value); - } - self.combo.hideView(); - self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDatePopup.EVENT_CHANGE, - action: function () { - self.setValue(self.popup.getValue()); - self.combo.hideView(); - self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDatePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, - action: function () { - self.fireEvent(BI.DynamicDateCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); - } - }] - }, - stopPropagation: false - }, - // DEC-4250 和复选下拉一样,点击triggerBtn不默认收起 - hideChecker: function (e) { - return self.triggerBtn.element.find(e.target).length === 0; - }, - listeners: [{ - eventName: BI.Combo.EVENT_BEFORE_POPUPVIEW, - action: function () { - self.popup.setMinDate(opts.minDate); - self.popup.setMaxDate(opts.maxDate); - self.popup.setValue(self.storeValue); - self.fireEvent(BI.DynamicDateCombo.EVENT_BEFORE_POPUPVIEW); - } - }] + self.changeIcon = this; + } }, - top: 0, - left: 0, - right: 0, - bottom: 0 }, { - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-font", - width: opts.height - 2, - height: opts.height - 2, - listeners: [{ - eventName: BI.IconButton.EVENT_CHANGE, - action: function () { - if (self.combo.isViewVisible()) { - // self.combo.hideView(); - } else { - self.combo.showView(); + type: "bi.dynamic_date_trigger", + simple: opts.simple, + min: opts.minDate, + max: opts.maxDate, + format: opts.format, + allowEdit: opts.allowEdit, + watermark: opts.watermark, + iconWidth: opts.height - border, + height: opts.height - border, + value: opts.value, + ref: function () { + self.trigger = this; + }, + listeners: [{ + eventName: BI.DynamicDateTrigger.EVENT_KEY_DOWN, + action: function () { + if (self.combo.isViewVisible()) { + self.combo.hideView(); + } + self.fireEvent(BI.DynamicDateCombo.EVENT_KEY_DOWN, arguments); + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_STOP, + action: function () { + if (!self.combo.isViewVisible()) { + self.combo.showView(); + } + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_FOCUS, + action: function () { + self.storeTriggerValue = self.trigger.getKey(); + if (!self.combo.isViewVisible()) { + self.combo.showView(); + } + self.fireEvent(BI.DynamicDateCombo.EVENT_FOCUS); + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_BLUR, + action: function () { + self.fireEvent(BI.DynamicDateCombo.EVENT_BLUR); + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_ERROR, + action: function () { + self.storeValue = { + type: BI.DynamicDateCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1 } + }; + self.combo.element.addClass("error"); + self.fireEvent(BI.DynamicDateCombo.EVENT_ERROR); + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_VALID, + action: function () { + self.combo.element.removeClass("error"); + self.fireEvent(BI.DynamicDateCombo.EVENT_VALID); + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.DynamicDateCombo.EVENT_CHANGE); + } + }, { + eventName: BI.DynamicDateTrigger.EVENT_CONFIRM, + action: function () { + var dateStore = self.storeTriggerValue; + var dateObj = self.trigger.getKey(); + if (self.combo.isViewVisible() || BI.isEqual(dateObj, dateStore)) { + return; } - }], - ref: function () { - self.triggerBtn = this; + if (BI.isNotEmptyString(dateObj) && !BI.isEqual(dateObj, dateStore)) { + self.storeValue = self.trigger.getValue(); + self.setValue(self.trigger.getValue()); + } else if (BI.isEmptyString(dateObj)) { + self.storeValue = null; + self.trigger.setValue(); + } + self._checkDynamicValue(self.storeValue); + self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); } - }, - top: 0, - right: 0 + }] }] - }], - ref: function (_ref) { - self.comboWrapper = _ref; - } + }, + adjustLength: this.constants.comboAdjustHeight, + popup: { + el: { + type: "bi.dynamic_date_popup", + width: opts.isNeedAdjustWidth ? opts.width : undefined, + supportDynamic: opts.supportDynamic, + behaviors: opts.behaviors, + min: opts.minDate, + max: opts.maxDate, + ref: function () { + self.popup = this; + }, + listeners: [{ + eventName: BI.DynamicDatePopup.BUTTON_CLEAR_EVENT_CHANGE, + action: function () { + self.setValue(); + self.combo.hideView(); + self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDatePopup.BUTTON_lABEL_EVENT_CHANGE, + action: function () { + var date = BI.getDate(); + self.setValue({ + type: BI.DynamicDateCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate() + } + }); + self.combo.hideView(); + self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDatePopup.BUTTON_OK_EVENT_CHANGE, + action: function () { + var value = self.popup.getValue(); + if (self._checkValue(value)) { + self.setValue(value); + } + self.combo.hideView(); + self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDatePopup.EVENT_CHANGE, + action: function () { + self.setValue(self.popup.getValue()); + self.combo.hideView(); + self.fireEvent(BI.DynamicDateCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDatePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: function () { + self.fireEvent(BI.DynamicDateCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + } + }] + }, + }, + // // DEC-4250 和复选下拉一样,点击triggerBtn不默认收起 + // hideChecker: function (e) { + // return self.triggerBtn.element.find(e.target).length === 0; + // }, + listeners: [{ + eventName: BI.Combo.EVENT_BEFORE_POPUPVIEW, + action: function () { + self.popup.setMinDate(opts.minDate); + self.popup.setMaxDate(opts.maxDate); + self.popup.setValue(self.storeValue); + self.fireEvent(BI.DynamicDateCombo.EVENT_BEFORE_POPUPVIEW); + } + }] }, - top: 1, - left: 1, - right: 1, - bottom: 1 + top: 0, + left: 0, + right: 0, + bottom: 0 }] }; }, @@ -271,12 +243,12 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, { switch (type) { case BI.DynamicDateCombo.Dynamic: this.changeIcon.setVisible(true); - this.comboWrapper.attr("items")[0].width = o.height - 2; - this.comboWrapper.resize(); + // this.comboWrapper.attr("items")[0].width = o.height - this.options.simple ? 1 : 2; + // this.comboWrapper.resize(); break; default: - this.comboWrapper.attr("items")[0].width = 0; - this.comboWrapper.resize(); + // this.comboWrapper.attr("items")[0].width = 0; + // this.comboWrapper.resize(); this.changeIcon.setVisible(false); break; } @@ -289,7 +261,7 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, { return BI.isNotEmptyObject(v.value); case BI.DynamicDateCombo.Static: var value = v.value || {}; - + return !BI.checkDateVoid(value.year, value.month, value.day, o.minDate, o.maxDate)[0]; default: return true; @@ -327,6 +299,18 @@ BI.DynamicDateCombo = BI.inherit(BI.Single, { }, hidePopupView: function () { this.combo.hideView(); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); diff --git a/src/widget/dynamicdate/dynamicdate.popup.js b/src/widget/dynamicdate/dynamicdate.popup.js index 9e058e921..d72c67323 100644 --- a/src/widget/dynamicdate/dynamicdate.popup.js +++ b/src/widget/dynamicdate/dynamicdate.popup.js @@ -1,11 +1,11 @@ BI.DynamicDatePopup = BI.inherit(BI.Widget, { constants: { - tabHeight: 30, + tabHeight: 40, }, props: { baseCls: "bi-dynamic-date-popup", - width: 248, + width: 272, supportDynamic: true, }, diff --git a/src/widget/dynamicdate/dynamicdate.trigger.js b/src/widget/dynamicdate/dynamicdate.trigger.js index 807d6e3a5..1412fae69 100644 --- a/src/widget/dynamicdate/dynamicdate.trigger.js +++ b/src/widget/dynamicdate/dynamicdate.trigger.js @@ -5,7 +5,8 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { yearLength: 4, yearMonthLength: 6, yearFullMonthLength: 7, - compareFormat: "%Y-%X-%d" + compareFormat: "%Y-%X-%d", + iconWidth: 24 }, props: { @@ -13,6 +14,7 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { min: "1900-01-01", // 最小日期 max: "2099-12-31", // 最大日期 height: 24, + iconWidth: 24, format: "", // 显示的日期格式化方式 allowEdit: true, // 是否允许编辑 watermark: "" @@ -24,6 +26,7 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { this.storeTriggerValue = ""; this.editor = BI.createWidget({ type: "bi.sign_editor", + simple: o.simple, height: o.height, validationChecker: function (v) { var formatStr = self._getStandardDateStr(v); @@ -118,11 +121,16 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { BI.createWidget({ type: "bi.htape", element: this, + columnSize: ["", this._const.iconWidth], items: [{ el: this.editor }, { - el: BI.createWidget(), - width: 24 + el: { + type: "bi.icon_button", + cls: "bi-trigger-icon-button date-font", + width: this._const.iconWidth + }, + width: this._const.iconWidth }] }); !o.allowEdit && BI.createWidget({ @@ -134,7 +142,7 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { title: BI.bind(this._getTitle, this) }, left: 0, - right: 24, + right: o.iconWidth, top: 0, bottom: 0 }] @@ -302,8 +310,19 @@ BI.DynamicDateTrigger = BI.inherit(BI.Trigger, { }, getValue: function () { return this.storeValue; - } + }, + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + + setWaterMark: function (v) { + this.editor.setWaterMark(v); + } }); BI.DynamicDateTrigger.EVENT_BLUR = "EVENT_BLUR"; diff --git a/src/widget/dynamicdatetime/dynamicdatetime.combo.js b/src/widget/dynamicdatetime/dynamicdatetime.combo.js index bc0f71c44..1b8a58243 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.combo.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.combo.js @@ -3,7 +3,8 @@ BI.DynamicDateTimeCombo = BI.inherit(BI.Single, { popupHeight: 259, popupWidth: 270, comboAdjustHeight: 1, - border: 1 + border: 1, + iconWidth: 24 }, props: { @@ -30,239 +31,209 @@ BI.DynamicDateTimeCombo = BI.inherit(BI.Single, { this.storeTriggerValue = ""; var date = BI.getDate(); this.storeValue = opts.value; - + var border = opts.simple ? 1 : 2; + return { type: "bi.absolute", items: [{ el: { - type: "bi.htape", - cls: "bi-border bi-border-radius bi-focus-shadow", - items: [{ - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: opts.height - 2, - height: opts.height - 2, - ref: function () { - self.changeIcon = this; - } - }, - width: opts.height - 2 - }, { - type: "bi.absolute", + type: "bi.combo", + cls: (opts.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius bi-focus-shadow", + destroyWhenHide: true, + container: opts.container, + ref: function () { + self.combo = this; + }, + toggle: false, + isNeedAdjustHeight: opts.isNeedAdjustHeight, + isNeedAdjustWidth: opts.isNeedAdjustWidth, + el: { + type: "bi.horizontal_fill", + columnSize: [this.constants.iconWidth, "fill"], + height: opts.height - border, items: [{ el: { - type: "bi.combo", - cls: "bi-focus-shadow", - destroyWhenHide: true, - container: opts.container, + type: "bi.icon_button", + cls: "bi-trigger-icon-button date-change-h-font", + width: this.constants.iconWidth, + height: opts.height - border, ref: function () { - self.combo = this; - }, - toggle: false, - isNeedAdjustHeight: opts.isNeedAdjustHeight, - isNeedAdjustWidth: opts.isNeedAdjustWidth, - el: { - type: "bi.dynamic_date_time_trigger", - min: opts.minDate, - max: opts.maxDate, - allowEdit: opts.allowEdit, - watermark: opts.watermark, - format: opts.format, - height: opts.height - 2, - value: opts.value, - ref: function () { - self.trigger = this; - }, - listeners: [{ - eventName: BI.DynamicDateTimeTrigger.EVENT_KEY_DOWN, - action: function () { - if (self.combo.isViewVisible()) { - self.combo.hideView(); - } - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_KEY_DOWN, arguments); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_STOP, - action: function () { - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_TRIGGER_CLICK, - action: function () { - self.combo.toggle(); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_FOCUS, - action: function () { - self.storeTriggerValue = self.trigger.getKey(); - if (!self.combo.isViewVisible()) { - self.combo.showView(); - } - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_FOCUS); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_BLUR, - action: function () { - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_BLUR); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_ERROR, - action: function () { - self.storeValue = { - type: BI.DynamicDateTimeCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1 - } - }; - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_ERROR); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_VALID, - action: function () { - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_VALID); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CHANGE); - } - }, { - eventName: BI.DynamicDateTimeTrigger.EVENT_CONFIRM, - action: function () { - var dateStore = self.storeTriggerValue; - var dateObj = self.trigger.getKey(); - if (self.combo.isViewVisible() || BI.isEqual(dateObj, dateStore)) { - return; - } - if (BI.isNotEmptyString(dateObj) && !BI.isEqual(dateObj, dateStore)) { - self.storeValue = self.trigger.getValue(); - self.setValue(self.trigger.getValue()); - } else if (BI.isEmptyString(dateObj)) { - self.storeValue = null; - self.trigger.setValue(); - } - self._checkDynamicValue(self.storeValue); - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); - } - }] - }, - adjustLength: this.constants.comboAdjustHeight, - popup: { - el: { - type: "bi.dynamic_date_time_popup", - width: opts.isNeedAdjustWidth ? opts.width : undefined, - supportDynamic: opts.supportDynamic, - behaviors: opts.behaviors, - min: opts.minDate, - max: opts.maxDate, - ref: function () { - self.popup = this; - }, - listeners: [{ - eventName: BI.DynamicDateTimePopup.BUTTON_CLEAR_EVENT_CHANGE, - action: function () { - self.setValue(); - self.combo.hideView(); - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDateTimePopup.BUTTON_lABEL_EVENT_CHANGE, - action: function () { - var date = BI.getDate(); - self.setValue({ - type: BI.DynamicDateTimeCombo.Static, - value: { - year: date.getFullYear(), - month: date.getMonth() + 1, - day: date.getDate(), - hour: 0, - minute: 0, - second: 0 - } - }); - self.combo.hideView(); - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE, - action: function () { - var value = self.popup.getValue(); - if (self._checkValue(value)) { - self.setValue(value); - } - self.combo.hideView(); - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDateTimePopup.EVENT_CHANGE, - action: function () { - self.setValue(self.popup.getValue()); - self.combo.hideView(); - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); - } - }, { - eventName: BI.DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, - action: function () { - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); - } - }] - }, - stopPropagation: false - }, - listeners: [{ - eventName: BI.Combo.EVENT_BEFORE_POPUPVIEW, - action: function () { - self.popup.setMinDate(opts.minDate); - self.popup.setMaxDate(opts.maxDate); - self.popup.setValue(self.storeValue); - self.fireEvent(BI.DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW); - } - }], - // DEC-4250 和复选下拉一样,点击不收起 - hideChecker: function (e) { - return self.triggerBtn.element.find(e.target).length === 0; + self.changeIcon = this; } }, - top: 0, - left: 0, - right: 0, - bottom: 0 }, { - el: { - type: "bi.icon_button", - cls: "bi-trigger-icon-button date-font", - width: opts.height - 2, - height: opts.height - 2, - listeners: [{ - eventName: BI.IconButton.EVENT_CHANGE, - action: function () { - if (self.combo.isViewVisible()) { - // self.combo.hideView(); - } else { - self.combo.showView(); + type: "bi.dynamic_date_time_trigger", + simple: opts.simple, + min: opts.minDate, + max: opts.maxDate, + allowEdit: opts.allowEdit, + watermark: opts.watermark, + format: opts.format, + iconWidth: this.constants.iconWidth, + height: opts.height - border, + value: opts.value, + ref: function () { + self.trigger = this; + }, + listeners: [{ + eventName: BI.DynamicDateTimeTrigger.EVENT_KEY_DOWN, + action: function () { + if (self.combo.isViewVisible()) { + self.combo.hideView(); + } + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_KEY_DOWN, arguments); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_STOP, + action: function () { + if (!self.combo.isViewVisible()) { + self.combo.showView(); + } + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_TRIGGER_CLICK, + action: function () { + self.combo.toggle(); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_FOCUS, + action: function () { + self.storeTriggerValue = self.trigger.getKey(); + if (!self.combo.isViewVisible()) { + self.combo.showView(); + } + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_FOCUS); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_BLUR, + action: function () { + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_BLUR); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_ERROR, + action: function () { + self.storeValue = { + type: BI.DynamicDateTimeCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1 } + }; + self.combo.element.addClass("error"); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_ERROR); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_VALID, + action: function () { + self.combo.element.removeClass("error"); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_VALID); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CHANGE); + } + }, { + eventName: BI.DynamicDateTimeTrigger.EVENT_CONFIRM, + action: function () { + var dateStore = self.storeTriggerValue; + var dateObj = self.trigger.getKey(); + if (self.combo.isViewVisible() || BI.isEqual(dateObj, dateStore)) { + return; } - }], - ref: function () { - self.triggerBtn = this; + if (BI.isNotEmptyString(dateObj) && !BI.isEqual(dateObj, dateStore)) { + self.storeValue = self.trigger.getValue(); + self.setValue(self.trigger.getValue()); + } else if (BI.isEmptyString(dateObj)) { + self.storeValue = null; + self.trigger.setValue(); + } + self._checkDynamicValue(self.storeValue); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); } - }, - top: 0, - right: 0 + }] }] + }, + adjustLength: this.constants.comboAdjustHeight, + popup: { + el: { + type: "bi.dynamic_date_time_popup", + width: opts.isNeedAdjustWidth ? opts.width : undefined, + supportDynamic: opts.supportDynamic, + behaviors: opts.behaviors, + min: opts.minDate, + max: opts.maxDate, + ref: function () { + self.popup = this; + }, + listeners: [{ + eventName: BI.DynamicDateTimePopup.BUTTON_CLEAR_EVENT_CHANGE, + action: function () { + self.setValue(); + self.combo.hideView(); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDateTimePopup.BUTTON_lABEL_EVENT_CHANGE, + action: function () { + var date = BI.getDate(); + self.setValue({ + type: BI.DynamicDateTimeCombo.Static, + value: { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: 0, + minute: 0, + second: 0 + } + }); + self.combo.hideView(); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE, + action: function () { + var value = self.popup.getValue(); + if (self._checkValue(value)) { + self.setValue(value); + } + self.combo.hideView(); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDateTimePopup.EVENT_CHANGE, + action: function () { + self.setValue(self.popup.getValue()); + self.combo.hideView(); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_CONFIRM); + } + }, { + eventName: BI.DynamicDateTimePopup.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW, + action: function () { + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); + } + }] + }, + }, + listeners: [{ + eventName: BI.Combo.EVENT_BEFORE_POPUPVIEW, + action: function () { + self.popup.setMinDate(opts.minDate); + self.popup.setMaxDate(opts.maxDate); + self.popup.setValue(self.storeValue); + self.fireEvent(BI.DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW); + } }], - ref: function (_ref) { - self.comboWrapper = _ref; - } + // // DEC-4250 和复选下拉一样,点击不收起 + // hideChecker: function (e) { + // return self.triggerBtn.element.find(e.target).length === 0; + // } }, - top: 1, - left: 1, - right: 1, - bottom: 1 + top: 0, + left: 0, + right: 0, + bottom: 0 }] }; }, @@ -280,12 +251,12 @@ BI.DynamicDateTimeCombo = BI.inherit(BI.Single, { switch (type) { case BI.DynamicDateTimeCombo.Dynamic: this.changeIcon.setVisible(true); - this.comboWrapper.attr("items")[0].width = o.height - 2; - this.comboWrapper.resize(); + // this.comboWrapper.attr("items")[0].width = o.height - (this.options.simple ? 1 : 2); + // this.comboWrapper.resize(); break; default: - this.comboWrapper.attr("items")[0].width = 0; - this.comboWrapper.resize(); + // this.comboWrapper.attr("items")[0].width = 0; + // this.comboWrapper.resize(); this.changeIcon.setVisible(false); break; } @@ -336,6 +307,18 @@ BI.DynamicDateTimeCombo = BI.inherit(BI.Single, { isValid: function () { return this.trigger.isValid(); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); diff --git a/src/widget/dynamicdatetime/dynamicdatetime.popup.js b/src/widget/dynamicdatetime/dynamicdatetime.popup.js index 91c2fb2d1..a06b3764e 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.popup.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.popup.js @@ -1,12 +1,12 @@ BI.DynamicDateTimePopup = BI.inherit(BI.Widget, { constants: { - tabHeight: 30, + tabHeight: 40, buttonHeight: 24 }, props: { baseCls: "bi-dynamic-date-time-popup", - width: 248, + width: 272, supportDynamic: true, }, diff --git a/src/widget/dynamicdatetime/dynamicdatetime.trigger.js b/src/widget/dynamicdatetime/dynamicdatetime.trigger.js index 6e23f3654..dd5c7ed6f 100644 --- a/src/widget/dynamicdatetime/dynamicdatetime.trigger.js +++ b/src/widget/dynamicdatetime/dynamicdatetime.trigger.js @@ -5,7 +5,8 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { yearLength: 4, yearMonthLength: 6, yearFullMonthLength: 7, - compareFormat: "%Y-%X-%d %H:%M:%S" + compareFormat: "%Y-%X-%d %H:%M:%S", + iconWidth: 24 }, props: { @@ -13,6 +14,7 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { min: "1900-01-01", // 最小日期 max: "2099-12-31", // 最大日期 height: 24, + iconWidth: 24, format: "", // 显示的日期格式化方式 allowEdit: true, // 是否允许编辑 watermark: "" @@ -24,6 +26,7 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { this.storeTriggerValue = ""; this.editor = BI.createWidget({ type: "bi.sign_editor", + simple: o.simple, height: o.height, validationChecker: function (v) { var formatStr = self._getStandardDateStr(v); @@ -116,11 +119,15 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { BI.createWidget({ type: "bi.htape", element: this, + columnSize: ["", this._const.iconWidth], items: [{ el: this.editor }, { - el: BI.createWidget(), - width: 24 + el: { + type: "bi.icon_button", + cls: "bi-trigger-icon-button date-font", + }, + width: o.iconWidth }] }); @@ -133,7 +140,7 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { title: BI.bind(this._getTitle, this) }, left: 0, - right: 24, + right: o.iconWidth, top: 0, bottom: 0 }] @@ -374,8 +381,19 @@ BI.DynamicDateTimeTrigger = BI.inherit(BI.Trigger, { isValid: function () { return this.editor.isValid(); - } + }, + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + + setWaterMark: function (v) { + this.editor.setWaterMark(v); + } }); BI.DynamicDateTimeTrigger.EVENT_BLUR = "EVENT_BLUR"; @@ -388,4 +406,4 @@ BI.DynamicDateTimeTrigger.EVENT_VALID = "EVENT_VALID"; BI.DynamicDateTimeTrigger.EVENT_ERROR = "EVENT_ERROR"; BI.DynamicDateTimeTrigger.EVENT_TRIGGER_CLICK = "EVENT_TRIGGER_CLICK"; BI.DynamicDateTimeTrigger.EVENT_KEY_DOWN = "EVENT_KEY_DOWN"; -BI.shortcut("bi.dynamic_date_time_trigger", BI.DynamicDateTimeTrigger); \ No newline at end of file +BI.shortcut("bi.dynamic_date_time_trigger", BI.DynamicDateTimeTrigger); diff --git a/src/widget/editor/editor.search.js b/src/widget/editor/editor.search.js index 5ab35b31e..af9a14614 100644 --- a/src/widget/editor/editor.search.js +++ b/src/widget/editor/editor.search.js @@ -2,10 +2,10 @@ * Created by roy on 15/9/14. */ BI.SearchEditor = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { var conf = BI.SearchEditor.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { - baseCls: "bi-search-editor bi-border bi-focus-shadow", + baseCls: "bi-search-editor bi-focus-shadow " + (config.simple ? "bi-border-bottom" : "bi-border"), height: 24, errorText: "", watermark: BI.i18nText("BI-Basic_Search"), @@ -14,11 +14,12 @@ BI.SearchEditor = BI.inherit(BI.Widget, { }); }, _init: function () { - this.options.height -= 2; + this.options.height -= this.options.simple ? 1 : 2; BI.SearchEditor.superclass._init.apply(this, arguments); var self = this, o = this.options; this.editor = BI.createWidget(o.el, { type: "bi.editor", + simple: o.simple, height: o.height, watermark: o.watermark, allowBlank: true, diff --git a/src/widget/editor/editor.text.js b/src/widget/editor/editor.text.js index 7109b9d96..554bf2286 100644 --- a/src/widget/editor/editor.text.js +++ b/src/widget/editor/editor.text.js @@ -4,10 +4,10 @@ * @extends BI.Single */ BI.TextEditor = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { var conf = BI.TextEditor.superclass._defaultConfig.apply(this, arguments); return BI.extend(conf, { - extraCls: "bi-text-editor bi-border bi-focus-shadow", + extraCls: "bi-text-editor bi-focus-shadow " + (config.simple ? "bi-border-bottom" : "bi-border"), hgap: 4, vgap: 2, lgap: 0, @@ -26,15 +26,17 @@ BI.TextEditor = BI.inherit(BI.Widget, { _init: function () { BI.TextEditor.superclass._init.apply(this, arguments); var self = this, o = this.options; + var border = o.simple ? 1 : 2; if (BI.isNumber(o.height)) { - this.element.css({height: o.height - 2}); + this.element.css({height: o.height - border}); } if (BI.isNumber(o.width)) { - this.element.css({width: o.width - 2}); + this.element.css({width: o.width - border}); } this.editor = BI.createWidget({ type: "bi.editor", - height: o.height - 2, + simple: o.simple, + height: o.height - border, hgap: o.hgap, vgap: o.vgap, lgap: o.lgap, @@ -48,7 +50,9 @@ BI.TextEditor = BI.inherit(BI.Widget, { quitChecker: o.quitChecker, allowBlank: o.allowBlank, watermark: o.watermark, - errorText: o.errorText + errorText: o.errorText, + inputType: o.inputType, + autocomplete: o.autocomplete }); this.editor.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); @@ -78,6 +82,7 @@ BI.TextEditor = BI.inherit(BI.Widget, { this.editor.on(BI.Editor.EVENT_VALID, function () { + self.element.removeClass("error"); self.fireEvent(BI.TextEditor.EVENT_VALID); }); this.editor.on(BI.Editor.EVENT_CONFIRM, function () { @@ -99,6 +104,7 @@ BI.TextEditor = BI.inherit(BI.Widget, { self.fireEvent(BI.TextEditor.EVENT_STOP); }); this.editor.on(BI.Editor.EVENT_ERROR, function () { + self.element.addClass("error"); self.fireEvent(BI.TextEditor.EVENT_ERROR, arguments); }); this.editor.on(BI.Editor.EVENT_ENTER, function () { diff --git a/src/widget/intervalslider/intervalslider.js b/src/widget/intervalslider/intervalslider.js index df8d0e796..68f098f37 100644 --- a/src/widget/intervalslider/intervalslider.js +++ b/src/widget/intervalslider/intervalslider.js @@ -5,7 +5,7 @@ BI.IntervalSlider = BI.inherit(BI.Single, { _constant: { EDITOR_WIDTH: 58, EDITOR_R_GAP: 60, - EDITOR_HEIGHT: 30, + EDITOR_HEIGHT: 20, SLIDER_WIDTH_HALF: 15, SLIDER_WIDTH: 30, SLIDER_HEIGHT: 30, @@ -49,7 +49,8 @@ BI.IntervalSlider = BI.inherit(BI.Single, { cls: "slider-editor-button", text: this.options.unit, allowBlank: false, - width: c.EDITOR_WIDTH, + width: c.EDITOR_WIDTH - 2, + height: c.EDITOR_HEIGHT - 2, validationChecker: function (v) { return self._checkValidation(v); } @@ -76,7 +77,8 @@ BI.IntervalSlider = BI.inherit(BI.Single, { cls: "slider-editor-button", text: this.options.unit, allowBlank: false, - width: c.EDITOR_WIDTH, + width: c.EDITOR_WIDTH - 2, + height: c.EDITOR_HEIGHT - 2, validationChecker: function (v) { return self._checkValidation(v); } diff --git a/src/widget/multilayerdownlist/popup.downlist.js b/src/widget/multilayerdownlist/popup.downlist.js index 0f66afcc7..c18351220 100644 --- a/src/widget/multilayerdownlist/popup.downlist.js +++ b/src/widget/multilayerdownlist/popup.downlist.js @@ -107,7 +107,7 @@ BI.MultiLayerDownListPopup = BI.inherit(BI.Pane, { }] }, - innerVGap: 5, + innerVgap: 5, maxHeight: 378, }; self._createChildren(item); @@ -155,6 +155,7 @@ BI.MultiLayerDownListPopup = BI.inherit(BI.Pane, { _createChildren: function (item) { var self = this; this._formatEL(item).el.childValues = []; + item.items = item.children; BI.each(item.children, function (i, child) { child = child.el ? BI.extend(child.el, {children: child.children}) : child; var fatherValue = BI.deepClone(self._formatEL(item).el.value); diff --git a/src/widget/multilayerselecttree/multilayerselecttree.combo.js b/src/widget/multilayerselecttree/multilayerselecttree.combo.js index 472c2d1cd..6365ef484 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.combo.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.combo.js @@ -75,7 +75,7 @@ BI.MultiLayerSelectTreeCombo = BI.inherit(BI.Widget, { var self = this, o = this.options; return { type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", container: o.container, destroyWhenHide: o.destroyWhenHide, adjustLength: 2, @@ -139,7 +139,7 @@ BI.MultiLayerSelectTreeCombo = BI.inherit(BI.Widget, { itemsCreator: o.itemsCreator, valueFormatter: o.valueFormatter, watermark: o.watermark, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, value: o.value, tipType: o.tipType, @@ -174,6 +174,7 @@ BI.MultiLayerSelectTreeCombo = BI.inherit(BI.Widget, { var value = self.trigger.getSearcher().getKeyword(); self.combo.setValue([value]); self.combo.hideView(); + self.fireEvent(BI.MultiLayerSelectTreeCombo.EVENT_CHANGE); } }] }, @@ -237,6 +238,22 @@ BI.MultiLayerSelectTreeCombo = BI.inherit(BI.Widget, { populate: function (items) { this.combo.populate(items); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + showView: function () { + this.combo.showView(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); @@ -246,4 +263,4 @@ BI.MultiLayerSelectTreeCombo.EVENT_FOCUS = "EVENT_FOCUS"; BI.MultiLayerSelectTreeCombo.EVENT_CHANGE = "EVENT_CHANGE"; BI.MultiLayerSelectTreeCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; BI.MultiLayerSelectTreeCombo.EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM"; -BI.shortcut("bi.multilayer_select_tree_combo", BI.MultiLayerSelectTreeCombo); \ No newline at end of file +BI.shortcut("bi.multilayer_select_tree_combo", BI.MultiLayerSelectTreeCombo); diff --git a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js index c6030caff..02209b0d2 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.leveltree.js @@ -34,7 +34,8 @@ BI.MultiLayerSelectLevelTree = BI.inherit(BI.Pane, { BI.each(nodes, function (i, node) { var extend = { isFirstNode: i === 0, - isLastNode: i === nodes.length - 1 + isLastNode: i === nodes.length - 1, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT }; node.layer = layer; if (!BI.isKey(node.id)) { diff --git a/src/widget/multilayerselecttree/multilayerselecttree.trigger.js b/src/widget/multilayerselecttree/multilayerselecttree.trigger.js index 7203378ba..4b66b58f7 100644 --- a/src/widget/multilayerselecttree/multilayerselecttree.trigger.js +++ b/src/widget/multilayerselecttree/multilayerselecttree.trigger.js @@ -237,6 +237,18 @@ BI.MultiLayerSelectTreeTrigger = BI.inherit(BI.Trigger, { getValue: function () { return this.searcher.getValue(); + }, + + focus: function () { + this.searcher.focus(); + }, + + blur: function () { + this.searcher.blur(); + }, + + setWaterMark: function (v) { + this.searcher.setWaterMark(v); } }); diff --git a/src/widget/multilayerselecttree/node/node.first.plus.js b/src/widget/multilayerselecttree/node/node.first.plus.js index 37e69704c..c187ab7a5 100644 --- a/src/widget/multilayerselecttree/node/node.first.plus.js +++ b/src/widget/multilayerselecttree/node/node.first.plus.js @@ -54,12 +54,12 @@ BI.MultiLayerSelectTreeFirstPlusGroupNode = BI.inherit(BI.NodeButton, { // }); items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayerselecttree/node/node.last.plus.js b/src/widget/multilayerselecttree/node/node.last.plus.js index 7fcaca78f..89f4a1efa 100644 --- a/src/widget/multilayerselecttree/node/node.last.plus.js +++ b/src/widget/multilayerselecttree/node/node.last.plus.js @@ -47,12 +47,12 @@ BI.MultiLayerSelectTreeLastPlusGroupNode = BI.inherit(BI.NodeButton, { items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayerselecttree/node/node.mid.plus.js b/src/widget/multilayerselecttree/node/node.mid.plus.js index 84f14bb8d..6dad3105f 100644 --- a/src/widget/multilayerselecttree/node/node.mid.plus.js +++ b/src/widget/multilayerselecttree/node/node.mid.plus.js @@ -47,12 +47,12 @@ BI.MultiLayerSelectTreeMidPlusGroupNode = BI.inherit(BI.NodeButton, { items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayerselecttree/node/node.plus.js b/src/widget/multilayerselecttree/node/node.plus.js index 911093fe2..d63d2d9d8 100644 --- a/src/widget/multilayerselecttree/node/node.plus.js +++ b/src/widget/multilayerselecttree/node/node.plus.js @@ -47,12 +47,12 @@ BI.MultiLayerSelectTreePlusGroupNode = BI.inherit(BI.NodeButton, { items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayersingletree/multilayersingletree.combo.js b/src/widget/multilayersingletree/multilayersingletree.combo.js index 48d2c0b9d..779e645bf 100644 --- a/src/widget/multilayersingletree/multilayersingletree.combo.js +++ b/src/widget/multilayersingletree/multilayersingletree.combo.js @@ -79,7 +79,7 @@ BI.MultiLayerSingleTreeCombo = BI.inherit(BI.Widget, { var self = this, o = this.options; return { type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", container: o.container, destroyWhenHide: o.destroyWhenHide, adjustLength: 2, @@ -142,7 +142,7 @@ BI.MultiLayerSingleTreeCombo = BI.inherit(BI.Widget, { items: o.items, itemsCreator: o.itemsCreator, valueFormatter: o.valueFormatter, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, value: o.value, tipType: o.tipType, @@ -176,6 +176,7 @@ BI.MultiLayerSingleTreeCombo = BI.inherit(BI.Widget, { var value = self.trigger.getSearcher().getKeyword(); self.combo.setValue([value]); self.combo.hideView(); + self.fireEvent(BI.MultiLayerSingleTreeCombo.EVENT_CHANGE); } }] }, @@ -238,6 +239,22 @@ BI.MultiLayerSingleTreeCombo = BI.inherit(BI.Widget, { populate: function (items) { this.combo.populate(items); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + showView: function () { + this.combo.showView(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); @@ -246,4 +263,4 @@ BI.MultiLayerSingleTreeCombo.EVENT_BLUR = "EVENT_BLUR"; BI.MultiLayerSingleTreeCombo.EVENT_FOCUS = "EVENT_FOCUS"; BI.MultiLayerSingleTreeCombo.EVENT_CHANGE = "EVENT_CHANGE"; BI.MultiLayerSingleTreeCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; -BI.shortcut("bi.multilayer_single_tree_combo", BI.MultiLayerSingleTreeCombo); \ No newline at end of file +BI.shortcut("bi.multilayer_single_tree_combo", BI.MultiLayerSingleTreeCombo); diff --git a/src/widget/multilayersingletree/multilayersingletree.leveltree.js b/src/widget/multilayersingletree/multilayersingletree.leveltree.js index da8bca702..186e2e0ae 100644 --- a/src/widget/multilayersingletree/multilayersingletree.leveltree.js +++ b/src/widget/multilayersingletree/multilayersingletree.leveltree.js @@ -34,7 +34,8 @@ BI.MultiLayerSingleLevelTree = BI.inherit(BI.Pane, { BI.each(nodes, function (i, node) { var extend = { isFirstNode: i === 0, - isLastNode: i === nodes.length - 1 + isLastNode: i === nodes.length - 1, + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT }; node.layer = layer; if (!BI.isKey(node.id)) { diff --git a/src/widget/multilayersingletree/multilayersingletree.trigger.js b/src/widget/multilayersingletree/multilayersingletree.trigger.js index 20e47af0d..75a515129 100644 --- a/src/widget/multilayersingletree/multilayersingletree.trigger.js +++ b/src/widget/multilayersingletree/multilayersingletree.trigger.js @@ -239,6 +239,18 @@ BI.MultiLayerSingleTreeTrigger = BI.inherit(BI.Trigger, { getValue: function () { return this.searcher.getValue(); + }, + + focus: function () { + this.searcher.focus(); + }, + + blur: function () { + this.searcher.blur(); + }, + + setWaterMark: function (v) { + this.searcher.setWaterMark(v); } }); BI.MultiLayerSingleTreeTrigger.EVENT_FOCUS = "EVENT_FOCUS"; diff --git a/src/widget/multilayersingletree/node/node.first.plus.js b/src/widget/multilayersingletree/node/node.first.plus.js index 9d5794bcb..51177bcce 100644 --- a/src/widget/multilayersingletree/node/node.first.plus.js +++ b/src/widget/multilayersingletree/node/node.first.plus.js @@ -26,12 +26,12 @@ BI.MultiLayerSingleTreeFirstPlusGroupNode = BI.inherit(BI.NodeButton, { items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayersingletree/node/node.last.plus.js b/src/widget/multilayersingletree/node/node.last.plus.js index 18dd3eea7..007837f5c 100644 --- a/src/widget/multilayersingletree/node/node.last.plus.js +++ b/src/widget/multilayersingletree/node/node.last.plus.js @@ -26,12 +26,12 @@ BI.MultiLayerSingleTreeLastPlusGroupNode = BI.inherit(BI.NodeButton, { items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayersingletree/node/node.mid.plus.js b/src/widget/multilayersingletree/node/node.mid.plus.js index 9105de054..e8709cf78 100644 --- a/src/widget/multilayersingletree/node/node.mid.plus.js +++ b/src/widget/multilayersingletree/node/node.mid.plus.js @@ -26,7 +26,7 @@ BI.MultiLayerSingleTreeMidPlusGroupNode = BI.inherit(BI.NodeButton, { items.push({ el: this.node, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", diff --git a/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js b/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js index c10cbcd01..4cc5203e4 100644 --- a/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js +++ b/src/widget/multilayersingletree/treeitem/item.first.treeleaf.js @@ -46,12 +46,12 @@ BI.MultiLayerSingleTreeFirstTreeLeafItem = BI.inherit(BI.BasicButton, { items.push({ el: this.item, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js b/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js index 4289108f0..9aa604737 100644 --- a/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js +++ b/src/widget/multilayersingletree/treeitem/item.last.treeleaf.js @@ -46,12 +46,12 @@ BI.MultiLayerSingleTreeLastTreeLeafItem = BI.inherit(BI.BasicButton, { items.push({ el: this.item, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js b/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js index 92a9a626a..eed7d553c 100644 --- a/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js +++ b/src/widget/multilayersingletree/treeitem/item.mid.treeleaf.js @@ -46,12 +46,12 @@ BI.MultiLayerSingleTreeMidTreeLeafItem = BI.inherit(BI.BasicButton, { items.push({ el: this.item, - lgap: o.layer * 12 + lgap: o.layer * BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2 }); BI.createWidget({ type: "bi.horizontal_adapt", element: this, - columnSize: BI.makeArray(o.layer, 12), + columnSize: BI.makeArray(o.layer, BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT / 2), items: items }); }, diff --git a/src/widget/multiselect/check/multiselect.check.pane.js b/src/widget/multiselect/check/multiselect.check.pane.js index d9b2b8b9c..958375876 100644 --- a/src/widget/multiselect/check/multiselect.check.pane.js +++ b/src/widget/multiselect/check/multiselect.check.pane.js @@ -39,6 +39,7 @@ BI.MultiSelectCheckPane = BI.inherit(BI.Widget, { callback({ items: BI.map(self.storeValue.value, function (i, v) { var txt = opts.valueFormatter(v) || v; + return { text: txt, value: v, @@ -46,6 +47,7 @@ BI.MultiSelectCheckPane = BI.inherit(BI.Widget, { }; }) }); + return; } opts.itemsCreator(op, callback); @@ -54,6 +56,7 @@ BI.MultiSelectCheckPane = BI.inherit(BI.Widget, { this.continueSelect = BI.createWidget({ type: "bi.text_button", + title: BI.i18nText("BI-Continue_Select"), text: BI.i18nText("BI-Continue_Select"), cls: "multi-select-check-selected bi-high-light" }); @@ -69,18 +72,20 @@ BI.MultiSelectCheckPane = BI.inherit(BI.Widget, { height: this.constants.height, el: { type: "bi.vertical_adapt", + columnSize: ["auto", "auto"], cls: "multi-select-continue-select", items: [ { el: { type: "bi.label", + title: BI.i18nText("BI-Selected_Data"), text: BI.i18nText("BI-Selected_Data") }, lgap: this.constants.lgap }, { el: this.continueSelect, - lgap: this.constants.lgap + hgap: this.constants.lgap }] }, tgap: this.constants.tgap @@ -105,4 +110,4 @@ BI.MultiSelectCheckPane = BI.inherit(BI.Widget, { } }); -BI.shortcut("bi.multi_select_check_pane", BI.MultiSelectCheckPane); \ No newline at end of file +BI.shortcut("bi.multi_select_check_pane", BI.MultiSelectCheckPane); diff --git a/src/widget/multiselect/multiselect.combo.js b/src/widget/multiselect/multiselect.combo.js index c02b8e731..09c06b6a3 100644 --- a/src/widget/multiselect/multiselect.combo.js +++ b/src/widget/multiselect/multiselect.combo.js @@ -44,7 +44,7 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.multi_select_trigger", allowEdit: o.allowEdit, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, // adapter: this.popup, masker: { @@ -123,7 +123,7 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: !o.allowEdit, container: o.container, el: this.trigger, diff --git a/src/widget/multiselect/multiselect.combo.nobar.js b/src/widget/multiselect/multiselect.combo.nobar.js index 49b6f6d41..b4fe04154 100644 --- a/src/widget/multiselect/multiselect.combo.nobar.js +++ b/src/widget/multiselect/multiselect.combo.nobar.js @@ -41,7 +41,7 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.multi_select_trigger", - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, // adapter: this.popup, masker: { @@ -122,7 +122,7 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: false, container: o.container, el: this.trigger, diff --git a/src/widget/multiselect/multiselect.insert.combo.js b/src/widget/multiselect/multiselect.insert.combo.js index 35d005cd6..0cedaf020 100644 --- a/src/widget/multiselect/multiselect.insert.combo.js +++ b/src/widget/multiselect/multiselect.insert.combo.js @@ -40,7 +40,7 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.multi_select_insert_trigger", allowEdit: o.allowEdit, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, watermark: o.watermark, // adapter: this.popup, @@ -93,6 +93,7 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, { } self._dataChange = true; }); + this.getSearcher().getKeywordsLength() > 2000 && BI.Msg.alert(BI.i18nText("BI-Basic_Prompt"), BI.i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand")); } self.fireEvent(BI.MultiSelectInsertCombo.EVENT_SEARCHING); }); @@ -124,7 +125,7 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: !o.allowEdit, el: this.trigger, adjustLength: 1, diff --git a/src/widget/multiselect/multiselect.insert.combo.nobar.js b/src/widget/multiselect/multiselect.insert.combo.nobar.js index 226cc5260..39099bbde 100644 --- a/src/widget/multiselect/multiselect.insert.combo.nobar.js +++ b/src/widget/multiselect/multiselect.insert.combo.nobar.js @@ -41,7 +41,7 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.multi_select_insert_trigger", - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), text: o.text, // adapter: this.popup, masker: { @@ -88,6 +88,7 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, { } self._dataChange = true; }); + this.getSearcher().getKeywordsLength() > 2000 && BI.Msg.alert(BI.i18nText("BI-Basic_Prompt"), BI.i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand")); } }); @@ -116,7 +117,7 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: false, container: o.container, el: this.trigger, @@ -401,7 +402,7 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, { callback(); function adjust () { if (self.wants2Quit === true) { - self.fireEvent(BI.MultiSelectInsertNoBarCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.MultiSelectInsertNoBarCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; diff --git a/src/widget/multiselect/multiselect.popup.view.js b/src/widget/multiselect/multiselect.popup.view.js index 9c6bac7f0..cefe9f0b2 100644 --- a/src/widget/multiselect/multiselect.popup.view.js +++ b/src/widget/multiselect/multiselect.popup.view.js @@ -38,7 +38,7 @@ BI.MultiSelectPopupView = BI.inherit(BI.Widget, { minWidth: opts.minWidth, maxHeight: opts.maxHeight, element: this, - buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_Sure")], + buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_OK")], el: this.loader, value: opts.value }); @@ -84,7 +84,11 @@ BI.MultiSelectPopupView = BI.inherit(BI.Widget, { resetWidth: function (w) { this.popupView.resetWidth(w); - } + }, + + setDirection: function (direction, position) { + this.popupView.setDirection(direction, position); + }, }); BI.MultiSelectPopupView.EVENT_CHANGE = "EVENT_CHANGE"; @@ -92,4 +96,4 @@ BI.MultiSelectPopupView.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; BI.MultiSelectPopupView.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; -BI.shortcut("bi.multi_select_popup_view", BI.MultiSelectPopupView); \ No newline at end of file +BI.shortcut("bi.multi_select_popup_view", BI.MultiSelectPopupView); diff --git a/src/widget/multiselect/multiselect.popup.view.nobar.js b/src/widget/multiselect/multiselect.popup.view.nobar.js index f5ba1cebd..9132ae5ee 100644 --- a/src/widget/multiselect/multiselect.popup.view.nobar.js +++ b/src/widget/multiselect/multiselect.popup.view.nobar.js @@ -38,7 +38,7 @@ BI.MultiSelectNoBarPopupView = BI.inherit(BI.Widget, { minWidth: opts.minWidth, maxHeight: opts.maxHeight, element: this, - buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_Sure")], + buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_OK")], el: this.loader, value: opts.value }); @@ -80,7 +80,11 @@ BI.MultiSelectNoBarPopupView = BI.inherit(BI.Widget, { resetWidth: function (w) { this.popupView.resetWidth(w); - } + }, + + setDirection: function (direction, position) { + this.popupView.setDirection(direction, position); + }, }); BI.MultiSelectNoBarPopupView.EVENT_CHANGE = "EVENT_CHANGE"; @@ -88,4 +92,4 @@ BI.MultiSelectNoBarPopupView.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; BI.MultiSelectNoBarPopupView.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; -BI.shortcut("bi.multi_select_no_bar_popup_view", BI.MultiSelectNoBarPopupView); \ No newline at end of file +BI.shortcut("bi.multi_select_no_bar_popup_view", BI.MultiSelectNoBarPopupView); diff --git a/src/widget/multiselect/multiselect.trigger.js b/src/widget/multiselect/multiselect.trigger.js index d24d9c23a..7406bd5ba 100644 --- a/src/widget/multiselect/multiselect.trigger.js +++ b/src/widget/multiselect/multiselect.trigger.js @@ -136,6 +136,18 @@ BI.MultiSelectTrigger = BI.inherit(BI.Trigger, { getValue: function () { return this.searcher.getValue(); + }, + + focus: function () { + this.searcher.focus(); + }, + + blur: function () { + this.searcher.blur(); + }, + + setWaterMark: function (v) { + this.searcher.setWaterMark(v); } }); diff --git a/src/widget/multiselect/trigger/editor.multiselect.js b/src/widget/multiselect/trigger/editor.multiselect.js index 4541ddbe7..29ee8489b 100644 --- a/src/widget/multiselect/trigger/editor.multiselect.js +++ b/src/widget/multiselect/trigger/editor.multiselect.js @@ -93,6 +93,10 @@ BI.MultiSelectEditor = BI.inherit(BI.Widget, { populate: function (items) { + }, + + setWaterMark: function (v) { + this.editor.setWaterMark(v); } }); diff --git a/src/widget/multiselect/trigger/searcher.multiselect.insert.js b/src/widget/multiselect/trigger/searcher.multiselect.insert.js index e055f86f8..404a0e4e8 100644 --- a/src/widget/multiselect/trigger/searcher.multiselect.insert.js +++ b/src/widget/multiselect/trigger/searcher.multiselect.insert.js @@ -89,7 +89,7 @@ BI.MultiSelectInsertSearcher = BI.inherit(BI.Widget, { }); this.searcher.on(BI.Searcher.EVENT_SEARCHING, function () { var keywords = this.getKeywords(); - self.fireEvent(BI.MultiSelectInsertSearcher.EVENT_SEARCHING, keywords); + self.fireEvent(BI.MultiSelectInsertSearcher.EVENT_SEARCHING, keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000)); }); if (BI.isNotNull(o.value)) { this.setState(o.value); @@ -108,8 +108,19 @@ BI.MultiSelectInsertSearcher = BI.inherit(BI.Widget, { this.searcher.stopSearch(); }, + getKeywordsLength: function () { + var keywords = this.editor.getKeywords(); + + return keywords[keywords.length - 1] === BI.BlankSplitChar ? keywords.length - 1 : keywords.length; + }, + getKeyword: function () { - return this.editor.getKeyword(); + var keywords = this.editor.getKeywords().slice(0, 2000); + if (keywords[keywords.length - 1] === BI.BlankSplitChar) { + keywords = keywords.slice(0, keywords.length - 1); + } + + return BI.isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; }, hasMatched: function () { diff --git a/src/widget/multiselect/trigger/searcher.multiselect.js b/src/widget/multiselect/trigger/searcher.multiselect.js index ec26eccca..ab2688eb4 100644 --- a/src/widget/multiselect/trigger/searcher.multiselect.js +++ b/src/widget/multiselect/trigger/searcher.multiselect.js @@ -94,6 +94,14 @@ BI.MultiSelectSearcher = BI.inherit(BI.Widget, { } }, + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + adjustView: function () { this.searcher.adjustView(); }, diff --git a/src/widget/multiselectlist/multiselectlist.insert.js b/src/widget/multiselectlist/multiselectlist.insert.js index 2fe856a8e..082669692 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.js +++ b/src/widget/multiselectlist/multiselectlist.insert.js @@ -101,7 +101,11 @@ BI.MultiSelectInsertList = BI.inherit(BI.Single, { }, { eventName: BI.Searcher.EVENT_PAUSE, action: function () { - var keyword = this.getKeyword(); + var keywords = self._getKeywords(); + if (keywords[keywords.length - 1] === BI.BlankSplitChar) { + keywords = keywords.slice(0, keywords.length - 1); + } + var keyword = BI.isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; self._join({ type: BI.Selection.Multi, value: [keyword] @@ -138,6 +142,7 @@ BI.MultiSelectInsertList = BI.inherit(BI.Single, { } self.fireEvent(BI.MultiSelectInsertList.EVENT_CHANGE); }); + self._getKeywordsLength() > 2000 && BI.Msg.alert(BI.i18nText("BI-Basic_Prompt"), BI.i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand")); } } }, { @@ -190,10 +195,17 @@ BI.MultiSelectInsertList = BI.inherit(BI.Single, { keywords = keywords.slice(0, keywords.length - 1); } if (/\u200b\s\u200b$/.test(val)) { - return keywords.concat([BI.BlankSplitChar]); + keywords = keywords.concat([BI.BlankSplitChar]); } - return keywords; + return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000); + }, + + _getKeywordsLength: function () { + var val = this.editor.getValue(); + var keywords = val.split(/\u200b\s\u200b/); + + return keywords.length - 1; }, _showAdapter: function () { diff --git a/src/widget/multiselectlist/multiselectlist.insert.nobar.js b/src/widget/multiselectlist/multiselectlist.insert.nobar.js index e4b74eff3..e2c8f2008 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.nobar.js +++ b/src/widget/multiselectlist/multiselectlist.insert.nobar.js @@ -105,7 +105,11 @@ BI.MultiSelectInsertNoBarList = BI.inherit(BI.Single, { }, { eventName: BI.Searcher.EVENT_PAUSE, action: function () { - var keyword = this.getKeyword(); + var keywords = self._getKeywords(); + if (keywords[keywords.length - 1] === BI.BlankSplitChar) { + keywords = keywords.slice(0, keywords.length - 1); + } + var keyword = BI.isEmptyArray(keywords) ? "" : keywords[keywords.length - 1]; self._join({ type: BI.Selection.Multi, value: [keyword] @@ -141,6 +145,7 @@ BI.MultiSelectInsertNoBarList = BI.inherit(BI.Single, { } self.fireEvent(BI.MultiSelectInsertNoBarList.EVENT_CHANGE); }); + self._getKeywordsLength() > 2000 && BI.Msg.alert(BI.i18nText("BI-Basic_Prompt"), BI.i18nText("BI-Basic_Too_Much_Value_Get_Two_Thousand")); } } }, { @@ -196,10 +201,17 @@ BI.MultiSelectInsertNoBarList = BI.inherit(BI.Single, { keywords = keywords.slice(0, keywords.length - 1); } if (/\u200b\s\u200b$/.test(val)) { - return keywords.concat([BI.BlankSplitChar]); + keywords = keywords.concat([BI.BlankSplitChar]); } - return keywords; + return keywords.length > 2000 ? keywords.slice(0, 2000).concat([BI.BlankSplitChar]) : keywords.slice(0, 2000); + }, + + _getKeywordsLength: function () { + var val = this.editor.getValue(); + var keywords = val.split(/\u200b\s\u200b/); + + return keywords.length - 1; }, _showAdapter: function () { diff --git a/src/widget/multitree/check/multi.tree.check.pane.js b/src/widget/multitree/check/multi.tree.check.pane.js index b73f8d1ec..598a19f21 100644 --- a/src/widget/multitree/check/multi.tree.check.pane.js +++ b/src/widget/multitree/check/multi.tree.check.pane.js @@ -30,6 +30,7 @@ BI.MultiTreeCheckPane = BI.inherit(BI.Pane, { var continueSelect = BI.createWidget({ type: "bi.text_button", + title: BI.i18nText("BI-Continue_Select"), text: BI.i18nText("BI-Continue_Select"), cls: "multi-tree-check-selected" }); @@ -41,12 +42,14 @@ BI.MultiTreeCheckPane = BI.inherit(BI.Pane, { }); var backToPopup = BI.createWidget({ - type: "bi.left", + type: "bi.vertical_adapt", + columnSize: ["auto", "auto"], cls: "multi-tree-continue-select", items: [ { el: { type: "bi.label", + title: BI.i18nText("BI-Selected_Data"), text: BI.i18nText("BI-Selected_Data") }, lgap: this.constants.lgap, @@ -54,7 +57,7 @@ BI.MultiTreeCheckPane = BI.inherit(BI.Pane, { }, { el: continueSelect, - lgap: this.constants.lgap, + hgap: this.constants.lgap, tgap: this.constants.tgap }] }); @@ -92,7 +95,6 @@ BI.MultiTreeCheckPane = BI.inherit(BI.Pane, { el: this.display }] }); - }, empty: function () { @@ -116,4 +118,4 @@ BI.MultiTreeCheckPane = BI.inherit(BI.Pane, { BI.MultiTreeCheckPane.EVENT_CONTINUE_CLICK = "EVENT_CONTINUE_CLICK"; -BI.shortcut("bi.multi_tree_check_pane", BI.MultiTreeCheckPane); \ No newline at end of file +BI.shortcut("bi.multi_tree_check_pane", BI.MultiTreeCheckPane); diff --git a/src/widget/multitree/multi.tree.combo.js b/src/widget/multitree/multi.tree.combo.js index a6763d87e..40fc91a14 100644 --- a/src/widget/multitree/multi.tree.combo.js +++ b/src/widget/multitree/multi.tree.combo.js @@ -27,7 +27,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.multi_select_trigger", allowEdit: o.allowEdit, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), valueFormatter: o.valueFormatter, text: o.text, watermark: o.watermark, @@ -49,7 +49,7 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: !o.allowEdit, container: o.container, el: this.trigger, @@ -344,6 +344,18 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { populate: function () { this.combo.populate(); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); diff --git a/src/widget/multitree/multi.tree.insert.combo.js b/src/widget/multitree/multi.tree.insert.combo.js index 4e4a62e8d..76f9c0b5c 100644 --- a/src/widget/multitree/multi.tree.insert.combo.js +++ b/src/widget/multitree/multi.tree.insert.combo.js @@ -28,7 +28,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.multi_select_trigger", allowEdit: o.allowEdit, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), valueFormatter: o.valueFormatter, // adapter: this.popup, masker: { @@ -65,7 +65,7 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: !o.allowEdit, container: o.container, el: this.trigger, @@ -360,6 +360,18 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { populate: function () { this.combo.populate(); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); diff --git a/src/widget/multitree/multi.tree.list.combo.js b/src/widget/multitree/multi.tree.list.combo.js index c4be0a760..198eb53fc 100644 --- a/src/widget/multitree/multi.tree.list.combo.js +++ b/src/widget/multitree/multi.tree.list.combo.js @@ -30,7 +30,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { allowEdit: o.allowEdit, text: o.text, watermark: o.watermark, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), valueFormatter: o.valueFormatter, // adapter: this.popup, masker: { @@ -80,7 +80,7 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", toggle: !o.allowEdit, container: o.container, el: this.trigger, @@ -378,6 +378,18 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { populate: function () { this.combo.populate(); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); diff --git a/src/widget/multitree/multi.tree.popup.js b/src/widget/multitree/multi.tree.popup.js index 14c7165d8..970c76cc6 100644 --- a/src/widget/multitree/multi.tree.popup.js +++ b/src/widget/multitree/multi.tree.popup.js @@ -42,7 +42,7 @@ BI.MultiTreePopup = BI.inherit(BI.Pane, { maxWidth: opts.maxWidth, minWidth: opts.minWidth, maxHeight: opts.maxHeight, - buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_Sure")], + buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_OK")], el: this.tree }); @@ -84,6 +84,10 @@ BI.MultiTreePopup = BI.inherit(BI.Pane, { return this.tree.hasChecked(); }, + setDirection: function (direction, position) { + this.popupView.setDirection(direction, position); + }, + resetHeight: function (h) { this.popupView.resetHeight(h); }, @@ -99,4 +103,4 @@ BI.MultiTreePopup.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; BI.MultiTreePopup.EVENT_AFTERINIT = "EVENT_AFTERINIT"; -BI.shortcut("bi.multi_tree_popup_view", BI.MultiTreePopup); \ No newline at end of file +BI.shortcut("bi.multi_tree_popup_view", BI.MultiTreePopup); diff --git a/src/widget/multitree/trigger/searcher.list.multi.tree.js b/src/widget/multitree/trigger/searcher.list.multi.tree.js index 2a8d9f4c5..555d1b783 100644 --- a/src/widget/multitree/trigger/searcher.list.multi.tree.js +++ b/src/widget/multitree/trigger/searcher.list.multi.tree.js @@ -31,7 +31,18 @@ BI.MultiListTreeSearcher = BI.inherit(BI.Widget, { el: { type: "bi.simple_state_editor", height: o.height - } + }, + listeners: [{ + eventName: BI.MultiSelectEditor.EVENT_FOCUS, + action: function () { + self.fireEvent(BI.MultiSelectSearcher.EVENT_FOCUS); + } + }, { + eventName: BI.MultiSelectEditor.EVENT_BLUR, + action: function () { + self.fireEvent(BI.MultiSelectSearcher.EVENT_BLUR); + } + }] }); this.searcher = BI.createWidget({ @@ -153,6 +164,18 @@ BI.MultiListTreeSearcher = BI.inherit(BI.Widget, { populate: function (items) { this.searcher.populate.apply(this.searcher, arguments); + }, + + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + + setWaterMark: function (v) { + this.editor.setWaterMark(v); } }); diff --git a/src/widget/multitree/trigger/searcher.multi.tree.js b/src/widget/multitree/trigger/searcher.multi.tree.js index 6790e2c23..35d59f200 100644 --- a/src/widget/multitree/trigger/searcher.multi.tree.js +++ b/src/widget/multitree/trigger/searcher.multi.tree.js @@ -184,6 +184,18 @@ BI.MultiTreeSearcher = BI.inherit(BI.Widget, { populate: function (items) { this.searcher.populate.apply(this.searcher, arguments); + }, + + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + + setWaterMark: function (v) { + this.editor.setWaterMark(v); } }); diff --git a/src/widget/numbereditor/number.editor.js b/src/widget/numbereditor/number.editor.js index c68cba4c2..c62497afe 100644 --- a/src/widget/numbereditor/number.editor.js +++ b/src/widget/numbereditor/number.editor.js @@ -3,9 +3,9 @@ * 数值微调器 */ BI.NumberEditor = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (conf) { return BI.extend(BI.NumberEditor.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-number-editor bi-border bi-focus-shadow", + baseCls: "bi-number-editor bi-focus-shadow " + (conf.simple ? "bi-border-bottom" : "bi-border"), validationChecker: BI.emptyFn, valueFormatter: function (v) { return v; @@ -25,6 +25,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { this.editor = BI.createWidget({ type: "bi.sign_editor", height: o.height - 2, + simple: o.simple, allowBlank: o.allowBlank, value: o.valueFormatter(o.value), validationChecker: function (v) { @@ -42,10 +43,12 @@ BI.NumberEditor = BI.inherit(BI.Widget, { this.editor.on(BI.TextEditor.EVENT_ERROR, function () { o.value = BI.parseFloat(this.getLastValidValue()); self._checkAdjustDisabled(o.value); + self.element.addClass("error"); }); this.editor.on(BI.TextEditor.EVENT_VALID, function () { o.value = BI.parseFloat(this.getValue()); self._checkAdjustDisabled(o.value); + self.element.removeClass("error"); }); this.editor.on(BI.TextEditor.EVENT_CONFIRM, function () { self.fireEvent(BI.NumberEditor.EVENT_CONFIRM); @@ -54,7 +57,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { type: "bi.icon_button", forceNotSelected: true, trigger: "lclick,", - cls: "add-up-font top-button bi-border-left bi-list-item-active2 icon-size-12" + cls: (o.simple ? "solid-triangle-top-font " : "add-up-font bi-border-left ") + "top-button bi-list-item-active2 icon-size-12" }); this.topBtn.on(BI.IconButton.EVENT_CHANGE, function () { self._finetuning(o.step); @@ -65,7 +68,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { type: "bi.icon_button", trigger: "lclick,", forceNotSelected: true, - cls: "minus-down-font bottom-button bi-border-left bi-list-item-active2 icon-size-12" + cls: (o.simple ? "solid-triangle-bottom-font " : "minus-down-font bi-border-left ") + "bottom-button bi-list-item-active2 icon-size-12" }); this.bottomBtn.on(BI.IconButton.EVENT_CHANGE, function () { self._finetuning(-o.step); diff --git a/src/widget/numberinterval/numberinterval.js b/src/widget/numberinterval/numberinterval.js index 30af17b4d..9e2df9825 100644 --- a/src/widget/numberinterval/numberinterval.js +++ b/src/widget/numberinterval/numberinterval.js @@ -66,7 +66,7 @@ BI.NumberInterval = BI.inherit(BI.Single, { }); BI.createWidget({ type: "bi.absolute", - element: this.smallEditor.element, + element: this.smallEditor, items: [{ el: this.smallTip, top: 0, @@ -104,7 +104,7 @@ BI.NumberInterval = BI.inherit(BI.Single, { }); BI.createWidget({ type: "bi.absolute", - element: this.bigEditor.element, + element: this.bigEditor, items: [{ el: this.bigTip, top: 0, @@ -529,6 +529,14 @@ BI.NumberInterval = BI.inherit(BI.Single, { return value; }, + focusMinEditor: function () { + this.smallEditor.focus(); + }, + + focusMaxEditor: function () { + this.bigEditor.focus(); + }, + destroyed: function () { var c = this.constants; BI.Bubbles.remove(c.typeError); @@ -540,4 +548,4 @@ BI.NumberInterval.EVENT_CHANGE = "EVENT_CHANGE"; BI.NumberInterval.EVENT_CONFIRM = "EVENT_CONFIRM"; BI.NumberInterval.EVENT_VALID = "EVENT_VALID"; BI.NumberInterval.EVENT_ERROR = "EVENT_ERROR"; -BI.shortcut("bi.number_interval", BI.NumberInterval); \ No newline at end of file +BI.shortcut("bi.number_interval", BI.NumberInterval); diff --git a/src/widget/numberinterval/singleeditor/single.editor.js b/src/widget/numberinterval/singleeditor/single.editor.js index 01dbe0c3a..ac7738d9f 100644 --- a/src/widget/numberinterval/singleeditor/single.editor.js +++ b/src/widget/numberinterval/singleeditor/single.editor.js @@ -12,6 +12,7 @@ BI.NumberIntervalSingleEidtor = BI.inherit(BI.Single, { type: "bi.vertical", items: [{ type: "bi.editor", + simple: o.simple, ref: function (_ref) { self.editor = _ref; }, @@ -71,6 +72,10 @@ BI.NumberIntervalSingleEidtor = BI.inherit(BI.Single, { setValue: function (v) { return this.editor.setValue(v); + }, + + focus: function () { + this.editor.focus(); } }); diff --git a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js index def624c1b..cb7fddf9a 100644 --- a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js +++ b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js @@ -333,7 +333,7 @@ BI.SearchMultiTextValueCombo = BI.inherit(BI.Single, { self._updateAllValue(); self._checkError(); if (self.wants2Quit === true) { - self.fireEvent(BI.SearchMultiTextValueCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.SearchMultiTextValueCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; diff --git a/src/widget/searchmultitextvaluecombo/multitextvalue.popup.view.search.js b/src/widget/searchmultitextvaluecombo/multitextvalue.popup.view.search.js index c8df9e1a4..cb8027f0c 100644 --- a/src/widget/searchmultitextvaluecombo/multitextvalue.popup.view.search.js +++ b/src/widget/searchmultitextvaluecombo/multitextvalue.popup.view.search.js @@ -31,7 +31,7 @@ BI.SearchMultiSelectPopupView = BI.inherit(BI.Widget, { minWidth: opts.minWidth, maxHeight: opts.maxHeight, element: this, - buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_Sure")], + buttons: [BI.i18nText("BI-Basic_Clears"), BI.i18nText("BI-Basic_OK")], el: this.loader, value: opts.value }); @@ -77,7 +77,11 @@ BI.SearchMultiSelectPopupView = BI.inherit(BI.Widget, { resetWidth: function (w) { this.popupView.resetWidth(w); - } + }, + + setDirection: function (direction, position) { + this.popupView.setDirection(direction, position); + }, }); BI.SearchMultiSelectPopupView.EVENT_CHANGE = "EVENT_CHANGE"; @@ -85,4 +89,4 @@ BI.SearchMultiSelectPopupView.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; BI.SearchMultiSelectPopupView.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; -BI.shortcut("bi.search_multi_select_popup_view", BI.SearchMultiSelectPopupView); \ No newline at end of file +BI.shortcut("bi.search_multi_select_popup_view", BI.SearchMultiSelectPopupView); diff --git a/src/widget/selecttree/nodes/node.first.plus.js b/src/widget/selecttree/nodes/node.first.plus.js index f975ea00e..f8f23c2b5 100644 --- a/src/widget/selecttree/nodes/node.first.plus.js +++ b/src/widget/selecttree/nodes/node.first.plus.js @@ -49,7 +49,7 @@ BI.SelectTreeFirstPlusGroupNode = BI.inherit(BI.NodeButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: this.checkbox }, this.text); BI.createWidget(BI.extend({ diff --git a/src/widget/selecttree/nodes/node.last.plus.js b/src/widget/selecttree/nodes/node.last.plus.js index 0cab47f4b..2c4cca80c 100644 --- a/src/widget/selecttree/nodes/node.last.plus.js +++ b/src/widget/selecttree/nodes/node.last.plus.js @@ -49,7 +49,7 @@ BI.SelectTreeLastPlusGroupNode = BI.inherit(BI.NodeButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: this.checkbox }, this.text); BI.createWidget(BI.extend({ diff --git a/src/widget/selecttree/nodes/node.mid.plus.js b/src/widget/selecttree/nodes/node.mid.plus.js index b2ec407d0..289136242 100644 --- a/src/widget/selecttree/nodes/node.mid.plus.js +++ b/src/widget/selecttree/nodes/node.mid.plus.js @@ -49,7 +49,7 @@ BI.SelectTreeMidPlusGroupNode = BI.inherit(BI.NodeButton, { }); var type = BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left); var items = BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, { - width: 24, + width: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, el: this.checkbox }, this.text); BI.createWidget(BI.extend({ diff --git a/src/widget/selecttree/selecttree.popup.js b/src/widget/selecttree/selecttree.popup.js index f2aeea428..1bd69a6cb 100644 --- a/src/widget/selecttree/selecttree.popup.js +++ b/src/widget/selecttree/selecttree.popup.js @@ -20,6 +20,7 @@ BI.SelectTreePopup = BI.inherit(BI.Pane, { var extend = {layer: layer}; node.id = node.id || BI.UUID(); extend.pNode = pNode; + extend.height = BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; if (node.isParent === true || node.parent === true || BI.isNotEmptyArray(node.children)) { extend.type = "bi.select_tree_mid_plus_group_node"; if (i === nodes.length - 1) { diff --git a/src/widget/singleselect/search/singleselect.search.loader.js b/src/widget/singleselect/search/singleselect.search.loader.js index 5d03f020c..5625593dd 100644 --- a/src/widget/singleselect/search/singleselect.search.loader.js +++ b/src/widget/singleselect/search/singleselect.search.loader.js @@ -10,6 +10,9 @@ BI.SingleSelectSearchLoader = BI.inherit(BI.Widget, { return BI.extend(BI.SingleSelectSearchLoader.superclass._defaultConfig.apply(this, arguments), { baseCls: "bi-single-select-search-loader", allowNoSelect: false, + logic: { + dynamic: false + }, itemsCreator: BI.emptyFn, keywordGetter: BI.emptyFn, valueFormatter: BI.emptyFn @@ -86,16 +89,18 @@ BI.SingleSelectSearchLoader = BI.inherit(BI.Widget, { }, _createItems: function (items) { - return BI.createItems(items, { - type: this.options.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item", - cls: "bi-list-item-active", - logic: { - dynamic: false - }, - height: 25, - selected: false, - iconWrapperWidth: 26, - hgap: this.options.allowNoSelect ? 10 : 0 + var o = this.options; + return BI.map(items, function (i, item) { + return BI.extend({ + type: o.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item", + logic: o.logic, + cls: "bi-list-item-active", + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + selected: false, + iconWrapperWidth: 26, + hgap: o.allowNoSelect ? 10 : 0, + title: item.title || item.text + }, item); }); }, diff --git a/src/widget/singleselect/singleselect.combo.js b/src/widget/singleselect/singleselect.combo.js index 00f3ec366..fb873438f 100644 --- a/src/widget/singleselect/singleselect.combo.js +++ b/src/widget/singleselect/singleselect.combo.js @@ -30,7 +30,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.single_select_trigger", - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), // adapter: this.popup, allowNoSelect: o.allowNoSelect, allowEdit: o.allowEdit, @@ -64,6 +64,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { self.fireEvent(BI.SingleSelectCombo.EVENT_STOP); }); this.trigger.on(BI.SingleSelectTrigger.EVENT_SEARCHING, function () { + self._dataChange = true; self.fireEvent(BI.SingleSelectCombo.EVENT_SEARCHING); }); @@ -71,6 +72,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { self.storeValue = this.getValue(); assertShowValue(); self._defaultState(); + self._dataChange = true; }); this.trigger.on(BI.SingleSelectTrigger.EVENT_COUNTER_CLICK, function () { if (!self.combo.isViewVisible()) { @@ -80,7 +82,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", container: o.container, toggle: false, el: this.trigger, @@ -95,6 +97,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { listeners: [{ eventName: BI.SingleSelectPopupView.EVENT_CHANGE, action: function () { + self._dataChange = true; self.storeValue = this.getValue(); self._adjust(function () { assertShowValue(); @@ -120,6 +123,9 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self.populate(); @@ -133,7 +139,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { if (self.requesting === true) { self.wants2Quit = true; } else { - self.fireEvent(BI.SingleSelectCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.SingleSelectCombo.EVENT_CONFIRM); } }); @@ -173,7 +179,8 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { this.combo.hideView(); }, - _assertValue: function (val) {}, + _assertValue: function (val) { + }, _makeMap: function (values) { return BI.makeObject(values || []); @@ -220,7 +227,7 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { function adjust () { if (self.wants2Quit === true) { - self.fireEvent(BI.SingleSelectCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.SingleSelectCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; diff --git a/src/widget/singleselect/singleselect.insert.combo.js b/src/widget/singleselect/singleselect.insert.combo.js index d94f97197..b8b21cd09 100644 --- a/src/widget/singleselect/singleselect.insert.combo.js +++ b/src/widget/singleselect/singleselect.insert.combo.js @@ -31,7 +31,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { this.trigger = BI.createWidget({ type: "bi.single_select_trigger", watermark: o.watermark, - height: o.height - 2, + height: o.height - (o.simple ? 1 : 2), allowNoSelect: o.allowNoSelect, allowEdit: o.allowEdit, // adapter: this.popup, @@ -75,6 +75,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { self._defaultState(); }); this.trigger.on(BI.SingleSelectTrigger.EVENT_SEARCHING, function () { + self._dataChange = true; self.fireEvent(BI.SingleSelectInsertCombo.EVENT_SEARCHING); }); @@ -82,6 +83,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { self.storeValue = this.getValue(); assertShowValue(); self._defaultState(); + self._dataChange = true; }); this.trigger.on(BI.SingleSelectTrigger.EVENT_COUNTER_CLICK, function () { if (!self.combo.isViewVisible()) { @@ -91,7 +93,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { this.combo = BI.createWidget({ type: "bi.combo", - cls: "bi-border bi-border-radius", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius", container: o.container, toggle: false, el: this.trigger, @@ -106,6 +108,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { listeners: [{ eventName: BI.SingleSelectPopupView.EVENT_CHANGE, action: function () { + self._dataChange = true; self.storeValue = this.getValue(); self._adjust(function () { assertShowValue(); @@ -131,6 +134,9 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self.populate(); @@ -144,7 +150,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { if (self.requesting === true) { self.wants2Quit = true; } else { - self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CONFIRM); } }); @@ -198,7 +204,7 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { function adjust () { if (self.wants2Quit === true) { - self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CONFIRM); + self._dataChange && self.fireEvent(BI.SingleSelectInsertCombo.EVENT_CONFIRM); self.wants2Quit = false; } self.requesting = false; @@ -237,4 +243,4 @@ BI.SingleSelectInsertCombo.EVENT_SEARCHING = "EVENT_SEARCHING"; BI.SingleSelectInsertCombo.EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM"; BI.SingleSelectInsertCombo.EVENT_CONFIRM = "EVENT_CONFIRM"; -BI.shortcut("bi.single_select_insert_combo", BI.SingleSelectInsertCombo); \ No newline at end of file +BI.shortcut("bi.single_select_insert_combo", BI.SingleSelectInsertCombo); diff --git a/src/widget/singleselect/singleselect.loader.js b/src/widget/singleselect/singleselect.loader.js index 6318601ab..1f27b6425 100644 --- a/src/widget/singleselect/singleselect.loader.js +++ b/src/widget/singleselect/singleselect.loader.js @@ -108,14 +108,18 @@ BI.SingleSelectLoader = BI.inherit(BI.Widget, { }, _createItems: function (items) { - return BI.createItems(items, { - type: this.options.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item", - logic: this.options.logic, - cls: "bi-list-item-active", - height: 24, - selected: false, - iconWrapperWidth: 26, - hgap: this.options.allowNoSelect ? 10 : 0 + var o = this.options; + return BI.map(items, function (i, item) { + return BI.extend({ + type: o.allowNoSelect ? "bi.single_select_item" : "bi.single_select_radio_item", + logic: o.logic, + cls: "bi-list-item-active", + height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, + selected: false, + iconWrapperWidth: 26, + hgap: o.allowNoSelect ? 10 : 0, + title: item.title || item.text + }, item); }); }, @@ -126,7 +130,8 @@ BI.SingleSelectLoader = BI.inherit(BI.Widget, { }, 30); }, - _assertValue: function (val) {}, + _assertValue: function (val) { + }, setStartValue: function (v) { this._startValue = v; diff --git a/src/widget/singleselect/singleselect.popup.view.js b/src/widget/singleselect/singleselect.popup.view.js index 8c22afbd3..4e33c004f 100644 --- a/src/widget/singleselect/singleselect.popup.view.js +++ b/src/widget/singleselect/singleselect.popup.view.js @@ -69,10 +69,14 @@ BI.SingleSelectPopupView = BI.inherit(BI.Widget, { resetWidth: function (w) { this.popupView.resetWidth(w); - } + }, + + setDirection: function (direction, position) { + this.popupView.setDirection(direction, position); + }, }); BI.SingleSelectPopupView.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.single_select_popup_view", BI.SingleSelectPopupView); \ No newline at end of file +BI.shortcut("bi.single_select_popup_view", BI.SingleSelectPopupView); diff --git a/src/widget/singleslider/button/editor.sign.text.js b/src/widget/singleslider/button/editor.sign.text.js index d2b91930a..281c7b0e1 100644 --- a/src/widget/singleslider/button/editor.sign.text.js +++ b/src/widget/singleslider/button/editor.sign.text.js @@ -14,6 +14,7 @@ BI.SignTextEditor = BI.inherit(BI.Widget, { var self = this, o = this.options; this.editor = BI.createWidget({ type: "bi.editor", + simple: o.simple, height: o.height, hgap: 4, vgap: 2, diff --git a/src/widget/singleslider/singleslider.js b/src/widget/singleslider/singleslider.js index 12aba0196..ea51dbace 100644 --- a/src/widget/singleslider/singleslider.js +++ b/src/widget/singleslider/singleslider.js @@ -4,7 +4,7 @@ BI.SingleSlider = BI.inherit(BI.Single, { _constant: { EDITOR_WIDTH: 90, - EDITOR_HEIGHT: 30, + EDITOR_HEIGHT: 20, SLIDER_WIDTH_HALF: 15, SLIDER_WIDTH: 30, SLIDER_HEIGHT: 30, @@ -79,6 +79,7 @@ BI.SingleSlider = BI.inherit(BI.Single, { cls: "slider-editor-button", text: o.unit, width: c.EDITOR_WIDTH - 2, + height: c.EDITOR_HEIGHT - 2, allowBlank: false, textAlign: "center", validationChecker: function (v) { diff --git a/src/widget/singletree/singletree.combo.js b/src/widget/singletree/singletree.combo.js index e3d884ce4..ce6d255d4 100644 --- a/src/widget/singletree/singletree.combo.js +++ b/src/widget/singletree/singletree.combo.js @@ -4,9 +4,9 @@ */ BI.SingleTreeCombo = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { return BI.extend(BI.SingleTreeCombo.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-single-tree-combo bi-border bi-border-radius", + baseCls: "bi-single-tree-combo bi-border-radius " + (config.simple ? "bi-border-bottom" : "bi-border"), trigger: {}, height: 24, text: "", diff --git a/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js b/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js index 9479c68fe..ff56fff45 100644 --- a/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js +++ b/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js @@ -3,9 +3,9 @@ * @extend BI.Widget */ BI.TextValueDownListCombo = BI.inherit(BI.Widget, { - _defaultConfig: function () { + _defaultConfig: function (config) { return BI.extend(BI.TextValueDownListCombo.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-text-value-down-list-combo bi-border", + baseCls: "bi-text-value-down-list-combo " + (config.simple ? "bi-border-bottom" : "bi-border"), height: 24, }); }, diff --git a/src/widget/time/time.combo.js b/src/widget/time/time.combo.js index e816b8fa6..30c40e0ab 100644 --- a/src/widget/time/time.combo.js +++ b/src/widget/time/time.combo.js @@ -10,7 +10,8 @@ popupHeight: 80, popupWidth: 240, comboAdjustHeight: 1, - border: 1 + border: 1, + iconWidth: 24 }, props: { baseCls: "bi-time-combo", @@ -177,7 +178,7 @@ el: { type: "bi.icon_button", cls: "bi-trigger-icon-button time-font icon-size-16", - width: opts.height, + width: this.constants.iconWidth, height: opts.height, listeners: [{ eventName: BI.IconButton.EVENT_CHANGE, @@ -222,6 +223,18 @@ this.setValue(nowTome); this.hidePopupView(); this.fireEvent(BI.TimeCombo.EVENT_CONFIRM); + }, + + focus: function () { + this.trigger.focus(); + }, + + blur: function () { + this.trigger.blur(); + }, + + setWaterMark: function (v) { + this.trigger.setWaterMark(v); } }); diff --git a/src/widget/time/time.trigger.js b/src/widget/time/time.trigger.js index 037a03888..cd8e25cd4 100644 --- a/src/widget/time/time.trigger.js +++ b/src/widget/time/time.trigger.js @@ -180,8 +180,19 @@ getValue: function () { return this.storeValue; - } + }, + + focus: function () { + this.editor.focus(); + }, + + blur: function () { + this.editor.blur(); + }, + setWaterMark: function (v) { + this.editor.setWaterMark(v); + } }); BI.shortcut("bi.time_trigger", BI.TimeTrigger); })(); \ No newline at end of file diff --git a/src/widget/timeinterval/dateinterval.js b/src/widget/timeinterval/dateinterval.js index 69a5b9c87..ca6895301 100644 --- a/src/widget/timeinterval/dateinterval.js +++ b/src/widget/timeinterval/dateinterval.js @@ -73,6 +73,7 @@ BI.DateInterval = BI.inherit(BI.Single, { minDate: o.minDate, maxDate: o.maxDate, behaviors: o.behaviors, + watermark: o.watermark, value: v, height: o.height, listeners: [{ diff --git a/src/widget/timeinterval/timeinterval.js b/src/widget/timeinterval/timeinterval.js index 14367889f..56a9df8fb 100644 --- a/src/widget/timeinterval/timeinterval.js +++ b/src/widget/timeinterval/timeinterval.js @@ -73,6 +73,7 @@ BI.TimeInterval = BI.inherit(BI.Single, { minDate: o.minDate, maxDate: o.maxDate, behaviors: o.behaviors, + watermark: o.watermark, value: v, height: o.height, }); diff --git a/src/widget/timeinterval/timeperiods.js b/src/widget/timeinterval/timeperiods.js index dbc73333e..45c5a970f 100644 --- a/src/widget/timeinterval/timeperiods.js +++ b/src/widget/timeinterval/timeperiods.js @@ -21,13 +21,13 @@ return { type: "bi.absolute", - height: this.constants.height, + height: o.height, items: [{ el: { type: "bi.horizontal_auto", items: [{ type: "bi.label", - height: this.constants.height, + height: o.height, width: this.constants.width, text: "-", ref: function (_ref) { @@ -42,7 +42,7 @@ }, { el: { type: "bi.center", - height: this.constants.height, + height: o.height, hgap: this.constants.hgap, items: [{ type: "bi.absolute", @@ -82,9 +82,11 @@ _createCombo: function (v) { var self = this; + var o = this.options; return { type: "bi.time_combo", value: v, + height: o.height, listeners: [{ eventName: BI.TimeCombo.EVENT_BEFORE_POPUPVIEW, action: function () { diff --git a/src/widget/year/combo.year.js b/src/widget/year/combo.year.js index b23b660e4..62a498d54 100644 --- a/src/widget/year/combo.year.js +++ b/src/widget/year/combo.year.js @@ -1,5 +1,9 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, { + _const: { + iconWidth: 24 + }, + props: { baseCls: "bi-year-combo", behaviors: {}, @@ -13,11 +17,13 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, { var self = this, o = this.options; BI.DynamicYearCombo.superclass._init.apply(this, arguments); this.storeValue = o.value; + var border = o.simple ? 1 : 2; this.trigger = BI.createWidget({ type: "bi.dynamic_year_trigger", + simple: o.simple, min: o.minDate, max: o.maxDate, - height: o.height - 2, + height: o.height - border, value: o.value || "" }); this.trigger.on(BI.DynamicYearTrigger.EVENT_KEY_DOWN, function () { @@ -37,9 +43,11 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, { }); this.trigger.on(BI.DynamicYearTrigger.EVENT_ERROR, function () { self.combo.isViewVisible() && self.combo.hideView(); + self.comboWrapper.element.addClass("error"); self.fireEvent(BI.DynamicYearCombo.EVENT_ERROR); }); this.trigger.on(BI.DynamicYearTrigger.EVENT_VALID, function () { + self.comboWrapper.element.removeClass("error"); self.fireEvent(BI.DynamicYearCombo.EVENT_VALID); }); this.trigger.on(BI.DynamicYearTrigger.EVENT_CONFIRM, function () { @@ -124,27 +132,27 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, { items: [{ el: { type: "bi.htape", - cls: "bi-border bi-border-radius bi-focus-shadow", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius bi-focus-shadow", ref: function () { self.comboWrapper = this; }, items: [{ el: { type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: o.height - 2, - height: o.height - 2, + cls: "bi-trigger-icon-button", + width: this._const.iconWidth, + height: o.height - border, ref: function () { self.changeIcon = this; } }, - width: o.height - 2 + width: this._const.iconWidth }, this.combo] }, - top: 1, - left: 1, - right: 1, - bottom: 1 + top: 0, + left: 0, + right: 0, + bottom: 0 }] }); this._checkDynamicValue(o.value); @@ -158,7 +166,7 @@ BI.DynamicYearCombo = BI.inherit(BI.Widget, { switch (type) { case BI.DynamicYearCombo.Dynamic: this.changeIcon.setVisible(true); - this.comboWrapper.attr("items")[0].width = this.options.height - 2, + this.comboWrapper.attr("items")[0].width = this.options.height - this.options.simple ? 1 : 2; this.comboWrapper.resize(); break; default: diff --git a/src/widget/year/popup.year.js b/src/widget/year/popup.year.js index 73afd9681..7645f3974 100644 --- a/src/widget/year/popup.year.js +++ b/src/widget/year/popup.year.js @@ -7,7 +7,7 @@ */ BI.DynamicYearPopup = BI.inherit(BI.Widget, { constants: { - tabHeight: 30, + tabHeight: 40, }, props: { diff --git a/src/widget/year/trigger.year.js b/src/widget/year/trigger.year.js index 545f422f5..91b80a431 100644 --- a/src/widget/year/trigger.year.js +++ b/src/widget/year/trigger.year.js @@ -1,7 +1,8 @@ BI.DynamicYearTrigger = BI.inherit(BI.Trigger, { _const: { hgap: 4, - vgap: 2 + vgap: 2, + iconWidth: 24 }, _defaultConfig: function () { @@ -24,6 +25,7 @@ BI.DynamicYearTrigger = BI.inherit(BI.Trigger, { var self = this, o = this.options, c = this._const; this.editor = BI.createWidget({ type: "bi.sign_editor", + simple: o.simple, height: o.height, validationChecker: function (v) { return v === "" || (BI.isPositiveInteger(v) && !BI.checkDateVoid(v, 1, 1, o.min, o.max)[0]); @@ -89,7 +91,8 @@ BI.DynamicYearTrigger = BI.inherit(BI.Trigger, { }); BI.createWidget({ element: this, - type: "bi.htape", + type: "bi.horizontal_fill", + columnSize: ["fill", ""], items: [{ el: this.editor }, { @@ -97,15 +100,13 @@ BI.DynamicYearTrigger = BI.inherit(BI.Trigger, { type: "bi.text_button", baseCls: "bi-trigger-year-text", text: BI.i18nText("BI-Multi_Date_Year"), - width: o.height }, - width: o.height }, { el: { type: "bi.trigger_icon_button", - width: o.height + width: this._const.iconWidth }, - width: o.height + width: this._const.iconWidth }] }); this.setValue(o.value); diff --git a/src/widget/yearinterval/yearinterval.js b/src/widget/yearinterval/yearinterval.js index 9a2986271..7c27f24f4 100644 --- a/src/widget/yearinterval/yearinterval.js +++ b/src/widget/yearinterval/yearinterval.js @@ -29,7 +29,7 @@ BI.YearInterval = BI.inherit(BI.Single, { return [{ type: "bi.center", hgap: 15, - height: this.constants.height, + height: o.height, items: [{ type: "bi.absolute", items: [{ @@ -53,7 +53,7 @@ BI.YearInterval = BI.inherit(BI.Single, { type: "bi.horizontal_auto", items: [{ type: "bi.label", - height: this.constants.height, + height: o.height, width: this.constants.width, text: "-", ref: function (_ref) { @@ -70,6 +70,7 @@ BI.YearInterval = BI.inherit(BI.Single, { supportDynamic: o.supportDynamic, minDate: o.minDate, maxDate: o.maxDate, + height: o.height, behaviors: o.behaviors, value: v, listeners: [{ diff --git a/src/widget/yearmonth/combo.yearmonth.js b/src/widget/yearmonth/combo.yearmonth.js index 761760e1a..4bc1285e9 100644 --- a/src/widget/yearmonth/combo.yearmonth.js +++ b/src/widget/yearmonth/combo.yearmonth.js @@ -16,11 +16,13 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, { BI.DynamicYearMonthCombo.superclass._init.apply(this, arguments); this.storeValue = o.value; this.storeTriggerValue = ""; + var border = o.simple ? 1 : 2; this.trigger = BI.createWidget({ type: "bi.dynamic_year_month_trigger", + simple: o.simple, min: o.minDate, max: o.maxDate, - height: o.height - 2, + height: o.height - border, value: o.value || "" }); this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_KEY_DOWN, function () { @@ -34,9 +36,11 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, { }); this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_ERROR, function () { self.combo.isViewVisible() && self.combo.hideView(); + self.comboWrapper.element.addClass("error"); self.fireEvent(BI.DynamicYearMonthCombo.EVENT_ERROR); }); this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_VALID, function () { + self.comboWrapper.element.removeClass("error"); self.fireEvent(BI.DynamicYearMonthCombo.EVENT_VALID); }); this.trigger.on(BI.DynamicYearMonthTrigger.EVENT_CONFIRM, function () { @@ -128,27 +132,27 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, { items: [{ el: { type: "bi.htape", - cls: "bi-border bi-border-radius bi-focus-shadow", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius bi-focus-shadow", ref: function () { self.comboWrapper = this; }, items: [{ el: { type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: o.height - 2, - height: o.height - 2, + cls: "bi-trigger-icon-button", + width: o.height - border, + height: o.height - border, ref: function () { self.changeIcon = this; } }, - width: o.height - 2 + width: o.height - border }, this.combo] }, - top: 1, - left: 1, - right: 1, - bottom: 1 + top: 0, + left: 0, + right: 0, + bottom: 0 }] }); this._checkDynamicValue(o.value); @@ -162,7 +166,7 @@ BI.DynamicYearMonthCombo = BI.inherit(BI.Single, { switch (type) { case BI.DynamicYearMonthCombo.Dynamic: this.changeIcon.setVisible(true); - this.comboWrapper.attr("items")[0].width = this.options.height - 2, + this.comboWrapper.attr("items")[0].width = this.options.height - this.options.simple ? 1 : 2; this.comboWrapper.resize(); break; default: diff --git a/src/widget/yearmonth/popup.yearmonth.js b/src/widget/yearmonth/popup.yearmonth.js index 66dec8de2..c0d715efb 100644 --- a/src/widget/yearmonth/popup.yearmonth.js +++ b/src/widget/yearmonth/popup.yearmonth.js @@ -7,7 +7,7 @@ */ BI.DynamicYearMonthPopup = BI.inherit(BI.Widget, { constants: { - tabHeight: 30, + tabHeight: 40, }, props: { diff --git a/src/widget/yearmonth/trigger.yearmonth.js b/src/widget/yearmonth/trigger.yearmonth.js index df9ad4843..56a6b420a 100644 --- a/src/widget/yearmonth/trigger.yearmonth.js +++ b/src/widget/yearmonth/trigger.yearmonth.js @@ -1,7 +1,8 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { _const: { hgap: 4, - vgap: 2 + vgap: 2, + iconWidth: 24 }, props: { @@ -20,7 +21,6 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { _init: function () { BI.DynamicYearMonthTrigger.superclass._init.apply(this, arguments); var o = this.options; - this.yearEditor = this._createEditor(true); this.monthEditor = this._createEditor(false); @@ -30,31 +30,30 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { items: [{ type: "bi.center", items: [{ - type: "bi.htape", + type: "bi.horizontal_fill", + columnSize: ["fill", ""], items: [this.yearEditor, { el: { type: "bi.text_button", text: BI.i18nText("BI-Multi_Date_Year"), - width: o.height }, - width: o.height }] }, { - type: "bi.htape", + type: "bi.horizontal_fill", + columnSize: ["fill", ""], items: [this.monthEditor, { el: { type: "bi.text_button", text: BI.i18nText("BI-Multi_Date_Month"), - width: o.height }, - width: o.height}] + }] }] }, { el: { type: "bi.trigger_icon_button", - width: o.height + width: this._const.iconWidth }, - width: o.height + width: this._const.iconWidth }] }); this.setValue(o.value); @@ -64,6 +63,7 @@ BI.DynamicYearMonthTrigger = BI.inherit(BI.Trigger, { var self = this, o = this.options, c = this._const; var editor = BI.createWidget({ type: "bi.sign_editor", + simple: o.simple, height: o.height, validationChecker: function (v) { if (isYear) { diff --git a/src/widget/yearquarter/card.static.yearquarter.js b/src/widget/yearquarter/card.static.yearquarter.js index 62e329130..78cdb518c 100644 --- a/src/widget/yearquarter/card.static.yearquarter.js +++ b/src/widget/yearquarter/card.static.yearquarter.js @@ -23,7 +23,7 @@ BI.StaticYearQuarterCard = BI.inherit(BI.Widget, { return BI.map(items, function (j, item) { return BI.extend(item, { type: "bi.text_item", - cls: "bi-list-item-select", + cls: "bi-border-radius bi-list-item-select", textAlign: "center", whiteSpace: "nowrap", once: false, @@ -72,7 +72,8 @@ BI.StaticYearQuarterCard = BI.inherit(BI.Widget, { items: this._createQuarter(), layouts: [{ type: "bi.vertical", - vgap: 10 + vgap: 10, + hgap: 12, }], value: o.value, listeners: [{ diff --git a/src/widget/yearquarter/combo.yearquarter.js b/src/widget/yearquarter/combo.yearquarter.js index 83c973702..ae42bec41 100644 --- a/src/widget/yearquarter/combo.yearquarter.js +++ b/src/widget/yearquarter/combo.yearquarter.js @@ -1,5 +1,8 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { + _consts:{ + iconWidth: 24 + }, props: { baseCls: "bi-year-quarter-combo", behaviors: {}, @@ -15,12 +18,14 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { var self = this, o = this.options; BI.DynamicYearQuarterCombo.superclass._init.apply(this, arguments); this.storeValue = o.value; + var border = o.simple ? 1 : 2; self.storeTriggerValue = ""; this.trigger = BI.createWidget({ type: "bi.dynamic_year_quarter_trigger", + simple: o.simple, min: o.minDate, max: o.maxDate, - height: o.height - 2, + height: o.height - border, value: o.value || "" }); this.trigger.on(BI.DynamicYearQuarterTrigger.EVENT_KEY_DOWN, function () { @@ -34,9 +39,11 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { }); this.trigger.on(BI.DynamicYearQuarterTrigger.EVENT_ERROR, function () { self.combo.isViewVisible() && self.combo.hideView(); + self.comboWrapper.element.addClass("error"); self.fireEvent(BI.DynamicYearQuarterCombo.EVENT_ERROR); }); this.trigger.on(BI.DynamicYearQuarterTrigger.EVENT_VALID, function () { + self.comboWrapper.element.removeClass("error"); self.fireEvent(BI.DynamicYearMonthCombo.EVENT_VALID); }); this.trigger.on(BI.DynamicYearQuarterTrigger.EVENT_CONFIRM, function () { @@ -128,27 +135,27 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { items: [{ el: { type: "bi.htape", - cls: "bi-border bi-border-radius bi-focus-shadow", + cls: (o.simple ? "bi-border-bottom" : "bi-border") + " bi-border-radius bi-focus-shadow", ref: function () { self.comboWrapper = this; }, items: [{ el: { type: "bi.icon_button", - cls: "bi-trigger-icon-button date-change-h-font", - width: o.height - 2, - height: o.height - 2, + cls: "bi-trigger-icon-button", + width: this._consts.iconWidth, + height: o.height - border, ref: function () { self.changeIcon = this; } }, - width: o.height - 2 + width: this._consts.iconWidth }, this.combo] }, - top: 1, - left: 1, - right: 1, - bottom: 1 + top: 0, + left: 0, + right: 0, + bottom: 0 }] }); this._checkDynamicValue(o.value); @@ -162,7 +169,7 @@ BI.DynamicYearQuarterCombo = BI.inherit(BI.Widget, { switch (type) { case BI.DynamicYearQuarterCombo.Dynamic: this.changeIcon.setVisible(true); - this.comboWrapper.attr("items")[0].width = this.options.height - 2; + this.comboWrapper.attr("items")[0].width = this.options.height - this.options.simple ? 1 : 2; this.comboWrapper.resize(); break; default: diff --git a/src/widget/yearquarter/popup.yearquarter.js b/src/widget/yearquarter/popup.yearquarter.js index de49b4ef6..bf8d7c392 100644 --- a/src/widget/yearquarter/popup.yearquarter.js +++ b/src/widget/yearquarter/popup.yearquarter.js @@ -1,6 +1,6 @@ BI.DynamicYearQuarterPopup = BI.inherit(BI.Widget, { constants: { - tabHeight: 30, + tabHeight: 40, buttonHeight: 24 }, diff --git a/src/widget/yearquarter/trigger.yearquarter.js b/src/widget/yearquarter/trigger.yearquarter.js index 097d65110..ea7cb6f4e 100644 --- a/src/widget/yearquarter/trigger.yearquarter.js +++ b/src/widget/yearquarter/trigger.yearquarter.js @@ -1,7 +1,8 @@ BI.DynamicYearQuarterTrigger = BI.inherit(BI.Trigger, { _const: { hgap: 4, - vgap: 2 + vgap: 2, + iconWidth: 24 }, props: { @@ -14,7 +15,6 @@ BI.DynamicYearQuarterTrigger = BI.inherit(BI.Trigger, { _init: function () { BI.DynamicYearQuarterTrigger.superclass._init.apply(this, arguments); var o = this.options; - this.yearEditor = this._createEditor(true); this.quarterEditor = this._createEditor(false); @@ -27,32 +27,30 @@ BI.DynamicYearQuarterTrigger = BI.inherit(BI.Trigger, { items: [{ type: "bi.center", items: [{ - type: "bi.htape", + type: "bi.horizontal_fill", + columnSize: ["fill", ""], items: [this.yearEditor, { el: { type: "bi.text_button", text: BI.i18nText("BI-Multi_Date_Year"), - width: height }, - width: height }] }, { - type: "bi.htape", + type: "bi.horizontal_fill", + columnSize: ["fill", ""], items: [this.quarterEditor, { el: { type: "bi.text_button", text: BI.i18nText("BI-Multi_Date_Quarter"), - width: height }, - width: height }] }] }, { el: { type: "bi.trigger_icon_button", - width: height + width: this._const.iconWidth, }, - width: height + width: this._const.iconWidth, }] }); this.setValue(o.value); @@ -62,6 +60,7 @@ BI.DynamicYearQuarterTrigger = BI.inherit(BI.Trigger, { var self = this, o = this.options, c = this._const; var editor = BI.createWidget({ type: "bi.sign_editor", + simple: o.simple, height: o.height, validationChecker: function (v) { if(isYear) { diff --git a/src/widget/yearquarterinterval/yearquarterinterval.js b/src/widget/yearquarterinterval/yearquarterinterval.js index 4dbf4f691..e148a92f0 100644 --- a/src/widget/yearquarterinterval/yearquarterinterval.js +++ b/src/widget/yearquarterinterval/yearquarterinterval.js @@ -29,7 +29,7 @@ BI.YearQuarterInterval = BI.inherit(BI.Single, { return [{ type: "bi.center", hgap: 15, - height: this.constants.height, + height: o.height, items: [{ type: "bi.absolute", items: [{ @@ -53,7 +53,7 @@ BI.YearQuarterInterval = BI.inherit(BI.Single, { type: "bi.horizontal_auto", items: [{ type: "bi.label", - height: this.constants.height, + height: o.height, width: this.constants.width, text: "-", ref: function (_ref) { @@ -72,6 +72,7 @@ BI.YearQuarterInterval = BI.inherit(BI.Single, { maxDate: o.maxDate, behaviors: o.behaviors, value: v, + height: o.height, listeners: [{ eventName: BI.DynamicYearQuarterCombo.EVENT_BEFORE_POPUPVIEW, action: function () { diff --git a/typescript/base/a/a.ts b/typescript/base/a/a.ts index 91e778dfd..08b76a5f9 100644 --- a/typescript/base/a/a.ts +++ b/typescript/base/a/a.ts @@ -4,5 +4,6 @@ export declare class A extends Text { static xtype: string; props: { href: string; + el: Obj; } & Text['props']; } diff --git a/typescript/base/combination/combo.ts b/typescript/base/combination/combo.ts index ee80cfeea..249e7e6f2 100644 --- a/typescript/base/combination/combo.ts +++ b/typescript/base/combination/combo.ts @@ -11,6 +11,7 @@ export declare class Combo extends Widget { static EVENT_AFTER_POPUPVIEW: string; static EVENT_BEFORE_HIDEVIEW: string; static EVENT_AFTER_HIDEVIEW: string; + static closeAll: Function; props: { trigger?: 'click' | 'hover' | 'click-hover' | ''; @@ -22,6 +23,7 @@ export declare class Combo extends Widget { container?: any; // popupview放置的容器,默认为this.element isDefaultInit?: boolean; destroyWhenHide?: boolean; + hideWhenBlur?: boolean; hideWhenAnotherComboOpen?: boolean; isNeedAdjustHeight?: boolean; // 是否需要高度调整 isNeedAdjustWidth?: boolean; @@ -32,6 +34,7 @@ export declare class Combo extends Widget { adjustYOffset?: number; hideChecker?: Function; offsetStyle?: 'left' | 'right' | 'center'; + value?:any; el?: any; popup?: any; comboClass?: string; diff --git a/typescript/base/combination/tab.ts b/typescript/base/combination/tab.ts index 611c3e9c0..fa4cc8b25 100644 --- a/typescript/base/combination/tab.ts +++ b/typescript/base/combination/tab.ts @@ -15,6 +15,7 @@ export declare class Tab extends Widget { dynamic: boolean; }; tab?: Obj; + keepAlives?: string[] | ((cardName: string) => boolean) } setSelect(v: string | number, action?: Action, callback?: Function): void; diff --git a/typescript/base/foundation/message.ts b/typescript/base/foundation/message.ts index 40c79cc0e..ce7d54c3a 100644 --- a/typescript/base/foundation/message.ts +++ b/typescript/base/foundation/message.ts @@ -1,6 +1,6 @@ export type _msg = { - alert: (title: string, message?: string, callback?: (result?: boolean)=>void) => void - confirm: (title: string, message?: string, callback?: (result: boolean)=>void) => void + alert: (title: string, message?: string | {[key: string]: any}, callback?: (result?: boolean)=>void) => void + confirm: (title: string, message?: string | {[key: string]: any}, callback?: (result: boolean)=>void) => void prompt: (title: string, message?: string, value?: any, callback?: (result: string) => void, minWidth?: number) => void - toast: (message: string, options?: object, context?: HTMLElement ) => void -} \ No newline at end of file + toast: (message: string, options?: object, context?: HTMLElement) => void +} diff --git a/typescript/base/layer/layer.popup.ts b/typescript/base/layer/layer.popup.ts index 99117f710..3b2c65595 100644 --- a/typescript/base/layer/layer.popup.ts +++ b/typescript/base/layer/layer.popup.ts @@ -12,4 +12,6 @@ export declare class PopupView extends Widget { resetWidth(v: number): void; resetHeight(v: number): void; + + setDirection(direction: string, position: any): void; } diff --git a/typescript/base/pane.ts b/typescript/base/pane.ts index f2d448978..8f348af0a 100644 --- a/typescript/base/pane.ts +++ b/typescript/base/pane.ts @@ -8,6 +8,7 @@ export declare class Pane extends Widget { loading(): void; loaded(): void; check(): void; + setTipText(text: string): void; setTipVisible(b: boolean): void; populate(...args: any[]): void; } diff --git a/typescript/base/single/button/button.basic.ts b/typescript/base/single/button/button.basic.ts index e29d8410c..95ee1a3c3 100644 --- a/typescript/base/single/button/button.basic.ts +++ b/typescript/base/single/button/button.basic.ts @@ -8,7 +8,7 @@ export declare class BasicButton extends Single { props: { stopEvent?: boolean; stopPropagation?: boolean; - selected?: boolean; + selected?: boolean | ((context: any) => boolean); /** * 点击一次选中有效,再点无效 @@ -39,7 +39,8 @@ export declare class BasicButton extends Single { handler?: Function; bubble?: Function | null | string; text?: string; - } & Single['props']; + el?: Obj; + } & Single["props"]; _createShadow(): void; @@ -51,7 +52,7 @@ export declare class BasicButton extends Single { beforeClick(): void; - doClick(): void; + doClick(e?: Event): void; handle(): BasicButton; diff --git a/typescript/base/single/button/listitem/icontexticonitem.ts b/typescript/base/single/button/listitem/icontexticonitem.ts index 90430446e..60523b376 100644 --- a/typescript/base/single/button/listitem/icontexticonitem.ts +++ b/typescript/base/single/button/listitem/icontexticonitem.ts @@ -3,4 +3,18 @@ import { BasicButton } from "../button.basic"; export declare class IconTextIconItem extends BasicButton { static xtype: string; static EVENT_CHANGE: string; + + props: { + logic?: { + dynamic: boolean; + }; + iconCls1?: string; + iconCls2?: string; + iconHeight?: number; + iconWidth?: number; + textHgap?: number; + textVgap?: number; + textLgap?: number; + textRgap?: number; + } & BasicButton['props']; } diff --git a/typescript/base/single/button/listitem/icontextitem.ts b/typescript/base/single/button/listitem/icontextitem.ts index cde508fe8..5e3f3d6e9 100644 --- a/typescript/base/single/button/listitem/icontextitem.ts +++ b/typescript/base/single/button/listitem/icontextitem.ts @@ -10,6 +10,7 @@ export declare class IconTextItem extends BasicButton { dynamic: boolean; }; iconWrapperWidth?: number; + iconCls?: string; iconHeight?: number; iconWidth?: number; textHgap?: number; diff --git a/typescript/base/single/text.ts b/typescript/base/single/text.ts index c59a857a3..9e03a1cbc 100644 --- a/typescript/base/single/text.ts +++ b/typescript/base/single/text.ts @@ -3,14 +3,19 @@ import { Single } from "./single"; export declare class Text extends Single { static xtype: string; + static addTextFormatter: (fn: (str: string) => string) => void; + + static formatText: (str: string) => string; + props: { - text?: string; + text?: string | ((context: any) => string); textAlign?: "left" | "center" | "right", whiteSpace?: "nowrap" | "normal", lineHeight?: null | number; py?: string; highLight?: boolean; - } & Single['props']; + maxWidth?: null | number; + } & Single["props"]; doRedMark(keyword: string): void; diff --git a/typescript/case/button/icon/iconhalf/icon.half.image.ts b/typescript/case/button/icon/iconhalf/icon.half.image.ts new file mode 100644 index 000000000..4cd29837e --- /dev/null +++ b/typescript/case/button/icon/iconhalf/icon.half.image.ts @@ -0,0 +1,6 @@ +import { IconButton } from "../../../../base/single/button/buttons/button.icon"; + +export declare class HalfIconButton extends IconButton { + static xtype: string; + static EVENT_CHANGE: string; +} diff --git a/typescript/case/button/icon/iconhalf/icon.half.ts b/typescript/case/button/icon/iconhalf/icon.half.ts new file mode 100644 index 000000000..ea32f0beb --- /dev/null +++ b/typescript/case/button/icon/iconhalf/icon.half.ts @@ -0,0 +1,6 @@ +import { BasicButton } from "../../../../base/single/button/button.basic"; + +export declare class HalfButton extends BasicButton { + static xtype: string; + static EVENT_CHANGE: string; +} diff --git a/typescript/case/button/item.multiselect.ts b/typescript/case/button/item.multiselect.ts index 31698c864..9e439ab95 100644 --- a/typescript/case/button/item.multiselect.ts +++ b/typescript/case/button/item.multiselect.ts @@ -6,7 +6,7 @@ export declare class MultiSelectItem extends BasicButton { static EVENT_CHANGE: string; props: { - login: { + logic: { dynamic: boolean; } text: string; diff --git a/typescript/case/segment/segment.ts b/typescript/case/segment/segment.ts new file mode 100644 index 000000000..721f04b2e --- /dev/null +++ b/typescript/case/segment/segment.ts @@ -0,0 +1,8 @@ +import { Widget } from "../../core/widget"; + +export declare class Segment extends Widget { + static xtype: string; + static EVENT_CHANGE: string; + + setEnabledValue(v: any): void; +} diff --git a/typescript/component/form/form.ts b/typescript/component/form/form.ts new file mode 100644 index 000000000..ab5844120 --- /dev/null +++ b/typescript/component/form/form.ts @@ -0,0 +1,14 @@ +import { Widget } from "../../core/widget"; + +export declare class Form extends Widget { + static xtype: string; + static EVENT_CHANGE: string; + + isAllValid(): boolean; + + validateWithNoTip(): boolean[]; + + validate(): boolean[]; + + getValue(): T[]; +} \ No newline at end of file diff --git a/typescript/component/treevaluechooser/combo.listtreevaluechooser.ts b/typescript/component/treevaluechooser/combo.listtreevaluechooser.ts index bc47f39f3..6a10e929b 100644 --- a/typescript/component/treevaluechooser/combo.listtreevaluechooser.ts +++ b/typescript/component/treevaluechooser/combo.listtreevaluechooser.ts @@ -23,4 +23,10 @@ export declare class ListTreeValueChooserInsertCombo extends AbstractListTreeVal populate(items: T[]): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/component/treevaluechooser/combo.treevaluechooser.insert.ts b/typescript/component/treevaluechooser/combo.treevaluechooser.insert.ts index 41b785b18..bb448e0b5 100644 --- a/typescript/component/treevaluechooser/combo.treevaluechooser.insert.ts +++ b/typescript/component/treevaluechooser/combo.treevaluechooser.insert.ts @@ -22,4 +22,10 @@ export declare class TreeValueChooserInsertCombo extends AbstractTreeValueChoose populate(items: T[]): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/component/treevaluechooser/combo.treevaluechooser.ts b/typescript/component/treevaluechooser/combo.treevaluechooser.ts index be535af4a..a21a8dea1 100644 --- a/typescript/component/treevaluechooser/combo.treevaluechooser.ts +++ b/typescript/component/treevaluechooser/combo.treevaluechooser.ts @@ -24,4 +24,10 @@ export declare class TreeValueChooserCombo extends AbstractTreeValueChooser { populate(items: T[]): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/core/inject.ts b/typescript/core/inject.ts index 3852fe442..e199b06f5 100644 --- a/typescript/core/inject.ts +++ b/typescript/core/inject.ts @@ -1,9 +1,9 @@ type _module = (xtype: string, cls: any) => void; -type _constant = (xtype: string, cls: any) => void; -type _model = (xtype: string, cls: any) => void; -type _store = (xtype: string, cls: any) => void; -type _service = (xtype: string, cls: any) => void; -type _provider = (xtype: string, cls: any) => void; +type _constant = (xtype: string, cls: T) => (() => T); +type _model = (xtype: string, cls: any) => Function; +type _store = (xtype: string, cls: any) => Function; +type _service = (xtype: string, cls: any) => Function; +type _provider = (xtype: string, cls: any) => Function; interface _modules { getModule: (type: string) => any; diff --git a/typescript/core/utils/chinesePY.ts b/typescript/core/utils/chinesePY.ts index d2f9aa627..54ba50141 100644 --- a/typescript/core/utils/chinesePY.ts +++ b/typescript/core/utils/chinesePY.ts @@ -1,3 +1,3 @@ export type _chinesePY = { - makeFirstPY: (str: string, options: { ignoreMulti?: boolean, splitChar?: string }) => string -} \ No newline at end of file + makeFirstPY: (str: string, options?: { ignoreMulti?: boolean, splitChar?: string }) => string +} diff --git a/typescript/core/utils/tree.ts b/typescript/core/utils/tree.ts index c300ad100..643d99cd0 100644 --- a/typescript/core/utils/tree.ts +++ b/typescript/core/utils/tree.ts @@ -43,8 +43,8 @@ export declare class Tree { postOrderTraverse(callback: Function): void; nrPostOrderTraverse(callback: Function): void; static transformToArrayFormat(nodes: T | T[], pId: any, childKey?: string): T[]; - static arrayFormat(nodes: Node | Node[], pId: any): Node[]; - static transformToTreeFormat(sNodes: T[]): Node[]; - static treeFormat(sNodes: Node | Node[]): Node[]; - static traversal(array: Node[], callback: Function, pNode: Node): void; + static arrayFormat(nodes: T | T[], pId: any): T[]; + static transformToTreeFormat(sNodes: T[]): T[]; + static treeFormat(sNodes: T | T[]): T[]; + static traversal(array: T[], callback: (index:number,node:T,pNode?:T)=> boolean | void, pNode?: T): void; } diff --git a/typescript/core/widget.ts b/typescript/core/widget.ts index 4c360b400..0a1b63246 100644 --- a/typescript/core/widget.ts +++ b/typescript/core/widget.ts @@ -671,6 +671,7 @@ export declare class Widget extends OB { /** * 新增子元素 */ + addWidget(widget: _Widget): _Widget; addWidget(_name: any, _widget: _Widget): _Widget; /** diff --git a/typescript/core/wrapper/layout/fill/fill.horizontal.ts b/typescript/core/wrapper/layout/fill/fill.horizontal.ts new file mode 100644 index 000000000..378f402ad --- /dev/null +++ b/typescript/core/wrapper/layout/fill/fill.horizontal.ts @@ -0,0 +1,5 @@ +import { Layout } from "../../layout"; + +export declare class HorizontalFillLayout extends Layout { + static xtype: string; +} diff --git a/typescript/core/wrapper/layout/fill/fill.vertical.ts b/typescript/core/wrapper/layout/fill/fill.vertical.ts new file mode 100644 index 000000000..809b34c36 --- /dev/null +++ b/typescript/core/wrapper/layout/fill/fill.vertical.ts @@ -0,0 +1,5 @@ +import { Layout } from "../../layout"; + +export declare class VerticalFillLayout extends Layout { + static xtype: string; +} diff --git a/typescript/core/wrapper/layout/layout.table.ts b/typescript/core/wrapper/layout/layout.table.ts new file mode 100644 index 000000000..7adc977e2 --- /dev/null +++ b/typescript/core/wrapper/layout/layout.table.ts @@ -0,0 +1,12 @@ +import { Layout } from '../layout'; + +export declare class TableLayout extends Layout { + static xtype: string; + + props: { + columnSize: number[]; + rowSize: number[]; + verticalAlign: 'middle' | 'top' | 'bottom' | 'stretch'; + horizontalAlign: 'left' | 'right' | 'center' | 'stretch'; + } +} diff --git a/typescript/core/wrapper/layout/sticky/sticky.horizontal.ts b/typescript/core/wrapper/layout/sticky/sticky.horizontal.ts new file mode 100644 index 000000000..900be7c45 --- /dev/null +++ b/typescript/core/wrapper/layout/sticky/sticky.horizontal.ts @@ -0,0 +1,5 @@ +import { Layout } from "../../layout"; + +export declare class HorizontalStickyLayout extends Layout { + static xtype: string; +} diff --git a/typescript/core/wrapper/layout/sticky/sticky.vertical.ts b/typescript/core/wrapper/layout/sticky/sticky.vertical.ts new file mode 100644 index 000000000..f5a07b44e --- /dev/null +++ b/typescript/core/wrapper/layout/sticky/sticky.vertical.ts @@ -0,0 +1,5 @@ +import { Layout } from "../../layout"; + +export declare class VerticalStickyLayout extends Layout { + static xtype: string; +} diff --git a/typescript/index.ts b/typescript/index.ts index 6e6131a7d..448266b96 100644 --- a/typescript/index.ts +++ b/typescript/index.ts @@ -25,6 +25,7 @@ import { SearchTextValueCombo } from "./case/combo/searchtextvaluecombo/combo.se import { SignEditor } from "./case/editor/editor.sign"; import { StateEditor } from './case/editor/editor.state'; import { AllValueMultiTextValueCombo } from "./component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo"; +import { Form } from './component/form/form'; import { AbstractTreeValueChooser } from "./component/treevaluechooser/abstract.treevaluechooser"; import { AbstractListTreeValueChooser } from "./component/treevaluechooser/abstract.treevaluechooser.list"; import { Action, ActionFactory } from "./core/action/action"; @@ -44,9 +45,12 @@ import { _inject } from "./core/inject"; import { Layout } from "./core/wrapper/layout"; import { AbsoluteLayout } from "./core/wrapper/layout/layout.absolute"; import { HTapeLayout, VTapeLayout } from "./core/wrapper/layout/layout.tape"; +import { HorizontalFillLayout } from "./core/wrapper/layout/fill/fill.horizontal"; +import { VerticalFillLayout } from "./core/wrapper/layout/fill/fill.vertical"; import { VerticalLayout } from "./core/wrapper/layout/layout.vertical"; import { DefaultLayout } from "./core/wrapper/layout/layout.default"; import { DownListCombo } from "./widget/downlist/combo.downlist"; +import { DownListPopup } from "./widget/downlist/popup.downlist"; import { Icon } from "./base/single/icon/icon"; import { LeftVerticalAdaptLayout } from "./core/wrapper/layout/adapt/adapt.leftvertical"; import { LeftRightVerticalAdaptLayout, RightVerticalAdaptLayout } from "./core/wrapper/layout/adapt/adapt.leftrightvertical"; @@ -142,6 +146,7 @@ import { MultiSelectInsertList } from "./widget/multiselectlist/multiselectlist. import { YearMonthInterval } from "./widget/yearmonthinterval/yearmonthinterval"; import { NumberEditor } from "./widget/numbereditor/numbereditor"; import { TextValueCheckCombo } from "./case/combo/textvaluecheckcombo/combo.textvaluecheck"; +import { Segment } from "./case/segment/segment"; import { LinearSegment } from "./case/linersegment/linear.segment"; import { Img } from "./base/single/img/img"; import { EditorIconCheckCombo } from "./case/combo/editoriconcheckcombo/combo.editiconcheck"; @@ -177,6 +182,11 @@ import { TreeValueChooserPane } from './component/treevaluechooser/pane.treevalu import { TdLayout } from './core/wrapper/layout/layout.td'; import { MultiLayerSelectLevelTree } from './widget/multilayerselecttree/multilayerselecttree.leveltree'; import { SelectTreeExpander } from './widget/selecttree/selecttree.expander'; +import { DownListGroupItem } from "./widget/downlist/item.downlistgroup"; +import { VerticalStickyLayout } from "./core/wrapper/layout/sticky/sticky.vertical"; +import { HorizontalStickyLayout } from "./core/wrapper/layout/sticky/sticky.horizontal"; +import { TableLayout } from "./core/wrapper/layout/layout.table"; +import './shims-tsx'; export interface BI extends _func, _i18n, _base, _inject, _var, _web, _utils { @@ -211,6 +221,7 @@ export interface BI extends _func, _i18n, _base, _inject, _var, _web, _utils { SmallTextValueCombo: typeof SmallTextValueCombo; BubbleCombo: typeof BubbleCombo; AllValueMultiTextValueCombo: typeof AllValueMultiTextValueCombo; + Form: typeof Form; IconTextItem: typeof IconTextItem; MultiSelectItem: typeof MultiSelectItem; AbstractLabel: typeof AbstractLabel; @@ -241,8 +252,11 @@ export interface BI extends _func, _i18n, _base, _inject, _var, _web, _utils { MultiTreeInsertCombo: typeof MultiTreeInsertCombo; Decorators: typeof decorator; DownListCombo: typeof DownListCombo; + DownListPopup: typeof DownListPopup; Iframe: typeof Iframe; AbsoluteLayout: typeof AbsoluteLayout; + HorizontalFillLayout: typeof HorizontalFillLayout; + VerticalFillLayout: typeof VerticalFillLayout; VerticalLayout: typeof VerticalLayout; DefaultLayout: typeof DefaultLayout; Input: typeof Input; @@ -333,6 +347,7 @@ export interface BI extends _func, _i18n, _base, _inject, _var, _web, _utils { YearMonthInterval: typeof YearMonthInterval; TextValueCheckCombo: typeof TextValueCheckCombo; NumberEditor: typeof NumberEditor; + Segment: typeof Segment; LinearSegment: typeof LinearSegment; Img: typeof Img; EditorIconCheckCombo: typeof EditorIconCheckCombo; @@ -361,6 +376,10 @@ export interface BI extends _func, _i18n, _base, _inject, _var, _web, _utils { TdLayout: typeof TdLayout; MultiLayerSelectLevelTree: typeof MultiLayerSelectLevelTree; SelectTreeExpander: typeof SelectTreeExpander; + DownListGroupItem: typeof DownListGroupItem; + VerticalStickyLayout: typeof VerticalStickyLayout; + HorizontalStickyLayout: typeof HorizontalStickyLayout; + TableLayout: typeof TableLayout; } export default { @@ -389,6 +408,8 @@ export { HorizontalAdaptLayout, FloatLeftLayout, FloatRightLayout, + HorizontalFillLayout, + VerticalFillLayout, VerticalLayout, AbsoluteLayout, DefaultLayout, @@ -414,6 +435,7 @@ export { Label, TextButton, DownListCombo, + DownListPopup, IconChangeButton, Button, TextEditor, @@ -496,6 +518,7 @@ export { Switch, HorizontalLayout, ShelterEditor, + Form, TextTrigger, SelectTextTrigger, DateInterval, @@ -515,6 +538,7 @@ export { YearMonthInterval, TextValueCheckCombo, NumberEditor, + Segment, LinearSegment, Img, EditorIconCheckCombo, @@ -545,4 +569,8 @@ export { MultiLayerSelectLevelTree, SelectTreeExpander, DirectionPager, + DownListGroupItem, + HorizontalStickyLayout, + VerticalStickyLayout, + TableLayout, }; diff --git a/typescript/shims-tsx.ts b/typescript/shims-tsx.ts index aa76c2e9d..e77dceffb 100644 --- a/typescript/shims-tsx.ts +++ b/typescript/shims-tsx.ts @@ -4,27 +4,28 @@ interface UIProps { width: number | string; height: number | string; top: number; - left: number; + left: number | JSX.Element; bottom: number; - right: number; + right: number | JSX.Element; rgap: number; lgap: number; tgap: number; bgap: number; vgap: number; hgap: number; + inset: number | string; } // 一些布局的附加属性 interface AdditionalProps { column: number; row: number; - innerVGap: number; - innerHGap: number; + innerVgap: number; + innerHgap: number; } interface ElementClassProps extends UIProps { - cls: string; + cls: string | ((context: any) => string); extraCls: string; ref: (ref: T) => void; listeners: { @@ -32,15 +33,15 @@ interface ElementClassProps extends UIProps { action: (...args: any[]) => any; once?: boolean; }[]; - disabled: boolean; - invisible: boolean; - invalid: boolean; + disabled: boolean | ((context: any) => boolean); + invisible: boolean | ((context: any) => boolean); + invalid: boolean | ((context: any) => boolean); attributes: { [key: string]: any; }; css: { [key: string]: any; - }; + } | (() => any); tagName: string; element: any; $testId: string; @@ -63,7 +64,14 @@ interface ElementClassProps extends UIProps { destroyed(): void; } +type Widget = import('./index').Widget; +type Props = Partial & AdditionalProps & Record>; + declare namespace JSX { + interface Element extends Props { + type: string; + } + interface ElementClass extends Widget {} // for undefined interface IntrinsicElements { [elemName: string]: Partial; diff --git a/typescript/widget/downlist/item.downlistgroup.ts b/typescript/widget/downlist/item.downlistgroup.ts new file mode 100644 index 000000000..bf7be317f --- /dev/null +++ b/typescript/widget/downlist/item.downlistgroup.ts @@ -0,0 +1,15 @@ +import { BasicButton } from "../../base/single/button/button.basic"; + +export declare class DownListGroupItem extends BasicButton { + static xtype: string; + static EVENT_CHANGE: string; + + props: { + iconCls1: string; + iconCls2: string; + } & BasicButton['props']; + + doRedMark(...args: any[]): void; + + unRedMark(...args: any[]): void; +} diff --git a/typescript/widget/downlist/popup.downlist.ts b/typescript/widget/downlist/popup.downlist.ts new file mode 100644 index 000000000..08d4ef4ef --- /dev/null +++ b/typescript/widget/downlist/popup.downlist.ts @@ -0,0 +1,9 @@ +import { Widget } from "../../core/widget"; + +export declare class DownListPopup extends Widget { + static xtype: string; + static EVENT_CHANGE: string; + static EVENT_SON_VALUE_CHANGE: string; + + populate: (items: any) => void; +} \ No newline at end of file diff --git a/typescript/widget/dynamicdate/dynamicdate.combo.ts b/typescript/widget/dynamicdate/dynamicdate.combo.ts index a7ead70cf..00921782f 100644 --- a/typescript/widget/dynamicdate/dynamicdate.combo.ts +++ b/typescript/widget/dynamicdate/dynamicdate.combo.ts @@ -36,6 +36,12 @@ export declare class DynamicDateCombo extends Single { hidePopupView(): void; getValue(): DynamicDataComboValue; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } export interface DynamicDataComboValue { diff --git a/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts b/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts index b6593b2a7..b4122ead8 100644 --- a/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts +++ b/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts @@ -32,4 +32,10 @@ export declare class DynamicDateTimeCombo extends Single { getKey(): string; hidePopupView(): void; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void } diff --git a/typescript/widget/editor/editor.multifile.ts b/typescript/widget/editor/editor.multifile.ts index f55abaf81..2df620377 100644 --- a/typescript/widget/editor/editor.multifile.ts +++ b/typescript/widget/editor/editor.multifile.ts @@ -16,9 +16,21 @@ export declare class MultifileEditor extends Widget { attach_id: string; attach_type: string; filename: string; + [key: string]: any; }[]; upload(): void; - + reset(): void; + + getQueue(): { + fileName: string; + lastModified: number; + lastModifiedDate: Date; + name: string; + size: number; + type: string; + }[]; + + sendFiles(files: FileList): void; } diff --git a/typescript/widget/multilayerselecttree/multilayerselecttree.combo.ts b/typescript/widget/multilayerselecttree/multilayerselecttree.combo.ts index 489186e72..1fc9e1519 100644 --- a/typescript/widget/multilayerselecttree/multilayerselecttree.combo.ts +++ b/typescript/widget/multilayerselecttree/multilayerselecttree.combo.ts @@ -15,4 +15,10 @@ export declare class MultiLayerSelectTreeCombo extends Widget { populate(items: T[]): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + showView(): void; } diff --git a/typescript/widget/multilayersingletree/multilayersingletree.combo.ts b/typescript/widget/multilayersingletree/multilayersingletree.combo.ts index 19150a8f6..fcecc32c4 100644 --- a/typescript/widget/multilayersingletree/multilayersingletree.combo.ts +++ b/typescript/widget/multilayersingletree/multilayersingletree.combo.ts @@ -15,4 +15,10 @@ export declare class MultiLayerSingleTreeCombo extends Widget { populate(items: T[]): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + showView(): void; } diff --git a/typescript/widget/multitree/multi.tree.combo.ts b/typescript/widget/multitree/multi.tree.combo.ts index d8b546441..3fe60ebed 100644 --- a/typescript/widget/multitree/multi.tree.combo.ts +++ b/typescript/widget/multitree/multi.tree.combo.ts @@ -15,4 +15,10 @@ export declare class MultiTreeCombo extends Single { hideView(): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/widget/multitree/multi.tree.insert.combo.ts b/typescript/widget/multitree/multi.tree.insert.combo.ts index b701f580b..b7b8e6eac 100644 --- a/typescript/widget/multitree/multi.tree.insert.combo.ts +++ b/typescript/widget/multitree/multi.tree.insert.combo.ts @@ -23,4 +23,10 @@ export declare class MultiTreeInsertCombo extends Single { populate(): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/widget/multitree/multi.tree.list.combo.ts b/typescript/widget/multitree/multi.tree.list.combo.ts index 375d1f5e1..f3b09ad64 100644 --- a/typescript/widget/multitree/multi.tree.list.combo.ts +++ b/typescript/widget/multitree/multi.tree.list.combo.ts @@ -22,4 +22,10 @@ export declare class MultiTreeListCombo extends Single { populate(): void; getSearcher(): Widget; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/widget/numberinterval/numberinterval.ts b/typescript/widget/numberinterval/numberinterval.ts index 5a8fe6b88..ea51b9550 100644 --- a/typescript/widget/numberinterval/numberinterval.ts +++ b/typescript/widget/numberinterval/numberinterval.ts @@ -35,4 +35,8 @@ export declare class NumberInterval extends Single { setNumTip(v: string): void; getNumTip(): void; + + focusMinEditor(): void; + + focusMaxEditor(): void; } diff --git a/typescript/widget/time/time.combo.ts b/typescript/widget/time/time.combo.ts index fa14d017f..9b52d1fd1 100644 --- a/typescript/widget/time/time.combo.ts +++ b/typescript/widget/time/time.combo.ts @@ -10,4 +10,10 @@ export declare class TimeCombo extends Single { static EVENT_BEFORE_POPUPVIEW: string; hidePopupView(): void; + + focus(): void; + + blur(): void; + + setWaterMark(v: string): void; } diff --git a/typescript/widget/timeinterval/dateinterval.ts b/typescript/widget/timeinterval/dateinterval.ts index c8a1f5cd7..31001fe6a 100644 --- a/typescript/widget/timeinterval/dateinterval.ts +++ b/typescript/widget/timeinterval/dateinterval.ts @@ -12,6 +12,7 @@ export declare class DateInterval extends Single { minDate?: string; maxDate?: string; supportDynamic?: boolean; + watermark?: string; } & Single['props'] getValue(): { diff --git a/typescript/widget/timeinterval/timeinterval.ts b/typescript/widget/timeinterval/timeinterval.ts index 41c19660f..3f57695a4 100644 --- a/typescript/widget/timeinterval/timeinterval.ts +++ b/typescript/widget/timeinterval/timeinterval.ts @@ -11,6 +11,7 @@ export declare class TimeInterval extends Single { minDate?: string; maxDate?: string; supportDynamic?: boolean; + watermark?: string; } & Single['props'] getValue(): { diff --git a/ui/modern/app.less b/ui/modern/app.less deleted file mode 100644 index d086387ac..000000000 --- a/ui/modern/app.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/app"; -@import "var"; diff --git a/ui/modern/background.less b/ui/modern/background.less deleted file mode 100644 index 996147127..000000000 --- a/ui/modern/background.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/background"; -@import "var"; diff --git a/ui/modern/font.less b/ui/modern/font.less deleted file mode 100644 index c236f82ed..000000000 --- a/ui/modern/font.less +++ /dev/null @@ -1,2 +0,0 @@ -@import "../../src/less/resource/font"; -@import "var"; diff --git a/ui/modern/icon.less b/ui/modern/icon.less deleted file mode 100644 index 43e3123c5..000000000 --- a/ui/modern/icon.less +++ /dev/null @@ -1,5 +0,0 @@ -@import "../../src/less/resource/icon"; -@import "var"; - - - diff --git a/ui/modern/var.less b/ui/modern/var.less deleted file mode 100644 index 50a52a2ca..000000000 --- a/ui/modern/var.less +++ /dev/null @@ -1,6 +0,0 @@ -@import "../../src/less/index-modern"; -@webUrl: 'resources?path=/com/fr/web/ui/'; - -@fontUrl: '@{webUrl}font/'; //图片的基本地址 -@imageUrl: '@{webUrl}images/1x/'; //图片的基本地址 -@image2xUrl: '@{webUrl}images/2x/'; //2倍图片的基本地址 diff --git a/webpack/attachments.js b/webpack/attachments.js index faacd3d7a..eefbe4b42 100644 --- a/webpack/attachments.js +++ b/webpack/attachments.js @@ -1,12 +1,4 @@ -const grunt = require("grunt"); - -function uniq(names) { - return [...new Set(names)]; -} - -function sync(patterns) { - return uniq(grunt.file.expand({ filter: path => !new RegExp(/__test__/g).test(path) }, patterns)).map(name => `./${name}`); -} +const { sync, uniq } = require("./utils"); const fixJs = "./dist/fix/fix.js"; const fixProxyJs = './dist/fix/fix.proxy.js'; @@ -35,14 +27,24 @@ const basicAttachmentMap = { ]), widget: sync([ "src/less/widget/**/*.less", + "src/less/component/**/*.less", "src/widget/**/*.js", "src/component/**/*.js", ]), router: sync([ "src/router/**/*.js", ]), - 'core_without_normalize': sync( - ["src/less/core/**/*.less", "src/less/theme/**/*.less", "!src/less/core/normalize.less", "!src/less/core/normalize2.less"], + core_without_platform: sync([ + "src/core/0.foundation.js", + lodashJs, + "src/core/**/*.js", + "src/data/**/*.js", + ], [ + "src/core/platform/**/*.js", + "src/core/controller/**/*.js", + ]), + core_without_normalize: sync( + ["src/less/core/**/*.less", "src/less/theme/**/*.less"], ["src/less/core/normalize.less", "src/less/core/normalize2.less"] ), resource: sync(["src/less/resource/**/*.less"]), font: sync(["public/less/font.less"]), @@ -60,7 +62,7 @@ const basicAttachmentMap = { "src/core/func/**/*.js", "src/core/2.base.js", "src/core/3.ob.js", - "src/core/6.inject.js", + "src/core/5.inject.js", "src/core/utils/*.js", "i18n/i18n.cn.js", "_mobile/date.i18n.cn.js", @@ -68,6 +70,13 @@ const basicAttachmentMap = { ]), fix: [fixJs], fixProxy: [fixProxyJs], + less: sync([ + "src/less/core/**/*.less", + "src/less/theme/**/*.less", + "src/less/base/**/*.less", + "src/less/widget/**/*.less", + "src/less/component/**/*.less", + ]), }; const bundle = [].concat( @@ -84,11 +93,16 @@ const bundle = [].concat( basicAttachmentMap.ts, ); -const bundleModern = [].concat( - sync(["src/less/modern.less"]), - sync(["public/modern/app.less", "public/modern/**/*.less"]), +const bundleCss = [].concat( + basicAttachmentMap.less, + sync(["public/less/app.less", "public/less/**/*.less"]), ); +// const bundleModern = [].concat( +// sync(["src/less/modern.less"]), +// sync(["public/modern/app.less", "public/modern/**/*.less"]), +// ); + const coreJs = [].concat( basicAttachmentMap.polyfill, basicAttachmentMap.core, @@ -110,9 +124,11 @@ const bundleWithoutNormalize = [].concat( sync([ "src/less/base/**/*.less", "src/less/widget/**/*.less", + "src/less/component/**/*.less", "public/less/**/*.less", - "!public/less/app.less", // ts的less + ], [ + "public/less/app.less", ]), ); @@ -121,6 +137,7 @@ const fineuiWithoutNormalize = [].concat( sync([ "src/less/base/**/*.less", "src/less/widget/**/*.less", + "src/less/component/**/*.less", 'ui/less/app.less', 'ui/less/**/*.less', ]), @@ -139,15 +156,16 @@ const fineui = [].concat( basicAttachmentMap.ts, ); -const fineuiModern = [].concat( - sync(["src/less/modern.less"]), - sync([ - 'ui/modern/app.less', - 'ui/modern/**/*.less', - ]), -); +// const fineuiModern = [].concat( +// sync(["src/less/modern.less"]), +// sync([ +// 'ui/modern/app.less', +// 'ui/modern/**/*.less', +// ]), +// ); const fineuiProxy = [].concat( + basicAttachmentMap.polyfill, basicAttachmentMap.core, basicAttachmentMap.fixProxy, basicAttachmentMap.base, @@ -161,19 +179,20 @@ const fineuiProxy = [].concat( const fineuiWithoutJqueryAndPolyfillJs = [].concat( sync([ - "src/core/foundation.js", + "src/core/0.foundation.js", lodashJs, "src/core/**/*.js", "src/data/**/*.js", - "!src/core/platform/web/**/*.js", + ], [ + "src/core/platform/web/**/*.js", ]), basicAttachmentMap.fix, sync([ "src/base/**/*.js", "src/case/**/*.js", - - "!src/base/single/input/file.js", - "!src/case/ztree/**/*.js", + ], [ + "src/base/single/input/file.js", + "src/case/ztree/**/*.js", ]), basicAttachmentMap.widget, sync([fixCompact, workerCompact, "ui/js/**/*.js"]), @@ -183,11 +202,11 @@ const fineuiWithoutJqueryAndPolyfillJs = [].concat( const demo = [].concat( basicAttachmentMap.polyfill, basicAttachmentMap.core, - basicAttachmentMap.router, basicAttachmentMap.fix, basicAttachmentMap.base, basicAttachmentMap.case, basicAttachmentMap.widget, + basicAttachmentMap.router, sync(["public/less/app.less", "public/less/**/*.less"]), [fixCompact, workerCompact], basicAttachmentMap.config, @@ -201,16 +220,16 @@ module.exports = { lodash: lodashJs, font: basicAttachmentMap.font, bundle: uniq(bundle), - bundleModern: uniq(bundleModern), fineuiWithoutNormalize: uniq(fineuiWithoutNormalize), bundleWithoutNormalize: uniq(bundleWithoutNormalize), fineui: uniq(fineui), - fineuiModern: uniq(fineuiModern), fineuiProxy: uniq(fineuiProxy), fineuiWithoutJqueryAndPolyfillJs: uniq(fineuiWithoutJqueryAndPolyfillJs), utils: uniq(basicAttachmentMap.utils), demo: uniq(demo), + coreWithoutPlatform: uniq(basicAttachmentMap.core_without_platform), coreJs: uniq(coreJs), resource: uniq((resource)), config: uniq(config), + bundleCss: uniq(bundleCss), }; diff --git a/webpack/components.js b/webpack/components.js new file mode 100644 index 000000000..0162cfd2a --- /dev/null +++ b/webpack/components.js @@ -0,0 +1,39 @@ +const { sync, uniq } = require("./utils"); + +const basicAttachmentMap = { + single: sync(["src/base/single/**/*.js"]), + layer: sync(["src/base/layer/**/*.js"]), + pane: sync(["src/base/1.pane.js"]), + button_group: sync(["src/base/combination/group.button.js"]), + buttons: sync(["src/case/button/**/*.js"]), + checkboxes: sync(["src/case/checkbox/**/*.js"]), + combos: sync(["src/case/combo/**/*.js"]), + editors: sync(["src/case/editor/**/*.js"]), + triggers: sync(["src/case/trigger/**/*.js"]), + calendar: sync(["src/case/calendar/**/*.js"]), + color_chooser: sync(["src/case/colorchooser/**/*.js"]), + segment: sync(["src/case/segment/**/*.js"]), + linear_segment: sync(["src/case/linearsegment/**/*.js"]), + date: sync(["src/widget/date/**/*.js"]), + down_list: sync(["src/widget/downlist/**/*.js"]), + text_value_down_list_combo: sync(["src/widget/textvaluedownlistcombo/**/*.js"]), +}; + +module.exports = { + single: basicAttachmentMap.single, + layer: basicAttachmentMap.layer, + pane: basicAttachmentMap.pane, + button_group: basicAttachmentMap.button_group, + buttons: basicAttachmentMap.buttons, + checkboxes: basicAttachmentMap.checkboxes, + combos: basicAttachmentMap.combos, + editors: basicAttachmentMap.editors, + triggers: basicAttachmentMap.triggers, + calendar: basicAttachmentMap.calendar, + color_chooser: basicAttachmentMap.color_chooser, + segment: basicAttachmentMap.segment, + linear_segment: basicAttachmentMap.linear_segment, + date: basicAttachmentMap.date, + down_list: basicAttachmentMap.down_list, + text_value_down_list_combo: basicAttachmentMap.text_value_down_list_combo, +}; diff --git a/webpack/dirs.js b/webpack/dirs.js index e983ad7d7..512645e97 100644 --- a/webpack/dirs.js +++ b/webpack/dirs.js @@ -5,6 +5,7 @@ module.exports = { PRIVATE: path.resolve(__dirname, "../private"), BABEL_CONFIG: path.resolve(__dirname, "../babel.config.js"), TYPESCRIPT: path.resolve(__dirname, "../typescript"), + ROUTER: path.resolve(__dirname, "../src/router"), SRC: path.resolve(__dirname, "../src"), DEMO: path.resolve(__dirname, "../demo"), PUBLIC: path.resolve(__dirname, "../public"), diff --git a/webpack/utils.js b/webpack/utils.js new file mode 100644 index 000000000..7ed3de515 --- /dev/null +++ b/webpack/utils.js @@ -0,0 +1,24 @@ +const path = require('path'); +const glob = require('glob'); + +// const glob = require('fast-glob'); + +function uniq(names) { + return [...new Set(names)]; +} + +const globalExcludes = [ + "**/*/__test__/*.js", +]; + +function sync(patterns, excludes = []) { + const ignore = globalExcludes.concat(excludes).map(pattern => path.join(__dirname, "../", pattern).replace(/\\/g, '/')); + + return patterns.map(pattern => glob.sync(path.join(__dirname, "../", pattern).replace(/\\/g, '/'), { ignore })).flat(); +} + + +module.exports = { + sync, + uniq, +}; diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index a8177cf7c..e19801a99 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -37,40 +37,25 @@ module.exports = { module: { rules: [ { - test: /\.(js|ts)$/, - include: [dirs.NODE_MODULES, dirs.PRIVATE, dirs.TYPESCRIPT], - exclude: /node_modules(\/|\\)core-js/, - use: [ - { - loader: 'babel-loader', - options: { - configFile: dirs.BABEL_CONFIG, - }, - }, - { - loader: 'source-map-loader', - options: { - enforce: 'pre', - }, - }, - ], - }, - { - test: /\.js$/, + test: /\.(jsx?|tsx?)$/i, include: [ - dirs.DEMO, - dirs.SRC, + dirs.NODE_MODULES, + dirs.PRIVATE, dirs.PUBLIC, dirs.MOBILE, + dirs.DEMO, dirs.I18N, dirs.UI, dirs.FIX, + dirs.TYPESCRIPT, + dirs.SRC, ], + exclude: /node_modules(\/|\\)core-js/, use: [ { - loader: 'source-map-loader', + loader: 'babel-loader', options: { - enforce: 'pre', + configFile: dirs.BABEL_CONFIG, }, }, ], diff --git a/webpack/webpack.css.js b/webpack/webpack.css.js new file mode 100644 index 000000000..0028f7a26 --- /dev/null +++ b/webpack/webpack.css.js @@ -0,0 +1,20 @@ +const merge = require("webpack-merge"); + +const dirs = require("./dirs"); + +const common = require("./webpack.prod.js"); +common.entry = {}; + +const attachments = require("./attachments"); + +module.exports = merge.smart(common, { + mode: "production", + entry: { + [`2.0/${process.env.LESS_FILE_NAME}.min`]: attachments.bundleCss, + }, + + output: { + path: dirs.DEST, + filename: "[name].js", + }, +}); diff --git a/webpack/webpack.dev.js b/webpack/webpack.dev.js index 48bcccbd6..d3c0fb5bc 100644 --- a/webpack/webpack.dev.js +++ b/webpack/webpack.dev.js @@ -9,8 +9,30 @@ const dirs = require("./dirs"); const common = require("./webpack.common.js"); +const ModuleDependencyWarning = require("webpack/lib/ModuleDependencyWarning"); + +class IgnoreNotFoundExportPlugin { + apply(compiler) { + const messageRegExp = /export '.*'( \(reexported as '.*'\))? was not found in/; + function doneHook(stats) { + stats.compilation.warnings = stats.compilation.warnings.filter(warn => { + if (warn instanceof ModuleDependencyWarning && messageRegExp.test(warn.message)) { + return false; + } + + return true; + }); + } + if (compiler.hooks) { + compiler.hooks.done.tap("IgnoreNotFoundExportPlugin", doneHook); + } else { + compiler.plugin("done", doneHook); + } + } +} + module.exports = merge(common, { - devtool: "source-map", + devtool: "inline-source-map", output: { path: dirs.DEST, filename: "[name].js", @@ -46,5 +68,6 @@ module.exports = merge(common, { }, canPrint: true, }), + new IgnoreNotFoundExportPlugin(), ], }); diff --git a/webpack/webpack.prod.js b/webpack/webpack.prod.js index 80eb5ef46..7d8dd939c 100644 --- a/webpack/webpack.prod.js +++ b/webpack/webpack.prod.js @@ -10,25 +10,43 @@ const dirs = require("./dirs"); const common = require("./webpack.common.js"); const attachments = require("./attachments"); +const components = require("./components"); module.exports = merge.smart(common, { mode: "production", entry: { font: attachments.font, "fineui.min": attachments.fineui, - 'fineui_without_normalize.min': attachments.fineuiWithoutNormalize, - "fineui.modern.min": attachments.fineuiModern, + "fineui_without_normalize.min": attachments.fineuiWithoutNormalize, "fineui.proxy.min": attachments.fineuiProxy, + "core_without_platform": attachments.coreWithoutPlatform, utils: attachments.utils, "utils.min": attachments.utils, "fineui_without_jquery_polyfill": attachments.fineuiWithoutJqueryAndPolyfillJs, "2.0/fineui": attachments.bundle, "2.0/fineui.min": attachments.bundle, - "2.0/fineui.modern.min": attachments.bundleModern, - '2.0/fineui_without_normalize': attachments.bundleWithoutNormalize, - '2.0/fineui_without_normalize.min': attachments.bundleWithoutNormalize, + "2.0/fineui_without_normalize": attachments.bundleWithoutNormalize, + "2.0/fineui_without_normalize.min": attachments.bundleWithoutNormalize, + "2.0/core_without_platform": attachments.coreWithoutPlatform, + "2.0/core_without_platform.min": attachments.coreWithoutPlatform, core: attachments.coreJs, resource: attachments.resource, + "lib/single": components.single, + "lib/layers": components.layer, + "lib/pane": components.pane, + "lib/button_group": components.button_group, + "lib/buttons": components.buttons, + "lib/checkboxes": components.checkboxes, + "lib/combos": components.combos, + "lib/editors": components.editors, + "lib/triggers": components.triggers, + "lib/calendar": components.calendar, + "lib/color_chooser": components.color_chooser, + "lib/segment": components.segment, + "lib/linear_segment": components.linear_segment, + "lib/date": components.date, + "lib/down_list": components.down_list, + "lib/text_value_down_list_combo": components.text_value_down_list_combo, }, optimization: { minimizer: [ @@ -38,27 +56,27 @@ module.exports = merge.smart(common, { sourceMap: true, terserOptions: { output: { - comments: false, - }, - }, + comments: false + } + } }), new webpack.BannerPlugin({ - banner: `time: ${new Date().toLocaleString()}`, - }), - ], + banner: `time: ${new Date().toLocaleString()}` + }) + ] }, devtool: "hidden-source-map", output: { path: dirs.DEST, - filename: "[name].js", + filename: "[name].js" }, plugins: [ new MiniCssExtractPlugin({ path: dirs.DEST, - filename: "[name].css", + filename: "[name].css" }), new ForkTsCheckerWebpackPlugin({}), new OptimizeCssAssetsPlugin({ @@ -67,13 +85,13 @@ module.exports = merge.smart(common, { cssProcessorPluginOptions: { preset: ["default", { discardComments: { - removeAll: true, + removeAll: true }, - normalizeUnicode: false, - }], + normalizeUnicode: false + }] }, - canPrint: true, - }), + canPrint: true + }) ], module: { @@ -84,11 +102,11 @@ module.exports = merge.smart(common, { { loader: "postcss-loader", options: { - plugins: [], - }, - }, - ], - }, - ], - }, + plugins: [] + } + } + ] + } + ] + } }); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 62b944276..000000000 --- a/yarn.lock +++ /dev/null @@ -1,11316 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/core@7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" - integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.5" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.5" - "@babel/types" "^7.4.4" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.4", "@babel/generator@^7.13.0": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" - integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== - dependencies: - "@babel/types" "^7.10.4" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" - integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" - integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.10.4", "@babel/helper-define-map@^7.5.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" - integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== - dependencies: - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.1.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.10.4", "@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" - integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" - integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.0.0", "@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" - integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-replace-supers@^7.10.4", "@babel/helper-replace-supers@^7.5.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-simple-access@^7.1.0", "@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helpers@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/highlight@^7.12.13": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.8.tgz#10b2dac78526424dfc1f47650d0e415dfd9dc481" - integrity sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.0.0", "@babel/parser@^7.10.4", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99" - integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw== - -"@babel/parser@^7.4.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" - integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== - -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" - integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.0.tgz#5bc6a0537d286fcb4fd4e89975adbca334987007" - integrity sha512-9L/JfPCT+kShiiTTzcnBJ8cOwdKVmlC1RcCf9F0F9tERVrM4iWtWnXtjWCRqNm2la2BxO1MPArWNsU9zsSJWSQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-proposal-decorators@7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" - integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.2.0" - -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@7.9.0": - version "7.9.0" - resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.9.0.tgz?cache=0&sync_timestamp=1596145014102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-chaining%2Fdownload%2F%40babel%2Fplugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha1-MdsWsVTDnWuKZFKSRyuYOUwpKlg= - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-decorators@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" - integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" - integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-block-scoping@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce" - integrity sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" - -"@babel/plugin-transform-block-scoping@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" - integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" - integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-destructuring@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-function-name@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-literals@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" - integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" - integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" - integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== - dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - -"@babel/plugin-transform-new-target@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-object-super@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - -"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" - integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-proto-to-assign@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-proto-to-assign/-/plugin-transform-proto-to-assign-7.5.5.tgz#9ba443be793d4dff1c2898807704b81a51562c20" - integrity sha512-1vlFiFiIfKXBVm2SJtPr65x7NUAv4Sa3qhBbH4TnSXaUTDQnOSf+W8vNq3BNliaI28kwT8aD3rMTTsEryJpDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" - -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-spread@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" - integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" - integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typescript@^7.3.2": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz#8b01cb8d77f795422277cc3fcf45af72bc68ba78" - integrity sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.10.4" - -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/polyfill@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.6.0.tgz#6d89203f8b6cd323e8d946e47774ea35dc0619cc" - integrity sha512-q5BZJI0n/B10VaQQvln1IlDK3BTBJFbADx7tv+oXDPIDZuTo37H5Adb9jhlXm/fEN4Y7/64qD9mnrJJG7rmaTw== - dependencies: - core-js "^2.6.5" - regenerator-runtime "^0.13.2" - -"@babel/preset-env@7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" - integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.6.0" - core-js-compat "^3.1.1" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/preset-typescript@7.3.3": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" - integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.3.2" - -"@babel/runtime@^7.8.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" - integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4", "@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/traverse@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.4.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" - integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.12.13", "@babel/types@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" - integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@fui/babel-preset-fineui@^1.0.0": - version "1.0.2" - resolved "https://npm.fineres.com/@fui%2fbabel-preset-fineui/-/babel-preset-fineui-1.0.2.tgz#403adc4bc51a13443da9157c96887ebac1477013" - integrity sha512-cOJL8T8DwGNJZeE97wHlTnMWjUi9X3uXYd9MnAyDhcWWti9Sjd+95Sdg0C210d0s/LEOpRFCQJENd251NWcoIA== - dependencies: - "@babel/core" "7.4.5" - "@babel/plugin-proposal-class-properties" "7.5.0" - "@babel/plugin-proposal-decorators" "7.4.4" - "@babel/plugin-proposal-optional-chaining" "7.9.0" - "@babel/plugin-transform-block-scoping" "7.5.5" - "@babel/plugin-transform-classes" "7.5.5" - "@babel/plugin-transform-modules-commonjs" "7.6.0" - "@babel/plugin-transform-proto-to-assign" "7.5.5" - "@babel/preset-env" "7.4.5" - "@babel/preset-typescript" "7.3.3" - -"@fui/eslint-plugin@1.0.11": - version "1.0.11" - resolved "https://npm.fineres.com/@fui%2feslint-plugin/-/eslint-plugin-1.0.11.tgz#095e929ff5235225afada99edfc96290d672a58d" - integrity sha512-s7SYhFjUxFm/ri5zRS0P/akKASusGuRtJ/l+dHJif60mnPgVoPrVImk5xuxAwnTkCk8chv5HkzO5WQ70W1r1Og== - dependencies: - "@typescript-eslint/eslint-plugin" "2.25.0" - "@typescript-eslint/parser" "2.25.0" - babel-eslint "10.0.3" - eslint-config-prettier "6.7.0" - eslint-plugin-prettier "3.1.2" - eslint-plugin-typescript "0.14.0" - merge "1.2.1" - -"@iarna/cli@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641" - integrity sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA== - dependencies: - signal-exit "^3.0.2" - update-notifier "^2.2.0" - yargs "^8.0.2" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/glob@^7.1.1": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" - integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/mime-types@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" - integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "14.0.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" - integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== - -"@types/node@15.6.1": - version "15.6.1" - resolved "https://registry.nlark.com/@types/node/download/@types/node-15.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08" - integrity sha1-MtQzkNXGLFtuxIapvJxZVE3jmgg= - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@typescript-eslint/eslint-plugin@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.25.0.tgz#0b60917332f20dcff54d0eb9be2a9e9f4c9fbd02" - integrity sha512-W2YyMtjmlrOjtXc+FtTelVs9OhuR6OlYc4XKIslJ8PUJOqgYYAPRJhAqkYRQo3G4sjvG8jSodsNycEn4W2gHUw== - dependencies: - "@typescript-eslint/experimental-utils" "2.25.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" - integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.25.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.25.0.tgz#abfb3d999084824d9a756d9b9c0f36fba03adb76" - integrity sha512-mccBLaBSpNVgp191CP5W+8U1crTyXsRziWliCqzj02kpxdjKMvFHGJbK33NroquH3zB/gZ8H511HEsJBa2fNEg== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.25.0" - "@typescript-eslint/typescript-estree" "2.25.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/typescript-estree@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" - integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" - tsutils "^3.17.1" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -JSONStream@^1.3.4, JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1, abbrev@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= - -accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn@^6.0.5: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" - integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== - -address@>=0.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - -agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== - -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.1.0, agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773" - integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw== - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= - dependencies: - string-width "^2.0.0" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -ansistyles@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" - integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= - -any-promise@^1.0.0, any-promise@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -"aproba@^1.1.2 || 2", aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -archy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.2, argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -asap@^2.0.0, asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types@0.x.x: - version "0.13.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" - integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@1.x, async@~1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.5.0, async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -auto-correct@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/auto-correct/-/auto-correct-1.0.0.tgz#9865d9a2c1a7118421f5f0654f685fbeb41b034b" - integrity sha1-mGXZosGnEYQh9fBlT2hfvrQbA0s= - -autoprefixer@9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" - integrity sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw== - dependencies: - browserslist "^4.6.3" - caniuse-lite "^1.0.30000980" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.17" - postcss-value-parser "^4.0.0" - -await-event@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/await-event/-/await-event-2.1.0.tgz#78e9f92684bae4022f9fa0b5f314a11550f9aa76" - integrity sha1-eOn5JoS65AIvn6C18xShFVD5qnY= - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" - integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-loader@8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== - dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" - -babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -bagpipe@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/bagpipe/-/bagpipe-0.3.5.tgz#e341d164fcb24cdf04ea7e05b765ec10c8aea6a1" - integrity sha1-40HRZPyyTN8E6n4Ft2XsEMiupqE= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bin-links@^1.1.2, bin-links@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.8.tgz#bd39aadab5dc4bdac222a07df5baf1af745b2228" - integrity sha512-KgmVfx+QqggqP9dA3iIc5pA4T1qEEEL+hOhOhNPaUm77OTrJoOXE/C05SJLNJe6m/2wUK7F1tDSou7n5TfCDzQ== - dependencies: - bluebird "^3.5.3" - cmd-shim "^3.0.0" - gentle-fs "^2.3.0" - graceful-fs "^4.1.15" - npm-normalize-package-bin "^1.0.0" - write-file-atomic "^2.3.0" - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - -binary-mirror-config@^1.19.0: - version "1.24.0" - resolved "https://registry.yarnpkg.com/binary-mirror-config/-/binary-mirror-config-1.24.0.tgz#d454c0e89cd54a851b84acd8b36f6083ac44218e" - integrity sha512-0iS9JZefp1+qWUTdMbO9eA1te1Sq+6iO4Qg8UGT8SVYfASXhuvytc+6Cu3HwtBj7RG2+XG4jd1ZcANMb1yAy9A== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - -body-parser@1.19.0, body-parser@^1.16.1: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.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" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY= - dependencies: - expand-range "^0.1.0" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - 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.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.2" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.6.3, browserslist@^4.8.5: - version "4.12.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" - integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== - dependencies: - caniuse-lite "^1.0.30001088" - electron-to-chromium "^1.3.483" - escalade "^3.0.1" - node-releases "^1.1.58" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" - integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -bytes@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" - integrity sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo= - -cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5: - version "15.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.2.0.tgz#73af75f77c58e72d8c630a7a2858cb18ef523389" - integrity sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-limit@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4" - integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ== - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30001088: - version "1.0.30001093" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312" - integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g== - -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chai@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" - integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - pathval "^1.1.0" - type-detect "^4.0.5" - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - 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" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= - -chokidar@^2.0.3, chokidar@^2.0.4, chokidar@^2.1.6, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" - integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cidr-regex@^2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" - integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== - dependencies: - ip-regex "^2.1.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" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.5.5: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= - -cli-columns@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" - integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= - dependencies: - string-width "^2.0.0" - strip-ansi "^3.0.1" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-spinners@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" - integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== - -cli-table3@^0.5.0, cli-table3@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -clone@^2.1.1, clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cmd-shim-hotfix@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/cmd-shim-hotfix/-/cmd-shim-hotfix-3.0.3.tgz#f46a073b74538199330683ad985a5912f8430dea" - integrity sha512-fn4AxpPZMCSVPvlfA+YJ2A1dR0elTQuwEXF73U91hQkuaDaYKNPz2XsC+driC4zv+avqXFfUty7Y/2KuSuHV2A== - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - -cmd-shim@^3.0.0, cmd-shim@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" - integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA== - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - -cnpm@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/cnpm/-/cnpm-6.1.1.tgz#b03a062f65758ddc27908f40b20bd8d84cd3eac8" - integrity sha512-W0rsntiI15p7j4Ftwk0ByV4HtbZdexf1Rqad/VEI3fTzu68Kkv2VPUZEFivKkPYPuui2C+k+JCAJNQncoutx5Q== - dependencies: - auto-correct "^1.0.0" - bagpipe "^0.3.5" - colors "^1.1.2" - commander "~2.10.0" - cross-spawn "~0.2.8" - debug "^2.2.0" - giturl "^1.0.0" - ini "^1.3.4" - npm "^6.13.4" - npm-request "^1.0.0" - npminstall "^3.25.2" - open "^0.0.5" - urllib "^2.17.0" - -co-from-stream@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/co-from-stream/-/co-from-stream-0.0.0.tgz#1a5cd8ced77263946094fa39f2499a63297bcaf9" - integrity sha1-GlzYztdyY5RglPo58kmaYyl7yvk= - dependencies: - co-read "0.0.1" - -co-fs-extra@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/co-fs-extra/-/co-fs-extra-1.2.1.tgz#3b6ad77cf2614530f677b1cf62664f5ba756b722" - integrity sha1-O2rXfPJhRTD2d7HPYmZPW6dWtyI= - dependencies: - co-from-stream "~0.0.0" - fs-extra "~0.26.5" - thunkify-wrap "~1.0.4" - -co-parallel@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/co-parallel/-/co-parallel-1.0.0.tgz#58597a0658005a42b8c6a23cc84da2a10d946f2a" - integrity sha1-WFl6BlgAWkK4xqI8yE2ioQ2Ubyo= - dependencies: - co-thread "0.0.1" - -co-read@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/co-read/-/co-read-0.0.1.tgz#f81b3eb8a86675fec51e3d883a7f564e873c9389" - integrity sha1-+Bs+uKhmdf7FHj2IOn9WToc8k4k= - -co-thread@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/co-thread/-/co-thread-0.0.1.tgz#57713f0ef4b87e5595d4f23711ffe4b3b6de5e74" - integrity sha1-V3E/DvS4flWV1PI3Ef/ks7beXnQ= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -coffee-script@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.10.0.tgz#12938bcf9be1948fa006f92e0c4c9e81705108c0" - integrity sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -colors@^1.1.0, colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - -columnify@~1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y= - dependencies: - lodash "^4.5.0" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.20.0, commander@^2.9.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.10.0.tgz#e1f5d3245de246d1a5ca04702fa1ad1bd7e405fe" - integrity sha512-q/r9trjmuikWDRJNTBHAVnWhuU6w+z80KgBq7j9YDclik5E7X4xi0KnlZBNFA1zOQ+SH/vHMWd2mC9QTOz7GpA== - dependencies: - graceful-readlink ">= 1.0.0" - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat@1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/concat/download/concat-1.0.3.tgz#40f3353089d65467695cb1886b45edd637d8cca8" - integrity sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg= - dependencies: - commander "^2.9.0" - -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -connect@^3.6.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@^1.0.2, content-type@~1.0.2, content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.1.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-to@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" - integrity sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU= - -core-js-compat@^3.1.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - -core-js@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.3.2.tgz#cd42da1d7b0bb33ef11326be3a721934277ceb42" - integrity sha512-S1FfZpeBchkhyoY76YAdFzKS4zz9aOK7EeFaNA2aJlyXyA+sgqz6xdxmLPGXEAf0nF44MVN1kSjrA9Kt3ATDQg== - -core-js@^2.2.0, core-js@^2.6.5: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - -core-util-is@1.0.2, core-util-is@^1.0.2, 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" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - 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" - -cross-env@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.0.tgz#3c8e71440ea20aa6faaf5aec541235efc565dac6" - integrity sha512-G/B6gtkjgthT8AP/xN1wdj5Xe18fVyk58JepK8GxpUbqcz3hyWxegocMbvnZK+KoTslwd0ACZ3woi/DVUdVjyQ== - dependencies: - cross-spawn "^7.0.0" - -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@~0.2.8: - version "0.2.9" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-0.2.9.tgz#bd67f96c07efb6303b7fe94c1e979f88478e0a39" - integrity sha1-vWf5bAfvtjA7f+lMHpefiEeOCjk= - dependencies: - lru-cache "^2.5.0" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - 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-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.0.0.tgz#bdd48a4921eefedf1f0a55266585944d4e5efc63" - integrity sha512-WR6KZuCkFbnMhRrGPlkwAA7SSCtwqPwpyXJAPhotYkYsc0mKU9n/fu5wufy4jl2WhBw9Ia8gUQMIp/1w98DuPw== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.17" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.0" - schema-utils "^1.0.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" - integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - integrity sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ== - -date-format@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" - integrity sha1-YV6CjiM90aubua4JUODOzPpuytg= - -dateformat@^1.0.6, dateformat@~1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" - integrity sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E= - dependencies: - ms "0.7.2" - -debug@3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-user-agent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6" - integrity sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY= - dependencies: - os-name "~1.0.3" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -degenerator@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - integrity sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU= - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.0, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@^1.0.4, destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-indent@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -dezalgo@^1.0.0, dezalgo@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= - -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -digest-header@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/digest-header/-/digest-header-0.0.1.tgz#11ccf6deec5766ac379744d901c12cba49514be6" - integrity sha1-Ecz23uxXZqw3l0TZAcEsuklRS+Y= - dependencies: - utility "0.1.11" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -dotenv@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -editor@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" - integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I= - -ee-first@1.1.1, ee-first@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.483: - version "1.3.484" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.484.tgz#75f5a1eee5fe3168758b7c2cf375ae73c1ccf5e6" - integrity sha512-esh5mmjAGl6HhAaYgHlDZme+jCIc+XIrLrBTwxviE+pM64UBmdLUIHLlrPzJGbit7hQI1TR/oGDQWCvQZ5yrFA== - -elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - 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" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -enable@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/enable/-/enable-1.3.2.tgz#9eba6837d16d0982b59f87d889bf754443d52931" - integrity sha1-nrpoN9FtCYK1n4fYib91REPVKTE= - -encodeurl@~1.0.1, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" - -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" - integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@4.2.8, es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -escalade@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" - integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== - -escape-html@^1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@1.0.5, 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" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escodegen@1.x.x: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz#9a876952e12df2b284adbd3440994bf1f39dfbb9" - integrity sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ== - dependencies: - get-stdin "^6.0.0" - -eslint-plugin-prettier@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" - integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-typescript@0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz#068549c3f4c7f3f85d88d398c29fa96bf500884c" - integrity sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw== - dependencies: - requireindex "~1.1.0" - -eslint-scope@^4.0.0, eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.0.1.tgz#4a32181d72cb999d6f54151df7d337131f81cda7" - integrity sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^6.0.0" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^3.1.0" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -espree@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - -esprima@3.x.x: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.0, etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter2@~0.4.13: - version "0.4.14" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= - -eventemitter3@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -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" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o= - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ= - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -expose-loader@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-0.7.5.tgz#e29ea2d9aeeed3254a3faa1b35f502db9f9c3f6f" - integrity sha512-iPowgKUZkTPX5PznYsmifVj9Bob0w2wTHVkt/eYNPSzyebkUgIedmskf/kcfEIWpiWjg3JRjnW+a17XypySMuw== - -express@4.15.2: - version "4.15.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" - integrity sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU= - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.1" - depd "~1.1.0" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.0" - fresh "0.5.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.1" - path-to-regexp "0.1.7" - proxy-addr "~1.1.3" - qs "6.4.0" - range-parser "~1.2.0" - send "0.15.1" - serve-static "1.12.1" - setprototypeof "1.0.3" - statuses "~1.3.1" - type-is "~1.6.14" - utils-merge "1.0.0" - vary "~1.1.0" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^1.6.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-uri-to-path@1, file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.1.2, finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -finalhandler@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f" - integrity sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8= - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-npm-prefix@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" - integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= - dependencies: - glob "~5.0.0" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.12.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" - integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.4.3.tgz#2252c1f8ad1b25313e056835d939b423ea240cd6" - integrity sha512-srf43Z3B1hCJNrwCG78DbHmWgKQUqHKsvFbLP182gank28j9s05KJbSZaMKBA0b6Pqi0LBLpAFWeB0JPbc1iLQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^2.0.4" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -formstream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/formstream/-/formstream-1.1.0.tgz#51f3970f26136eb0ad44304de4cebb50207b4479" - integrity sha1-UfOXDyYTbrCtRDBN5M67UCB7RHk= - dependencies: - destroy "^1.0.4" - mime "^1.3.4" - pause-stream "~0.0.11" - -forwarded@~0.1.0, forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - integrity sha1-9HTKXmqSRtb9jglTz6m5yAWvp44= - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" - integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0= - dependencies: - inherits "~2.0.1" - readable-stream "~1.1.10" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= - dependencies: - null-check "^1.0.0" - -fs-extra@~0.26.5: - version "0.26.7" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" - integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: - version "1.2.10" - resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" - integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= - dependencies: - graceful-fs "^4.1.2" - path-is-inside "^1.0.1" - rimraf "^2.5.2" - -fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - -gentle-fs@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.1.tgz#11201bf66c18f930ddca72cf69460bdfa05727b1" - integrity sha512-OlwBBwqCFPcjm33rF2BjW+Pr6/ll2741l+xooiwTCeaX2CA1ZuclavyMBe0/KlR21/XGsgY6hzEQZ15BdNa13Q== - dependencies: - aproba "^1.1.2" - chownr "^1.1.2" - cmd-shim "^3.0.3" - fs-vacuum "^1.2.10" - graceful-fs "^4.1.11" - iferr "^0.1.5" - infer-owner "^1.0.4" - mkdirp "^0.5.1" - path-is-inside "^1.0.2" - read-cmd-shim "^1.0.1" - slide "^1.1.6" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-uri@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.4.tgz#d4937ab819e218d4cb5ae18e4f5962bef169cc6a" - integrity sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q== - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "~3.0.2" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getobject@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" - integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -giturl@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/giturl/-/giturl-1.0.1.tgz#926c69bda5c48a3d8f74254e99f826835e6a4aa0" - integrity sha512-wQourBdI13n8tbjcZTDl6k+ZrCRMU6p9vfp9jknZq+zfWc8xXNztpZFM4XkPHVzHcMSUZxEMYYKZjIGkPlei6Q== - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^5.0.15, glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.2, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -grunt-cli@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" - integrity sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg= - dependencies: - findup-sync "~0.3.0" - grunt-known-options "~1.1.0" - nopt "~3.0.6" - resolve "~1.1.0" - -grunt-known-options@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" - integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ== - -grunt-legacy-log-utils@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz#a7b8e2d0fb35b5a50f4af986fc112749ebc96f3d" - integrity sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0= - dependencies: - chalk "~1.1.1" - lodash "~4.3.0" - -grunt-legacy-log@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-1.0.2.tgz#7d7440426ace77b206e74f993e332e2a15a3904e" - integrity sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g== - dependencies: - colors "~1.1.2" - grunt-legacy-log-utils "~1.0.0" - hooker "~0.2.3" - lodash "~4.17.5" - -grunt-legacy-util@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz#386aa78dc6ed50986c2b18957265b1b48abb9b86" - integrity sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y= - dependencies: - async "~1.5.2" - exit "~0.1.1" - getobject "~0.1.0" - hooker "~0.2.3" - lodash "~4.3.0" - underscore.string "~3.2.3" - which "~1.2.1" - -grunt@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.1.tgz#e8778764e944b18f32bb0f10b9078475c9dfb56b" - integrity sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs= - dependencies: - coffee-script "~1.10.0" - dateformat "~1.0.12" - eventemitter2 "~0.4.13" - exit "~0.1.1" - findup-sync "~0.3.0" - glob "~7.0.0" - grunt-cli "~1.2.0" - grunt-known-options "~1.1.0" - grunt-legacy-log "~1.0.0" - grunt-legacy-util "~1.0.0" - iconv-lite "~0.4.13" - js-yaml "~3.5.2" - minimatch "~3.0.0" - nopt "~3.0.6" - path-is-absolute "~1.0.0" - rimraf "~2.2.8" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.0.1: - version "4.7.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" - integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.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" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-unicode@^2.0.0, has-unicode@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - -he@1.2.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hooker@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" - integrity sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk= - -hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@^2.7.1, hosted-git-info@^2.8.8: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-entities@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-webpack-plugin@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.1, http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== - -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - -http-proxy-middleware@^0.19.1: - version "0.19.2" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.2.tgz#ee73dcc8348165afefe8de2ff717751d181608ee" - integrity sha512-aYk1rTKqLTus23X3L96LGNCGNgWpG4cG0XoZIT1GUPhhulEHX/QalnO6Vbo+WmKWi4AL2IidjuC0wZtbpg0yhQ== - dependencies: - http-proxy "^1.18.1" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.13.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -https-proxy-agent@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" - integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -https-proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== - dependencies: - agent-base "5" - debug "4" - -humanize-ms@^1.2.0, humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - -husky@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" - integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== - dependencies: - chalk "^2.4.2" - ci-info "^2.0.0" - cosmiconfig "^5.2.1" - execa "^1.0.0" - get-stdin "^7.0.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^4.2.0" - please-upgrade-node "^3.2.0" - read-pkg "^5.2.0" - run-node "^1.0.0" - slash "^3.0.0" - -iconv-lite@0.4.24, iconv-lite@^0.4.15, iconv-lite@^0.4.24, iconv-lite@~0.4.13: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -iferr@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" - integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@2.0.0, import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4, inflight@~1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -init-package-json@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" - integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== - dependencies: - glob "^7.1.1" - npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "1 || 2" - semver "2.x || 3.x || 4 || 5" - validate-npm-package-license "^3.0.1" - validate-npm-package-name "^3.0.0" - -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@1.1.5, ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" - integrity sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-cidr@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.1.tgz#e92ef121bdec2782271a77ce487a8b8df3718ab7" - integrity sha512-Gx+oErgq1j2jAKCR2Kbq0b3wbH0vQKqZ0wOlHxm0o56nq51Cs/DZA8oz9dMDhbHyHEGgJ86eTeVudtgMMOx3Mw== - dependencies: - cidr-regex "^2.0.10" - -is-class-hotfix@~0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz#a527d31fb23279281dde5f385c77b5de70a72435" - integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ== - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - -is-regex@^1.0.4, is-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" - integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== - dependencies: - has-symbols "^1.0.1" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-type-of@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-type-of/-/is-type-of-1.2.1.tgz#e263ec3857aceb4f28c47130ec78db09a920f8c5" - integrity sha512-uK0kyX9LZYhSDS7H2sVJQJop1UnWPWmo5RvR3q2kFH6AUHYs7sOrVg0b4nyBHw29kRRNFofYN/JbHZDlHiItTA== - dependencies: - core-util-is "^1.0.2" - is-class-hotfix "~0.0.6" - isstream "~0.1.2" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul@^0.4.0: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs= - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -jest-worker@^26.5.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@3.x, js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.5.2: - version "3.5.5" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" - integrity sha1-A3fDgBfKvHMisNH7zSWkkWQfL74= - dependencies: - argparse "^1.0.2" - esprima "^2.6.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -karma-chai@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/karma-chai/-/karma-chai-0.1.0.tgz#bee5ad40400517811ae34bb945f762909108b79a" - integrity sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o= - -karma-chrome-launcher@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w== - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-coverage@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" - integrity sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw== - dependencies: - dateformat "^1.0.6" - istanbul "^0.4.0" - lodash "^4.17.0" - minimatch "^3.0.0" - source-map "^0.5.1" - -karma-mocha@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" - integrity sha1-7qrH/8DiAetjxGdEDStpx883eL8= - dependencies: - minimist "1.2.0" - -karma@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.4.tgz#3890ca9722b10d1d14b726e1335931455788499e" - integrity sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw== - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^2.0.3" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.5" - log4js "^3.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" - source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -ko-sleep@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ko-sleep/-/ko-sleep-1.0.3.tgz#28a2a0a1485e8b7f415ff488dee17d24788ab082" - integrity sha1-KKKgoUhei39BX/SI3uF9JHiKsII= - dependencies: - ms "^2.0.0" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= - dependencies: - package-json "^4.0.0" - -lazy-property@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" - integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -less-loader@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" - integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== - dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^4.0.1" - -less@3.11.2: - version "3.11.2" - resolved "https://registry.yarnpkg.com/less/-/less-3.11.2.tgz#51a484e9017287f5ac3db921cb86970eb7506e81" - integrity sha512-ed8Lir98Tu6a+LeU7+8ShpRLSUdk//lWf1sh+5w7tNju4wGItztqDHp03Z+a2o1nzU6pObVxw1n4Gu7VzQYusQ== - dependencies: - clone "^2.1.2" - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - promise "^7.1.1" - request "^2.83.0" - source-map "~0.6.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libcipm@^4.0.7: - version "4.0.8" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.8.tgz#dcea4919e10dfbce420327e63901613b9141bc89" - integrity sha512-IN3hh2yDJQtZZ5paSV4fbvJg4aHxCCg5tcZID/dSVlTuUiWktsgaldVljJv6Z5OUlYspx6xQkbR0efNodnIrOA== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.1" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - graceful-fs "^4.1.11" - ini "^1.3.5" - lock-verify "^2.1.0" - mkdirp "^0.5.1" - npm-lifecycle "^3.0.0" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - pacote "^9.1.0" - read-package-json "^2.0.13" - rimraf "^2.6.2" - worker-farm "^1.6.0" - -libnpm@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2" - integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.3" - find-npm-prefix "^1.0.2" - libnpmaccess "^3.0.2" - libnpmconfig "^1.2.1" - libnpmhook "^5.0.3" - libnpmorg "^1.0.1" - libnpmpublish "^1.1.2" - libnpmsearch "^2.0.2" - libnpmteam "^1.0.2" - lock-verify "^2.0.2" - npm-lifecycle "^3.0.0" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - npm-profile "^4.0.2" - npm-registry-fetch "^4.0.0" - npmlog "^4.1.2" - pacote "^9.5.3" - read-package-json "^2.0.13" - stringify-package "^1.0.0" - -libnpmaccess@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" - integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== - dependencies: - aproba "^2.0.0" - get-stream "^4.0.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^4.0.0" - -libnpmconfig@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== - dependencies: - figgy-pudding "^3.5.1" - find-up "^3.0.0" - ini "^1.3.5" - -libnpmhook@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7" - integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpmorg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087" - integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpmpublish@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" - integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - lodash.clonedeep "^4.5.0" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^4.0.0" - semver "^5.5.1" - ssri "^6.0.1" - -libnpmsearch@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf" - integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg== - dependencies: - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpmteam@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820" - integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^4.0.0" - -libnpx@^10.2.2: - version "10.2.3" - resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.3.tgz#d5e01f12d383ffca9a947807ca6a8f587d38fe2c" - integrity sha512-bCvdARu55fLQBhMfcYGF0GznF1kB2sqxq/9zKZ3652M8DDFWpVpCnpgzjzn0yWMDMez5ZGMBiX24yR11uEYZVQ== - dependencies: - dotenv "^5.0.1" - npm-package-arg "^6.0.0" - rimraf "^2.6.2" - safe-buffer "^5.1.0" - update-notifier "^2.3.0" - which "^1.3.0" - y18n "^4.0.0" - yargs "^11.0.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lock-verify@^2.0.2, lock-verify@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.0.tgz#12432feb68bb647071c78c44bde16029a0f7d935" - integrity sha512-BhM1Vqsu7x0s+EalTifNjdDPks+ZjdAhComvnA6VcCIlDOI5ouELXqAe1BYuEIP4zGN0W08xVm6byJV1LnCiJg== - dependencies: - "@iarna/cli" "^1.2.0" - npm-package-arg "^6.1.0" - semver "^5.4.1" - -lockfile@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" - integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== - dependencies: - signal-exit "^3.0.2" - -lodash._baseuniq@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" - integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg= - dependencies: - lodash._createset "~4.0.0" - lodash._root "~3.0.0" - -lodash._createset@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" - integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= - -lodash._root@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= - -lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.union@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash.uniq@^4.5.0, lodash.uniq@~4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash.without@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - -lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.5.0, lodash@~4.17.5: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lodash@~4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.3.0.tgz#efd9c4a6ec53f3b05412429915c3e4824e4d25a4" - integrity sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ= - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log4js@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" - integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - dependencies: - circular-json "^0.5.5" - date-format "^1.2.0" - debug "^3.1.0" - rfdc "^1.1.2" - streamroller "0.7.0" - -loglevel@^1.6.3: - version "1.6.8" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" - integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lru-cache@4.1.x, lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^2.5.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-fetch-happen@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" - integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== - dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - -meant@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" - integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@^2.1.25, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM= - -mime@1.6.0, mime@^1.3.4, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3, mime@^2.3.1, mime@^2.4.4: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" - integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -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" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mocha@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" - integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== - dependencies: - browser-stdout "1.3.1" - commander "2.15.1" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.5" - he "1.1.1" - minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "5.4.0" - -moment@^2.18.1: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - integrity sha1-riXPJRKziFodldfwN4aNhDESR2U= - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz-modules@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mz-modules/-/mz-modules-2.1.0.tgz#7f529877afd0d42f409a7463b96986d61cfbcf96" - integrity sha512-sjk8lcRW3vrVYnZ+W+67L/2rL+jbO5K/N6PFGIcLWTiYytNr22Ah9FDXFs+AQntTM1boZcoHi5qS+CV1seuPog== - dependencies: - glob "^7.1.2" - ko-sleep "^1.0.3" - mkdirp "^0.5.1" - pump "^3.0.0" - rimraf "^2.6.1" - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -netmask@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-fetch-npm@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" - integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-gyp@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-gyp@^5.0.2, node-gyp@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - -node-homedir@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/node-homedir/-/node-homedir-1.1.1.tgz#736db0b60e3bba8aba68df9927de40a7aabe1075" - integrity sha512-Xsmf94D/DdeDISAECUaxXVxhh+kHdbOQE4CnP4igo3HXL3BSmmUpD5M7orH434EZZwBTFF2xe5SgsQr/wOBuNw== - -node-libs-browser@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-releases@^1.1.58: - version "1.1.58" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" - integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== - -"nopt@2 || 3", nopt@3.x, nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -nopt@^4.0.1, nopt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-git-url@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" - integrity sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q= - -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.8, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-audit-report@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.3.tgz#8226deeb253b55176ed147592a3995442f2179ed" - integrity sha512-8nH/JjsFfAWMvn474HB9mpmMjrnKb1Hx/oTAdjv4PT9iZBvBxiZ+wtDUapHCJwLqYGQVPaAfs+vL5+5k9QndXw== - dependencies: - cli-table3 "^0.5.0" - console-control-strings "^1.1.0" - -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-cache-filename@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" - integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= - -npm-install-checks@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9" - integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg== - dependencies: - semver "^2.3.0 || 3.x || 4 || 5" - -npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-logical-tree@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" - integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" - integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== - dependencies: - hosted-git-info "^2.7.1" - osenv "^0.1.5" - semver "^5.6.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-4.2.1.tgz#593303fdea85f7c422775f17f9eb7670f680e3ec" - integrity sha1-WTMD/eqF98Qid18X+et2cPaA4+w= - dependencies: - hosted-git-info "^2.1.5" - semver "^5.1.0" - -npm-packlist@^1.1.12, npm-packlist@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-profile@^4.0.2, npm-profile@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.4.tgz#28ee94390e936df6d084263ee2061336a6a1581b" - integrity sha512-Ta8xq8TLMpqssF0H60BXS1A90iMoM6GeKwsmravJ6wYjWwSzcYBTdyWa3DZCYqPutacBMEm7cxiOkiIeCUAHDQ== - dependencies: - aproba "^1.1.2 || 2" - figgy-pudding "^3.4.1" - npm-registry-fetch "^4.0.0" - -npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz#cb87cf7f25bfb048d6c3ee19d115bebf93ea5bfa" - integrity sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - npm-package-arg "^6.1.0" - safe-buffer "^5.2.0" - -npm-request@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-request/-/npm-request-1.0.0.tgz#3bca7a50ec6dbd390bf1465ad49d459e57d6f8bf" - integrity sha1-O8p6UOxtvTkL8UZa1J1FnlfW+L8= - dependencies: - urllib "^2.8.0" - -npm-run-all@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" - integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - cross-spawn "^6.0.5" - memorystream "^0.3.1" - minimatch "^3.0.4" - pidtree "^0.3.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-user-validate@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" - integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= - -npm@^6.13.4: - version "6.14.6" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.14.6.tgz#1a81ce1fac2bf5457dbf6342ceed503627ff228f" - integrity sha512-axnz6iHFK6WPE0js/+mRp+4IOwpHn5tJEw5KB6FiCU764zmffrhsYHbSHi2kKqNkRBt53XasXjngZfBD3FQzrQ== - dependencies: - JSONStream "^1.3.5" - abbrev "~1.1.1" - ansicolors "~0.3.2" - ansistyles "~0.1.3" - aproba "^2.0.0" - archy "~1.0.0" - bin-links "^1.1.7" - bluebird "^3.5.5" - byte-size "^5.0.1" - cacache "^12.0.3" - call-limit "^1.1.1" - chownr "^1.1.4" - ci-info "^2.0.0" - cli-columns "^3.1.2" - cli-table3 "^0.5.1" - cmd-shim "^3.0.3" - columnify "~1.5.4" - config-chain "^1.1.12" - detect-indent "~5.0.0" - detect-newline "^2.1.0" - dezalgo "~1.0.3" - editor "~1.0.0" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - fs-vacuum "~1.2.10" - fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.3.0" - glob "^7.1.6" - graceful-fs "^4.2.4" - has-unicode "~2.0.1" - hosted-git-info "^2.8.8" - iferr "^1.0.2" - infer-owner "^1.0.4" - inflight "~1.0.6" - inherits "^2.0.4" - ini "^1.3.5" - init-package-json "^1.10.3" - is-cidr "^3.0.0" - json-parse-better-errors "^1.0.2" - lazy-property "~1.0.0" - libcipm "^4.0.7" - libnpm "^3.0.1" - libnpmaccess "^3.0.2" - libnpmhook "^5.0.3" - libnpmorg "^1.0.1" - libnpmsearch "^2.0.2" - libnpmteam "^1.0.2" - libnpx "^10.2.2" - lock-verify "^2.1.0" - lockfile "^1.0.4" - lodash._baseuniq "~4.6.0" - lodash.clonedeep "~4.5.0" - lodash.union "~4.6.0" - lodash.uniq "~4.5.0" - lodash.without "~4.4.0" - lru-cache "^5.1.1" - meant "~1.0.1" - mississippi "^3.0.0" - mkdirp "^0.5.5" - move-concurrently "^1.0.1" - node-gyp "^5.1.0" - nopt "^4.0.3" - normalize-package-data "^2.5.0" - npm-audit-report "^1.3.2" - npm-cache-filename "~1.0.2" - npm-install-checks "^3.0.2" - npm-lifecycle "^3.1.4" - npm-package-arg "^6.1.1" - npm-packlist "^1.4.8" - npm-pick-manifest "^3.0.2" - npm-profile "^4.0.4" - npm-registry-fetch "^4.0.5" - npm-user-validate "~1.0.0" - npmlog "~4.1.2" - once "~1.4.0" - opener "^1.5.1" - osenv "^0.1.5" - pacote "^9.5.12" - path-is-inside "~1.0.2" - promise-inflight "~1.0.1" - qrcode-terminal "^0.12.0" - query-string "^6.8.2" - qw "~1.0.1" - read "~1.0.7" - read-cmd-shim "^1.0.5" - read-installed "~4.0.3" - read-package-json "^2.1.1" - read-package-tree "^5.3.1" - readable-stream "^3.6.0" - readdir-scoped-modules "^1.1.0" - request "^2.88.0" - retry "^0.12.0" - rimraf "^2.7.1" - safe-buffer "^5.1.2" - semver "^5.7.1" - sha "^3.0.0" - slide "~1.1.6" - sorted-object "~2.0.1" - sorted-union-stream "~2.1.3" - ssri "^6.0.1" - stringify-package "^1.0.1" - tar "^4.4.13" - text-table "~0.2.0" - tiny-relative-date "^1.3.0" - uid-number "0.0.6" - umask "~1.1.0" - unique-filename "^1.1.1" - unpipe "~1.0.0" - update-notifier "^2.5.0" - uuid "^3.3.3" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "~3.0.0" - which "^1.3.1" - worker-farm "^1.7.0" - write-file-atomic "^2.4.3" - -npminstall@^3.25.2: - version "3.27.0" - resolved "https://registry.yarnpkg.com/npminstall/-/npminstall-3.27.0.tgz#f92061c0b6c3e63ecd0ba053ca805af76c446b34" - integrity sha512-E4Ks+kSBGNl99X1b/WII1j+NfVh7oTWctLLtMVeqJwQIteHOlzsVFrVHGHbsMAjvXWVosT8w7Qqkq/BpwcZ50g== - dependencies: - agentkeepalive "^3.1.0" - await-event "^2.1.0" - binary-mirror-config "^1.19.0" - bytes "^2.5.0" - chalk "^1.1.3" - cmd-shim-hotfix "^3.0.3" - co "^4.6.0" - co-fs-extra "^1.2.1" - co-parallel "^1.0.0" - debug "^2.6.8" - destroy "^1.0.4" - minimatch "^3.0.4" - minimist "^1.2.0" - mkdirp "^0.5.1" - moment "^2.18.1" - ms "^2.0.0" - mz "^2.7.0" - mz-modules "^2.1.0" - node-gyp "^3.7.0" - node-homedir "^1.0.0" - normalize-git-url "^3.0.2" - normalize-package-data "^2.3.8" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^4.2.0" - ora "~1.3.0" - rimraf "^2.6.1" - runscript "^1.2.1" - semver "^5.3.0" - tar "^4.0.1" - urllib "^2.29.1" - utility "^1.14.0" - uuid "^3.0.1" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.1.2, npmlog@~4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -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" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - -object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -open@0.0.5, open@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" - integrity sha1-QsPhjslUZra/DcQvOilFw/DK2Pw= - -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optimize-css-assets-webpack-plugin@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -ora@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a" - integrity sha1-gAeN0rkqk0r2ajrXKluRBpTt5Ro= - dependencies: - chalk "^1.1.1" - cli-cursor "^2.1.0" - cli-spinners "^1.0.0" - log-symbols "^1.0.2" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-name@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" - integrity sha1-GzefZINa98Wn9JizV8uVIVwVnt8= - dependencies: - osx-release "^1.0.0" - win-release "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@0, osenv@^0.1.4, osenv@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -osx-release@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c" - integrity sha1-8heRGigTaUmvG/kwiyQeJzfTzWw= - dependencies: - minimist "^1.1.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pac-proxy-agent@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz#115b1e58f92576cac2eba718593ca7b0e37de2ad" - integrity sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ== - dependencies: - agent-base "^4.2.0" - debug "^4.1.1" - get-uri "^2.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^3.0.0" - pac-resolver "^3.0.0" - raw-body "^2.2.0" - socks-proxy-agent "^4.0.1" - -pac-resolver@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" - integrity sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA== - dependencies: - co "^4.6.0" - degenerator "^1.0.4" - ip "^1.1.5" - netmask "^1.0.6" - thunkify "^2.1.2" - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pacote@^9.1.0, pacote@^9.5.12, pacote@^9.5.3: - version "9.5.12" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66" - integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ== - dependencies: - bluebird "^3.5.3" - cacache "^12.0.2" - chownr "^1.1.2" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - make-fetch-happen "^5.0.0" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-normalize-package-bin "^1.0.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^3.0.0" - npm-registry-fetch "^4.0.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.10" - unique-filename "^1.1.1" - which "^1.3.1" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - 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" - safe-buffer "^5.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.1, parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0, 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" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pathval@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= - -pause-stream@~0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - 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" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pidtree@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" - integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -portfinder@^1.0.20: - version "1.0.26" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" - integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.16" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" - -postcss-modules-scope@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-simple-vars@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz#e2f81b3d0847ddd4169816b6d141b91d51e6e22e" - integrity sha512-xWIufxBoINJv6JiLb7jl5oElgp+6puJwvT5zZHliUSydoLz4DADRB3NDDsYgfKVwojn4TDLiseoC65MuS8oGGg== - dependencies: - postcss "^7.0.14" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0, progress@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1, promise-inflight@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= - dependencies: - read "1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - -proxy-addr@~1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918" - integrity sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg= - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.4.0" - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -proxy-agent@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.1.1.tgz#7e04e06bf36afa624a1540be247b47c970bd3014" - integrity sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw== - dependencies: - agent-base "^4.2.0" - debug "4" - http-proxy-agent "^2.1.0" - https-proxy-agent "^3.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^3.0.1" - proxy-from-env "^1.0.0" - socks-proxy-agent "^4.0.1" - -proxy-from-env@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - 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" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -puppeteer@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-2.1.0.tgz#c10cabc5525f57c6766eed4f3006b6e10afcafc1" - integrity sha512-PC4oKMtwAElo8YtS/cYnk2/dew/3TonsGKKzjpFLWwkhBCteFsOZCVOXTt2QlP6w53mH0YsJE+fPLPzOW+DCug== - dependencies: - "@types/mime-types" "^2.1.0" - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^4.0.0" - mime "^2.0.3" - mime-types "^2.1.25" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - -qs@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@^6.4.0: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" - integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -query-string@^6.8.2: - version "6.13.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.1.tgz#d913ccfce3b4b3a713989fe6d39466d92e71ccad" - integrity sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - -qw@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" - integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - 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" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== - dependencies: - bytes "3.1.0" - http-errors "1.7.3" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-loader@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" - integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= - -rc@^1.0.1, rc@^1.1.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" - integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== - dependencies: - graceful-fs "^4.1.2" - -read-installed@~4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= - dependencies: - debuglog "^1.0.1" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - semver "2 || 3 || 4 || 5" - slide "~1.1.3" - util-extend "^1.0.1" - optionalDependencies: - graceful-fs "^4.1.2" - -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@1, read@~1.0.1, read@~1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - -"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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.1.1" - util-deprecate "~1.0.1" - -readable-stream@1.1.x, readable-stream@~1.1.10: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== - -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= - dependencies: - rc "^1.0.1" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4= - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -request@^2.83.0, request@^2.87.0, request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requireindex@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" - integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI= - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.x, resolve@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.10.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.12.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rfdc@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" - integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@3.0.2, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@~2.2.8: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -runscript@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/runscript/-/runscript-1.5.0.tgz#29127e47c0c5d60b36472b9df650f29c561a82fe" - integrity sha512-o9MaYVXr9ZNwOj+KO4jWWkC8qvTvsu6RfZLgF2h1UZjD2cenwEjoMMnCcILXZ0nu/RrSShc0OYgm1xl8iXEjJA== - dependencies: - debug "^2.6.8" - is-type-of "^1.1.0" - -rxjs@^6.4.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" - integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== - dependencies: - "@types/json-schema" "^7.0.6" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -script-loader@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/script-loader/-/script-loader-0.7.2.tgz#2016db6f86f25f5cf56da38915d83378bb166ba7" - integrity sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA== - dependencies: - raw-loader "~0.5.1" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.4: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.1, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - -send@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" - integrity sha1-igI1TCbm9cynAAZfXwzeupDse18= - dependencies: - debug "2.6.1" - depd "~1.1.0" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.1" - mime "1.3.4" - ms "0.7.2" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" - integrity sha1-dEOpZePO1kes61Y5+ga/TRu+ADk= - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.1" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae" - integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw== - dependencies: - graceful-fs "^4.1.2" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.0" - -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -socks-proxy-agent@^4.0.0, socks-proxy-agent@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== - dependencies: - ip "1.1.5" - smart-buffer "^4.1.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -sorted-object@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" - integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw= - -sorted-union-stream@~2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" - integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc= - dependencies: - from2 "^1.3.0" - stream-iterate "^1.1.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-loader@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" - integrity sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ== - dependencies: - async "^2.5.0" - loader-utils "^1.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= - dependencies: - amdefine ">=0.0.4" - -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.0, ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.3.1, statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-iterate@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" - integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE= - dependencies: - readable-stream "^2.1.5" - stream-shift "^1.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -streamroller@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b" - integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== - dependencies: - date-format "^1.2.0" - debug "^3.1.0" - mkdirp "^0.5.1" - readable-stream "^2.3.0" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string.prototype.padend@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" - integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-package@^1.0.0, stringify-package@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" - integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== - dependencies: - has-flag "^3.0.0" - -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - -tar@^4.0.1, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -tar@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" - integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - -terser-webpack-plugin@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" - integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^3.1.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.3.4: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -text-table@^0.2.0, text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -"through@>=2.2.7 <3", through@^2.3.6, through@~2.3: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunkify-wrap@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/thunkify-wrap/-/thunkify-wrap-1.0.4.tgz#b52be548ddfefda20e00b58c6096762b43dd6880" - integrity sha1-tSvlSN3+/aIOALWMYJZ2K0PdaIA= - dependencies: - enable "1" - -thunkify@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - integrity sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-relative-date@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" - integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== - -tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -tslib@^1.10.0, tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.17.1: - version "3.20.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" - integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-is@~1.6.14, type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c" - integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -uglify-js@^3.1.4: - version "3.10.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7" - integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA== - -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -umask@^1.1.0, umask@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - -underscore.string@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.2.3.tgz#806992633665d5e5fcb4db1fb3a862eb68e9e6da" - integrity sha1-gGmSYzZl1eX8tNsfs6hi62jp5to= - -unescape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" - integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== - dependencies: - extend-shallow "^2.0.1" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -urllib@^2.17.0, urllib@^2.29.1, urllib@^2.8.0: - version "2.36.1" - resolved "https://registry.yarnpkg.com/urllib/-/urllib-2.36.1.tgz#fbd9fb13bbc140e1fc15bcdba8703d6142a7eb3a" - integrity sha512-g0Gh7bH5AwfPUzFetxPtJwumGHE6D7KQn0K68MwcJXPgO2K0AliwEIxLAwGMF+TpY75DYAsvz1h9ekagYoq33w== - dependencies: - any-promise "^1.3.0" - content-type "^1.0.2" - debug "^2.6.9" - default-user-agent "^1.0.0" - digest-header "^0.0.1" - ee-first "~1.1.1" - formstream "^1.1.0" - humanize-ms "^1.2.0" - iconv-lite "^0.4.15" - ip "^1.1.5" - proxy-agent "^3.1.0" - pump "^3.0.0" - qs "^6.4.0" - statuses "^1.3.1" - utility "^1.16.1" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= - -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utility@0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/utility/-/utility-0.1.11.tgz#fde60cf9b4e4751947a0cf5d104ce29367226715" - integrity sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU= - dependencies: - address ">=0.0.1" - -utility@^1.14.0, utility@^1.16.1: - version "1.16.3" - resolved "https://registry.yarnpkg.com/utility/-/utility-1.16.3.tgz#5dfd11de74e6bfdd826cc4a167e6301d92f4b70d" - integrity sha512-kYghm8fknkPkUd9ncODj/b2Zojc23gnRC29QmpmL3BBsSX6W++RNRTQ1tB7l0UA7d4SisIjUyvRfVET3lBwurw== - dependencies: - copy-to "^2.0.1" - escape-html "^1.0.3" - mkdirp "^0.5.1" - mz "^2.7.0" - unescape "^1.0.1" - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.1, uuid@^3.3.2, uuid@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -vary@~1.1.0, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= - -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.5.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" - integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.0" - watchpack-chokidar2 "^2.0.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webpack-cli@3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.5.tgz#f4d1238a66a2843d9cebf189835ea22142e72767" - integrity sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-dev-middleware@^3.7.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz#f79caa5974b7f8b63268ef5421222a8486d792f5" - integrity sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.6" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - killable "^1.0.1" - loglevel "^1.6.3" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.20" - schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.1.1" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.0" - webpack-log "^2.0.0" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" - integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== - dependencies: - lodash "^4.17.5" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.35.2: - version "4.35.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.35.2.tgz#5c8b8a66602cbbd6ec65c6e6747914a61c1449b1" - integrity sha512-TZAmorNymV4q66gAM/h90cEjG+N3627Q2MnkSgKlX/z3DlNVKUtqy57lz1WmZU2+FUZwzM+qm7cGaO95PyrX5A== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@1, which@^1.1.1, which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@~1.2.1: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - integrity sha1-mofEN48D6CfOyvGs31bHNsAcFOU= - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - -win-release@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" - integrity sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk= - dependencies: - semver "^5.0.1" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -worker-farm@^1.6.0, worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= - -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= - dependencies: - camelcase "^4.1.0" - -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" - -yargs@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" - integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==