oipage 1.6.0 → 1.7.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/.github/FUNDING.yml +11 -11
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +144 -137
  4. package/LICENSE +20 -20
  5. package/README.md +95 -95
  6. package/bin/WebSocket/decodeWsFrame.js +43 -43
  7. package/bin/WebSocket/encodeWsFrame.js +28 -28
  8. package/bin/WebSocket/headersToJSON.js +26 -26
  9. package/bin/WebSocket/index.js +80 -80
  10. package/bin/data/mineTypes.json +104 -104
  11. package/bin/disk.js +42 -42
  12. package/bin/help.js +43 -43
  13. package/bin/intercept.js +15 -15
  14. package/bin/network.js +21 -21
  15. package/bin/run +115 -115
  16. package/bin/serve.d.ts +55 -55
  17. package/bin/serve.js +158 -158
  18. package/bin/template/404.html +186 -186
  19. package/bin/tools/deleteEmptyFolder.js +23 -23
  20. package/bin/tools/format.js +75 -75
  21. package/bin/tools/network.js +42 -42
  22. package/bin/tools/resolve404.js +83 -83
  23. package/bin/tools/resolveImport.js +88 -88
  24. package/bin/website-htmls/components/ui-select-file/index.html +7 -7
  25. package/bin/website-htmls/components/ui-select-file/index.js +37 -37
  26. package/bin/website-htmls/components/ui-select-file/index.scss +44 -44
  27. package/bin/website-htmls/dialogs/imageSize/index.html +54 -54
  28. package/bin/website-htmls/dialogs/imageSize/index.js +53 -53
  29. package/bin/website-htmls/dialogs/imageSize/index.scss +138 -138
  30. package/bin/website-htmls/dialogs/index.js +52 -52
  31. package/bin/website-htmls/images/addFile.svg +1 -1
  32. package/bin/website-htmls/images/img-to-pdf.svg +1 -1
  33. package/bin/website-htmls/index.html +17 -17
  34. package/bin/website-htmls/main.js +13 -13
  35. package/bin/website-htmls/pages/App/index.html +6 -6
  36. package/bin/website-htmls/pages/App/index.js +22 -22
  37. package/bin/website-htmls/pages/App/index.scss +43 -43
  38. package/bin/website-htmls/pages/appStore/index.html +24 -24
  39. package/bin/website-htmls/pages/appStore/index.js +19 -19
  40. package/bin/website-htmls/pages/appStore/index.scss +41 -41
  41. package/bin/website-htmls/pages/chart/index.html +8 -8
  42. package/bin/website-htmls/pages/chart/index.js +72 -72
  43. package/bin/website-htmls/pages/chart/index.scss +72 -72
  44. package/bin/website-htmls/pages/image-editor/index.html +27 -27
  45. package/bin/website-htmls/pages/image-editor/index.js +106 -106
  46. package/bin/website-htmls/pages/image-editor/index.scss +45 -45
  47. package/bin/website-htmls/pages/img-to-pdf/index.html +3 -3
  48. package/bin/website-htmls/pages/img-to-pdf/index.js +44 -44
  49. package/bin/website-htmls/pages/img-to-pdf/index.scss +4 -4
  50. package/bin/website-htmls/router.config.js +19 -19
  51. package/bin/website-htmls/styles/normalize.css +94 -94
  52. package/bin/website-plugins/intercept/chart.js +33 -33
  53. package/bin/website-plugins/intercept/head.js +8 -8
  54. package/bin/website-plugins/intercept/index.js +8 -8
  55. package/bin/website-plugins/intercept/oipage-vislite-intercept.js +33 -33
  56. package/bin/website-plugins/intercept/oipage-zipaper-intercept.js +39 -39
  57. package/bin/website-plugins/loader/index.js +11 -11
  58. package/bin/website-plugins/loader/oipage-html-loader.js +7 -7
  59. package/bin/website-plugins/loader/oipage-scss-loader.js +149 -149
  60. package/nodejs/animation/index.d.ts +19 -19
  61. package/nodejs/animation/index.js +104 -104
  62. package/nodejs/cmdlog/index.d.ts +20 -20
  63. package/nodejs/cmdlog/index.js +75 -75
  64. package/nodejs/disk/index.d.ts +47 -47
  65. package/nodejs/disk/index.js +165 -165
  66. package/nodejs/format/index.d.ts +29 -29
  67. package/nodejs/format/index.js +107 -107
  68. package/nodejs/json/index.d.ts +9 -9
  69. package/nodejs/json/index.js +206 -206
  70. package/nodejs/logform/index.d.ts +18 -18
  71. package/nodejs/logform/index.js +94 -94
  72. package/nodejs/reader/index.d.ts +32 -32
  73. package/nodejs/reader/index.js +20 -20
  74. package/nodejs/remote/index.d.ts +32 -0
  75. package/nodejs/remote/index.js +71 -0
  76. package/nodejs/throttle/index.d.ts +30 -30
  77. package/nodejs/throttle/index.js +50 -50
  78. package/package.json +43 -43
  79. package/web/XMLHttpRequest/index.d.ts +17 -17
  80. package/web/XMLHttpRequest/index.js +60 -60
  81. package/web/animation/index.d.ts +19 -19
  82. package/web/animation/index.js +104 -104
  83. package/web/format/index.d.ts +29 -29
  84. package/web/format/index.js +107 -107
  85. package/web/json/index.d.ts +9 -9
  86. package/web/json/index.js +206 -206
  87. package/web/onReady/index.d.ts +7 -7
  88. package/web/onReady/index.js +8 -8
  89. package/web/performChunk/index.d.ts +4 -4
  90. package/web/performChunk/index.js +19 -19
  91. package/web/reader/index.d.ts +32 -32
  92. package/web/reader/index.js +20 -20
  93. package/web/style/index.d.ts +21 -21
  94. package/web/style/index.js +19 -19
  95. package/web/throttle/index.d.ts +30 -30
  96. package/web/throttle/index.js +50 -50
@@ -1,212 +1,212 @@
1
1
  /*!
2
- * json of OIPage v1.6.0
2
+ * json of OIPage v1.7.0-alpha.1
3
3
  * git+https://github.com/oi-contrib/OIPage.git
4
4
  */
5
5
  const {reader} = require("../reader/index.js");
6
- let calcValue = function (word) {
7
- if (word.type != 'string' && word.type != 'object') {
8
-
9
- // 数字
10
- if (/[+-]{0,1}\d{1,}\.{0,1}\d{0,}/.test(word.value)) {
11
- return +word.value;
12
- }
13
-
14
- // undefined
15
- else if (word.value == 'undefined') {
16
- return undefined;
17
- }
18
-
19
- // null
20
- else if (word.value == 'null') {
21
- return null;
22
- }
23
-
24
- // false
25
- else if (word.value == 'false') {
26
- return false;
27
- }
28
-
29
- // true
30
- else if (word.value == 'true') {
31
- return true;
32
- }
33
-
34
- }
35
-
36
- return word.value;
37
- };
38
-
39
- let toValue = function (wordArray) {
40
- let value;
41
-
42
- // 是json
43
- if (wordArray[0].value == '{') {
44
- value = {};
45
- for (let i = 3; i < wordArray.length; i += 4) {
46
- value[wordArray[i - 2].value] = calcValue(wordArray[i]);
47
- }
48
- }
49
-
50
- // 数组
51
- else {
52
- value = [];
53
- for (let i = 2; i < wordArray.length; i += 2) {
54
- value.push(calcValue(wordArray[i - 1]));
55
- }
56
- }
57
-
58
- return {
59
- type: "object",
60
- value: value
61
- };
62
- };
63
-
64
- let analyseWord = function (express) {
65
- // 剔除开头和结尾的空白
66
- express = express.trim();
67
-
68
- // 获取字符串分析对象
69
- let readerHandler = reader(express);
70
-
71
- let wordArray = [];
72
- let tempWord = "";
73
- readerHandler.readNext();
74
-
75
- // 定义一个追加普通串的方法
76
- let pushNormal = function () {
77
- tempWord = tempWord.trim();
78
- if (tempWord != '') {
79
- wordArray.push({
80
- type: /\d%/.test(tempWord) ? "string" : "normal",
81
- value: tempWord
82
- });
83
- }
84
- tempWord = "";
85
- };
86
-
87
- while (true) {
88
-
89
- if (readerHandler.index >= express.length) break;
90
-
91
- // 单行注释
92
- if (readerHandler.getNextN(2) == '//') {
93
- while (!/\n/.test(readerHandler.readNext()) && readerHandler.index < express.length);
94
- }
95
-
96
- // 多行注释
97
- else if (readerHandler.getNextN(2) == '/*') {
98
- while (readerHandler.getNextN(2) != '*/') {
99
- if (readerHandler.index >= express.length) {
100
- throw new Error("Multiline comment not closed correctly : " + express + "\nstep='analyseWord-searchEndComment'");
101
- }
102
- readerHandler.readNext();
103
- }
104
- readerHandler.readNext();
105
- readerHandler.readNext();
106
- }
107
-
108
- // 如果是边界符号
109
- else if (['{', '}', ',', '[', ']', ':'].indexOf(readerHandler.value) > -1) {
110
- pushNormal();
111
-
112
- wordArray.push({
113
- type: "insign",
114
- value: readerHandler.value
115
- });
116
- readerHandler.readNext();
117
- }
118
-
119
- // 如果遇到字符串,应该是一个独立的单词
120
- else if (['"', "'"].indexOf(readerHandler.value) > -1) {
121
-
122
- let tempStrWord = "";
123
- while (['"', "'"].indexOf(readerHandler.readNext()) < 0) {
124
- if (readerHandler.index >= express.length) {
125
- throw new Error("The string is not closed correctly : " + express + "\nstep='analyseWord-searchString',currentStrWord=" + tempStrWord);
126
- }
127
- tempStrWord += readerHandler.value;
128
- }
129
- readerHandler.readNext();
130
- wordArray.push({
131
- type: "string",
132
- value: tempStrWord
133
- });
134
-
135
- } else {
136
- tempWord += readerHandler.value;
137
- readerHandler.readNext();
138
- }
139
-
140
- }
141
-
142
- return wordArray;
143
- };
144
-
145
- function strToJson(express) {
146
- if (typeof express === "string") {
147
-
148
- // 先分析出来单词
149
- let wordArray = analyseWord(express);
150
-
151
- /**
152
- * 思路:
153
- * 从后往前找,找到第一个需要归结的,直接归结,
154
- * 归结完毕以后,继续,直到找到开头,说明归结完毕,
155
- * 这样设计的好处是:
156
- * 从后往前找,一定是叶子,这就消除了递归。
157
- */
158
- let i = wordArray.length - 1, j;
159
-
160
- // 只要单词数组归结完毕
161
- while (wordArray.length > 1) {
162
-
163
- // 从后往前找第一个需要归结的子对象
164
- while (i >= 0 && (wordArray[i].type != 'insign' || ['{', '['].indexOf(wordArray[i].value) < 0)) {
165
- i = i - 1;
166
- }
167
-
168
- if (i < 0) {
169
- // 如果到开头都没有遇到,缺少开始符号
170
- throw new Error("Illegal express : " + express + "\nstep='toOne-searchBeginIndex',wordArray=" + wordArray);
171
- }
172
-
173
- // 然后合并
174
- j = i + 1;
175
- let subWordArray = [wordArray[i]];
176
- while (j < wordArray.length && (wordArray[j].type != 'insign' || wordArray[j].value != {
177
- "{": "}",
178
- "[": "]"
179
- }[wordArray[i].value])) {
180
- subWordArray.push(wordArray[j]);
181
- j = j + 1;
182
- }
183
-
184
- if (j >= wordArray.length) {
185
- // 如果到结尾都没有需要应该闭合的符号,缺少闭合符号
186
- throw new Error("Illegal express : " + express + "\nstep='toOne-searchEndIndex',wordArray=" + wordArray);
187
- } else {
188
-
189
- // 结尾追加进去
190
- subWordArray.push(wordArray[j]);
191
-
192
- // 归结
193
- wordArray[i] = toValue(subWordArray);
194
-
195
- // 调整
196
- wordArray.splice(i + 1, j - i);
197
- }
198
-
199
-
200
- }
201
-
202
- // 返回计算结果
203
- return wordArray[0].value;
204
-
205
- } else {
206
-
207
- throw new Error('The data passed is not a string.');
208
-
209
- }
210
-
6
+ let calcValue = function (word) {
7
+ if (word.type != 'string' && word.type != 'object') {
8
+
9
+ // 数字
10
+ if (/[+-]{0,1}\d{1,}\.{0,1}\d{0,}/.test(word.value)) {
11
+ return +word.value;
12
+ }
13
+
14
+ // undefined
15
+ else if (word.value == 'undefined') {
16
+ return undefined;
17
+ }
18
+
19
+ // null
20
+ else if (word.value == 'null') {
21
+ return null;
22
+ }
23
+
24
+ // false
25
+ else if (word.value == 'false') {
26
+ return false;
27
+ }
28
+
29
+ // true
30
+ else if (word.value == 'true') {
31
+ return true;
32
+ }
33
+
34
+ }
35
+
36
+ return word.value;
37
+ };
38
+
39
+ let toValue = function (wordArray) {
40
+ let value;
41
+
42
+ // 是json
43
+ if (wordArray[0].value == '{') {
44
+ value = {};
45
+ for (let i = 3; i < wordArray.length; i += 4) {
46
+ value[wordArray[i - 2].value] = calcValue(wordArray[i]);
47
+ }
48
+ }
49
+
50
+ // 数组
51
+ else {
52
+ value = [];
53
+ for (let i = 2; i < wordArray.length; i += 2) {
54
+ value.push(calcValue(wordArray[i - 1]));
55
+ }
56
+ }
57
+
58
+ return {
59
+ type: "object",
60
+ value: value
61
+ };
62
+ };
63
+
64
+ let analyseWord = function (express) {
65
+ // 剔除开头和结尾的空白
66
+ express = express.trim();
67
+
68
+ // 获取字符串分析对象
69
+ let readerHandler = reader(express);
70
+
71
+ let wordArray = [];
72
+ let tempWord = "";
73
+ readerHandler.readNext();
74
+
75
+ // 定义一个追加普通串的方法
76
+ let pushNormal = function () {
77
+ tempWord = tempWord.trim();
78
+ if (tempWord != '') {
79
+ wordArray.push({
80
+ type: /\d%/.test(tempWord) ? "string" : "normal",
81
+ value: tempWord
82
+ });
83
+ }
84
+ tempWord = "";
85
+ };
86
+
87
+ while (true) {
88
+
89
+ if (readerHandler.index >= express.length) break;
90
+
91
+ // 单行注释
92
+ if (readerHandler.getNextN(2) == '//') {
93
+ while (!/\n/.test(readerHandler.readNext()) && readerHandler.index < express.length);
94
+ }
95
+
96
+ // 多行注释
97
+ else if (readerHandler.getNextN(2) == '/*') {
98
+ while (readerHandler.getNextN(2) != '*/') {
99
+ if (readerHandler.index >= express.length) {
100
+ throw new Error("Multiline comment not closed correctly : " + express + "\nstep='analyseWord-searchEndComment'");
101
+ }
102
+ readerHandler.readNext();
103
+ }
104
+ readerHandler.readNext();
105
+ readerHandler.readNext();
106
+ }
107
+
108
+ // 如果是边界符号
109
+ else if (['{', '}', ',', '[', ']', ':'].indexOf(readerHandler.value) > -1) {
110
+ pushNormal();
111
+
112
+ wordArray.push({
113
+ type: "insign",
114
+ value: readerHandler.value
115
+ });
116
+ readerHandler.readNext();
117
+ }
118
+
119
+ // 如果遇到字符串,应该是一个独立的单词
120
+ else if (['"', "'"].indexOf(readerHandler.value) > -1) {
121
+
122
+ let tempStrWord = "";
123
+ while (['"', "'"].indexOf(readerHandler.readNext()) < 0) {
124
+ if (readerHandler.index >= express.length) {
125
+ throw new Error("The string is not closed correctly : " + express + "\nstep='analyseWord-searchString',currentStrWord=" + tempStrWord);
126
+ }
127
+ tempStrWord += readerHandler.value;
128
+ }
129
+ readerHandler.readNext();
130
+ wordArray.push({
131
+ type: "string",
132
+ value: tempStrWord
133
+ });
134
+
135
+ } else {
136
+ tempWord += readerHandler.value;
137
+ readerHandler.readNext();
138
+ }
139
+
140
+ }
141
+
142
+ return wordArray;
143
+ };
144
+
145
+ function strToJson(express) {
146
+ if (typeof express === "string") {
147
+
148
+ // 先分析出来单词
149
+ let wordArray = analyseWord(express);
150
+
151
+ /**
152
+ * 思路:
153
+ * 从后往前找,找到第一个需要归结的,直接归结,
154
+ * 归结完毕以后,继续,直到找到开头,说明归结完毕,
155
+ * 这样设计的好处是:
156
+ * 从后往前找,一定是叶子,这就消除了递归。
157
+ */
158
+ let i = wordArray.length - 1, j;
159
+
160
+ // 只要单词数组归结完毕
161
+ while (wordArray.length > 1) {
162
+
163
+ // 从后往前找第一个需要归结的子对象
164
+ while (i >= 0 && (wordArray[i].type != 'insign' || ['{', '['].indexOf(wordArray[i].value) < 0)) {
165
+ i = i - 1;
166
+ }
167
+
168
+ if (i < 0) {
169
+ // 如果到开头都没有遇到,缺少开始符号
170
+ throw new Error("Illegal express : " + express + "\nstep='toOne-searchBeginIndex',wordArray=" + wordArray);
171
+ }
172
+
173
+ // 然后合并
174
+ j = i + 1;
175
+ let subWordArray = [wordArray[i]];
176
+ while (j < wordArray.length && (wordArray[j].type != 'insign' || wordArray[j].value != {
177
+ "{": "}",
178
+ "[": "]"
179
+ }[wordArray[i].value])) {
180
+ subWordArray.push(wordArray[j]);
181
+ j = j + 1;
182
+ }
183
+
184
+ if (j >= wordArray.length) {
185
+ // 如果到结尾都没有需要应该闭合的符号,缺少闭合符号
186
+ throw new Error("Illegal express : " + express + "\nstep='toOne-searchEndIndex',wordArray=" + wordArray);
187
+ } else {
188
+
189
+ // 结尾追加进去
190
+ subWordArray.push(wordArray[j]);
191
+
192
+ // 归结
193
+ wordArray[i] = toValue(subWordArray);
194
+
195
+ // 调整
196
+ wordArray.splice(i + 1, j - i);
197
+ }
198
+
199
+
200
+ }
201
+
202
+ // 返回计算结果
203
+ return wordArray[0].value;
204
+
205
+ } else {
206
+
207
+ throw new Error('The data passed is not a string.');
208
+
209
+ }
210
+
211
211
  }
212
212
  exports.strToJson = strToJson;
@@ -1,19 +1,19 @@
1
- export interface inputType {
2
- type: string
3
- label: string
4
- }
5
-
6
- export interface selectType extends inputType {
7
- value: Array<string>
8
- }
9
-
10
- /**
11
- * 表单输入
12
- * @param form 表单内容
13
- * @returns 返回一个结果数组
14
- */
15
- export interface logformType {
16
- (config: Array<inputType | selectType>): Promise<Array<string | number>>
17
- }
18
-
1
+ export interface inputType {
2
+ type: string
3
+ label: string
4
+ }
5
+
6
+ export interface selectType extends inputType {
7
+ value: Array<string>
8
+ }
9
+
10
+ /**
11
+ * 表单输入
12
+ * @param form 表单内容
13
+ * @returns 返回一个结果数组
14
+ */
15
+ export interface logformType {
16
+ (config: Array<inputType | selectType>): Promise<Array<string | number>>
17
+ }
18
+
19
19
  export let deeplog: logformType
@@ -1,100 +1,100 @@
1
1
  /*!
2
- * logform of OIPage v1.6.0
2
+ * logform of OIPage v1.7.0-alpha.1
3
3
  * git+https://github.com/oi-contrib/OIPage.git
4
4
  */
5
5
  const {linelog} = require("../cmdlog/index.js");
6
- let getTitle = function (title) {
7
- return "➤ " + title;
8
- };
9
-
10
- let closeForm = function (rl) {
11
- process.removeAllListeners("keypress");
12
- rl.close();
13
- };
14
-
15
- let selectView = (title, list, index) => {
16
- let txtArray = [];
17
- for (let i = 0; i < list.length; i++) {
18
- txtArray.push(" " + (i == index ? "●" : "○") + " " + list[i]);
19
- }
20
-
21
- linelog(`${title}\n${txtArray.join("\n")}\n`);
22
- };
23
-
24
- function logform(config) {
25
- const rl = require("readline").createInterface({
26
- input: process.stdin,
27
- output: process.stdout
28
- });
29
-
30
- return new Promise(function (resolve, reject) {
31
- let result = [], keyback = () => { };
32
-
33
- console.log("");
34
-
35
- process.stdin.on("keypress", (_str, key) => {
36
- keyback(key.name);
37
- });
38
-
39
- let getResult = (index) => {
40
- if (index >= config.length) {
41
- closeForm(rl);
42
- resolve(result);
43
- } else {
44
- let item = config[index];
45
-
46
- // 文本输入
47
- if (item.type == "input") {
48
-
49
- rl.question(getTitle(item.label), (answer) => {
50
- result.push(answer);
51
- setTimeout(() => {
52
- console.log("");
53
- getResult(index + 1);
54
- }, 50);
55
- });
56
-
57
- }
58
-
59
- // 列表选择
60
- else if (item.type == "select") {
61
- let title = getTitle(item.label);
62
-
63
- let selectIndex = 0;
64
- selectView(title, item.value, selectIndex);
65
- keyback = (keyname) => {
66
- if (keyname == "return") {
67
- result.push(selectIndex);
68
- keyback = () => { };
69
- linelog();
70
- setTimeout(() => {
71
- getResult(index + 1);
72
- }, 50);
73
- } else {
74
- if (keyname == "left" || keyname == "up") {
75
- if (selectIndex > 0) selectIndex -= 1;
76
- else selectIndex = item.value.length - 1;
77
- } else if (keyname == "right" || keyname == "down") {
78
- if (selectIndex < item.value.length - 1) selectIndex += 1;
79
- else selectIndex = 0;
80
- } else {
81
- return;
82
- }
83
- selectView(title, item.value, selectIndex);
84
- }
85
- };
86
-
87
- }
88
-
89
- // 非法类型
90
- else {
91
- closeForm();
92
- reject(new Error("Illegal type!"));
93
- }
94
- }
95
-
96
- };
97
- getResult(0);
98
- });
6
+ let getTitle = function (title) {
7
+ return "➤ " + title;
8
+ };
9
+
10
+ let closeForm = function (rl) {
11
+ process.removeAllListeners("keypress");
12
+ rl.close();
13
+ };
14
+
15
+ let selectView = (title, list, index) => {
16
+ let txtArray = [];
17
+ for (let i = 0; i < list.length; i++) {
18
+ txtArray.push(" " + (i == index ? "●" : "○") + " " + list[i]);
19
+ }
20
+
21
+ linelog(`${title}\n${txtArray.join("\n")}\n`);
22
+ };
23
+
24
+ function logform(config) {
25
+ const rl = require("readline").createInterface({
26
+ input: process.stdin,
27
+ output: process.stdout
28
+ });
29
+
30
+ return new Promise(function (resolve, reject) {
31
+ let result = [], keyback = () => { };
32
+
33
+ console.log("");
34
+
35
+ process.stdin.on("keypress", (_str, key) => {
36
+ keyback(key.name);
37
+ });
38
+
39
+ let getResult = (index) => {
40
+ if (index >= config.length) {
41
+ closeForm(rl);
42
+ resolve(result);
43
+ } else {
44
+ let item = config[index];
45
+
46
+ // 文本输入
47
+ if (item.type == "input") {
48
+
49
+ rl.question(getTitle(item.label), (answer) => {
50
+ result.push(answer);
51
+ setTimeout(() => {
52
+ console.log("");
53
+ getResult(index + 1);
54
+ }, 50);
55
+ });
56
+
57
+ }
58
+
59
+ // 列表选择
60
+ else if (item.type == "select") {
61
+ let title = getTitle(item.label);
62
+
63
+ let selectIndex = 0;
64
+ selectView(title, item.value, selectIndex);
65
+ keyback = (keyname) => {
66
+ if (keyname == "return") {
67
+ result.push(selectIndex);
68
+ keyback = () => { };
69
+ linelog();
70
+ setTimeout(() => {
71
+ getResult(index + 1);
72
+ }, 50);
73
+ } else {
74
+ if (keyname == "left" || keyname == "up") {
75
+ if (selectIndex > 0) selectIndex -= 1;
76
+ else selectIndex = item.value.length - 1;
77
+ } else if (keyname == "right" || keyname == "down") {
78
+ if (selectIndex < item.value.length - 1) selectIndex += 1;
79
+ else selectIndex = 0;
80
+ } else {
81
+ return;
82
+ }
83
+ selectView(title, item.value, selectIndex);
84
+ }
85
+ };
86
+
87
+ }
88
+
89
+ // 非法类型
90
+ else {
91
+ closeForm();
92
+ reject(new Error("Illegal type!"));
93
+ }
94
+ }
95
+
96
+ };
97
+ getResult(0);
98
+ });
99
99
  }
100
100
  exports.logform = logform;