@famibee/skynovel 1.65.0 → 2.0.1
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.
- package/README.md +3 -3
- package/dist/Button.js +131 -163
- package/dist/Button.js.map +1 -1
- package/dist/CallStack.js +19 -22
- package/dist/CallStack.js.map +1 -1
- package/dist/CmnInterface.js +91 -0
- package/dist/CmnInterface.js.map +1 -0
- package/dist/CmnLib.js +94 -0
- package/dist/CmnLib.js.map +1 -0
- package/dist/Config.js +26 -0
- package/dist/Config.js.map +1 -0
- package/dist/ConfigBase.js +152 -0
- package/dist/ConfigBase.js.map +1 -0
- package/dist/DebugMng.js +89 -102
- package/dist/DebugMng.js.map +1 -1
- package/dist/EventListenerCtn.js +21 -0
- package/dist/EventListenerCtn.js.map +1 -0
- package/dist/EventMng.js +1435 -1577
- package/dist/EventMng.js.map +1 -1
- package/dist/Grammar.js +194 -0
- package/dist/Grammar.js.map +1 -0
- package/dist/GrpLayer.js +163 -195
- package/dist/GrpLayer.js.map +1 -1
- package/dist/Layer.js +260 -0
- package/dist/Layer.js.map +1 -0
- package/dist/LayerMng.js +810 -991
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js +144 -393
- package/dist/Main.js.map +1 -1
- package/dist/PropParser.js +936 -834
- package/dist/PropParser.js.map +1 -1
- package/dist/Reading.js +917 -786
- package/dist/Reading.js.map +1 -1
- package/dist/RubySpliter.js +59 -92
- package/dist/RubySpliter.js.map +1 -1
- package/dist/ScriptIterator.js +805 -1034
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +1097 -1332
- package/dist/SndBuf.js.map +1 -1
- package/dist/SoundMng.js +124 -135
- package/dist/SoundMng.js.map +1 -1
- package/dist/SpritesMng.js +220 -232
- package/dist/SpritesMng.js.map +1 -1
- package/dist/SysBase.js +1729 -0
- package/dist/SysBase.js.map +1 -0
- package/dist/TxtLayer.js +1212 -1397
- package/dist/TxtLayer.js.map +1 -1
- package/dist/Variable.js +398 -466
- package/dist/Variable.js.map +1 -1
- package/dist/chunk.js +18 -0
- package/dist/gamepad.js +723 -511
- package/dist/gamepad.js.map +1 -1
- package/dist/pixi.js +13422 -0
- package/dist/pixi.js.map +1 -0
- package/dist/platform.js +424 -369
- package/dist/platform.js.map +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist/sn/CmnInterface.d.ts +3 -1
- package/dist/sn/CmnInterface.d.ts.map +1 -1
- package/dist/sn/CmnLib.d.ts.map +1 -1
- package/dist/sn/CmnTween.d.ts +3 -3
- package/dist/sn/CmnTween.d.ts.map +1 -1
- package/dist/sn/EventMng.d.ts.map +1 -1
- package/dist/sn/Grammar.d.ts +1 -1
- package/dist/sn/Grammar.d.ts.map +1 -1
- package/dist/sn/PropParser.d.ts +2 -2
- package/dist/sn/PropParser.d.ts.map +1 -1
- package/dist/sn/Reading.d.ts +6 -0
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/ScriptIterator.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts +27 -16
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/SoundMng.d.ts +4 -1
- package/dist/sn/SoundMng.d.ts.map +1 -1
- package/dist/sn/SysBase.d.ts.map +1 -1
- package/dist/sn/TxtStage.d.ts +2 -1
- package/dist/sn/TxtStage.d.ts.map +1 -1
- package/dist/test/ValTest.d.ts +1 -1
- package/dist/test/ValTest.d.ts.map +1 -1
- package/dist/web.js +653 -8
- package/dist/web.js.map +1 -1
- package/dist_app/Button.js +131 -163
- package/dist_app/Button.js.map +1 -1
- package/dist_app/CallStack.js +19 -22
- package/dist_app/CallStack.js.map +1 -1
- package/dist_app/CmnInterface.js +91 -0
- package/dist_app/CmnInterface.js.map +1 -0
- package/dist_app/CmnLib.js +94 -0
- package/dist_app/CmnLib.js.map +1 -0
- package/dist_app/Config.js +26 -0
- package/dist_app/Config.js.map +1 -0
- package/dist_app/ConfigBase.js +152 -0
- package/dist_app/ConfigBase.js.map +1 -0
- package/dist_app/DebugMng.js +92 -0
- package/dist_app/DebugMng.js.map +1 -0
- package/dist_app/EventListenerCtn.js +21 -0
- package/dist_app/EventListenerCtn.js.map +1 -0
- package/dist_app/EventMng.js +1435 -1577
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/Grammar.js +194 -0
- package/dist_app/Grammar.js.map +1 -0
- package/dist_app/GrpLayer.js +163 -195
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/Layer.js +260 -0
- package/dist_app/Layer.js.map +1 -0
- package/dist_app/LayerMng.js +810 -991
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js +144 -392
- package/dist_app/Main.js.map +1 -1
- package/dist_app/PropParser.js +936 -834
- package/dist_app/PropParser.js.map +1 -1
- package/dist_app/Reading.js +917 -786
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/RubySpliter.js +59 -92
- package/dist_app/RubySpliter.js.map +1 -1
- package/dist_app/ScriptIterator.js +805 -1033
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +1097 -1332
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/SoundMng.js +124 -135
- package/dist_app/SoundMng.js.map +1 -1
- package/dist_app/SpritesMng.js +220 -231
- package/dist_app/SpritesMng.js.map +1 -1
- package/dist_app/SysBase.js +1729 -0
- package/dist_app/SysBase.js.map +1 -0
- package/dist_app/TxtLayer.js +1212 -1396
- package/dist_app/TxtLayer.js.map +1 -1
- package/dist_app/Variable.js +398 -466
- package/dist_app/Variable.js.map +1 -1
- package/dist_app/app.js +211 -8
- package/dist_app/app.js.map +1 -1
- package/dist_app/appMain.js +20 -21
- package/dist_app/appMain.js.map +1 -1
- package/dist_app/chunk.js +18 -0
- package/dist_app/gamepad.js +723 -511
- package/dist_app/gamepad.js.map +1 -1
- package/dist_app/pixi.js +11181 -0
- package/dist_app/pixi.js.map +1 -0
- package/dist_app/platform.js +424 -369
- package/dist_app/platform.js.map +1 -1
- package/dist_app/preload.js +2 -2
- package/dist_app/preload.js.map +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
- package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
- package/dist_app/sn/CmnInterface.d.ts +3 -1
- package/dist_app/sn/CmnInterface.d.ts.map +1 -1
- package/dist_app/sn/CmnLib.d.ts.map +1 -1
- package/dist_app/sn/CmnTween.d.ts +3 -3
- package/dist_app/sn/CmnTween.d.ts.map +1 -1
- package/dist_app/sn/EventMng.d.ts.map +1 -1
- package/dist_app/sn/Grammar.d.ts +1 -1
- package/dist_app/sn/Grammar.d.ts.map +1 -1
- package/dist_app/sn/PropParser.d.ts +2 -2
- package/dist_app/sn/PropParser.d.ts.map +1 -1
- package/dist_app/sn/Reading.d.ts +6 -0
- package/dist_app/sn/Reading.d.ts.map +1 -1
- package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
- package/dist_app/sn/SndBuf.d.ts +27 -16
- package/dist_app/sn/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/SoundMng.d.ts +4 -1
- package/dist_app/sn/SoundMng.d.ts.map +1 -1
- package/dist_app/sn/SysBase.d.ts.map +1 -1
- package/dist_app/sn/TxtStage.d.ts +2 -1
- package/dist_app/sn/TxtStage.d.ts.map +1 -1
- package/dist_app/test/ValTest.d.ts +1 -1
- package/dist_app/test/ValTest.d.ts.map +1 -1
- package/package.json +23 -13
- package/dist/CmnTween.js +0 -1005
- package/dist/CmnTween.js.map +0 -1
- package/dist/web2.js +0 -21644
- package/dist/web2.js.map +0 -1
- package/dist_app/CmnTween.js +0 -1005
- package/dist_app/CmnTween.js.map +0 -1
- package/dist_app/app2.js +0 -18547
- package/dist_app/app2.js.map +0 -1
package/dist/Grammar.js
ADDED
|
@@ -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":"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"}
|
package/dist/GrpLayer.js
CHANGED
|
@@ -1,196 +1,164 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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 { 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) {}
|
|
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
|
-
|
|
162
|
+
export { GrpLayer, DesignCast as t };
|
|
163
|
+
|
|
164
|
+
//# sourceMappingURL=GrpLayer.js.map
|