tab to 2 space
This commit is contained in:
parent
b322858314
commit
bd88ba5662
|
@ -7,7 +7,7 @@ charset = utf-8
|
|||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[{package.json,.*rc,*.yml,*.md}]
|
||||
[{package.json,.*rc,*.yml,*.md,*.js,*.ts}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
}
|
||||
},
|
||||
"rules": {
|
||||
"semi": [1, "never"]
|
||||
"semi": [1, "never"],
|
||||
"indent": ["error", 2]
|
||||
}
|
||||
}
|
||||
|
|
12
README.CN.md
12
README.CN.md
|
@ -35,11 +35,11 @@
|
|||
|
||||
- [一个 HTML 完全上手](#一个-html-完全上手)
|
||||
- [快速入门](#快速入门)
|
||||
- [安装](#安装)
|
||||
- [Hello Element](#hello-element)
|
||||
- [TodoApp](#todoapp)
|
||||
- [Store](#store)
|
||||
- [生命周期](#生命周期)
|
||||
- [安装](#安装)
|
||||
- [Hello Element](#hello-element)
|
||||
- [TodoApp](#todoapp)
|
||||
- [Store](#store)
|
||||
- [生命周期](#生命周期)
|
||||
- [生态](#生态)
|
||||
- [调试工具](#调试工具)
|
||||
- [Omi Mobx](#omi-mobx)
|
||||
|
@ -326,7 +326,7 @@ class TodoApp extends WeElement {
|
|||
id: Date.now()
|
||||
})
|
||||
this.data.text = '';
|
||||
this.update()
|
||||
this.update()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
280
README.md
280
README.md
|
@ -36,12 +36,12 @@ On the left is Omi, the right side is React, and Omi uses Shadow DOM based style
|
|||
- [Why Omi?](#why-omi)
|
||||
- [Add Omi in One Minute](#add-omi-in-one-minute)
|
||||
- [Getting Started](#getting-started)
|
||||
- [Install](#install)
|
||||
- [Hello Element](#hello-element)
|
||||
- [TodoApp](#todoapp)
|
||||
- [Store](#store)
|
||||
- [Summary:](#summary)
|
||||
- [Lifecycle](#lifecycle)
|
||||
- [Install](#install)
|
||||
- [Hello Element](#hello-element)
|
||||
- [TodoApp](#todoapp)
|
||||
- [Store](#store)
|
||||
- [Summary:](#summary)
|
||||
- [Lifecycle](#lifecycle)
|
||||
- [Component Ecosystem](#component-ecosystem)
|
||||
- [Debugging](#debugging)
|
||||
- [Omi Mobx](#omi-mobx)
|
||||
|
@ -107,7 +107,7 @@ You can also use `like-button` tag directly in HTML:
|
|||
|
||||
```jsx
|
||||
<body>
|
||||
<like-button />
|
||||
<like-button />
|
||||
</body>
|
||||
```
|
||||
|
||||
|
@ -158,28 +158,28 @@ import { tag, WeElement, render } from "omi";
|
|||
|
||||
@tag("hello-element")
|
||||
class HelloElement extends WeElement {
|
||||
onClick = evt => {
|
||||
// trigger CustomEvent
|
||||
this.fire("abc", { name: "dntzhang", age: 12 });
|
||||
evt.stopPropagation();
|
||||
};
|
||||
onClick = evt => {
|
||||
// trigger CustomEvent
|
||||
this.fire("abc", { name: "dntzhang", age: 12 });
|
||||
evt.stopPropagation();
|
||||
};
|
||||
|
||||
css() {
|
||||
return `
|
||||
css() {
|
||||
return `
|
||||
div {
|
||||
color: red;
|
||||
cursor: pointer;
|
||||
}`;
|
||||
}
|
||||
}
|
||||
|
||||
render(props) {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
Hello {props.msg} {props.propFromParent}
|
||||
<div>Click Me!</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render(props) {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
Hello {props.msg} {props.propFromParent}
|
||||
<div>Click Me!</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -191,36 +191,36 @@ import "./hello-element";
|
|||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
static get data() {
|
||||
return { abc: "", passToChild: "" };
|
||||
}
|
||||
static get data() {
|
||||
return { abc: "", passToChild: "" };
|
||||
}
|
||||
|
||||
// bind CustomEvent
|
||||
onAbc = evt => {
|
||||
// get evt data by evt.detail
|
||||
this.data.abc = ` by ${evt.detail.name}`;
|
||||
this.update();
|
||||
};
|
||||
// bind CustomEvent
|
||||
onAbc = evt => {
|
||||
// get evt data by evt.detail
|
||||
this.data.abc = ` by ${evt.detail.name}`;
|
||||
this.update();
|
||||
};
|
||||
|
||||
css() {
|
||||
return `
|
||||
css() {
|
||||
return `
|
||||
div {
|
||||
color: green;
|
||||
}`;
|
||||
}
|
||||
}
|
||||
|
||||
render(props, data) {
|
||||
return (
|
||||
<div>
|
||||
Hello {props.name} {data.abc}
|
||||
<hello-element
|
||||
onAbc={this.onAbc}
|
||||
prop-from-parent={data.passToChild}
|
||||
msg="WeElement"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render(props, data) {
|
||||
return (
|
||||
<div>
|
||||
Hello {props.name} {data.abc}
|
||||
<hello-element
|
||||
onAbc={this.onAbc}
|
||||
prop-from-parent={data.passToChild}
|
||||
msg="WeElement"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app name="Omi v4.0" />, "body");
|
||||
|
@ -230,7 +230,7 @@ Tell Babel to transform JSX into `Omi.h()` call:
|
|||
|
||||
```json
|
||||
{
|
||||
"presets": ["env", "omi"]
|
||||
"presets": ["env", "omi"]
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -282,57 +282,57 @@ import { tag, WeElement, render } from "omi";
|
|||
|
||||
@tag("todo-list")
|
||||
class TodoList extends WeElement {
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
render(props) {
|
||||
return (
|
||||
<ul>
|
||||
{props.items.map(item => (
|
||||
<li key={item.id}>{item.text}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@tag("todo-app")
|
||||
class TodoApp extends WeElement {
|
||||
static get data() {
|
||||
return { items: [], text: "" };
|
||||
}
|
||||
static get data() {
|
||||
return { items: [], text: "" };
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO</h3>
|
||||
<todo-list items={this.data.items} />
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input
|
||||
id="new-todo"
|
||||
onChange={this.handleChange}
|
||||
value={this.data.text}
|
||||
/>
|
||||
<button>Add #{this.data.items.length + 1}</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<h3>TODO</h3>
|
||||
<todo-list items={this.data.items} />
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<input
|
||||
id="new-todo"
|
||||
onChange={this.handleChange}
|
||||
value={this.data.text}
|
||||
/>
|
||||
<button>Add #{this.data.items.length + 1}</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
handleChange = e => {
|
||||
this.data.text = e.target.value;
|
||||
};
|
||||
handleChange = e => {
|
||||
this.data.text = e.target.value;
|
||||
};
|
||||
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
this.update();
|
||||
};
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
this.update();
|
||||
};
|
||||
}
|
||||
|
||||
render(<todo-app />, "body");
|
||||
|
@ -344,30 +344,30 @@ Say goodbye to `this.update` method when using store system! It will automatical
|
|||
|
||||
```js
|
||||
export default {
|
||||
data: {
|
||||
items: [],
|
||||
text: "",
|
||||
firstName: "dnt",
|
||||
lastName: "zhang",
|
||||
fullName: function() {
|
||||
return this.firstName + this.lastName;
|
||||
},
|
||||
globalPropTest: "abc", // Change it will refresh all elements without changing the components and page declaring data dependency.
|
||||
ccc: { ddd: 1 } // Change it will refresh all elements without changing the components and page declaring data dependency.
|
||||
},
|
||||
globalData: ["globalPropTest", "ccc.ddd"],
|
||||
add: function() {
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
}
|
||||
// Default value is false, set to true will update all instances when data changing.
|
||||
// updateAll: true
|
||||
data: {
|
||||
items: [],
|
||||
text: "",
|
||||
firstName: "dnt",
|
||||
lastName: "zhang",
|
||||
fullName: function() {
|
||||
return this.firstName + this.lastName;
|
||||
},
|
||||
globalPropTest: "abc", // Change it will refresh all elements without changing the components and page declaring data dependency.
|
||||
ccc: { ddd: 1 } // Change it will refresh all elements without changing the components and page declaring data dependency.
|
||||
},
|
||||
globalData: ["globalPropTest", "ccc.ddd"],
|
||||
add: function() {
|
||||
if (!this.data.text.trim().length) {
|
||||
return;
|
||||
}
|
||||
this.data.items.push({
|
||||
text: this.data.text,
|
||||
id: Date.now()
|
||||
});
|
||||
this.data.text = "";
|
||||
}
|
||||
// Default value is false, set to true will update all instances when data changing.
|
||||
// updateAll: true
|
||||
};
|
||||
```
|
||||
|
||||
|
@ -375,19 +375,19 @@ Custom Element requires declaring dependent data so that Omi stores compute the
|
|||
|
||||
```js
|
||||
class TodoApp extends WeElement {
|
||||
// If you use store, the data is only used to declare dependencies.
|
||||
static get data() {
|
||||
return { items: [], text: "" };
|
||||
}
|
||||
// ...
|
||||
handleChange = e => {
|
||||
this.store.data.text = e.target.value;
|
||||
};
|
||||
// If you use store, the data is only used to declare dependencies.
|
||||
static get data() {
|
||||
return { items: [], text: "" };
|
||||
}
|
||||
// ...
|
||||
handleChange = e => {
|
||||
this.store.data.text = e.target.value;
|
||||
};
|
||||
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
this.store.add();
|
||||
};
|
||||
handleSubmit = e => {
|
||||
e.preventDefault();
|
||||
this.store.add();
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -451,21 +451,21 @@ import { observe } from "omi-mobx";
|
|||
@observe
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
install() {
|
||||
this.data.name = "omi";
|
||||
}
|
||||
install() {
|
||||
this.data.name = "omi";
|
||||
}
|
||||
|
||||
onClick = () => {
|
||||
this.data.name = "Omi V4.0";
|
||||
};
|
||||
onClick = () => {
|
||||
this.data.name = "Omi V4.0";
|
||||
};
|
||||
|
||||
render(props, data) {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
<h1>Welcome to {data.name}</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
render(props, data) {
|
||||
return (
|
||||
<div onClick={this.onClick}>
|
||||
<h1>Welcome to {data.name}</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
## Omi 文档
|
||||
|
||||
- [Omi 文档](#omi-文档)
|
||||
- [My First Element](#my-first-element)
|
||||
- [Props](#props)
|
||||
- [Event](#event)
|
||||
- [Custom Event](#custom-event)
|
||||
- [CSS](#css)
|
||||
- [Ref](#ref)
|
||||
- [Store](#store)
|
||||
- [Slot](#slot)
|
||||
- [SSR](#ssr)
|
||||
- [My First Element](#my-first-element)
|
||||
- [Props](#props)
|
||||
- [Event](#event)
|
||||
- [Custom Event](#custom-event)
|
||||
- [CSS](#css)
|
||||
- [Ref](#ref)
|
||||
- [Store](#store)
|
||||
- [Slot](#slot)
|
||||
- [SSR](#ssr)
|
||||
|
||||
### My First Element
|
||||
|
||||
|
|
|
@ -3,15 +3,15 @@ English | [简体中文](./main-concepts.cn.md)
|
|||
## Omi Docs
|
||||
|
||||
- [Omi Docs](#omi-docs)
|
||||
- [My First Element](#my-first-element)
|
||||
- [Props](#props)
|
||||
- [Event](#event)
|
||||
- [Custom Event](#custom-event)
|
||||
- [CSS](#css)
|
||||
- [Ref](#ref)
|
||||
- [Store](#store)
|
||||
- [Slot](#slot)
|
||||
- [SSR](#ssr)
|
||||
- [My First Element](#my-first-element)
|
||||
- [Props](#props)
|
||||
- [Event](#event)
|
||||
- [Custom Event](#custom-event)
|
||||
- [CSS](#css)
|
||||
- [Ref](#ref)
|
||||
- [Store](#store)
|
||||
- [Slot](#slot)
|
||||
- [SSR](#ssr)
|
||||
|
||||
### My First Element
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
| Package | description |
|
||||
| ------ | ------ |
|
||||
| omi | Omi master package |
|
||||
| omi-cli | Omi command line tool |
|
||||
| omi | Omi master package |
|
||||
| omi-cli | Omi command line tool |
|
||||
| omi-element-ui | Omi version of element-ui |
|
||||
| omi-ie11 | Omi version compatible with ie11 |
|
||||
| omi-mobx | Adapter for mobx in omi |
|
||||
|
|
|
@ -9,44 +9,44 @@
|
|||
|
||||
| Element | Owner |Usage |
|
||||
| ------ | ------ |------ |
|
||||
| ~~el-button~~ | dntzhang |[Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/button/index.js#L19-L118) |
|
||||
| ~~el-icon~~ | dntzhang | |
|
||||
| ~~el-radio~~| dntzhang | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/radio/index.js#L19-L34)|
|
||||
| el-checkbox| @zhengbao | |
|
||||
| el-input| @zhengbao | |
|
||||
| ~~el-input-number~~| dntzhang | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/input-number/index.js#L18-L22) |
|
||||
| el-select| |
|
||||
| el-cascader| |
|
||||
| el-switch| |
|
||||
| el-slider| |
|
||||
| el-time-select| |
|
||||
| el-date-picker| |
|
||||
| el-upload| |
|
||||
| el-rate| @wadellg |
|
||||
| el-color-picker| |
|
||||
| el-transfer| |
|
||||
| el-form| |
|
||||
| el-table| dntzhang |
|
||||
| ~~el-tag~~| @1921622004 | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/tag/index.js)|
|
||||
| ~~el-progress~~| dntzhang |[Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/progress/index.js#L18-L42)|
|
||||
| el-tree| |
|
||||
| el-pagination| dntzhang |
|
||||
| el-badge| |
|
||||
| ~~el-alert~~| @zhengbao |
|
||||
| el-menu| @zhengbao |
|
||||
| el-tabs| @zhengbao |
|
||||
| ~~el-breadcrumb~~| @wadellg | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/breadcrumb/index.js)|
|
||||
| el-dropdown| |
|
||||
| el-steps| @daizhan |
|
||||
| el-dialog| |
|
||||
| el-tooltip| |
|
||||
| el-popover| |
|
||||
| el-card| @wadellg |
|
||||
| el-carousel| |
|
||||
| el-collapse| |
|
||||
| el-touch| dntzhang |
|
||||
| el-finger| dntzhang|
|
||||
| notice| | |
|
||||
| ~~el-button~~ | dntzhang |[Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/button/index.js#L19-L118) |
|
||||
| ~~el-icon~~ | dntzhang | |
|
||||
| ~~el-radio~~| dntzhang | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/radio/index.js#L19-L34)|
|
||||
| el-checkbox| @zhengbao | |
|
||||
| el-input| @zhengbao | |
|
||||
| ~~el-input-number~~| dntzhang | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/input-number/index.js#L18-L22) |
|
||||
| el-select| |
|
||||
| el-cascader| |
|
||||
| el-switch| |
|
||||
| el-slider| |
|
||||
| el-time-select| |
|
||||
| el-date-picker| |
|
||||
| el-upload| |
|
||||
| el-rate| @wadellg |
|
||||
| el-color-picker| |
|
||||
| el-transfer| |
|
||||
| el-form| |
|
||||
| el-table| dntzhang |
|
||||
| ~~el-tag~~| @1921622004 | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/tag/index.js)|
|
||||
| ~~el-progress~~| dntzhang |[Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/progress/index.js#L18-L42)|
|
||||
| el-tree| |
|
||||
| el-pagination| dntzhang |
|
||||
| el-badge| |
|
||||
| ~~el-alert~~| @zhengbao |
|
||||
| el-menu| @zhengbao |
|
||||
| el-tabs| @zhengbao |
|
||||
| ~~el-breadcrumb~~| @wadellg | [Usage](https://github.com/Tencent/omi/blob/master/packages/omi-element-ui/src/elements/breadcrumb/index.js)|
|
||||
| el-dropdown| |
|
||||
| el-steps| @daizhan |
|
||||
| el-dialog| |
|
||||
| el-tooltip| |
|
||||
| el-popover| |
|
||||
| el-card| @wadellg |
|
||||
| el-carousel| |
|
||||
| el-collapse| |
|
||||
| el-touch| dntzhang |
|
||||
| el-finger| dntzhang|
|
||||
| notice| | |
|
||||
|
||||
## Develop
|
||||
|
||||
|
|
|
@ -18,17 +18,17 @@ import "omi-tap"
|
|||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
onTap = () => {
|
||||
console.log('tap')
|
||||
}
|
||||
onTap = () => {
|
||||
console.log('tap')
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<omi-tap onTap={this.onTap} >
|
||||
<div>Tap Me!</div>
|
||||
</omi-tap>
|
||||
)
|
||||
}
|
||||
render() {
|
||||
return (
|
||||
<omi-tap onTap={this.onTap} >
|
||||
<div>Tap Me!</div>
|
||||
</omi-tap>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app />, "body");
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# omi-transform
|
||||
|
||||
Made css3 transform super easy.
|
||||
Made css3 transform super easy.
|
||||
|
||||

|
||||
|
||||
|
@ -33,50 +33,50 @@ import "omi-transform";
|
|||
|
||||
@tag("my-app")
|
||||
class MyApp extends WeElement {
|
||||
install() {
|
||||
this.data.rotateZ = 30
|
||||
this.linkRef = (e) => {
|
||||
this.animDiv = e
|
||||
}
|
||||
}
|
||||
install() {
|
||||
this.data.rotateZ = 30
|
||||
this.linkRef = (e) => {
|
||||
this.animDiv = e
|
||||
}
|
||||
}
|
||||
|
||||
css() {
|
||||
return `
|
||||
css() {
|
||||
return `
|
||||
div{
|
||||
color: red;
|
||||
cursor: pointer;
|
||||
width:150px;
|
||||
height:150px;
|
||||
line-height:150px;
|
||||
text-align: center;
|
||||
border: 1px solid green;
|
||||
cursor: pointer;
|
||||
width:150px;
|
||||
height:150px;
|
||||
line-height:150px;
|
||||
text-align: center;
|
||||
border: 1px solid green;
|
||||
|
||||
}`;
|
||||
}
|
||||
}
|
||||
|
||||
installed() {
|
||||
setInterval(() => {
|
||||
//slow
|
||||
// this.data.rotateZ += 2
|
||||
// this.update()
|
||||
installed() {
|
||||
setInterval(() => {
|
||||
//slow
|
||||
// this.data.rotateZ += 2
|
||||
// this.update()
|
||||
|
||||
//fast
|
||||
this.animDiv.rotateZ += 2
|
||||
//sync for update call of any scenario
|
||||
this.data.rotateZ = this.animDiv.rotateZ
|
||||
}, 16)
|
||||
//fast
|
||||
this.animDiv.rotateZ += 2
|
||||
//sync for update call of any scenario
|
||||
this.data.rotateZ = this.animDiv.rotateZ
|
||||
}, 16)
|
||||
|
||||
|
||||
}
|
||||
render(props, data) {
|
||||
return (
|
||||
<css3-transform rotateZ={data.rotateZ} translateX={0} perspective={0} >
|
||||
<div ref={this.linkRef}>
|
||||
omi-transform
|
||||
</div>
|
||||
</css3-transform>
|
||||
)
|
||||
}
|
||||
}
|
||||
render(props, data) {
|
||||
return (
|
||||
<css3-transform rotateZ={data.rotateZ} translateX={0} perspective={0} >
|
||||
<div ref={this.linkRef}>
|
||||
omi-transform
|
||||
</div>
|
||||
</css3-transform>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
render(<my-app />, "body");
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
}
|
||||
},
|
||||
"rules": {
|
||||
"semi": 2
|
||||
"semi": 2,
|
||||
"indent": ["error", 2]
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue