@famibee/skynovel 1.48.13 → 1.63.12

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 (289) hide show
  1. package/README.md +2 -1
  2. package/dist/CallStack.js +25 -0
  3. package/dist/CallStack.js.map +1 -0
  4. package/dist/EventMng.js +1588 -0
  5. package/dist/EventMng.js.map +1 -0
  6. package/dist/LayerMng.js +2924 -0
  7. package/dist/LayerMng.js.map +1 -0
  8. package/dist/PropParser.js +833 -0
  9. package/dist/PropParser.js.map +1 -0
  10. package/dist/Reading.js +784 -0
  11. package/dist/Reading.js.map +1 -0
  12. package/dist/ScriptIterator.js +1125 -0
  13. package/dist/ScriptIterator.js.map +1 -0
  14. package/dist/SndBuf.js +1519 -0
  15. package/dist/SndBuf.js.map +1 -0
  16. package/dist/SoundMng.js +136 -0
  17. package/dist/SoundMng.js.map +1 -0
  18. package/dist/Variable.js +479 -0
  19. package/dist/Variable.js.map +1 -0
  20. package/dist/app.d.ts +5 -1
  21. package/dist/app.d.ts.map +1 -1
  22. package/dist/appMain.d.ts +6 -6
  23. package/dist/appMain.d.ts.map +1 -1
  24. package/dist/appMain_cmn.d.ts +30 -0
  25. package/dist/appMain_cmn.d.ts.map +1 -0
  26. package/dist/build.d.ts +2 -0
  27. package/dist/build.d.ts.map +1 -0
  28. package/dist/gamepad.js +511 -0
  29. package/dist/gamepad.js.map +1 -0
  30. package/dist/index.d.ts +32 -38
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/preload.d.ts +34 -31
  33. package/dist/preload.d.ts.map +1 -1
  34. package/dist/sn/AnalyzeTagArg.d.ts +10 -6
  35. package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
  36. package/dist/sn/Areas.d.ts +7 -5
  37. package/dist/sn/Areas.d.ts.map +1 -1
  38. package/dist/sn/Button.d.ts +2 -2
  39. package/dist/sn/Button.d.ts.map +1 -1
  40. package/dist/sn/CallStack.d.ts +12 -5
  41. package/dist/sn/CallStack.d.ts.map +1 -1
  42. package/dist/sn/CmnInterface.d.ts +178 -117
  43. package/dist/sn/CmnInterface.d.ts.map +1 -1
  44. package/dist/sn/CmnLib.d.ts +20 -19
  45. package/dist/sn/CmnLib.d.ts.map +1 -1
  46. package/dist/sn/CmnTween.d.ts +6 -8
  47. package/dist/sn/CmnTween.d.ts.map +1 -1
  48. package/dist/sn/Config.d.ts +6 -4
  49. package/dist/sn/Config.d.ts.map +1 -1
  50. package/dist/sn/ConfigBase.d.ts +39 -24
  51. package/dist/sn/ConfigBase.d.ts.map +1 -1
  52. package/dist/sn/DebugMng.d.ts +3 -2
  53. package/dist/sn/DebugMng.d.ts.map +1 -1
  54. package/dist/sn/DesignCast.d.ts +5 -6
  55. package/dist/sn/DesignCast.d.ts.map +1 -1
  56. package/dist/sn/EventListenerCtn.d.ts +3 -3
  57. package/dist/sn/EventListenerCtn.d.ts.map +1 -1
  58. package/dist/sn/EventMng.d.ts +5 -11
  59. package/dist/sn/EventMng.d.ts.map +1 -1
  60. package/dist/sn/FocusMng.d.ts.map +1 -1
  61. package/dist/sn/FrameMng.d.ts +3 -4
  62. package/dist/sn/FrameMng.d.ts.map +1 -1
  63. package/dist/sn/Grammar.d.ts +133 -16
  64. package/dist/sn/Grammar.d.ts.map +1 -1
  65. package/dist/sn/GrpLayer.d.ts +8 -4
  66. package/dist/sn/GrpLayer.d.ts.map +1 -1
  67. package/dist/sn/Hyphenation.d.ts +42 -0
  68. package/dist/sn/Hyphenation.d.ts.map +1 -0
  69. package/dist/sn/Layer.d.ts +24 -4
  70. package/dist/sn/Layer.d.ts.map +1 -1
  71. package/dist/sn/LayerMng.d.ts +17 -24
  72. package/dist/sn/LayerMng.d.ts.map +1 -1
  73. package/dist/sn/Log.d.ts +18 -0
  74. package/dist/sn/Log.d.ts.map +1 -0
  75. package/dist/sn/Main.d.ts +4 -6
  76. package/dist/sn/Main.d.ts.map +1 -1
  77. package/dist/sn/Pages.d.ts +1 -1
  78. package/dist/sn/Pages.d.ts.map +1 -1
  79. package/dist/sn/PropParser.d.ts +2 -2
  80. package/dist/sn/PropParser.d.ts.map +1 -1
  81. package/dist/sn/Reading.d.ts +86 -0
  82. package/dist/sn/Reading.d.ts.map +1 -0
  83. package/dist/sn/RubySpliter.d.ts +1 -3
  84. package/dist/sn/RubySpliter.d.ts.map +1 -1
  85. package/dist/sn/ScriptIterator.d.ts +20 -10
  86. package/dist/sn/ScriptIterator.d.ts.map +1 -1
  87. package/dist/sn/SndBuf.d.ts +15 -5
  88. package/dist/sn/SndBuf.d.ts.map +1 -1
  89. package/dist/sn/SoundMng.d.ts +3 -2
  90. package/dist/sn/SoundMng.d.ts.map +1 -1
  91. package/dist/sn/SpritesMng.d.ts +4 -4
  92. package/dist/sn/SpritesMng.d.ts.map +1 -1
  93. package/dist/sn/SysApp.d.ts +12 -16
  94. package/dist/sn/SysApp.d.ts.map +1 -1
  95. package/dist/sn/SysBase.d.ts +24 -27
  96. package/dist/sn/SysBase.d.ts.map +1 -1
  97. package/dist/sn/SysNode.d.ts +9 -9
  98. package/dist/sn/SysNode.d.ts.map +1 -1
  99. package/dist/sn/SysWeb.d.ts +10 -14
  100. package/dist/sn/SysWeb.d.ts.map +1 -1
  101. package/dist/sn/TxtLayer.d.ts +79 -7
  102. package/dist/sn/TxtLayer.d.ts.map +1 -1
  103. package/dist/sn/TxtStage.d.ts +45 -30
  104. package/dist/sn/TxtStage.d.ts.map +1 -1
  105. package/dist/sn/Variable.d.ts +33 -13
  106. package/dist/sn/Variable.d.ts.map +1 -1
  107. package/dist/sn/htm2tx.d.ts +3 -0
  108. package/dist/sn/htm2tx.d.ts.map +1 -0
  109. package/dist/test/AnalyzeTagArg.test.d.ts +2 -0
  110. package/dist/test/AnalyzeTagArg.test.d.ts.map +1 -0
  111. package/dist/test/AreasTest.test.d.ts +2 -0
  112. package/dist/test/AreasTest.test.d.ts.map +1 -0
  113. package/dist/test/CmnLib.test.d.ts +2 -0
  114. package/dist/test/CmnLib.test.d.ts.map +1 -0
  115. package/dist/test/Config.test.d.ts +2 -0
  116. package/dist/test/Config.test.d.ts.map +1 -0
  117. package/dist/test/Grammar.test.d.ts +2 -0
  118. package/dist/test/Grammar.test.d.ts.map +1 -0
  119. package/dist/test/HyphTest.test.d.ts +2 -0
  120. package/dist/test/HyphTest.test.d.ts.map +1 -0
  121. package/dist/test/Log.test.d.ts +2 -0
  122. package/dist/test/Log.test.d.ts.map +1 -0
  123. package/dist/test/PropParser.test.d.ts +2 -0
  124. package/dist/test/PropParser.test.d.ts.map +1 -0
  125. package/dist/test/RubySpliter.test.d.ts +2 -0
  126. package/dist/test/RubySpliter.test.d.ts.map +1 -0
  127. package/dist/test/SysTest.d.ts +5 -0
  128. package/dist/test/SysTest.d.ts.map +1 -0
  129. package/dist/test/ValTest.d.ts +31 -0
  130. package/dist/test/ValTest.d.ts.map +1 -0
  131. package/dist/test/Variable.test.d.ts +2 -0
  132. package/dist/test/Variable.test.d.ts.map +1 -0
  133. package/dist/web.d.ts +5 -1
  134. package/dist/web.d.ts.map +1 -1
  135. package/dist/web.js +6 -30102
  136. package/dist/web.js.map +1 -1
  137. package/dist/web2.js +23020 -0
  138. package/dist/web2.js.map +1 -0
  139. package/dist_app/CallStack.js +25 -0
  140. package/dist_app/CallStack.js.map +1 -0
  141. package/dist_app/EventMng.js +1588 -0
  142. package/dist_app/EventMng.js.map +1 -0
  143. package/dist_app/LayerMng.js +2924 -0
  144. package/dist_app/LayerMng.js.map +1 -0
  145. package/dist_app/PropParser.js +833 -0
  146. package/dist_app/PropParser.js.map +1 -0
  147. package/dist_app/Reading.js +784 -0
  148. package/dist_app/Reading.js.map +1 -0
  149. package/dist_app/ScriptIterator.js +1125 -0
  150. package/dist_app/ScriptIterator.js.map +1 -0
  151. package/dist_app/SndBuf.js +1519 -0
  152. package/dist_app/SndBuf.js.map +1 -0
  153. package/dist_app/SoundMng.js +136 -0
  154. package/dist_app/SoundMng.js.map +1 -0
  155. package/dist_app/Variable.js +479 -0
  156. package/dist_app/Variable.js.map +1 -0
  157. package/dist_app/app.d.ts +9 -0
  158. package/dist_app/app.d.ts.map +1 -0
  159. package/dist_app/app.js +9 -0
  160. package/dist_app/app.js.map +1 -0
  161. package/dist_app/app2.js +19819 -0
  162. package/dist_app/app2.js.map +1 -0
  163. package/dist_app/appMain.d.ts +9 -0
  164. package/dist_app/appMain.d.ts.map +1 -0
  165. package/dist_app/appMain.js +23 -0
  166. package/dist_app/appMain.js.map +1 -0
  167. package/dist_app/appMain_cmn.d.ts +30 -0
  168. package/dist_app/appMain_cmn.d.ts.map +1 -0
  169. package/dist_app/build.d.ts +2 -0
  170. package/dist_app/build.d.ts.map +1 -0
  171. package/dist_app/gamepad.js +511 -0
  172. package/dist_app/gamepad.js.map +1 -0
  173. package/dist_app/index.d.ts +33 -0
  174. package/dist_app/index.d.ts.map +1 -0
  175. package/dist_app/preload.d.ts +47 -0
  176. package/dist_app/preload.d.ts.map +1 -0
  177. package/dist_app/preload.js +2 -0
  178. package/dist_app/preload.js.map +1 -0
  179. package/dist_app/sn/AnalyzeTagArg.d.ts +28 -0
  180. package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -0
  181. package/dist_app/sn/Areas.d.ts +15 -0
  182. package/dist_app/sn/Areas.d.ts.map +1 -0
  183. package/dist_app/sn/Button.d.ts +23 -0
  184. package/dist_app/sn/Button.d.ts.map +1 -0
  185. package/dist_app/sn/CallStack.d.ts +23 -0
  186. package/dist_app/sn/CallStack.d.ts.map +1 -0
  187. package/dist_app/sn/CmnInterface.d.ts +227 -0
  188. package/dist_app/sn/CmnInterface.d.ts.map +1 -0
  189. package/dist_app/sn/CmnLib.d.ts +46 -0
  190. package/dist_app/sn/CmnLib.d.ts.map +1 -0
  191. package/dist_app/sn/CmnTween.d.ts +35 -0
  192. package/dist_app/sn/CmnTween.d.ts.map +1 -0
  193. package/dist_app/sn/Config.d.ts +12 -0
  194. package/dist_app/sn/Config.d.ts.map +1 -0
  195. package/dist_app/sn/ConfigBase.d.ts +111 -0
  196. package/dist_app/sn/ConfigBase.d.ts.map +1 -0
  197. package/dist_app/sn/DebugMng.d.ts +14 -0
  198. package/dist_app/sn/DebugMng.d.ts.map +1 -0
  199. package/dist_app/sn/DesignCast.d.ts +53 -0
  200. package/dist_app/sn/DesignCast.d.ts.map +1 -0
  201. package/dist_app/sn/EventListenerCtn.d.ts +13 -0
  202. package/dist_app/sn/EventListenerCtn.d.ts.map +1 -0
  203. package/dist_app/sn/EventMng.d.ts +29 -0
  204. package/dist_app/sn/EventMng.d.ts.map +1 -0
  205. package/dist_app/sn/FocusMng.d.ts +13 -0
  206. package/dist_app/sn/FocusMng.d.ts.map +1 -0
  207. package/dist_app/sn/FrameMng.d.ts +20 -0
  208. package/dist_app/sn/FrameMng.d.ts.map +1 -0
  209. package/dist_app/sn/Grammar.d.ts +291 -0
  210. package/dist_app/sn/Grammar.d.ts.map +1 -0
  211. package/dist_app/sn/GrpLayer.d.ts +49 -0
  212. package/dist_app/sn/GrpLayer.d.ts.map +1 -0
  213. package/dist_app/sn/Hyphenation.d.ts +42 -0
  214. package/dist_app/sn/Hyphenation.d.ts.map +1 -0
  215. package/dist_app/sn/Layer.d.ts +86 -0
  216. package/dist_app/sn/Layer.d.ts.map +1 -0
  217. package/dist_app/sn/LayerMng.d.ts +46 -0
  218. package/dist_app/sn/LayerMng.d.ts.map +1 -0
  219. package/dist_app/sn/Log.d.ts +18 -0
  220. package/dist_app/sn/Log.d.ts.map +1 -0
  221. package/dist_app/sn/Main.d.ts +16 -0
  222. package/dist_app/sn/Main.d.ts.map +1 -0
  223. package/dist_app/sn/Pages.d.ts +26 -0
  224. package/dist_app/sn/Pages.d.ts.map +1 -0
  225. package/dist_app/sn/PropParser.d.ts +12 -0
  226. package/dist_app/sn/PropParser.d.ts.map +1 -0
  227. package/dist_app/sn/Reading.d.ts +86 -0
  228. package/dist_app/sn/Reading.d.ts.map +1 -0
  229. package/dist_app/sn/RubySpliter.d.ts +14 -0
  230. package/dist_app/sn/RubySpliter.d.ts.map +1 -0
  231. package/dist_app/sn/ScriptIterator.d.ts +58 -0
  232. package/dist_app/sn/ScriptIterator.d.ts.map +1 -0
  233. package/dist_app/sn/SndBuf.d.ts +30 -0
  234. package/dist_app/sn/SndBuf.d.ts.map +1 -0
  235. package/dist_app/sn/SoundMng.d.ts +16 -0
  236. package/dist_app/sn/SoundMng.d.ts.map +1 -0
  237. package/dist_app/sn/SpritesMng.d.ts +27 -0
  238. package/dist_app/sn/SpritesMng.d.ts.map +1 -0
  239. package/dist_app/sn/SysApp.d.ts +32 -0
  240. package/dist_app/sn/SysApp.d.ts.map +1 -0
  241. package/dist_app/sn/SysBase.d.ts +79 -0
  242. package/dist_app/sn/SysBase.d.ts.map +1 -0
  243. package/dist_app/sn/SysNode.d.ts +15 -0
  244. package/dist_app/sn/SysNode.d.ts.map +1 -0
  245. package/dist_app/sn/SysWeb.d.ts +26 -0
  246. package/dist_app/sn/SysWeb.d.ts.map +1 -0
  247. package/dist_app/sn/TxtLayer.d.ts +121 -0
  248. package/dist_app/sn/TxtLayer.d.ts.map +1 -0
  249. package/dist_app/sn/TxtStage.d.ts +90 -0
  250. package/dist_app/sn/TxtStage.d.ts.map +1 -0
  251. package/dist_app/sn/Variable.d.ts +48 -0
  252. package/dist_app/sn/Variable.d.ts.map +1 -0
  253. package/dist_app/sn/htm2tx.d.ts +3 -0
  254. package/dist_app/sn/htm2tx.d.ts.map +1 -0
  255. package/dist_app/test/AnalyzeTagArg.test.d.ts +2 -0
  256. package/dist_app/test/AnalyzeTagArg.test.d.ts.map +1 -0
  257. package/dist_app/test/AreasTest.test.d.ts +2 -0
  258. package/dist_app/test/AreasTest.test.d.ts.map +1 -0
  259. package/dist_app/test/CmnLib.test.d.ts +2 -0
  260. package/dist_app/test/CmnLib.test.d.ts.map +1 -0
  261. package/dist_app/test/Config.test.d.ts +2 -0
  262. package/dist_app/test/Config.test.d.ts.map +1 -0
  263. package/dist_app/test/Grammar.test.d.ts +2 -0
  264. package/dist_app/test/Grammar.test.d.ts.map +1 -0
  265. package/dist_app/test/HyphTest.test.d.ts +2 -0
  266. package/dist_app/test/HyphTest.test.d.ts.map +1 -0
  267. package/dist_app/test/Log.test.d.ts +2 -0
  268. package/dist_app/test/Log.test.d.ts.map +1 -0
  269. package/dist_app/test/PropParser.test.d.ts +2 -0
  270. package/dist_app/test/PropParser.test.d.ts.map +1 -0
  271. package/dist_app/test/RubySpliter.test.d.ts +2 -0
  272. package/dist_app/test/RubySpliter.test.d.ts.map +1 -0
  273. package/dist_app/test/SysTest.d.ts +5 -0
  274. package/dist_app/test/SysTest.d.ts.map +1 -0
  275. package/dist_app/test/ValTest.d.ts +31 -0
  276. package/dist_app/test/ValTest.d.ts.map +1 -0
  277. package/dist_app/test/Variable.test.d.ts +2 -0
  278. package/dist_app/test/Variable.test.d.ts.map +1 -0
  279. package/dist_app/web.d.ts +9 -0
  280. package/dist_app/web.d.ts.map +1 -0
  281. package/package.json +57 -51
  282. package/dist/app.js +0 -28154
  283. package/dist/app.js.map +0 -1
  284. package/dist/appMain.js +0 -16
  285. package/dist/appMain.js.map +0 -1
  286. package/dist/preload.js +0 -2
  287. package/dist/preload.js.map +0 -1
  288. package/dist/sn/ReadState.d.ts +0 -79
  289. package/dist/sn/ReadState.d.ts.map +0 -1
@@ -0,0 +1,1125 @@
1
+ import { K as B, g as S, M as D, m as w, N as T, q as y, e as d, O as $, L as I, D as g, d as O, c as M } from "./web2.js";
2
+ import { c as j, C as x, a as L } from "./CallStack.js";
3
+ import { C as N, a as F } from "./SndBuf.js";
4
+ import { a as b, R as E } from "./Reading.js";
5
+ class k {
6
+ static #s = "ヽ";
7
+ static setting(t) {
8
+ t.sesame && (k.#s = t.sesame);
9
+ }
10
+ static getSesame() {
11
+ return k.#s;
12
+ }
13
+ static destroy() {
14
+ k.#s = "ヽ";
15
+ }
16
+ #i = () => {
17
+ };
18
+ init(t) {
19
+ this.#i = t;
20
+ }
21
+ /*
22
+ ★Unicodeで「漢字」の正規表現 – ものかの http://tama-san.com/kanji-regex/
23
+ 2E80..2FDF CJK部首補助+康熙部首
24
+ 3005 々(漢字の踊り字)
25
+ 3007 〇(漢数字のゼロ)
26
+ 303B 〻(漢字の踊り字)
27
+ 3400..4DBF CJK統合漢字拡張A
28
+ 4E00..9FFF CJK統合漢字
29
+ F900..FAFF CJK互換漢字
30
+ 20000..2FFFF CJK統合漢字拡張B〜F+CJK互換漢字追加+念のためU+2FFFFまで
31
+
32
+ [\x{2E80}-\x{2FDF}々〇〻\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{F900}-\x{FAFF}\x{20000}-\x{2FFFF}]
33
+ [\u2E80-\u2FDF々〇〻\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\u20000-\u2FFFF]
34
+ [⺀-⿟々〇〻㐀-䶿一-鿿豈-﫿\u20000-\u2FFFF] // 含まれない文字がある
35
+ [⺀-⿟々〇〻㐀-鿿豈-﫿\u20000-\u2FFFF] // ヽ--30FD が変に引っかかる。多分\u2000-\u2FFF解釈
36
+ \\u{20000}-\\u{2FFFF} // 五桁だとエラー
37
+
38
+ 【2022/10/03】ruby正規表現のUnicode プロパティ(とPOSIX文字クラス) - Qiita https://qiita.com/Takayuki_Nakano/items/8d38beaddb84b488d683
39
+ > このHiraganaプロパティ、長音記号は含まれていません。
40
+ > \p{Han}…簡体字や繁体字、韓国語の漢字…ベトナム語の漢字にもマッチ
41
+
42
+ ・Unicode文字一覧表 - instant tools https://tools.m-bsys.com/ex/unicode_table.php
43
+ */
44
+ static #t;
45
+ static setEscape(t) {
46
+ k.#t = new RegExp(
47
+ (t ? `(?<ce>\\${t}\\S)|` : "") + "|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\n])《(?<kan_ruby>[^》\\n]+)》)|(?<txt>[\uD800-\uDBFF][\uDC00-\uDFFF]|[^|《》]+?|.)",
48
+ "gs"
49
+ );
50
+ }
51
+ putTxt(t) {
52
+ for (const { groups: s } of t.matchAll(k.#t)) {
53
+ const { ruby: i, kan_ruby: n, kan: a = "", ce: h, txt: o = "", str: r = "" } = s;
54
+ if (i) {
55
+ this.putTxtRb(decodeURIComponent(r), i);
56
+ continue;
57
+ }
58
+ if (n) {
59
+ this.putTxtRb(a, n);
60
+ continue;
61
+ }
62
+ if (h) {
63
+ this.#i(h.slice(1), "");
64
+ continue;
65
+ }
66
+ for (const e of Array.from(o)) this.#i(e, "");
67
+ }
68
+ }
69
+ putTxtRb(t, s) {
70
+ if (/^\w+|{"/.test(s)) {
71
+ this.#i(t, s);
72
+ return;
73
+ }
74
+ const i = Array.from(t), n = i.length;
75
+ if (/^\*.?$/.test(s)) {
76
+ const r = "center|" + (s === "*" ? k.#s : s.charAt(1));
77
+ for (let e = 0; e < n; ++e) this.#i(i[e], r);
78
+ return;
79
+ }
80
+ if (n === 1 || !s.includes(" ")) {
81
+ this.#i(t, decodeURIComponent(s));
82
+ return;
83
+ }
84
+ const a = s.split(" "), h = a.length, o = h > n ? h : n;
85
+ for (let r = 0; r < o; ++r) this.#i(
86
+ r < n ? i[r] : "",
87
+ r < h ? decodeURIComponent(a[r]) : ""
88
+ );
89
+ }
90
+ }
91
+ const C = "compChIn";
92
+ class p {
93
+ //MARK: コンストラクタ
94
+ constructor(t, s, i, n, a, h, o) {
95
+ this.cfg = t, this.hTag = s, this.main = i, this.val = n, this.prpPrs = a, this.sndMng = h, this.sys = o, s.let_ml = (e) => this.#Z(e), s.endlet_ml = () => !1, s.dump_stack = () => this.#tt(), s.dump_script = (e) => this.#st(e), s.else = // その他ifブロック開始
96
+ s.elsif = // 別条件のifブロック開始
97
+ s.endif = () => this.#et(), s.if = (e) => this.#nt(e), s.call = (e) => this.#at(e), s.jump = (e) => this.#ht(e), s.pop_stack = (e) => this.#ot(e), s.return = (e) => this.#j(e), s.bracket2macro = (e) => this.#kt(e), s.char2macro = (e) => this.#gt(e), s.endmacro = (e) => this.#j(e), s.macro = (e) => this.#bt(e), s.load = (e) => this.#vt(e), s.reload_script = (e) => this.#St(e), s.record_place = () => this.#q(), s.save = (e) => this.#wt(e), t.oCfg.debug.token && (this.#W = (e) => {
98
+ e.trim() !== "" && console.log(`🌱 トークン ${this.#i}:${String(this.#e)} (i:${String(this.#t)} cs:${String(this.#n.length)}) %c【${e}】`, "background-color:#350;");
99
+ }), t.oCfg.debug.tag && (this.#D = (e) => console.log(`🌲 タグ解析 ${this.#i}:${String(this.#e)} (i:${String(this.#t)} cs:${String(this.#n.length)}) %c[${e} %o]`, "background-color:#30B;", this.#r.hPrm)), n.defTmp("const.sn.aIfStk.length", () => this.#o.length), n.defTmp("const.sn.vctCallStk.length", () => this.#n.length), this.#c = new B(t);
100
+ const r = t.oCfg.init.escape;
101
+ if (this.#c.setEscape(r), k.setEscape(r), S.isDbg) {
102
+ this.#k, o.addHook((l, f) => this.#k[l]?.(f)), this.isBreak = (l) => this.#U(l);
103
+ const e = () => this.analyzeInit();
104
+ this.analyzeInit = () => {
105
+ this.analyzeInit = () => {
106
+ }, this.sys.send2Dbg("hi", {});
107
+ }, this.#k.auth = (l) => {
108
+ const f = l.hBreakpoint.hFn2hLineBP;
109
+ for (const [c, u] of Object.entries(f)) this.#E(c, u);
110
+ p.#p = {};
111
+ for (const c of l.hBreakpoint.aFunc)
112
+ p.#p[c.name] = 1;
113
+ if (l.stopOnEntry) {
114
+ let c;
115
+ for (; c = this.nextToken(); ) {
116
+ const u = c.charCodeAt(0);
117
+ if (u === 91 || u === 38 || u === 42 && c.length === 1) break;
118
+ u === 10 && (this.#e += c.length);
119
+ }
120
+ this.sys.callHook("stopOnEntry", {}), this.analyzeInit = e, this.analyzeInit();
121
+ } else
122
+ this.noticeWait = () => {
123
+ this.noticeWait = () => {
124
+ }, this.sys.callHook("stopOnEntry", {});
125
+ }, this.analyzeInit = e, this.analyzeInit();
126
+ };
127
+ } else this.recodeDesign = () => {
128
+ };
129
+ }
130
+ #s = { aToken: [""], len: 1, aLNum: [1] };
131
+ #i = "";
132
+ get scriptFn() {
133
+ return this.#i;
134
+ }
135
+ #t = 0;
136
+ get idxToken() {
137
+ return this.#t;
138
+ }
139
+ subIdxToken() {
140
+ --this.#t;
141
+ }
142
+ #e = 0;
143
+ get lineNum() {
144
+ return this.#e;
145
+ }
146
+ addLineNum = (t) => {
147
+ this.#e += t;
148
+ };
149
+ jumpJustBefore() {
150
+ this.#f(this.#i, "", --this.#t);
151
+ }
152
+ // 直前にジャンプ
153
+ #n = [];
154
+ // FILOバッファ(push/pop)
155
+ #c;
156
+ #r = new D();
157
+ noticeWait = () => {
158
+ };
159
+ #E(t, s) {
160
+ p.#w[this.#_(t)] = s;
161
+ }
162
+ destroy() {
163
+ this.isBreak = this.#q = () => !1;
164
+ }
165
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
166
+ #k = {
167
+ auth: () => {
168
+ },
169
+ // constructorでセット
170
+ //launch: // ここでは冒頭停止に間に合わないのでanalyzeInit()で
171
+ disconnect: () => {
172
+ p.#w = {}, p.#p = {}, this.isBreak = () => !1, this.#k.continue({}), this.#a = 0;
173
+ },
174
+ restart: () => {
175
+ this.isBreak = () => !1;
176
+ },
177
+ // ブレークポイント登録
178
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
179
+ add_break: (t) => this.#E(t.fn, t.o),
180
+ data_break: (t) => {
181
+ this.#a === 0 && (this.#a = 1, this.main.setLoop(!1, `変数 ${t.dataId}【${t.old_v}】→【${t.new_v}】データブレーク`), this.sys.callHook("stopOnDataBreakpoint", {}), this.sys.send2Dbg("stopOnDataBreakpoint", {}));
182
+ },
183
+ set_func_break: (t) => {
184
+ p.#p = {};
185
+ for (const s of t.a) p.#p[s.name] = 1;
186
+ this.sys.send2Dbg(t.ri, {});
187
+ },
188
+ // 情報問い合わせ系
189
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
190
+ stack: (t) => this.sys.send2Dbg(t.ri, { a: this.#A() }),
191
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
192
+ eval: (t) => {
193
+ this.sys.send2Dbg(t.ri, { v: this.prpPrs.parse(t.txt) });
194
+ },
195
+ // デバッガからの操作系
196
+ continue: () => {
197
+ this.#S() || (this.#t -= this.#b, this.#a = 3, this.main.setLoop(!0), this.main.resume());
198
+ },
199
+ stepover: (t) => this.#C(t),
200
+ stepin: () => {
201
+ if (this.#S()) return;
202
+ const t = this.#s.aToken[this.#t - this.#b];
203
+ this.sys.callHook(`stopOnStep${this.#N.test(t ?? "") ? "In" : ""}`, {}), this.#t -= this.#b, this.#a = this.#a === 1 ? 4 : 5, this.main.setLoop(!0), this.main.resume();
204
+ },
205
+ stepout: (t) => {
206
+ this.#S() || (this.#n.length > 0 ? this.#P(!0) : this.#C(t));
207
+ },
208
+ pause: () => {
209
+ this.#a = 4, this.main.setLoop(!1, "一時停止"), this.sys.send2Dbg("stopOnStep", {});
210
+ },
211
+ stopOnEntry: () => {
212
+ this.#a = 4, this.main.setLoop(!1, "一時停止"), this.sys.send2Dbg("stopOnEntry", {});
213
+ }
214
+ };
215
+ #g = (t) => this.cfg.searchPath(t, w.SCRIPT);
216
+ #_ = (t) => this.sys.pathBaseCnvSnPath4Dbg + this.#g(t);
217
+ #C(t) {
218
+ if (this.#S()) return;
219
+ const s = this.#s.aToken[this.#t - this.#b];
220
+ this.#N.test(s ?? "") ? this.#P(!1) : (this.sys.callHook("stopOnStep", {}), this.#k.stepin(t));
221
+ }
222
+ #P(t) {
223
+ this.sys.callHook(`stopOnStep${t ? "Out" : ""}`, {}), this.#B = this.#n.length - (t ? 1 : 0), this.#t -= this.#b, this.#a = t ? 7 : 6, this.main.setLoop(!0), this.main.resume();
224
+ }
225
+ #B = 0;
226
+ get #b() {
227
+ return this.#a === 2 || this.#a === 4 ? 1 : 0;
228
+ }
229
+ #S() {
230
+ return this.#t < this.#s.len ? !1 : (this.sys.callHook("stopOnEntry", {}), this.main.setLoop(!1, "スクリプト終端です isIdxOverLast"), !0);
231
+ }
232
+ // reload 再生成 Main に受け渡すため static
233
+ static #w = {};
234
+ static #p = {};
235
+ #a = 0;
236
+ // https://raw.githubusercontent.com/famibee/SKYNovel-vscode-extension/master/src/doc/BreakStateSMD.pu
237
+ isBreak = (t) => !1;
238
+ #U(t) {
239
+ switch (this.#a) {
240
+ case 6:
241
+ this.#T(), this.#a = 7;
242
+ break;
243
+ case 7:
244
+ if (this.#n.length !== this.#B) break;
245
+ return this.#a = 4, this.main.setLoop(!1, "ステップ実行"), this.sys.send2Dbg("stopOnStep", {}), !0;
246
+ // タグを実行せず、直前停止
247
+ case 5:
248
+ this.#T(), this.#a = 4;
249
+ break;
250
+ case 4:
251
+ return this.#T(), this.main.setLoop(!1, "ステップ実行"), this.sys.send2Dbg("stopOnStep", {}), !0;
252
+ // タグを実行せず、直前停止
253
+ case 3:
254
+ this.#T(), this.#a = 0;
255
+ break;
256
+ default:
257
+ if (T(t) in p.#p)
258
+ return this.#a = 2, this.main.setLoop(!1, `関数 ${t} ブレーク`), this.sys.callHook("stopOnBreakpoint", {}), this.sys.send2Dbg("stopOnBreakpoint", {}), !0;
259
+ {
260
+ const s = p.#w[this.#_(this.#i)];
261
+ if (!s) break;
262
+ const i = s[this.#e];
263
+ if (!i) break;
264
+ if (i.condition) {
265
+ if (!this.prpPrs.parse(i.condition)) break;
266
+ } else if ("hitCondition" in i && --i.hitCondition > 0) break;
267
+ const n = this.#a === 0;
268
+ this.#a = 2, this.main.setLoop(!1, n ? (
269
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
270
+ (i.condition ? "条件" : "ヒットカウント") + "ブレーク"
271
+ ) : "ステップ実行");
272
+ const a = n ? "stopOnBreakpoint" : "stopOnStep";
273
+ this.sys.callHook(a, {}), this.sys.send2Dbg(a, {});
274
+ }
275
+ return !0;
276
+ }
277
+ return !1;
278
+ }
279
+ #T() {
280
+ const t = p.#w[y(this.#i)]?.[this.#e];
281
+ t?.hitCondition && --t.hitCondition;
282
+ }
283
+ #A() {
284
+ const t = this.#a === 3 ? 1 : 0, s = this.#s.aToken[this.#t - 1 + t], i = this.#_(this.#i), n = T(s), a = n ? `[${n}]` : s, h = String(this.val.getVal("mp:const.sn.macro") ?? "{}");
285
+ if (this.#t === 0) return [{ fn: i, ln: 1, col: 1, nm: a, ma: h }];
286
+ const o = this.#l(this.#s, this.#t), r = [{ fn: i, ln: o.ln, col: o.col_s + 1, nm: a, ma: h }], e = this.#n.length;
287
+ if (e === 0) return r;
288
+ for (let l = e - 1; l >= 0; --l) {
289
+ const f = this.#n[l], c = this.#h[f.fn];
290
+ if (!c) continue;
291
+ const u = c.aToken[f.idx - 1];
292
+ if (!u) continue;
293
+ const m = this.#l(c, f.idx), v = T(u);
294
+ r.push({
295
+ fn: this.#_(f.fn),
296
+ ln: m.ln,
297
+ col: m.col_s + 1,
298
+ nm: v ? `[${v}]` : u,
299
+ ma: f.csArg[":hMp"]["const.sn.macro"]
300
+ });
301
+ }
302
+ return r;
303
+ }
304
+ // result = true : waitする resume()で再開
305
+ #D = (t) => {
306
+ };
307
+ //MARK: タグ解析
308
+ async タグ解析(t, s) {
309
+ const i = this.hTag[t];
310
+ if (!i) throw `未定義のタグ【${t}】です`;
311
+ this.#r.parse(s), this.#D(t);
312
+ const n = this.#r.hPrm;
313
+ if (n.cond) {
314
+ const e = n.cond.val;
315
+ if (!e || e.startsWith("&")) throw "属性condは「&」が不要です";
316
+ const l = this.prpPrs.parse(e), f = String(l);
317
+ if (f === "null" || f === "undefined" || !l) return !1;
318
+ }
319
+ let a = {};
320
+ const h = this.#n.at(-1)?.csArg ?? j(), o = this.#n.length;
321
+ if (this.#r.isKomeParam) {
322
+ if (o === 0) throw "属性「*」はマクロのみ有効です";
323
+ a = { ...h };
324
+ }
325
+ a[":タグ名"] = t;
326
+ for (const [e, { val: l, def: f }] of Object.entries(n)) {
327
+ let c = l;
328
+ if (l.startsWith("%")) {
329
+ if (o === 0) throw "属性「%」はマクロ定義内でのみ使用できます(そのマクロの引数を示す簡略文法であるため)";
330
+ const u = h[c.slice(1)];
331
+ if (u) {
332
+ a[e] = u;
333
+ continue;
334
+ }
335
+ if (f === void 0 || f === "null") continue;
336
+ c = f;
337
+ }
338
+ if (c = this.prpPrs.getValAmpersand(c ?? ""), c !== "undefined") {
339
+ a[e] = c;
340
+ continue;
341
+ }
342
+ f !== void 0 && (c = this.prpPrs.getValAmpersand(f), c !== "undefined" && (a[e] = c));
343
+ }
344
+ if (b.needGoTxt && this.#J.has(t)) {
345
+ const { promise: e, resolve: l } = Promise.withResolvers();
346
+ b.beginProc(C, () => l(0), !1, () => l(0)), b.goTxt(), this.val.saveKidoku(), await e;
347
+ }
348
+ this.#X.has(t) && (this.#L.hideHint(), await N.closeTrans());
349
+ const r = this.#Y[t];
350
+ return r && d(a, "canskip", this.#Q[t] ?? !0) && this.#L.isSkipping ? r(n) : i(a);
351
+ }
352
+ // 文字出現演出を待つタグ
353
+ // ここで列挙せずタグ処理で文字表示を始めたい場合、goTxt()すること
354
+ #J = /* @__PURE__ */ new Set([
355
+ // 変数操作
356
+ // 'clearsysvar', // システム変数の全消去
357
+ // 'clearvar', // ゲーム変数の全消去
358
+ // 'let_abs', // 絶対値
359
+ // 'let_char_at', // 文字列から一字取りだし
360
+ // 'let_index_of', // 文字列で検索
361
+ // 'let_length', // 文字列の長さ
362
+ // 'let_ml', // インラインテキスト代入
363
+ // 'let_replace', // 正規表現で置換
364
+ // 'let_round', // 四捨五入
365
+ // 'let_search', // 正規表現で検索
366
+ // 'let_substr', // 文字列から抜きだし
367
+ // 'let', // 変数代入・演算
368
+ // レイヤ共通
369
+ // 'add_lay', // レイヤを追加する
370
+ // 'clear_lay', // レイヤ設定の消去
371
+ // 'finish_trans', // トランス強制終了
372
+ // 'lay', // レイヤ設定
373
+ "trans",
374
+ // ページ裏表を交換
375
+ "wt",
376
+ // トランス終了待ち
377
+ // 'add_filter', // フィルター追加
378
+ // 'clear_filter', // フィルター全削除
379
+ // 'enable_filter',// フィルター個別切替
380
+ // トゥイーンアニメ
381
+ // 'pause_tsy', // 一時停止
382
+ // 'resume_tsy', // 一時停止再開
383
+ // 'stop_tsy', // トゥイーン中断
384
+ // 'tsy', // トゥイーン開始
385
+ "wait_tsy",
386
+ // トゥイーン終了待ち
387
+ // 文字・文字レイヤ
388
+ // 'autowc', // 文字ごとのウェイト
389
+ // 'ch', // 文字を追加する
390
+ // 'ch_in_style', // 文字出現演出定義
391
+ // 'ch_out_style', // 文字消去演出定義
392
+ // 'clear_text', // 文字消去
393
+ // 'current', // デフォルト文字レイヤ設定
394
+ // 'endlet_ml', // インラインテキスト代入の終端
395
+ // 'endlink', // ハイパーリンクの終了
396
+ // 'er', // ページ両面の文字消去
397
+ // 'graph', // インライン画像表示
398
+ // 'link', // ハイパーリンク
399
+ // 'r', // 改行
400
+ // 'rec_ch', // 履歴書き込み
401
+ // 'rec_r', // 履歴改行
402
+ // 'reset_rec', // 履歴リセット
403
+ // 'ruby2', // 文字列と複数ルビの追加
404
+ // 'set_focus', // フォーカス移動
405
+ // 'span', // インラインスタイル設定
406
+ // 'tcy', // 縦中横を表示する
407
+ // 画像・画像レイヤ
408
+ // 'add_face', // 差分名称の定義
409
+ "wv",
410
+ // 動画再生終了待ち
411
+ // HTMLフレーム
412
+ // 'add_frame', // フレーム追加
413
+ // 'frame', // フレームに設定
414
+ // 'let_frame', // フレーム変数を取得
415
+ // 'set_frame', // フレーム変数に設定
416
+ // 'tsy_frame', // フレームをトゥイーン開始
417
+ // イベント
418
+ // 'clear_event', // イベントを全消去
419
+ // 'enable_event', // イベント有無の切替
420
+ // 'event', // イベントを予約
421
+ "l",
422
+ // 行末クリック待ち
423
+ "p",
424
+ // 改ページクリック待ち
425
+ "s",
426
+ // 停止する
427
+ // [set_cancel_skip] スキップ中断予約
428
+ "wait",
429
+ // ウェイトを入れる
430
+ "waitclick",
431
+ // クリックを待つ
432
+ // BGM・効果音
433
+ // 'fadebgm', // BGMのフェード
434
+ // 'fadeoutbgm',// BGMのフェードアウト
435
+ // 'fadeoutse', // 効果音のフェードアウト
436
+ // 'fadese', // 効果音のフェード
437
+ // 'playbgm', // BGM の演奏
438
+ // 'playse', // 効果音の再生
439
+ // 'stop_allse',// 全効果音再生の停止
440
+ // 'stopbgm', // BGM 演奏の停止
441
+ // 'stopfadese',// 音声フェードの停止
442
+ // 'stopse', // 効果音再生の停止
443
+ // 'volume', // BGMや効果音の音量を指定
444
+ "wb",
445
+ // BGM フェードの終了待ち
446
+ "wf",
447
+ // 効果音フェードの終了待ち
448
+ "wl",
449
+ // BGM 再生の終了待ち
450
+ "ws",
451
+ // 効果音再生の終了待ち
452
+ // 'xchgbuf', // サウンドバッファの交換
453
+ // 条件分岐
454
+ // 'else', // その他ifブロック開始
455
+ // 'elsif', // 別条件のifブロック開始
456
+ // 'endif', // ifブロックの終端
457
+ // 'if', // ifブロックの開始
458
+ // ラベル・ジャンプ
459
+ // 'button', // ボタンを表示
460
+ // 'call', // サブルーチンコール
461
+ // 'jump', // シナリオジャンプ
462
+ // 'page', // ページ移動
463
+ // 'pop_stack', // コールスタック破棄
464
+ // 'return', // サブルーチンから戻る
465
+ // マクロ
466
+ // 'bracket2macro', // 括弧マクロの定義
467
+ // 'char2macro', // 一文字マクロの定義
468
+ // 'endmacro', // マクロ定義の終了
469
+ // 'macro', // マクロ定義の開始
470
+ // しおり
471
+ // 'copybookmark', // しおりの複写
472
+ // 'erasebookmark', // しおりの消去
473
+ // 'load', // しおりの読込
474
+ // 'record_place', // セーブポイント指定
475
+ // 'reload_script', // スクリプト再読込
476
+ // 'save', // しおりの保存
477
+ // 画面揺らし
478
+ "quake",
479
+ // 画面を揺らす
480
+ // 'stop_quake',// 画面揺らし中断
481
+ "wq"
482
+ // 画面揺らし終了待ち
483
+ // システム
484
+ // 'close', // アプリの終了
485
+ // 'export', // プレイデータをエクスポート
486
+ // 'import', // プレイデータをインポート
487
+ // 'loadplugin', // プラグインの読み込み
488
+ // 'navigate_to', // URLを開く
489
+ // 'snapshot', // スナップショット
490
+ // 'title', // タイトル指定
491
+ // 'toggle_full_screen', // 全画面状態切替
492
+ // 'update_check', // 更新チェック機能
493
+ // 'window', // アプリウインドウ設定
494
+ // デバッグ・その他
495
+ // 'dump_lay', // レイヤのダンプ
496
+ // 'dump_script', // 外部へスクリプトを表示
497
+ // 'dump_stack', // スタックのダンプ
498
+ // 'dump_val', // 変数のダンプ
499
+ // 'log', // ログ出力
500
+ // 'trace', // デバッグ表示へ出力
501
+ ]);
502
+ #X = /* @__PURE__ */ new Set([
503
+ "finish_trans",
504
+ // トランス強制終了
505
+ "trans",
506
+ // ページ裏表を交換
507
+ "quake",
508
+ // 画面を揺らす
509
+ "stop_quake",
510
+ // 画面揺らし中断
511
+ "add_filter"
512
+ // フィルター追加
513
+ ]);
514
+ // キー押しっぱなしスキップで処理せずスルーするタグ
515
+ #Y = {
516
+ wt: () => !1,
517
+ // トランス終了待ち
518
+ wait_tsy: (t) => this.hTag.stop_tsy(t),
519
+ // トゥイーン終了待ち
520
+ // 'wv', :タグ内部で処理 // 動画再生終了待ち
521
+ wait: () => !1,
522
+ // ウェイトを入れる
523
+ // 'playbgm', :スルー不可 // BGM の演奏
524
+ // 'playse', :タグ内部で処理 // 効果音の再生
525
+ wb: () => this.hTag.stopfadese({ buf: F }),
526
+ // BGM フェードの終了待ち
527
+ wf: (t) => this.hTag.stopfadese(t),
528
+ // 効果音フェードの終了待ち
529
+ // 'ws' :タグ内部で処理 // 効果音再生の終了待ち
530
+ wq: () => this.hTag.stop_quake({}),
531
+ // 画面揺らし終了待ち
532
+ // fade系 :タグ内部で処理
533
+ // 'ch' :タグ内部で処理 // 文字を追加する
534
+ // 'tsy' :タグ内部で処理 // トゥイーン開始
535
+ // 'trans' :タグ内部で処理 // ページ裏表を交換
536
+ quake: () => !1
537
+ // 画面を揺らす
538
+ };
539
+ // タグ処理中にクリックなどで即終わらせられるタグ(canskip 属性がある)
540
+ #Q = {
541
+ // デフォルト値
542
+ wt: !0,
543
+ // [wt]トランス終了待ち
544
+ wait_tsy: !0,
545
+ // [wait_tsy]トゥイーン終了待ち
546
+ wv: !0,
547
+ // [wv]動画再生終了待ち
548
+ wait: !0,
549
+ // [wait]ウェイトを入れる
550
+ playbgm: !1,
551
+ // [playbgm]BGM の演奏
552
+ playse: !0,
553
+ // [playse]効果音の再生
554
+ wb: !1,
555
+ // [wb]BGM フェードの終了待ち
556
+ wf: !1,
557
+ // [wf]効果音フェードの終了待ち
558
+ ws: !1,
559
+ // [ws]効果音再生の終了待ち
560
+ wq: !0
561
+ // [wq]画面揺らし終了待ち
562
+ };
563
+ #L;
564
+ #m;
565
+ setOtherObj(t, s) {
566
+ this.#L = t, this.#m = s;
567
+ }
568
+ //MARK: インラインテキスト代入
569
+ #Z(t) {
570
+ const { name: s } = t;
571
+ if (!s) throw "nameは必須です";
572
+ let i = "";
573
+ const n = this.#s.len;
574
+ for (; this.#t < n && (i = this.#s.aToken[this.#t], i === ""); ++this.#t)
575
+ ;
576
+ return t.text = i, t.cast = "str", this.hTag.let(t), this.#t += 2, this.#e += (i.match(/\n/g) ?? []).length, !1;
577
+ }
578
+ //MARK: スタックのダンプ
579
+ #tt() {
580
+ if (this.#t === 0)
581
+ return console.group(`🥟 [dump_stack] スクリプト現在地 fn:${this.#i} line:1 col:0`), console.groupEnd(), !1;
582
+ const t = this.#l(this.#s, this.#t), s = `スクリプト現在地 fn:${this.#i} line:${String(t.ln)} col:${String(t.col_s + 1)}`;
583
+ console.group(`🥟 [dump_stack] ${s}`);
584
+ const i = this.#n.length;
585
+ if (i > 0) {
586
+ console.info(s);
587
+ for (let n = i - 1; n >= 0; --n) {
588
+ const a = this.#n[n], h = a.csArg[":hMp"], o = h ? h[":タグ名"] : void 0, r = a.csArg[":タグ名"] ?? "", e = this.#l(this.#h[a.fn], a.idx);
589
+ console.info(
590
+ `${String(i - n)}つ前のコール元 fn:${a.fn} line:${String(e.ln)} col:${String(e.col_s + 1)}${o ? "([" + o + "]マクロ内)" : " "}で [${r} ...]をコール`
591
+ );
592
+ }
593
+ }
594
+ return console.groupEnd(), !1;
595
+ }
596
+ #l(t, s) {
597
+ const i = { ln: 1, col_s: 0, col_e: 0 };
598
+ if (!t) return i;
599
+ let n = s - 1;
600
+ const a = i.ln = t.aLNum[n];
601
+ for (; t.aLNum[n] === a; ) {
602
+ const h = t.aToken[n];
603
+ if (!h.startsWith(`
604
+ `)) {
605
+ const o = h.length;
606
+ i.col_e > 0 && (i.col_s += o), i.col_e += o;
607
+ }
608
+ if (--n < 0) break;
609
+ }
610
+ return i;
611
+ }
612
+ //MARK: 外部へスクリプトを表示
613
+ #st(t) {
614
+ const { set_fnc: s, break_fnc: i } = t;
615
+ if (!s) throw "set_fncは必須です";
616
+ if (this.#y = globalThis[s], !this.#y) {
617
+ if (d(t, "need_err", !0)) throw `HTML内に関数${s}が見つかりません`;
618
+ return this.#y = () => {
619
+ }, !1;
620
+ }
621
+ if (this.noticeBreak = (n) => {
622
+ this.#I !== this.#i && (this.#I = this.#i, this.#y(
623
+ this.#it[this.#i] ??= this.#s.aToken.join("")
624
+ )), this.#$(this.#e, n);
625
+ }, this.noticeBreak(!0), !i) return !1;
626
+ if (this.#$ = globalThis[i], !this.#$) {
627
+ if (d(t, "need_err", !0)) throw `HTML内に関数${i}が見つかりません`;
628
+ this.#$ = () => {
629
+ };
630
+ }
631
+ return !1;
632
+ }
633
+ #y = () => {
634
+ };
635
+ #$ = () => {
636
+ };
637
+ #I = "";
638
+ #it = {};
639
+ noticeBreak = (t) => {
640
+ };
641
+ #O = 5;
642
+ dumpErrForeLine() {
643
+ if (this.#t === 0) {
644
+ console.group(`🥟 Error line (from 0 rows before) fn:${this.#i}`), console.groupEnd();
645
+ return;
646
+ }
647
+ let t = "";
648
+ for (let h = this.#t - 1; h >= 0 && (t = String(this.#s.aToken[h]) + t, !((t.match(/\n/g) ?? []).length >= this.#O)); --h)
649
+ ;
650
+ const s = t.split(`
651
+ `).slice(-this.#O), i = s.length;
652
+ console.group(`🥟 Error line (from ${String(i)} rows before) fn:${this.#i}`);
653
+ const n = String(this.#e).length, a = this.#l(this.#s, this.#t);
654
+ for (let h = 0; h < i; ++h) {
655
+ const o = this.#e - i + h + 1, r = `${String(o).padStart(n, " ")}: %c`, e = s[h], l = e.length > 75 ? e.slice(0, 75) + "…" : e;
656
+ h === i - 1 ? console.info(
657
+ r + l.slice(0, a.col_s) + "%c" + l.slice(a.col_s),
658
+ "color: black; background-color: skyblue;",
659
+ "color: black; background-color: pink;"
660
+ ) : console.info(r + l, "color: black; background-color: skyblue;");
661
+ }
662
+ console.groupEnd();
663
+ }
664
+ #o = [-1];
665
+ // 先頭に積む FIFOバッファ(unshift / shift)
666
+ //MARK: ifブロックの終端
667
+ #et() {
668
+ const t = this.#o[0];
669
+ if (!t) throw "this.#aIfStk が異常です";
670
+ if (t === -1) throw "ifブロック内ではありません";
671
+ return this.#t = t, this.#o.shift(), !1;
672
+ }
673
+ //MARK: ifブロックの開始
674
+ #nt(t) {
675
+ const { exp: s } = t;
676
+ if (!s) throw "expは必須です";
677
+ if (s.startsWith("&")) throw "属性expは「&」が不要です";
678
+ let i = 0, n = this.prpPrs.parse(s) ? this.#t : -1;
679
+ const a = this.#s.aLNum[this.#t], h = this.#e - ((a ?? 0) || 0), o = this.#s.len;
680
+ for (; this.#t < o; ++this.#t) {
681
+ const r = this.#s.aLNum[this.#t];
682
+ this.#s.aLNum[this.#t] = ((r ?? 0) || 0) + h;
683
+ const e = this.#s.aToken[this.#t];
684
+ if (!e) continue;
685
+ const l = e.charCodeAt(0);
686
+ if (l === 10) {
687
+ this.#e += e.length;
688
+ continue;
689
+ }
690
+ if (l !== 91) continue;
691
+ const [f, c] = $(e);
692
+ if (!(f in this.hTag)) throw `未定義のタグ[${f}]です`;
693
+ switch (this.#r.parse(c), f) {
694
+ case "if":
695
+ ++i;
696
+ break;
697
+ case "elsif":
698
+ {
699
+ if (i > 0 || n > -1) break;
700
+ const u = this.#r.hPrm.exp?.val;
701
+ if (!u) throw "expは必須です";
702
+ if (u.startsWith("&")) throw "属性expは「&」が不要です";
703
+ this.prpPrs.parse(u) && (n = this.#t + 1);
704
+ }
705
+ break;
706
+ case "else":
707
+ if (i > 0) break;
708
+ n === -1 && (n = this.#t + 1);
709
+ break;
710
+ case "endif":
711
+ if (i > 0) {
712
+ --i;
713
+ break;
714
+ }
715
+ return n === -1 ? (++this.#t, this.#s.aLNum[this.#t] += h) : (this.#o.unshift(this.#t + 1), this.#t = n, this.#e = this.#s.aLNum[this.#t]), !1;
716
+ }
717
+ }
718
+ throw "[endif]がないままスクリプト終端です";
719
+ }
720
+ //MARK: サブルーチンコール
721
+ #at(t) {
722
+ d(t, "count", !1) || this.#V();
723
+ const { fn: s } = t;
724
+ return s && this.#g(s), this.#M({ ...t }, E.popLocalEvts()), d(t, "clear_local_event", !1) && this.hTag.clear_event({}), this.#f(s, t.label);
725
+ }
726
+ #M(t, s) {
727
+ const i = {
728
+ ...t,
729
+ ":hEvt1Time": s,
730
+ ":hMp": this.val.cloneMp(),
731
+ ":lenIfStk": this.#o.length
732
+ };
733
+ this.#s.aLNum[this.#t] = this.#e, this.#F || (i[":resvToken"] = "", this.#x()), this.#n.push(new x(this.#i, this.#t, i)), this.#o.unshift(-1);
734
+ }
735
+ //MARK: シナリオジャンプ
736
+ #ht(t) {
737
+ return d(t, "count", !0) || this.#V(), this.#o[0] = -1, this.#f(t.fn, t.label);
738
+ }
739
+ //MARK: コールスタック破棄
740
+ #ot(t) {
741
+ if (d(t, "clear", !1)) this.#n = [];
742
+ else if (!this.#n.pop()) throw "スタックが空です";
743
+ return this.#x(), this.#o = [-1], this.val.setMp(L()), !1;
744
+ }
745
+ //MARK: サブルーチンから戻る
746
+ #j(t) {
747
+ const s = this.#n.pop();
748
+ if (!s) throw "スタックが空です";
749
+ const i = s.csArg;
750
+ this.#o = this.#o.slice(-i[":lenIfStk"]);
751
+ const n = i[":hMp"];
752
+ n && this.val.setMp(n);
753
+ const a = i[":resvToken"];
754
+ a ? this.nextToken = () => (this.#x(), a) : this.#x(), i[":hEvt1Time"] && E.pushLocalEvts(i[":hEvt1Time"]);
755
+ const { fn: h, label: o } = t;
756
+ return h || o ? this.#f(h, o) : s.fn in this.#h ? (this.#z(s), !1) : this.#f(s.fn, "", s.idx);
757
+ }
758
+ #F = "";
759
+ #x() {
760
+ this.#F = "", this.nextToken = () => this.#R();
761
+ }
762
+ #v = "";
763
+ #f(t = "", s = "", i = 0) {
764
+ if (S.debugLog && console.log(`📜 %c1:jumpWork%c fn:${t} lbl:${s} idx:${String(i)}`, "color:#3B0;", ""), !t && !s && this.main.errScript("[jump系] fnまたはlabelは必須です"), s ? (s.startsWith("*") || this.main.errScript("[jump系] labelは*で始まります"), this.#v = s, this.#v.startsWith("**") || (this.#t = i)) : (this.#v = "", this.#t = i), !t)
765
+ return this.analyzeInit(), !1;
766
+ if (t.includes("@")) throw "[jump系] fn には文字「@」は禁止です";
767
+ const n = this.#g(t);
768
+ if (t === this.#i)
769
+ return this.analyzeInit(), !1;
770
+ this.#i = t;
771
+ const a = this.#h[t];
772
+ if (a)
773
+ return this.#s = a, this.analyzeInit(), !1;
774
+ const h = `jumpWork fn:${t}`;
775
+ b.beginProc(h);
776
+ let o = "";
777
+ const r = new I();
778
+ try {
779
+ o = this.#g(t + "@"), r.add({ name: t + ":base", url: n }), r.add({ name: t, url: o });
780
+ } catch {
781
+ r.add({ name: t, url: n });
782
+ }
783
+ return r.use((e, l) => {
784
+ this.sys.dec(e.extension, e.data).then((f) => {
785
+ e.data = f, l();
786
+ }).catch((f) => {
787
+ this.main.errScript(`[jump系]snロード失敗です fn:${e.name} ${String(f)}`, !1), l();
788
+ });
789
+ }).load((e, l) => {
790
+ if (b.endProc(h), o) {
791
+ const f = l[t + ":base"].data, c = l[t].data, u = f.split(`
792
+ `), m = c.split(`
793
+ `), v = u.length, P = m.length;
794
+ for (let _ = 0; _ < P && _ < v; ++_) m[_] ||= u[_] ?? "";
795
+ l[t].data = m.join(`
796
+ `), delete l[t + ":base"];
797
+ }
798
+ this.nextToken = this.#R, this.#e = 1, this.#ft(l[t].data), this.hTag.record_place({}), this.analyzeInit();
799
+ }), !0;
800
+ }
801
+ analyzeInit() {
802
+ S.debugLog && console.log(`📜 %c9:analyzeInit%c fn:${this.#i} lbl:${this.#v} idx:${String(this.#t)}`, "color:#3B0;", "");
803
+ const t = this.#lt(this.#s, !!this.val.getVal("mp:const.sn.macro.name"), this.#e, this.#v, this.#t);
804
+ this.#t = t.idx, this.#e = t.ln;
805
+ }
806
+ // シナリオ解析処理ループ・冒頭処理
807
+ nextToken = () => "";
808
+ // 初期化前に終了した場合向け
809
+ #R() {
810
+ if (this.#H()) return "";
811
+ this.#dt(), this.#s.aLNum[this.#t] ||= this.#e;
812
+ const t = this.#s.aToken[this.#t];
813
+ return this.#W(t), ++this.#t, t;
814
+ }
815
+ #W = (t) => {
816
+ };
817
+ #H() {
818
+ return this.#t < this.#s.len ? !1 : (this.main.errScript("スクリプト終端です errOverScr"), !0);
819
+ }
820
+ #rt = /(\*{2,})([^|]*)/;
821
+ #ct = /^\[macro\s/;
822
+ #K = /^\[endmacro[\s\]]/;
823
+ #lt(t, s, i, n, a) {
824
+ const h = t.aToken.length;
825
+ let o = i, r = n;
826
+ if (!r) {
827
+ if (this.#H()) return { idx: a, ln: o };
828
+ if (t.aLNum[a])
829
+ o = t.aLNum[a];
830
+ else {
831
+ o = 1;
832
+ for (let c = 0; c < a; ++c) {
833
+ t.aLNum[c] ||= o;
834
+ const u = t.aToken[c];
835
+ u.startsWith(`
836
+ `) ? o += u.length : o += (u.match(/\n/g) ?? []).length;
837
+ }
838
+ t.aLNum[a] = o;
839
+ }
840
+ return { idx: a, ln: o };
841
+ }
842
+ t.aLNum[0] = 1;
843
+ const e = r.match(this.#rt);
844
+ if (e) {
845
+ r = e[1];
846
+ let c = a;
847
+ switch (e[2]) {
848
+ case "before":
849
+ for (; t.aToken[--c] !== r; )
850
+ c === 0 && g.myTrace(`[jump系 無名ラベルbefore]
851
+ ${String(o)} 行目以前で ${s ? "マクロ内に" : ""} ラベル【 ${r} 】がありません`, "ET"), s && t.aToken[c].search(this.#ct) > -1 && g.myTrace("[jump系 無名ラベルbefore] マクロ内にラベル【" + r + "】がありません", "ET");
852
+ return { idx: c + 1, ln: t.aLNum[c] };
853
+ // break;
854
+ case "after":
855
+ for (; t.aToken[++c] !== r; )
856
+ c === h && g.myTrace(`[jump系 無名ラベルafter] ${String(o)} 行目以後でマクロ内にラベル【${r}】がありません`, "ET"), t.aToken[c].search(this.#K) > -1 && g.myTrace(`[jump系 無名ラベルafter] ${String(o)} 行目以後でマクロ内にラベル【 ${r} 】がありません`, "ET");
857
+ return { idx: c + 1, ln: t.aLNum[c] };
858
+ // break;
859
+ default:
860
+ g.myTrace("[jump系] 無名ラベル指定【label=" + r + "】が間違っています", "ET");
861
+ }
862
+ }
863
+ o = 1;
864
+ const l = new RegExp(
865
+ "^" + r.replaceAll("*", "\\*") + "(?=\\s|;|\\[|\\||$)"
866
+ );
867
+ let f = !1;
868
+ for (let c = 0; c < h; ++c) {
869
+ t.aLNum[c] ||= o;
870
+ const u = t.aToken[c];
871
+ if (f) {
872
+ this.#c.testTagEndLetml(u) ? f = !1 : o += (u.match(/\n/g) ?? []).length;
873
+ continue;
874
+ }
875
+ const m = u.charCodeAt(0);
876
+ if (m === 10) {
877
+ o += u.length;
878
+ continue;
879
+ }
880
+ if (m === 42) {
881
+ if (u.search(l) > -1) return { idx: c + 1, ln: o };
882
+ continue;
883
+ }
884
+ m === 91 && (o += (u.match(/\n/g) ?? []).length, this.#c.testTagLetml(u) && (f = !0));
885
+ }
886
+ throw f ? "[let_ml]の終端・[endlet_ml]がありません" : (g.myTrace(`[jump系] ラベル【${r}】がありません`, "ET"), "Dummy");
887
+ }
888
+ #h = /* @__PURE__ */ Object.create(null);
889
+ //{} シナリオキャッシュ
890
+ #ft(t) {
891
+ let s = "";
892
+ try {
893
+ s = "ScriptIterator.resolveScript";
894
+ const i = this.#c.resolveScript(t);
895
+ s = "ScriptIterator.replaceScript_Wildcard", this.#mt(i), this.#h[this.#i] = this.#s = i;
896
+ } catch (i) {
897
+ i instanceof Error ? s += `例外 mes=${i.message}(${i.name})` : s = String(i), this.main.errScript(s, !1);
898
+ }
899
+ this.val.touchAreaKidoku(this.#i);
900
+ }
901
+ #z(t) {
902
+ this.#i = t.fn, this.#t = t.idx;
903
+ const s = this.#h[this.#i];
904
+ s && (this.#s = s), this.#e = this.#s.aLNum[t.idx];
905
+ }
906
+ #ut = /^\[(call|loadplugin)\s/;
907
+ #pt = /\bfn\s*=\s*[^\s\]]+/;
908
+ #mt(t) {
909
+ for (let s = t.len - 1; s >= 0; --s) {
910
+ const i = t.aToken[s];
911
+ if (!this.#ut.test(i)) continue;
912
+ const [n, a] = $(i);
913
+ this.#r.parse(a);
914
+ const h = this.#r.hPrm.fn;
915
+ if (!h) continue;
916
+ const { val: o } = h;
917
+ if (!o.endsWith("*")) continue;
918
+ t.aToken.splice(s, 1, " ", "; " + i), t.aLNum.splice(s, 1, NaN, NaN);
919
+ const r = n === "loadplugin" ? w.CSS : w.SN, e = this.cfg.matchPath("^" + o.slice(0, -1) + ".*", r);
920
+ for (const l of e) {
921
+ const f = i.replace(
922
+ this.#pt,
923
+ "fn=" + decodeURIComponent(y(l[r]))
924
+ );
925
+ t.aToken.splice(s, 0, f), t.aLNum.splice(s, 0, NaN);
926
+ }
927
+ }
928
+ t.len = t.aToken.length;
929
+ }
930
+ #dt() {
931
+ const t = this.val.touchAreaKidoku(this.#i);
932
+ if (this.#n.length > 0) {
933
+ t.record(this.#t);
934
+ return;
935
+ }
936
+ this.#d = t.search(this.#t), this.val.setVal_Nochk("tmp", "const.sn.isKidoku", this.#d), !this.#d && t.record(this.#t);
937
+ }
938
+ #d = !1;
939
+ get isKidoku() {
940
+ return this.#d;
941
+ }
942
+ #V() {
943
+ this.val.getAreaKidoku(this.#i)?.erase(this.#t), this.#d = !1;
944
+ }
945
+ get isNextKidoku() {
946
+ let t = this.#i, s = this.#t, i = this.#s.len;
947
+ if (this.#n.length > 0) {
948
+ const a = this.#n[0];
949
+ t = a.fn, s = a.idx;
950
+ const h = this.#h[t];
951
+ h && (i = h.len);
952
+ }
953
+ return s === i ? !1 : this.val.getAreaKidoku(t)?.search(s) ?? !1;
954
+ }
955
+ get normalWait() {
956
+ return this.#d ? this.val.tagCh_doWait_Kidoku ? this.val.tagCh_msecWait_Kidoku : 0 : this.val.tagCh_doWait ? this.val.tagCh_msecWait : 0;
957
+ }
958
+ //MARK: 括弧マクロの定義
959
+ #kt(t) {
960
+ return this.#c.bracket2macro(t, this.hTag, this.#s, this.#t), !1;
961
+ }
962
+ //MARK: 一文字マクロの定義
963
+ #gt(t) {
964
+ return this.#c.char2macro(t, this.hTag, this.#s, this.#t), !1;
965
+ }
966
+ //MARK: マクロ定義の開始
967
+ // eslint-disable-next-line no-irregular-whitespace
968
+ #_t = /["'#;\\] ]+/;
969
+ #bt(t) {
970
+ const { name: s } = t;
971
+ if (!s) throw "nameは必須です";
972
+ if (s in this.hTag) throw `[${s}]はタグかすでに定義済みのマクロです`;
973
+ if (this.#_t.test(s)) throw `[${s}]はマクロ名として異常です`;
974
+ const i = this.#e, n = new x(this.#i, this.#t);
975
+ for (this.#G += "|" + s, this.#N = new RegExp(`\\[(${this.#G})\\b`), this.hTag[s] = (a) => (a.design_unit = t.design_unit, this.#M(a), this.val.setMp({
976
+ ...a,
977
+ "const.sn.macro": JSON.stringify({ name: t.name }),
978
+ // ムダに大きいスクリプター用情報を削除、名前だけに
979
+ "const.sn.me_call_scriptFn": this.#i
980
+ }), this.val.setVal_Nochk("mp", "const.sn.me_call_scriptFn", this.#i), this.#e = i, this.#z(n), !1); this.#t < this.#s.len; ++this.#t) {
981
+ this.#s.aLNum[this.#t] ||= this.#e;
982
+ const a = this.#s.aToken[this.#t];
983
+ if (a.search(this.#K) > -1)
984
+ return ++this.#t, !1;
985
+ const h = a.charCodeAt(0);
986
+ h === 10 ? this.#e += a.length : h === 91 && (this.#e += (a.match(/\n/g) ?? []).length);
987
+ }
988
+ throw `マクロ[${s}]定義の終端・[endmacro]がありません`;
989
+ }
990
+ #G = "call";
991
+ #N = /\[(call)\b/;
992
+ // https://regex101.com/r/Lk9ASK/1
993
+ //MARK: しおりの読込
994
+ #vt(t) {
995
+ if ("fn" in t != "label" in t) throw "fnとlabelはセットで指定して下さい";
996
+ const s = O(t, "place", 0), i = this.val.getMark(s);
997
+ if (!i) throw `place=${String(s)} は存在しません`;
998
+ return this.loadFromMark(
999
+ t,
1000
+ i,
1001
+ 2
1002
+ /* ALL_STOP_AND_PLAY */
1003
+ );
1004
+ }
1005
+ loadFromMark(t, s, i = 0) {
1006
+ this.hTag.clear_event({}), this.val.mark2save(s), this.val.setMp(L()), this.#m.recPagebreak();
1007
+ let n = [];
1008
+ i !== 1 && (n = this.sndMng.playLoopFromSaveObj(
1009
+ i === 2
1010
+ /* ALL_STOP_AND_PLAY */
1011
+ )), d(t, "do_rec", !0) && (this.#u = {
1012
+ hSave: this.val.cloneSave(),
1013
+ hPages: { ...s.hPages },
1014
+ aIfStk: [...s.aIfStk]
1015
+ });
1016
+ const a = {
1017
+ enabled: !!this.val.getVal("save:const.sn.autowc.enabled"),
1018
+ text: String(this.val.getVal("save:const.sn.autowc.text")),
1019
+ time: Number(this.val.getVal("save:const.sn.autowc.time"))
1020
+ };
1021
+ this.hTag.autowc(a), this.#o = [...this.#u.aIfStk], this.#n = [], N.stopAllTw();
1022
+ const h = Promise.allSettled([...n, ...this.#m.playback(this.#u.hPages)]).then(() => this.#m.cover(!1)), { index: o, fn: r } = t;
1023
+ if (o)
1024
+ return S.debugLog && console.log(`📜 %cloadFromMark index:${String(o)} move!%c fn:${r ?? ""}`, "color:#3B0;", ""), h.then(() => {
1025
+ this.#f(r, "", o) || this.main.resume();
1026
+ }).catch((c) => console.error("loadFromMark e:%o", c)), !0;
1027
+ this.#m.cover(!0);
1028
+ const e = String(this.val.getVal("save:const.sn.scriptFn")), l = Number(this.val.getVal("save:const.sn.scriptIdx"));
1029
+ delete this.#h[e];
1030
+ const { label: f } = t;
1031
+ return h.then(f ? () => {
1032
+ this.#i = e, this.#t = l, this.hTag.call({ fn: r, label: f }) || this.main.resume();
1033
+ } : () => {
1034
+ this.#f(e, "", l) || this.main.resume();
1035
+ }).catch((c) => console.error("loadFromMark e:%o", c)), !0;
1036
+ }
1037
+ //MARK: スクリプト再読込
1038
+ #St(t) {
1039
+ const s = this.val.getMark(0);
1040
+ if (!s) return !1;
1041
+ delete this.#h[y(s.hSave["const.sn.scriptFn"])];
1042
+ const i = {};
1043
+ for (const n in this.#h)
1044
+ try {
1045
+ this.#g(n + "@");
1046
+ } catch {
1047
+ i[n] = this.#h[n];
1048
+ }
1049
+ return this.#h = i, t.do_rec = !1, this.loadFromMark(
1050
+ t,
1051
+ s,
1052
+ 1
1053
+ /* NO_TOUCH */
1054
+ );
1055
+ }
1056
+ //MARK: セーブポイント指定
1057
+ #u = {
1058
+ hSave: M(),
1059
+ hPages: {},
1060
+ aIfStk: [-1]
1061
+ };
1062
+ #q = () => {
1063
+ const { fn: t, idx: s } = this.nowScrIdx();
1064
+ return this.val.setVal_Nochk("save", "const.sn.scriptFn", t), this.val.setVal_Nochk("save", "const.sn.scriptIdx", s), this.#u = {
1065
+ hSave: this.val.cloneSave(),
1066
+ hPages: this.#m.record(),
1067
+ aIfStk: this.#o.slice(this.#n.length)
1068
+ }, !1;
1069
+ };
1070
+ nowScrIdx() {
1071
+ if (this.#n.length === 0) return {
1072
+ fn: this.#i,
1073
+ idx: this.#t
1074
+ };
1075
+ const s = this.#n[0];
1076
+ return {
1077
+ fn: s.fn,
1078
+ idx: s.idx
1079
+ };
1080
+ }
1081
+ nowMark() {
1082
+ return { ...this.#u };
1083
+ }
1084
+ //MARK: スクリプト停止位置(マクロなどなら最上位の呼び元)
1085
+ nowScrFnLn() {
1086
+ const { fn: t, idx: s } = this.nowScrIdx(), i = this.#h[t], n = this.#l(i, s);
1087
+ return { fn: t, ...n };
1088
+ }
1089
+ //MARK: しおりの保存
1090
+ #wt(t) {
1091
+ if (!("place" in t)) throw "placeは必須です";
1092
+ const s = Number(t.place);
1093
+ delete t[":タグ名"], delete t.place, t.text = t.text ?? "", this.#u.json = t, this.val.setMark(s, this.#u);
1094
+ const i = Number(this.val.getVal("sys:const.sn.save.place"));
1095
+ return s === i && this.val.setVal_Nochk("sys", "const.sn.save.place", i + 1), !1;
1096
+ }
1097
+ recodeDesign(t) {
1098
+ let s = "", i = 0;
1099
+ const n = this.#n.length;
1100
+ if (t.design_unit && n > 0) {
1101
+ const r = this.#n[0];
1102
+ s = r.fn, i = r.idx;
1103
+ } else
1104
+ s = this.#i, i = this.#t;
1105
+ t[":path"] = this.#_(s);
1106
+ const a = this.#h[s], h = this.#l(a, i);
1107
+ t[":ln"] = h.ln, t[":col_s"] = h.col_s, t[":col_e"] = h.col_e;
1108
+ const o = i - 1;
1109
+ t[":idx_tkn"] = o, t[":token"] = a.aToken[o], this.sys.send2Dbg("_recodeDesign", t);
1110
+ }
1111
+ replace(t, s) {
1112
+ this.#s.aToken[t] = s;
1113
+ }
1114
+ }
1115
+ const z = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1116
+ __proto__: null,
1117
+ RPN_COMP_CHIN: C,
1118
+ ScriptIterator: p
1119
+ }, Symbol.toStringTag, { value: "Module" }));
1120
+ export {
1121
+ C as R,
1122
+ z as S,
1123
+ k as a
1124
+ };
1125
+ //# sourceMappingURL=ScriptIterator.js.map