@famibee/skynovel 2.0.1 → 2.0.3

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 (123) hide show
  1. package/dist/Button.js +36 -34
  2. package/dist/Button.js.map +1 -1
  3. package/dist/CallStack.js +11 -6
  4. package/dist/CallStack.js.map +1 -1
  5. package/dist/CmnInterface.js +13 -11
  6. package/dist/CmnInterface.js.map +1 -1
  7. package/dist/CmnLib.js +58 -56
  8. package/dist/CmnLib.js.map +1 -1
  9. package/dist/Config.js +9 -7
  10. package/dist/Config.js.map +1 -1
  11. package/dist/ConfigBase.js +52 -49
  12. package/dist/ConfigBase.js.map +1 -1
  13. package/dist/DebugMng.js +9 -6
  14. package/dist/DebugMng.js.map +1 -1
  15. package/dist/EventListenerCtn.js +6 -4
  16. package/dist/EventListenerCtn.js.map +1 -1
  17. package/dist/EventMng.js +522 -417
  18. package/dist/EventMng.js.map +1 -1
  19. package/dist/Grammar.js +22 -20
  20. package/dist/Grammar.js.map +1 -1
  21. package/dist/GrpLayer.js +58 -57
  22. package/dist/GrpLayer.js.map +1 -1
  23. package/dist/Layer.js +66 -64
  24. package/dist/Layer.js.map +1 -1
  25. package/dist/LayerMng.js +461 -441
  26. package/dist/LayerMng.js.map +1 -1
  27. package/dist/Main.js +69 -67
  28. package/dist/Main.js.map +1 -1
  29. package/dist/PropParser.js +23 -19
  30. package/dist/PropParser.js.map +1 -1
  31. package/dist/Reading.js +422 -418
  32. package/dist/Reading.js.map +1 -1
  33. package/dist/RubySpliter.js +6 -4
  34. package/dist/RubySpliter.js.map +1 -1
  35. package/dist/ScriptIterator.js +374 -370
  36. package/dist/ScriptIterator.js.map +1 -1
  37. package/dist/SndBuf.js +643 -622
  38. package/dist/SndBuf.js.map +1 -1
  39. package/dist/SoundMng.js +59 -60
  40. package/dist/SoundMng.js.map +1 -1
  41. package/dist/SpritesMng.js +135 -129
  42. package/dist/SpritesMng.js.map +1 -1
  43. package/dist/SysBase.js +985 -950
  44. package/dist/SysBase.js.map +1 -1
  45. package/dist/TxtLayer.js +558 -551
  46. package/dist/TxtLayer.js.map +1 -1
  47. package/dist/Variable.js +47 -45
  48. package/dist/Variable.js.map +1 -1
  49. package/dist/chunk.js +11 -9
  50. package/dist/gamepad.js +396 -660
  51. package/dist/gamepad.js.map +1 -1
  52. package/dist/pixi.js +2631 -2593
  53. package/dist/pixi.js.map +1 -1
  54. package/dist/platform.js +6 -4
  55. package/dist/platform.js.map +1 -1
  56. package/dist/rolldown-runtime.js +20 -0
  57. package/dist/sn/RubySpliter.d.ts.map +1 -1
  58. package/dist/web.js +418 -418
  59. package/dist/web.js.map +1 -1
  60. package/dist_app/Button.js +36 -34
  61. package/dist_app/Button.js.map +1 -1
  62. package/dist_app/CallStack.js +11 -6
  63. package/dist_app/CallStack.js.map +1 -1
  64. package/dist_app/CmnInterface.js +13 -11
  65. package/dist_app/CmnInterface.js.map +1 -1
  66. package/dist_app/CmnLib.js +58 -56
  67. package/dist_app/CmnLib.js.map +1 -1
  68. package/dist_app/Config.js +9 -7
  69. package/dist_app/Config.js.map +1 -1
  70. package/dist_app/ConfigBase.js +52 -49
  71. package/dist_app/ConfigBase.js.map +1 -1
  72. package/dist_app/DebugMng.js +9 -6
  73. package/dist_app/DebugMng.js.map +1 -1
  74. package/dist_app/EventListenerCtn.js +6 -4
  75. package/dist_app/EventListenerCtn.js.map +1 -1
  76. package/dist_app/EventMng.js +522 -417
  77. package/dist_app/EventMng.js.map +1 -1
  78. package/dist_app/Grammar.js +22 -20
  79. package/dist_app/Grammar.js.map +1 -1
  80. package/dist_app/GrpLayer.js +58 -57
  81. package/dist_app/GrpLayer.js.map +1 -1
  82. package/dist_app/Layer.js +66 -64
  83. package/dist_app/Layer.js.map +1 -1
  84. package/dist_app/LayerMng.js +461 -441
  85. package/dist_app/LayerMng.js.map +1 -1
  86. package/dist_app/Main.js +69 -67
  87. package/dist_app/Main.js.map +1 -1
  88. package/dist_app/PropParser.js +23 -19
  89. package/dist_app/PropParser.js.map +1 -1
  90. package/dist_app/Reading.js +422 -418
  91. package/dist_app/Reading.js.map +1 -1
  92. package/dist_app/RubySpliter.js +6 -4
  93. package/dist_app/RubySpliter.js.map +1 -1
  94. package/dist_app/ScriptIterator.js +374 -370
  95. package/dist_app/ScriptIterator.js.map +1 -1
  96. package/dist_app/SndBuf.js +643 -622
  97. package/dist_app/SndBuf.js.map +1 -1
  98. package/dist_app/SoundMng.js +59 -60
  99. package/dist_app/SoundMng.js.map +1 -1
  100. package/dist_app/SpritesMng.js +135 -129
  101. package/dist_app/SpritesMng.js.map +1 -1
  102. package/dist_app/SysBase.js +985 -950
  103. package/dist_app/SysBase.js.map +1 -1
  104. package/dist_app/TxtLayer.js +558 -551
  105. package/dist_app/TxtLayer.js.map +1 -1
  106. package/dist_app/Variable.js +47 -45
  107. package/dist_app/Variable.js.map +1 -1
  108. package/dist_app/app.js +62 -63
  109. package/dist_app/app.js.map +1 -1
  110. package/dist_app/appMain.js +11 -11
  111. package/dist_app/appMain.js.map +1 -1
  112. package/dist_app/chunk.js +11 -9
  113. package/dist_app/gamepad.js +396 -660
  114. package/dist_app/gamepad.js.map +1 -1
  115. package/dist_app/pixi.js +2028 -1990
  116. package/dist_app/pixi.js.map +1 -1
  117. package/dist_app/platform.js +6 -4
  118. package/dist_app/platform.js.map +1 -1
  119. package/dist_app/preload.js +1 -1
  120. package/dist_app/preload.js.map +1 -1
  121. package/dist_app/rolldown-runtime.js +20 -0
  122. package/dist_app/sn/RubySpliter.d.ts.map +1 -1
  123. package/package.json +20 -21
package/dist/Grammar.js CHANGED
@@ -1,13 +1,14 @@
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) {
1
+ import { d as e } from "./CmnLib.js";
2
+ import { n as t } from "./ConfigBase.js";
3
+ //#region src/sn/AnalyzeTagArg.ts
4
+ function n(e, t, n = 0, r = 0, i = 0) {
4
5
  let a = e.slice(0, t).split("\n"), o = a.length;
5
6
  return {
6
7
  ln: r + o - 1,
7
8
  ch: o < 2 ? i + 1 + n + t : a.at(-1)?.length ?? 0
8
9
  };
9
10
  }
10
- var AnalyzeTagArg = class {
11
+ var r = class {
11
12
  #e = /;[^\n]*|(?<key>[^\s="'#|;]+)(?:\s|;[^\n]*\n)*=(?:\s|;[^\n]*\n)*(?:(?<val>[^\s"'#|;]+)|(["'#])(?<val2>.*?)\3)(?:\|(?:(?<def>[^\s"'#;]+)|(["'#])(?<def2>.*?)\6))?|(?<literal>[^\s;]+)/g;
12
13
  parse(e) {
13
14
  this.#t = {}, this.#n = !1;
@@ -29,7 +30,7 @@ var AnalyzeTagArg = class {
29
30
  let { key: l, val: u, val2: d = "", literal: f } = e;
30
31
  if (f) {
31
32
  if (f.endsWith("=")) {
32
- let e = f.length - 1, { ch: c } = idx2LnCol(o, s + e, t, r, i);
33
+ let e = f.length - 1, { ch: c } = n(o, s + e, t, r, i);
33
34
  a[f.slice(0, -1)] = {
34
35
  k_ln: r,
35
36
  k_ch: c - e,
@@ -41,7 +42,7 @@ var AnalyzeTagArg = class {
41
42
  continue;
42
43
  }
43
44
  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
+ let { ln: p, ch: m } = n(o, s, t, r, i), { ln: h, ch: g } = n(o, s + c.lastIndexOf(u ?? d) - +!u, t, r, i);
45
46
  a[l] = {
46
47
  k_ln: p,
47
48
  k_ch: m,
@@ -60,20 +61,19 @@ var AnalyzeTagArg = class {
60
61
  get isKomeParam() {
61
62
  return this.#n;
62
63
  }
63
- };
64
- const REG_TAG = /(?<name>[^\s;\]]+)/;
65
- function tagToken2Name_Args(e) {
66
- let t = REG_TAG.exec(e.slice(1, -1))?.groups;
64
+ }, i = /(?<name>[^\s;\]]+)/;
65
+ function a(e) {
66
+ let t = i.exec(e.slice(1, -1))?.groups;
67
67
  if (!t) throw `タグ記述【${e}】異常です(タグ解析)`;
68
68
  let n = t.name;
69
69
  return [n, e.slice(1 + n.length, -1)];
70
70
  }
71
- function tagToken2Name(e) {
72
- let t = REG_TAG.exec(e.slice(1))?.groups;
71
+ function o(e) {
72
+ let t = i.exec(e.slice(1))?.groups;
73
73
  if (!t) throw `タグ記述【${e}】異常です(タグ解析)`;
74
74
  return t.name;
75
75
  }
76
- function splitAmpersand(e) {
76
+ function s(e) {
77
77
  let t = e.replaceAll("==", "=").replaceAll("!=", "≠").split("="), n = t.length;
78
78
  if (n < 2 || n > 3) throw "「&計算」書式では「=」指定が一つか二つ必要です";
79
79
  let [r, i, a] = t;
@@ -84,14 +84,15 @@ function splitAmpersand(e) {
84
84
  ...n === 3 ? { cast: a.trim() } : {}
85
85
  };
86
86
  }
87
- var Grammar = class {
87
+ var c = class {
88
+ cfg;
88
89
  constructor(e) {
89
90
  this.cfg = e, this.setEscape("");
90
91
  }
91
92
  #e;
92
93
  setEscape(e) {
93
94
  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
+ 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 = RegExp(`[\\w\\s;[\\]*=&|《》${e ? `\\${e}` : ""}]`), this.#u = RegExp(`[\\n\\t;\\[*&${e ? `\\${e}` : ""}]`);
95
96
  }
96
97
  bracket2macro(e, t, n, r) {
97
98
  let { name: i, text: a } = e;
@@ -145,22 +146,22 @@ var Grammar = class {
145
146
  for (let r = n.len - 1; r >= 0; --r) {
146
147
  let i = n.aToken[r];
147
148
  if (!this.#a.test(i)) continue;
148
- let [o, s] = tagToken2Name_Args(i);
149
+ let [o, s] = a(i);
149
150
  this.#c.parse(s);
150
151
  let c = this.#c.hPrm.fn;
151
152
  if (!c) continue;
152
153
  let { val: l } = c;
153
154
  if (!l.endsWith("*")) continue;
154
155
  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
+ let u = o === "loadplugin" ? t.CSS : t.SN, d = this.cfg.matchPath("^" + l.slice(0, -1) + ".*", u);
156
157
  for (let t of d) {
157
- let a = i.replace(this.#o, "fn=" + decodeURIComponent(getFn(t[u])));
158
+ let a = i.replace(this.#o, "fn=" + decodeURIComponent(e(t[u])));
158
159
  n.aToken.splice(r, 0, a), n.aLNum.splice(r, 0, NaN);
159
160
  }
160
161
  }
161
162
  n.len = n.aToken.length;
162
163
  }
163
- #c = new AnalyzeTagArg();
164
+ #c = new r();
164
165
  testTagLetml(e) {
165
166
  return /^\[let_ml\s/.test(e);
166
167
  }
@@ -189,6 +190,7 @@ var Grammar = class {
189
190
  return this.#u.test(e);
190
191
  }
191
192
  };
192
- export { AnalyzeTagArg as a, tagToken2Name_Args as i, splitAmpersand as n, tagToken2Name as r, Grammar as t };
193
+ //#endregion
194
+ export { r as a, a as i, s as n, o as r, c as t };
193
195
 
194
196
  //# sourceMappingURL=Grammar.js.map
@@ -1 +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":"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"}
1
+ {"version":3,"file":"Grammar.js","names":["#REG_TAGARG","#hPrm","#isKomeParam","#hC2M","#REG_TOKEN","#REG_CANTC2M","#REG_TOKEN_NOTXT","#replaceScr_C2M","#regStrC2M","#regStrC2M4not","#REGC2M","#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,EAAU,GAAa,GAAa,IAAQ,GAAG,IAAK,GAAG,IAAK,GAA8B;CAEzG,IAAM,IADU,EAAI,MAAM,GAAG,CACnB,CAAA,CAAQ,MAAM,IAAI,GACtB,IAAM,EAAE;CACd,OAAO;EACN,IAAK,IAAI,IAAK;EACd,IAAK,IAAM,IAAG,IAAI,IAAE,IAAO,IAAK,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU;CACrD;AACD;AAGA,IAAa,IAAb,MAA2B;CAe1B,KAAuB;CAGvB,MAAM,GAAoB;EAEzB,AADA,KAAKC,KAAQ,CAAC,GACd,KAAKC,KAAe;EACpB,KAAK,IAAM,EAAC,eAAW,EAAK,SAAS,KAAKF,EAAW,GAAG;GAEvD,IAAM,EAAC,QAAK,QAAK,SAAM,QAAK,SAAM,eAAW;GAC7C,AAAI,IAAK,KAAKC,GAAM,KAAO;IAC1B,KAAK,KAAO,KAAQ;IACpB,KAAK,KAAO;GACb,IACS,MACJ,MAAY,MAAK,KAAKC,KAAe,KACpC,KAAKD,GAAM,KAAW;IAAC,KAAK;IAAK,KAAK,KAAA;GAAS;EAEtD;CACD;CAGA,cAAc,GAAe,GAAe,GAAY,GAAwC;EAC/F,IAAM,IAAmC,CAAC,GAEpC,IAAM,EAAM,MAAM,IAAE,GAAO,EAAE;EACnC,KAAK,IAAM,EAAC,WAAQ,UAAO,GAAG,OAAM,EAAI,SAAS,KAAKD,EAAW,GAAG;GACnE,IAAI,CAAE,GAAO;GAEb,IAAM,EAAC,QAAK,QAAK,UAAK,IAAI,eAAW;GACrC,IAAI,GAAS;IACZ,IAAI,EAAQ,SAAS,GAAG,GAAG;KAC1B,IAAM,IAAS,EAAQ,SAAQ,GACzB,EAAC,IAAI,MAAQ,EAAU,GAAK,IAAO,GAAQ,GAAO,GAAI,CAAE;KAC9D,EAAK,EAAQ,MAAM,GAAG,EAAE,KAAK;MAC5B,MAAM;MACN,MAAM,IAAM;MACZ,MAAM;MACN,MAAM,IAAM;MAEZ,OAAO;KACR;IACD;IACA;GACD;GACA,IAAI,CAAE,GAAK;GAEX,IAAM,EAAC,IAAI,GAAM,IAAI,MAAQ,EAAU,GAAK,GAAO,GAAO,GAAI,CAAE,GAC1D,EAAC,IAAI,GAAM,IAAI,MAAQ,EAAU,GAAK,IAAO,EAAE,YAAY,KAAO,CAAI,IAAI,KAAY,GAAO,GAAI,CAAE;GACzG,EAAK,KAAO;IAAC;IAAM;IAAM;IAAM;IAAM,OAAO,IAAK,EAAI,SAAQ,EAAK,SAAQ;GAAC;EAC5E;EAEA,OAAO;CACR;CAEA,KAAc,CAAC;CACf,IAAI,OAAO;EAAC,OAAO,KAAKC;CAAK;CAE7B,KAAe;CACf,IAAI,cAAc;EAAC,OAAO,KAAKC;CAAY;AAE5C,GCsOa,IAAU;AACvB,SAAgB,EAAmB,GAA6C;CAE/E,IAAM,IADI,EAAQ,KAAK,EAAM,MAAM,GAAG,EAAE,CAC9B,CAAA,EAAG;CACb,IAAI,CAAE,GAAG,MAAM,QAAQ,EAAM;CAE7B,IAAM,IAAK,EAAE;CACb,OAAO,CAAC,GAAI,EAAM,MAAM,IAAG,EAAG,QAAQ,EAAE,CAAC;AAC1C;AACA,SAAgB,EAAc,GAAuB;CAEpD,IAAM,IADI,EAAQ,KAAK,EAAM,MAAM,CAAC,CAC1B,CAAA,EAAG;CACb,IAAI,CAAE,GAAG,MAAM,QAAQ,EAAM;CAE7B,OAAO,EAAE;AACV;AAEA,SAAgB,EAAe,GAI7B;CACD,IAAM,IAAO,EAAM,WAAW,MAAM,GAAG,CAAC,CAAC,WAAW,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,GAElE,IAAW,EAAK;CACtB,IAAI,IAAW,KAAK,IAAW,GAAG,MAAM;CAExC,IAAM,CAAC,GAAI,GAAI,KAAM;CACrB,IAAI,EAAI,WAAW,GAAG,GAAG,MAAM;CAC/B,OAAO;EACN,MAAM,EAAI,WAAW,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI;EACpD,MAAM,EAAI,WAAW,KAAK,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI;EACpD,GAAG,MAAa,IAAG,EAAC,MAAM,EAAI,KAAK,EAAC,IAAG,CAAC;CACzC;AACD;AAGA,IAAa,IAAb,MAAqB;CACS;CAA7B,YAAY,GAAgC;EAAC,AAAhB,KAAA,MAAA,GAAgB,KAAK,UAAU,EAAE;CAAC;CAE/D;CACA,UAAU,GAAY;EACrB,IAAI,KAAKC,MAAS,KAAM,KAAKA,IAAO,MAAM,oBAAmB,IAAI;EA4CjE,AAnBA,KAAKC,KAAiB,QACrB,IAAI,KAAK,EAAG,QAAO,MACpB,qMAcgB,IAAI,KAAK,MAAM,GAAG,KAClC,IAAI,GACJ,KAAKC,KAAmB,OAAO,qBAAqB,IAAI,KAAK,MAAM,GAAG,EAAE,GACxE,KAAKC,KAAuB,OAAO,gBAAgB,IAAI,KAAK,MAAM,GAAG,EAAE;CACxE;CAIA,cAAc,GAAY,GAAc,GAAa,GAAmB;EACvE,IAAM,EAAC,SAAM,YAAQ;EACrB,IAAI,CAAE,GAAM,MAAM;EAClB,IAAI,CAAE,GAAM,MAAM;EAClB,IAAM,IAAK,EAAK,GAAG,CAAC;EACpB,IAAI,CAAE,GAAI,MAAM;EAChB,IAAI,EAAK,WAAW,GAAG,MAAM;EAC7B,IAAI,EAAG,KAAQ,IAAO,MAAM,+BAA+B,EAAK;EAEhE,KAAKH,OAAU,CAAC;EAChB,IAAM,IAAK,EAAK,OAAO,CAAC;EACxB,IAAI,KAAM,KAAKA,IAAO,MAAM,0BAAyB,IAAI;EACzD,IAAI,KAAM,KAAKA,IAAO,MAAM,0BAAyB,IAAI;EACzD,IAAI,KAAKE,GAAa,KAAK,CAAE,GAAG,MAAM,0BAAyB,IAAI;EACnE,IAAI,KAAKA,GAAa,KAAK,CAAE,GAAG,MAAM,0BAAyB,IAAI;EAOnE,AALA,KAAKF,GAAM,KAAM,KACjB,KAAKA,GAAM,KAAM,IAAI,EAAK,SAE1B,KAAK,OAAO,KAAK,EAAG,MAAM,EAAG,MAAM,KAAM,KAAK,EAAG,IAAI,GAAI,GAEzD,KAAKI,GAAgB,GAAK,CAAS;CACpC;CAEA,WAAW,GAAY,GAAc,GAAa,GAAmB;EACpE,IAAM,EAAC,SAAM,YAAQ;EACrB,IAAI,CAAE,GAAM,MAAM;EAElB,IADA,KAAKJ,OAAU,CAAC,GACZ,KAAQ,KAAKA,IAAO,MAAM,uBAAsB,IAAM;EAC1D,IAAI,KAAKE,GAAa,KAAK,CAAI,GAAG,MAAM,uBAAsB,IAAM;EAEpE,IAAI,CAAE,GAAM,MAAM;EAClB,IAAI,EAAG,KAAQ,IAAO,MAAM,4BAA4B,EAAK;EAM7D,AAJA,KAAKF,GAAM,KAAQ,IAAI,EAAK,IAE5B,KAAK,OAAO,KAAK,KAAQ,KAAK,GAAM,GAEpC,KAAKI,GAAgB,GAAK,CAAS;CACpC;CACA;CACA,KAAY,gBAAI,OAAO,EAAE;CACzB,KAAc;CACd,KAAiB;CACjB,OAAO,GAAW,GAAW;EAG5B,AAFA,KAAKC,MAAc,GAAG,EAAE,IACxB,KAAKC,MAAkB,GACvB,KAAKC,KAAc,OAClB,IAAI,KAAKF,GAAW,IAAI,KAAKC,GAAe,MAAM,GAAG;CACvD;CAGA,cAAc,GAAqB;EAClC,IAAM,IAAc,EACnB,WAAW,UAAU,IAAI,CAAC,CAC1B,MAAM,KAAKL,EAAU,CAAC,EACrB,SAAQ,MAAM;GACf,IAAI,CAAE,KAAK,aAAa,CAAG,GAAG,OAAO;GAErC,IAAM,IAAI,oBAAoB,KAAK,CAAG;GACtC,IAAI,CAAE,GAAG,OAAO;GAChB,IAAM,GAAG,GAAG,KAAK;GACjB,OAAO,CAAC,GAAI,CAAE;EACf,CAAC,KAAK,CAAC,GAED,IAAM;GAAC,QAAQ;GAAG,KAAK,EAAE;GAAQ,OAAO,CAAC;EAAC;EAKhD,OAJA,KAAKG,GAAgB,CAAG,GAExB,KAAKI,GAAwB,CAAG,GAEzB;CACR;CAGA,KAAyB;CACzB,KAA0B;CAC1B,GAAwB,GAAa;EACpC,KAAK,IAAI,IAAE,EAAI,MAAK,GAAG,KAAG,GAAG,EAAE,GAAG;GACjC,IAAM,IAAQ,EAAI,OAAO;GACzB,IAAI,CAAE,KAAKC,GAAc,KAAK,CAAK,GAAG;GAEtC,IAAM,CAAC,GAAU,KAAQ,EAAmB,CAAK;GACjD,KAAKE,GAAW,MAAM,CAAI;GAE1B,IAAM,IAAO,KAAKA,GAAW,KAAK;GAClC,IAAI,CAAE,GAAM;GACZ,IAAM,EAAC,KAAK,MAAM;GAClB,IAAI,CAAE,EAAG,SAAS,GAAG,GAAG;GAGxB,AADA,EAAI,OAAO,OAAO,GAAG,GAAG,KAAM,OAAM,CAAK,GACzC,EAAI,MAAM,OAAO,GAAG,GAAG,KAAK,GAAG;GAE/B,IAAM,IAAM,MAAa,eACtB,EAAoB,MACpB,EAAoB,IACjB,IAAI,KAAK,IAAI,UAAU,MAAK,EAAG,MAAM,GAAG,EAAE,IAAG,MAAM,CAAG;GAC5D,KAAK,IAAM,KAAK,GAAG;IAClB,IAAM,IAAK,EAAM,QAChB,KAAKD,IACL,QAAO,mBAAmB,EAAM,EAAE,EAAK,CAAC,CACzC;IAGA,AADA,EAAI,OAAO,OAAO,GAAG,GAAG,CAAE,GAC1B,EAAI,MAAM,OAAO,GAAG,GAAG,GAAG;GAC3B;EACD;EACA,EAAI,MAAM,EAAI,OAAO;CACtB;CACC,KAAsB,IAAI,EAAY;CAGvC,aAAa,GAAsB;EAAC,OAAO,cAAc,KAAK,CAAG;CAAC;CAClE,gBAAgB,GAAsB;EAAC,OAAO,mBAAmB,KAAK,CAAG;CAAC;CAG1E,KAA+C,KAAA;CAC/C;CACA,GAAgB,GAAa,IAAY,GAAS;EAC3C,SAAKV,IAEX;QAAK,IAAI,IAAE,EAAI,MAAK,GAAG,KAAK,GAAW,EAAE,GAAG;IAC3C,IAAM,IAAQ,EAAI,OAAO;IACzB,IAAI,KAAK,UAAU,EAAM,GAAG,CAAC,KAAK,IAAI,GAAG;IAGzC,IAAM,IAAO,EAAI,MAAM,IACjB,IAAI,EAAM,MAAM,KAAKO,EAAO;IAClC,IAAI,CAAE,GAAG;IACT,IAAI,IAAM;IACV,KAAK,IAAI,IAAE,EAAE,SAAQ,GAAG,KAAG,GAAG,EAAE,GAAG;KAClC,IAAI,IAAK,EAAE,IACL,IAAQ,KAAKP,GAAM,EAAG,GAAG,CAAC,KAAK;KAWrC,AATI,MACH,IAAK,KAAQ,EAAM,SAAS,GAAG,IAC5B,KACA,IAAI,EAAG,MAAM,GAAG,EAAE,EAAE,OAGxB,EAAI,OAAO,OAAO,GAAG,GAAK,CAAE,GAE5B,EAAI,MAAM,OAAO,GAAG,GAAK,CAAI,GAC7B,IAAM;IACP;GACD;GACA,EAAI,MAAM,EAAI,OAAO;EADrB;CAED;CACA,UAAU,GAAqB;EAAC,OAAO,KAAKG,GAAiB,KAAK,CAAE;CAAC;AAEtE"}
package/dist/GrpLayer.js CHANGED
@@ -1,16 +1,16 @@
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 { t as Layer } from "./Layer.js";
6
- import "./DebugMng.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) {}
1
+ import { l as e, s as t, t as n } from "./CmnLib.js";
2
+ import { d as r, n as i, o as a } from "./pixi.js";
3
+ import { t as o } from "./Layer.js";
4
+ import { t as s } from "./Reading.js";
5
+ import { t as c } from "./SpritesMng.js";
6
+ //#region src/sn/DesignCast.ts
7
+ var l = class {
8
+ bg_col;
9
+ isLay;
10
+ static init(e, t, n, r, i, a) {}
11
11
  static cvsResizeDesign() {}
12
- constructor(e, a = !1) {
13
- this.bg_col = e, this.isLay = a;
12
+ constructor(e, t = !1) {
13
+ this.bg_col = e, this.isLay = t;
14
14
  }
15
15
  destroy() {}
16
16
  gethArg() {
@@ -29,22 +29,22 @@ var DesignCast = class {
29
29
  cvsResize() {}
30
30
  make() {}
31
31
  static replaceToken(e) {}
32
- }, GrpLayDesignCast = class extends DesignCast {
33
- constructor(e, a) {
32
+ }, u = class extends l {
33
+ constructor(e, t) {
34
34
  super("#29e", !0);
35
35
  }
36
36
  setSp(e) {}
37
- }, GrpLayer = class d extends Layer {
37
+ }, d = class l extends o {
38
38
  static #e;
39
- static init(e, a, o, s, c, l) {
40
- d.#e = o, SpritesMng.init(a, l, s, e, c);
39
+ static init(e, t, n, r, i, a) {
40
+ l.#e = n, c.init(t, a, r, e, i);
41
41
  }
42
42
  static destroy() {
43
- SpritesMng.destroy();
43
+ c.destroy();
44
44
  }
45
- #t = new GrpLayDesignCast(this.ctn, this);
45
+ #t = new u(this.ctn, this);
46
46
  constructor() {
47
- super(), CmnLib.isDbg && (this.#n = (e) => this.#t.setSp(e), this.cvsResize = () => {
47
+ super(), n.isDbg && (this.#n = (e) => this.#t.setSp(e), this.cvsResize = () => {
48
48
  super.cvsResize(), this.#t.cvsResize();
49
49
  });
50
50
  }
@@ -53,20 +53,20 @@ var DesignCast = class {
53
53
  #i = "";
54
54
  #a = "";
55
55
  lay = (e) => {
56
- let a = Reading.procID + `GrpLayer lay name:${this.name_}`, o = this.#o(e, (e) => {
57
- e && Reading.endProc(a);
56
+ let t = s.procID + `GrpLayer lay name:${this.name_}`, n = this.#o(e, (e) => {
57
+ e && s.endProc(t);
58
58
  });
59
- return o && Reading.beginProc(a), o;
59
+ return n && s.beginProc(t), n;
60
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();
61
+ #o(n, r) {
62
+ let { fn: i, face: a = "" } = n;
63
+ if (this.#t.sethArg(n), !i) return super.lay(n), this.ctn.children.length > 0 && this.setPos(n), this.#i = "", this.#r = this.#a = a, r(!1), !1;
64
+ let s = "fn" in n, l = "face" in n;
65
+ return this.clearLay({ clear_filter: t(n, "clear_filter", !0) }), s && (this.#i = i), l && (this.#a = a), super.lay(n), n.dx = 0, n.dy = 0, this.#s.destroy(), this.#s = new c(this.#r = i + (a ? "," + a : ""), this.ctn, (t) => {
66
+ ("width" in n || "height" in n) && (t.width = e(n, "width", 0), t.height = e(n, "height", 0)), this.#c = t.width, this.#l = t.height, o.setXY(t, n, this.ctn, !0), o.setBlendmode(this.ctn, n), this.#n(t);
67
+ }, (e) => r(e)), this.#s.ret;
68
+ }
69
+ #s = new c();
70
70
  #c = 0;
71
71
  #l = 0;
72
72
  get width() {
@@ -81,45 +81,45 @@ var DesignCast = class {
81
81
  this.ctn.alpha = 1, this.ctn.alpha = e;
82
82
  return;
83
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 = () => {
84
+ this.#d = new a(this.#u), this.#d.visible = !1, this.ctn.addChildAt(this.#d, 0), this.#d.position.set(-this.ctn.x, -this.ctn.y);
85
+ let t = () => {
86
86
  let e = this.ctn.alpha;
87
87
  this.ctn.alpha = 1;
88
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;
89
+ this.#d.visible = !1, l.#e.renderer.render(this.ctn, { renderTexture: this.#u }), this.ctn.alpha = e;
90
90
  for (let e of this.ctn.children) e.visible = !1;
91
91
  };
92
92
  if (!this.containMovement) {
93
- let e = a;
94
- a = () => {
95
- a = () => {}, e();
93
+ let e = t;
94
+ t = () => {
95
+ t = () => {}, e();
96
96
  };
97
97
  }
98
98
  this.#f = () => {
99
- a(), this.#d.visible = !0;
100
- }, d.#e.ticker.add(this.#f);
99
+ t(), this.#d.visible = !0;
100
+ }, l.#e.ticker.add(this.#f);
101
101
  }
102
- #u = RenderTexture.create({
103
- width: CmnLib.stageW,
104
- height: CmnLib.stageH
102
+ #u = r.create({
103
+ width: n.stageW,
104
+ height: n.stageH
105
105
  });
106
- #d = new Sprite();
106
+ #d = new a();
107
107
  #f = () => {};
108
108
  renderEnd() {
109
- d.#e.ticker.remove(this.#f), this.ctn.removeChild(this.#d);
109
+ l.#e.ticker.remove(this.#f), this.ctn.removeChild(this.#d);
110
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
111
+ this.#d.destroy(!0), this.#u = r.create({
112
+ width: n.stageW,
113
+ height: n.stageH
114
114
  });
115
115
  }
116
116
  setPos(e) {
117
- Layer.setXY(this.ctn.children[0] ?? this.ctn, e, this.ctn, !0);
117
+ o.setXY(this.ctn.children[0] ?? this.ctn, e, this.ctn, !0);
118
118
  }
119
119
  get containMovement() {
120
120
  if (this.#r === "") return !1;
121
121
  let e = this.ctn.children;
122
- return this.#r.split(",").some((a, o) => e[o] instanceof AnimatedSprite || SpritesMng.getHFn2VElm(a));
122
+ return this.#r.split(",").some((t, n) => e[n] instanceof i || c.getHFn2VElm(t));
123
123
  }
124
124
  clearLay(e) {
125
125
  super.clearLay(e), this.#s.destroy(), this.#i = "", this.#a = "", this.#r = "";
@@ -129,23 +129,23 @@ var DesignCast = class {
129
129
  sBkFn: this.#i,
130
130
  sBkFace: this.#a
131
131
  });
132
- playback(e, a) {
133
- if (super.playback(e, a), e.sBkFn === "" && e.sBkFace === "") {
132
+ playback(e, t) {
133
+ if (super.playback(e, t), e.sBkFn === "" && e.sBkFace === "") {
134
134
  this.#i = "", this.#a = "";
135
135
  return;
136
136
  }
137
- a.push(new Promise((a) => this.#o({
137
+ t.push(new Promise((t) => this.#o({
138
138
  fn: e.sBkFn,
139
139
  face: e.sBkFace,
140
140
  left: e.x,
141
141
  top: e.y,
142
142
  alpha: e.alpha,
143
- blendmode: Layer.getNum2Blendmode(e.blendMode),
143
+ blendmode: o.getNum2Blendmode(e.blendMode),
144
144
  rotation: e.rotation,
145
145
  scale_x: e.scale_x,
146
146
  scale_y: e.scale_y
147
- }, (o) => {
148
- this.ctn.position.set(e.x, e.y), a();
147
+ }, (n) => {
148
+ this.ctn.position.set(e.x, e.y), t();
149
149
  })));
150
150
  }
151
151
  makeDesignCast(e) {
@@ -159,6 +159,7 @@ var DesignCast = class {
159
159
  }
160
160
  dump = () => super.dump() + `, "pic":"${this.#r}"`;
161
161
  };
162
- export { GrpLayer, DesignCast as t };
162
+ //#endregion
163
+ export { d as GrpLayer, l as t };
163
164
 
164
165
  //# sourceMappingURL=GrpLayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GrpLayer.js","names":["bg_col: string","btn: Button","hArg: TArg","#appPixi","#idc","#setIdcSp","#laySub","#sBkFn","#csvFn","#sBkFace","#sps","#width","#height","#spTsy","#rtTsy","#fncRender"],"sources":["../src/sn/DesignCast.ts","../src/sn/GrpLayer.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2021-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 type {TArg} from './Grammar';\nimport type {T_PropParser} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {HPage} from './LayerMng';\nimport type {HPRM} from './AnalyzeTagArg';\nimport type {TxtStage} from './TxtStage';\nimport type {Button} from './Button';\nimport type {GrpLayer} from './GrpLayer';\nimport type {Config} from './Config';\n\nimport type {Application, Text, Sprite} from 'pixi.js';\n\n\nexport class DesignCast {\n\tstatic\tinit(_appPixi: Application, _sys: SysBase, _scrItr: ScriptIterator, _prpPrs: T_PropParser, _cfg: Config, _hPages: HPage) { /* empty */ }\n\tstatic\tcvsResizeDesign() { /* empty */ }\n//\tstatic\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\tconstructor(readonly bg_col: string, readonly isLay = false) {}\n\tdestroy() { /* empty */ }\n\n\tgethArg(): TArg {return this.hArg}\n\tprotected\thArg\t: TArg\t= {};\n\tsethArg(hArg: TArg): void {\n\t\tthis.hArg = hArg;\n\t}\n\n\tsetOther(_hPrm: HPRM) { /* empty */ }\n\n\tadopt(_idcCh: DesignCast) {\t// 養子縁組\n\t}\n\n\tstatic\tenterMode() { /* empty */ }\n\tstatic\tallHide() { /* empty */ }\n\tset visible(_v: boolean) { /* empty */ }\n\tstatic\tleaveMode() { /* empty */ }\n\n\n\tcvsResize() { /* empty */ }\n\tmake() { /* empty */ }\n\tstatic replaceToken(_o: unknown) { /* empty */ }\n\n}\n\n\n// 画像レイヤ\nexport class GrpLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _gl: GrpLayer) {super('#29e', true)}\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n\n// 文字レイヤ\nexport class TxtLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _ts: TxtStage) {\n\t\tsuper('#29e', true);\n\t}\n}\n// 文字レイヤ・パディング\nexport class TxtLayPadDesignCast extends DesignCast {\n\tconstructor(_ts: TxtStage) {super('#9e2')}\n}\n\n// 文字レイヤ・ボタン基本\nexport class BtnDesignCast extends DesignCast {\n\tconstructor(protected readonly btn: Button, override readonly hArg: TArg) {\n\t\tsuper('#e92');\n\t}\n}\n// 文字レイヤ・文字ボタン\nexport class TxtBtnDesignCast extends BtnDesignCast {\n\tconstructor(btn: Button, hArg: TArg, _txt: Text) {\n\t\tsuper(btn, hArg);\n\t}\n}\n\n// 文字レイヤ・画像ボタン\nexport class PicBtnDesignCast extends BtnDesignCast {\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n","/* ***** 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\nimport {Layer, type T_RecordPlayBack_lay} from './Layer';\n\nimport {CmnLib, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {TArg} from './Grammar';\nimport type {T_Main, T_Variable} from './CmnInterface';\nimport type {Config} from './Config';\nimport type {SysBase} from './SysBase';\nimport type {SoundMng} from './SoundMng';\nimport type {IMakeDesignCast} from './LayerMng';\nimport {GrpLayDesignCast} from './DesignCast';\nimport {SpritesMng} from './SpritesMng';\nimport {Reading} from './Reading';\n\nimport {Sprite, AnimatedSprite, RenderTexture, type Application} from 'pixi.js';\n\n\nexport type T_RP_layGrp = T_RecordPlayBack_lay & {\n\tsBkFn\t: string;\n\tsBkFace\t: string;\n}\n\n\nexport class GrpLayer extends Layer {\n\tstatic\t#appPixi: Application;\n\tstatic\tinit(main: T_Main, cfg: Config, appPixi: Application, sys: SysBase, sndMng: SoundMng, val: T_Variable): void {\n\t\tGrpLayer.#appPixi = appPixi;\n\t\tSpritesMng.init(cfg, val, sys, main, sndMng);\n\t}\n\tstatic\tdestroy() {SpritesMng.destroy()}\n\n\treadonly\t#idc\t= new GrpLayDesignCast(this.ctn, this);\n\tconstructor() {\n\t\tsuper();\n\t\tif (CmnLib.isDbg) {\n\t\t\tthis.#setIdcSp = sp=> this.#idc.setSp(sp);\n\t\t\tthis.cvsResize = ()=> {super.cvsResize(); this.#idc.cvsResize()}\n\t\t}\n\t}\n\t#setIdcSp\t: (sp: Sprite)=> void\t= ()=> { /* empty */ };\n\n\t#csvFn\t\t= '';\n\t#sBkFn\t\t= '';\n\t#sBkFace\t= '';\n\toverride readonly\tlay = (hArg: TArg)=> {\n\t\tconst RPN_GRP_LAY = Reading.procID +`GrpLayer lay name:${this.name_}`;\n\t\tconst ret = this.#laySub(hArg, isStop=> {\n\t\t\tif (isStop) Reading.endProc(RPN_GRP_LAY);\n\t\t});\n\t\tif (ret) Reading.beginProc(RPN_GRP_LAY);\n\t\treturn ret;\n\t}\n\t#laySub(hArg: TArg, resolve: (isStop: boolean)=> void): boolean {\n\t\tconst {fn, face = ''} = hArg;\n\t\tthis.#idc.sethArg(hArg);\n\t\tif (! fn) {\n\t\t\tsuper.lay(hArg);\n\n\t\t\tif (this.ctn.children.length > 0) this.setPos(hArg);\n\t\t\tthis.#sBkFn = '';\n\t\t\tthis.#csvFn = this.#sBkFace = face;\n\t\t\tresolve(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst inFn = 'fn' in hArg;\n\t\tconst inFace = 'face' in hArg;\n\n\t\tthis.clearLay({clear_filter: argChk_Boolean(hArg, 'clear_filter', true)});\n\t\tif (inFn) this.#sBkFn = fn;\t// clearLay()後に置く事\n\t\tif (inFace) this.#sBkFace = face;\n\t\tsuper.lay(hArg);\t// filter設定してる場合も\n\n\t\thArg.dx = 0;\n\t\thArg.dy = 0;\n\n\t\tthis.#sps.destroy();\n\t\tthis.#sps = new SpritesMng(\n\t\t\tthis.#csvFn = fn + (face ?','+ face :''),\n\t\t\tthis.ctn,\n\t\t\tsp=> {\n\t\t\t\tif ('width' in hArg || 'height' in hArg) {\n\t\t\t\t\tsp.width = argChk_Num(hArg, 'width', 0);\n\t\t\t\t\tsp.height = argChk_Num(hArg, 'height', 0);\n\t\t\t\t}\n\t\t\t\tthis.#width = sp.width;\n\t\t\t\tthis.#height = sp.height;\n\t\t\t\tLayer.setXY(sp, hArg, this.ctn, true);\n\t\t\t\tLayer.setBlendmode(this.ctn, hArg);\n\t\t\t//\tif (hArg.page === 'fore') this.rsvEvent(sp);\t// ======\n\t\t\t\t\t// [lay page=fore]のみswfアニメ終了イベント発生\n\t\t\t\tthis.#setIdcSp(sp);\n\t\t\t},\n\t\t\tisStop=> resolve(isStop),\n\t\t);\n\t\treturn this.#sps.ret;\n\t}\n\t#sps\t= new SpritesMng;\n\t#width\t= 0;\n\t#height\t= 0;\n\toverride\tget\twidth() {return this.#width}\n\toverride\tget\theight() {return this.#height}\n\n\n\toverride\trenderStart(isSkipping: boolean) {\n\t\tif (isSkipping) {\n\t\t\tconst a = this.ctn.alpha;\n\t\t\tthis.ctn.alpha = 1;\t// 無意味に思えるが、pixi部の挙動が変わるので一度やる\n\t\t\tthis.ctn.alpha = a;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#spTsy = new Sprite(this.#rtTsy);\n\t\tthis.#spTsy.visible = false;\n\t\tthis.ctn.addChildAt(this.#spTsy, 0);\n\t\tthis.#spTsy.position.set(-this.ctn.x, -this.ctn.y);\n\n\t\tlet fncRenderFore = ()=> {\n\t\t\tconst a = this.ctn.alpha;\n\t\t\tthis.ctn.alpha = 1;\n\t\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\t\tthis.#spTsy.visible = false;\n\t\t\tGrpLayer.#appPixi.renderer.render(this.ctn, {renderTexture: this.#rtTsy});\t// clear: true\n\t\t\tthis.ctn.alpha = a;\n\t\t\tfor (const s of this.ctn.children) s.visible = false;\n\t\t}\n\t\tif (! this.containMovement) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tthis.#fncRender = ()=> {\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTsy.visible = true;\n\t\t};\n\t\tGrpLayer.#appPixi.ticker.add(this.#fncRender);\n\t}\n\t#rtTsy\t= RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTsy\t= new Sprite;\n\t#fncRender = ()=> { /* empty */ };\n\toverride\trenderEnd() {\n\t\tGrpLayer.#appPixi.ticker.remove(this.#fncRender);\n\t\tthis.ctn.removeChild(this.#spTsy);\n\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\tthis.#spTsy.destroy(true);\n\n\t\tthis.#rtTsy = RenderTexture.create({\n\t\t\twidth\t: CmnLib.stageW,\n\t\t\theight\t: CmnLib.stageH,\n\t\t});\n\t}\n\n\n\tsetPos(hArg: TArg): void {\n\t\tLayer.setXY(\n\t\t\tthis.ctn.children[0] ?? this.ctn,\n\t\t\thArg,\n\t\t\tthis.ctn,\n\t\t\ttrue\n\t\t);\n\t}\n\n\t// アニメ・動画を含むか\n\toverride get containMovement() {\n\t\tif (this.#csvFn === '') return false;\n\n\t\tconst c = this.ctn.children;\n\t\treturn this.#csvFn.split(',').some(\n\t\t\t(fn, i)=> c[i] instanceof AnimatedSprite || SpritesMng.getHFn2VElm(fn)\n\t\t);\n\t}\n\n\toverride clearLay(hArg: TArg): void {\n\t\tsuper.clearLay(hArg);\n\t\tthis.#sps.destroy();\n\t\tthis.#sBkFn\t\t= '';\n\t\tthis.#sBkFace\t= '';\n\t\tthis.#csvFn\t\t= '';\n\t}\n\toverride readonly record = ()=> ({...super.record(),\n\t\tsBkFn\t\t: this.#sBkFn,\n\t\tsBkFace\t\t: this.#sBkFace,\n//\t\tidc_hArg\t: this.#idc.gethArg(),\n\t});\n\toverride playback(hLay: T_RP_layGrp, aPrm: Promise<void>[]): void {\n\t\tsuper.playback(hLay, aPrm);\n\t\tif (hLay.sBkFn === '' && hLay.sBkFace === '') {\n\t\t\tthis.#sBkFn\t\t= '';\n\t\t\tthis.#sBkFace\t= '';\n//\t\t\tthis.#idc.sethArg(hLay.idc_hArg);\n\t\t\treturn;\n\t\t}\n\n\t\taPrm.push(new Promise(re=> this.#laySub(\n\t\t\t{fn: hLay.sBkFn, face: hLay.sBkFace, left: hLay.x, top: hLay.y, alpha: hLay.alpha, blendmode: Layer.getNum2Blendmode(hLay.blendMode), rotation: hLay.rotation, scale_x: hLay.scale_x, scale_y: hLay.scale_y},\n\t\t\t_isStop=> {this.ctn.position.set(hLay.x, hLay.y); re()},\n\t\t\t\t// Layer.setXY()の後に再度移動\n\t\t)));\n\t}\n\n\toverride makeDesignCast(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tgdc(this.#idc);\n\t}\n\t//makeDesignCastChildren(_gdc: IMakeDesignCast) {}\n\n\toverride cvsResize() {super.cvsResize()}\n\n\toverride showDesignCast() {this.#idc.visible = true}\n\t//showDesignCastChildren() {}\n\n\toverride readonly dump = ()=> super.dump() +`, \"pic\":\"${this.#csvFn}\"`;\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"GrpLayer.js","names":["#appPixi","#idc","#setIdcSp","#laySub","#sBkFn","#csvFn","#sBkFace","#sps","#width","#height","#spTsy","#rtTsy","#fncRender"],"sources":["../src/sn/DesignCast.ts","../src/sn/GrpLayer.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2021-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 type {TArg} from './Grammar';\nimport type {T_PropParser} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {HPage} from './LayerMng';\nimport type {HPRM} from './AnalyzeTagArg';\nimport type {TxtStage} from './TxtStage';\nimport type {Button} from './Button';\nimport type {GrpLayer} from './GrpLayer';\nimport type {Config} from './Config';\n\nimport type {Application, Text, Sprite} from 'pixi.js';\n\n\nexport class DesignCast {\n\tstatic\tinit(_appPixi: Application, _sys: SysBase, _scrItr: ScriptIterator, _prpPrs: T_PropParser, _cfg: Config, _hPages: HPage) { /* empty */ }\n\tstatic\tcvsResizeDesign() { /* empty */ }\n//\tstatic\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\tconstructor(readonly bg_col: string, readonly isLay = false) {}\n\tdestroy() { /* empty */ }\n\n\tgethArg(): TArg {return this.hArg}\n\tprotected\thArg\t: TArg\t= {};\n\tsethArg(hArg: TArg): void {\n\t\tthis.hArg = hArg;\n\t}\n\n\tsetOther(_hPrm: HPRM) { /* empty */ }\n\n\tadopt(_idcCh: DesignCast) {\t// 養子縁組\n\t}\n\n\tstatic\tenterMode() { /* empty */ }\n\tstatic\tallHide() { /* empty */ }\n\tset visible(_v: boolean) { /* empty */ }\n\tstatic\tleaveMode() { /* empty */ }\n\n\n\tcvsResize() { /* empty */ }\n\tmake() { /* empty */ }\n\tstatic replaceToken(_o: unknown) { /* empty */ }\n\n}\n\n\n// 画像レイヤ\nexport class GrpLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _gl: GrpLayer) {super('#29e', true)}\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n\n// 文字レイヤ\nexport class TxtLayDesignCast extends DesignCast {\n\tconstructor(_ctn: Sprite, _ts: TxtStage) {\n\t\tsuper('#29e', true);\n\t}\n}\n// 文字レイヤ・パディング\nexport class TxtLayPadDesignCast extends DesignCast {\n\tconstructor(_ts: TxtStage) {super('#9e2')}\n}\n\n// 文字レイヤ・ボタン基本\nexport class BtnDesignCast extends DesignCast {\n\tconstructor(protected readonly btn: Button, override readonly hArg: TArg) {\n\t\tsuper('#e92');\n\t}\n}\n// 文字レイヤ・文字ボタン\nexport class TxtBtnDesignCast extends BtnDesignCast {\n\tconstructor(btn: Button, hArg: TArg, _txt: Text) {\n\t\tsuper(btn, hArg);\n\t}\n}\n\n// 文字レイヤ・画像ボタン\nexport class PicBtnDesignCast extends BtnDesignCast {\n\tsetSp(_sp: Sprite) { /* empty */ }\n}\n","/* ***** 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\nimport {Layer, type T_RecordPlayBack_lay} from './Layer';\n\nimport {CmnLib, argChk_Boolean, argChk_Num} from './CmnLib';\nimport type {TArg} from './Grammar';\nimport type {T_Main, T_Variable} from './CmnInterface';\nimport type {Config} from './Config';\nimport type {SysBase} from './SysBase';\nimport type {SoundMng} from './SoundMng';\nimport type {IMakeDesignCast} from './LayerMng';\nimport {GrpLayDesignCast} from './DesignCast';\nimport {SpritesMng} from './SpritesMng';\nimport {Reading} from './Reading';\n\nimport {Sprite, AnimatedSprite, RenderTexture, type Application} from 'pixi.js';\n\n\nexport type T_RP_layGrp = T_RecordPlayBack_lay & {\n\tsBkFn\t: string;\n\tsBkFace\t: string;\n}\n\n\nexport class GrpLayer extends Layer {\n\tstatic\t#appPixi: Application;\n\tstatic\tinit(main: T_Main, cfg: Config, appPixi: Application, sys: SysBase, sndMng: SoundMng, val: T_Variable): void {\n\t\tGrpLayer.#appPixi = appPixi;\n\t\tSpritesMng.init(cfg, val, sys, main, sndMng);\n\t}\n\tstatic\tdestroy() {SpritesMng.destroy()}\n\n\treadonly\t#idc\t= new GrpLayDesignCast(this.ctn, this);\n\tconstructor() {\n\t\tsuper();\n\t\tif (CmnLib.isDbg) {\n\t\t\tthis.#setIdcSp = sp=> this.#idc.setSp(sp);\n\t\t\tthis.cvsResize = ()=> {super.cvsResize(); this.#idc.cvsResize()}\n\t\t}\n\t}\n\t#setIdcSp\t: (sp: Sprite)=> void\t= ()=> { /* empty */ };\n\n\t#csvFn\t\t= '';\n\t#sBkFn\t\t= '';\n\t#sBkFace\t= '';\n\toverride readonly\tlay = (hArg: TArg)=> {\n\t\tconst RPN_GRP_LAY = Reading.procID +`GrpLayer lay name:${this.name_}`;\n\t\tconst ret = this.#laySub(hArg, isStop=> {\n\t\t\tif (isStop) Reading.endProc(RPN_GRP_LAY);\n\t\t});\n\t\tif (ret) Reading.beginProc(RPN_GRP_LAY);\n\t\treturn ret;\n\t}\n\t#laySub(hArg: TArg, resolve: (isStop: boolean)=> void): boolean {\n\t\tconst {fn, face = ''} = hArg;\n\t\tthis.#idc.sethArg(hArg);\n\t\tif (! fn) {\n\t\t\tsuper.lay(hArg);\n\n\t\t\tif (this.ctn.children.length > 0) this.setPos(hArg);\n\t\t\tthis.#sBkFn = '';\n\t\t\tthis.#csvFn = this.#sBkFace = face;\n\t\t\tresolve(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst inFn = 'fn' in hArg;\n\t\tconst inFace = 'face' in hArg;\n\n\t\tthis.clearLay({clear_filter: argChk_Boolean(hArg, 'clear_filter', true)});\n\t\tif (inFn) this.#sBkFn = fn;\t// clearLay()後に置く事\n\t\tif (inFace) this.#sBkFace = face;\n\t\tsuper.lay(hArg);\t// filter設定してる場合も\n\n\t\thArg.dx = 0;\n\t\thArg.dy = 0;\n\n\t\tthis.#sps.destroy();\n\t\tthis.#sps = new SpritesMng(\n\t\t\tthis.#csvFn = fn + (face ?','+ face :''),\n\t\t\tthis.ctn,\n\t\t\tsp=> {\n\t\t\t\tif ('width' in hArg || 'height' in hArg) {\n\t\t\t\t\tsp.width = argChk_Num(hArg, 'width', 0);\n\t\t\t\t\tsp.height = argChk_Num(hArg, 'height', 0);\n\t\t\t\t}\n\t\t\t\tthis.#width = sp.width;\n\t\t\t\tthis.#height = sp.height;\n\t\t\t\tLayer.setXY(sp, hArg, this.ctn, true);\n\t\t\t\tLayer.setBlendmode(this.ctn, hArg);\n\t\t\t//\tif (hArg.page === 'fore') this.rsvEvent(sp);\t// ======\n\t\t\t\t\t// [lay page=fore]のみswfアニメ終了イベント発生\n\t\t\t\tthis.#setIdcSp(sp);\n\t\t\t},\n\t\t\tisStop=> resolve(isStop),\n\t\t);\n\t\treturn this.#sps.ret;\n\t}\n\t#sps\t= new SpritesMng;\n\t#width\t= 0;\n\t#height\t= 0;\n\toverride\tget\twidth() {return this.#width}\n\toverride\tget\theight() {return this.#height}\n\n\n\toverride\trenderStart(isSkipping: boolean) {\n\t\tif (isSkipping) {\n\t\t\tconst a = this.ctn.alpha;\n\t\t\tthis.ctn.alpha = 1;\t// 無意味に思えるが、pixi部の挙動が変わるので一度やる\n\t\t\tthis.ctn.alpha = a;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#spTsy = new Sprite(this.#rtTsy);\n\t\tthis.#spTsy.visible = false;\n\t\tthis.ctn.addChildAt(this.#spTsy, 0);\n\t\tthis.#spTsy.position.set(-this.ctn.x, -this.ctn.y);\n\n\t\tlet fncRenderFore = ()=> {\n\t\t\tconst a = this.ctn.alpha;\n\t\t\tthis.ctn.alpha = 1;\n\t\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\t\tthis.#spTsy.visible = false;\n\t\t\tGrpLayer.#appPixi.renderer.render(this.ctn, {renderTexture: this.#rtTsy});\t// clear: true\n\t\t\tthis.ctn.alpha = a;\n\t\t\tfor (const s of this.ctn.children) s.visible = false;\n\t\t}\n\t\tif (! this.containMovement) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tthis.#fncRender = ()=> {\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTsy.visible = true;\n\t\t};\n\t\tGrpLayer.#appPixi.ticker.add(this.#fncRender);\n\t}\n\t#rtTsy\t= RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTsy\t= new Sprite;\n\t#fncRender = ()=> { /* empty */ };\n\toverride\trenderEnd() {\n\t\tGrpLayer.#appPixi.ticker.remove(this.#fncRender);\n\t\tthis.ctn.removeChild(this.#spTsy);\n\t\tfor (const s of this.ctn.children) s.visible = true;\n\t\tthis.#spTsy.destroy(true);\n\n\t\tthis.#rtTsy = RenderTexture.create({\n\t\t\twidth\t: CmnLib.stageW,\n\t\t\theight\t: CmnLib.stageH,\n\t\t});\n\t}\n\n\n\tsetPos(hArg: TArg): void {\n\t\tLayer.setXY(\n\t\t\tthis.ctn.children[0] ?? this.ctn,\n\t\t\thArg,\n\t\t\tthis.ctn,\n\t\t\ttrue\n\t\t);\n\t}\n\n\t// アニメ・動画を含むか\n\toverride get containMovement() {\n\t\tif (this.#csvFn === '') return false;\n\n\t\tconst c = this.ctn.children;\n\t\treturn this.#csvFn.split(',').some(\n\t\t\t(fn, i)=> c[i] instanceof AnimatedSprite || SpritesMng.getHFn2VElm(fn)\n\t\t);\n\t}\n\n\toverride clearLay(hArg: TArg): void {\n\t\tsuper.clearLay(hArg);\n\t\tthis.#sps.destroy();\n\t\tthis.#sBkFn\t\t= '';\n\t\tthis.#sBkFace\t= '';\n\t\tthis.#csvFn\t\t= '';\n\t}\n\toverride readonly record = ()=> ({...super.record(),\n\t\tsBkFn\t\t: this.#sBkFn,\n\t\tsBkFace\t\t: this.#sBkFace,\n//\t\tidc_hArg\t: this.#idc.gethArg(),\n\t});\n\toverride playback(hLay: T_RP_layGrp, aPrm: Promise<void>[]): void {\n\t\tsuper.playback(hLay, aPrm);\n\t\tif (hLay.sBkFn === '' && hLay.sBkFace === '') {\n\t\t\tthis.#sBkFn\t\t= '';\n\t\t\tthis.#sBkFace\t= '';\n//\t\t\tthis.#idc.sethArg(hLay.idc_hArg);\n\t\t\treturn;\n\t\t}\n\n\t\taPrm.push(new Promise(re=> this.#laySub(\n\t\t\t{fn: hLay.sBkFn, face: hLay.sBkFace, left: hLay.x, top: hLay.y, alpha: hLay.alpha, blendmode: Layer.getNum2Blendmode(hLay.blendMode), rotation: hLay.rotation, scale_x: hLay.scale_x, scale_y: hLay.scale_y},\n\t\t\t_isStop=> {this.ctn.position.set(hLay.x, hLay.y); re()},\n\t\t\t\t// Layer.setXY()の後に再度移動\n\t\t)));\n\t}\n\n\toverride makeDesignCast(gdc: IMakeDesignCast) {\n\t\tif (! this.ctn.visible) return;\n\t\tgdc(this.#idc);\n\t}\n\t//makeDesignCastChildren(_gdc: IMakeDesignCast) {}\n\n\toverride cvsResize() {super.cvsResize()}\n\n\toverride showDesignCast() {this.#idc.visible = true}\n\t//showDesignCastChildren() {}\n\n\toverride readonly dump = ()=> super.dump() +`, \"pic\":\"${this.#csvFn}\"`;\n\n}\n"],"mappings":"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"}