nadesiko3 3.3.45 → 3.3.49

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 (329) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +143 -132
  3. package/batch/browsers.template.md +3 -3
  4. package/batch/build_browsers.nako3 +72 -72
  5. package/batch/build_command.nako3 +44 -44
  6. package/batch/build_nako_version.nako3 +42 -42
  7. package/batch/calc_hash.nako3 +29 -29
  8. package/batch/cmd_txt2json.nako3 +74 -74
  9. package/batch/command.txt +270 -338
  10. package/batch/command_nakopad.txt +9 -69
  11. package/batch/download-extlib.nako3 +43 -43
  12. package/batch/gen_command_nakopad.nako3 +57 -57
  13. package/batch/jsplugin2text.nako3 +285 -285
  14. package/batch/pickup_command.nako3 +110 -110
  15. package/batch/pickup_reserved_words.nako3 +11 -11
  16. package/batch/publish_version.nako3 +46 -46
  17. package/batch/show_agents.js +14 -14
  18. package/batch/turtle2js.nako3 +21 -21
  19. package/bin/cnako3 +10 -10
  20. package/core/.editorconfig +6 -0
  21. package/core/.eslintrc.cjs +33 -0
  22. package/core/.github/dependabot.yml +7 -0
  23. package/core/.github/workflows/nodejs.yml +37 -0
  24. package/core/.github/workflows/super-linter.yml +61 -0
  25. package/core/.github/workflows/textlint.yml +199 -0
  26. package/core/LICENSE +21 -0
  27. package/core/README.md +66 -0
  28. package/core/batch/build_nako_version.nako3 +42 -0
  29. package/core/command/snako.mjs +105 -0
  30. package/core/command/snako.mts +116 -0
  31. package/core/index.mjs +21 -0
  32. package/core/index.mts +21 -0
  33. package/core/package.json +47 -0
  34. package/core/sample/hello.nako3 +7 -0
  35. package/core/sample/hoge.mjs +4 -0
  36. package/core/sample/hoge.mts +6 -0
  37. package/core/src/nako3.mjs +858 -0
  38. package/core/src/nako3.mts +967 -0
  39. package/core/src/nako_colors.mjs +78 -0
  40. package/core/src/nako_colors.mts +86 -0
  41. package/core/src/nako_core_version.mjs +8 -0
  42. package/core/src/nako_core_version.mts +19 -0
  43. package/core/src/nako_csv.mjs +185 -0
  44. package/core/src/nako_csv.mts +188 -0
  45. package/core/src/nako_errors.mjs +173 -0
  46. package/core/src/nako_errors.mts +197 -0
  47. package/core/src/nako_from_dncl.mjs +255 -0
  48. package/core/src/nako_from_dncl.mts +250 -0
  49. package/core/src/nako_gen.mjs +1648 -0
  50. package/core/src/nako_gen.mts +1719 -0
  51. package/core/src/nako_gen_async.mjs +1659 -0
  52. package/core/src/nako_gen_async.mts +1732 -0
  53. package/core/src/nako_global.mjs +107 -0
  54. package/core/src/nako_global.mts +138 -0
  55. package/core/src/nako_indent.mjs +445 -0
  56. package/core/src/nako_indent.mts +492 -0
  57. package/core/src/nako_josi_list.mjs +38 -0
  58. package/core/src/nako_josi_list.mts +45 -0
  59. package/core/src/nako_lex_rules.mjs +253 -0
  60. package/core/src/nako_lex_rules.mts +260 -0
  61. package/core/src/nako_lexer.mjs +609 -0
  62. package/core/src/nako_lexer.mts +612 -0
  63. package/core/src/nako_logger.mjs +199 -0
  64. package/core/src/nako_logger.mts +232 -0
  65. package/core/src/nako_parser3.mjs +2439 -0
  66. package/core/src/nako_parser3.mts +2195 -0
  67. package/core/src/nako_parser_base.mjs +370 -0
  68. package/core/src/nako_parser_base.mts +370 -0
  69. package/core/src/nako_parser_const.mjs +37 -0
  70. package/core/src/nako_parser_const.mts +37 -0
  71. package/core/src/nako_prepare.mjs +304 -0
  72. package/core/src/nako_prepare.mts +315 -0
  73. package/core/src/nako_reserved_words.mjs +38 -0
  74. package/core/src/nako_reserved_words.mts +38 -0
  75. package/core/src/nako_source_mapping.mjs +207 -0
  76. package/core/src/nako_source_mapping.mts +262 -0
  77. package/core/src/nako_test.mjs +37 -0
  78. package/core/src/nako_types.mjs +25 -0
  79. package/core/src/nako_types.mts +151 -0
  80. package/core/src/plugin_csv.mjs +49 -0
  81. package/core/src/plugin_csv.mts +50 -0
  82. package/core/src/plugin_math.mjs +328 -0
  83. package/core/src/plugin_math.mts +326 -0
  84. package/core/src/plugin_promise.mjs +91 -0
  85. package/core/src/plugin_promise.mts +91 -0
  86. package/core/src/plugin_system.mjs +2832 -0
  87. package/core/src/plugin_system.mts +2690 -0
  88. package/core/src/plugin_test.mjs +34 -0
  89. package/core/src/plugin_test.mts +34 -0
  90. package/core/test/array_test.mjs +34 -0
  91. package/core/test/basic_test.mjs +344 -0
  92. package/core/test/calc_test.mjs +140 -0
  93. package/core/test/core_module_test.mjs +23 -0
  94. package/core/test/debug_test.mjs +16 -0
  95. package/core/test/dncl_test.mjs +94 -0
  96. package/core/test/error_message_test.mjs +210 -0
  97. package/core/test/error_test.mjs +16 -0
  98. package/core/test/flow_test.mjs +373 -0
  99. package/core/test/func_call.mjs +160 -0
  100. package/core/test/func_test.mjs +149 -0
  101. package/core/test/indent_test.mjs +364 -0
  102. package/core/test/lex_test.mjs +168 -0
  103. package/core/test/literal_test.mjs +73 -0
  104. package/core/test/nako_lexer_test.mjs +35 -0
  105. package/core/test/nako_logger_test.mjs +76 -0
  106. package/core/test/nako_logger_test.mts +78 -0
  107. package/core/test/plugin_csv_test.mjs +38 -0
  108. package/core/test/plugin_promise_test.mjs +18 -0
  109. package/core/test/plugin_system_test.mjs +630 -0
  110. package/core/test/prepare_test.mjs +96 -0
  111. package/core/test/re_test.mjs +22 -0
  112. package/core/test/side_effects_test.mjs +92 -0
  113. package/core/test/variable_scope_test.mjs +149 -0
  114. package/core/tsconfig.json +101 -0
  115. package/demo/ace_editor.html +89 -89
  116. package/demo/ace_editor_tabs.html +161 -161
  117. package/demo/basic.html +71 -71
  118. package/demo/browsers.html +9 -10
  119. package/demo/css/basic.css +3 -3
  120. package/demo/css/common.css +157 -157
  121. package/demo/css/editor.css +8 -8
  122. package/demo/css/flow.css +3 -3
  123. package/demo/css/index.css +3 -3
  124. package/demo/flow.html +98 -98
  125. package/demo/graph.html +53 -53
  126. package/demo/image/nakopad-icon256.png +0 -0
  127. package/demo/index.html +133 -133
  128. package/demo/js/common.js +17 -17
  129. package/demo/js/turtle3d_test.js +44 -44
  130. package/demo/js/turtle_test.js +45 -45
  131. package/demo/nako3/calc.nako3 +4 -4
  132. package/demo/runscript.html +47 -47
  133. package/demo/runscript2.html +33 -33
  134. package/demo/runscript3.html +35 -35
  135. package/demo/runscript4.html +33 -33
  136. package/demo/turtle.html +58 -58
  137. package/demo/turtle2.html +141 -141
  138. package/demo/turtle3.html +279 -279
  139. package/demo/turtle3d.html +58 -58
  140. package/demo/turtle3d2.html +107 -107
  141. package/demo/version.html +24 -24
  142. package/doc/SETUP.md +157 -157
  143. package/doc/about.md +17 -17
  144. package/doc/browsers.md +26 -26
  145. package/doc/docgen.md +21 -21
  146. package/doc/editor.md +44 -44
  147. package/doc/files.md +39 -39
  148. package/doc/plugins.md +234 -234
  149. package/doc/release.md +79 -79
  150. package/doc/textlint.md +43 -43
  151. package/doc/win32.md +57 -57
  152. package/package.json +195 -192
  153. package/release/_hash.txt +28 -28
  154. package/release/_script-tags.txt +14 -14
  155. package/release/command.json +1 -1
  156. package/release/command.json.js +1 -1
  157. package/release/command_cnako3.json +1 -1
  158. package/release/command_list.json +1 -1
  159. package/release/editor.js +1 -1
  160. package/release/nako_gen_async.js +1 -1
  161. package/release/plugin_csv.js +1 -1
  162. package/release/stats.json +1 -1
  163. package/release/version.js +1 -1
  164. package/release/wnako3.js +1 -1
  165. package/release/wnako3webworker.js +1 -1
  166. package/src/browsers.txt +11 -12
  167. package/src/browsers_agents.json +2 -2
  168. package/src/browsers_agents.mjs +1 -1
  169. package/src/cnako3.mjs +17 -10
  170. package/src/cnako3.mts +18 -12
  171. package/src/cnako3mod.mjs +707 -687
  172. package/src/cnako3mod.mts +712 -696
  173. package/src/commander_ja.mjs +164 -164
  174. package/src/commander_ja.mts +161 -161
  175. package/src/enako3.mjs +68 -69
  176. package/src/era.mjs +22 -22
  177. package/src/image_turtle-elephant.mjs +2 -5
  178. package/src/image_turtle-panda.mjs +2 -5
  179. package/src/image_turtle64.mjs +2 -5
  180. package/src/index.mjs +9 -9
  181. package/src/index.mts +10 -11
  182. package/src/nako3editorfix.sfd +106 -106
  183. package/src/nako_version.mjs +8 -8
  184. package/src/nako_version.mts +2 -2
  185. package/src/plugin_browser.mjs +213 -212
  186. package/src/plugin_browser.mts +206 -205
  187. package/src/plugin_browser_ajax.mjs +399 -399
  188. package/src/plugin_browser_audio.mjs +109 -109
  189. package/src/plugin_browser_canvas.mjs +449 -449
  190. package/src/plugin_browser_chart.mjs +294 -294
  191. package/src/plugin_browser_color.mjs +49 -49
  192. package/src/plugin_browser_crypto.mjs +26 -26
  193. package/src/plugin_browser_dialog.mjs +53 -53
  194. package/src/plugin_browser_dom_basic.mjs +336 -336
  195. package/src/plugin_browser_dom_event.mjs +193 -193
  196. package/src/plugin_browser_dom_parts.mjs +396 -396
  197. package/src/plugin_browser_geolocation.mjs +51 -51
  198. package/src/plugin_browser_hotkey.mjs +25 -25
  199. package/src/plugin_browser_html.mjs +59 -59
  200. package/src/plugin_browser_in_worker.mjs +45 -45
  201. package/src/plugin_browser_location.mjs +21 -21
  202. package/src/plugin_browser_speech.mjs +111 -111
  203. package/src/plugin_browser_storage.mjs +121 -121
  204. package/src/plugin_browser_system.mjs +31 -31
  205. package/src/plugin_browser_websocket.mjs +73 -73
  206. package/src/plugin_caniuse.mjs +29 -29
  207. package/src/plugin_datetime.mjs +394 -394
  208. package/src/plugin_httpserver.mjs +277 -0
  209. package/src/plugin_httpserver.mts +286 -0
  210. package/src/plugin_kansuji.mjs +224 -224
  211. package/src/plugin_keigo.mjs +55 -55
  212. package/src/plugin_markup.mjs +32 -32
  213. package/src/plugin_node.mjs +1047 -1047
  214. package/src/plugin_node.mts +980 -980
  215. package/src/plugin_turtle.mjs +647 -647
  216. package/src/plugin_webworker.mjs +334 -334
  217. package/src/plugin_weykturtle3d.mjs +1214 -1214
  218. package/src/plugin_worker.mjs +95 -95
  219. package/src/repl.nako3 +63 -63
  220. package/src/wnako3.mjs +12 -12
  221. package/src/wnako3.mts +11 -11
  222. package/src/wnako3_editor.css +215 -215
  223. package/src/wnako3_editor.mjs +1542 -1542
  224. package/src/wnako3_editor.mts +1657 -1656
  225. package/src/wnako3mod.mjs +213 -213
  226. package/src/wnako3mod.mts +214 -214
  227. package/src/wnako3webworker.mjs +69 -68
  228. package/test/ace_editor/karma.config.js +94 -94
  229. package/test/ace_editor/test/.babelrc.json +3 -3
  230. package/test/ace_editor/test/ace_editor_test.js +178 -178
  231. package/test/ace_editor/test/html/custom_context.html +139 -139
  232. package/test/async/async_basic_test.mjs +122 -122
  233. package/test/browser/karma.config.js +221 -221
  234. package/test/browser/test/.babelrc.json +3 -3
  235. package/test/browser/test/compare_util.js +50 -50
  236. package/test/browser/test/html/div_basic.html +2 -2
  237. package/test/browser/test/html/event_dom_form.html +4 -4
  238. package/test/browser/test/html/event_dom_scrolldiv.html +5 -5
  239. package/test/browser/test/import_plugin_checker.js +24 -24
  240. package/test/browser/test/plugin_browser_test.js +51 -51
  241. package/test/browser/test/plugin_browser_test_ajax.js +123 -123
  242. package/test/browser/test/plugin_browser_test_color.js +18 -18
  243. package/test/browser/test/plugin_browser_test_dialog.js +72 -72
  244. package/test/browser/test/plugin_browser_test_dom_event.js +598 -598
  245. package/test/browser/test/plugin_browser_test_dom_parts.js +125 -125
  246. package/test/browser/test/plugin_browser_test_system.js +9 -9
  247. package/test/browser/test/plugin_turtle_test.js +817 -817
  248. package/test/browser/test/plugin_webworker_test.js +86 -86
  249. package/test/browser/test/require_test.js +68 -68
  250. package/test/bundled/karma.config.base.js +117 -117
  251. package/test/bundled/karma.config.js +86 -86
  252. package/test/bundled/test/.babelrc.json +3 -3
  253. package/test/bundled/test/bundled_test.js +69 -69
  254. package/test/bundled/test/html/custom_context.html +65 -65
  255. package/test/bundled/test/html/custom_debug.html +66 -66
  256. package/test/bundled/test4b.cmd +52 -52
  257. package/test/bundled/test_base/.babelrc.json +3 -3
  258. package/test/bundled/test_base/_checktool_test.js +25 -25
  259. package/test/bundled/test_base/basic_ajax_test.js +56 -56
  260. package/test/bundled/test_base/basic_async_test.js +18 -18
  261. package/test/bundled/test_base/basic_test.js +153 -153
  262. package/test/bundled/test_base/calc_test.js +132 -132
  263. package/test/bundled/test_base/css/browsers_box.css +114 -114
  264. package/test/bundled/test_base/html/custom_context.html +69 -69
  265. package/test/bundled/test_base/html/custom_debug.html +71 -71
  266. package/test/bundled/test_base/js/browsers_box.js +72 -72
  267. package/test/bundled/test_base/plugin_csv_test.js +37 -37
  268. package/test/bundled/test_base/plugin_datetime_test.js +115 -115
  269. package/test/bundled/test_base/plugin_kansuji_test.js +49 -49
  270. package/test/bundled/test_base/plugin_system_test.js +410 -410
  271. package/test/bundled/test_base/plugin_webworker_test.js +53 -53
  272. package/test/bundled/test_base/test_utils.js +191 -191
  273. package/test/common/plugin_browser_test.mjs +22 -24
  274. package/test/common/plugin_browser_ut_audio_test.mjs +108 -108
  275. package/test/common/plugin_browser_ut_color_test.mjs +21 -21
  276. package/test/common/plugin_browser_ut_dialog_test.mjs +100 -100
  277. package/test/common/plugin_browser_ut_html_test.mjs +13 -13
  278. package/test/common/plugin_browser_ut_system_test.mjs +10 -10
  279. package/test/common/plugin_markup_test.mjs +23 -23
  280. package/test/jsconfig.json +19 -19
  281. package/test/karma.config.js +91 -91
  282. package/test/node/async_test.mjs +96 -82
  283. package/test/node/commander_ja_test.mjs +89 -89
  284. package/test/node/error_message_test.mjs +243 -253
  285. package/test/node/kai_test.nako3 +6 -6
  286. package/test/node/node_test.mjs +60 -60
  287. package/test/node/plugin_broken.js.txt +3 -3
  288. package/test/node/plugin_browser_ut_ajax_test.mjs.todo +357 -357
  289. package/test/node/plugin_browser_ut_location_test.mjs +42 -42
  290. package/test/node/plugin_markup_test.mjs +47 -46
  291. package/test/node/plugin_math_test.mjs +45 -44
  292. package/test/node/plugin_node_test.mjs +98 -97
  293. package/test/node/plugin_test.mjs +44 -43
  294. package/test/node/relative_import_test_1.nako3 +1 -1
  295. package/test/node/relative_import_test_2.nako3 +2 -2
  296. package/test/node/require_nako3_test.mjs +67 -66
  297. package/test/node/requiretest.nako3 +4 -4
  298. package/test/node/requiretest_indirect.nako3 +1 -1
  299. package/test/node/requiretest_name.nako3 +5 -5
  300. package/test/node/runtime_error.nako3 +2 -2
  301. package/test/node/scope1.nako3 +10 -10
  302. package/test/node/scope2.nako3 +12 -12
  303. package/test/node/side_effects_test.mjs +39 -119
  304. package/test/node/sjis.txt +5 -5
  305. package/test/node/syntax_error.nako3 +1 -1
  306. package/test/node/wnako3_editor_test.mjs +384 -384
  307. package/tools/README.md +12 -7
  308. package/tools/check_new_version.nako3 +25 -25
  309. package/tools/nako3edit/html/daisyui/LICENSE +22 -22
  310. package/tools/nako3edit/html/daisyui/version_2.14.1 +1 -1
  311. package/tools/nako3edit/html/edit.html +170 -170
  312. package/tools/nako3edit/html/edit_plugin.js +6 -6
  313. package/tools/nako3edit/html/files.html +125 -125
  314. package/tools/nako3edit/html/nako3edit.css +65 -65
  315. package/tools/nako3edit/index.mjs +248 -244
  316. package/tools/nako3server/index.html +10 -0
  317. package/tools/nako3server/index.mjs +116 -116
  318. package/tools/nako3server/index.nako3 +34 -0
  319. package/release/nako_gen_async.js.LICENSE.txt +0 -35
  320. package/release/plugin_caniuse.js.LICENSE.txt +0 -11
  321. package/release/plugin_csv.js.LICENSE.txt +0 -15
  322. package/release/plugin_datetime.js.LICENSE.txt +0 -15
  323. package/release/plugin_kansuji.js.LICENSE.txt +0 -3
  324. package/release/plugin_markup.js.LICENSE.txt +0 -11
  325. package/release/plugin_turtle.js.LICENSE.txt +0 -15
  326. package/release/plugin_webworker.js.LICENSE.txt +0 -3
  327. package/release/plugin_weykturtle3d.js.LICENSE.txt +0 -3
  328. package/release/wnako3webworker.js.LICENSE.txt +0 -131
  329. package/tools/nako3edit/a.sqlite3 +0 -0
@@ -1,162 +1,162 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Nadesiko3 Editor</title>
8
- <link rel="stylesheet" href="../src/wnako3_editor.css">
9
- <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js" integrity="sha512-GZ1RIgZaSc8rnco/8CXfRdCpDxRCphenIiZ2ztLy3XQfCbQUSCuk8IudvNHxkRA3oUg6q0qejgN/qqyG1duv5Q==" crossorigin="anonymous"></script>
10
- <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-language_tools.min.js" integrity="sha512-8qx1DL/2Wsrrij2TWX5UzvEaYOFVndR7BogdpOyF4ocMfnfkw28qt8ULkXD9Tef0bLvh3TpnSAljDC7uyniEuQ==" crossorigin="anonymous"></script>
11
- <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-options.min.js" integrity="sha512-oHR+WVzBiVZ6njlMVlDDLUIOLRDfUUfRQ55PfkZvgjwuvGqL4ohCTxaahJIxTmtya4jgyk0zmOxDMuLzbfqQDA==" crossorigin="anonymous"></script>
12
- <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-code_lens.min.js" integrity="sha512-gsDyyKTnOmSWRDzUbpYcPjzVsEyFGSWeWefzVKvbMULPR2ElIlKKsOtU3ycfybN9kncZXKLFSsUiG3cgJUbc/g==" crossorigin="anonymous"></script>
13
- <script src="../release/wnako3.js"></script>
14
- <script src="../release/version.js"></script>
15
- <script src="../release/plugin_markup.js"></script>
16
- <script src="../release/plugin_csv.js"></script>
17
- <script src="../release/plugin_kansuji.js"></script>
18
- <script src="../release/plugin_datetime.js"></script>
19
- <script src="../release/plugin_turtle.js"></script>
20
- <script src="../release/plugin_caniuse.js"></script>
21
- <script src="../release/plugin_webworker.js"></script>
22
-
23
- <!-- mochaを一番最後に読み込む必要がある -->
24
- <script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/8.3.0/mocha.min.js" integrity="sha512-LA/TpBXau/JNubKzHQhdi5vGkRLyQjs1vpuk2W1nc8WNgf/pCqBplD8MzlzeKJQTZPvkEZi0HqBDfRC2EyLMXw==" crossorigin="anonymous"></script>
25
-
26
- <style>
27
- /* ボタンの高さを揃える */
28
- .toolbar button, .toolbar input {
29
- font-size: 12px;
30
- height: 28px;
31
- margin: 0;
32
- padding: 0;
33
- box-sizing: border-box;
34
- vertical-align: top;
35
- }
36
-
37
- /* 出力の文字サイズと文字色 */
38
- #output {
39
- font-size: 13px;
40
- color: rgb(77, 77, 77);
41
- }
42
- </style>
43
- </head>
44
- <body>
45
- <div class="toolbar">
46
- <button id="add">📁 ファイルを追加</button>
47
- <button id="remove">🗑 ファイルを削除</button>
48
- <span id="file-list"></span>
49
- </div>
50
- <div id="editor" data-nako3-resizable="true"></div>
51
- <div class="toolbar">
52
- <button id="run">表示中のファイルを実行</button>
53
- </div>
54
- <div id="output"></div>
55
- <script>
56
- /** @type {import('../src/wnako3.js')} */
57
- const nako3 = navigator.nako3
58
- const { editor, editorMarkers, editorTabs, retokenize, run, codeLensListeners } = nako3.setupEditor('editor')
59
-
60
- /** @type {Map<number, HTMLButtonElement>} */
61
- const tabButtons = new Map()
62
- /** @type {Map<number, import('../src/wnako3_editor.js').EditorTabState>} */
63
- const hiddenTabStates = new Map()
64
-
65
- let fileCount = 0
66
- let activeFile = 1
67
-
68
- // タブの切り替え
69
- const switchTab = (fileName) => {
70
- hiddenTabStates.set(activeFile, editorTabs.getTab())
71
- editorTabs.setTab(hiddenTabStates.get(fileName))
72
- activeFile = fileName
73
- }
74
-
75
- // ファイルの追加
76
- const addFile = () => {
77
- const id = ++fileCount
78
-
79
- // <button class="file">{id}.nako3</button> を挿入する。
80
- const button = document.createElement('button')
81
- button.innerText = id + '.nako3'
82
- button.classList.add('file')
83
- button.addEventListener('click', () => {
84
- tabButtons.get(activeFile).disabled = false
85
- button.disabled = true
86
- switchTab(id)
87
- })
88
- document.getElementById('file-list').appendChild(button)
89
- tabButtons.set(id, button)
90
-
91
- // エディタの状態を生成
92
- hiddenTabStates.set(id, editorTabs.newTab(`// ${id}.nako3\n`))
93
- }
94
- document.getElementById('add').addEventListener('click', () => { addFile() })
95
-
96
- // ファイルの削除
97
- const removeFile = () => {
98
- if (tabButtons.size <= 1) {
99
- alert('全てのファイルを削除することはできません。')
100
- return
101
- }
102
- const input = prompt('削除するファイル名を指定してください。', tabButtons.size + '.nako3')
103
- if (input === null) {
104
- return
105
- }
106
- const id = +input.replace(/\.nako3$/, '')
107
- if (!Number.isInteger(id)) {
108
- alert(`${id}.nako3 は存在しません。`)
109
- return
110
- }
111
- if (id === activeFile) {
112
- alert(`表示中のファイルは削除できません。`)
113
- return
114
- }
115
- document.getElementById('file-list').removeChild(tabButtons.get(id))
116
- tabButtons.delete(id)
117
- }
118
- document.getElementById('remove').addEventListener('click', () => { removeFile() })
119
-
120
- // 実行
121
- document.getElementById('run').addEventListener('click', () => {
122
- /** @type {Record<string, string>} */
123
- const localFiles = {}
124
- for (const [k, v] of hiddenTabStates) {
125
- localFiles[`${k}.nako3`] = v.content
126
- }
127
- run({ outputContainer: document.getElementById('output'), file: `${activeFile}.nako3`, localFiles })
128
- })
129
-
130
- // テスト実行
131
- codeLensListeners.push({
132
- name: 'test',
133
- callback: (/** @type {string | undefined} */testName) => {
134
- /** @type {Record<string, string>} */
135
- const localFiles = {}
136
- for (const [k, v] of hiddenTabStates) {
137
- localFiles[`${k}.nako3`] = v.content
138
- }
139
- run({ outputContainer: document.getElementById('output'), file: `${activeFile}.nako3`, localFiles, method: 'test', testName })
140
- },
141
- })
142
-
143
- // 1.nako3の値を設定する
144
- addFile()
145
- tabButtons.get(1).disabled = true
146
- editor.setValue(`\
147
- !「2.nako3」を取り込む
148
-
149
- 「1.nako3」を表示
150
- Aを表示
151
- `)
152
- editor.session.selection.clearSelection()
153
-
154
- // 2.nako3の値を設定する
155
- addFile()
156
- hiddenTabStates.get(2).content = `\
157
- 「2.nako3」を表示
158
- A=2
159
- `
160
- </script>
161
- </body>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Nadesiko3 Editor</title>
8
+ <link rel="stylesheet" href="../src/wnako3_editor.css">
9
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js" integrity="sha512-GZ1RIgZaSc8rnco/8CXfRdCpDxRCphenIiZ2ztLy3XQfCbQUSCuk8IudvNHxkRA3oUg6q0qejgN/qqyG1duv5Q==" crossorigin="anonymous"></script>
10
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-language_tools.min.js" integrity="sha512-8qx1DL/2Wsrrij2TWX5UzvEaYOFVndR7BogdpOyF4ocMfnfkw28qt8ULkXD9Tef0bLvh3TpnSAljDC7uyniEuQ==" crossorigin="anonymous"></script>
11
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-options.min.js" integrity="sha512-oHR+WVzBiVZ6njlMVlDDLUIOLRDfUUfRQ55PfkZvgjwuvGqL4ohCTxaahJIxTmtya4jgyk0zmOxDMuLzbfqQDA==" crossorigin="anonymous"></script>
12
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ext-code_lens.min.js" integrity="sha512-gsDyyKTnOmSWRDzUbpYcPjzVsEyFGSWeWefzVKvbMULPR2ElIlKKsOtU3ycfybN9kncZXKLFSsUiG3cgJUbc/g==" crossorigin="anonymous"></script>
13
+ <script src="../release/wnako3.js"></script>
14
+ <script src="../release/version.js"></script>
15
+ <script src="../release/plugin_markup.js"></script>
16
+ <script src="../release/plugin_csv.js"></script>
17
+ <script src="../release/plugin_kansuji.js"></script>
18
+ <script src="../release/plugin_datetime.js"></script>
19
+ <script src="../release/plugin_turtle.js"></script>
20
+ <script src="../release/plugin_caniuse.js"></script>
21
+ <script src="../release/plugin_webworker.js"></script>
22
+
23
+ <!-- mochaを一番最後に読み込む必要がある -->
24
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/8.3.0/mocha.min.js" integrity="sha512-LA/TpBXau/JNubKzHQhdi5vGkRLyQjs1vpuk2W1nc8WNgf/pCqBplD8MzlzeKJQTZPvkEZi0HqBDfRC2EyLMXw==" crossorigin="anonymous"></script>
25
+
26
+ <style>
27
+ /* ボタンの高さを揃える */
28
+ .toolbar button, .toolbar input {
29
+ font-size: 12px;
30
+ height: 28px;
31
+ margin: 0;
32
+ padding: 0;
33
+ box-sizing: border-box;
34
+ vertical-align: top;
35
+ }
36
+
37
+ /* 出力の文字サイズと文字色 */
38
+ #output {
39
+ font-size: 13px;
40
+ color: rgb(77, 77, 77);
41
+ }
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div class="toolbar">
46
+ <button id="add">📁 ファイルを追加</button>
47
+ <button id="remove">🗑 ファイルを削除</button>
48
+ <span id="file-list"></span>
49
+ </div>
50
+ <div id="editor" data-nako3-resizable="true"></div>
51
+ <div class="toolbar">
52
+ <button id="run">表示中のファイルを実行</button>
53
+ </div>
54
+ <div id="output"></div>
55
+ <script>
56
+ /** @type {import('../src/wnako3.js')} */
57
+ const nako3 = navigator.nako3
58
+ const { editor, editorMarkers, editorTabs, retokenize, run, codeLensListeners } = nako3.setupEditor('editor')
59
+
60
+ /** @type {Map<number, HTMLButtonElement>} */
61
+ const tabButtons = new Map()
62
+ /** @type {Map<number, import('../src/wnako3_editor.js').EditorTabState>} */
63
+ const hiddenTabStates = new Map()
64
+
65
+ let fileCount = 0
66
+ let activeFile = 1
67
+
68
+ // タブの切り替え
69
+ const switchTab = (fileName) => {
70
+ hiddenTabStates.set(activeFile, editorTabs.getTab())
71
+ editorTabs.setTab(hiddenTabStates.get(fileName))
72
+ activeFile = fileName
73
+ }
74
+
75
+ // ファイルの追加
76
+ const addFile = () => {
77
+ const id = ++fileCount
78
+
79
+ // <button class="file">{id}.nako3</button> を挿入する。
80
+ const button = document.createElement('button')
81
+ button.innerText = id + '.nako3'
82
+ button.classList.add('file')
83
+ button.addEventListener('click', () => {
84
+ tabButtons.get(activeFile).disabled = false
85
+ button.disabled = true
86
+ switchTab(id)
87
+ })
88
+ document.getElementById('file-list').appendChild(button)
89
+ tabButtons.set(id, button)
90
+
91
+ // エディタの状態を生成
92
+ hiddenTabStates.set(id, editorTabs.newTab(`// ${id}.nako3\n`))
93
+ }
94
+ document.getElementById('add').addEventListener('click', () => { addFile() })
95
+
96
+ // ファイルの削除
97
+ const removeFile = () => {
98
+ if (tabButtons.size <= 1) {
99
+ alert('全てのファイルを削除することはできません。')
100
+ return
101
+ }
102
+ const input = prompt('削除するファイル名を指定してください。', tabButtons.size + '.nako3')
103
+ if (input === null) {
104
+ return
105
+ }
106
+ const id = +input.replace(/\.nako3$/, '')
107
+ if (!Number.isInteger(id)) {
108
+ alert(`${id}.nako3 は存在しません。`)
109
+ return
110
+ }
111
+ if (id === activeFile) {
112
+ alert(`表示中のファイルは削除できません。`)
113
+ return
114
+ }
115
+ document.getElementById('file-list').removeChild(tabButtons.get(id))
116
+ tabButtons.delete(id)
117
+ }
118
+ document.getElementById('remove').addEventListener('click', () => { removeFile() })
119
+
120
+ // 実行
121
+ document.getElementById('run').addEventListener('click', () => {
122
+ /** @type {Record<string, string>} */
123
+ const localFiles = {}
124
+ for (const [k, v] of hiddenTabStates) {
125
+ localFiles[`${k}.nako3`] = v.content
126
+ }
127
+ run({ outputContainer: document.getElementById('output'), file: `${activeFile}.nako3`, localFiles })
128
+ })
129
+
130
+ // テスト実行
131
+ codeLensListeners.push({
132
+ name: 'test',
133
+ callback: (/** @type {string | undefined} */testName) => {
134
+ /** @type {Record<string, string>} */
135
+ const localFiles = {}
136
+ for (const [k, v] of hiddenTabStates) {
137
+ localFiles[`${k}.nako3`] = v.content
138
+ }
139
+ run({ outputContainer: document.getElementById('output'), file: `${activeFile}.nako3`, localFiles, method: 'test', testName })
140
+ },
141
+ })
142
+
143
+ // 1.nako3の値を設定する
144
+ addFile()
145
+ tabButtons.get(1).disabled = true
146
+ editor.setValue(`\
147
+ !「2.nako3」を取り込む
148
+
149
+ 「1.nako3」を表示
150
+ Aを表示
151
+ `)
152
+ editor.session.selection.clearSelection()
153
+
154
+ // 2.nako3の値を設定する
155
+ addFile()
156
+ hiddenTabStates.get(2).content = `\
157
+ 「2.nako3」を表示
158
+ A=2
159
+ `
160
+ </script>
161
+ </body>
162
162
  </html>
package/demo/basic.html CHANGED
@@ -1,71 +1,71 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <title>なでしこ3</title>
7
- <!-- common -->
8
- <link rel="stylesheet" type="text/css" href="css/common.css">
9
- <!-- basic -->
10
- <link rel="stylesheet" type="text/css" href="css/basic.css">
11
- <link rel="stylesheet" href="../src/wnako3_editor.css">
12
- <script src="extlib/ace@1.4.12/ace.js" integrity="sha512-GZ1RIgZaSc8rnco/8CXfRdCpDxRCphenIiZ2ztLy3XQfCbQUSCuk8IudvNHxkRA3oUg6q0qejgN/qqyG1duv5Q==" crossorigin="anonymous"></script>
13
- <script src="extlib/ace@1.4.12/ext-language_tools.min.js" integrity="sha512-8qx1DL/2Wsrrij2TWX5UzvEaYOFVndR7BogdpOyF4ocMfnfkw28qt8ULkXD9Tef0bLvh3TpnSAljDC7uyniEuQ==" crossorigin="anonymous"></script>
14
- <script src="extlib/ace@1.4.12/ext-options.min.js" integrity="sha512-oHR+WVzBiVZ6njlMVlDDLUIOLRDfUUfRQ55PfkZvgjwuvGqL4ohCTxaahJIxTmtya4jgyk0zmOxDMuLzbfqQDA==" crossorigin="anonymous"></script>
15
- <script src="extlib/ace@1.4.12/ext-code_lens.min.js" integrity="sha512-gsDyyKTnOmSWRDzUbpYcPjzVsEyFGSWeWefzVKvbMULPR2ElIlKKsOtU3ycfybN9kncZXKLFSsUiG3cgJUbc/g==" crossorigin="anonymous"></script>
16
- </head>
17
- <body>
18
- <h1>なでしこ3デモ</h1>
19
- <hr>
20
- <h3>試してみよう!</h3>
21
- <div class="sbox">
22
- <h4>簡単な計算</h4>
23
- <div class="editor-component">
24
- <script type="application/json">
25
- {
26
- "title": "簡単な計算",
27
- "code": "1+2を表示。\n100÷5を表示。\n(1 + 2)×3を表示。"
28
- }
29
- </script>
30
- </div>
31
- </div>
32
-
33
- <div class="sbox">
34
- <h4>変数を使った計算</h4>
35
- <div class="editor-component">
36
- <script type="application/json">
37
- {
38
- "title": "変数を使った計算",
39
- "code": "価格=500\n個数=3\n税率=0.08\n合計額=価格×個数\n税額=合計額×税率\n支払い=合計額+税額\n「お支払いは、{支払い}円です!」と表示。"
40
- }
41
- </script>
42
- </div>
43
- </div>
44
-
45
- <div class="sbox">
46
- <h4>BMIの計算</h4>
47
- <div class="editor-component">
48
- <script type="application/json">
49
- {
50
- "title": "BMIの計算",
51
- "code": "身長=160\n体重=50\n身長M=身長÷100\nBMI=体重÷(身長M×身長M)\n適正体重=身長M×身長M×22\n肥満度=(体重/適正体重)\n「BMI ... {BMI}」を表示。\n「肥満度 ... {肥満度}」を表示。\n「適正体重 ... {適正体重}」を表示。"
52
- }
53
- </script>
54
- </div>
55
- </div>
56
-
57
- <div class="sbox">
58
- <h3>その他</h3>
59
- <ul>
60
- <li><a href="browsers.html">対応機器/Webブラウザ</a></li>
61
- </ul>
62
- </div>
63
-
64
- <!-- editor -->
65
- <!--React.jsのスクリプトはHTMLの末尾で読み込む-->
66
- <script src="../release/wnako3.js"></script>
67
- <script src="../release/editor.js"></script>
68
- <script src="../release/plugin_turtle.js"></script>
69
- <script src="../release/plugin_markup.js"></script>
70
- </body>
71
- </html>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>なでしこ3</title>
7
+ <!-- common -->
8
+ <link rel="stylesheet" type="text/css" href="css/common.css">
9
+ <!-- basic -->
10
+ <link rel="stylesheet" type="text/css" href="css/basic.css">
11
+ <link rel="stylesheet" href="../src/wnako3_editor.css">
12
+ <script src="extlib/ace@1.4.12/ace.js" integrity="sha512-GZ1RIgZaSc8rnco/8CXfRdCpDxRCphenIiZ2ztLy3XQfCbQUSCuk8IudvNHxkRA3oUg6q0qejgN/qqyG1duv5Q==" crossorigin="anonymous"></script>
13
+ <script src="extlib/ace@1.4.12/ext-language_tools.min.js" integrity="sha512-8qx1DL/2Wsrrij2TWX5UzvEaYOFVndR7BogdpOyF4ocMfnfkw28qt8ULkXD9Tef0bLvh3TpnSAljDC7uyniEuQ==" crossorigin="anonymous"></script>
14
+ <script src="extlib/ace@1.4.12/ext-options.min.js" integrity="sha512-oHR+WVzBiVZ6njlMVlDDLUIOLRDfUUfRQ55PfkZvgjwuvGqL4ohCTxaahJIxTmtya4jgyk0zmOxDMuLzbfqQDA==" crossorigin="anonymous"></script>
15
+ <script src="extlib/ace@1.4.12/ext-code_lens.min.js" integrity="sha512-gsDyyKTnOmSWRDzUbpYcPjzVsEyFGSWeWefzVKvbMULPR2ElIlKKsOtU3ycfybN9kncZXKLFSsUiG3cgJUbc/g==" crossorigin="anonymous"></script>
16
+ </head>
17
+ <body>
18
+ <h1>なでしこ3デモ</h1>
19
+ <hr>
20
+ <h3>試してみよう!</h3>
21
+ <div class="sbox">
22
+ <h4>簡単な計算</h4>
23
+ <div class="editor-component">
24
+ <script type="application/json">
25
+ {
26
+ "title": "簡単な計算",
27
+ "code": "1+2を表示。\n100÷5を表示。\n(1 + 2)×3を表示。"
28
+ }
29
+ </script>
30
+ </div>
31
+ </div>
32
+
33
+ <div class="sbox">
34
+ <h4>変数を使った計算</h4>
35
+ <div class="editor-component">
36
+ <script type="application/json">
37
+ {
38
+ "title": "変数を使った計算",
39
+ "code": "価格=500\n個数=3\n税率=0.08\n合計額=価格×個数\n税額=合計額×税率\n支払い=合計額+税額\n「お支払いは、{支払い}円です!」と表示。"
40
+ }
41
+ </script>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="sbox">
46
+ <h4>BMIの計算</h4>
47
+ <div class="editor-component">
48
+ <script type="application/json">
49
+ {
50
+ "title": "BMIの計算",
51
+ "code": "身長=160\n体重=50\n身長M=身長÷100\nBMI=体重÷(身長M×身長M)\n適正体重=身長M×身長M×22\n肥満度=(体重/適正体重)\n「BMI ... {BMI}」を表示。\n「肥満度 ... {肥満度}」を表示。\n「適正体重 ... {適正体重}」を表示。"
52
+ }
53
+ </script>
54
+ </div>
55
+ </div>
56
+
57
+ <div class="sbox">
58
+ <h3>その他</h3>
59
+ <ul>
60
+ <li><a href="browsers.html">対応機器/Webブラウザ</a></li>
61
+ </ul>
62
+ </div>
63
+
64
+ <!-- editor -->
65
+ <!--React.jsのスクリプトはHTMLの末尾で読み込む-->
66
+ <script src="../release/wnako3.js"></script>
67
+ <script src="../release/editor.js"></script>
68
+ <script src="../release/plugin_turtle.js"></script>
69
+ <script src="../release/plugin_markup.js"></script>
70
+ </body>
71
+ </html>
@@ -8,12 +8,12 @@
8
8
  <h2 id="デスクトップ">デスクトップ</h2>
9
9
 
10
10
  <ul>
11
- <li>Edge (100/99/98以上)</li>
12
- <li>Firefox (99/98/97/91以上)</li>
13
- <li>Chrome (100/99/98/97以上)</li>
14
- <li>Safari (15.4/15.2-15.3/14.1以上)</li>
15
- <li>Opera (83/82以上)</li>
16
- <li>Node.js (17.9.0/16.14.0/14.19.0以上)</li>
11
+ <li>Edge (101/100/99以上)</li>
12
+ <li>Firefox (100/99/98/91以上)</li>
13
+ <li>Chrome (101/100/99以上)</li>
14
+ <li>Safari (15.5/15.4/14.1以上)</li>
15
+ <li>Opera (86/85以上)</li>
16
+ <li>Node.js (18.2.0/17.9.0/16.15.0/14.19.0以上)</li>
17
17
  </ul>
18
18
 
19
19
  <h2 id="モバイル">モバイル</h2>
@@ -21,14 +21,13 @@
21
21
  <ul>
22
22
  <li>Safari on iOS (15.4/15.2-15.3/15.0-15.1/14.5-14.8/14.0-14.4/12.2-12.5以上)</li>
23
23
  <li>Opera Mini (all以上)</li>
24
- <li>Android Browser (100以上)</li>
24
+ <li>Android Browser (101以上)</li>
25
25
  <li>Opera Mobile (64以上)</li>
26
- <li>Chrome for Android (100以上)</li>
27
- <li>Firefox for Android (99以上)</li>
26
+ <li>Chrome for Android (101以上)</li>
27
+ <li>Firefox for Android (100以上)</li>
28
28
  <li>UC Browser for Android (12.12以上)</li>
29
29
  <li>Samsung Internet (16.0/15.0以上)</li>
30
30
  <li>QQ Browser (10.4以上)</li>
31
- <li>Baidu Browser (7.12以上)</li>
32
31
  <li>KaiOS Browser (2.5以上)</li>
33
32
  </ul>
34
33
  </body></html>
@@ -1,3 +1,3 @@
1
- .sbox {
2
- border: 1px solid gray;
3
- }
1
+ .sbox {
2
+ border: 1px solid gray;
3
+ }