@famibee/skynovel 1.65.0 → 2.0.0

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 (176) hide show
  1. package/README.md +3 -3
  2. package/dist/Button.js +131 -163
  3. package/dist/Button.js.map +1 -1
  4. package/dist/CallStack.js +19 -22
  5. package/dist/CallStack.js.map +1 -1
  6. package/dist/CmnInterface.js +91 -0
  7. package/dist/CmnInterface.js.map +1 -0
  8. package/dist/CmnLib.js +94 -0
  9. package/dist/CmnLib.js.map +1 -0
  10. package/dist/Config.js +26 -0
  11. package/dist/Config.js.map +1 -0
  12. package/dist/ConfigBase.js +152 -0
  13. package/dist/ConfigBase.js.map +1 -0
  14. package/dist/DebugMng.js +89 -102
  15. package/dist/DebugMng.js.map +1 -1
  16. package/dist/EventListenerCtn.js +21 -0
  17. package/dist/EventListenerCtn.js.map +1 -0
  18. package/dist/EventMng.js +1435 -1577
  19. package/dist/EventMng.js.map +1 -1
  20. package/dist/Grammar.js +194 -0
  21. package/dist/Grammar.js.map +1 -0
  22. package/dist/GrpLayer.js +163 -195
  23. package/dist/GrpLayer.js.map +1 -1
  24. package/dist/Layer.js +260 -0
  25. package/dist/Layer.js.map +1 -0
  26. package/dist/LayerMng.js +810 -991
  27. package/dist/LayerMng.js.map +1 -1
  28. package/dist/Main.js +144 -393
  29. package/dist/Main.js.map +1 -1
  30. package/dist/PropParser.js +936 -834
  31. package/dist/PropParser.js.map +1 -1
  32. package/dist/Reading.js +918 -786
  33. package/dist/Reading.js.map +1 -1
  34. package/dist/RubySpliter.js +59 -92
  35. package/dist/RubySpliter.js.map +1 -1
  36. package/dist/ScriptIterator.js +805 -1034
  37. package/dist/ScriptIterator.js.map +1 -1
  38. package/dist/SndBuf.js +1097 -1332
  39. package/dist/SndBuf.js.map +1 -1
  40. package/dist/SoundMng.js +124 -135
  41. package/dist/SoundMng.js.map +1 -1
  42. package/dist/SpritesMng.js +220 -232
  43. package/dist/SpritesMng.js.map +1 -1
  44. package/dist/SysBase.js +1729 -0
  45. package/dist/SysBase.js.map +1 -0
  46. package/dist/TxtLayer.js +1212 -1397
  47. package/dist/TxtLayer.js.map +1 -1
  48. package/dist/Variable.js +398 -466
  49. package/dist/Variable.js.map +1 -1
  50. package/dist/chunk.js +18 -0
  51. package/dist/gamepad.js +723 -511
  52. package/dist/gamepad.js.map +1 -1
  53. package/dist/pixi.js +13422 -0
  54. package/dist/pixi.js.map +1 -0
  55. package/dist/platform.js +424 -369
  56. package/dist/platform.js.map +1 -1
  57. package/dist/sn/AnalyzeTagArg.d.ts +1 -1
  58. package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
  59. package/dist/sn/CmnInterface.d.ts +3 -1
  60. package/dist/sn/CmnInterface.d.ts.map +1 -1
  61. package/dist/sn/CmnLib.d.ts.map +1 -1
  62. package/dist/sn/CmnTween.d.ts +3 -3
  63. package/dist/sn/CmnTween.d.ts.map +1 -1
  64. package/dist/sn/EventMng.d.ts.map +1 -1
  65. package/dist/sn/Grammar.d.ts +1 -1
  66. package/dist/sn/Grammar.d.ts.map +1 -1
  67. package/dist/sn/PropParser.d.ts +2 -2
  68. package/dist/sn/PropParser.d.ts.map +1 -1
  69. package/dist/sn/Reading.d.ts +6 -0
  70. package/dist/sn/Reading.d.ts.map +1 -1
  71. package/dist/sn/ScriptIterator.d.ts.map +1 -1
  72. package/dist/sn/SndBuf.d.ts +27 -16
  73. package/dist/sn/SndBuf.d.ts.map +1 -1
  74. package/dist/sn/SoundMng.d.ts +4 -1
  75. package/dist/sn/SoundMng.d.ts.map +1 -1
  76. package/dist/sn/SysBase.d.ts.map +1 -1
  77. package/dist/sn/TxtStage.d.ts +2 -1
  78. package/dist/sn/TxtStage.d.ts.map +1 -1
  79. package/dist/test/ValTest.d.ts +1 -1
  80. package/dist/test/ValTest.d.ts.map +1 -1
  81. package/dist/web.js +653 -8
  82. package/dist/web.js.map +1 -1
  83. package/dist_app/Button.js +131 -163
  84. package/dist_app/Button.js.map +1 -1
  85. package/dist_app/CallStack.js +19 -22
  86. package/dist_app/CallStack.js.map +1 -1
  87. package/dist_app/CmnInterface.js +91 -0
  88. package/dist_app/CmnInterface.js.map +1 -0
  89. package/dist_app/CmnLib.js +94 -0
  90. package/dist_app/CmnLib.js.map +1 -0
  91. package/dist_app/Config.js +26 -0
  92. package/dist_app/Config.js.map +1 -0
  93. package/dist_app/ConfigBase.js +152 -0
  94. package/dist_app/ConfigBase.js.map +1 -0
  95. package/dist_app/DebugMng.js +92 -0
  96. package/dist_app/DebugMng.js.map +1 -0
  97. package/dist_app/EventListenerCtn.js +21 -0
  98. package/dist_app/EventListenerCtn.js.map +1 -0
  99. package/dist_app/EventMng.js +1435 -1577
  100. package/dist_app/EventMng.js.map +1 -1
  101. package/dist_app/Grammar.js +194 -0
  102. package/dist_app/Grammar.js.map +1 -0
  103. package/dist_app/GrpLayer.js +163 -195
  104. package/dist_app/GrpLayer.js.map +1 -1
  105. package/dist_app/Layer.js +260 -0
  106. package/dist_app/Layer.js.map +1 -0
  107. package/dist_app/LayerMng.js +810 -991
  108. package/dist_app/LayerMng.js.map +1 -1
  109. package/dist_app/Main.js +144 -392
  110. package/dist_app/Main.js.map +1 -1
  111. package/dist_app/PropParser.js +936 -834
  112. package/dist_app/PropParser.js.map +1 -1
  113. package/dist_app/Reading.js +918 -786
  114. package/dist_app/Reading.js.map +1 -1
  115. package/dist_app/RubySpliter.js +59 -92
  116. package/dist_app/RubySpliter.js.map +1 -1
  117. package/dist_app/ScriptIterator.js +805 -1033
  118. package/dist_app/ScriptIterator.js.map +1 -1
  119. package/dist_app/SndBuf.js +1097 -1332
  120. package/dist_app/SndBuf.js.map +1 -1
  121. package/dist_app/SoundMng.js +124 -135
  122. package/dist_app/SoundMng.js.map +1 -1
  123. package/dist_app/SpritesMng.js +220 -231
  124. package/dist_app/SpritesMng.js.map +1 -1
  125. package/dist_app/SysBase.js +1729 -0
  126. package/dist_app/SysBase.js.map +1 -0
  127. package/dist_app/TxtLayer.js +1212 -1396
  128. package/dist_app/TxtLayer.js.map +1 -1
  129. package/dist_app/Variable.js +398 -466
  130. package/dist_app/Variable.js.map +1 -1
  131. package/dist_app/app.js +211 -8
  132. package/dist_app/app.js.map +1 -1
  133. package/dist_app/appMain.js +20 -21
  134. package/dist_app/appMain.js.map +1 -1
  135. package/dist_app/chunk.js +18 -0
  136. package/dist_app/gamepad.js +723 -511
  137. package/dist_app/gamepad.js.map +1 -1
  138. package/dist_app/pixi.js +11181 -0
  139. package/dist_app/pixi.js.map +1 -0
  140. package/dist_app/platform.js +424 -369
  141. package/dist_app/platform.js.map +1 -1
  142. package/dist_app/preload.js +2 -2
  143. package/dist_app/preload.js.map +1 -1
  144. package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
  145. package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
  146. package/dist_app/sn/CmnInterface.d.ts +3 -1
  147. package/dist_app/sn/CmnInterface.d.ts.map +1 -1
  148. package/dist_app/sn/CmnLib.d.ts.map +1 -1
  149. package/dist_app/sn/CmnTween.d.ts +3 -3
  150. package/dist_app/sn/CmnTween.d.ts.map +1 -1
  151. package/dist_app/sn/EventMng.d.ts.map +1 -1
  152. package/dist_app/sn/Grammar.d.ts +1 -1
  153. package/dist_app/sn/Grammar.d.ts.map +1 -1
  154. package/dist_app/sn/PropParser.d.ts +2 -2
  155. package/dist_app/sn/PropParser.d.ts.map +1 -1
  156. package/dist_app/sn/Reading.d.ts +6 -0
  157. package/dist_app/sn/Reading.d.ts.map +1 -1
  158. package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
  159. package/dist_app/sn/SndBuf.d.ts +27 -16
  160. package/dist_app/sn/SndBuf.d.ts.map +1 -1
  161. package/dist_app/sn/SoundMng.d.ts +4 -1
  162. package/dist_app/sn/SoundMng.d.ts.map +1 -1
  163. package/dist_app/sn/SysBase.d.ts.map +1 -1
  164. package/dist_app/sn/TxtStage.d.ts +2 -1
  165. package/dist_app/sn/TxtStage.d.ts.map +1 -1
  166. package/dist_app/test/ValTest.d.ts +1 -1
  167. package/dist_app/test/ValTest.d.ts.map +1 -1
  168. package/package.json +23 -13
  169. package/dist/CmnTween.js +0 -1005
  170. package/dist/CmnTween.js.map +0 -1
  171. package/dist/web2.js +0 -21644
  172. package/dist/web2.js.map +0 -1
  173. package/dist_app/CmnTween.js +0 -1005
  174. package/dist_app/CmnTween.js.map +0 -1
  175. package/dist_app/app2.js +0 -18547
  176. package/dist_app/app2.js.map +0 -1
@@ -0,0 +1,194 @@
1
+ import { d as getFn } from "./CmnLib.js";
2
+ import { n as SEARCH_PATH_ARG_EXT } from "./ConfigBase.js";
3
+ function idx2LnCol(e, t, n = 0, r = 0, i = 0) {
4
+ let a = e.slice(0, t).split("\n"), o = a.length;
5
+ return {
6
+ ln: r + o - 1,
7
+ ch: o < 2 ? i + 1 + n + t : a.at(-1)?.length ?? 0
8
+ };
9
+ }
10
+ var AnalyzeTagArg = class {
11
+ #e = /;[^\n]*|(?<key>[^\s="'#|;]+)(?:\s|;[^\n]*\n)*=(?:\s|;[^\n]*\n)*(?:(?<val>[^\s"'#|;]+)|(["'#])(?<val2>.*?)\3)(?:\|(?:(?<def>[^\s"'#;]+)|(["'#])(?<def2>.*?)\6))?|(?<literal>[^\s;]+)/g;
12
+ parse(e) {
13
+ this.#t = {}, this.#n = !1;
14
+ for (let { groups: t } of e.matchAll(this.#e)) {
15
+ let { key: e, val: n, val2: r, def: i, def2: a, literal: o } = t;
16
+ e ? this.#t[e] = {
17
+ val: n ?? r ?? "",
18
+ def: i ?? a
19
+ } : o && (o === "*" ? this.#n = !0 : this.#t[o] = {
20
+ val: "1",
21
+ def: void 0
22
+ });
23
+ }
24
+ }
25
+ parseinDetail(e, t, r, i) {
26
+ let a = {}, o = e.slice(1 + t, -1);
27
+ for (let { groups: e, index: s, 0: c } of o.matchAll(this.#e)) {
28
+ if (!s) continue;
29
+ let { key: l, val: u, val2: d = "", literal: f } = e;
30
+ if (f) {
31
+ if (f.endsWith("=")) {
32
+ let e = f.length - 1, { ch: c } = idx2LnCol(o, s + e, t, r, i);
33
+ a[f.slice(0, -1)] = {
34
+ k_ln: r,
35
+ k_ch: c - e,
36
+ v_ln: r,
37
+ v_ch: c + 1,
38
+ v_len: 0
39
+ };
40
+ }
41
+ continue;
42
+ }
43
+ if (!l) continue;
44
+ let { ln: p, ch: m } = idx2LnCol(o, s, t, r, i), { ln: h, ch: g } = idx2LnCol(o, s + c.lastIndexOf(u ?? d) - (u ? 0 : 1), t, r, i);
45
+ a[l] = {
46
+ k_ln: p,
47
+ k_ch: m,
48
+ v_ln: h,
49
+ v_ch: g,
50
+ v_len: u ? u.length : d.length + 2
51
+ };
52
+ }
53
+ return a;
54
+ }
55
+ #t = {};
56
+ get hPrm() {
57
+ return this.#t;
58
+ }
59
+ #n = !1;
60
+ get isKomeParam() {
61
+ return this.#n;
62
+ }
63
+ };
64
+ const REG_TAG = /(?<name>[^\s;\]]+)/;
65
+ function tagToken2Name_Args(e) {
66
+ let t = REG_TAG.exec(e.slice(1, -1))?.groups;
67
+ if (!t) throw `タグ記述【${e}】異常です(タグ解析)`;
68
+ let n = t.name;
69
+ return [n, e.slice(1 + n.length, -1)];
70
+ }
71
+ function tagToken2Name(e) {
72
+ let t = REG_TAG.exec(e.slice(1))?.groups;
73
+ if (!t) throw `タグ記述【${e}】異常です(タグ解析)`;
74
+ return t.name;
75
+ }
76
+ function splitAmpersand(e) {
77
+ let t = e.replaceAll("==", "=").replaceAll("!=", "≠").split("="), n = t.length;
78
+ if (n < 2 || n > 3) throw "「&計算」書式では「=」指定が一つか二つ必要です";
79
+ let [r, i, a] = t;
80
+ if (i.startsWith("&")) throw "「&計算」書式では「&」指定が不要です";
81
+ return {
82
+ name: r.replaceAll("=", "==").replaceAll("≠", "!="),
83
+ text: i.replaceAll("=", "==").replaceAll("≠", "!="),
84
+ ...n === 3 ? { cast: a.trim() } : {}
85
+ };
86
+ }
87
+ var Grammar = class {
88
+ constructor(e) {
89
+ this.cfg = e, this.setEscape("");
90
+ }
91
+ #e;
92
+ setEscape(e) {
93
+ if (this.#l && e in this.#l) throw "[エスケープ文字] char【" + e + "】が登録済みの括弧マクロまたは一文字マクロです";
94
+ this.#e = RegExp((e ? `\\${e}\\S|` : "") + `\\n+|\\t+|\\[let_ml\\s+[^\\]]+\\].+?(?=\\[endlet_ml[\\]\\s])|\\[(?:[^"'#;\\]]+|(["'#]).*?\\1|;[^\\n]*)*?]|;[^\\n]*|&[^&\\n]+&|&&?(?:[^"'#;\\n&]+|(["'#]).*?\\2)+|^\\*[^\\s\\[&;\\\\]+|[^\\n\\t\\[;${e ? `\\${e}` : ""}]+`, "gs"), this.#t = /* @__PURE__ */ RegExp(`[\\w\\s;[\\]*=&|《》${e ? `\\${e}` : ""}]`), this.#u = /* @__PURE__ */ RegExp(`[\\n\\t;\\[*&${e ? `\\${e}` : ""}]`);
95
+ }
96
+ bracket2macro(e, t, n, r) {
97
+ let { name: i, text: a } = e;
98
+ if (!i) throw "[bracket2macro] nameは必須です";
99
+ if (!a) throw "[bracket2macro] textは必須です";
100
+ let o = a.at(0);
101
+ if (!o) throw "[bracket2macro] textは必須です";
102
+ if (a.length !== 2) throw "[bracket2macro] textは括弧の前後を示す二文字を指定してください";
103
+ if (!(i in t)) throw `[bracket2macro] 未定義のタグ又はマクロ[${i}]です`;
104
+ this.#l ??= {};
105
+ let s = a.charAt(1);
106
+ if (o in this.#l) throw "[bracket2macro] text【" + o + "】が登録済みの括弧マクロまたは一文字マクロです";
107
+ if (s in this.#l) throw "[bracket2macro] text【" + s + "】が登録済みの括弧マクロまたは一文字マクロです";
108
+ if (this.#t.test(o)) throw "[bracket2macro] text【" + o + "】は括弧マクロに使用できない文字です";
109
+ if (this.#t.test(s)) throw "[bracket2macro] text【" + s + "】は括弧マクロに使用できない文字です";
110
+ this.#l[s] = "0", this.#l[o] = `[${i} text=`, this.addC2M(`\\${o}[^\\${s}]*\\${s}`, `\\${o}\\${s}`), this.#d(n, r);
111
+ }
112
+ char2macro(e, t, n, r) {
113
+ let { char: i, name: a } = e;
114
+ if (!i) throw "[char2macro] charは必須です";
115
+ if (this.#l ??= {}, i in this.#l) throw "[char2macro] char【" + i + "】が登録済みの括弧マクロまたは一文字マクロです";
116
+ if (this.#t.test(i)) throw "[char2macro] char【" + i + "】は一文字マクロに使用できない文字です";
117
+ if (!a) throw "[char2macro] nameは必須です";
118
+ if (!(a in t)) throw `[char2macro] 未定義のタグ又はマクロ[${a}]です`;
119
+ this.#l[i] = `[${a}]`, this.addC2M(`\\${i}`, `\\${i}`), this.#d(n, r);
120
+ }
121
+ #t;
122
+ #n = /* @__PURE__ */ RegExp("");
123
+ #r = "";
124
+ #i = "";
125
+ addC2M(e, t) {
126
+ this.#r += `${e}|`, this.#i += t, this.#n = RegExp(`(${this.#r}[^${this.#i}]+)`, "g");
127
+ }
128
+ resolveScript(e) {
129
+ let t = e.replaceAll(/\r\n?/g, "\n").match(this.#e)?.flatMap((e) => {
130
+ if (!this.testTagLetml(e)) return e;
131
+ let t = /^([^\]]+?])(.*)$/s.exec(e);
132
+ if (!t) return e;
133
+ let [, n, r] = t;
134
+ return [n, r];
135
+ }) ?? [], n = {
136
+ aToken: t,
137
+ len: t.length,
138
+ aLNum: []
139
+ };
140
+ return this.#d(n), this.#s(n), n;
141
+ }
142
+ #a = /^\[(call|loadplugin)\s/;
143
+ #o = /\bfn\s*=\s*[^\s\]]+/;
144
+ #s(n) {
145
+ for (let r = n.len - 1; r >= 0; --r) {
146
+ let i = n.aToken[r];
147
+ if (!this.#a.test(i)) continue;
148
+ let [o, s] = tagToken2Name_Args(i);
149
+ this.#c.parse(s);
150
+ let c = this.#c.hPrm.fn;
151
+ if (!c) continue;
152
+ let { val: l } = c;
153
+ if (!l.endsWith("*")) continue;
154
+ n.aToken.splice(r, 1, " ", "; " + i), n.aLNum.splice(r, 1, NaN, NaN);
155
+ let u = o === "loadplugin" ? SEARCH_PATH_ARG_EXT.CSS : SEARCH_PATH_ARG_EXT.SN, d = this.cfg.matchPath("^" + l.slice(0, -1) + ".*", u);
156
+ for (let t of d) {
157
+ let a = i.replace(this.#o, "fn=" + decodeURIComponent(getFn(t[u])));
158
+ n.aToken.splice(r, 0, a), n.aLNum.splice(r, 0, NaN);
159
+ }
160
+ }
161
+ n.len = n.aToken.length;
162
+ }
163
+ #c = new AnalyzeTagArg();
164
+ testTagLetml(e) {
165
+ return /^\[let_ml\s/.test(e);
166
+ }
167
+ testTagEndLetml(e) {
168
+ return /^\[endlet_ml\s*]/.test(e);
169
+ }
170
+ #l = void 0;
171
+ #u;
172
+ #d(e, t = 0) {
173
+ if (this.#l) {
174
+ for (let n = e.len - 1; n >= t; --n) {
175
+ let t = e.aToken[n];
176
+ if (this.testNoTxt(t.at(0) ?? "\n")) continue;
177
+ let r = e.aLNum[n], i = t.match(this.#n);
178
+ if (!i) continue;
179
+ let a = 1;
180
+ for (let t = i.length - 1; t >= 0; --t) {
181
+ let o = i[t], s = this.#l[o.at(0) ?? " "];
182
+ s && (o = s + (s.endsWith("]") ? "" : `'${o.slice(1, -1)}']`)), e.aToken.splice(n, a, o), e.aLNum.splice(n, a, r), a = 0;
183
+ }
184
+ }
185
+ e.len = e.aToken.length;
186
+ }
187
+ }
188
+ testNoTxt(e) {
189
+ return this.#u.test(e);
190
+ }
191
+ };
192
+ export { AnalyzeTagArg as a, tagToken2Name_Args as i, splitAmpersand as n, tagToken2Name as r, Grammar as t };
193
+
194
+ //# sourceMappingURL=Grammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grammar.js","names":["#REG_TAGARG","#hPrm","#isKomeParam","hRng: {[key: string]: PRM_RANGE}","cfg: T_Config","#hC2M","#REG_TOKEN","#REG_CANTC2M","#REG_TOKEN_NOTXT","#replaceScr_C2M","#regStrC2M","#regStrC2M4not","#REGC2M","a: string[]","#replaceScript_Wildcard","#REG_WILDCARD","#REG_WILDCARD2","#alzTagArg"],"sources":["../src/sn/AnalyzeTagArg.ts","../src/sn/Grammar.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nexport type PRM = {\n\tval\t\t: string;\n\tdef\t\t: string | undefined;\n}\nexport type HPRM = {\n\t[key: string]: PRM,\n}\n\nexport type PRM_RANGE = {\n\tk_ln\t: number;\n\tk_ch\t: number;\n\tv_ln\t: number;\n\tv_ch\t: number;\n\tv_len\t: number;\n}\n\nexport function idx2LnCol(sSn: string, idx: number, lenNm = 0, ln = 0, ch = 0): {ln: number; ch: number;} {\n\tconst sBefore = sSn.slice(0, idx);\n\tconst a = sBefore.split('\\n');\n\tconst len = a.length;\n\treturn {\n\t\tln\t: ln +len -1,\n\t\tch\t: len < 2 ?ch +1+lenNm +idx :a.at(-1)?.length ?? 0,\n\t};\n}\n\n\nexport class AnalyzeTagArg {\n\t// 87 match 2725 step(0.5ms) PCRE2 https://regex101.com/r/aeN57J/1\n\t/*\n;[^\\n]*\n|\t(?<key>[^\\s=\"'#|;]+)\n\t(?: \\s | ;[^\\n]*\\n)*\n\t=\n\t(?: \\s | ;[^\\n]*\\n)*\n\t(?:\t(?<val> [^\\s\"'#|;]+)\n\t|\t([\"'#]) (?<val2>.*?) \\3 )\n\t(?: \\|\n\t\t(?: (?<def> [^\\s\"'#;]+)\n\t|\t([\"'#]) (?<def2>.*?) \\6 ) )?\n|\t(?<literal>[^\\s;]+)\n\t*/\n\treadonly\t#REG_TAGARG\t= /;[^\\n]*|(?<key>[^\\s=\"'#|;]+)(?:\\s|;[^\\n]*\\n)*=(?:\\s|;[^\\n]*\\n)*(?:(?<val>[^\\s\"'#|;]+)|([\"'#])(?<val2>.*?)\\3)(?:\\|(?:(?<def>[^\\s\"'#;]+)|([\"'#])(?<def2>.*?)\\6))?|(?<literal>[^\\s;]+)/g;\n\n\t// 【属性 = 値 | 省略値】の分析\n\tparse(args: string): void {\n\t\tthis.#hPrm = {};\n\t\tthis.#isKomeParam = false;\n\t\tfor (const {groups} of args.matchAll(this.#REG_TAGARG)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2, def, def2, literal} = groups!;\n\t\t\tif (key) this.#hPrm[key] = {\n\t\t\t\tval: val ?? val2 ?? '',\n\t\t\t\tdef: def ?? def2\n\t\t\t};\n\t\t\telse if (literal) {\n\t\t\t\tif (literal === '*') this.#isKomeParam = true;\n\t\t\t\telse this.#hPrm[literal] = {val: '1', def: undefined};\n\t\t\t}\n\t\t}\n\t}\n\n\t// 属性と値の位置をまとめて返す\n\tparseinDetail(token: string, lenNm: number, ln: number, ch: number): {[key: string]: PRM_RANGE} {\n\t\tconst hRng: {[key: string]: PRM_RANGE} = {};\n\n\t\tconst sSn = token.slice(1+lenNm, -1);\n\t\tfor (const {groups, index, 0: z} of sSn.matchAll(this.#REG_TAGARG)) {\n\t\t\tif (! index) continue;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2='', literal} = groups!;\n\t\t\tif (literal) {\n\t\t\t\tif (literal.endsWith('=')) {\n\t\t\t\t\tconst lenVnm = literal.length -1;\n\t\t\t\t\tconst {ch: k_ch} = idx2LnCol(sSn, index +lenVnm, lenNm, ln, ch);\n\t\t\t\t\thRng[literal.slice(0, -1)] = {\n\t\t\t\t\t\tk_ln: ln,\n\t\t\t\t\t\tk_ch: k_ch -lenVnm,\n\t\t\t\t\t\tv_ln: ln,\n\t\t\t\t\t\tv_ch: k_ch +1,\n\t\t\t\t\t//\tv_ch: ch +1+lenNm +literal.length +1,\n\t\t\t\t\t\tv_len: 0,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (! key) continue;\n\n\t\t\tconst {ln: k_ln, ch: k_ch} = idx2LnCol(sSn, index, lenNm, ln, ch);\n\t\t\tconst {ln: v_ln, ch: v_ch} = idx2LnCol(sSn, index +z.lastIndexOf(val ?? val2) -(val ?0 :1), lenNm, ln, ch);\n\t\t\thRng[key] = {k_ln, k_ch, v_ln, v_ch, v_len: val ?val.length :val2.length +2};\n\t\t}\n\n\t\treturn hRng;\n\t}\n\n\t#hPrm: HPRM\t= {};\n\tget hPrm() {return this.#hPrm}\n\n\t#isKomeParam\t= false;\n\tget isKomeParam() {return this.#isKomeParam}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2019-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {AnalyzeTagArg} from './AnalyzeTagArg';\nimport {getFn} from './CmnLib';\nimport {type T_Config, SEARCH_PATH_ARG_EXT} from './ConfigBase';\n\n\nexport type TArg = {\n\t':タグ名'?\t: string;\n\tcanskip?\t: boolean;\n\n\tlayer?\t: string;\t// レイヤ系\n\tclass?\t: string;\n\tindex?\t: number;\n\tdive?\t: string;\n\tpage?\t: string;\n\talpha?\t: number;\n\tpivot_x?: number;\n\tpivot_y?: number;\n\trotation?\t: number;\n\tscale_x?: number;\n\tscale_y?: number;\n\tvisible?: boolean;\n\tblendmode?\t: string;\n\n\tleft?\t: number;\n\ttop?\t: number;\n\twidth?\t: number;\n\theight?\t: number;\n\tpl?\t\t: number;\n\tpr?\t\t: number;\n\tpt?\t\t: number;\n\tpb?\t\t: number;\n\n\trotate?\t: number;\n\tin_style?\t: string;\n\tout_style?\t: string;\n\tffs?\t: string;\n\tnoffs?\t: string;\n\tkinsoku_sol?\t: string;\n\tkinsoku_eol?\t: string;\n\tkinsoku_dns?\t: string;\n\tkinsoku_bura?\t: string;\n\tbura?\t: boolean;\n\tbreak_fixed?\t\t: boolean;\n\tbreak_fixed_left?\t: number;\n\tbreak_fixed_top?\t: number;\n\n\ttime?\t: number;\n\trule?\t: string;\n\tglsl?\t: string;\n\trender?\t: boolean;\n\n\tpos?\t: string;\n\ttext?\t: string;\n\twait?\t: number;\n\trecord?\t: boolean;\n\tpic?\t: string;\n\tenabled?: boolean;\n\thint?\t\t: string;\n\thint_style?\t: string;\n\thint_opt?\t: string;\n\tclickse?\t: string;\n\tenterse?\t: string;\n\tleavese?\t: string;\n\tclicksebuf?\t: string;\n\tentersebuf?\t: string;\n\tleavesebuf?\t: string;\n\tonenter?\t: string;\n\tonleave?\t: string;\n\n\tt?\t: string;\n\tr?\t: string;\n\texp?\t: string;\n\tchar?\t: string;\n\tsesame?\t: string;\n\tcast?\t: string;\n\tval?\t: string;\n\tflags?\t: string;\n\treg?\t: string;\n\tlen?\t: string;\n\turl?\t: string;\n\tformat?\t: string;\n\tchain?\t: string;\n\tpath?\t: string;\n\n\tfn?\t\t: string;\n\tface?\t: string;\n\tlabel?\t: string;\n\tcall?\t: boolean;\n\tglobal?\t: boolean;\n\tname?\t: string;\n\tclear_local_event?\t: boolean;\n\n\tstyle?\t\t\t: string;\n\tstyle_hover?\t: string;\n\tstyle_clicked?\t: string;\n\tr_style?\t\t: string;\n\tr_style_hover?\t: string;\n\tr_style_clicked?: string;\n\tr_align?\t: string;\n\n\tb_width?\t: string;\n\tb_height?\t: string;\n\tb_color?\t: string;\n\tb_alpha?\t: number;\n\tb_alpha_isfixed?\t: boolean;\n\tb_pic?\t\t: string;\n\tback_clear?\t: string;\n\n\tmax_col?\t: string;\n\tmax_row?\t: string;\n\tbura_col?\t: string;\n\tchk_overrow?\t: string;\n\n\tdx?\t: number;\n\tdy?\t: number;\n\n\tkey?\t: string;\n\ttype?\t: string;\t// 3Dレイヤで使用\n\tcamera_target?\t: string;\n\n\targ?\t: TArg;\n\tfnc?\t: ()=> void;\n\n\tfilter?\t: string;\n\tmatrix?\t: string;\n\tclear_filter?\t: boolean;\n\tenable_filter?\t: boolean;\n\n\tease?\t: string;\n\n\tcentering?\t:boolean;\n\tx?\t\t: number | string;\n\ty?\t\t: number | string;\n\n\tid?\t\t\t: string;\n\tsrc?\t\t: string;\n\tvar_name?\t: string;\n\tset_fnc?\t: string;\n\tbreak_fnc?\t: string;\n\n\tfrom?\t: number;\n\tto?\t\t: number | string;\n\tplace?\t: number;\n\tadd?\t: string;\n\tdel?\t: string;\n\n\tbuf?\t: string;\t// 音系\n\tbuf2?\t: string;\n\tloop?\t: boolean;\n\tvolume?\t: number;\n\tret_ms?\t: number;\n\tend_ms?\t: number;\n\tjoin?\t: boolean;\n\tdo_rec?\t: boolean;\n\tpan?\t: number;\n\tstop?\t: boolean;\n\n\tclear?\t: boolean;\n\n\t// デザインモード\n\t':id_dc'?\t: string;\n\t':id_tag'?\t: string;\n\t':path'?\t: string;\n\t':ln'?\t\t: number;\n\t':col_s'?\t: number;\n\t':col_e'?\t: number;\n\t':idx_tkn'?\t: number;\n\t':token'?\t: string;\n\t':redraw'?\t: boolean;\n\tdesign_unit?: boolean;\t// デザインモードでこのマクロへの引数変更とするか(内部をサーチさせない)\n\n//\tstepin?\t\t: boolean;\t\t// 拡張機能のみ使用:false指定でステップインしない\n//\tnowarn_unused?\t: boolean;\t// 拡張機能のみ使用:未使用警告を出さない\n}\nexport type TTag = (hArg: TArg) => boolean;\nexport type T_HTag = {\n// 変数操作\n\tclearsysvar\t\t\t: TTag;\t// システム変数の全消去\n\tclearvar\t\t\t: TTag;\t// ゲーム変数の全消去\n\tlet_abs\t\t\t\t: TTag;\t// 絶対値\n\tlet_char_at\t\t\t: TTag;\t// 文字列から一字取りだし\n\tlet_index_of\t\t: TTag;\t// 文字列で検索\n\tlet_length\t\t\t: TTag;\t// 文字列の長さ\n\tlet_ml\t\t\t\t: TTag;\t// インラインテキスト代入\n\tlet_replace\t\t\t: TTag;\t// 正規表現で置換\n\tlet_round\t\t\t: TTag;\t// 四捨五入\n\tlet_search\t\t\t: TTag;\t// 正規表現で検索\n\tlet_substr\t\t\t: TTag;\t// 文字列から抜きだし\n\tlet\t\t\t\t\t: TTag;\t// 変数代入・演算\n\n// レイヤ共通\n\tadd_lay\t\t\t\t: TTag;\t// レイヤを追加する\n\tclear_lay\t\t\t: TTag;\t// レイヤ設定の消去\n\tfinish_trans\t\t: TTag;\t// トランス強制終了\n\tlay\t\t\t\t\t: TTag;\t// レイヤ設定\n\ttrans\t\t\t\t: TTag;\t// ページ裏表を交換\n\twt\t\t\t\t\t: TTag;\t// トランス終了待ち\n\tadd_filter\t\t\t: TTag;\t// フィルター追加\n\tclear_filter\t\t: TTag;\t// フィルター全削除\n\tenable_filter\t\t: TTag;\t// フィルター個別切替\n\n// トゥイーンアニメ\n\tpause_tsy\t\t\t: TTag;\t// 一時停止\n\tresume_tsy\t\t\t: TTag;\t// 一時停止再開\n\tstop_tsy\t\t\t: TTag;\t// トゥイーン中断\n\ttsy\t\t\t\t\t: TTag;\t// トゥイーン開始\n\twait_tsy\t\t\t: TTag;\t// トゥイーン終了待ち\n\n// 文字・文字レイヤ\n\tautowc\t\t\t\t: TTag;\t// 文字ごとのウェイト\n\tch\t\t\t\t\t: TTag;\t// 文字を追加する\n\tch_in_style\t\t\t: TTag;\t// 文字出現演出定義\n\tch_out_style\t\t: TTag;\t// 文字消去演出定義\n\tclear_text\t\t\t: TTag;\t// 文字消去\n\tcurrent\t\t\t\t: TTag;\t// デフォルト文字レイヤ設定\n\tendlet_ml\t\t\t: TTag;\t// インラインテキスト代入の終端\n\tendlink\t\t\t\t: TTag;\t// ハイパーリンクの終了\n\ter\t\t\t\t\t: TTag;\t// ページ両面の文字消去\n\tgraph\t\t\t\t: TTag;\t// インライン画像表示\n\tlink\t\t\t\t: TTag;\t// ハイパーリンク\n\tr\t\t\t\t\t: TTag;\t// 改行\n\trec_ch\t\t\t\t: TTag;\t// 履歴書き込み\n\trec_r\t\t\t\t: TTag;\t// 履歴改行\n\treset_rec\t\t\t: TTag;\t// 履歴リセット\n\truby2\t\t\t\t: TTag;\t// 文字列と複数ルビの追加\n\tset_focus\t\t\t: TTag;\t// フォーカス移動\n\tspan\t\t\t\t: TTag;\t// インラインスタイル設定\n\ttcy\t\t\t\t\t: TTag;\t// 縦中横を表示する\n\n// 画像・画像レイヤ\n\tadd_face\t\t\t: TTag;\t// 差分名称の定義\n\twv\t\t\t\t\t: TTag;\t// 動画再生終了待ち\n\n// HTMLフレーム\n\tadd_frame\t\t\t: TTag;\t// フレーム追加\n\tframe\t\t\t\t: TTag;\t// フレームに設定\n\tlet_frame\t\t\t: TTag;\t// フレーム変数を取得\n\tset_frame\t\t\t: TTag;\t// フレーム変数に設定\n\ttsy_frame\t\t\t: TTag;\t// フレームをトゥイーン開始\n\n// イベント\n\tclear_event\t\t\t: TTag;\t// イベントを全消去\n\tenable_event\t\t: TTag;\t// イベント有無の切替\n\tevent\t\t\t\t: TTag;\t// イベントを予約\n\tl\t\t\t\t\t: TTag;\t// 行末クリック待ち\n\tp\t\t\t\t\t: TTag;\t// 改ページクリック待ち\n\ts\t\t\t\t\t: TTag;\t// 停止する\n\tset_cancel_skip\t\t: TTag;\t// スキップ中断予約\n\twait\t\t\t\t: TTag;\t// ウェイトを入れる\n\twaitclick\t\t\t: TTag;\t// クリックを待つ\n\n// BGM・効果音\n\tfadebgm\t\t\t\t: TTag;\t// BGMのフェード\n\tfadeoutbgm\t\t\t: TTag;\t// BGMのフェードアウト\n\tfadeoutse\t\t\t: TTag;\t// 効果音のフェードアウト\n\tfadese\t\t\t\t: TTag;\t// 効果音のフェード\n\tplaybgm\t\t\t\t: TTag;\t// BGM の演奏\n\tplayse\t\t\t\t: TTag;\t// 効果音の再生\n\tstop_allse\t\t\t: TTag;\t// 全効果音再生の停止\n\tstopbgm\t\t\t\t: TTag;\t// BGM 演奏の停止\n\tstopfadese\t\t\t: TTag;\t// 音声フェードの停止\n\tstopse\t\t\t\t: TTag;\t// 効果音再生の停止\n\tvolume\t\t\t\t: TTag;\t// BGMや効果音の音量を指定\n\twb\t\t\t\t\t: TTag;\t// BGM フェードの終了待ち\n\twf\t\t\t\t\t: TTag;\t// 効果音フェードの終了待ち\n\twl\t\t\t\t\t: TTag;\t// BGM 再生の終了待ち\n\tws\t\t\t\t\t: TTag;\t// 効果音再生の終了待ち\n\txchgbuf\t\t\t\t: TTag;\t\t// サウンドバッファの交換\n\n// 条件分岐\n\telse\t\t\t\t: TTag;\t// その他ifブロック開始\n\telsif\t\t\t\t: TTag;\t// 別条件のifブロック開始\n\tendif\t\t\t\t: TTag;\t// ifブロックの終端\n\tif\t\t\t\t\t: TTag;\t// ifブロックの開始\n\n// ラベル・ジャンプ\n\tbutton\t\t\t\t: TTag;\t// ボタンを表示\n\tcall\t\t\t\t: TTag;\t// サブルーチンコール\n\tjump\t\t\t\t: TTag;\t// シナリオジャンプ\n\tpage\t\t\t\t: TTag;\t// ページ移動\n\tpop_stack\t\t\t: TTag;\t// コールスタック破棄\n\treturn\t\t\t\t: TTag;\t// サブルーチンから戻る\n\n// マクロ\n\tbracket2macro\t\t: TTag;\t// 括弧マクロの定義\n\tchar2macro\t\t\t: TTag;\t// 一文字マクロの定義\n\tendmacro\t\t\t: TTag;\t// マクロ定義の終了\n\tmacro\t\t\t\t: TTag;\t// マクロ定義の開始\n\n// しおり\n\tcopybookmark\t\t: TTag;\t// しおりの複写\n\terasebookmark\t\t: TTag;\t// しおりの消去\n\tload\t\t\t\t: TTag;\t// しおりの読込\n\trecord_place\t\t: TTag;\t// セーブポイント指定\n\treload_script\t\t: TTag;\t// スクリプト再読込\n\tsave\t\t\t\t: TTag;\t// しおりの保存\n\n// 画面揺らし\n\tquake\t\t\t\t: TTag;\t// 画面を揺らす\n\tstop_quake\t\t\t: TTag;\t// 画面揺らし中断\n\twq\t\t\t\t\t: TTag;\t// 画面揺らし終了待ち\n\n// システム\n\tclose\t\t\t\t: TTag;\t// アプリの終了\n\texport\t\t\t\t: TTag;\t// プレイデータをエクスポート\n\timport\t\t\t\t: TTag;\t// プレイデータをインポート\n\tloadplugin\t\t\t: TTag;\t// プラグインの読み込み\n\tnavigate_to\t\t\t: TTag;\t// URLを開く\n\tsnapshot\t\t\t: TTag;\t// スナップショット\n\ttitle\t\t\t\t: TTag;\t// タイトル指定\n\ttoggle_full_screen\t: TTag;\t// 全画面状態切替\n\tupdate_check\t\t: TTag;\t// 更新チェック機能\n\twindow\t\t\t\t: TTag;\t// アプリウインドウ設定\n\n// デバッグ・その他\n\tdump_lay\t\t\t: TTag;\t// レイヤのダンプ\n\tdump_script\t\t\t: TTag;\t// 外部へスクリプトを表示\n\tdump_stack\t\t\t: TTag;\t// スタックのダンプ\n\tdump_val\t\t\t: TTag;\t// 変数のダンプ\n\tlog\t\t\t\t\t: TTag;\t// ログ出力\n\ttrace\t\t\t\t: TTag;\t// デバッグ表示へ出力\n}\n\n\nexport type Script = {\n\taToken\t: string[];\t\t// トークン群\n\tlen\t\t: number;\t\t// トークン数\n\taLNum\t: number[];\t\t// トークンの行番号\n};\n\n\nexport const\tREG_TAG\t= /(?<name>[^\\s;\\]]+)/;\t// test用にexport\nexport function\ttagToken2Name_Args(token: string): [name: string, args: string] {\n\tconst e = REG_TAG.exec(token.slice(1, -1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\tconst nm = g.name!;\n\treturn [nm, token.slice(1 +nm.length, -1)];\n}\nexport function\ttagToken2Name(token: string): string {\n\tconst e = REG_TAG.exec(token.slice(1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\treturn g.name!;\n}\n\nexport function\tsplitAmpersand(token: string): {\n\t\tname: string;\n\t\ttext: string;\n\t\tcast?: string;\n} {\t// テスト用にpublic\n\tconst equa = token.replaceAll('==', '=').replaceAll('!=', '≠').split('=');\n\t\t// != を弾けないので中途半端ではある\n\tconst cnt_equa = equa.length;\n\tif (cnt_equa < 2 || cnt_equa > 3) throw '「&計算」書式では「=」指定が一つか二つ必要です';\n\n\tconst [e0, e1, e2] = equa;\n\tif (e1!.startsWith('&')) throw '「&計算」書式では「&」指定が不要です';\n\treturn {\n\t\tname: e0!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\ttext: e1!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\t...cnt_equa === 3 ?{cast: e2!.trim()} :{},\n\t};\n}\n\n\nexport class Grammar {\n\tconstructor(private readonly cfg: T_Config) {this.setEscape('')}\n\n\t#REG_TOKEN\t: RegExp;\n\tsetEscape(ce: string) {\n\t\tif (this.#hC2M && ce in this.#hC2M) throw '[エスケープ文字] char【'+ ce +'】が登録済みの括弧マクロまたは一文字マクロです';\n\n\t\t// 1083 matches (14577 step, 9.9ms) https://regex101.com/r/dP0tAY/1\n\t\t/*\n\\\\\\S |\n \\n+\n| \\t+\n|\t\\[let_ml \\s+ [^\\]]+ ]\n\t.+? (?=\\[endlet_ml [\\]\\s])\n| \\[ (?: [^\"'#;\\]]+\n\t| ([\"'#]).*?\\1\n\t| ;[^\\n]* ) *? ]\n| ;[^\\n]*\n| &[^&\\n]+&\n| &&?(?: [^\"'#;\\n&]+ | ([\"'#]).*?\\2 )+\n| ^\\*[^\\s\\[&;\\\\]+\n| [^\\n\\t\\[;\\\\]+\n\t\t*/\n/*\n\t[^\"'#;\\]]++\n\t| ([\"'\\#]).*?\\1\n\t\t\t++ にしたいところだが、jsは未サポートらしい(2022/10/16)\n*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\t\t// https://qiita.com/ue5963/items/bd8e32ac9e6b12aa7fab\n\t\tthis.#REG_TOKEN = new RegExp(\n\t\t(ce\t?`\\\\${ce}\\\\S|` :'')+\t// エスケープシーケンス\n\t\t'\\\\n+'+\t\t\t\t// 改行\n\t\t'|\\\\t+'+\t\t\t// タブ文字\n\t\t'|\\\\[let_ml\\\\s+[^\\\\]]+\\\\]'+\n\t\t\t'.+?'+\t\t\t// [let_ml]〜[endlet_ml]間のテキスト\n\t\t'(?=\\\\[endlet_ml[\\\\]\\\\s])'+\n\t\t'|\\\\[(?:'+\n\t\t\t'[^\"\\'#;\\\\]]+|'+\t// タグ\n\t\t\t'([\"\\'#]).*?\\\\1' +\n\t\t\t\t// . は (?:\\\\${ ce??'\\\\' }.|[^\\\\1]) でなくてよさげ\n\t\t'|;[^\\\\n]*)*?]'+\n\t\t'|;[^\\\\n]*'+\t\t// コメント\n\t\t'|&[^&\\\\n]+&'+\t\t// &表示&\n\t\t'|&&?(?:[^\"\\'#;\\\\n&]+|([\"\\'#]).*?\\\\2)+'+\t// &代入\n\t\t'|^\\\\*[^\\\\s\\\\[&;\\\\\\\\]+'+\t// ラベル\n\t\t`|[^\\\\n\\\\t\\\\[;${ce ?`\\\\${ce}` :''}]+`,\t\t// 本文\n\t\t'gs');\n\t\tthis.#REG_CANTC2M = new RegExp(`[\\\\w\\\\s;[\\\\]*=&|《》${ce ?`\\\\${ce}` :''}]`);\n\t\tthis.#REG_TOKEN_NOTXT = new RegExp(`[\\\\n\\\\t;\\\\[*&${ce ?`\\\\${ce}` :''}]`);\n\t}\n\n\n\t// 括弧マクロの定義\n\tbracket2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {name, text} = hArg;\n\t\tif (! name) throw '[bracket2macro] nameは必須です';\n\t\tif (! text) throw '[bracket2macro] textは必須です';\n\t\tconst op = text.at(0);\n\t\tif (! op) throw '[bracket2macro] textは必須です';\n\t\tif (text.length !== 2) throw '[bracket2macro] textは括弧の前後を示す二文字を指定してください';\n\t\tif (! (name in hTag)) throw `[bracket2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M ??= {};\n\t\tconst cl = text.charAt(1);\n\t\tif (op in this.#hC2M) throw '[bracket2macro] text【'+ op +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (cl in this.#hC2M) throw '[bracket2macro] text【'+ cl +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(op)) throw '[bracket2macro] text【'+ op +'】は括弧マクロに使用できない文字です';\n\t\tif (this.#REG_CANTC2M.test(cl)) throw '[bracket2macro] text【'+ cl +'】は括弧マクロに使用できない文字です';\n\n\t\tthis.#hC2M[cl] = '0';\t// チェック用ダミー\n\t\tthis.#hC2M[op] = `[${name} text=`;\n\n\t\tthis.addC2M(`\\\\${op}[^\\\\${cl}]*\\\\${cl}`, `\\\\${op}\\\\${cl}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t// 一文字マクロの定義\n\tchar2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {char, name} = hArg;\n\t\tif (! char) throw '[char2macro] charは必須です';\n\t\tthis.#hC2M ??= {};\n\t\tif (char in this.#hC2M) throw '[char2macro] char【'+ char +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(char)) throw '[char2macro] char【'+ char +'】は一文字マクロに使用できない文字です';\n\n\t\tif (! name) throw '[char2macro] nameは必須です';\n\t\tif (! (name in hTag)) throw `[char2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M[char] = `[${name}]`;\n\n\t\tthis.addC2M(`\\\\${char}`, `\\\\${char}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t#REG_CANTC2M\t: RegExp;\n\t#REGC2M\t\t\t= new RegExp('');\n\t#regStrC2M\t\t= '';\n\t#regStrC2M4not\t= '';\n\taddC2M(a: string, b: string) {\n\t\tthis.#regStrC2M += `${a}|`;\n\t\tthis.#regStrC2M4not += b;\n\t\tthis.#REGC2M = new RegExp(\n\t\t\t`(${this.#regStrC2M}[^${this.#regStrC2M4not}]+)`, 'g');\n\t}\n\n\n\tresolveScript(txt: string): Script {\n\t\tconst a: string[] = txt\n\t\t.replaceAll(/\\r\\n?/g, '\\n')\n\t\t.match(this.#REG_TOKEN)\n\t\t?.flatMap(tkn=> {\n\t\t\tif (! this.testTagLetml(tkn)) return tkn;\n\n\t\t\tconst r = /^([^\\]]+?])(.*)$/s.exec(tkn);\n\t\t\tif (! r) return tkn;\n\t\t\tconst [, a, b] = r;\n\t\t\treturn [a!, b!];\n\t\t}) ?? [];\n\n\t\tconst scr = {aToken: a, len: a.length, aLNum: []};\n\t\tthis.#replaceScr_C2M(scr);\n\n\t\tthis.#replaceScript_Wildcard(scr);\n\n\t\treturn scr;\n\t}\n\n\n\treadonly #REG_WILDCARD\t= /^\\[(call|loadplugin)\\s/;\n\treadonly #REG_WILDCARD2\t= /\\bfn\\s*=\\s*[^\\s\\]]+/;\n\t#replaceScript_Wildcard(scr: Script) {\n\t\tfor (let i=scr.len -1; i>=0; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (! this.#REG_WILDCARD.test(token)) continue;\n\n\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\tthis.#alzTagArg.parse(args);\n\n\t\t\tconst p_fn = this.#alzTagArg.hPrm.fn;\n\t\t\tif (! p_fn) continue;\n\t\t\tconst {val: fn} = p_fn;\n\t\t\tif (! fn.endsWith('*')) continue;\n\n\t\t\tscr.aToken.splice(i, 1, '\\t', '; '+ token);\n\t\t\tscr.aLNum.splice(i, 1, NaN, NaN);\n\n\t\t\tconst ext = tag_name === 'loadplugin'\n\t\t\t\t? SEARCH_PATH_ARG_EXT.CSS\n\t\t\t\t: SEARCH_PATH_ARG_EXT.SN;\n\t\t\tconst a = this.cfg.matchPath('^'+ fn.slice(0, -1) +'.*', ext);\n\t\t\tfor (const v of a) {\n\t\t\t\tconst nt = token.replace(\n\t\t\t\t\tthis.#REG_WILDCARD2,\n\t\t\t\t\t'fn='+ decodeURIComponent(getFn(v[ext]!))\n\t\t\t\t);\n\t\t\t\t//console.log('\\t='+ nt +'=');\n\t\t\t\tscr.aToken.splice(i, 0, nt);\n\t\t\t\tscr.aLNum.splice(i, 0, NaN);\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\t\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\ttestTagLetml(tkn: string): boolean {return /^\\[let_ml\\s/.test(tkn)}\n\ttestTagEndLetml(tkn: string): boolean {return /^\\[endlet_ml\\s*]/.test(tkn)}\n\n\n\t#hC2M\t: {[char: string]: string} | undefined = undefined;\n\t#REG_TOKEN_NOTXT\t: RegExp;\n\t#replaceScr_C2M(scr: Script, start_idx = 0): void {\n\t\tif (! this.#hC2M) return;\n\n\t\tfor (let i=scr.len- 1; i >= start_idx; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (this.testNoTxt(token.at(0) ?? '\\n')) continue;\n\t\t\t\t// 省略時は #REG_TOKEN_NOTXT に引っかかる \\n に\n\n\t\t\tconst lnum = scr.aLNum[i]!;\n\t\t\tconst a = token.match(this.#REGC2M);\n\t\t\tif (! a) continue;\n\t\t\tlet del = 1;\n\t\t\tfor (let j=a.length -1; j>=0; --j) {\n\t\t\t\tlet ch = a[j]!;\n\t\t\t\tconst macro = this.#hC2M[ch.at(0) ?? ' '];\n\t\t\t\t\t// 省略時は #REG_CANTC2M に引っかかる ' ' に\n\t\t\t\tif (macro) {\n\t\t\t\t\tch = macro +(macro.endsWith(']')\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: `'${ch.slice(1, -1)}']`);\n\t\t\t\t\t// 文字列は半角空白を意識して''で囲むが、いずれ変えたい場合がある?\n\t\t\t\t}\n\t\t\t\tscr.aToken.splice(i, del, ch);\n\n\t\t\t\tscr.aLNum.splice(i, del, lnum);\n\t\t\t\tdel = 0;\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\ttestNoTxt(ch: string): boolean {return this.#REG_TOKEN_NOTXT.test(ch)}\t//4tst\n\n}\n"],"mappings":";;AAuBA,SAAgB,UAAU,GAAa,GAAa,IAAQ,GAAG,IAAK,GAAG,IAAK,GAA8B;CAEzG,IAAM,IADU,EAAI,MAAM,GAAG,EAAI,CACf,MAAM,KAAK,EACvB,IAAM,EAAE;AACd,QAAO;EACN,IAAK,IAAI,IAAK;EACd,IAAK,IAAM,IAAG,IAAI,IAAE,IAAO,IAAK,EAAE,GAAG,GAAG,EAAE,UAAU;EACpD;;AAIF,IAAa,gBAAb,MAA2B;CAe1B,KAAuB;CAGvB,MAAM,GAAoB;AAEzB,EADA,MAAA,IAAa,EAAE,EACf,MAAA,IAAoB;AACpB,OAAK,IAAM,EAAC,eAAW,EAAK,SAAS,MAAA,EAAiB,EAAE;GAEvD,IAAM,EAAC,QAAK,QAAK,SAAM,QAAK,SAAM,eAAW;AAC7C,GAAI,IAAK,MAAA,EAAW,KAAO;IAC1B,KAAK,KAAO,KAAQ;IACpB,KAAK,KAAO;IACZ,GACQ,MACJ,MAAY,MAAK,MAAA,IAAoB,KACpC,MAAA,EAAW,KAAW;IAAC,KAAK;IAAK,KAAK,KAAA;IAAU;;;CAMxD,cAAc,GAAe,GAAe,GAAY,GAAwC;EAC/F,IAAMG,IAAmC,EAAE,EAErC,IAAM,EAAM,MAAM,IAAE,GAAO,GAAG;AACpC,OAAK,IAAM,EAAC,WAAQ,UAAO,GAAG,OAAM,EAAI,SAAS,MAAA,EAAiB,EAAE;AACnE,OAAI,CAAE,EAAO;GAEb,IAAM,EAAC,QAAK,QAAK,UAAK,IAAI,eAAW;AACrC,OAAI,GAAS;AACZ,QAAI,EAAQ,SAAS,IAAI,EAAE;KAC1B,IAAM,IAAS,EAAQ,SAAQ,GACzB,EAAC,IAAI,MAAQ,UAAU,GAAK,IAAO,GAAQ,GAAO,GAAI,EAAG;AAC/D,OAAK,EAAQ,MAAM,GAAG,GAAG,IAAI;MAC5B,MAAM;MACN,MAAM,IAAM;MACZ,MAAM;MACN,MAAM,IAAM;MAEZ,OAAO;MACP;;AAEF;;AAED,OAAI,CAAE,EAAK;GAEX,IAAM,EAAC,IAAI,GAAM,IAAI,MAAQ,UAAU,GAAK,GAAO,GAAO,GAAI,EAAG,EAC3D,EAAC,IAAI,GAAM,IAAI,MAAQ,UAAU,GAAK,IAAO,EAAE,YAAY,KAAO,EAAK,IAAG,IAAK,IAAG,IAAI,GAAO,GAAI,EAAG;AAC1G,KAAK,KAAO;IAAC;IAAM;IAAM;IAAM;IAAM,OAAO,IAAK,EAAI,SAAQ,EAAK,SAAQ;IAAE;;AAG7E,SAAO;;CAGR,KAAc,EAAE;CAChB,IAAI,OAAO;AAAC,SAAO,MAAA;;CAEnB,KAAe;CACf,IAAI,cAAc;AAAC,SAAO,MAAA;;;ACwO3B,MAAa,UAAU;AACvB,SAAgB,mBAAmB,GAA6C;CAE/E,IAAM,IADI,QAAQ,KAAK,EAAM,MAAM,GAAG,GAAG,CAAC,EAC7B;AACb,KAAI,CAAE,EAAG,OAAM,QAAQ,EAAM;CAE7B,IAAM,IAAK,EAAE;AACb,QAAO,CAAC,GAAI,EAAM,MAAM,IAAG,EAAG,QAAQ,GAAG,CAAC;;AAE3C,SAAgB,cAAc,GAAuB;CAEpD,IAAM,IADI,QAAQ,KAAK,EAAM,MAAM,EAAE,CAAC,EACzB;AACb,KAAI,CAAE,EAAG,OAAM,QAAQ,EAAM;AAE7B,QAAO,EAAE;;AAGV,SAAgB,eAAe,GAI7B;CACD,IAAM,IAAO,EAAM,WAAW,MAAM,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,MAAM,IAAI,EAEnE,IAAW,EAAK;AACtB,KAAI,IAAW,KAAK,IAAW,EAAG,OAAM;CAExC,IAAM,CAAC,GAAI,GAAI,KAAM;AACrB,KAAI,EAAI,WAAW,IAAI,CAAE,OAAM;AAC/B,QAAO;EACN,MAAM,EAAI,WAAW,KAAK,KAAK,CAAC,WAAW,KAAK,KAAK;EACrD,MAAM,EAAI,WAAW,KAAK,KAAK,CAAC,WAAW,KAAK,KAAK;EACrD,GAAG,MAAa,IAAG,EAAC,MAAM,EAAI,MAAM,EAAC,GAAE,EAAE;EACzC;;AAIF,IAAa,UAAb,MAAqB;CACpB,YAAY,GAAgC;AAAC,EAAhB,KAAA,MAAA,GAAgB,KAAK,UAAU,GAAG;;CAE/D;CACA,UAAU,GAAY;AACrB,MAAI,MAAA,KAAc,KAAM,MAAA,EAAY,OAAM,oBAAmB,IAAI;AA4CjE,EAnBA,MAAA,IAAsB,QACrB,IAAI,KAAK,EAAG,QAAO,MACpB,qMAcgB,IAAI,KAAK,MAAM,GAAG,KAClC,KAAK,EACL,MAAA,IAAoB,gBAAI,OAAO,qBAAqB,IAAI,KAAK,MAAM,GAAG,GAAG,EACzE,MAAA,IAAwB,gBAAI,OAAO,gBAAgB,IAAI,KAAK,MAAM,GAAG,GAAG;;CAKzE,cAAc,GAAY,GAAc,GAAa,GAAmB;EACvE,IAAM,EAAC,SAAM,YAAQ;AACrB,MAAI,CAAE,EAAM,OAAM;AAClB,MAAI,CAAE,EAAM,OAAM;EAClB,IAAM,IAAK,EAAK,GAAG,EAAE;AACrB,MAAI,CAAE,EAAI,OAAM;AAChB,MAAI,EAAK,WAAW,EAAG,OAAM;AAC7B,MAAI,EAAG,KAAQ,GAAO,OAAM,+BAA+B,EAAK;AAEhE,QAAA,MAAe,EAAE;EACjB,IAAM,IAAK,EAAK,OAAO,EAAE;AACzB,MAAI,KAAM,MAAA,EAAY,OAAM,0BAAyB,IAAI;AACzD,MAAI,KAAM,MAAA,EAAY,OAAM,0BAAyB,IAAI;AACzD,MAAI,MAAA,EAAkB,KAAK,EAAG,CAAE,OAAM,0BAAyB,IAAI;AACnE,MAAI,MAAA,EAAkB,KAAK,EAAG,CAAE,OAAM,0BAAyB,IAAI;AAOnE,EALA,MAAA,EAAW,KAAM,KACjB,MAAA,EAAW,KAAM,IAAI,EAAK,SAE1B,KAAK,OAAO,KAAK,EAAG,MAAM,EAAG,MAAM,KAAM,KAAK,EAAG,IAAI,IAAK,EAE1D,MAAA,EAAqB,GAAK,EAAU;;CAGrC,WAAW,GAAY,GAAc,GAAa,GAAmB;EACpE,IAAM,EAAC,SAAM,YAAQ;AACrB,MAAI,CAAE,EAAM,OAAM;AAElB,MADA,MAAA,MAAe,EAAE,EACb,KAAQ,MAAA,EAAY,OAAM,uBAAsB,IAAM;AAC1D,MAAI,MAAA,EAAkB,KAAK,EAAK,CAAE,OAAM,uBAAsB,IAAM;AAEpE,MAAI,CAAE,EAAM,OAAM;AAClB,MAAI,EAAG,KAAQ,GAAO,OAAM,4BAA4B,EAAK;AAM7D,EAJA,MAAA,EAAW,KAAQ,IAAI,EAAK,IAE5B,KAAK,OAAO,KAAK,KAAQ,KAAK,IAAO,EAErC,MAAA,EAAqB,GAAK,EAAU;;CAErC;CACA,KAAY,gBAAI,OAAO,GAAG;CAC1B,KAAc;CACd,KAAiB;CACjB,OAAO,GAAW,GAAW;AAG5B,EAFA,MAAA,KAAmB,GAAG,EAAE,IACxB,MAAA,KAAuB,GACvB,MAAA,IAAmB,OAClB,IAAI,MAAA,EAAgB,IAAI,MAAA,EAAoB,MAAM,IAAI;;CAIxD,cAAc,GAAqB;EAClC,IAAMU,IAAc,EACnB,WAAW,UAAU,KAAK,CAC1B,MAAM,MAAA,EAAgB,EACrB,SAAQ,MAAM;AACf,OAAI,CAAE,KAAK,aAAa,EAAI,CAAE,QAAO;GAErC,IAAM,IAAI,oBAAoB,KAAK,EAAI;AACvC,OAAI,CAAE,EAAG,QAAO;GAChB,IAAM,GAAG,GAAG,KAAK;AACjB,UAAO,CAAC,GAAI,EAAG;IACd,IAAI,EAAE,EAEF,IAAM;GAAC,QAAQ;GAAG,KAAK,EAAE;GAAQ,OAAO,EAAE;GAAC;AAKjD,SAJA,MAAA,EAAqB,EAAI,EAEzB,MAAA,EAA6B,EAAI,EAE1B;;CAIR,KAAyB;CACzB,KAA0B;CAC1B,GAAwB,GAAa;AACpC,OAAK,IAAI,IAAE,EAAI,MAAK,GAAG,KAAG,GAAG,EAAE,GAAG;GACjC,IAAM,IAAQ,EAAI,OAAO;AACzB,OAAI,CAAE,MAAA,EAAmB,KAAK,EAAM,CAAE;GAEtC,IAAM,CAAC,GAAU,KAAQ,mBAAmB,EAAM;AAClD,SAAA,EAAgB,MAAM,EAAK;GAE3B,IAAM,IAAO,MAAA,EAAgB,KAAK;AAClC,OAAI,CAAE,EAAM;GACZ,IAAM,EAAC,KAAK,MAAM;AAClB,OAAI,CAAE,EAAG,SAAS,IAAI,CAAE;AAGxB,GADA,EAAI,OAAO,OAAO,GAAG,GAAG,KAAM,OAAM,EAAM,EAC1C,EAAI,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI;GAEhC,IAAM,IAAM,MAAa,eACtB,oBAAoB,MACpB,oBAAoB,IACjB,IAAI,KAAK,IAAI,UAAU,MAAK,EAAG,MAAM,GAAG,GAAG,GAAE,MAAM,EAAI;AAC7D,QAAK,IAAM,KAAK,GAAG;IAClB,IAAM,IAAK,EAAM,QAChB,MAAA,GACA,QAAO,mBAAmB,MAAM,EAAE,GAAM,CAAC,CACzC;AAGD,IADA,EAAI,OAAO,OAAO,GAAG,GAAG,EAAG,EAC3B,EAAI,MAAM,OAAO,GAAG,GAAG,IAAI;;;AAG7B,IAAI,MAAM,EAAI,OAAO;;CAErB,KAAsB,IAAI,eAAa;CAGxC,aAAa,GAAsB;AAAC,SAAO,cAAc,KAAK,EAAI;;CAClE,gBAAgB,GAAsB;AAAC,SAAO,mBAAmB,KAAK,EAAI;;CAG1E,KAA+C,KAAA;CAC/C;CACA,GAAgB,GAAa,IAAY,GAAS;AAC3C,YAAA,GAEN;QAAK,IAAI,IAAE,EAAI,MAAK,GAAG,KAAK,GAAW,EAAE,GAAG;IAC3C,IAAM,IAAQ,EAAI,OAAO;AACzB,QAAI,KAAK,UAAU,EAAM,GAAG,EAAE,IAAI,KAAK,CAAE;IAGzC,IAAM,IAAO,EAAI,MAAM,IACjB,IAAI,EAAM,MAAM,MAAA,EAAa;AACnC,QAAI,CAAE,EAAG;IACT,IAAI,IAAM;AACV,SAAK,IAAI,IAAE,EAAE,SAAQ,GAAG,KAAG,GAAG,EAAE,GAAG;KAClC,IAAI,IAAK,EAAE,IACL,IAAQ,MAAA,EAAW,EAAG,GAAG,EAAE,IAAI;AAWrC,KATI,MACH,IAAK,KAAQ,EAAM,SAAS,IAAI,GAC7B,KACA,IAAI,EAAG,MAAM,GAAG,GAAG,CAAC,OAGxB,EAAI,OAAO,OAAO,GAAG,GAAK,EAAG,EAE7B,EAAI,MAAM,OAAO,GAAG,GAAK,EAAK,EAC9B,IAAM;;;AAGR,KAAI,MAAM,EAAI,OAAO;;;CAEtB,UAAU,GAAqB;AAAC,SAAO,MAAA,EAAsB,KAAK,EAAG"}
@@ -1,196 +1,164 @@
1
- import { z as c, a as h, e as m, k as p, x as f, v as u, B as _ } from "./app2.js";
2
- import { S as a } from "./SpritesMng.js";
3
- import { a as d } from "./CmnTween.js";
4
- class v {
5
- // static readonly #alzTagArg = new AnalyzeTagArg;
6
- constructor(t, s = !1) {
7
- this.bg_col = t, this.isLay = s;
8
- }
9
- static init(t, s, e, i, o, l) {
10
- }
11
- static cvsResizeDesign() {
12
- }
13
- destroy() {
14
- }
15
- gethArg() {
16
- return this.hArg;
17
- }
18
- hArg = {};
19
- sethArg(t) {
20
- this.hArg = t;
21
- }
22
- setOther(t) {
23
- }
24
- adopt(t) {
25
- }
26
- static enterMode() {
27
- }
28
- static allHide() {
29
- }
30
- set visible(t) {
31
- }
32
- static leaveMode() {
33
- }
34
- cvsResize() {
35
- }
36
- make() {
37
- }
38
- static replaceToken(t) {
39
- }
40
- }
41
- class b extends v {
42
- constructor(t, s) {
43
- super("#29e", !0);
44
- }
45
- setSp(t) {
46
- }
47
- }
48
- class r extends c {
49
- static #r;
50
- static init(t, s, e, i, o, l) {
51
- r.#r = e, a.init(s, l, i, t, o);
52
- }
53
- static destroy() {
54
- a.destroy();
55
- }
56
- #e = new b(this.ctn, this);
57
- constructor() {
58
- super(), h.isDbg && (this.#o = (t) => this.#e.setSp(t), this.cvsResize = () => {
59
- super.cvsResize(), this.#e.cvsResize();
60
- });
61
- }
62
- #o = () => {
63
- };
64
- #s = "";
65
- #i = "";
66
- #n = "";
67
- lay = (t) => {
68
- const s = d.procID + `GrpLayer lay name:${this.name_}`, e = this.#l(t, (i) => {
69
- i && d.endProc(s);
70
- });
71
- return e && d.beginProc(s), e;
72
- };
73
- #l(t, s) {
74
- const { fn: e, face: i = "" } = t;
75
- if (this.#e.sethArg(t), !e)
76
- return super.lay(t), this.ctn.children.length > 0 && this.setPos(t), this.#i = "", this.#s = this.#n = i, s(!1), !1;
77
- const o = "fn" in t, l = "face" in t;
78
- return this.clearLay({ clear_filter: m(t, "clear_filter", !0) }), o && (this.#i = e), l && (this.#n = i), super.lay(t), t.dx = 0, t.dy = 0, this.#c.destroy(), this.#c = new a(
79
- this.#s = e + (i ? "," + i : ""),
80
- this.ctn,
81
- (n) => {
82
- ("width" in t || "height" in t) && (n.width = p(t, "width", 0), n.height = p(t, "height", 0)), this.#d = n.width, this.#p = n.height, c.setXY(n, t, this.ctn, !0), c.setBlendmode(this.ctn, t), this.#o(n);
83
- },
84
- (n) => s(n)
85
- ), this.#c.ret;
86
- }
87
- #c = new a();
88
- #d = 0;
89
- #p = 0;
90
- get width() {
91
- return this.#d;
92
- }
93
- get height() {
94
- return this.#p;
95
- }
96
- renderStart(t) {
97
- if (t) {
98
- const e = this.ctn.alpha;
99
- this.ctn.alpha = 1, this.ctn.alpha = e;
100
- return;
101
- }
102
- this.#t = new f(this.#h), this.#t.visible = !1, this.ctn.addChildAt(this.#t, 0), this.#t.position.set(-this.ctn.x, -this.ctn.y);
103
- let s = () => {
104
- const e = this.ctn.alpha;
105
- this.ctn.alpha = 1;
106
- for (const i of this.ctn.children) i.visible = !0;
107
- this.#t.visible = !1, r.#r.renderer.render(this.ctn, { renderTexture: this.#h }), this.ctn.alpha = e;
108
- for (const i of this.ctn.children) i.visible = !1;
109
- };
110
- if (!this.containMovement) {
111
- const e = s;
112
- s = () => {
113
- s = () => {
114
- }, e();
115
- };
116
- }
117
- this.#a = () => {
118
- s(), this.#t.visible = !0;
119
- }, r.#r.ticker.add(this.#a);
120
- }
121
- #h = u.create({
122
- width: h.stageW,
123
- height: h.stageH
124
- });
125
- #t = new f();
126
- #a = () => {
127
- };
128
- renderEnd() {
129
- r.#r.ticker.remove(this.#a), this.ctn.removeChild(this.#t);
130
- for (const t of this.ctn.children) t.visible = !0;
131
- this.#t.destroy(!0), this.#h = u.create({
132
- width: h.stageW,
133
- height: h.stageH
134
- });
135
- }
136
- setPos(t) {
137
- c.setXY(
138
- this.ctn.children[0] ?? this.ctn,
139
- t,
140
- this.ctn,
141
- !0
142
- );
143
- }
144
- // アニメ・動画を含むか
145
- get containMovement() {
146
- if (this.#s === "") return !1;
147
- const t = this.ctn.children;
148
- return this.#s.split(",").some(
149
- (s, e) => t[e] instanceof _ || a.getHFn2VElm(s)
150
- );
151
- }
152
- clearLay(t) {
153
- super.clearLay(t), this.#c.destroy(), this.#i = "", this.#n = "", this.#s = "";
154
- }
155
- record = () => ({
156
- ...super.record(),
157
- sBkFn: this.#i,
158
- sBkFace: this.#n
159
- // idc_hArg : this.#idc.gethArg(),
160
- });
161
- playback(t, s) {
162
- if (super.playback(t, s), t.sBkFn === "" && t.sBkFace === "") {
163
- this.#i = "", this.#n = "";
164
- return;
165
- }
166
- s.push(new Promise((e) => this.#l(
167
- { fn: t.sBkFn, face: t.sBkFace, left: t.x, top: t.y, alpha: t.alpha, blendmode: c.getNum2Blendmode(t.blendMode), rotation: t.rotation, scale_x: t.scale_x, scale_y: t.scale_y },
168
- (i) => {
169
- this.ctn.position.set(t.x, t.y), e();
170
- }
171
- // Layer.setXY()の後に再度移動
172
- )));
173
- }
174
- makeDesignCast(t) {
175
- this.ctn.visible && t(this.#e);
176
- }
177
- //makeDesignCastChildren(_gdc: IMakeDesignCast) {}
178
- cvsResize() {
179
- super.cvsResize();
180
- }
181
- showDesignCast() {
182
- this.#e.visible = !0;
183
- }
184
- //showDesignCastChildren() {}
185
- dump = () => super.dump() + `, "pic":"${this.#s}"`;
186
- }
187
- const x = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
188
- __proto__: null,
189
- GrpLayer: r
190
- }, Symbol.toStringTag, { value: "Module" }));
191
- export {
192
- v as D,
193
- r as G,
194
- x as a
1
+ import { l as argChk_Num, s as argChk_Boolean, t as CmnLib } from "./CmnLib.js";
2
+ import { d as RenderTexture, n as AnimatedSprite, o as Sprite } from "./pixi.js";
3
+ import "./EventListenerCtn.js";
4
+ import "./ConfigBase.js";
5
+ import "./DebugMng.js";
6
+ import { t as Layer } from "./Layer.js";
7
+ import { t as Reading } from "./Reading.js";
8
+ import { t as SpritesMng } from "./SpritesMng.js";
9
+ var DesignCast = class {
10
+ static init(e, a, o, s, c, l) {}
11
+ static cvsResizeDesign() {}
12
+ constructor(e, a = !1) {
13
+ this.bg_col = e, this.isLay = a;
14
+ }
15
+ destroy() {}
16
+ gethArg() {
17
+ return this.hArg;
18
+ }
19
+ hArg = {};
20
+ sethArg(e) {
21
+ this.hArg = e;
22
+ }
23
+ setOther(e) {}
24
+ adopt(e) {}
25
+ static enterMode() {}
26
+ static allHide() {}
27
+ set visible(e) {}
28
+ static leaveMode() {}
29
+ cvsResize() {}
30
+ make() {}
31
+ static replaceToken(e) {}
32
+ }, GrpLayDesignCast = class extends DesignCast {
33
+ constructor(e, a) {
34
+ super("#29e", !0);
35
+ }
36
+ setSp(e) {}
37
+ }, GrpLayer = class d extends Layer {
38
+ static #e;
39
+ static init(e, a, o, s, c, l) {
40
+ d.#e = o, SpritesMng.init(a, l, s, e, c);
41
+ }
42
+ static destroy() {
43
+ SpritesMng.destroy();
44
+ }
45
+ #t = new GrpLayDesignCast(this.ctn, this);
46
+ constructor() {
47
+ super(), CmnLib.isDbg && (this.#n = (e) => this.#t.setSp(e), this.cvsResize = () => {
48
+ super.cvsResize(), this.#t.cvsResize();
49
+ });
50
+ }
51
+ #n = () => {};
52
+ #r = "";
53
+ #i = "";
54
+ #a = "";
55
+ lay = (e) => {
56
+ let a = Reading.procID + `GrpLayer lay name:${this.name_}`, o = this.#o(e, (e) => {
57
+ e && Reading.endProc(a);
58
+ });
59
+ return o && Reading.beginProc(a), o;
60
+ };
61
+ #o(o, s) {
62
+ let { fn: c, face: l = "" } = o;
63
+ if (this.#t.sethArg(o), !c) return super.lay(o), this.ctn.children.length > 0 && this.setPos(o), this.#i = "", this.#r = this.#a = l, s(!1), !1;
64
+ let u = "fn" in o, d = "face" in o;
65
+ return this.clearLay({ clear_filter: argChk_Boolean(o, "clear_filter", !0) }), u && (this.#i = c), d && (this.#a = l), super.lay(o), o.dx = 0, o.dy = 0, this.#s.destroy(), this.#s = new SpritesMng(this.#r = c + (l ? "," + l : ""), this.ctn, (a) => {
66
+ ("width" in o || "height" in o) && (a.width = argChk_Num(o, "width", 0), a.height = argChk_Num(o, "height", 0)), this.#c = a.width, this.#l = a.height, Layer.setXY(a, o, this.ctn, !0), Layer.setBlendmode(this.ctn, o), this.#n(a);
67
+ }, (e) => s(e)), this.#s.ret;
68
+ }
69
+ #s = new SpritesMng();
70
+ #c = 0;
71
+ #l = 0;
72
+ get width() {
73
+ return this.#c;
74
+ }
75
+ get height() {
76
+ return this.#l;
77
+ }
78
+ renderStart(e) {
79
+ if (e) {
80
+ let e = this.ctn.alpha;
81
+ this.ctn.alpha = 1, this.ctn.alpha = e;
82
+ return;
83
+ }
84
+ this.#d = new Sprite(this.#u), this.#d.visible = !1, this.ctn.addChildAt(this.#d, 0), this.#d.position.set(-this.ctn.x, -this.ctn.y);
85
+ let a = () => {
86
+ let e = this.ctn.alpha;
87
+ this.ctn.alpha = 1;
88
+ for (let e of this.ctn.children) e.visible = !0;
89
+ this.#d.visible = !1, d.#e.renderer.render(this.ctn, { renderTexture: this.#u }), this.ctn.alpha = e;
90
+ for (let e of this.ctn.children) e.visible = !1;
91
+ };
92
+ if (!this.containMovement) {
93
+ let e = a;
94
+ a = () => {
95
+ a = () => {}, e();
96
+ };
97
+ }
98
+ this.#f = () => {
99
+ a(), this.#d.visible = !0;
100
+ }, d.#e.ticker.add(this.#f);
101
+ }
102
+ #u = RenderTexture.create({
103
+ width: CmnLib.stageW,
104
+ height: CmnLib.stageH
105
+ });
106
+ #d = new Sprite();
107
+ #f = () => {};
108
+ renderEnd() {
109
+ d.#e.ticker.remove(this.#f), this.ctn.removeChild(this.#d);
110
+ for (let e of this.ctn.children) e.visible = !0;
111
+ this.#d.destroy(!0), this.#u = RenderTexture.create({
112
+ width: CmnLib.stageW,
113
+ height: CmnLib.stageH
114
+ });
115
+ }
116
+ setPos(e) {
117
+ Layer.setXY(this.ctn.children[0] ?? this.ctn, e, this.ctn, !0);
118
+ }
119
+ get containMovement() {
120
+ if (this.#r === "") return !1;
121
+ let e = this.ctn.children;
122
+ return this.#r.split(",").some((a, o) => e[o] instanceof AnimatedSprite || SpritesMng.getHFn2VElm(a));
123
+ }
124
+ clearLay(e) {
125
+ super.clearLay(e), this.#s.destroy(), this.#i = "", this.#a = "", this.#r = "";
126
+ }
127
+ record = () => ({
128
+ ...super.record(),
129
+ sBkFn: this.#i,
130
+ sBkFace: this.#a
131
+ });
132
+ playback(e, a) {
133
+ if (super.playback(e, a), e.sBkFn === "" && e.sBkFace === "") {
134
+ this.#i = "", this.#a = "";
135
+ return;
136
+ }
137
+ a.push(new Promise((a) => this.#o({
138
+ fn: e.sBkFn,
139
+ face: e.sBkFace,
140
+ left: e.x,
141
+ top: e.y,
142
+ alpha: e.alpha,
143
+ blendmode: Layer.getNum2Blendmode(e.blendMode),
144
+ rotation: e.rotation,
145
+ scale_x: e.scale_x,
146
+ scale_y: e.scale_y
147
+ }, (o) => {
148
+ this.ctn.position.set(e.x, e.y), a();
149
+ })));
150
+ }
151
+ makeDesignCast(e) {
152
+ this.ctn.visible && e(this.#t);
153
+ }
154
+ cvsResize() {
155
+ super.cvsResize();
156
+ }
157
+ showDesignCast() {
158
+ this.#t.visible = !0;
159
+ }
160
+ dump = () => super.dump() + `, "pic":"${this.#r}"`;
195
161
  };
196
- //# sourceMappingURL=GrpLayer.js.map
162
+ export { GrpLayer, DesignCast as t };
163
+
164
+ //# sourceMappingURL=GrpLayer.js.map