Browse Source

无JIRA任务 chore: 补充eslint规则

es6
Zhenfei.Li 1 year ago
parent
commit
4e2a41bfb7
  1. 8
      .eslintrc
  2. 544
      src/core/2.base.js
  3. 11
      src/core/3.ob.js
  4. 135
      src/core/4.widget.js
  5. 201
      src/core/5.inject.js
  6. 6
      src/core/index.js

8
.eslintrc

@ -27,11 +27,15 @@
"plugins": ["@typescript-eslint/eslint-plugin"],
"overrides": [{
"files": ["src/*.js","src/**/*.js", "demo/*.js", "demo/**/*.js", "i18n/**/*.js", "i18n/*.js", "test/**/*.js", "test/*.js", "examples/*.js", "examples/**/*.js"],
"extends": "plugin:@fui/es6",
"extends": "plugin:@fui/esnext",
"rules": {
"no-param-reassign": "off",
"quotes": [2, "double"],
"comma-dangle": ["error", { "arrays": "never", "objects": "always-multiline"}] // 多行对象字面量中要求拖尾逗号
"comma-dangle": ["error", { "arrays": "never", "objects": "always-multiline"}], // 多行对象字面量中要求拖尾逗号
"no-var": 2,
"prefer-const": 2,
"indent": ["error", 4],
"no-use-before-define": 0
}
}, {
"files": ["webpack/*.js", "./*.js", "lib/**/*.js", "lib/*.js", "./bin/*.js", "./bin/**/*.js"],

544
src/core/2.base.js

File diff suppressed because it is too large Load Diff

11
src/core/3.ob.js

@ -1,7 +1,8 @@
import { isFunction, isArray, isObject, isArguments, reduce, bind } from "./2.base";
function obExtend() {
let target = arguments[0] || {}, length = arguments.length, i = 1, name, copy;
const target = arguments[0] || {}, length = arguments.length;
let i = 1, name, copy;
for (; i < length; i++) {
// Only deal with non-null/undefined values
const options = arguments[i];
@ -53,9 +54,7 @@ export class OB {
props = this.props(config);
}
const defaultProps = obExtend(this._defaultConfig(config), props);
const modifiedDefaultProps = (config && config.type && OB.configFunctions[config.type + ".props"]) ? reduce(OB.configFunctions[config.type + ".props"], function (value, conf, index) {
return obExtend(conf, value.fn(defaultProps, config, value.opt));
}, {}) : null;
const modifiedDefaultProps = (config && config.type && OB.configFunctions[`${config.type}.props`]) ? reduce(OB.configFunctions[`${config.type}.props`], (value, conf, index) => obExtend(conf, value.fn(defaultProps, config, value.opt)), {}) : null;
this.options = obExtend(defaultProps, modifiedDefaultProps, config);
}
@ -73,7 +72,7 @@ export class OB {
return;
}
if (isArray(lis)) {
BI._.each(lis, (l) => {
BI._.each(lis, l => {
this.on(eventName, l);
});
@ -162,7 +161,7 @@ export class OB {
const fns = this._getEvents()[eventName];
if (isArray(fns)) {
const newFns = [];
BI._.each(fns, function (ifn) {
BI._.each(fns, ifn => {
if (ifn !== fn) {
newFns.push(ifn);
}

135
src/core/4.widget.js

@ -30,7 +30,7 @@ function callLifeHook(self, life) {
if (hook) {
hooks = hooks.concat(isArray(hook) ? hook : [hook]);
}
each(hooks, function (i, hook) {
each(hooks, (i, hook) => {
hook.call(self);
});
}
@ -53,7 +53,7 @@ export class Widget extends OB {
baseCls: "",
extraCls: "",
cls: "",
css: null
css: null,
// vdom: false
});
@ -132,6 +132,7 @@ export class Widget extends OB {
// 加个保险
if (initCallbackCalled === true) {
_global.console && console.error("组件: 请检查beforeInit内部的写法,callback只能执行一次");
return;
}
initCallbackCalled = true;
@ -140,18 +141,19 @@ export class Widget extends OB {
// 加个保险
if (renderCallbackCalled === true) {
_global.console && console.error("组件: 请检查beforeRender内部的写法,callback只能执行一次");
return;
}
renderCallbackCalled = true;
this._render();
this.__afterRender();
}
};
if (this.options.beforeRender || this.beforeRender) {
this.__async = true;
const beforeRenderResult = (this.options.beforeRender || this.beforeRender).call(this, render);
if (beforeRenderResult instanceof Promise) {
beforeRenderResult.then(render).catch(function (e) {
beforeRenderResult.then(render).catch(e => {
_global.console && console.error(e);
render();
});
@ -160,13 +162,13 @@ export class Widget extends OB {
this._render();
this.__afterRender();
}
}
};
if (this.options.beforeInit || this.beforeInit) {
this.__asking = true;
const beforeInitResult = (this.options.beforeInit || this.beforeInit).call(this, init);
if (beforeInitResult instanceof Promise) {
beforeInitResult.then(init).catch(function (e) {
beforeInitResult.then(init).catch(e => {
_global.console && console.error(e);
init();
});
@ -206,11 +208,11 @@ export class Widget extends OB {
this._initElementWidth();
this._initElementHeight();
if (o._baseCls || o.baseCls || o.extraCls) {
this.element.addClass((o._baseCls || "") + " " + (o.baseCls || "") + " " + (o.extraCls || ""));
this.element.addClass(`${o._baseCls || ""} ${o.baseCls || ""} ${o.extraCls || ""}`);
}
if (o.cls) {
if (isFunction(o.cls)) {
const cls = this.__watch(o.cls, (context, newValue) => {
let cls = this.__watch(o.cls, (context, newValue) => {
this.element.removeClass(cls).addClass(cls = newValue);
});
this.element.addClass(cls);
@ -229,7 +231,7 @@ export class Widget extends OB {
}
if (o.css) {
if (isFunction(o.css)) {
const css = this.__watch(o.css, (context, newValue) => {
let css = this.__watch(o.css, (context, newValue) => {
for (const k in css) {
if (isNull(newValue[k])) {
newValue[k] = "";
@ -247,14 +249,13 @@ export class Widget extends OB {
__watch(getter, handler, options) {
if (_global.Fix) {
this._watchers = this._watchers || [];
const watcher = new Fix.Watcher(null, () => {
return getter.call(this, this);
}, (handler && ((v) => {
const watcher = new Fix.Watcher(null, () => getter.call(this, this), (handler && (v => {
handler.call(this, this, v);
})) || BI.emptyFn, extend({ deep: true }, options));
this._watchers.push(() => {
watcher.teardown();
});
return watcher.value;
} else {
return getter();
@ -374,7 +375,7 @@ export class Widget extends OB {
each(els, (i, el) => {
if (el) {
_lazyCreateWidget(el, {
element: this
element: this,
});
}
});
@ -422,6 +423,7 @@ export class Widget extends OB {
this.__afterMount(lifeHook, predicate);
// }, 0);
}
return true;
}
@ -444,10 +446,12 @@ export class Widget extends OB {
_update(nextProps, shouldUpdate) {
callLifeHook(this, "beforeUpdate");
let res;
if (shouldUpdate) {
const res = this.update && this.update(nextProps, shouldUpdate);
res = this.update && this.update(nextProps, shouldUpdate);
}
callLifeHook(this, "updated");
return res;
}
@ -476,7 +480,7 @@ export class Widget extends OB {
this.options._disabled = true;
}
// 递归将所有子组件使能
each(this._children, function (i, child) {
each(this._children, (i, child) => {
!child._manualSetEnable && child._setEnable && child._setEnable(enable);
});
}
@ -488,7 +492,7 @@ export class Widget extends OB {
this.options._invalid = true;
}
// 递归将所有子组件使有效
each(this._children, function (i, child) {
each(this._children, (i, child) => {
!child._manualSetValid && child._setValid && child._setValid(valid);
});
}
@ -525,36 +529,36 @@ export class Widget extends OB {
this.__setElementVisible(true);
this._mount();
if (o.animation && !lastVisible) {
this.element.removeClass(o.animation + "-leave").removeClass(o.animation + "-leave-active").addClass(o.animation + "-enter");
this.element.removeClass(`${o.animation}-leave`).removeClass(`${o.animation}-leave-active`).addClass(`${o.animation}-enter`);
if (this._requestAnimationFrame) {
cancelAnimationFrame(this._requestAnimationFrame);
}
this._requestAnimationFrame = () => {
this.element.addClass(o.animation + "-enter-active");
this.element.addClass(`${o.animation}-enter-active`);
};
requestAnimationFrame(this._requestAnimationFrame);
if (this._animationDuring) {
clearTimeout(this._animationDuring);
}
this._animationDuring = setTimeout(() => {
this.element.removeClass(o.animation + "-enter").removeClass(o.animation + "-enter-active");
this.element.removeClass(`${o.animation}-enter`).removeClass(`${o.animation}-enter-active`);
}, o.animationDuring);
}
} else if (visible === false) {
if (o.animation && lastVisible) {
this.element.removeClass(o.animation + "-enter").removeClass(o.animation + "-enter-active").addClass(o.animation + "-leave");
this.element.removeClass(`${o.animation}-enter`).removeClass(`${o.animation}-enter-active`).addClass(`${o.animation}-leave`);
if (this._requestAnimationFrame) {
cancelAnimationFrame(this._requestAnimationFrame);
}
this._requestAnimationFrame = () => {
this.element.addClass(o.animation + "-leave-active");
this.element.addClass(`${o.animation}-leave-active`);
};
requestAnimationFrame(this._requestAnimationFrame);
if (this._animationDuring) {
clearTimeout(this._animationDuring);
}
this._animationDuring = setTimeout(() => {
this.element.removeClass(o.animation + "-leave").removeClass(o.animation + "-leave-active");
this.element.removeClass(`${o.animation}-leave`).removeClass(`${o.animation}-leave-active`);
this.__setElementVisible(false);
}, o.animationDuring);
} else {
@ -582,8 +586,8 @@ export class Widget extends OB {
doBehavior() {
const args = arguments;
// 递归将所有子组件使有效
each(this._children, function (i, child) {
child.doBehavior && child.doBehavior.apply(child, args);
each(this._children, (i, child) => {
child.doBehavior && child.doBehavior(...args);
});
}
@ -602,7 +606,7 @@ export class Widget extends OB {
name = widget.getName();
}
if (isKey(name)) {
name = name + "";
name = `${name}`;
}
name = name || widget.getName() || uniqueId("widget");
if (this._children[name]) {
@ -613,6 +617,7 @@ export class Widget extends OB {
// TODO: self待删
remove(self._children, this);
});
return (this._children[name] = widget);
}
@ -620,20 +625,21 @@ export class Widget extends OB {
if (!isKey(name) || name === this.getName()) {
return this;
}
name = name + "";
let widget = void 0, other = {};
any(this._children, function (i, wi) {
name = `${name}`;
let widget = void 0;
const other = {};
any(this._children, (i, wi) => {
if (i === name) {
widget = wi;
return true;
}
other[i] = wi;
});
if (!widget) {
any(other, function (i, wi) {
return (widget = wi.getWidgetByName(i));
});
any(other, (i, wi) => (widget = wi.getWidgetByName(i)));
}
return widget;
}
@ -646,7 +652,7 @@ export class Widget extends OB {
}
hasWidget(name) {
return this._children[name] != null;
return isNotNull(this._children[name]);
}
getName() {
@ -664,11 +670,13 @@ export class Widget extends OB {
attr(key, value) {
if (isPlainObject(key)) {
each(key, (k, v) => this.attr(k, v));
return;
}
if (isNotNull(value)) {
return this.options[key] = value;
this.options[key] = value;
}
return this.options[key];
}
@ -729,7 +737,7 @@ export class Widget extends OB {
}
__d() {
each(this._children, function (i, widget) {
each(this._children, (i, widget) => {
widget && widget._unMount && widget._unMount();
});
this._children = {};
@ -747,7 +755,6 @@ export class Widget extends OB {
this.destroyed = null;
this._isDestroyed = true;
// this._purgeRef(); // 清除ref的时机还是要仔细考虑一下
}
_unMount() {
@ -767,7 +774,7 @@ export class Widget extends OB {
_empty () {
this._assetMounted();
each(this._children, function (i, widget) {
each(this._children, (i, widget) => {
widget && widget._unMount && widget._unMount();
});
this._children = {};
@ -801,9 +808,9 @@ export class Widget extends OB {
// this.purgeListeners();
// 去掉组件绑定的watcher
each(this._watchers, function (i, unwatches) {
each(this._watchers, (i, unwatches) => {
unwatches = isArray(unwatches) ? unwatches : [unwatches];
each(unwatches, function (j, unwatch) {
each(unwatches, (j, unwatch) => {
unwatch();
});
});
@ -839,7 +846,7 @@ export class Widget extends OB {
this._purgeRef();
this.purgeListeners();
}
};
}
let context = null, current = null;
const contextStack = [], currentStack = [];
@ -882,35 +889,42 @@ export function useStore(_store) {
}
if (current) {
const currentStore = current._store;
let delegate = {}, origin;
const delegate = {};
let origin;
if (_global.Proxy) {
const proxy = new Proxy(delegate, {
get: function (target, key) {
get (target, key) {
return Reflect.get(origin, key);
},
set: function (target, key, value) {
set (target, key, value) {
return Reflect.set(origin, key, value);
}
},
});
current._store = function () {
origin = (_store || currentStore).apply(this, arguments);
delegate.$delegate = origin;
return origin;
};
return current.$storeDelegate = proxy;
current.$storeDelegate = proxy;
return current.$storeDelegate;
}
current._store = function () {
const st = (_store || currentStore).apply(this, arguments);
extend(delegate, st);
return st;
};
return current.$storeDelegate = delegate;
current.$storeDelegate = delegate;
return current.$storeDelegate;
}
}
export function useContext(inject) {
// 通过组件找最近的store
const vm = Widget.findStore(Widget.current || Widget.context);
let vm = Widget.findStore(Widget.current || Widget.context);
if (vm) {
if (inject) {
if (vm.$$computed && inject in vm.$$computed) {
@ -928,9 +942,11 @@ export function useContext(inject) {
}
vm = vm._parent;
}
return null;
}
}
return vm;
}
@ -949,18 +965,19 @@ export function watch(vm, watch, handler) {
if (isArray(handler)) {
for (let i = 0; i < handler.length; i++) {
watchers.push(Fix.watch(vm.model, key, innerHandler, {
store: vm
store: vm,
}));
}
} else {
watchers.push(Fix.watch(vm.model, key, innerHandler, {
store: vm
store: vm,
}));
}
}
// vm中一定有_widget
Widget.current._watchers || (Widget.current._watchers = []);
Widget.current._watchers = Widget.current._watchers.concat(watchers);
return;
}
handler = watch;
@ -974,6 +991,7 @@ export function onBeforeMount(beforeMount) {
if (current) {
if (current.__isMounting) {
beforeMount();
return;
}
if (!current.beforeMount) {
@ -989,6 +1007,7 @@ export function onMounted(mounted) {
if (current) {
if (current._isMounted && !this.__async) {
mounted();
return;
}
if (!current.mounted) {
@ -998,7 +1017,7 @@ export function onMounted(mounted) {
}
current.mounted.push(mounted);
}
};
}
export function onBeforeUnmount(beforeDestroy) {
if (current) {
@ -1026,7 +1045,7 @@ Widget.registerRenderEngine = function (engine) {
Widget._renderEngine = engine;
};
Widget.registerRenderEngine({
createElement: function (widget) {
createElement (widget) {
if (isWidget(widget)) {
const o = widget.options;
if (o.element) {
@ -1035,13 +1054,15 @@ Widget.registerRenderEngine({
if (o.tagName) {
return BI.$(document.createElement(o.tagName));
}
return BI.$(document.createDocumentFragment());
}
return BI.$(widget);
},
createFragment: function () {
createFragment () {
return document.createDocumentFragment();
}
},
});
export function mount(widget, container, predicate, hydrate) {
@ -1049,8 +1070,8 @@ export function mount(widget, container, predicate, hydrate) {
// 将widget的element元素都挂载好,并建立相互关系
widget.element.data("__widgets", [widget]);
const res = widget._mount(true, false, false, function (w) {
each(w._children, function (i, child) {
const ws = child.element.data("__widgets");
each(w._children, (i, child) => {
let ws = child.element.data("__widgets");
if (!ws) {
ws = [];
}
@ -1063,19 +1084,21 @@ export function mount(widget, container, predicate, hydrate) {
const c = Widget._renderEngine.createElement;
BI.DOM.patchProps(widget.element, c(c(container).children()[0]));
const triggerLifeHook = function (w) {
const triggerLifeHook = w => {
w.beforeMount && w.beforeMount();
w.mounted && w.mounted();
each(w._children, function (i, child) {
each(w._children, (i, child) => {
triggerLifeHook(child);
});
};
// 最后触发组件树生命周期函数
triggerLifeHook(widget);
return res;
}
if (container) {
Widget._renderEngine.createElement(container).append(widget.element);
}
return widget._mount(true, false, false, predicate);
}

201
src/core/5.inject.js

@ -1,19 +1,19 @@
import { isFunction, isNull, isNotNull, isArray, each, isWidget, extend, init, isEmpty, remove } from "./2.base";
import { OB } from "./3.ob";
import { Widget } from "./4.widget"
import { Widget } from "./4.widget";
let moduleInjection = {}, moduleInjectionMap = {
const moduleInjection = {}, moduleInjectionMap = {
components: {},
constants: {},
stores: {},
services: {},
models: {},
providers: {}
providers: {},
};
export function module(xtype, cls) {
if (moduleInjection[xtype] != null) {
_global.console && console.error("module: [" + xtype + "] 已经注册过了");
if (isNotNull(moduleInjection[xtype])) {
_global.console && console.error(`module: [${xtype}] 已经注册过了`);
} else {
if (isFunction(cls)) {
cls = cls();
@ -29,7 +29,7 @@ export function module(xtype, cls) {
}
moduleInjectionMap[k][key].push({
version: cls[k][key],
moduleId: xtype
moduleId: xtype,
});
}
}
@ -40,10 +40,10 @@ export function module(xtype, cls) {
return () => Modules.getModule(xtype);
}
let constantInjection = {};
const constantInjection = {};
export function constant(xtype, cls) {
if (constantInjection[xtype] != null) {
_global.console && console.error("constant: [" + xtype + "]已经注册过了");
if (isNotNull(constantInjection[xtype])) {
_global.console && console.error(`constant: [${xtype}]已经注册过了`);
} else {
constantInjection[xtype] = cls;
}
@ -51,60 +51,60 @@ export function constant(xtype, cls) {
return () => Constants.getConstant(xtype);
}
let modelInjection = {};
const modelInjection = {};
export function model(xtype, cls) {
if (modelInjection[xtype] != null) {
_global.console && console.error("model: [" + xtype + "] 已经注册过了");
if (isNotNull(modelInjection[xtype])) {
_global.console && console.error(`model: [${xtype}] 已经注册过了`);
} else {
modelInjection[xtype] = cls;
}
return (config) => Models.getModel(xtype, config);
return config => Models.getModel(xtype, config);
}
let storeInjection = {};
const storeInjection = {};
export function store(xtype, cls) {
if (storeInjection[xtype] != null) {
_global.console && console.error("store: [" + xtype + "] 已经注册过了");
if (isNotNull(storeInjection[xtype])) {
_global.console && console.error(`store: [${xtype}] 已经注册过了`);
} else {
storeInjection[xtype] = cls;
}
return (config) => Stores.getStore(xtype, config);
return config => Stores.getStore(xtype, config);
}
let serviceInjection = {};
const serviceInjection = {};
export function service(xtype, cls) {
if (serviceInjection[xtype] != null) {
_global.console && console.error("service: [" + xtype + "] 已经注册过了");
if ((serviceInjection[xtype])) {
_global.console && console.error(`service: [${xtype}] 已经注册过了`);
}
serviceInjection[xtype] = cls;
return (config) => Services.getService(xtype, config);
return config => Services.getService(xtype, config);
}
let providerInjection = {};
const providerInjection = {};
export function provider(xtype, cls) {
if (providerInjection[xtype] != null) {
_global.console && console.error("provider: [" + xtype + "] 已经注册过了");
if ((providerInjection[xtype])) {
_global.console && console.error(`provider: [${xtype}] 已经注册过了`);
} else {
providerInjection[xtype] = cls;
}
return (config) => Providers.getProvider(xtype, config);
return config => Providers.getProvider(xtype, config);
}
let configFunctions = OB.configFunctions = {};
const runConfigFunction = function (type, configFn) {
const configFunctions = OB.configFunctions = {};
const runConfigFunction = (type, configFn) => {
if (!type || !configFunctions[type]) {
return false;
}
let queue = [];
if (configFn) {
queue = configFunctions[type].filter((conf) => conf.fn === configFn);
configFunctions[type] = configFunctions[type].filter((conf) => conf.fn !== configFn);
queue = configFunctions[type].filter(conf => conf.fn === configFn);
configFunctions[type] = configFunctions[type].filter(conf => conf.fn !== configFn);
} else {
queue = configFunctions[type];
delete configFunctions[type];
@ -140,7 +140,7 @@ const runConfigFunction = function (type, configFn) {
}
}
if (findVersion === true) {
_global.console && console.error("moduleId: [" + module.moduleId + "] 接口: [" + type + "] 接口版本: [" + version + "] 已过期,版本要求为:", dependencies[module.moduleId], "=>", moduleInjection[module.moduleId]);
_global.console && console.error(`moduleId: [${module.moduleId}] 接口: [${type}] 接口版本: [${version}] 已过期,版本要求为:`, dependencies[module.moduleId], "=>", moduleInjection[module.moduleId]);
continue;
}
}
@ -179,6 +179,7 @@ export function config(type, configFn, opt) {
if (providerInstance[type]) {
delete providerInstance[type];
}
return configFn(providers[type]);
}
@ -187,7 +188,7 @@ export function config(type, configFn, opt) {
}
configFunctions[type].push({
fn: configFn,
opt: opt
opt,
});
if (opt.immediately) {
@ -199,28 +200,30 @@ export function getReference(type, fn) {
return BI.Plugin.registerObject(type, fn);
}
let actions = {};
let globalAction = [];
const actions = {};
const globalAction = [];
export function action(type, actionFn) {
if (isFunction(type)) {
globalAction.push(type);
return () => {
remove(globalAction, (idx) => globalAction.indexOf(actionFn) === idx);
remove(globalAction, idx => globalAction.indexOf(actionFn) === idx);
};
}
if (!actions[type]) {
actions[type] = [];
}
actions[type].push(actionFn);
return () => {
remove(actions[type], (idx) => actions[type].indexOf(actionFn) === idx);
remove(actions[type], idx => actions[type].indexOf(actionFn) === idx);
if (actions[type].length === 0) {
delete actions[type];
}
};
}
let points = {};
const points = {};
export function point(type, action, pointFn, after) {
if (!points[type]) {
points[type] = {};
@ -235,35 +238,37 @@ export function point(type, action, pointFn, after) {
}
export const Modules = {
getModule: function (type) {
getModule (type) {
if (!moduleInjection[type]) {
_global.console && console.error("module: [" + type + "] 未定义");
_global.console && console.error(`module: [${type}] 未定义`);
}
return moduleInjection[type];
},
getAllModules: function () {
getAllModules () {
return moduleInjection;
}
}
},
};
export const Constants = {
getConstant: function (type) {
getConstant (type) {
if (isNull(constantInjection[type])) {
_global.console && console.error("constant: [" + type + "] 未定义");
_global.console && console.error(`constant: [${type}] 未定义`);
}
runConfigFunction(type);
return isFunction(constantInjection[type]) ? constantInjection[type]() : constantInjection[type];
}
}
},
};
const callPoint = function (inst, types) {
function callPoint(inst, types) {
types = isArray(types) ? types : [types];
each(types, (idx, type) => {
if (points[type]) {
for (const action in points[type]) {
let bfns = points[type][action].before;
const bfns = points[type][action].before;
if (bfns) {
BI.aspect.before(inst, action, function (bfns) {
BI.aspect.before(inst, action, (function (bfns) {
return function () {
for (let i = 0, len = bfns.length; i < len; i++) {
try {
@ -273,11 +278,11 @@ const callPoint = function (inst, types) {
}
}
};
}(bfns));
}(bfns)));
}
let afns = points[type][action].after;
const afns = points[type][action].after;
if (afns) {
BI.aspect.after(inst, action, function (afns) {
BI.aspect.after(inst, action, (function (afns) {
return function () {
for (let i = 0, len = afns.length; i < len; i++) {
try {
@ -287,66 +292,69 @@ const callPoint = function (inst, types) {
}
}
};
}(afns));
}(afns)));
}
}
}
});
};
}
export const Models = {
getModel: function (type, config) {
getModel (type, config) {
if (!modelInjection[type]) {
_global.console && console.error("model: [" + type + "] 未定义");
_global.console && console.error(`model: [${type}] 未定义`);
}
runConfigFunction(type);
var inst = new modelInjection[type](config);
const inst = new modelInjection[type](config);
inst._constructor && inst._constructor(config);
inst.mixins && callPoint(inst, inst.mixins);
callPoint(inst, type);
return inst;
}
}
},
};
let stores = {};
const stores = {};
export const Stores = {
getStore: function (type, config) {
getStore (type, config) {
if (!storeInjection[type]) {
_global.console && console.error("store: [" + type + "] 未定义");
_global.console && console.error(`store: [${type}] 未定义`);
}
if (stores[type]) {
return stores[type];
}
const inst = stores[type] = new storeInjection[type](config);
inst._constructor && inst._constructor(config, function () {
inst._constructor && inst._constructor(config, () => {
delete stores[type];
});
callPoint(inst, type);
return inst;
}
}
},
};
let services = {};
const services = {};
export const Services = {
getService: (type, config) => {
if (!serviceInjection[type]) {
_global.console && console.error("service: [" + type + "] 未定义");
_global.console && console.error(`service: [${type}] 未定义`);
}
if (services[type]) {
return services[type];
}
services[type] = new serviceInjection[type](config);
callPoint(services[type], type);
return services[type];
}
}
},
};
let providers = {},
const providers = {},
providerInstance = {};
export const Providers = {
getProvider: (type, config) => {
if (!providerInjection[type]) {
_global.console && console.error("provider: [" + type + "] 未定义");
_global.console && console.error(`provider: [${type}] 未定义`);
}
runConfigFunction(type);
if (!providers[type]) {
@ -355,12 +363,13 @@ export const Providers = {
if (!providerInstance[type] && providers[type].$get) {
providerInstance[type] = new (providers[type].$get())(config);
}
return providerInstance[type];
}
}
},
};
export const Actions = {
runAction: function (type, event, config) {
runAction (type, event, config) {
each(actions[type], (i, act) => {
try {
act(event, config);
@ -369,38 +378,38 @@ export const Actions = {
}
});
},
runGlobalAction: function () {
var args = [].slice.call(arguments);
runGlobalAction () {
const args = [].slice.call(arguments);
each(globalAction, (i, act) => {
try {
act.apply(null, args);
act(...args);
} catch (e) {
_global.console && console.error(e);
}
});
}
}
},
};
let kv = {};
const kv = {};
export function shortcut(xtype, cls) {
if (kv[xtype] != null) {
_global.console && console.error("组件: [" + xtype + "] 已经注册过了");
if (isNotNull(kv[xtype])) {
_global.console && console.error(`组件: [${xtype}] 已经注册过了`);
}
if (cls) {
cls["xtype"] = xtype;
cls.xtype = xtype;
}
kv[xtype] = cls;
}
// 根据配置属性生成widget
const createRealWidget = function (config, context, lazy) {
const cls = isFunction(config.type) ? config.type : kv[config.type];
const createRealWidget = (config, context, lazy) => {
const Cls = isFunction(config.type) ? config.type : kv[config.type];
if (!cls) {
throw new Error("组件: [" + config.type + "] 未定义");
if (!Cls) {
throw new Error(`组件: [${config.type}] 未定义`);
}
let pushed = false;
const widget = new cls();
const widget = new Cls();
widget._context = Widget.context || context;
if (!Widget.context && context) {
pushed = true;
@ -414,6 +423,7 @@ const createRealWidget = function (config, context, lazy) {
widget._lazyConstructor();
// }
pushed && Widget.popContext();
return widget;
};
@ -426,15 +436,15 @@ export function createWidget(item, options, context, lazy) {
options || (options = {});
}
var el, w;
let el, w;
if (item.type || options.type) {
el = extend({}, options, item);
} else if (item.el && (item.el.type || options.type)) {
el = extend({}, options, item.el);
}
let elType;
if (el) {
var elType = (el.type && el.type.xtype) || el.type;
elType = (el.type && el.type.xtype) || el.type;
runConfigFunction(elType);
}
@ -443,7 +453,7 @@ export function createWidget(item, options, context, lazy) {
if (isEmpty(item) && isEmpty(options)) {
return createWidget({
type: "bi.layout"
type: "bi.layout",
});
}
if (isWidget(item)) {
@ -451,7 +461,7 @@ export function createWidget(item, options, context, lazy) {
}
if (el) {
w = BI.Plugin.getWidget(elType, el);
var wType = (w.type && w.type.xtype) || w.type;
const wType = (w.type && w.type.xtype) || w.type;
if (wType === elType) {
if (BI.Plugin.hasObject(elType)) {
if (!w.listeners || isArray(w.listeners)) {
@ -459,7 +469,7 @@ export function createWidget(item, options, context, lazy) {
eventName: BI.Events.MOUNT,
action: () => {
BI.Plugin.getObject(elType, this);
}
},
}]);
} else {
w.listeners[BI.Events.MOUNT] = [
@ -469,8 +479,10 @@ export function createWidget(item, options, context, lazy) {
].concat(w.listeners[BI.Events.MOUNT] || []);
}
}
return createRealWidget(w, context, lazy);
}
return createWidget(w, options, context, lazy);
}
if (isWidget(item.el)) {
@ -485,6 +497,7 @@ export function _lazyCreateWidget (item, options, context) {
export function createElement() {
const widget = createWidget.apply(this, arguments);
return widget.element;
}
@ -504,5 +517,5 @@ export function getResource(type, config) {
if (providerInjection[type]) {
return Providers.getProvider(type, config);
}
throw new Error("未知类型: [" + type + "] 未定义");
throw new Error(`未知类型: [${type}] 未定义`);
}

6
src/core/index.js

@ -22,13 +22,13 @@ export * from "./controller";
export * from "./func";
// 有了后删掉
export const emptyFn = () => { }
export const emptyFn = () => { };
export {
StyleLoaderManager,
ShowListener,
shortcut,
}
shortcut
};
Object.assign(BI, {
...base,

Loading…
Cancel
Save