sun-form-v3 1.0.64 → 1.0.66

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 (158) hide show
  1. package/package.json +8 -5
  2. package/src/App.vue +9 -0
  3. package/src/assets/font/YouSheBiaoTiHei-2.ttf +0 -0
  4. package/src/assets/font/demo.css +539 -0
  5. package/src/assets/font/demo_index.html +1200 -0
  6. package/src/assets/font/iconfont.css +191 -0
  7. package/src/assets/font/iconfont.js +1 -0
  8. package/src/assets/font/iconfont.json +317 -0
  9. package/src/assets/font/iconfont.ttf +0 -0
  10. package/src/assets/font/iconfont.woff +0 -0
  11. package/src/assets/font/iconfont.woff2 +0 -0
  12. package/src/assets/img/bg_footer.png +0 -0
  13. package/src/assets/img/bg_title.png +0 -0
  14. package/src/assets/img/file.png +0 -0
  15. package/src/assets/img/logo.png +0 -0
  16. package/src/assets/img/logo2.png +0 -0
  17. package/src/assets/img/logo22.png +0 -0
  18. package/src/assets/img/logo23.png +0 -0
  19. package/src/assets/img/logo3.png +0 -0
  20. package/src/assets/img//347/237/251/345/275/242@2x.png +0 -0
  21. package/src/assets/logo.svg +1 -0
  22. package/src/assets/styles/element/index.scss +15 -0
  23. package/src/assets/styles/index.css +3 -0
  24. package/src/components/a.js +14 -0
  25. package/src/components/aDesigner/config.vue +127 -0
  26. package/src/components/aDesigner/design.vue +21 -0
  27. package/src/components/aDesigner/designer.js +342 -0
  28. package/src/components/aDesigner/http.js +292 -0
  29. package/src/components/aDesigner/index.vue +144 -0
  30. package/src/components/aDesigner/panel.vue +144 -0
  31. package/src/components/aDesigner/show.vue +24 -0
  32. package/src/components/widgetCommonComps/commonApiConfig/index.vue +194 -0
  33. package/src/components/widgetCommonComps/commonCard/index.vue +36 -0
  34. package/src/components/widgetCommonComps/commonCodeEditor/editor.vue +219 -0
  35. package/src/components/widgetCommonComps/commonCodeEditor/modalEditor.vue +68 -0
  36. package/src/components/widgetCommonComps/commonCollapseCard/index.vue +10 -0
  37. package/src/components/widgetCommonComps/commonContainer/index.vue +95 -0
  38. package/src/components/widgetCommonComps/commonJsonInput/index.vue +59 -0
  39. package/src/components/widgetCommonComps/commonLabelContainer/index.vue +39 -0
  40. package/src/components/widgetCommonComps/commonSidetree/index.vue +61 -0
  41. package/src/components/widgetCommonComps/commonTypeInput/index.vue +75 -0
  42. package/src/components/widgetCommonComps/commonWidgetLabelContainer/index.vue +55 -0
  43. package/src/components/widgetCommonComps/index copy.js +17 -0
  44. package/src/components/widgetCommonComps/index.js +17 -0
  45. package/src/components/widgetConfigComps/config-input/index.vue +60 -0
  46. package/src/components/widgetConfigComps/index copy.js +13 -0
  47. package/src/components/widgetConfigComps/index.js +17 -0
  48. package/src/components/widgetShowComps/index.js +29 -0
  49. package/src/components/widgetShowComps/widget-form/index.vue +43 -0
  50. package/src/components/widgetShowComps/widget-homepage/index.vue +41 -0
  51. package/src/components/widgetShowComps/widget-input/index.vue +85 -0
  52. package/src/components/widgetShowComps/widget-select/index.vue +31 -0
  53. package/src/designer.js +342 -0
  54. package/src/http.js +292 -0
  55. package/src/index.js +24 -0
  56. package/src/index2.js +23 -0
  57. package/src/main.js +19 -0
  58. package/src/remark.js +708 -0
  59. package/src/testBtn.vue +11 -0
  60. package/src/testInput.vue +12 -0
  61. package/src/util/jsformat.js +568 -0
  62. package/src/widgetConfig.js +1112 -0
  63. package/dist/abap-DfvySaIJ.js +0 -1404
  64. package/dist/apex-B__0irD3.js +0 -332
  65. package/dist/assets/css.worker-OK053IOu.js +0 -84
  66. package/dist/assets/editor.worker-D9iUZyMP.js +0 -11
  67. package/dist/assets/html.worker-CL40hqKM.js +0 -458
  68. package/dist/assets/json.worker-6f9bhSHY.js +0 -42
  69. package/dist/assets/ts.worker-B6g3wjaE.js +0 -37021
  70. package/dist/azcli-CDMGhRmx.js +0 -74
  71. package/dist/bat-0Mk8aqzx.js +0 -106
  72. package/dist/bicep-BBi_I06Z.js +0 -108
  73. package/dist/cameligo-D0G_Zm6X.js +0 -180
  74. package/dist/clojure-o2ZKLeMp.js +0 -767
  75. package/dist/coffee-DOQff5VC.js +0 -238
  76. package/dist/cpp-CQGJnWhD.js +0 -395
  77. package/dist/csharp-C1jLsHl8.js +0 -332
  78. package/dist/csp-C_ttMQaW.js +0 -59
  79. package/dist/css-BC202kVV.js +0 -193
  80. package/dist/cssMode-BJ__hlmh.js +0 -1541
  81. package/dist/cypher-DwtEH7Fi.js +0 -269
  82. package/dist/dart-D9XknsP2.js +0 -287
  83. package/dist/dockerfile-DgsNjqqa.js +0 -136
  84. package/dist/ecl-BAMCHBl6.js +0 -462
  85. package/dist/elixir-CegIttP8.js +0 -575
  86. package/dist/favicon.ico +0 -0
  87. package/dist/flow9-9608t7UV.js +0 -148
  88. package/dist/freemarker2-CoLsQjW7.js +0 -995
  89. package/dist/fsharp-CCtt9-1_.js +0 -223
  90. package/dist/go-CGUIPbct.js +0 -224
  91. package/dist/graphql-BNRIFFIn.js +0 -157
  92. package/dist/handlebars-BX8CH7kP.js +0 -425
  93. package/dist/hcl-C__KLIXe.js +0 -189
  94. package/dist/html-CzRNAVFz.js +0 -314
  95. package/dist/htmlMode-D1rYdg3M.js +0 -1551
  96. package/dist/index-DmlyKQU2.js +0 -150
  97. package/dist/index2-CFFJfReU.js +0 -123480
  98. package/dist/ini-CeKYn_zA.js +0 -77
  99. package/dist/java-Dm24deQl.js +0 -238
  100. package/dist/javascript-D8qja2YK.js +0 -76
  101. package/dist/jsonMode-Ba3FSlH9.js +0 -1957
  102. package/dist/julia-BImNW7VE.js +0 -517
  103. package/dist/kotlin-BfE79GEb.js +0 -259
  104. package/dist/less-DglNOcaC.js +0 -168
  105. package/dist/lexon-BA0dRz9Q.js +0 -163
  106. package/dist/liquid-Dk9PEfYJ.js +0 -246
  107. package/dist/lua-DMkWzJcm.js +0 -168
  108. package/dist/m3-sA-5shO8.js +0 -216
  109. package/dist/markdown-OYRB1igA.js +0 -235
  110. package/dist/mdx-BYQIXNzg.js +0 -171
  111. package/dist/mips-rRzkJ_7G.js +0 -204
  112. package/dist/msdax-DoVJdUhd.js +0 -381
  113. package/dist/mysql-Ty44IHXo.js +0 -884
  114. package/dist/objective-c-VUfyhYrA.js +0 -189
  115. package/dist/pascal-DkASiYyw.js +0 -257
  116. package/dist/pascaligo-p-ELPlVO.js +0 -170
  117. package/dist/perl-Cjl1FxLZ.js +0 -632
  118. package/dist/pgsql-DjVenF7s.js +0 -857
  119. package/dist/php-CwvGzZOO.js +0 -506
  120. package/dist/pla-Br1iaBIV.js +0 -143
  121. package/dist/postiats-BaeP8zZY.js +0 -913
  122. package/dist/powerquery-CLCshuo8.js +0 -896
  123. package/dist/powershell-CZV50w5N.js +0 -245
  124. package/dist/protobuf-MV3XTewJ.js +0 -426
  125. package/dist/pug-DkDg4c4l.js +0 -408
  126. package/dist/python-nr__0oHi.js +0 -282
  127. package/dist/qsharp-BAtiKA97.js +0 -291
  128. package/dist/r-8ocrd-h-.js +0 -249
  129. package/dist/razor-BhxZaYa0.js +0 -556
  130. package/dist/redis-9sZiddxc.js +0 -308
  131. package/dist/redshift-DQfTOGC0.js +0 -815
  132. package/dist/restructuredtext-DXU-vkgr.js +0 -180
  133. package/dist/ruby-DotfqwMf.js +0 -517
  134. package/dist/rust-BIauJ5KN.js +0 -349
  135. package/dist/sb-CmWMvDEV.js +0 -121
  136. package/dist/scala-C81brEbk.js +0 -376
  137. package/dist/scheme-D0pcFz2x.js +0 -114
  138. package/dist/scss-BOdN2fGG.js +0 -268
  139. package/dist/shell-6E09eAkU.js +0 -227
  140. package/dist/solidity-CWStzA1K.js +0 -1373
  141. package/dist/sophia-76Sb6CWe.js +0 -205
  142. package/dist/sparql-BmZTkOWT.js +0 -207
  143. package/dist/sql-Cs9TBAW5.js +0 -859
  144. package/dist/st-B-rqE1Bu.js +0 -422
  145. package/dist/style.css +0 -1
  146. package/dist/sun-form-v3.es.js +0 -4
  147. package/dist/sun-form-v3.umd.js +0 -1908
  148. package/dist/swift-Btsj6YxQ.js +0 -318
  149. package/dist/systemverilog-B3RHBRa2.js +0 -582
  150. package/dist/tcl-Dpj776pn.js +0 -238
  151. package/dist/tsMode-B5V7dylO.js +0 -886
  152. package/dist/twig-Bb9JmBsE.js +0 -398
  153. package/dist/typescript-Cvb4NK72.js +0 -349
  154. package/dist/typespec-CDWeg3SU.js +0 -123
  155. package/dist/vb-DEXnYwEI.js +0 -378
  156. package/dist/wgsl-D602c1lx.js +0 -445
  157. package/dist/xml-D833w0Hk.js +0 -101
  158. package/dist/yaml-BEai5aLa.js +0 -212
@@ -0,0 +1,11 @@
1
+ <template>
2
+ testBtn
3
+ </template>
4
+
5
+ <script setup>
6
+ import { ref,reactive } from 'vue';
7
+ defineOptions({name:"testBtn"})
8
+ </script>
9
+
10
+ <style scoped lang="scss">
11
+ </style>
@@ -0,0 +1,12 @@
1
+ <template>
2
+ testInput
3
+ <input type="text">
4
+ </template>
5
+
6
+ <script setup>
7
+ import { ref,reactive } from 'vue';
8
+ defineOptions({name:"testInput"})
9
+ </script>
10
+
11
+ <style scoped lang="scss">
12
+ </style>
@@ -0,0 +1,568 @@
1
+ 
2
+
3
+ export function js_beautify(js_source_text, indent_size, indent_character, indent_level)
4
+ {
5
+
6
+ var input, output, token_text, last_type, last_text, last_word, current_mode, modes, indent_string;
7
+ var whitespace, wordchar, punct, parser_pos, line_starters, in_case;
8
+ var prefix, token_type, do_block_just_closed, var_line, var_line_tainted;
9
+
10
+
11
+
12
+ function trim_output()
13
+ {
14
+ while (output.length && (output[output.length - 1] === ' ' || output[output.length - 1] === indent_string)) {
15
+ output.pop();
16
+ }
17
+ }
18
+
19
+ function print_newline(ignore_repeated)
20
+ {
21
+ ignore_repeated = typeof ignore_repeated === 'undefined' ? true: ignore_repeated;
22
+
23
+ trim_output();
24
+
25
+ if (!output.length) {
26
+ return; // no newline on start of file
27
+ }
28
+
29
+ if (output[output.length - 1] !== "\n" || !ignore_repeated) {
30
+ output.push("\n");
31
+ }
32
+ for (var i = 0; i < indent_level; i++) {
33
+ output.push(indent_string);
34
+ }
35
+ }
36
+
37
+
38
+
39
+ function print_space()
40
+ {
41
+ var last_output = output.length ? output[output.length - 1] : ' ';
42
+ if (last_output !== ' ' && last_output !== '\n' && last_output !== indent_string) { // prevent occassional duplicate space
43
+ output.push(' ');
44
+ }
45
+ }
46
+
47
+
48
+ function print_token()
49
+ {
50
+ output.push(token_text);
51
+ }
52
+
53
+ function indent()
54
+ {
55
+ indent_level++;
56
+ }
57
+
58
+
59
+ function unindent()
60
+ {
61
+ if (indent_level) {
62
+ indent_level--;
63
+ }
64
+ }
65
+
66
+
67
+ function remove_indent()
68
+ {
69
+ if (output.length && output[output.length - 1] === indent_string) {
70
+ output.pop();
71
+ }
72
+ }
73
+
74
+
75
+ function set_mode(mode)
76
+ {
77
+ modes.push(current_mode);
78
+ current_mode = mode;
79
+ }
80
+
81
+
82
+ function restore_mode()
83
+ {
84
+ do_block_just_closed = current_mode === 'DO_BLOCK';
85
+ current_mode = modes.pop();
86
+ }
87
+
88
+
89
+ function in_array(what, arr)
90
+ {
91
+ for (var i = 0; i < arr.length; i++)
92
+ {
93
+ if (arr[i] === what) {
94
+ return true;
95
+ }
96
+ }
97
+ return false;
98
+ }
99
+
100
+
101
+
102
+ function get_next_token()
103
+ {
104
+ var n_newlines = 0;
105
+ var c = '';
106
+
107
+ do {
108
+ if (parser_pos >= input.length) {
109
+ return ['', 'TK_EOF'];
110
+ }
111
+ c = input.charAt(parser_pos);
112
+
113
+ parser_pos += 1;
114
+ if (c === "\n") {
115
+ n_newlines += 1;
116
+ }
117
+ }
118
+ while (in_array(c, whitespace));
119
+
120
+ if (n_newlines > 1) {
121
+ for (var i = 0; i < 2; i++) {
122
+ print_newline(i === 0);
123
+ }
124
+ }
125
+ var wanted_newline = (n_newlines === 1);
126
+
127
+
128
+ if (in_array(c, wordchar)) {
129
+ if (parser_pos < input.length) {
130
+ while (in_array(input.charAt(parser_pos), wordchar)) {
131
+ c += input.charAt(parser_pos);
132
+ parser_pos += 1;
133
+ if (parser_pos === input.length) {
134
+ break;
135
+ }
136
+ }
137
+ }
138
+
139
+ // small and surprisingly unugly hack for 1E-10 representation
140
+ if (parser_pos !== input.length && c.match(/^[0-9]+[Ee]$/) && input.charAt(parser_pos) === '-') {
141
+ parser_pos += 1;
142
+
143
+ var t = get_next_token(parser_pos);
144
+ c += '-' + t[0];
145
+ return [c, 'TK_WORD'];
146
+ }
147
+
148
+ if (c === 'in') { // hack for 'in' operator
149
+ return [c, 'TK_OPERATOR'];
150
+ }
151
+ return [c, 'TK_WORD'];
152
+ }
153
+
154
+ if (c === '(' || c === '[') {
155
+ return [c, 'TK_START_EXPR'];
156
+ }
157
+
158
+ if (c === ')' || c === ']') {
159
+ return [c, 'TK_END_EXPR'];
160
+ }
161
+
162
+ if (c === '{') {
163
+ return [c, 'TK_START_BLOCK'];
164
+ }
165
+
166
+ if (c === '}') {
167
+ return [c, 'TK_END_BLOCK'];
168
+ }
169
+
170
+ if (c === ';') {
171
+ return [c, 'TK_END_COMMAND'];
172
+ }
173
+
174
+ if (c === '/') {
175
+ var comment = '';
176
+ // peek for comment /* ... */
177
+ if (input.charAt(parser_pos) === '*') {
178
+ parser_pos += 1;
179
+ if (parser_pos < input.length) {
180
+ while (! (input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/') && parser_pos < input.length) {
181
+ comment += input.charAt(parser_pos);
182
+ parser_pos += 1;
183
+ if (parser_pos >= input.length) {
184
+ break;
185
+ }
186
+ }
187
+ }
188
+ parser_pos += 2;
189
+ return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT'];
190
+ }
191
+ // peek for comment // ...
192
+ if (input.charAt(parser_pos) === '/') {
193
+ comment = c;
194
+ while (input.charAt(parser_pos) !== "\x0d" && input.charAt(parser_pos) !== "\x0a") {
195
+ comment += input.charAt(parser_pos);
196
+ parser_pos += 1;
197
+ if (parser_pos >= input.length) {
198
+ break;
199
+ }
200
+ }
201
+ parser_pos += 1;
202
+ if (wanted_newline) {
203
+ print_newline();
204
+ }
205
+ return [comment, 'TK_COMMENT'];
206
+ }
207
+
208
+ }
209
+
210
+ if (c === "'" || // string
211
+ c === '"' || // string
212
+ (c === '/' &&
213
+ ((last_type === 'TK_WORD' && last_text === 'return') || (last_type === 'TK_START_EXPR' || last_type === 'TK_END_BLOCK' || last_type === 'TK_OPERATOR' || last_type === 'TK_EOF' || last_type === 'TK_END_COMMAND')))) { // regexp
214
+ var sep = c;
215
+ var esc = false;
216
+ c = '';
217
+
218
+ if (parser_pos < input.length) {
219
+
220
+ while (esc || input.charAt(parser_pos) !== sep) {
221
+ c += input.charAt(parser_pos);
222
+ if (!esc) {
223
+ esc = input.charAt(parser_pos) === '\\';
224
+ } else {
225
+ esc = false;
226
+ }
227
+ parser_pos += 1;
228
+ if (parser_pos >= input.length) {
229
+ break;
230
+ }
231
+ }
232
+
233
+ }
234
+
235
+ parser_pos += 1;
236
+ if (last_type === 'TK_END_COMMAND') {
237
+ print_newline();
238
+ }
239
+ return [sep + c + sep, 'TK_STRING'];
240
+ }
241
+
242
+ if (in_array(c, punct)) {
243
+ while (parser_pos < input.length && in_array(c + input.charAt(parser_pos), punct)) {
244
+ c += input.charAt(parser_pos);
245
+ parser_pos += 1;
246
+ if (parser_pos >= input.length) {
247
+ break;
248
+ }
249
+ }
250
+ return [c, 'TK_OPERATOR'];
251
+ }
252
+
253
+ return [c, 'TK_UNKNOWN'];
254
+ }
255
+
256
+
257
+ //----------------------------------
258
+
259
+ indent_character = indent_character || ' ';
260
+ indent_size = indent_size || 2;
261
+
262
+ indent_string = '';
263
+ while (indent_size--) {
264
+ indent_string += indent_character;
265
+ }
266
+
267
+ input = js_source_text;
268
+
269
+ last_word = ''; // last 'TK_WORD' passed
270
+ last_type = 'TK_START_EXPR'; // last token type
271
+ last_text = ''; // last token text
272
+ output = [];
273
+
274
+ do_block_just_closed = false;
275
+ var_line = false;
276
+ var_line_tainted = false;
277
+
278
+ whitespace = "\n\r\t ".split('');
279
+ wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split('');
280
+ punct = '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |='.split(' ');
281
+
282
+ // words which should always start on new line.
283
+ line_starters = 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function'.split(',');
284
+
285
+ // states showing if we are currently in expression (i.e. "if" case) - 'EXPRESSION', or in usual block (like, procedure), 'BLOCK'.
286
+ // some formatting depends on that.
287
+ current_mode = 'BLOCK';
288
+ modes = [current_mode];
289
+
290
+ indent_level = indent_level || 0;
291
+ parser_pos = 0; // parser position
292
+ in_case = false; // flag for parser that case/default has been processed, and next colon needs special attention
293
+ while (true) {
294
+ var t = get_next_token(parser_pos);
295
+ token_text = t[0];
296
+ token_type = t[1];
297
+ if (token_type === 'TK_EOF') {
298
+ break;
299
+ }
300
+
301
+ switch (token_type) {
302
+
303
+ case 'TK_START_EXPR':
304
+ var_line = false;
305
+ set_mode('EXPRESSION');
306
+ if (last_type === 'TK_END_EXPR' || last_type === 'TK_START_EXPR') {
307
+ // do nothing on (( and )( and ][ and ]( ..
308
+ } else if (last_type !== 'TK_WORD' && last_type !== 'TK_OPERATOR') {
309
+ print_space();
310
+ } else if (in_array(last_word, line_starters) && last_word !== 'function') {
311
+ print_space();
312
+ }
313
+ print_token();
314
+ break;
315
+
316
+ case 'TK_END_EXPR':
317
+ print_token();
318
+ restore_mode();
319
+ break;
320
+
321
+ case 'TK_START_BLOCK':
322
+
323
+ if (last_word === 'do') {
324
+ set_mode('DO_BLOCK');
325
+ } else {
326
+ set_mode('BLOCK');
327
+ }
328
+ if (last_type !== 'TK_OPERATOR' && last_type !== 'TK_START_EXPR') {
329
+ if (last_type === 'TK_START_BLOCK') {
330
+ print_newline();
331
+ } else {
332
+ print_space();
333
+ }
334
+ }
335
+ print_token();
336
+ indent();
337
+ break;
338
+
339
+ case 'TK_END_BLOCK':
340
+ if (last_type === 'TK_START_BLOCK') {
341
+ // nothing
342
+ trim_output();
343
+ unindent();
344
+ } else {
345
+ unindent();
346
+ print_newline();
347
+ }
348
+ print_token();
349
+ restore_mode();
350
+ break;
351
+
352
+ case 'TK_WORD':
353
+
354
+ if (do_block_just_closed) {
355
+ print_space();
356
+ print_token();
357
+ print_space();
358
+ break;
359
+ }
360
+
361
+ if (token_text === 'case' || token_text === 'default') {
362
+ if (last_text === ':') {
363
+ // switch cases following one another
364
+ remove_indent();
365
+ } else {
366
+ // case statement starts in the same line where switch
367
+ unindent();
368
+ print_newline();
369
+ indent();
370
+ }
371
+ print_token();
372
+ in_case = true;
373
+ break;
374
+ }
375
+
376
+
377
+ prefix = 'NONE';
378
+ if (last_type === 'TK_END_BLOCK') {
379
+ if (!in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) {
380
+ prefix = 'NEWLINE';
381
+ } else {
382
+ prefix = 'SPACE';
383
+ print_space();
384
+ }
385
+ } else if (last_type === 'TK_END_COMMAND' && (current_mode === 'BLOCK' || current_mode === 'DO_BLOCK')) {
386
+ prefix = 'NEWLINE';
387
+ } else if (last_type === 'TK_END_COMMAND' && current_mode === 'EXPRESSION') {
388
+ prefix = 'SPACE';
389
+ } else if (last_type === 'TK_WORD') {
390
+ prefix = 'SPACE';
391
+ } else if (last_type === 'TK_START_BLOCK') {
392
+ prefix = 'NEWLINE';
393
+ } else if (last_type === 'TK_END_EXPR') {
394
+ print_space();
395
+ prefix = 'NEWLINE';
396
+ }
397
+
398
+ if (last_type !== 'TK_END_BLOCK' && in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) {
399
+ print_newline();
400
+ } else if (in_array(token_text, line_starters) || prefix === 'NEWLINE') {
401
+ if (last_text === 'else') {
402
+ // no need to force newline on else break
403
+ print_space();
404
+ } else if ((last_type === 'TK_START_EXPR' || last_text === '=') && token_text === 'function') {
405
+ // no need to force newline on 'function': (function
406
+ // DONOTHING
407
+ } else if (last_type === 'TK_WORD' && (last_text === 'return' || last_text === 'throw')) {
408
+ // no newline between 'return nnn'
409
+ print_space();
410
+ } else if (last_type !== 'TK_END_EXPR') {
411
+ if ((last_type !== 'TK_START_EXPR' || token_text !== 'var') && last_text !== ':') {
412
+ // no need to force newline on 'var': for (var x = 0...)
413
+ if (token_text === 'if' && last_type === 'TK_WORD' && last_word === 'else') {
414
+ // no newline for } else if {
415
+ print_space();
416
+ } else {
417
+ print_newline();
418
+ }
419
+ }
420
+ } else {
421
+ if (in_array(token_text, line_starters) && last_text !== ')') {
422
+ print_newline();
423
+ }
424
+ }
425
+ } else if (prefix === 'SPACE') {
426
+ print_space();
427
+ }
428
+ print_token();
429
+ last_word = token_text;
430
+
431
+ if (token_text === 'var') {
432
+ var_line = true;
433
+ var_line_tainted = false;
434
+ }
435
+
436
+ break;
437
+
438
+ case 'TK_END_COMMAND':
439
+
440
+ print_token();
441
+ var_line = false;
442
+ break;
443
+
444
+ case 'TK_STRING':
445
+
446
+ if (last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK') {
447
+ print_newline();
448
+ } else if (last_type === 'TK_WORD') {
449
+ print_space();
450
+ }
451
+ print_token();
452
+ break;
453
+
454
+ case 'TK_OPERATOR':
455
+
456
+ var start_delim = true;
457
+ var end_delim = true;
458
+ if (var_line && token_text !== ',') {
459
+ var_line_tainted = true;
460
+ if (token_text === ':') {
461
+ var_line = false;
462
+ }
463
+ }
464
+
465
+ if (token_text === ':' && in_case) {
466
+ print_token(); // colon really asks for separate treatment
467
+ print_newline();
468
+ break;
469
+ }
470
+
471
+ in_case = false;
472
+
473
+ if (token_text === ',') {
474
+ if (var_line) {
475
+ if (var_line_tainted) {
476
+ print_token();
477
+ print_newline();
478
+ var_line_tainted = false;
479
+ } else {
480
+ print_token();
481
+ print_space();
482
+ }
483
+ } else if (last_type === 'TK_END_BLOCK') {
484
+ print_token();
485
+ print_newline();
486
+ } else {
487
+ if (current_mode === 'BLOCK') {
488
+ print_token();
489
+ print_newline();
490
+ } else {
491
+ // EXPR od DO_BLOCK
492
+ print_token();
493
+ print_space();
494
+ }
495
+ }
496
+ break;
497
+ } else if (token_text === '--' || token_text === '++') { // unary operators special case
498
+ if (last_text === ';') {
499
+ // space for (;; ++i)
500
+ start_delim = true;
501
+ end_delim = false;
502
+ } else {
503
+ start_delim = false;
504
+ end_delim = false;
505
+ }
506
+ } else if (token_text === '!' && last_type === 'TK_START_EXPR') {
507
+ // special case handling: if (!a)
508
+ start_delim = false;
509
+ end_delim = false;
510
+ } else if (last_type === 'TK_OPERATOR') {
511
+ start_delim = false;
512
+ end_delim = false;
513
+ } else if (last_type === 'TK_END_EXPR') {
514
+ start_delim = true;
515
+ end_delim = true;
516
+ } else if (token_text === '.') {
517
+ // decimal digits or object.property
518
+ start_delim = false;
519
+ end_delim = false;
520
+
521
+ } else if (token_text === ':') {
522
+ // zz: xx
523
+ // can't differentiate ternary op, so for now it's a ? b: c; without space before colon
524
+ if (last_text.match(/^\d+$/)) {
525
+ // a little help for ternary a ? 1 : 0;
526
+ start_delim = true;
527
+ } else {
528
+ start_delim = false;
529
+ }
530
+ }
531
+ if (start_delim) {
532
+ print_space();
533
+ }
534
+
535
+ print_token();
536
+
537
+ if (end_delim) {
538
+ print_space();
539
+ }
540
+ break;
541
+
542
+ case 'TK_BLOCK_COMMENT':
543
+
544
+ print_newline();
545
+ print_token();
546
+ print_newline();
547
+ break;
548
+
549
+ case 'TK_COMMENT':
550
+
551
+ // print_newline();
552
+ print_space();
553
+ print_token();
554
+ print_newline();
555
+ break;
556
+
557
+ case 'TK_UNKNOWN':
558
+ print_token();
559
+ break;
560
+ }
561
+
562
+ last_type = token_type;
563
+ last_text = token_text;
564
+ }
565
+
566
+ return output.join('');
567
+
568
+ }