@famibee/skynovel 2.0.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/dist/LayerMng.js CHANGED
@@ -552,7 +552,7 @@ var LayerMng = class x {
552
552
  this.#M.filters = [new Filter(void 0, A ?? x.#O, F)];
553
553
  let I = CmnTween.tween(TW_NM_TRANS, e, F, { tick: 1 }, () => {}, M, () => {}, !j);
554
554
  return j ? new SpritesMng(j, void 0, (e) => {
555
- F.rule = e.texture, e.destroy(), I.start(), S.add(O);
555
+ F.rule = e.texture, e.destroy(), S.add(O), I.start();
556
556
  }, (e) => {
557
557
  e && this.main.resume();
558
558
  }).ret : (S.add(O), !1);
@@ -1 +1 @@
1
- {"version":3,"file":"LayerMng.js","names":["cls: string","hArg: TArg","sys: SysBase","val: T_Variable","ret: {isWait: boolean}","#pg","#cfg","#sys","#main","appPixi: Application","val: T_Variable","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#evtMng","#hIfrm","#hIfrmVisibleBk","#rect","#hDisabled","#loadPic2Img","#hEncImgOUrl","#hARetImg","win: any","#zIdx","hNow: {[val_name: string]: number}","hTo: {[val_name: string]: number}","oCfg: T_CFG","hTag: T_HTag","val: T_Variable","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","#stage","#frmMng","#bg_color","#log","#elc","cfg: Config","hTag: T_HTag","appPixi: Application","val: T_Variable","main: T_Main","scrItr: ScriptIterator","sys: SysBase","#modeLnSub","#aLayName","#hPages","#evtMng","tid: NodeJS.Timeout | undefined","#loadplugin","#snapshot","#snapshot4proc","#snapshot4app","#snapshot4web","#add_lay","#clear_lay","#lay","#trans","#quake","#tsy","#add_filter","#clear_filter","#enable_filter","#ch","#clear_text","#current","#endlink","#er","#graph","#link","#r","#ruby2","#span","#tcy","#dump_lay","#enable_event","#button","#cmdTxt","#fore","#back","#spTransBack","#spTransFore","#foreachRedrawTxtLayBack","#hProcDbgRes","#selectNode","#curTxtlay","#modeLn","#grpCover","ret: [Sprite, boolean]","#getLayers","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","#rtTransFore","aPrm: Promise<void>[]","aBackTransAfter: Sprite[]","#add_filter2","#enable_filter2","#pgTxtlay","o: any","aSort: {ln: string, idx: number}[]"],"sources":["../src/sn/Pages.ts","../src/sn/FrameMng.ts","../src/sn/Log.ts","../src/sn/LayerMng.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\nimport type {TArg} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {Layer} from './Layer';\nimport type {SysBase} from './SysBase';\nimport {argChk_Boolean} from './CmnLib';\n\nimport type {Container} from 'pixi.js';\n\n\nexport class Pages {\n\t#pg: {fore: Layer, back: Layer};\n\n\tconstructor(layname: string, readonly cls: string, fore: Container, back: Container, readonly hArg: TArg, readonly sys: SysBase, readonly val: T_Variable, readonly ret: {isWait: boolean}) {\n\t\tconst fncF = sys.hFactoryCls[cls];\n\t\tif (! fncF) throw `属性 class【${cls}】が不正です`;\n\n\t\tconst f = fncF();\n\t\tconst b = fncF();\n\t\tf.layname =\n\t\tb.layname = layname;\n\t\tconst nm = hArg[':id_tag'] = `layer:${layname} cls:${cls} page:`;\n\t\tf.ctn.name = f.name = nm +'A';\n\t\tb.ctn.name = b.name = nm +'B';\n\t\tfore.addChild(f.ctn);\n\t\tback.addChild(b.ctn);\n\t\targChk_Boolean(hArg, 'visible', true);\n\t\targChk_Boolean(hArg, 'visible', true);// SKYNovelではデフォルトはtrueとする\n\t\tret.isWait = f.lay(hArg) || b.lay(hArg);\n\t\tthis.#pg = {fore: f, back: b};\n\t\tback.visible = false;\n\n\t\t// 組み込み変数\n\t\tconst valnm = `const.sn.lay.${layname}`;\n\t\tval.setVal_Nochk('tmp', valnm, true);\n\t\tval.defTmp(valnm +'.fore.alpha', ()=> this.#pg.fore.alpha);\n\t\tval.defTmp(valnm +'.back.alpha', ()=> this.#pg.back.alpha);\n\t\tval.defTmp(valnm +'.fore.height', ()=> this.#pg.fore.height);\n\t\tval.defTmp(valnm +'.back.height', ()=> this.#pg.back.height);\n\t\tval.defTmp(valnm +'.fore.visible', ()=> this.#pg.fore.ctn.visible);\n\t\tval.defTmp(valnm +'.back.visible', ()=> this.#pg.back.ctn.visible);\n\t\tval.defTmp(valnm +'.fore.width', ()=> this.#pg.fore.width);\n\t\tval.defTmp(valnm +'.back.width', ()=> this.#pg.back.width);\n\t\tval.defTmp(valnm +'.fore.x', ()=> this.#pg.fore.x);\n\t\tval.defTmp(valnm +'.back.x', ()=> this.#pg.back.x);\n\t\tval.defTmp(valnm +'.fore.y', ()=> this.#pg.fore.y);\n\t\tval.defTmp(valnm +'.back.y', ()=> this.#pg.back.y);\n\t}\n\tdestroy() {\n\t\tthis.#pg.fore.destroy();\n\t\tthis.#pg.back.destroy();\n\t}\n\n\treadonly lay = (hArg: TArg)=> this.getPage(hArg).lay(hArg);\n\treadonly getPage = (hArg: TArg)=>\n\t\tPages.argChk_page(hArg, 'fore') !== 'back'\n\t\t\t? this.#pg.fore\n\t\t\t: this.#pg.back;\n\tstatic\targChk_page(hash: TArg, def: string): string {\n\t\tconst v = hash.page ?? def;\n\t\tif (v === 'fore' || v === 'back') {hash.page = v; return v}\n\n\t\tthrow Error('属性 page【'+ v +'】が不正です');\n\t}\n\tget fore(): Layer {return this.#pg.fore}\n\tget back(): Layer {return this.#pg.back}\n\n\ttransPage(aPrm: Promise<void>[]): void {\n\t\t[this.#pg.back, this.#pg.fore] = [this.#pg.fore, this.#pg.back];\n\t\tthis.#pg.back.copy(this.#pg.fore, aPrm);\n\t}\n\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 {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {CmnTween} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_GetFrm} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {Config} from './Config';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\n\nimport {type Application, Loader, LoaderResource} from 'pixi.js';\n\n\nexport class FrameMng implements T_GetFrm {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: T_Main;\n\tstatic\tinit(cfg: Config, sys: SysBase, main: T_Main): void {\n\t\tFrameMng.#cfg = cfg;\n\t\tFrameMng.#sys = sys;\n\t\tFrameMng.#main = main;\n\t}\n\n\tconstructor(hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable) {\n\t\t//\tHTMLフレーム\n\t\thTag.add_frame\t\t= o=> this.#add_frame(o);\t// フレーム追加\n\t\thTag.let_frame\t\t= o=> this.#let_frame(o);\t// フレーム変数を取得\n\t\thTag.set_frame\t\t= o=> this.#set_frame(o);\t// フレーム変数に設定\n\t\thTag.frame\t\t\t= o=> this.#frame(o);\t\t// フレームに設定\n\t\thTag.tsy_frame\t\t= o=> this.#tsy_frame(o);\t// フレームをトゥイーン開始\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrm\t: {[id: string]: HTMLIFrameElement} = Object.create(null);\n\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (const f of Object.values(this.#hIfrm)) f.parentElement!.removeChild(f);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrm = Object.create(null);\n\t}\n\n\thideAllFrame() {\t// (表示・非表示を保存しつつ)すべて非表示に\n\t\tfor (const [id, {style}] of Object.entries(this.#hIfrm)) {\n\t\t\tthis.#hIfrmVisibleBk[id] = style.display !== 'none';\n\t\t\tstyle.display = 'none';\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrmVisibleBk: {[id: string]: boolean} = Object.create(null);\n\trestoreAllFrame() {\t// 保存していた表示・非表示を回復\n\t\tfor (const [id, v] of Object.entries(this.#hIfrmVisibleBk)) {\n\t\t\tconst f = this.#hIfrm[id];\n\t\t\tif (f) f.style.display = v ?'inline' :'none';\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrmVisibleBk = Object.create(null);\n\t}\n\n\t//\tHTMLフレーム\n\t// フレーム追加\n\t#add_frame(hArg: TArg) {\n\t\tconst {id, src, alpha: a=1, scale_x: sx=1, scale_y: sy=1, rotate: r=0,} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tif (! src) throw 'srcは必須です';\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】はすでにあります`;\n\n\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\tconst b_color = hArg.b_color ?` background-color: ${hArg.b_color};` :'';\n\t\tconst rct = this.#rect(hArg);\n\t\t// 【sandbox=\"allow-scripts allow-same-origin\"】は必要なのに警告が出るので削除\n\t\tFrameMng.#main.cvs.insertAdjacentHTML('beforebegin', `<iframe id=\"${id}\" style=\"opacity: ${String(a)}; ${b_color} position: absolute; left:${\n\t\t\tString(FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale)\n\t\t}px; top: ${\n\t\t\tString(FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale)\n\t\t}px; z-index: 1; border: 0px; overflow: hidden; display: ${\n\t\t\tv ?'inline' :'none'\n\t\t}; transform: scale(${String(sx)}, ${String(sy)}) rotate(${\n\t\t\tString(r)}deg);\" width=\"${\n\t\t\tString(rct.width *FrameMng.#sys.cvsScale)\n\t\t}\" height=\"${\n\t\t\tString(rct.height *FrameMng.#sys.cvsScale)\n\t\t}\"></iframe>`);\n\n\t\tconst RPN_ADD_FRAME = Reading.procID +`add_frame id:${id}`;\n\t\tReading.beginProc(RPN_ADD_FRAME);\n\t\tconst url = FrameMng.#cfg.searchPath(src, SEARCH_PATH_ARG_EXT.HTML);\n\t\tconst ld = (new Loader)\n\t\t.add({name: src, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.TEXT});\n\t\tif (FrameMng.#sys.arg.crypto) ld.use(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t(res, next)=> void FrameMng.#sys.dec(res.extension, res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`[add_frame]Html ロード失敗です src:${res.name} ${String(e)}`, false);\n\t\t\t\tnext();\n\t\t\t})\n\t\t);\n\t\tld.load((_ldr, hRes)=> {\n\t\t\tconst f = <HTMLIFrameElement>document.getElementById(id);\n\t\t\tthis.#hIfrm[id] = f;\n\t\t\tthis.#hDisabled[id] = false;\n\n\t\t\tconst iLastSep = url.lastIndexOf('/') +1;\n\t\t\tconst path_parent = url.slice(0, iLastSep);\n\t\t\tconst path_pa_pa = path_parent.slice(0, iLastSep);\n\t\t\tf.srcdoc = String(hRes[src]?.data)\t// .src はふりーむで問題発生\n\t\t\t.replace('sn_repRes();', '')\t// これはいずれやめる\n\t\t\t.replaceAll(\n\t\t\t\t/\\s(?:src|href)=([\"'])(\\S+?)\\1/g,\t// 【\\s】が大事、data-src弾く\n\t\t\t\t(m, br: string, v: string)=> v.startsWith('../')\n\t\t\t\t? path_pa_pa + m.slice(3)\n\t\t\t\t: m.replace('./', '')\t// 「./」は無視\n\t\t\t\t\t.replace(br, br + path_parent)\n\t\t\t);\n\n\t\t\tif (f.srcdoc.includes('true/*WEBP*/;')) f.srcdoc = f.srcdoc.replaceAll(\n\t\t\t\t/data-src=\"(.+?\\.)(?:jpe?g|png)/g,\n\t\t\t\t(_, p1: string)=> `data-src=\"${p1}webp`\n\t\t\t);\n\n\t\t\tf.onload = ()=> {\t// 一度変数に入れてここで設定するのはFirefox対応。ifrm.onloadが二度呼ばれる!\n\t\t\t\tReading.endProc(RPN_ADD_FRAME);\n\n\t\t\t\t// 組み込み変数\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn, true);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst win = f.contentWindow!;\n\t\t\t\tthis.#evtMng.resvFlameEvent(<HTMLBodyElement>win.document.body);\n\t\t\t\t// sn_repRes()をコール。引数は画像ロード処理差し替えメソッド\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>win).sn_repRes?.((i: HTMLImageElement)=> FrameMng.#loadPic2Img(i.dataset.src ?? '', i));\n\t\t\t};\n\t\t});\n\t\treturn true;\n\t}\n\t#hDisabled\t: {[id: string]: boolean}\t= {};\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tgetFrmDisabled(id: string): boolean {return this.#hDisabled[id]!}\n\t#rect(hArg: TArg): DOMRect {\n\t\tconst a = {...hArg};\n\t\treturn new DOMRect(\n\t\t\targChk_Num(a, 'x', 0),\n\t\t\targChk_Num(a, 'y', 0),\n\t\t\targChk_Num(a, 'width', CmnLib.stageW),\n\t\t\targChk_Num(a, 'height', CmnLib.stageH),\n\t\t);\n\t}\n\n\tstatic\t#loadPic2Img(src: string, img: HTMLImageElement, onload?: (img2: HTMLImageElement)=> void) {\n\t\tconst oUrl = this.#hEncImgOUrl[src];\n\t\tif (oUrl) {\n\t\t\timg.src = oUrl;\n\t\t\tif (onload) img.onload = ()=> onload(img);\n\t\t\treturn;\n\t\t}\n\n\t\tconst aImg = this.#hARetImg[src];\n\t\tif (aImg) {aImg.push(img); return}\t// load 終了前の駆け込み対応\n\t\tthis.#hARetImg[src] = [img];\n\n\t\tconst [srcNoPrm='', Prm=''] = src.split('?');\n\t\tconst path = FrameMng.#cfg.searchPath(srcNoPrm, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\tconst ld2 = (new Loader)\n\t\t.add({name: src, url: path, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,});\n\n\t\t// === vite-electron 用コード ===\n\t\tif (FrameMng.#sys.use4ViteElectron(src, path, ld2, FrameMng.#main)) { /* empty */ }\n\t\telse\n\t\tif (FrameMng.#sys.arg.crypto && path.endsWith('.bin')) ld2.use((res, next)=> {\n\t\t\tif (res.extension !== 'bin') {next(); return}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid FrameMng.#sys.decAB(res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tif (r instanceof HTMLImageElement) {\n\t\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\n\t\t\t\t\t// これをすると二度目のフレーム画面表示で画像が壊れる\n\t\t\t\t\t// next();\n\t\t\t\t\t// URL.revokeObjectURL(r.src);\n\t\t\t\t\t// return;\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`FrameMng loadPic ロード失敗です fn:${res.name} ${String(e)}`, false)\n\t\t\t\tnext();\n\t\t\t});\n\t\t});\n\t\tld2.load((_ldr, hRes)=> {\n\t\t\tfor (const [s2, {data: {src}}] of Object.entries(hRes)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tconst u2 = this.#hEncImgOUrl[s2] = src + (\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tsrc.startsWith('blob:') || src.startsWith('data:')\n\t\t\t\t\t?'' :Prm ? '?'+ Prm: ''\n\t\t\t\t);\n\t\t\t\tconst ri = this.#hARetImg[s2];\n\t\t\t\tif (ri) for (const i of ri) {\n\t\t\t\t\ti.src = u2;\n\t\t\t\t\tif (onload) i.onload = ()=> onload(i);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hARetImg[s2];\n\t\t\t//\tURL.revokeObjectURL(u2);// 画面遷移で毎回再生成するので\n\t\t\t}\n\t\t});\n\t}\n\tstatic\t#hARetImg\t\t: {[src: string]: HTMLImageElement[]}\t= {};\n\tstatic\t#hEncImgOUrl\t: {[src: string]: string}\t\t\t\t= {};\n\n\n\tcvsResize() {\t// NOTE: フォントサイズはどう変更すべきか\n\t\tfor (const [id, f] of Object.entries(this.#hIfrm)) {\n\t\t\tconst vn = 'const.sn.frm.'+ id;\n\t\t\tconst x = Number(this.val.getVal(vn +'.x'));\n\t\t\tconst y = Number(this.val.getVal(vn +'.y'));\n\t\t\tconst w = Number(this.val.getVal(vn +'.width'));\n\t\t\tconst h = Number(this.val.getVal(vn +'.height'));\n\t\t\tf.style.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.style.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.width = String(w *FrameMng.#sys.cvsScale);\n\t\t\tf.height = String(h *FrameMng.#sys.cvsScale);\n\t\t}\n\t}\n\n\t// フレーム変数を取得\n\t#let_frame(hArg: TArg) {\n\t\tconst {id, var_name} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst win = f.contentWindow!;\n\t\tif (! Object.hasOwn(win, var_name)) throw `frame【${id}】に変数/関数【${var_name}】がありません。変数は var付きにして下さい`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst v = win[<keyof Window>var_name];\n\t\t// var変数 / 関数実行の戻り値 -> 組み込み変数\n\t\tthis.val.setVal_Nochk(\n\t\t\t'tmp',\n\t\t\tvn +'.'+ var_name,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n\t\t\targChk_Boolean(hArg, 'function', false) ?v() :v\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// フレーム変数に設定\n\t#set_frame(hArg: TArg) {\n\t\tconst {id, var_name, text} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\t\tif (! text) throw 'textは必須です';\n\n\t\t// -> 組み込み変数\n\t\tthis.val.setVal_Nochk('tmp', vn +'.'+ var_name, text);\n\n\t\t// -> var変数に設定\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion\n\t\tconst win: any = f.contentWindow!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\twin[var_name] = text;\n\n\t\treturn false;\n\t}\n\n\t// フレームに設定\n\t#zIdx = 1;\n\t#frame(hArg: TArg) {\n\t\tconst {id} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal('tmp:'+ vn)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst s = f.style;\n\t\tif (argChk_Boolean(hArg, 'float', false)) s.zIndex = String(++this.#zIdx);\n\t\telse if ('index' in hArg) s.zIndex = String(argChk_Num(hArg, 'index', 0));\n\t\telse if (hArg.dive) s.zIndex = String(-++this.#zIdx);\t// -は必要\n\n\t\tif ('alpha' in hArg) {\n\t\t\tconst a = s.opacity = String(hArg.alpha);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t}\n\t\tconst rct = this.#rect(hArg);\n\t\tif ('x' in hArg || 'y' in hArg) {\n\t\t\ts.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\ts.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t}\n\t\tif ('scale_x' in hArg || 'scale_y' in hArg || 'rotate' in hArg) {\n\t\t\tconst sx = argChk_Num(hArg, 'scale_x', 1);\n\t\t\tconst sy = argChk_Num(hArg, 'scale_y', 1);\n\t\t\tconst r = argChk_Num(hArg, 'rotate', 0);\n\t\t\ts.transform = `scale(${String(sx)}, ${String(sy)}) rotate(${String(r)}deg)`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t}\n\t\tif ('width' in hArg) {\n\t\t\tf.width = String(rct.width *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t}\n\t\tif ('height' in hArg) {\n\t\t\tf.height = String(rct.height *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t}\n\t\tif ('visible' in hArg) {\n\t\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\t\ts.display = v ?'inline' :'none';\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif ('b_color' in hArg) s.backgroundColor = hArg.b_color!;\n\t\tif ('disabled' in hArg) {\n\t\t\tconst d = this.#hDisabled[id] = argChk_Boolean(hArg, 'disabled', true);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst b = f.contentDocument!.body;\n\t\t\tfor (const e of [\n\t\t\t\t...Array.from(b.getElementsByTagName('input')),\n\t\t\t\t...Array.from(b.getElementsByTagName('select')),\n\t\t\t]) e.disabled = d;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// フレームをトゥイーン開始\n\t#tsy_frame(hArg: TArg) {\n\t\tconst {id, alpha, x, y, scale_x, scale_y, rotate, width, height} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`, 0)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst hNow: {[val_name: string]: number} = {};\n\t\tif (alpha) hNow.a = Number(f.style.opacity);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thNow.x = Number(this.val.getVal(`tmp:${vn}.x`));\n\t\t\thNow.y = Number(this.val.getVal(`tmp:${vn}.y`));\n\t\t\thNow.sx = Number(this.val.getVal(`tmp:${vn}.scale_x`));\n\t\t\thNow.sy = Number(this.val.getVal(`tmp:${vn}.scale_y`));\n\t\t\thNow.r = Number(this.val.getVal(`tmp:${vn}.rotate`));\n\t\t}\n\t\tif (width) hNow.w = Number(this.val.getVal(`tmp:${vn}.width`));\n\t\tif (height) hNow.h = Number(this.val.getVal(`tmp:${vn}.height`));\n\t\tconst hArg2 = CmnTween.cnvTweenArg(hArg, hNow);\n\n\t\tconst hTo: {[val_name: string]: number} = {};\n\t\tlet fncA = (_d: {a: number})=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = d=> {\n\t\t\t\tf.style.opacity = String(d.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', d.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = (_d: {\n\t\t\tx: number;\n\t\t\ty: number;\n\t\t\tsx: number;\n\t\t\tsy: number;\n\t\t\tr: number;\n\t\t})=> { /* empty */ };\n\t\tconst rct = this.#rect(hArg2);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thTo.x = rct.x;\n\t\t\thTo.y = rct.y;\n\t\t\thTo.sx = argChk_Num(hArg2, 'scale_x', 1);\n\t\t\thTo.sy = argChk_Num(hArg2, 'scale_y', 1);\n\t\t\thTo.r = argChk_Num(hArg2, 'rotate', 0);\n\t\t\tfncXYSR = d=> {\n\t\t\t\tf.style.left = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +d.x *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.top = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +d.y *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.transform = `scale(${String(d.sx)}, ${String(d.sy)}) rotate(${String(d.r)}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', d.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', d.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', d.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', d.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', d.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = (_d: {w: number})=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = d=> {\n\t\t\t\tf.width = `${String(d.w *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', d.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = (_d: {h: number})=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = d=> {\n\t\t\t\tf.height = `${String(d.h *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', d.h);\n\t\t\t};\n\t\t}\n\n\t\tthis.appPixi.stage.interactive = false;\n\t\tCmnTween.tween(`frm\\n${id}`, hArg, hNow, CmnTween.cnvTweenArg(hArg, hNow), d=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tfncA(d); fncXYSR(d); fncW(d); fncH(d);\n\t\t}, ()=> {this.appPixi.stage.interactive = true}, ()=> { /* empty */ });\n\n\t\treturn false;\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-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, T_HTag} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {T_CFG} from './ConfigBase';\n\n\nexport type T_LOG = {\n\trecText\t\t: (txt: string)=> void;\n\tpagebreak\t: ()=> void;\n};\n\ntype T_LOG_DATA = TArg & {\n\ttext\t: string;\t// 履歴文字列\n}\n\n\n// ログ管理\n//\t・要求仕様\n//\t\t[ch][rec_ch][rec_r][reset_rec] で履歴を記録・操作し、\n//\t\t変数 🦀const.sn.log.json を取得したときにいい感じの値を返す。\nexport class Log implements T_LOG {\n\t#LastLog\t: T_LOG_DATA\t= {text: ''};\t// 🌾\n\t#aLog\t\t: T_LOG_DATA[]\t= [];\t\t\t// 🍚\n\n\n\tconstructor(private readonly oCfg: T_CFG, private readonly hTag: T_HTag, private readonly val: T_Variable) {\n\t\thTag.rec_ch\t\t\t= o=> this.#rec_ch(o);\t\t// 履歴書き込み\n\t\thTag.rec_r\t\t\t= o=> this.#rec_r(o);\t\t// 履歴改行\n\t\thTag.reset_rec\t\t= o=> this.#reset_rec(o);\t// 履歴リセット\n\n\t\t// 履歴 JSON テキスト\n\t\t// 【内部変数】(ざっくりと)🦀 = 🍚this.#aLog + 🌾this.#LastLog\n\t\tval.defTmp('const.sn.log.json', ()=> {\n\t\t\t// HTML連結を一つにまとめる(始端終端のタグのみにする)\n\t\t\t//\ttext追加時ではなく、値を参照されるこのときまで遅らせて処理\n\t\t\tthis.#LastLog.text =\t// 🌾\n\t\t\tthis.#LastLog.text\n\t\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\t\tconst o = [...this.#aLog, this.#LastLog];\t// 🍚 + 🌾\n\t\t\treturn JSON.stringify(o);\t// 🦀\n\t\t});\n\t\tthis.recText('');\n\t}\n\n\t// [ch] からコールされる\n\t//\t[ch]\t\t// 文字を追加する\n\t\t// recText(text: string) コール\n\t\t// \t🌾this.#LastLog\t\t= {text};\t// 置換でよい\n\t\t// \t🍊save:const.sn.sLog = 🦀const.sn.log.json\t// これを起動したい\n\trecText(text: string) {\n\t\tthis.#LastLog.text = text;\t\t// 🌾 text は置換でよい\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',\t// 🍊 リプレイ時の回復用\n\t\t\tString(this.val.getVal('const.sn.log.json'))\t// これを起動したい\n\t\t);\n\t}\n\n\t//MARK: 履歴書き込み\n\t//\t🌾this.#LastLog = {...hArg, text: 🌾this.#LastLog.text};\n\t#rec_ch(hArg: TArg) {\n\t\tthis.#LastLog = {...hArg, text: this.#LastLog.text};\n\t\tif (! hArg.text) {\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',// 🍊 リプレイ時の回復用\n\t\t\t\tString(this.val.getVal('const.sn.log.json'))// これを起動したい\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\thArg.record = true;\n\t\thArg.style ??= '';\n\t\thArg.style += 'display: none;';\t// gotxt内で削除し履歴に表示\n\t\thArg.wait = 0;\n\t\treturn this.hTag.ch(hArg);\t// この先は text, style, r_style 以外破棄されてしまうので注意\n\t}\n\n\t//MARK: 履歴改行\n\t#rec_r(hArg: TArg) {return this.#rec_ch({...hArg, text: '[r]'})}\n\n\t//MARK: 履歴リセット\n\t//\t以下をクリア。text で置き換え値を設定できる\n\t//\t🌾this.#LastLog\t\t= {text: hArg.text ?? ''};\n\t//\t🍚this.#aLog\t\t= []\n\t//\t🍊save:const.sn.sLog= hArg.text ?[{text:\"${hArg.text}\"}] : []\n\t#reset_rec(hArg: TArg) {\n\t\tthis.#aLog = [];\n\t\thArg.text ??= '';\n\t\tthis.#LastLog = {text: hArg.text};\t// 🌾\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog', JSON.stringify([this.#LastLog]));\t// 🍊 リプレイ時の回復用\n\n\t\treturn false;\n\t}\n\n\t//MARK: 履歴改ページ\n\tpagebreak() {\n\t\tthis.#LastLog.text =\t// 🌾\n\t\tthis.#LastLog.text\n\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\tif (! this.#LastLog.text) return;\t//\t🌾this.#LastLog\n\n\t\tif (this.#aLog.push(this.#LastLog) > this.oCfg.log.max_len) this.#aLog = this.#aLog.slice(-this.oCfg.log.max_len);\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n\t//MARK: 履歴回復\n\t// save:const.sn.sLog からの復帰\n\tplayback() {\n\t\tthis.#aLog = <T_LOG_DATA[]>JSON.parse(String(this.val.getVal('save:const.sn.sLog')));\t\t// 🍚this.#aLog\t= 🍊 リプレイ時の回復用\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\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 {CmnLib, getDateStr, uint, type IEvtMng, argChk_Boolean, argChk_Num, addStyle, argChk_Color, parseColor} from './CmnLib';\nimport {CmnTween, TW_NM_TRANS} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_HPage, T_GetFrm, T_PropParser} from './CmnInterface';\nimport {Pages} from './Pages';\nimport {Layer} from './Layer';\nimport {GrpLayer} from './GrpLayer';\nimport {SpritesMng} from './SpritesMng';\nimport {type T_cmdTxt_JSON, TxtLayer} from './TxtLayer';\nimport {RubySpliter} from './RubySpliter';\nimport {TxtStage} from './TxtStage';\nimport {PROTOCOL_DL, PROTOCOL_USERDATA, type Config} from './Config';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {SysBase} from './SysBase';\nimport {FrameMng} from './FrameMng';\nimport {Button} from './Button';\nimport type {SoundMng} from './SoundMng';\nimport {DesignCast} from './DesignCast';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport {Reading} from './Reading';\nimport {Log} from './Log';\n\nimport {Container, type Application, Graphics, Filter, RenderTexture, Sprite, autoDetectRenderer, Texture} from 'pixi.js';\n\n\nexport type IMakeDesignCast = (idc: DesignCast)=> void;\n\nexport type HPage = {[ln: string]: Pages};\n\nfunction cnvSArg(o: T_cmdTxt_JSON) {\n\t\t// わざと使う側で <T_cmdTxt_JSON> させる。そっちで不具合を見つけてもらう\n\treturn encodeURIComponent(JSON.stringify(o));\n}\n\n\nexport class LayerMng implements T_GetFrm {\n\treadonly\t#stage\t: Container;\n\t\t\t\t#fore\t= new Container;\n\t\t\t\t#back\t= new Container;\n\n\treadonly\t#frmMng\t\t: FrameMng;\n\treadonly\t#bg_color\t: number;\n\n\treadonly\t#log;\n\n\treadonly\t#elc\t\t= new EventListenerCtn;\n\n\t//MARK: コンストラクタ\n\tconstructor(private readonly cfg: Config, private readonly hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable, private readonly main: T_Main, private readonly scrItr: ScriptIterator, private readonly sys: SysBase, sndMng: SoundMng, prpPrs: T_PropParser) {\n\t\t// レスポンシブや回転・全画面切り替え・DevTools 表示切り替えの対応\n\t\tconst fncResizeLay = ()=> {\n\t\t\tsys.cvsResize();\n\t\t\tthis.cvsResizeDesign();\n\t\t\tif (this.#modeLnSub) for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResizeChildren();\n\t\t\t}\n\t\t\telse for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResize();\n\t\t\t}\n\n\t\t\tthis.#frmMng.cvsResize();\n\t\t\tthis.#evtMng.cvsResize();\n\t\t};\n\t\tif (CmnLib.isMobile) {\n\t\t\tthis.#elc.add(globalThis, 'orientationchange', fncResizeLay, {passive: true});\n\t\t}\n\t\telse {\n\t\t\tlet tid: NodeJS.Timeout | undefined = undefined;\n\t\t\tthis.#elc.add(globalThis, 'resize', ()=> {\n\t\t\t\tif (tid) return;\n\t\t\t\ttid = setTimeout(()=> {tid = undefined; fncResizeLay()}, 1000 /60 *10);\t// clearTimeout()不要と判断\n\t\t\t}, {passive: true});\n\t\t}\n\t\tsys.cvsResize();\n\n\t\tthis.#log = new Log(this.cfg.oCfg, hTag, val);\n\t\tTxtLayer.init(cfg, hTag, val, this.#log, me=> this.#hPages[me.layname]!.fore === me, appPixi);\n\t\tGrpLayer.init(main, cfg, appPixi, sys, sndMng, val);\n\t\tFrameMng.init(cfg, sys, main);\n\n\t\tthis.#frmMng = new FrameMng(hTag, appPixi, val);\n\n\t\t//\tシステム\n\t\thTag.loadplugin\t\t= o=> this.#loadplugin(o);\t// プラグインの読み込み\n\t\t//hTag.set_focus\t// EventMng.tsで定義\t \t// フォーカス移動\n\t\thTag.snapshot\t\t= o=> this.#snapshot(o);\t// スナップショット\n\t\tthis.#snapshot4proc = this.sys.isApp\n\t\t\t? (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4app(hArg, url, width, height, RPN_SNAPSHOT)\n\t\t\t: (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4web(hArg, url, width, height, RPN_SNAPSHOT);\n\n\t\t//\tレイヤ共通\n\t\thTag.add_lay\t\t= o=> this.#add_lay(o);\t\t// レイヤを追加する\n\t\thTag.clear_lay\t\t= o=> this.#clear_lay(o);\t// レイヤ設定の消去\n\t\thTag.finish_trans\t= ()=> false;\t\t\t\t// トランス強制終了\n\t\thTag.lay\t\t\t= o=> this.#lay(o);\t\t\t// レイヤ設定\n\t\thTag.trans\t\t\t= o=> this.#trans(o);\t\t// ページ裏表を交換\n\t\thTag.wt\t\t\t\t= o=> CmnTween.wt(o);\t\t// トランス終了待ち\n\n\t\thTag.quake\t\t\t= o=> this.#quake(o);\t\t// 画面を揺らす\n\t\thTag.stop_quake\t\t= hTag.finish_trans;\t\t// 画面揺らし中断\n\t\thTag.wq\t\t\t\t= hTag.wt;\t\t\t\t\t// 画面揺らし終了待ち\n\n\t\thTag.pause_tsy\t\t= o=> CmnTween.pause_tsy(o);\t// 一時停止\n\t\thTag.resume_tsy\t\t= o=> CmnTween.resume_tsy(o);\t// 一時停止再開\n\t\thTag.stop_tsy\t\t= o=> CmnTween.stop_tsy(o);\t// トゥイーン中断\n\t\thTag.tsy\t\t\t= o=> this.#tsy(o);\t\t\t// トゥイーン開始\n\t\thTag.wait_tsy\t\t= o=> CmnTween.wait_tsy(o);\t// トゥイーン終了待ち\n\n\t\thTag.add_filter\t\t= o=> this.#add_filter(o);\t// フィルター追加\n\t\thTag.clear_filter\t= o=> this.#clear_filter(o);// フィルター全削除\n\t\thTag.enable_filter\t= o=> this.#enable_filter(o);// フィルター個別切替\n\n\t\t//\t文字・文字レイヤ\n\t//\thTag.auto_pager\t\t= o=> this.auto_pager(o);\t// 自動改ページの設定\n\t\t//hTag.autowc\t\t// TxtLayer.ts で定義\t\t// 文字ごとのウェイト\n\t\thTag.ch\t\t\t\t= o=> this.#ch(o);\t\t\t// 文字を追加する\n\t\t//hTag.ch_in_style\t// TxtLayer.ts で定義\t\t// 文字出現文字出現演出\n\t\t//hTag.ch_out_style\t// TxtLayer.ts で定義\t\t// 文字消去文字出現演出\n\t\thTag.clear_text\t\t= o=> this.#clear_text(o);\t// 文字消去\n\t\thTag.current\t\t= o=> this.#current(o);\t\t// デフォルト文字レイヤ設定\n\t\thTag.endlink\t\t= o=> this.#endlink(o);\t\t// ハイパーリンクの終了\n\t\thTag.er\t\t\t\t= o=> this.#er(o);\t\t\t// ページ両面の文字消去\n\t\thTag.graph\t\t\t= o=> this.#graph(o);\t\t// インライン画像表示\n\t\thTag.link\t\t\t= o=> this.#link(o);\t\t// ハイパーリンク\n\t\thTag.r\t\t\t\t= o=> this.#r(o);\t\t\t// 改行\n\t\t// hTag.rec_ch\t\t// Log.ts で定義\t\t\t// 履歴書き込み\n\t\t// hTag.rec_r\t\t// Log.ts で定義\t\t\t// 履歴改行\n\t\t// hTag.reset_rec\t// Log.ts で定義\t\t\t// 履歴リセット\n\t\t//hTag.ruby\t\t\t= o=> this.ruby(o);\t\t\t// 直前一文字のルビ(廃止\n\t\t\t// タグでは無く、「|@《》」というスクリプト書き換えで良い\n\t\thTag.ruby2\t\t\t= o=> this.#ruby2(o);\t\t// 文字列と複数ルビの追加\n\t\thTag.span\t\t\t= o=> this.#span(o);\t\t// インラインスタイル設定\n\t\thTag.tcy\t\t\t= o=> this.#tcy(o);\t\t\t// 縦中横を表示する\n\n\t\t//\t画像・画像レイヤ\n\t\thTag.add_face\t\t= o=> SpritesMng.add_face(o);\t// 差分名称の定義\n\n\t\t//\tムービーレイヤ\n\t\thTag.wv\t\t\t\t= o=> SpritesMng.wv(o);\t\t// ムービー再生終了待ち\n\n\t\t//\tデバッグ・その他\n\t\thTag.dump_lay\t\t= o=> this.#dump_lay(o);\t// レイヤのダンプ\n\n\t\t//\tイベント\n\t\thTag.enable_event\t= o=> this.#enable_event(o);// イベント有無の切替\n\n\t\t//\tラベル・ジャンプ\n\t\thTag.button\t\t\t= o=> this.#button(o);\t\t// ボタンを表示\n\n\n\t\tif (cfg.existsBreakline) this.breakLine = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakline';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg));\n\t\t};\n\t\tif (cfg.existsBreakpage) this.breakPage = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakpage';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg));\n\t\t};\n\n\t\tthis.#bg_color = parseColor(String(cfg.oCfg.init.bg_color));\n\t\tconst grp = new Graphics;\n\t\tgrp\n\t\t.beginFill(this.#bg_color)\t// イベントを受け取るためにも塗る\n\t\t.lineStyle(0, this.#bg_color)\n\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t.endFill();\n\t\tthis.#fore.addChild(grp.clone());\n\t\tthis.#back.addChild(grp);\n\t\tthis.#back.visible = false;\n\t\tthis.#fore.name = 'page:A';\t// 4tst\n\t\tthis.#back.name = 'page:B';\t// 4tst\n\n\t\tthis.#stage = appPixi.stage;\n\t\tthis.#stage.addChild(this.#back);\n\t\tthis.#stage.addChild(this.#fore);\n\t\tthis.#stage.addChild(this.#spTransBack);\n\t\tthis.#stage.addChild(this.#spTransFore);\n\t\tthis.#stage.name = 'stage';\t// 4tst\n/*\n\t\tconsole.group('new DispMng info');\n\t\tconsole.info(appPixi.renderer);\n\t\tconsole.info('utils.isMobile():'+ utils.isMobile.any);\n\t\t\t\t// https://github.com/kaimallea/isMobile\n\t\tconsole.info('utils.isWebGLSupported():'+ utils.isWebGLSupported());\n\t\tconsole.info('w:%O: h:%O:', CmnLib.stageW, CmnLib.stageH);\n\t\tconsole.groupEnd();\n*/\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncTxt_b_alpha = (_name: string, val: any)=> {\n\t\t\tthis.#foreachRedrawTxtLayBack(Number(val))\n\t\t};\n\t\tfncTxt_b_alpha('', val.getVal('sys:TextLayer.Back.Alpha', 1));\n\t\tval.defValTrg('sys:TextLayer.Back.Alpha', fncTxt_b_alpha);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\tconst fncBtnFont = (_name: string, val: any)=> {Button.fontFamily = val};\n\t\tfncBtnFont('', val.getVal('tmp:sn.button.fontFamily', Button.fontFamily));\n\t\tval.defValTrg('tmp:sn.button.fontFamily', fncBtnFont);\n\n\t\tval.defTmp('const.sn.last_page_text', ()=> this.currentTxtlayFore?.pageText ?? '');\n\t\tval.defTmp('const.sn.last_page_plain_text', ()=> this.currentTxtlayFore?.pagePlainText ?? '');\n\t\tif (CmnLib.isDbg) {\n\t\t\tDesignCast.init(appPixi, sys, scrItr, prpPrs, cfg, this.#hPages);\n\t\t\tthis.cvsResizeDesign = ()=> DesignCast.cvsResizeDesign();\n\t\t\tsys.addHook((type, o)=> {\n\t\t\t\tif (! this.#hProcDbgRes[type]?.(type, o)) return;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hProcDbgRes[type];\n\t\t\t});\n\t\t}\n\t}\n\tprivate\tcvsResizeDesign() { /* empty */ }\n\n\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> boolean}\t= {\n\t\tattach\t\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tcontinue\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tdisconnect\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\t_enterDesign: _=> {\n\t\t\tDesignCast.enterMode();\n\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\tconst lay = this.#hPages[ln]!.fore;\n\t\t\t\tlay.makeDesignCastChildren(gdc=> gdc.make());\n\t\t\t\tlay.makeDesignCast(gdc=> gdc.make());\n\t\t\t}\n\n\t\t\tthis.#selectNode(this.#curTxtlay);\treturn false;\n\t\t//\tthis.selectNode('mes/ボタン');\treturn false;\t// Test用\n\t\t//\tthis.selectNode(this.firstGrplay);\treturn false;\n\t\t\t\t// 制作中は普通画像レイヤをいじるのが主なので、これがいい\n\t\t},\n\t\t_replaceToken: (_, o)=> {DesignCast.replaceToken(o); return false},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t_selectNode\t: (_, o)=> {this.#selectNode(o.node); return false},\n\t}\n\t#modeLn\t\t= '';\n\t#modeLnSub\t= '';\n\t#selectNode(node: string) {\n\t\t[this.#modeLn='', this.#modeLnSub=''] = node.split('/');\n\t\tconst pages = this.#hPages[this.#modeLn];\n\t\tif (! pages) return;\n\n\t\tDesignCast.allHide();\n\t\tif (this.#modeLnSub) pages.fore.showDesignCastChildren();\n\t\telse pages.fore.showDesignCast();\n\t}\n\n\tgetFrmDisabled = (id: string)=> this.#frmMng.getFrmDisabled(id);\n\n\t#grpCover : Graphics | undefined = undefined;\n\tcover(visible: boolean, bg_color = 0x0) {\n\t\tif (this.#grpCover) {\n\t\t\tthis.#stage.removeChild(this.#grpCover);\n\t\t\tthis.#grpCover.destroy();\n\t\t\tthis.#grpCover = undefined;\n\t\t}\n\t\tif (visible) this.#stage.addChild(\n\t\t\t(this.#grpCover = new Graphics)\n\t\t\t.beginFill(bg_color)\n\t\t\t.lineStyle(0, bg_color)\n\t\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#frmMng.setEvtMng(evtMng);\n\t\tSpritesMng.setEvtMng(evtMng);\n\t\tCmnTween.init(evtMng);\n\t}\n\n\tdestroy() {\n\t\tfor (const p of Object.values(this.#hPages)) p.destroy();\n\n\t\tthis.#elc.clear();\n\t\tGrpLayer.destroy();\n\t\tRubySpliter.destroy();\n\t\tTxtStage.destroy();\n\t\tTxtLayer.destroy();\n\n\t\tthis.#frmMng.destroy();\n\n\t\tCmnTween.destroy();\n\t\tTxtLayer.msecChWait = 10;\n\t}\n\n\n\t// 既存の全文字レイヤの実際のバック不透明度、を再計算\n\t#foreachRedrawTxtLayBack(g_alpha: number) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.chgBackAlpha(g_alpha);\n\t\t\t(<TxtLayer>back).chgBackAlpha(g_alpha);\n\t\t}\n\t}\n\n\n\t#cmdTxt = (cmd: string, tl = this.currentTxtlayForeNeedErr, _record = true)=> tl.tagCh('|&emsp;《'+ cmd +'》');\n\tgoTxt = ()=> { /* empty */ };\n\tget needGoTxt() {return this.currentTxtlayFore?.needGoTxt ?? false;}\n\tbreakLine = (_hArg: TArg)=> { /* empty */ };\n\tbreakPage = (_hArg: TArg)=> { /* empty */ };\n\tclearBreak() {\n\t\tif (! this.currentTxtlayFore) return;\n\n\t\tthis.clearBreak = ()=> this.#cmdTxt('del|break');\n\t\tthis.clearBreak();\n\t}\n\n\tclickTxtLay(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.currentTxtlayFore) return false;\n\n\t\treturn this.#aLayName\n\t\t.map(ln=> this.#hPages[ln]!.fore)\n\t\t.some(f=> f instanceof TxtLayer && f.click());\n\t}\n\n\n//\t//\tシステム\n\t//MARK: スナップショット\n\t#snapshot(hArg: TArg) {\n\t\tconst dt = getDateStr('-', '_', '', '_');\n\t\tconst fn0 = hArg.fn\n\t\t? hArg.fn.startsWith(PROTOCOL_USERDATA)\n\t\t\t? hArg.fn\n\t\t\t: `${PROTOCOL_DL + hArg.fn + dt}.png`\n\t\t: `${PROTOCOL_DL}snapshot${dt}.png`;\n\t\tconst url = this.cfg.searchPath(fn0);\n\t\tconst width = argChk_Num(hArg, 'width', CmnLib.stageW);\n\t\tconst height= argChk_Num(hArg, 'height', CmnLib.stageH);\n\t\treturn this.#snapshot4proc(hArg, url, width, height, `snapshot dt:${dt}`);\n\t}\n\t#snapshot4proc :(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string)=> boolean = ()=> false;\n\t#snapshot4app({layer}: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tthis.#frmMng.hideAllFrame();\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tif (! layer) {\n\t\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\t// 一時的に非表示にしてスナップショット\n\t\tconst aBk = this.#aLayName\n\t\t.map(ln=> {\n\t\t\tconst {ctn} = this.#hPages[ln]!.fore;\n\t\t\tconst ret: [Sprite, boolean] = [ctn, ctn.visible];\n\t\t\tctn.visible = false;\n\t\t\treturn ret;\n\t\t});\n\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]!.fore.ctn.visible = true;\n\n\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\tfor (const [sp, v] of aBk) sp.visible = v;\n\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\t#snapshot4web(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tconst b_color = argChk_Color(hArg, 'b_color', this.#bg_color);\n\t\tconst rnd = autoDetectRenderer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tbackgroundAlpha: b_color > 0x1000000 && url.endsWith('.png') ?0 :1,\n\t\t\tantialias: argChk_Boolean(hArg, 'smoothing', false),\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tbackgroundColor: b_color & 0xFFFFFF,\n\t\t\tautoDensity: true,\n\t\t});\n\t\tconst pg = hArg.page !== 'back' ?'fore' :'back';\n\t\tconst {layer} = hArg;\n\t\tvoid Promise.allSettled(\n\t\t\tthis.#getLayers(layer).map(ln=> new Promise<void>(\n\t\t\t\tre=> this.#hPages[ln]![pg].snapshot(rnd, re)\n\t\t\t))\n\t\t).then(async ()=> {\n\t\t\tconst renTx = RenderTexture.create({width: rnd.width, height: rnd.height});\t// はみ出し対策\n\t\t\trnd.render(this.#stage, {renderTexture: renTx});\n\t\t\tawait this.sys.savePic(\n\t\t\t\turl,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\trnd.plugins.extract.base64(renTx),\n\t\t\t);\n\t\t\trenTx.destroy();\n\n\t\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]![pg].snapshot_end();\n\t\t\trnd.destroy(true);\n\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\n\t//MARK: プラグインの読み込み\n\t#loadplugin(hArg: TArg) {\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tif (! fn.endsWith('.css')) throw 'サポートされない拡張子です';\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\tconst RPN_LOADPLUGIN = Reading.procID +`loadplugin fn:${fn}`;\n\t\tif (join) Reading.beginProc(RPN_LOADPLUGIN);\n\t\t(async ()=> {\n\t\t\tconst res = await fetch(fn);\n\t\t\tif (! res.ok) throw new Error('Network response was not ok.');\n\n\t\t\taddStyle(await res.text());\n\t\t\tif (join) Reading.endProc(RPN_LOADPLUGIN);\n\t\t})();\n\n\t\treturn join;\n\t}\n\n\n//\t//\tレイヤ共通\n\t//MARK: レイヤを追加する\n\t#add_lay(hArg: TArg) {\n\t\tconst {layer, class: cls} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\t\tif (layer.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (layer in this.#hPages) throw `layer【${layer}】はすでにあります`;\n\t\tif (! cls) throw 'clsは必須です';\n\n\t\tconst ret = {isWait: false}\n\t\tthis.#hPages[layer] = new Pages(layer, cls, this.#fore, this.#back, hArg, this.sys, this.val, ret);\n\t\tthis.#aLayName.push(layer);\n\t\tswitch (cls) {\n\t\tcase 'txt':\n\t\t\tif (! this.#curTxtlay) {\n\t\t\t\tthis.#chkTxtLay = ()=> { /* empty */ };\n\t\t\t\tthis.#getTxtLayer = o=> this.#$getTxtLayer(o);\n\t\t\t\tthis.#current = o=> this.#$current(o);\n\t\t\t\tthis.hTag.current({layer});\t// hPages更新後でないと呼べない\n\t\t\t\tthis.goTxt = ()=> {\n\t\t\t\t\tif (this.#evtMng.isSkipping) TxtLayer.msecChWait = 0;\n\t\t\t\t\telse this.setNormalChWait();\n\t\t\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\t\t\tconst f = this.#hPages[ln]!.fore;\n\t\t\t\t\t\tif (f instanceof TxtLayer) this.#cmdTxt('gotxt|', f, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ layer +'.enabled', true);\n\t\t\tbreak;\n\n\t\tcase 'grp':\n\t\t\tif (this.#firstGrplay) break;\n\t\t\tthis.#firstGrplay = layer;\n\t\t\tbreak;\n\t\t}\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// hArg[':id_tag'] は new Pages 内で設定\n\n\t\treturn ret.isWait;\n\t}\n\t#hPages\t\t: HPage\t\t= { /* empty */ };\t// しおりLoad時再読込\n\t#aLayName\t: string[]\t= [];\t// 最適化用・重なり順つき全レイヤ名\n\t#curTxtlay\t\t= '';\n\t#firstGrplay\t= '';\n\n\t#lay(hArg: TArg): boolean {\n\t\t// Trans\n\t\tconst ln = this.#argChk_layer(hArg);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst back = pg.back.ctn;\n\t\tconst fore = pg.fore.ctn;\n\t\tif (argChk_Boolean(hArg, 'float', false)) {\n\t\t\tthis.#back.setChildIndex(back, this.#back.children.length -1);\n\t\t\tthis.#fore.setChildIndex(fore, this.#fore.children.length -1);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\t\telse if (hArg.index) {\n\t\t\tif (argChk_Num(hArg, 'index', 0)) {\n\t\t\t\tthis.#back.setChildIndex(back, hArg.index);\n\t\t\t\tthis.#fore.setChildIndex(fore, hArg.index);\n\t\t\t\tthis.#rebuildLayerRankInfo();\n\t\t\t}\n\t\t}\n\t\telse if (hArg.dive) {\n\t\t\tconst {dive} = hArg;\n\t\t\tlet idx_dive = 0;\n\t\t\tif (ln === dive) throw '[lay] 属性 layerとdiveが同じ【'+ dive +'】です';\n\n\t\t\tconst pg_dive = this.#hPages[dive];\n\t\t\tif (! pg_dive) throw '[lay] 属性 dive【'+ dive +'】が不正です。レイヤーがありません';\n\t\t\tconst back_dive = pg_dive.back;\n\t\t\tconst fore_dive = pg_dive.fore;\n\t\t\tconst idx_back_dive = this.#back.getChildIndex(back_dive.ctn);\n\t\t\tconst idx_fore_dive = this.#fore.getChildIndex(fore_dive.ctn);\n\t\t\tidx_dive = idx_back_dive < idx_fore_dive ?idx_back_dive :idx_fore_dive;\n\t\t\tif (idx_dive > this.#back.getChildIndex(back)) --idx_dive;\t//自分が無くなって下がる分下げる\n\n\t\t\tthis.#fore.setChildIndex(fore, idx_dive);\n\t\t\tthis.#back.setChildIndex(back, idx_dive);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\n\t\thArg[':id_tag'] = pg.fore.name.slice(0, -7);\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn pg.lay(hArg);\n\t}\n\t#rebuildLayerRankInfo() {this.#aLayName = this.#sortLayers()}\n\n\t//MARK: レイヤ設定の消去\n\t#clear_lay(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\t//if (name === this.strTxtlay && hArg.page !== 'back') this.recText('', true);\n\t\t\t\t// 改ページ\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\t// page=both で両面削除\n\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-205.html\n\t\t\tif (hArg.page === 'both') {\n\t\t\t\tpg.fore.clearLay(hArg);\n\t\t\t\tpg.back.clearLay(hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpg.getPage(hArg).clearLay(hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//===================================================\n\t//MARK: WebGL フラグメントシェーダー GLSL\n\tstatic\treadonly\t#srcRuleTransFragment = /* glsl */`\nprecision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform sampler2D rule;\nuniform float vague;\nuniform float tick;\n\nuniform vec4 inputPixel;\nuniform highp vec4 outputFrame;\nvec2 getUV(vec2 coord) {\n\treturn coord * inputPixel.xy / outputFrame.zw;\n}\n\nvoid main() {\n\tvec4 fg = texture2D(uSampler, vTextureCoord);\n\tvec4 ru = texture2D(rule, getUV(vTextureCoord));\n\n\tfloat v = ru.r - tick;\n\tgl_FragColor = abs(v) < vague\n\t\t? vec4(fg.rgb, 1) *fg.a *(0.5 +v /vague *0.5)\n\t\t: 0.0 <= v ? fg : vec4(0);\n}`;\n/*\n\t末尾が読みづらいが、以下のif文を消して三項演算子にしている。\n\n\tif (abs(v) < vague) {\n\t\tfloat f_a = fg.a *(0.5 +v /vague *0.5);\n\t\tgl_FragColor.rgb = fg.rgb *f_a;\n\t\tgl_FragColor.a = f_a;\n\t\treturn;\n\t}\n\tgl_FragColor = v >= 0.0 ? fg : vec4(0);\n\n\t\t★GLSL : don't use \"if\"|Nobu note.com/nobuhirosaijo/n/n606a3f5d8e89\n\t\t\t> if文はあまり使わない方がいいらしい (処理負荷が高い)\n*/\n\n\n\t#rtTransBack = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransBack = new Sprite(this.#rtTransBack);\n\n\t#rtTransFore = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransFore = new Sprite(this.#rtTransFore);\n\n\n\t//MARK: ページ裏表を交換\n\t#trans(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tconst sDoTrans = new Set<string>;\n\t\tconst aLayFore = this.#getLayers(layer).map(ln=> {\n\t\t\tsDoTrans.add(ln);\n\t\t\treturn this.#hPages[ln]!.fore;\n\t\t});\n\n\t\tconst comp = ()=> {\n\t\t\t[this.#fore, this.#back] = [this.#back, this.#fore];\n\t\t\tconst aPrm: Promise<void>[] = [];\n\t\t\tfor (const [ln, pg] of Object.entries(this.#hPages)) {\n\t\t\t\tif (sDoTrans.has(ln)) {pg.transPage(aPrm); continue}\n\n\t\t\t\t// transしないために交換する\n\t\t\t\tconst {fore: {ctn: f}, back: {ctn: b}} = pg;\n\t\t\t\tconst idx = this.#fore.getChildIndex(b);\n\t\t\t\tthis.#fore.removeChild(b);\n\t\t\t\tthis.#back.removeChild(f);\n\t\t\t\tthis.#fore.addChildAt(f, idx);\n\t\t\t\tthis.#back.addChildAt(b, idx);\n\t\t\t}\n\t\t\tvoid Promise.allSettled(aPrm).then(()=> {\n\t\t\t\tthis.#fore.visible = true;\n\t\t\t\tthis.#back.visible = false;\t// 再び非表示の裏方に(直前までforeだった)\n\t\t\t\tthis.#spTransBack.visible = false;\n\t\t\t\tthis.#spTransFore.visible = false;\n\n\t\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t\t});\n\t\t};\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\t\tthis.#spTransFore.filters = [];\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\t// 一瞬切り替え\n\t\tconst time = argChk_Num(hArg, 'time', 0);\n\t\tif (time === 0 || this.#evtMng.isSkipping) {comp(); return false}\n\n\n\t\tconst aBackTransAfter: Sprite[] = [];\n\t\tconst aBack = this.#aLayName.map(ln=> {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tconst lay = sDoTrans.has(ln) ?back :fore;\n\t\t\tif (lay.ctn.visible) aBackTransAfter.push(lay.ctn);\n\t\t\treturn lay;\n\t\t});\n\t\tconst {ticker, renderer} = this.appPixi;\n\t\trenderer.render(this.#back, {renderTexture: this.#rtTransBack});\t// clear: true\n\n\t\tlet fncRenderBack = ()=> {\n\t\t\tfor (const ctn of aBackTransAfter) renderer.render(\n\t\t\t\tctn,\n\t\t\t\t{renderTexture: this.#rtTransBack, clear: false}\n\t\t\t);\n\t\t};\n\t\tif (! aBack.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderBack;\t// 動きがないなら最初に一度\n\t\t\tfncRenderBack = ()=> {fncRenderBack = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\n\t\tconst render = ()=> renderer.render(this.#fore, {renderTexture: this.#rtTransFore});\t// clear: true\n\t\trender();\n\t\tlet fncRenderFore = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\trender();\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tif (! aLayFore.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tconst fncRender = ()=> {\n\t\t\tfncRenderBack();\n\t\t\tthis.#spTransBack.visible = true;\n\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTransFore.visible = true;\n\t\t};\n\n\n\t\t// クロスフェード\n\t\tconst {glsl, rule} = hArg;\n\t\tconst comp2 = ()=> {ticker.remove(fncRender); comp()};\n\t\tif (! glsl && ! rule) {\n\t\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {alpha: 0}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ });\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Filter使用系(デフォルト値を glsl 属性で上書き可能)\n\t\tconst uniforms = {\n\t\t\trule\t: Texture.EMPTY,\n\t\t\tvague\t: argChk_Num(hArg, 'vague', 0.04),\n\t\t\ttick\t: 0.0,\n\t\t};\n\t\tthis.#spTransFore.filters = [new Filter(\n\t\t\tundefined,\n\t\t\tglsl ?? LayerMng.#srcRuleTransFragment,\n\t\t\tuniforms,\n\t\t)];\n\t\tconst tw = CmnTween.tween(TW_NM_TRANS, hArg, uniforms, {tick: 1}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ }, ! rule);\n\t\tif (! rule) {\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// ルール画像あり\n\t\tconst sm = new SpritesMng(rule, undefined, sp=> {\n\t\t\tuniforms.rule = sp.texture;\n\t\t\tsp.destroy();\n\n\t\t\ttw.start();\n\t\t\tticker.add(fncRender);\n\t\t}, isStop=> {if (isStop) this.main.resume()});\n\t\treturn sm.ret;\n\t}\n\n\t#getLayers(layer = ''): string[] {return layer ?layer.split(',') :this.#aLayName}\n\t#foreachLayers(hArg: TArg, fnc: (ln: string, $pg: Pages)=> void): readonly string[] {\n\t\tconst aLn = this.#getLayers(hArg.layer);\n\t\tfor (const ln of aLn) {\n\t\t\tconst pg = this.#hPages[ln];\n\t\t\tif (! pg) throw `存在しないlayer【${ln}】です`;\n\n\t\t\tfnc(ln, pg);\n\t\t}\n\n\t\treturn aLn;\n\t}\n\t#sortLayers(layers = ''): string[] {\n\t\treturn this.#getLayers(layers)\n\t\t.sort((a, b)=> {\n\t\t\tconst ai = this.#fore.getChildIndex(this.#hPages[a]!.fore.ctn);\n\t\t\tconst bi = this.#fore.getChildIndex(this.#hPages[b]!.fore.ctn);\n\t\t\tif (ai < bi) return -1;\n\t\t\tif (ai > bi) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tsetAllStyle2TxtLay(style: string) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst l = this.#hPages[ln]!.fore;\n\t\t\tif (l instanceof TxtLayer) l.lay({style});\t// 必要最小限設定なので\n\t\t\t//\t... l.cssText = style;\n\t\t}\n\t}\n\n\t//MARK: 画面を揺らす\n\t#quake(hArg: TArg) {\n\t\tif (argChk_Num(hArg, 'time', NaN) === 0) return false;\n\n\t\tconst aLayCtn = this.#getLayers(hArg.layer)\n\t\t.map(ln=> this.#hPages[ln]!.fore.ctn);\n\t\tconst {renderer, ticker} = this.appPixi;\n\t\tthis.#rtTransFore.resize(CmnLib.stageW, CmnLib.stageH);\n\t\tconst fncRender = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\tfor (const c of aLayCtn) renderer.render(\n\t\t\t\tc, {renderTexture: this.#rtTransFore, clear: false}\n\t\t\t);\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tthis.#spTransFore.visible = true;\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\tconst h = uint(argChk_Num(hArg, 'hmax', 10));\n\t\tconst v = uint(argChk_Num(hArg, 'vmax', 10));\n\t\tconst fncH = h === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.x = Math.round(Math.random()* h*2) -h};\n\t\tconst fncV = v === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.y = Math.round(Math.random()* v*2) -v};\n\t\tthis.#spTransFore.filters = [];\n\n\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {x: 0, y: 0}, ()=> {fncH(); fncV()}, ()=> {\n\t\t\tticker.remove(fncRender);\n\t\t\t\t// transなしでもadd()してなくても走るが、構わないっぽい。\n\t\t\tthis.#fore.visible = true;\n\t\t\tthis.#spTransFore.visible = false;\n\t\t\tthis.#spTransFore.x = 0;\t// 必須、onUpdate は toの値にしてくれない\n\t\t\tthis.#spTransFore.y = 0;\n\n\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t}, ()=> { /* empty */ });\n\t\tticker.add(fncRender);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: トゥイーン開始\n\t#tsy(hArg: TArg) {\n\t\tconst {layer, render, name} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\n\t\tconst pg = this.#hPages[this.#argChk_layer(hArg)]!;\n\t\tconst lay = pg.fore;\n\n\t\tlet finishBlendLayer = ()=> { /* empty */ };\n\t\tif (render) {\n\t\t\tif (this.#evtMng.isSkipping) lay.renderStart(true);\n\t\t\telse {\n\t\t\t\tlay.renderStart(false);\n\t\t\t\tfinishBlendLayer = ()=> lay.renderEnd();\n\t\t\t}\n\t\t}\n\n\t\tconst hTo = CmnTween.cnvTweenArg(hArg, lay);\n\t\tconst arrive = argChk_Boolean(hArg, 'arrive', false);\n\t\tconst backlay = argChk_Boolean(hArg, 'backlay', false);\n\t\tconst spBack = pg.back.ctn;\t// fore, back が変わる恐れで外へ\n\t\tCmnTween.tween(name ?? layer, hArg, lay, CmnTween.cnvTweenArg(hArg, lay), ()=> { /* empty */ }, finishBlendLayer, ()=> {\n\t\t\tif (arrive) Object.assign(lay, hTo);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\tif (backlay) for (const nm of CmnTween.aLayerPrpNm) (<any>spBack)[nm] = lay[nm];\n\t\t});\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\n\t\tif ('filter' in hArg) {\n\t\t\tlay.ctn.filters = [Layer.bldFilters(hArg)];\n\t\t\tlay.aFltHArg = [hArg];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: フィルター追加\n\t#add_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#add_filter2(pg.fore, hArg);\n\t\t\t\tthis.#add_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#add_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#add_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\ts.filters ??= [];\n\t\ts.filters = [...s.filters, Layer.bldFilters(hArg)];\n\t\tl.aFltHArg.push(hArg);\n\t}\n\n\t//MARK: フィルター全削除\n\t#clear_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tconst f = pg.fore;\n\t\t\t\tconst b = pg.back;\n\t\t\t\tf.ctn.filters = null;\n\t\t\t\tb.ctn.filters = null;\n\t\t\t\tf.aFltHArg = [];\n\t\t\t\tb.aFltHArg = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tl.ctn.filters = null;\n\t\t\tl.aFltHArg = [];\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//MARK: フィルター個別切替\n\t#enable_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#enable_filter2(pg.fore, hArg);\n\t\t\t\tthis.#enable_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#enable_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#enable_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\tif (! s.filters) throw 'フィルターがありません';\n\n\t\tconst i = uint(argChk_Num(hArg, 'index', 0));\n\t\tconst len = s.filters.length;\n\t\tif (len <= i) throw `フィルターの個数(${String(len)})を越えています`;\n\n\t\tl.aFltHArg[i]!.enabled =\n\t\ts.filters[i]!.enabled = argChk_Boolean(hArg, 'enabled', true);\n\t}\n\n\n//\t// 文字・文字レイヤ\n\t//MARK: 文字を追加する\n\t#ch(hArg: TArg) {\n\t\tconst {text} = hArg;\n\t\tif (! text) throw 'textは必須です';\n\n\t\tconst tl = this.#getTxtLayer(hArg);\n\t\tdelete hArg.text;\t// [graph]時、次行がルビ文法でトラブったので\n\t\tthis.setNormalChWait();\n\t\tif (this.#evtMng.isSkipping) hArg.wait = 0;\n\t\telse if ('wait' in hArg) argChk_Num(hArg, 'wait', NaN);\n\n\t\tthis.#cmdTxt('add|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), tl);\n\t\t\t// [ch style]用\n\n\t\tconst record = argChk_Boolean(hArg, 'record', true);\n\t\tconst doRecLog = this.val.doRecLog();\n\t\t// [ch text=\"\"]に改行を含められる方法\n\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-275.html\n\t\tif (! record) this.val.setVal_Nochk('save', 'sn.doRecLog', record);\n\t\ttl.tagCh(text.replaceAll('[r]', '\\n'));\n\t\tthis.val.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\n\t\tthis.#cmdTxt('add_close|', tl);\t// [ch style]用\n\n\t\treturn false;\n\t}\n\n\t#getTxtLayer = (_hArg: TArg): TxtLayer=> {this.#chkTxtLay(); throw 0};\n\t#$getTxtLayer(hArg: TArg): TxtLayer {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst lay = pg.getPage(hArg);\n\t\tif (! (lay instanceof TxtLayer)) throw ln +'はTxtLayerではありません';\n\n\t\treturn lay;\n\t}\n\tsetNormalChWait(): void {TxtLayer.msecChWait = this.scrItr.normalWait}\n\n\n\t//MARK: 操作対象のメッセージレイヤの指定\n\t#current = (_hArg: TArg): boolean=> {this.#chkTxtLay(); throw 0};\n\t#$current(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tif (! layer) throw '[current] layerは必須です';\n\n\t\tconst lay = this.#hPages[layer];\n\t\tif (! lay || ! (lay.getPage(hArg) instanceof TxtLayer)) throw `${layer}はTxtLayerではありません`;\n\t\tthis.#pgTxtlay = lay;\n\n\t\tthis.#log.pagebreak();\t// カレント変更前に現在の履歴を保存\n\t\tthis.#curTxtlay = layer;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.mesLayer', layer);\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.isCur = (<TxtLayer>back).isCur = ln === layer;\n\t\t}\n\n\t\treturn false;\n\t}\n\tget currentTxtlayForeNeedErr(): TxtLayer {\n\t\tthis.#chkTxtLay();\n\t\treturn this.currentTxtlayFore!;\n\t}\n\tget currentTxtlayFore(): TxtLayer | null {\n\t\tif (! this.#pgTxtlay) return null;\n\n\t\treturn <TxtLayer>this.#pgTxtlay.fore;\n\t}\n\t#pgTxtlay\t: Pages | undefined\t= undefined;\t// カレントテキストレイヤ\n\t#chkTxtLay\t: ()=> void\t= ()=> {throw '文字レイヤーがありません。文字表示や操作する前に、[add_lay layer=(レイヤ名) class=txt]で文字レイヤを追加して下さい'};\n\n\t#argChk_layer(hArg: TArg, def = ''): string {\n\t\tconst ln = hArg.layer ?? def;\n\t\tif (ln.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (! (ln in this.#hPages)) throw '属性 layer【'+ ln +'】が不正です。レイヤーがありません';\n\n\t\thArg.layer = ln;\n\t\treturn ln;\n\t}\n\n\n\trecPagebreak() {this.#log.pagebreak()}\n\n\n\t//MARK: 文字消去\n\t#clear_text(hArg: TArg) {\n\t\tconst tf = this.#getTxtLayer(hArg);\n\t\tif (hArg.layer === this.#curTxtlay && hArg.page === 'fore') this.#log.pagebreak();\t// 改ページ、クリア前に\n\t\ttf.clearText();\n\t\treturn false;\n\t}\n\n\n\t//MARK: ハイパーリンクの終了\n\t#endlink(hArg: TArg) {this.#cmdTxt('endlink|', this.#getTxtLayer(hArg)); return false}\n\n\t//MARK: ページ両面の文字消去\n\t#er(hArg: TArg) {\n\t\tif (argChk_Boolean(hArg, 'rec_page_break', true)) this.#log.pagebreak();\t// 改ページ、クリア前に\n\n\t\tif (this.#pgTxtlay) {\n\t\t\tthis.#pgTxtlay.fore.clearLay(hArg);\n\t\t\tthis.#pgTxtlay.back.clearLay(hArg);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t//MARK: インライン画像表示\n\t#graph(hArg: TArg) {\n\t\tif (! hArg.pic) throw '[graph] picは必須です';\n\n\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: ハイパーリンク\n\t#link(hArg: TArg) {\n\t\tif (! hArg.fn && ! hArg.label && ! hArg.url) throw 'fn,label,url いずれかは必須です';\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\n\t\thArg.style ??= 'background-color: rgba(255,0,0,0.5);';\n\t\thArg.style_hover ??= 'background-color: rgba(255,0,0,0.9);';\n\t\thArg.style_clicked ??= hArg.style;\n\t\tthis.#cmdTxt('link|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: 改行\n\t#r(hArg: TArg) {return this.#ch({...hArg, text: '\\n'})}\n\n\t//MARK: 文字列と複数ルビの追加\n\t#ruby2(hArg: TArg) {\n\t\tconst {t, r} = hArg;\n\t\tif (! t) throw '[ruby2] tは必須です';\n\t\tif (! r) throw '[ruby2] rは必須です';\n\n\t\thArg.text = '|'+ encodeURIComponent(t) +'《'+ encodeURIComponent(r) +'》';\n\t\tdelete hArg.t;\n\t\tdelete hArg.r;\n\t\treturn this.#ch(hArg);\n\t}\n\n\n\t//MARK: インラインスタイル設定\n\t#span(hArg: TArg) {\n\t\tthis.#cmdTxt('span|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: tcy縦中横を表示する\n\t#tcy(hArg: TArg) {\n\t\tif (! hArg.t) throw '[tcy] tは必須です';\n\n\t\tthis.#cmdTxt('tcy|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\n\t//MARK: レイヤのダンプ\n\t#dump_lay({layer}: TArg) {\n\t\tconsole.group('🥟 [dump_lay]');\n\t\tfor (const ln of this.#getLayers(layer)) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\ttry {\n\t\t\t\tconsole.info(`%c${fore.name.slice(0, -7)} %o`, `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`,\n\t\t\t\tJSON.parse(`{\"back\":{${back.dump()}}, \"fore\":{${fore.dump()}}}`));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('dump_lay err:%o', e);\n\t\t\t\tconsole.error(` back:${back.dump()}`);\n\t\t\t\tconsole.error(` fore:${fore.dump()}`);\n\t\t\t}\n\t\t}\n\t\tconsole.groupEnd();\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: イベント有無の切替\n\t#enable_event(hArg: TArg) {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst v = argChk_Boolean(hArg, 'enabled', true);\n\t\tthis.#getTxtLayer(hArg).enabled = v;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ ln +'.enabled', v);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: ボタンを表示\n\t#button(hArg: TArg) {\n\t\tPages.argChk_page(hArg, 'back');\t// チェックしたいというよりデフォルトをbackに\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\t\t\t// fn省略時、画像ボタンはロード後という後のタイミングで scrItr.scriptFn を\n\t\t\t// 参照してしまうので\n\t\tvoid this.#getTxtLayer(hArg).addButton(hArg);\t// hArg[':id_tag'] も設定\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn false;\n\t}\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\trecord(): any {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst o: any = {};\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst pg = this.#hPages[ln]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\to[ln] = {\n\t\t\t\tcls: pg.cls,\n\t\t\t\tfore: pg.fore.record(),\n\t\t\t\tback: pg.back.record(),\n\t\t\t};\n\t\t}\n\t\treturn o;\n\t}\n\tplayback($hPages: T_HPage): Promise<void>[] {\n\t\t// これを先に。save:const.sn.sLog がクリアされてしまう\n\t\tthis.#log.playback();\n\n\t\tconst aPrm: Promise<void>[] = [];\n\t\tconst aSort: {ln: string, idx: number}[] = [];\n\t\tfor (const [ln, {fore, fore: {idx}, back, cls}] of Object.entries($hPages)) {\t// 引数で言及の無いレイヤはそのまま。特に削除しない\n\t\t\taSort.push({ln, idx});\n\t\t\tconst ps = this.#hPages[ln] ??= new Pages(ln, cls, this.#fore, this.#back, {}, this.sys, this.val, {isWait: false});\n\t\t\tps.fore.playback(fore, aPrm);\n\t\t\tps.back.playback(back, aPrm);\n\t\t}\n\n\t\tconst len = this.#fore.children.length;\n\t\taPrm.push(new Promise(re=> {\t// 若い順にsetChildIndex()\n\t\t\tfor (const {ln, idx} of aSort.sort(({idx: a}, {idx: b})=> a === b ?0 :a < b ?-1 :1)) {\n\t\t\t\tconst pg = this.#hPages[ln];\n\t\t\t\tif (! pg) continue;\n\n\t\t\t\tconst i = len > idx ?idx :len -1;\n\t\t\t\tconst {fore, back} = pg;\n\t\t\t\tthis.#fore.setChildIndex(fore.ctn, i);\n\t\t\t\tthis.#back.setChildIndex(back.ctn, i);\n\t\t\t}\n\t\t\tre();\n\t\t}));\n\t\treturn aPrm;\n\t}\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LayerMng.js","names":["cls: string","hArg: TArg","sys: SysBase","val: T_Variable","ret: {isWait: boolean}","#pg","#cfg","#sys","#main","appPixi: Application","val: T_Variable","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#evtMng","#hIfrm","#hIfrmVisibleBk","#rect","#hDisabled","#loadPic2Img","#hEncImgOUrl","#hARetImg","win: any","#zIdx","hNow: {[val_name: string]: number}","hTo: {[val_name: string]: number}","oCfg: T_CFG","hTag: T_HTag","val: T_Variable","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","#stage","#frmMng","#bg_color","#log","#elc","cfg: Config","hTag: T_HTag","appPixi: Application","val: T_Variable","main: T_Main","scrItr: ScriptIterator","sys: SysBase","#modeLnSub","#aLayName","#hPages","#evtMng","tid: NodeJS.Timeout | undefined","#loadplugin","#snapshot","#snapshot4proc","#snapshot4app","#snapshot4web","#add_lay","#clear_lay","#lay","#trans","#quake","#tsy","#add_filter","#clear_filter","#enable_filter","#ch","#clear_text","#current","#endlink","#er","#graph","#link","#r","#ruby2","#span","#tcy","#dump_lay","#enable_event","#button","#cmdTxt","#fore","#back","#spTransBack","#spTransFore","#foreachRedrawTxtLayBack","#hProcDbgRes","#selectNode","#curTxtlay","#modeLn","#grpCover","ret: [Sprite, boolean]","#getLayers","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","#rtTransFore","aPrm: Promise<void>[]","aBackTransAfter: Sprite[]","#add_filter2","#enable_filter2","#pgTxtlay","o: any","aSort: {ln: string, idx: number}[]"],"sources":["../src/sn/Pages.ts","../src/sn/FrameMng.ts","../src/sn/Log.ts","../src/sn/LayerMng.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\nimport type {TArg} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {Layer} from './Layer';\nimport type {SysBase} from './SysBase';\nimport {argChk_Boolean} from './CmnLib';\n\nimport type {Container} from 'pixi.js';\n\n\nexport class Pages {\n\t#pg: {fore: Layer, back: Layer};\n\n\tconstructor(layname: string, readonly cls: string, fore: Container, back: Container, readonly hArg: TArg, readonly sys: SysBase, readonly val: T_Variable, readonly ret: {isWait: boolean}) {\n\t\tconst fncF = sys.hFactoryCls[cls];\n\t\tif (! fncF) throw `属性 class【${cls}】が不正です`;\n\n\t\tconst f = fncF();\n\t\tconst b = fncF();\n\t\tf.layname =\n\t\tb.layname = layname;\n\t\tconst nm = hArg[':id_tag'] = `layer:${layname} cls:${cls} page:`;\n\t\tf.ctn.name = f.name = nm +'A';\n\t\tb.ctn.name = b.name = nm +'B';\n\t\tfore.addChild(f.ctn);\n\t\tback.addChild(b.ctn);\n\t\targChk_Boolean(hArg, 'visible', true);\n\t\targChk_Boolean(hArg, 'visible', true);// SKYNovelではデフォルトはtrueとする\n\t\tret.isWait = f.lay(hArg) || b.lay(hArg);\n\t\tthis.#pg = {fore: f, back: b};\n\t\tback.visible = false;\n\n\t\t// 組み込み変数\n\t\tconst valnm = `const.sn.lay.${layname}`;\n\t\tval.setVal_Nochk('tmp', valnm, true);\n\t\tval.defTmp(valnm +'.fore.alpha', ()=> this.#pg.fore.alpha);\n\t\tval.defTmp(valnm +'.back.alpha', ()=> this.#pg.back.alpha);\n\t\tval.defTmp(valnm +'.fore.height', ()=> this.#pg.fore.height);\n\t\tval.defTmp(valnm +'.back.height', ()=> this.#pg.back.height);\n\t\tval.defTmp(valnm +'.fore.visible', ()=> this.#pg.fore.ctn.visible);\n\t\tval.defTmp(valnm +'.back.visible', ()=> this.#pg.back.ctn.visible);\n\t\tval.defTmp(valnm +'.fore.width', ()=> this.#pg.fore.width);\n\t\tval.defTmp(valnm +'.back.width', ()=> this.#pg.back.width);\n\t\tval.defTmp(valnm +'.fore.x', ()=> this.#pg.fore.x);\n\t\tval.defTmp(valnm +'.back.x', ()=> this.#pg.back.x);\n\t\tval.defTmp(valnm +'.fore.y', ()=> this.#pg.fore.y);\n\t\tval.defTmp(valnm +'.back.y', ()=> this.#pg.back.y);\n\t}\n\tdestroy() {\n\t\tthis.#pg.fore.destroy();\n\t\tthis.#pg.back.destroy();\n\t}\n\n\treadonly lay = (hArg: TArg)=> this.getPage(hArg).lay(hArg);\n\treadonly getPage = (hArg: TArg)=>\n\t\tPages.argChk_page(hArg, 'fore') !== 'back'\n\t\t\t? this.#pg.fore\n\t\t\t: this.#pg.back;\n\tstatic\targChk_page(hash: TArg, def: string): string {\n\t\tconst v = hash.page ?? def;\n\t\tif (v === 'fore' || v === 'back') {hash.page = v; return v}\n\n\t\tthrow Error('属性 page【'+ v +'】が不正です');\n\t}\n\tget fore(): Layer {return this.#pg.fore}\n\tget back(): Layer {return this.#pg.back}\n\n\ttransPage(aPrm: Promise<void>[]): void {\n\t\t[this.#pg.back, this.#pg.fore] = [this.#pg.fore, this.#pg.back];\n\t\tthis.#pg.back.copy(this.#pg.fore, aPrm);\n\t}\n\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 {CmnLib, type IEvtMng, argChk_Boolean, argChk_Num} from './CmnLib';\nimport {CmnTween} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_GetFrm} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport type {Config} from './Config';\nimport {SEARCH_PATH_ARG_EXT} from './ConfigBase';\nimport {Reading} from './Reading';\n\nimport {type Application, Loader, LoaderResource} from 'pixi.js';\n\n\nexport class FrameMng implements T_GetFrm {\n\tstatic\t#cfg\t: Config;\n\tstatic\t#sys\t: SysBase;\n\tstatic\t#main\t: T_Main;\n\tstatic\tinit(cfg: Config, sys: SysBase, main: T_Main): void {\n\t\tFrameMng.#cfg = cfg;\n\t\tFrameMng.#sys = sys;\n\t\tFrameMng.#main = main;\n\t}\n\n\tconstructor(hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable) {\n\t\t//\tHTMLフレーム\n\t\thTag.add_frame\t\t= o=> this.#add_frame(o);\t// フレーム追加\n\t\thTag.let_frame\t\t= o=> this.#let_frame(o);\t// フレーム変数を取得\n\t\thTag.set_frame\t\t= o=> this.#set_frame(o);\t// フレーム変数に設定\n\t\thTag.frame\t\t\t= o=> this.#frame(o);\t\t// フレームに設定\n\t\thTag.tsy_frame\t\t= o=> this.#tsy_frame(o);\t// フレームをトゥイーン開始\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {this.#evtMng = evtMng}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrm\t: {[id: string]: HTMLIFrameElement} = Object.create(null);\n\tdestroy() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tfor (const f of Object.values(this.#hIfrm)) f.parentElement!.removeChild(f);\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrm = Object.create(null);\n\t}\n\n\thideAllFrame() {\t// (表示・非表示を保存しつつ)すべて非表示に\n\t\tfor (const [id, {style}] of Object.entries(this.#hIfrm)) {\n\t\t\tthis.#hIfrmVisibleBk[id] = style.display !== 'none';\n\t\t\tstyle.display = 'none';\n\t\t}\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hIfrmVisibleBk: {[id: string]: boolean} = Object.create(null);\n\trestoreAllFrame() {\t// 保存していた表示・非表示を回復\n\t\tfor (const [id, v] of Object.entries(this.#hIfrmVisibleBk)) {\n\t\t\tconst f = this.#hIfrm[id];\n\t\t\tif (f) f.style.display = v ?'inline' :'none';\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tthis.#hIfrmVisibleBk = Object.create(null);\n\t}\n\n\t//\tHTMLフレーム\n\t// フレーム追加\n\t#add_frame(hArg: TArg) {\n\t\tconst {id, src, alpha: a=1, scale_x: sx=1, scale_y: sy=1, rotate: r=0,} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tif (! src) throw 'srcは必須です';\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】はすでにあります`;\n\n\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\tconst b_color = hArg.b_color ?` background-color: ${hArg.b_color};` :'';\n\t\tconst rct = this.#rect(hArg);\n\t\t// 【sandbox=\"allow-scripts allow-same-origin\"】は必要なのに警告が出るので削除\n\t\tFrameMng.#main.cvs.insertAdjacentHTML('beforebegin', `<iframe id=\"${id}\" style=\"opacity: ${String(a)}; ${b_color} position: absolute; left:${\n\t\t\tString(FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale)\n\t\t}px; top: ${\n\t\t\tString(FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale)\n\t\t}px; z-index: 1; border: 0px; overflow: hidden; display: ${\n\t\t\tv ?'inline' :'none'\n\t\t}; transform: scale(${String(sx)}, ${String(sy)}) rotate(${\n\t\t\tString(r)}deg);\" width=\"${\n\t\t\tString(rct.width *FrameMng.#sys.cvsScale)\n\t\t}\" height=\"${\n\t\t\tString(rct.height *FrameMng.#sys.cvsScale)\n\t\t}\"></iframe>`);\n\n\t\tconst RPN_ADD_FRAME = Reading.procID +`add_frame id:${id}`;\n\t\tReading.beginProc(RPN_ADD_FRAME);\n\t\tconst url = FrameMng.#cfg.searchPath(src, SEARCH_PATH_ARG_EXT.HTML);\n\t\tconst ld = (new Loader)\n\t\t.add({name: src, url, xhrType: LoaderResource.XHR_RESPONSE_TYPE.TEXT});\n\t\tif (FrameMng.#sys.arg.crypto) ld.use(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t(res, next)=> void FrameMng.#sys.dec(res.extension, res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`[add_frame]Html ロード失敗です src:${res.name} ${String(e)}`, false);\n\t\t\t\tnext();\n\t\t\t})\n\t\t);\n\t\tld.load((_ldr, hRes)=> {\n\t\t\tconst f = <HTMLIFrameElement>document.getElementById(id);\n\t\t\tthis.#hIfrm[id] = f;\n\t\t\tthis.#hDisabled[id] = false;\n\n\t\t\tconst iLastSep = url.lastIndexOf('/') +1;\n\t\t\tconst path_parent = url.slice(0, iLastSep);\n\t\t\tconst path_pa_pa = path_parent.slice(0, iLastSep);\n\t\t\tf.srcdoc = String(hRes[src]?.data)\t// .src はふりーむで問題発生\n\t\t\t.replace('sn_repRes();', '')\t// これはいずれやめる\n\t\t\t.replaceAll(\n\t\t\t\t/\\s(?:src|href)=([\"'])(\\S+?)\\1/g,\t// 【\\s】が大事、data-src弾く\n\t\t\t\t(m, br: string, v: string)=> v.startsWith('../')\n\t\t\t\t? path_pa_pa + m.slice(3)\n\t\t\t\t: m.replace('./', '')\t// 「./」は無視\n\t\t\t\t\t.replace(br, br + path_parent)\n\t\t\t);\n\n\t\t\tif (f.srcdoc.includes('true/*WEBP*/;')) f.srcdoc = f.srcdoc.replaceAll(\n\t\t\t\t/data-src=\"(.+?\\.)(?:jpe?g|png)/g,\n\t\t\t\t(_, p1: string)=> `data-src=\"${p1}webp`\n\t\t\t);\n\n\t\t\tf.onload = ()=> {\t// 一度変数に入れてここで設定するのはFirefox対応。ifrm.onloadが二度呼ばれる!\n\t\t\t\tReading.endProc(RPN_ADD_FRAME);\n\n\t\t\t\t// 組み込み変数\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn, true);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst win = f.contentWindow!;\n\t\t\t\tthis.#evtMng.resvFlameEvent(<HTMLBodyElement>win.document.body);\n\t\t\t\t// sn_repRes()をコール。引数は画像ロード処理差し替えメソッド\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\t\t(<any>win).sn_repRes?.((i: HTMLImageElement)=> FrameMng.#loadPic2Img(i.dataset.src ?? '', i));\n\t\t\t};\n\t\t});\n\t\treturn true;\n\t}\n\t#hDisabled\t: {[id: string]: boolean}\t= {};\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tgetFrmDisabled(id: string): boolean {return this.#hDisabled[id]!}\n\t#rect(hArg: TArg): DOMRect {\n\t\tconst a = {...hArg};\n\t\treturn new DOMRect(\n\t\t\targChk_Num(a, 'x', 0),\n\t\t\targChk_Num(a, 'y', 0),\n\t\t\targChk_Num(a, 'width', CmnLib.stageW),\n\t\t\targChk_Num(a, 'height', CmnLib.stageH),\n\t\t);\n\t}\n\n\tstatic\t#loadPic2Img(src: string, img: HTMLImageElement, onload?: (img2: HTMLImageElement)=> void) {\n\t\tconst oUrl = this.#hEncImgOUrl[src];\n\t\tif (oUrl) {\n\t\t\timg.src = oUrl;\n\t\t\tif (onload) img.onload = ()=> onload(img);\n\t\t\treturn;\n\t\t}\n\n\t\tconst aImg = this.#hARetImg[src];\n\t\tif (aImg) {aImg.push(img); return}\t// load 終了前の駆け込み対応\n\t\tthis.#hARetImg[src] = [img];\n\n\t\tconst [srcNoPrm='', Prm=''] = src.split('?');\n\t\tconst path = FrameMng.#cfg.searchPath(srcNoPrm, SEARCH_PATH_ARG_EXT.SP_GSM);\n\t\tconst ld2 = (new Loader)\n\t\t.add({name: src, url: path, xhrType: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,});\n\n\t\t// === vite-electron 用コード ===\n\t\tif (FrameMng.#sys.use4ViteElectron(src, path, ld2, FrameMng.#main)) { /* empty */ }\n\t\telse\n\t\tif (FrameMng.#sys.arg.crypto && path.endsWith('.bin')) ld2.use((res, next)=> {\n\t\t\tif (res.extension !== 'bin') {next(); return}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tvoid FrameMng.#sys.decAB(res.data)\n\t\t\t.then(r=> {\n\t\t\t\tres.data = r;\n\t\t\t\tif (r instanceof HTMLImageElement) {\n\t\t\t\t\tres.type = LoaderResource.TYPE.IMAGE;\n\n\t\t\t\t\t// これをすると二度目のフレーム画面表示で画像が壊れる\n\t\t\t\t\t// next();\n\t\t\t\t\t// URL.revokeObjectURL(r.src);\n\t\t\t\t\t// return;\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t})\n\t\t\t.catch((e: unknown)=> {\n\t\t\t\tFrameMng.#main.errScript(`FrameMng loadPic ロード失敗です fn:${res.name} ${String(e)}`, false)\n\t\t\t\tnext();\n\t\t\t});\n\t\t});\n\t\tld2.load((_ldr, hRes)=> {\n\t\t\tfor (const [s2, {data: {src}}] of Object.entries(hRes)) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n\t\t\t\tconst u2 = this.#hEncImgOUrl[s2] = src + (\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tsrc.startsWith('blob:') || src.startsWith('data:')\n\t\t\t\t\t?'' :Prm ? '?'+ Prm: ''\n\t\t\t\t);\n\t\t\t\tconst ri = this.#hARetImg[s2];\n\t\t\t\tif (ri) for (const i of ri) {\n\t\t\t\t\ti.src = u2;\n\t\t\t\t\tif (onload) i.onload = ()=> onload(i);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hARetImg[s2];\n\t\t\t//\tURL.revokeObjectURL(u2);// 画面遷移で毎回再生成するので\n\t\t\t}\n\t\t});\n\t}\n\tstatic\t#hARetImg\t\t: {[src: string]: HTMLImageElement[]}\t= {};\n\tstatic\t#hEncImgOUrl\t: {[src: string]: string}\t\t\t\t= {};\n\n\n\tcvsResize() {\t// NOTE: フォントサイズはどう変更すべきか\n\t\tfor (const [id, f] of Object.entries(this.#hIfrm)) {\n\t\t\tconst vn = 'const.sn.frm.'+ id;\n\t\t\tconst x = Number(this.val.getVal(vn +'.x'));\n\t\t\tconst y = Number(this.val.getVal(vn +'.y'));\n\t\t\tconst w = Number(this.val.getVal(vn +'.width'));\n\t\t\tconst h = Number(this.val.getVal(vn +'.height'));\n\t\t\tf.style.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.style.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tf.width = String(w *FrameMng.#sys.cvsScale);\n\t\t\tf.height = String(h *FrameMng.#sys.cvsScale);\n\t\t}\n\t}\n\n\t// フレーム変数を取得\n\t#let_frame(hArg: TArg) {\n\t\tconst {id, var_name} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst win = f.contentWindow!;\n\t\tif (! Object.hasOwn(win, var_name)) throw `frame【${id}】に変数/関数【${var_name}】がありません。変数は var付きにして下さい`;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst v = win[<keyof Window>var_name];\n\t\t// var変数 / 関数実行の戻り値 -> 組み込み変数\n\t\tthis.val.setVal_Nochk(\n\t\t\t'tmp',\n\t\t\tvn +'.'+ var_name,\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n\t\t\targChk_Boolean(hArg, 'function', false) ?v() :v\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t// フレーム変数に設定\n\t#set_frame(hArg: TArg) {\n\t\tconst {id, var_name, text} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`)) throw `frame【${id}】が読み込まれていません`;\n\t\tif (! var_name) throw 'var_nameは必須です';\n\t\tif (! text) throw 'textは必須です';\n\n\t\t// -> 組み込み変数\n\t\tthis.val.setVal_Nochk('tmp', vn +'.'+ var_name, text);\n\n\t\t// -> var変数に設定\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion\n\t\tconst win: any = f.contentWindow!;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\twin[var_name] = text;\n\n\t\treturn false;\n\t}\n\n\t// フレームに設定\n\t#zIdx = 1;\n\t#frame(hArg: TArg) {\n\t\tconst {id} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal('tmp:'+ vn)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst s = f.style;\n\t\tif (argChk_Boolean(hArg, 'float', false)) s.zIndex = String(++this.#zIdx);\n\t\telse if ('index' in hArg) s.zIndex = String(argChk_Num(hArg, 'index', 0));\n\t\telse if (hArg.dive) s.zIndex = String(-++this.#zIdx);\t// -は必要\n\n\t\tif ('alpha' in hArg) {\n\t\t\tconst a = s.opacity = String(hArg.alpha);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.alpha', a);\n\t\t}\n\t\tconst rct = this.#rect(hArg);\n\t\tif ('x' in hArg || 'y' in hArg) {\n\t\t\ts.left = `${String(\n\t\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\ts.top = `${String(\n\t\t\t\tFrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale\n\t\t\t)}px`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', rct.x);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', rct.y);\n\t\t}\n\t\tif ('scale_x' in hArg || 'scale_y' in hArg || 'rotate' in hArg) {\n\t\t\tconst sx = argChk_Num(hArg, 'scale_x', 1);\n\t\t\tconst sy = argChk_Num(hArg, 'scale_y', 1);\n\t\t\tconst r = argChk_Num(hArg, 'rotate', 0);\n\t\t\ts.transform = `scale(${String(sx)}, ${String(sy)}) rotate(${String(r)}deg)`;\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', sx);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', sy);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', r);\n\t\t}\n\t\tif ('width' in hArg) {\n\t\t\tf.width = String(rct.width *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', rct.width);\n\t\t}\n\t\tif ('height' in hArg) {\n\t\t\tf.height = String(rct.height *FrameMng.#sys.cvsScale);\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', rct.height);\n\t\t}\n\t\tif ('visible' in hArg) {\n\t\t\tconst v = argChk_Boolean(hArg, 'visible', true);\n\t\t\ts.display = v ?'inline' :'none';\n\t\t\tthis.val.setVal_Nochk('tmp', vn +'.visible', v);\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tif ('b_color' in hArg) s.backgroundColor = hArg.b_color!;\n\t\tif ('disabled' in hArg) {\n\t\t\tconst d = this.#hDisabled[id] = argChk_Boolean(hArg, 'disabled', true);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst b = f.contentDocument!.body;\n\t\t\tfor (const e of [\n\t\t\t\t...Array.from(b.getElementsByTagName('input')),\n\t\t\t\t...Array.from(b.getElementsByTagName('select')),\n\t\t\t]) e.disabled = d;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// フレームをトゥイーン開始\n\t#tsy_frame(hArg: TArg) {\n\t\tconst {id, alpha, x, y, scale_x, scale_y, rotate, width, height} = hArg;\n\t\tif (! id) throw 'idは必須です';\n\t\tconst f = <HTMLIFrameElement | null>document.getElementById(id);\n\t\tif (! f) throw `id【${id}】はフレームではありません`;\n\t\tconst vn = 'const.sn.frm.'+ id;\n\t\tif (! this.val.getVal(`tmp:${vn}`, 0)) throw `frame【${id}】が読み込まれていません`;\n\n\t\tconst hNow: {[val_name: string]: number} = {};\n\t\tif (alpha) hNow.a = Number(f.style.opacity);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thNow.x = Number(this.val.getVal(`tmp:${vn}.x`));\n\t\t\thNow.y = Number(this.val.getVal(`tmp:${vn}.y`));\n\t\t\thNow.sx = Number(this.val.getVal(`tmp:${vn}.scale_x`));\n\t\t\thNow.sy = Number(this.val.getVal(`tmp:${vn}.scale_y`));\n\t\t\thNow.r = Number(this.val.getVal(`tmp:${vn}.rotate`));\n\t\t}\n\t\tif (width) hNow.w = Number(this.val.getVal(`tmp:${vn}.width`));\n\t\tif (height) hNow.h = Number(this.val.getVal(`tmp:${vn}.height`));\n\t\tconst hArg2 = CmnTween.cnvTweenArg(hArg, hNow);\n\n\t\tconst hTo: {[val_name: string]: number} = {};\n\t\tlet fncA = (_d: {a: number})=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = d=> {\n\t\t\t\tf.style.opacity = String(d.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', d.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = (_d: {\n\t\t\tx: number;\n\t\t\ty: number;\n\t\t\tsx: number;\n\t\t\tsy: number;\n\t\t\tr: number;\n\t\t})=> { /* empty */ };\n\t\tconst rct = this.#rect(hArg2);\n\t\tif (x || y || scale_x || scale_y || rotate) {\n\t\t\thTo.x = rct.x;\n\t\t\thTo.y = rct.y;\n\t\t\thTo.sx = argChk_Num(hArg2, 'scale_x', 1);\n\t\t\thTo.sy = argChk_Num(hArg2, 'scale_y', 1);\n\t\t\thTo.r = argChk_Num(hArg2, 'rotate', 0);\n\t\t\tfncXYSR = d=> {\n\t\t\t\tf.style.left = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +d.x *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.top = `${String(\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +d.y *FrameMng.#sys.cvsScale\n\t\t\t\t)} px`;\n\t\t\t\tf.style.transform = `scale(${String(d.sx)}, ${String(d.sy)}) rotate(${String(d.r)}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', d.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', d.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', d.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', d.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', d.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = (_d: {w: number})=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = d=> {\n\t\t\t\tf.width = `${String(d.w *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', d.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = (_d: {h: number})=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = d=> {\n\t\t\t\tf.height = `${String(d.h *FrameMng.#sys.cvsScale)} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', d.h);\n\t\t\t};\n\t\t}\n\n\t\tthis.appPixi.stage.interactive = false;\n\t\tCmnTween.tween(`frm\\n${id}`, hArg, hNow, CmnTween.cnvTweenArg(hArg, hNow), d=> {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tfncA(d); fncXYSR(d); fncW(d); fncH(d);\n\t\t}, ()=> {this.appPixi.stage.interactive = true}, ()=> { /* empty */ });\n\n\t\treturn false;\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2025-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, T_HTag} from './Grammar';\nimport type {T_Variable} from './CmnInterface';\nimport type {T_CFG} from './ConfigBase';\n\n\nexport type T_LOG = {\n\trecText\t\t: (txt: string)=> void;\n\tpagebreak\t: ()=> void;\n};\n\ntype T_LOG_DATA = TArg & {\n\ttext\t: string;\t// 履歴文字列\n}\n\n\n// ログ管理\n//\t・要求仕様\n//\t\t[ch][rec_ch][rec_r][reset_rec] で履歴を記録・操作し、\n//\t\t変数 🦀const.sn.log.json を取得したときにいい感じの値を返す。\nexport class Log implements T_LOG {\n\t#LastLog\t: T_LOG_DATA\t= {text: ''};\t// 🌾\n\t#aLog\t\t: T_LOG_DATA[]\t= [];\t\t\t// 🍚\n\n\n\tconstructor(private readonly oCfg: T_CFG, private readonly hTag: T_HTag, private readonly val: T_Variable) {\n\t\thTag.rec_ch\t\t\t= o=> this.#rec_ch(o);\t\t// 履歴書き込み\n\t\thTag.rec_r\t\t\t= o=> this.#rec_r(o);\t\t// 履歴改行\n\t\thTag.reset_rec\t\t= o=> this.#reset_rec(o);\t// 履歴リセット\n\n\t\t// 履歴 JSON テキスト\n\t\t// 【内部変数】(ざっくりと)🦀 = 🍚this.#aLog + 🌾this.#LastLog\n\t\tval.defTmp('const.sn.log.json', ()=> {\n\t\t\t// HTML連結を一つにまとめる(始端終端のタグのみにする)\n\t\t\t//\ttext追加時ではなく、値を参照されるこのときまで遅らせて処理\n\t\t\tthis.#LastLog.text =\t// 🌾\n\t\t\tthis.#LastLog.text\n\t\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\t\tconst o = [...this.#aLog, this.#LastLog];\t// 🍚 + 🌾\n\t\t\treturn JSON.stringify(o);\t// 🦀\n\t\t});\n\t\tthis.recText('');\n\t}\n\n\t// [ch] からコールされる\n\t//\t[ch]\t\t// 文字を追加する\n\t\t// recText(text: string) コール\n\t\t// \t🌾this.#LastLog\t\t= {text};\t// 置換でよい\n\t\t// \t🍊save:const.sn.sLog = 🦀const.sn.log.json\t// これを起動したい\n\trecText(text: string) {\n\t\tthis.#LastLog.text = text;\t\t// 🌾 text は置換でよい\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',\t// 🍊 リプレイ時の回復用\n\t\t\tString(this.val.getVal('const.sn.log.json'))\t// これを起動したい\n\t\t);\n\t}\n\n\t//MARK: 履歴書き込み\n\t//\t🌾this.#LastLog = {...hArg, text: 🌾this.#LastLog.text};\n\t#rec_ch(hArg: TArg) {\n\t\tthis.#LastLog = {...hArg, text: this.#LastLog.text};\n\t\tif (! hArg.text) {\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog',// 🍊 リプレイ時の回復用\n\t\t\t\tString(this.val.getVal('const.sn.log.json'))// これを起動したい\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\thArg.record = true;\n\t\thArg.style ??= '';\n\t\thArg.style += 'display: none;';\t// gotxt内で削除し履歴に表示\n\t\thArg.wait = 0;\n\t\treturn this.hTag.ch(hArg);\t// この先は text, style, r_style 以外破棄されてしまうので注意\n\t}\n\n\t//MARK: 履歴改行\n\t#rec_r(hArg: TArg) {return this.#rec_ch({...hArg, text: '[r]'})}\n\n\t//MARK: 履歴リセット\n\t//\t以下をクリア。text で置き換え値を設定できる\n\t//\t🌾this.#LastLog\t\t= {text: hArg.text ?? ''};\n\t//\t🍚this.#aLog\t\t= []\n\t//\t🍊save:const.sn.sLog= hArg.text ?[{text:\"${hArg.text}\"}] : []\n\t#reset_rec(hArg: TArg) {\n\t\tthis.#aLog = [];\n\t\thArg.text ??= '';\n\t\tthis.#LastLog = {text: hArg.text};\t// 🌾\n\t\tthis.val.setVal_Nochk('save', 'const.sn.sLog', JSON.stringify([this.#LastLog]));\t// 🍊 リプレイ時の回復用\n\n\t\treturn false;\n\t}\n\n\t//MARK: 履歴改ページ\n\tpagebreak() {\n\t\tthis.#LastLog.text =\t// 🌾\n\t\tthis.#LastLog.text\n\t\t.replaceAll('</span><span class=\\'sn_ch\\'>', '');\n\n\t\tif (! this.#LastLog.text) return;\t//\t🌾this.#LastLog\n\n\t\tif (this.#aLog.push(this.#LastLog) > this.oCfg.log.max_len) this.#aLog = this.#aLog.slice(-this.oCfg.log.max_len);\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n\t//MARK: 履歴回復\n\t// save:const.sn.sLog からの復帰\n\tplayback() {\n\t\tthis.#aLog = <T_LOG_DATA[]>JSON.parse(String(this.val.getVal('save:const.sn.sLog')));\t\t// 🍚this.#aLog\t= 🍊 リプレイ時の回復用\n\t\tthis.#LastLog = {text: ''};\t\t// 🌾\n\t}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\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 {CmnLib, getDateStr, uint, type IEvtMng, argChk_Boolean, argChk_Num, addStyle, argChk_Color, parseColor} from './CmnLib';\nimport {CmnTween, TW_NM_TRANS} from './CmnTween';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Variable, T_Main, T_HPage, T_GetFrm, T_PropParser} from './CmnInterface';\nimport {Pages} from './Pages';\nimport {Layer} from './Layer';\nimport {GrpLayer} from './GrpLayer';\nimport {SpritesMng} from './SpritesMng';\nimport {type T_cmdTxt_JSON, TxtLayer} from './TxtLayer';\nimport {RubySpliter} from './RubySpliter';\nimport {TxtStage} from './TxtStage';\nimport {PROTOCOL_DL, PROTOCOL_USERDATA, type Config} from './Config';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {SysBase} from './SysBase';\nimport {FrameMng} from './FrameMng';\nimport {Button} from './Button';\nimport type {SoundMng} from './SoundMng';\nimport {DesignCast} from './DesignCast';\nimport {EventListenerCtn} from './EventListenerCtn';\nimport {Reading} from './Reading';\nimport {Log} from './Log';\n\nimport {Container, type Application, Graphics, Filter, RenderTexture, Sprite, autoDetectRenderer, Texture} from 'pixi.js';\n\n\nexport type IMakeDesignCast = (idc: DesignCast)=> void;\n\nexport type HPage = {[ln: string]: Pages};\n\nfunction cnvSArg(o: T_cmdTxt_JSON) {\n\t\t// わざと使う側で <T_cmdTxt_JSON> させる。そっちで不具合を見つけてもらう\n\treturn encodeURIComponent(JSON.stringify(o));\n}\n\n\nexport class LayerMng implements T_GetFrm {\n\treadonly\t#stage\t: Container;\n\t\t\t\t#fore\t= new Container;\n\t\t\t\t#back\t= new Container;\n\n\treadonly\t#frmMng\t\t: FrameMng;\n\treadonly\t#bg_color\t: number;\n\n\treadonly\t#log;\n\n\treadonly\t#elc\t\t= new EventListenerCtn;\n\n\t//MARK: コンストラクタ\n\tconstructor(private readonly cfg: Config, private readonly hTag: T_HTag, private readonly appPixi: Application, private readonly val: T_Variable, private readonly main: T_Main, private readonly scrItr: ScriptIterator, private readonly sys: SysBase, sndMng: SoundMng, prpPrs: T_PropParser) {\n\t\t// レスポンシブや回転・全画面切り替え・DevTools 表示切り替えの対応\n\t\tconst fncResizeLay = ()=> {\n\t\t\tsys.cvsResize();\n\t\t\tthis.cvsResizeDesign();\n\t\t\tif (this.#modeLnSub) for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResizeChildren();\n\t\t\t}\n\t\t\telse for (const ln of this.#aLayName) {\n\t\t\t\tthis.#hPages[ln]!.fore.cvsResize();\n\t\t\t}\n\n\t\t\tthis.#frmMng.cvsResize();\n\t\t\tthis.#evtMng.cvsResize();\n\t\t};\n\t\tif (CmnLib.isMobile) {\n\t\t\tthis.#elc.add(globalThis, 'orientationchange', fncResizeLay, {passive: true});\n\t\t}\n\t\telse {\n\t\t\tlet tid: NodeJS.Timeout | undefined = undefined;\n\t\t\tthis.#elc.add(globalThis, 'resize', ()=> {\n\t\t\t\tif (tid) return;\n\t\t\t\ttid = setTimeout(()=> {tid = undefined; fncResizeLay()}, 1000 /60 *10);\t// clearTimeout()不要と判断\n\t\t\t}, {passive: true});\n\t\t}\n\t\tsys.cvsResize();\n\n\t\tthis.#log = new Log(this.cfg.oCfg, hTag, val);\n\t\tTxtLayer.init(cfg, hTag, val, this.#log, me=> this.#hPages[me.layname]!.fore === me, appPixi);\n\t\tGrpLayer.init(main, cfg, appPixi, sys, sndMng, val);\n\t\tFrameMng.init(cfg, sys, main);\n\n\t\tthis.#frmMng = new FrameMng(hTag, appPixi, val);\n\n\t\t//\tシステム\n\t\thTag.loadplugin\t\t= o=> this.#loadplugin(o);\t// プラグインの読み込み\n\t\t//hTag.set_focus\t// EventMng.tsで定義\t \t// フォーカス移動\n\t\thTag.snapshot\t\t= o=> this.#snapshot(o);\t// スナップショット\n\t\tthis.#snapshot4proc = this.sys.isApp\n\t\t\t? (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4app(hArg, url, width, height, RPN_SNAPSHOT)\n\t\t\t: (hArg, url, width, height, RPN_SNAPSHOT)=> this.#snapshot4web(hArg, url, width, height, RPN_SNAPSHOT);\n\n\t\t//\tレイヤ共通\n\t\thTag.add_lay\t\t= o=> this.#add_lay(o);\t\t// レイヤを追加する\n\t\thTag.clear_lay\t\t= o=> this.#clear_lay(o);\t// レイヤ設定の消去\n\t\thTag.finish_trans\t= ()=> false;\t\t\t\t// トランス強制終了\n\t\thTag.lay\t\t\t= o=> this.#lay(o);\t\t\t// レイヤ設定\n\t\thTag.trans\t\t\t= o=> this.#trans(o);\t\t// ページ裏表を交換\n\t\thTag.wt\t\t\t\t= o=> CmnTween.wt(o);\t\t// トランス終了待ち\n\n\t\thTag.quake\t\t\t= o=> this.#quake(o);\t\t// 画面を揺らす\n\t\thTag.stop_quake\t\t= hTag.finish_trans;\t\t// 画面揺らし中断\n\t\thTag.wq\t\t\t\t= hTag.wt;\t\t\t\t\t// 画面揺らし終了待ち\n\n\t\thTag.pause_tsy\t\t= o=> CmnTween.pause_tsy(o);\t// 一時停止\n\t\thTag.resume_tsy\t\t= o=> CmnTween.resume_tsy(o);\t// 一時停止再開\n\t\thTag.stop_tsy\t\t= o=> CmnTween.stop_tsy(o);\t// トゥイーン中断\n\t\thTag.tsy\t\t\t= o=> this.#tsy(o);\t\t\t// トゥイーン開始\n\t\thTag.wait_tsy\t\t= o=> CmnTween.wait_tsy(o);\t// トゥイーン終了待ち\n\n\t\thTag.add_filter\t\t= o=> this.#add_filter(o);\t// フィルター追加\n\t\thTag.clear_filter\t= o=> this.#clear_filter(o);// フィルター全削除\n\t\thTag.enable_filter\t= o=> this.#enable_filter(o);// フィルター個別切替\n\n\t\t//\t文字・文字レイヤ\n\t//\thTag.auto_pager\t\t= o=> this.auto_pager(o);\t// 自動改ページの設定\n\t\t//hTag.autowc\t\t// TxtLayer.ts で定義\t\t// 文字ごとのウェイト\n\t\thTag.ch\t\t\t\t= o=> this.#ch(o);\t\t\t// 文字を追加する\n\t\t//hTag.ch_in_style\t// TxtLayer.ts で定義\t\t// 文字出現文字出現演出\n\t\t//hTag.ch_out_style\t// TxtLayer.ts で定義\t\t// 文字消去文字出現演出\n\t\thTag.clear_text\t\t= o=> this.#clear_text(o);\t// 文字消去\n\t\thTag.current\t\t= o=> this.#current(o);\t\t// デフォルト文字レイヤ設定\n\t\thTag.endlink\t\t= o=> this.#endlink(o);\t\t// ハイパーリンクの終了\n\t\thTag.er\t\t\t\t= o=> this.#er(o);\t\t\t// ページ両面の文字消去\n\t\thTag.graph\t\t\t= o=> this.#graph(o);\t\t// インライン画像表示\n\t\thTag.link\t\t\t= o=> this.#link(o);\t\t// ハイパーリンク\n\t\thTag.r\t\t\t\t= o=> this.#r(o);\t\t\t// 改行\n\t\t// hTag.rec_ch\t\t// Log.ts で定義\t\t\t// 履歴書き込み\n\t\t// hTag.rec_r\t\t// Log.ts で定義\t\t\t// 履歴改行\n\t\t// hTag.reset_rec\t// Log.ts で定義\t\t\t// 履歴リセット\n\t\t//hTag.ruby\t\t\t= o=> this.ruby(o);\t\t\t// 直前一文字のルビ(廃止\n\t\t\t// タグでは無く、「|@《》」というスクリプト書き換えで良い\n\t\thTag.ruby2\t\t\t= o=> this.#ruby2(o);\t\t// 文字列と複数ルビの追加\n\t\thTag.span\t\t\t= o=> this.#span(o);\t\t// インラインスタイル設定\n\t\thTag.tcy\t\t\t= o=> this.#tcy(o);\t\t\t// 縦中横を表示する\n\n\t\t//\t画像・画像レイヤ\n\t\thTag.add_face\t\t= o=> SpritesMng.add_face(o);\t// 差分名称の定義\n\n\t\t//\tムービーレイヤ\n\t\thTag.wv\t\t\t\t= o=> SpritesMng.wv(o);\t\t// ムービー再生終了待ち\n\n\t\t//\tデバッグ・その他\n\t\thTag.dump_lay\t\t= o=> this.#dump_lay(o);\t// レイヤのダンプ\n\n\t\t//\tイベント\n\t\thTag.enable_event\t= o=> this.#enable_event(o);// イベント有無の切替\n\n\t\t//\tラベル・ジャンプ\n\t\thTag.button\t\t\t= o=> this.#button(o);\t\t// ボタンを表示\n\n\n\t\tif (cfg.existsBreakline) this.breakLine = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakline';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg));\n\t\t};\n\t\tif (cfg.existsBreakpage) this.breakPage = (hArg: TArg)=> {\n\t\t\tdelete hArg.visible;\n\t\t\thArg.id = 'break';\n\t\t\thArg.pic= 'breakpage';\n\t\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg));\n\t\t};\n\n\t\tthis.#bg_color = parseColor(String(cfg.oCfg.init.bg_color));\n\t\tconst grp = new Graphics;\n\t\tgrp\n\t\t.beginFill(this.#bg_color)\t// イベントを受け取るためにも塗る\n\t\t.lineStyle(0, this.#bg_color)\n\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t.endFill();\n\t\tthis.#fore.addChild(grp.clone());\n\t\tthis.#back.addChild(grp);\n\t\tthis.#back.visible = false;\n\t\tthis.#fore.name = 'page:A';\t// 4tst\n\t\tthis.#back.name = 'page:B';\t// 4tst\n\n\t\tthis.#stage = appPixi.stage;\n\t\tthis.#stage.addChild(this.#back);\n\t\tthis.#stage.addChild(this.#fore);\n\t\tthis.#stage.addChild(this.#spTransBack);\n\t\tthis.#stage.addChild(this.#spTransFore);\n\t\tthis.#stage.name = 'stage';\t// 4tst\n/*\n\t\tconsole.group('new DispMng info');\n\t\tconsole.info(appPixi.renderer);\n\t\tconsole.info('utils.isMobile():'+ utils.isMobile.any);\n\t\t\t\t// https://github.com/kaimallea/isMobile\n\t\tconsole.info('utils.isWebGLSupported():'+ utils.isWebGLSupported());\n\t\tconsole.info('w:%O: h:%O:', CmnLib.stageW, CmnLib.stageH);\n\t\tconsole.groupEnd();\n*/\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst fncTxt_b_alpha = (_name: string, val: any)=> {\n\t\t\tthis.#foreachRedrawTxtLayBack(Number(val))\n\t\t};\n\t\tfncTxt_b_alpha('', val.getVal('sys:TextLayer.Back.Alpha', 1));\n\t\tval.defValTrg('sys:TextLayer.Back.Alpha', fncTxt_b_alpha);\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n\t\tconst fncBtnFont = (_name: string, val: any)=> {Button.fontFamily = val};\n\t\tfncBtnFont('', val.getVal('tmp:sn.button.fontFamily', Button.fontFamily));\n\t\tval.defValTrg('tmp:sn.button.fontFamily', fncBtnFont);\n\n\t\tval.defTmp('const.sn.last_page_text', ()=> this.currentTxtlayFore?.pageText ?? '');\n\t\tval.defTmp('const.sn.last_page_plain_text', ()=> this.currentTxtlayFore?.pagePlainText ?? '');\n\t\tif (CmnLib.isDbg) {\n\t\t\tDesignCast.init(appPixi, sys, scrItr, prpPrs, cfg, this.#hPages);\n\t\t\tthis.cvsResizeDesign = ()=> DesignCast.cvsResizeDesign();\n\t\t\tsys.addHook((type, o)=> {\n\t\t\t\tif (! this.#hProcDbgRes[type]?.(type, o)) return;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\t\tdelete this.#hProcDbgRes[type];\n\t\t\t});\n\t\t}\n\t}\n\tprivate\tcvsResizeDesign() { /* empty */ }\n\n\n\treadonly\t#hProcDbgRes\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t: {[type: string]: (type: string, o: any)=> boolean}\t= {\n\t\tattach\t\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tcontinue\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\tdisconnect\t: _=> {DesignCast.leaveMode();\treturn false},\n\t\t_enterDesign: _=> {\n\t\t\tDesignCast.enterMode();\n\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\tconst lay = this.#hPages[ln]!.fore;\n\t\t\t\tlay.makeDesignCastChildren(gdc=> gdc.make());\n\t\t\t\tlay.makeDesignCast(gdc=> gdc.make());\n\t\t\t}\n\n\t\t\tthis.#selectNode(this.#curTxtlay);\treturn false;\n\t\t//\tthis.selectNode('mes/ボタン');\treturn false;\t// Test用\n\t\t//\tthis.selectNode(this.firstGrplay);\treturn false;\n\t\t\t\t// 制作中は普通画像レイヤをいじるのが主なので、これがいい\n\t\t},\n\t\t_replaceToken: (_, o)=> {DesignCast.replaceToken(o); return false},\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t_selectNode\t: (_, o)=> {this.#selectNode(o.node); return false},\n\t}\n\t#modeLn\t\t= '';\n\t#modeLnSub\t= '';\n\t#selectNode(node: string) {\n\t\t[this.#modeLn='', this.#modeLnSub=''] = node.split('/');\n\t\tconst pages = this.#hPages[this.#modeLn];\n\t\tif (! pages) return;\n\n\t\tDesignCast.allHide();\n\t\tif (this.#modeLnSub) pages.fore.showDesignCastChildren();\n\t\telse pages.fore.showDesignCast();\n\t}\n\n\tgetFrmDisabled = (id: string)=> this.#frmMng.getFrmDisabled(id);\n\n\t#grpCover : Graphics | undefined = undefined;\n\tcover(visible: boolean, bg_color = 0x0) {\n\t\tif (this.#grpCover) {\n\t\t\tthis.#stage.removeChild(this.#grpCover);\n\t\t\tthis.#grpCover.destroy();\n\t\t\tthis.#grpCover = undefined;\n\t\t}\n\t\tif (visible) this.#stage.addChild(\n\t\t\t(this.#grpCover = new Graphics)\n\t\t\t.beginFill(bg_color)\n\t\t\t.lineStyle(0, bg_color)\n\t\t\t.drawRect(0, 0, CmnLib.stageW, CmnLib.stageH)\n\t\t\t.endFill()\n\t\t);\n\t}\n\n\t#evtMng\t: IEvtMng;\n\tsetEvtMng(evtMng: IEvtMng) {\n\t\tthis.#evtMng = evtMng;\n\t\tthis.#frmMng.setEvtMng(evtMng);\n\t\tSpritesMng.setEvtMng(evtMng);\n\t\tCmnTween.init(evtMng);\n\t}\n\n\tdestroy() {\n\t\tfor (const p of Object.values(this.#hPages)) p.destroy();\n\n\t\tthis.#elc.clear();\n\t\tGrpLayer.destroy();\n\t\tRubySpliter.destroy();\n\t\tTxtStage.destroy();\n\t\tTxtLayer.destroy();\n\n\t\tthis.#frmMng.destroy();\n\n\t\tCmnTween.destroy();\n\t\tTxtLayer.msecChWait = 10;\n\t}\n\n\n\t// 既存の全文字レイヤの実際のバック不透明度、を再計算\n\t#foreachRedrawTxtLayBack(g_alpha: number) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.chgBackAlpha(g_alpha);\n\t\t\t(<TxtLayer>back).chgBackAlpha(g_alpha);\n\t\t}\n\t}\n\n\n\t#cmdTxt = (cmd: string, tl = this.currentTxtlayForeNeedErr, _record = true)=> tl.tagCh('|&emsp;《'+ cmd +'》');\n\tgoTxt = ()=> { /* empty */ };\n\tget needGoTxt() {return this.currentTxtlayFore?.needGoTxt ?? false;}\n\tbreakLine = (_hArg: TArg)=> { /* empty */ };\n\tbreakPage = (_hArg: TArg)=> { /* empty */ };\n\tclearBreak() {\n\t\tif (! this.currentTxtlayFore) return;\n\n\t\tthis.clearBreak = ()=> this.#cmdTxt('del|break');\n\t\tthis.clearBreak();\n\t}\n\n\tclickTxtLay(): boolean {\t// true: 文字出現中だったので、停止する\n\t\tif (! this.currentTxtlayFore) return false;\n\n\t\treturn this.#aLayName\n\t\t.map(ln=> this.#hPages[ln]!.fore)\n\t\t.some(f=> f instanceof TxtLayer && f.click());\n\t}\n\n\n//\t//\tシステム\n\t//MARK: スナップショット\n\t#snapshot(hArg: TArg) {\n\t\tconst dt = getDateStr('-', '_', '', '_');\n\t\tconst fn0 = hArg.fn\n\t\t? hArg.fn.startsWith(PROTOCOL_USERDATA)\n\t\t\t? hArg.fn\n\t\t\t: `${PROTOCOL_DL + hArg.fn + dt}.png`\n\t\t: `${PROTOCOL_DL}snapshot${dt}.png`;\n\t\tconst url = this.cfg.searchPath(fn0);\n\t\tconst width = argChk_Num(hArg, 'width', CmnLib.stageW);\n\t\tconst height= argChk_Num(hArg, 'height', CmnLib.stageH);\n\t\treturn this.#snapshot4proc(hArg, url, width, height, `snapshot dt:${dt}`);\n\t}\n\t#snapshot4proc :(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string)=> boolean = ()=> false;\n\t#snapshot4app({layer}: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tthis.#frmMng.hideAllFrame();\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tif (! layer) {\n\t\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\t// 一時的に非表示にしてスナップショット\n\t\tconst aBk = this.#aLayName\n\t\t.map(ln=> {\n\t\t\tconst {ctn} = this.#hPages[ln]!.fore;\n\t\t\tconst ret: [Sprite, boolean] = [ctn, ctn.visible];\n\t\t\tctn.visible = false;\n\t\t\treturn ret;\n\t\t});\n\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]!.fore.ctn.visible = true;\n\n\t\tthis.sys.capturePage(url, width, height, ()=> {\n\t\t\tfor (const [sp, v] of aBk) sp.visible = v;\n\t\t\tthis.#frmMng.restoreAllFrame();\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\t#snapshot4web(hArg: TArg, url: string, width: number, height: number, RPN_SNAPSHOT: string): boolean {\n\t\tReading.beginProc(RPN_SNAPSHOT);\n\t\tconst b_color = argChk_Color(hArg, 'b_color', this.#bg_color);\n\t\tconst rnd = autoDetectRenderer({\n\t\t\twidth,\n\t\t\theight,\n\t\t\tbackgroundAlpha: b_color > 0x1000000 && url.endsWith('.png') ?0 :1,\n\t\t\tantialias: argChk_Boolean(hArg, 'smoothing', false),\n\t\t\tpreserveDrawingBuffer: true,\n\t\t\tbackgroundColor: b_color & 0xFFFFFF,\n\t\t\tautoDensity: true,\n\t\t});\n\t\tconst pg = hArg.page !== 'back' ?'fore' :'back';\n\t\tconst {layer} = hArg;\n\t\tvoid Promise.allSettled(\n\t\t\tthis.#getLayers(layer).map(ln=> new Promise<void>(\n\t\t\t\tre=> this.#hPages[ln]![pg].snapshot(rnd, re)\n\t\t\t))\n\t\t).then(async ()=> {\n\t\t\tconst renTx = RenderTexture.create({width: rnd.width, height: rnd.height});\t// はみ出し対策\n\t\t\trnd.render(this.#stage, {renderTexture: renTx});\n\t\t\tawait this.sys.savePic(\n\t\t\t\turl,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n\t\t\t\trnd.plugins.extract.base64(renTx),\n\t\t\t);\n\t\t\trenTx.destroy();\n\n\t\t\tfor (const ln of this.#getLayers(layer)) this.#hPages[ln]![pg].snapshot_end();\n\t\t\trnd.destroy(true);\n\n\t\t\tReading.endProc(RPN_SNAPSHOT);\n\t\t});\n\t\treturn true;\n\t}\n\n\t//MARK: プラグインの読み込み\n\t#loadplugin(hArg: TArg) {\n\t\tconst {fn} = hArg;\n\t\tif (! fn) throw 'fnは必須です';\n\t\tif (! fn.endsWith('.css')) throw 'サポートされない拡張子です';\n\n\t\tconst join = argChk_Boolean(hArg, 'join', true);\n\t\tconst RPN_LOADPLUGIN = Reading.procID +`loadplugin fn:${fn}`;\n\t\tif (join) Reading.beginProc(RPN_LOADPLUGIN);\n\t\t(async ()=> {\n\t\t\tconst res = await fetch(fn);\n\t\t\tif (! res.ok) throw new Error('Network response was not ok.');\n\n\t\t\taddStyle(await res.text());\n\t\t\tif (join) Reading.endProc(RPN_LOADPLUGIN);\n\t\t})();\n\n\t\treturn join;\n\t}\n\n\n//\t//\tレイヤ共通\n\t//MARK: レイヤを追加する\n\t#add_lay(hArg: TArg) {\n\t\tconst {layer, class: cls} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\t\tif (layer.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (layer in this.#hPages) throw `layer【${layer}】はすでにあります`;\n\t\tif (! cls) throw 'clsは必須です';\n\n\t\tconst ret = {isWait: false}\n\t\tthis.#hPages[layer] = new Pages(layer, cls, this.#fore, this.#back, hArg, this.sys, this.val, ret);\n\t\tthis.#aLayName.push(layer);\n\t\tswitch (cls) {\n\t\tcase 'txt':\n\t\t\tif (! this.#curTxtlay) {\n\t\t\t\tthis.#chkTxtLay = ()=> { /* empty */ };\n\t\t\t\tthis.#getTxtLayer = o=> this.#$getTxtLayer(o);\n\t\t\t\tthis.#current = o=> this.#$current(o);\n\t\t\t\tthis.hTag.current({layer});\t// hPages更新後でないと呼べない\n\t\t\t\tthis.goTxt = ()=> {\n\t\t\t\t\tif (this.#evtMng.isSkipping) TxtLayer.msecChWait = 0;\n\t\t\t\t\telse this.setNormalChWait();\n\t\t\t\t\tfor (const ln of this.#aLayName) {\n\t\t\t\t\t\tconst f = this.#hPages[ln]!.fore;\n\t\t\t\t\t\tif (f instanceof TxtLayer) this.#cmdTxt('gotxt|', f, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ layer +'.enabled', true);\n\t\t\tbreak;\n\n\t\tcase 'grp':\n\t\t\tif (this.#firstGrplay) break;\n\t\t\tthis.#firstGrplay = layer;\n\t\t\tbreak;\n\t\t}\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// hArg[':id_tag'] は new Pages 内で設定\n\n\t\treturn ret.isWait;\n\t}\n\t#hPages\t\t: HPage\t\t= { /* empty */ };\t// しおりLoad時再読込\n\t#aLayName\t: string[]\t= [];\t// 最適化用・重なり順つき全レイヤ名\n\t#curTxtlay\t\t= '';\n\t#firstGrplay\t= '';\n\n\t#lay(hArg: TArg): boolean {\n\t\t// Trans\n\t\tconst ln = this.#argChk_layer(hArg);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst back = pg.back.ctn;\n\t\tconst fore = pg.fore.ctn;\n\t\tif (argChk_Boolean(hArg, 'float', false)) {\n\t\t\tthis.#back.setChildIndex(back, this.#back.children.length -1);\n\t\t\tthis.#fore.setChildIndex(fore, this.#fore.children.length -1);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\t\telse if (hArg.index) {\n\t\t\tif (argChk_Num(hArg, 'index', 0)) {\n\t\t\t\tthis.#back.setChildIndex(back, hArg.index);\n\t\t\t\tthis.#fore.setChildIndex(fore, hArg.index);\n\t\t\t\tthis.#rebuildLayerRankInfo();\n\t\t\t}\n\t\t}\n\t\telse if (hArg.dive) {\n\t\t\tconst {dive} = hArg;\n\t\t\tlet idx_dive = 0;\n\t\t\tif (ln === dive) throw '[lay] 属性 layerとdiveが同じ【'+ dive +'】です';\n\n\t\t\tconst pg_dive = this.#hPages[dive];\n\t\t\tif (! pg_dive) throw '[lay] 属性 dive【'+ dive +'】が不正です。レイヤーがありません';\n\t\t\tconst back_dive = pg_dive.back;\n\t\t\tconst fore_dive = pg_dive.fore;\n\t\t\tconst idx_back_dive = this.#back.getChildIndex(back_dive.ctn);\n\t\t\tconst idx_fore_dive = this.#fore.getChildIndex(fore_dive.ctn);\n\t\t\tidx_dive = idx_back_dive < idx_fore_dive ?idx_back_dive :idx_fore_dive;\n\t\t\tif (idx_dive > this.#back.getChildIndex(back)) --idx_dive;\t//自分が無くなって下がる分下げる\n\n\t\t\tthis.#fore.setChildIndex(fore, idx_dive);\n\t\t\tthis.#back.setChildIndex(back, idx_dive);\n\t\t\tthis.#rebuildLayerRankInfo();\n\t\t}\n\n\t\thArg[':id_tag'] = pg.fore.name.slice(0, -7);\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn pg.lay(hArg);\n\t}\n\t#rebuildLayerRankInfo() {this.#aLayName = this.#sortLayers()}\n\n\t//MARK: レイヤ設定の消去\n\t#clear_lay(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\t//if (name === this.strTxtlay && hArg.page !== 'back') this.recText('', true);\n\t\t\t\t// 改ページ\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\t// page=both で両面削除\n\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-205.html\n\t\t\tif (hArg.page === 'both') {\n\t\t\t\tpg.fore.clearLay(hArg);\n\t\t\t\tpg.back.clearLay(hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpg.getPage(hArg).clearLay(hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//===================================================\n\t//MARK: WebGL フラグメントシェーダー GLSL\n\tstatic\treadonly\t#srcRuleTransFragment = /* glsl */`\nprecision mediump float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\nuniform sampler2D rule;\nuniform float vague;\nuniform float tick;\n\nuniform vec4 inputPixel;\nuniform highp vec4 outputFrame;\nvec2 getUV(vec2 coord) {\n\treturn coord * inputPixel.xy / outputFrame.zw;\n}\n\nvoid main() {\n\tvec4 fg = texture2D(uSampler, vTextureCoord);\n\tvec4 ru = texture2D(rule, getUV(vTextureCoord));\n\n\tfloat v = ru.r - tick;\n\tgl_FragColor = abs(v) < vague\n\t\t? vec4(fg.rgb, 1) *fg.a *(0.5 +v /vague *0.5)\n\t\t: 0.0 <= v ? fg : vec4(0);\n}`;\n/*\n\t末尾が読みづらいが、以下のif文を消して三項演算子にしている。\n\n\tif (abs(v) < vague) {\n\t\tfloat f_a = fg.a *(0.5 +v /vague *0.5);\n\t\tgl_FragColor.rgb = fg.rgb *f_a;\n\t\tgl_FragColor.a = f_a;\n\t\treturn;\n\t}\n\tgl_FragColor = v >= 0.0 ? fg : vec4(0);\n\n\t\t★GLSL : don't use \"if\"|Nobu note.com/nobuhirosaijo/n/n606a3f5d8e89\n\t\t\t> if文はあまり使わない方がいいらしい (処理負荷が高い)\n*/\n\n\n\t#rtTransBack = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransBack = new Sprite(this.#rtTransBack);\n\n\t#rtTransFore = RenderTexture.create({\n\t\twidth\t: CmnLib.stageW,\n\t\theight\t: CmnLib.stageH,\n\t});\n\t#spTransFore = new Sprite(this.#rtTransFore);\n\n\n\t//MARK: ページ裏表を交換\n\t#trans(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tconst sDoTrans = new Set<string>;\n\t\tconst aLayFore = this.#getLayers(layer).map(ln=> {\n\t\t\tsDoTrans.add(ln);\n\t\t\treturn this.#hPages[ln]!.fore;\n\t\t});\n\n\t\tconst comp = ()=> {\n\t\t\t[this.#fore, this.#back] = [this.#back, this.#fore];\n\t\t\tconst aPrm: Promise<void>[] = [];\n\t\t\tfor (const [ln, pg] of Object.entries(this.#hPages)) {\n\t\t\t\tif (sDoTrans.has(ln)) {pg.transPage(aPrm); continue}\n\n\t\t\t\t// transしないために交換する\n\t\t\t\tconst {fore: {ctn: f}, back: {ctn: b}} = pg;\n\t\t\t\tconst idx = this.#fore.getChildIndex(b);\n\t\t\t\tthis.#fore.removeChild(b);\n\t\t\t\tthis.#back.removeChild(f);\n\t\t\t\tthis.#fore.addChildAt(f, idx);\n\t\t\t\tthis.#back.addChildAt(b, idx);\n\t\t\t}\n\t\t\tvoid Promise.allSettled(aPrm).then(()=> {\n\t\t\t\tthis.#fore.visible = true;\n\t\t\t\tthis.#back.visible = false;\t// 再び非表示の裏方に(直前までforeだった)\n\t\t\t\tthis.#spTransBack.visible = false;\n\t\t\t\tthis.#spTransFore.visible = false;\n\n\t\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t\t});\n\t\t};\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\t\tthis.#spTransFore.filters = [];\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\t// 一瞬切り替え\n\t\tconst time = argChk_Num(hArg, 'time', 0);\n\t\tif (time === 0 || this.#evtMng.isSkipping) {comp(); return false}\n\n\n\t\tconst aBackTransAfter: Sprite[] = [];\n\t\tconst aBack = this.#aLayName.map(ln=> {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tconst lay = sDoTrans.has(ln) ?back :fore;\n\t\t\tif (lay.ctn.visible) aBackTransAfter.push(lay.ctn);\n\t\t\treturn lay;\n\t\t});\n\t\tconst {ticker, renderer} = this.appPixi;\n\t\trenderer.render(this.#back, {renderTexture: this.#rtTransBack});\t// clear: true\n\n\t\tlet fncRenderBack = ()=> {\n\t\t\tfor (const ctn of aBackTransAfter) renderer.render(\n\t\t\t\tctn,\n\t\t\t\t{renderTexture: this.#rtTransBack, clear: false}\n\t\t\t);\n\t\t};\n\t\tif (! aBack.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderBack;\t// 動きがないなら最初に一度\n\t\t\tfncRenderBack = ()=> {fncRenderBack = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\n\t\tconst render = ()=> renderer.render(this.#fore, {renderTexture: this.#rtTransFore});\t// clear: true\n\t\trender();\n\t\tlet fncRenderFore = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\trender();\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tif (! aLayFore.some(lay=> lay.containMovement)) {\n\t\t\tconst oldFnc = fncRenderFore;\t// 動きがないなら最初に一度\n\t\t\tfncRenderFore = ()=> {fncRenderFore = ()=> { /* empty */ }; oldFnc()};\n\t\t}\n\t\tconst fncRender = ()=> {\n\t\t\tfncRenderBack();\n\t\t\tthis.#spTransBack.visible = true;\n\n\t\t\tfncRenderFore();\n\t\t\tthis.#spTransFore.visible = true;\n\t\t};\n\n\n\t\t// クロスフェード\n\t\tconst {glsl, rule} = hArg;\n\t\tconst comp2 = ()=> {ticker.remove(fncRender); comp()};\n\t\tif (! glsl && ! rule) {\n\t\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {alpha: 0}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ });\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Filter使用系(デフォルト値を glsl 属性で上書き可能)\n\t\tconst uniforms = {\n\t\t\trule\t: Texture.EMPTY,\n\t\t\tvague\t: argChk_Num(hArg, 'vague', 0.04),\n\t\t\ttick\t: 0.0,\n\t\t};\n\t\tthis.#spTransFore.filters = [new Filter(\n\t\t\tundefined,\n\t\t\tglsl ?? LayerMng.#srcRuleTransFragment,\n\t\t\tuniforms,\n\t\t)];\n\t\tconst tw = CmnTween.tween(TW_NM_TRANS, hArg, uniforms, {tick: 1}, ()=> { /* empty */ }, comp2, ()=> { /* empty */ }, ! rule);\n\t\tif (! rule) {\n\t\t\tticker.add(fncRender);\n\t\t\treturn false;\n\t\t}\n\n\t\t// ルール画像あり\n\t\tconst sm = new SpritesMng(rule, undefined, sp=> {\n\t\t\tuniforms.rule = sp.texture;\n\t\t\tsp.destroy();\n\n\t\t\tticker.add(fncRender);\n\t\t\ttw.start();\t\t// start = false にしたので必要\n\t\t}, isStop=> {if (isStop) this.main.resume()});\n\t\treturn sm.ret;\n\t}\n\n\t#getLayers(layer = ''): string[] {return layer ?layer.split(',') :this.#aLayName}\n\t#foreachLayers(hArg: TArg, fnc: (ln: string, $pg: Pages)=> void): readonly string[] {\n\t\tconst aLn = this.#getLayers(hArg.layer);\n\t\tfor (const ln of aLn) {\n\t\t\tconst pg = this.#hPages[ln];\n\t\t\tif (! pg) throw `存在しないlayer【${ln}】です`;\n\n\t\t\tfnc(ln, pg);\n\t\t}\n\n\t\treturn aLn;\n\t}\n\t#sortLayers(layers = ''): string[] {\n\t\treturn this.#getLayers(layers)\n\t\t.sort((a, b)=> {\n\t\t\tconst ai = this.#fore.getChildIndex(this.#hPages[a]!.fore.ctn);\n\t\t\tconst bi = this.#fore.getChildIndex(this.#hPages[b]!.fore.ctn);\n\t\t\tif (ai < bi) return -1;\n\t\t\tif (ai > bi) return 1;\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\tsetAllStyle2TxtLay(style: string) {\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst l = this.#hPages[ln]!.fore;\n\t\t\tif (l instanceof TxtLayer) l.lay({style});\t// 必要最小限設定なので\n\t\t\t//\t... l.cssText = style;\n\t\t}\n\t}\n\n\t//MARK: 画面を揺らす\n\t#quake(hArg: TArg) {\n\t\tif (argChk_Num(hArg, 'time', NaN) === 0) return false;\n\n\t\tconst aLayCtn = this.#getLayers(hArg.layer)\n\t\t.map(ln=> this.#hPages[ln]!.fore.ctn);\n\t\tconst {renderer, ticker} = this.appPixi;\n\t\tthis.#rtTransFore.resize(CmnLib.stageW, CmnLib.stageH);\n\t\tconst fncRender = ()=> {\n\t\t\tthis.#fore.visible = true;\n\t\t\tfor (const c of aLayCtn) renderer.render(\n\t\t\t\tc, {renderTexture: this.#rtTransFore, clear: false}\n\t\t\t);\n\t\t\tthis.#fore.visible = false;\n\t\t};\n\t\tthis.#spTransFore.visible = true;\n\t\tthis.#spTransFore.alpha = 1;\n\n\t\tconst h = uint(argChk_Num(hArg, 'hmax', 10));\n\t\tconst v = uint(argChk_Num(hArg, 'vmax', 10));\n\t\tconst fncH = h === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.x = Math.round(Math.random()* h*2) -h};\n\t\tconst fncV = v === 0\n\t\t\t? ()=> { /* empty */ }\n\t\t\t: ()=> {this.#spTransFore.y = Math.round(Math.random()* v*2) -v};\n\t\tthis.#spTransFore.filters = [];\n\n\t\tCmnTween.tween(TW_NM_TRANS, hArg, this.#spTransFore, {x: 0, y: 0}, ()=> {fncH(); fncV()}, ()=> {\n\t\t\tticker.remove(fncRender);\n\t\t\t\t// transなしでもadd()してなくても走るが、構わないっぽい。\n\t\t\tthis.#fore.visible = true;\n\t\t\tthis.#spTransFore.visible = false;\n\t\t\tthis.#spTransFore.x = 0;\t// 必須、onUpdate は toの値にしてくれない\n\t\t\tthis.#spTransFore.y = 0;\n\n\t\t\tReading.notifyEndProc(TW_NM_TRANS);\n\t\t}, ()=> { /* empty */ });\n\t\tticker.add(fncRender);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: トゥイーン開始\n\t#tsy(hArg: TArg) {\n\t\tconst {layer, render, name} = hArg;\n\t\tif (! layer) throw 'layerは必須です';\n\n\t\tconst pg = this.#hPages[this.#argChk_layer(hArg)]!;\n\t\tconst lay = pg.fore;\n\n\t\tlet finishBlendLayer = ()=> { /* empty */ };\n\t\tif (render) {\n\t\t\tif (this.#evtMng.isSkipping) lay.renderStart(true);\n\t\t\telse {\n\t\t\t\tlay.renderStart(false);\n\t\t\t\tfinishBlendLayer = ()=> lay.renderEnd();\n\t\t\t}\n\t\t}\n\n\t\tconst hTo = CmnTween.cnvTweenArg(hArg, lay);\n\t\tconst arrive = argChk_Boolean(hArg, 'arrive', false);\n\t\tconst backlay = argChk_Boolean(hArg, 'backlay', false);\n\t\tconst spBack = pg.back.ctn;\t// fore, back が変わる恐れで外へ\n\t\tCmnTween.tween(name ?? layer, hArg, lay, CmnTween.cnvTweenArg(hArg, lay), ()=> { /* empty */ }, finishBlendLayer, ()=> {\n\t\t\tif (arrive) Object.assign(lay, hTo);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n\t\t\tif (backlay) for (const nm of CmnTween.aLayerPrpNm) (<any>spBack)[nm] = lay[nm];\n\t\t});\n\t\t// hArg[':id'] = pg.fore.name.slice(0, -7);\n\t\t// this.scrItr.getDesignInfo(hArg);\t// 必ず[':id'] を設定すること\n\n\t\tif ('filter' in hArg) {\n\t\t\tlay.ctn.filters = [Layer.bldFilters(hArg)];\n\t\t\tlay.aFltHArg = [hArg];\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: フィルター追加\n\t#add_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#add_filter2(pg.fore, hArg);\n\t\t\t\tthis.#add_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#add_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#add_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\ts.filters ??= [];\n\t\ts.filters = [...s.filters, Layer.bldFilters(hArg)];\n\t\tl.aFltHArg.push(hArg);\n\t}\n\n\t//MARK: フィルター全削除\n\t#clear_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tconst f = pg.fore;\n\t\t\t\tconst b = pg.back;\n\t\t\t\tf.ctn.filters = null;\n\t\t\t\tb.ctn.filters = null;\n\t\t\t\tf.aFltHArg = [];\n\t\t\t\tb.aFltHArg = [];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tl.ctn.filters = null;\n\t\t\tl.aFltHArg = [];\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t//MARK: フィルター個別切替\n\t#enable_filter(hArg: TArg) {\n\t\tthis.#foreachLayers(hArg, layer=> {\n\t\t\tconst pg = this.#hPages[this.#argChk_layer({layer})]!;\n\t\t\tif (hArg.page === 'both') {\t// page=both で両面に\n\t\t\t\tthis.#enable_filter2(pg.fore, hArg);\n\t\t\t\tthis.#enable_filter2(pg.back, hArg);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst l = pg.getPage(hArg);\n\t\t\tthis.#enable_filter2(l, hArg);\n\t\t});\n\n\t\treturn false;\n\t}\n\t#enable_filter2(l: Layer, hArg: TArg) {\n\t\tconst s = l.ctn;\n\t\tif (! s.filters) throw 'フィルターがありません';\n\n\t\tconst i = uint(argChk_Num(hArg, 'index', 0));\n\t\tconst len = s.filters.length;\n\t\tif (len <= i) throw `フィルターの個数(${String(len)})を越えています`;\n\n\t\tl.aFltHArg[i]!.enabled =\n\t\ts.filters[i]!.enabled = argChk_Boolean(hArg, 'enabled', true);\n\t}\n\n\n//\t// 文字・文字レイヤ\n\t//MARK: 文字を追加する\n\t#ch(hArg: TArg) {\n\t\tconst {text} = hArg;\n\t\tif (! text) throw 'textは必須です';\n\n\t\tconst tl = this.#getTxtLayer(hArg);\n\t\tdelete hArg.text;\t// [graph]時、次行がルビ文法でトラブったので\n\t\tthis.setNormalChWait();\n\t\tif (this.#evtMng.isSkipping) hArg.wait = 0;\n\t\telse if ('wait' in hArg) argChk_Num(hArg, 'wait', NaN);\n\n\t\tthis.#cmdTxt('add|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), tl);\n\t\t\t// [ch style]用\n\n\t\tconst record = argChk_Boolean(hArg, 'record', true);\n\t\tconst doRecLog = this.val.doRecLog();\n\t\t// [ch text=\"\"]に改行を含められる方法\n\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-275.html\n\t\tif (! record) this.val.setVal_Nochk('save', 'sn.doRecLog', record);\n\t\ttl.tagCh(text.replaceAll('[r]', '\\n'));\n\t\tthis.val.setVal_Nochk('save', 'sn.doRecLog', doRecLog);\n\n\t\tthis.#cmdTxt('add_close|', tl);\t// [ch style]用\n\n\t\treturn false;\n\t}\n\n\t#getTxtLayer = (_hArg: TArg): TxtLayer=> {this.#chkTxtLay(); throw 0};\n\t#$getTxtLayer(hArg: TArg): TxtLayer {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst pg = this.#hPages[ln]!;\n\t\tconst lay = pg.getPage(hArg);\n\t\tif (! (lay instanceof TxtLayer)) throw ln +'はTxtLayerではありません';\n\n\t\treturn lay;\n\t}\n\tsetNormalChWait(): void {TxtLayer.msecChWait = this.scrItr.normalWait}\n\n\n\t//MARK: 操作対象のメッセージレイヤの指定\n\t#current = (_hArg: TArg): boolean=> {this.#chkTxtLay(); throw 0};\n\t#$current(hArg: TArg) {\n\t\tconst {layer} = hArg;\n\t\tif (! layer) throw '[current] layerは必須です';\n\n\t\tconst lay = this.#hPages[layer];\n\t\tif (! lay || ! (lay.getPage(hArg) instanceof TxtLayer)) throw `${layer}はTxtLayerではありません`;\n\t\tthis.#pgTxtlay = lay;\n\n\t\tthis.#log.pagebreak();\t// カレント変更前に現在の履歴を保存\n\t\tthis.#curTxtlay = layer;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.mesLayer', layer);\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\tif (! (fore instanceof TxtLayer)) continue;\n\t\t\tfore.isCur = (<TxtLayer>back).isCur = ln === layer;\n\t\t}\n\n\t\treturn false;\n\t}\n\tget currentTxtlayForeNeedErr(): TxtLayer {\n\t\tthis.#chkTxtLay();\n\t\treturn this.currentTxtlayFore!;\n\t}\n\tget currentTxtlayFore(): TxtLayer | null {\n\t\tif (! this.#pgTxtlay) return null;\n\n\t\treturn <TxtLayer>this.#pgTxtlay.fore;\n\t}\n\t#pgTxtlay\t: Pages | undefined\t= undefined;\t// カレントテキストレイヤ\n\t#chkTxtLay\t: ()=> void\t= ()=> {throw '文字レイヤーがありません。文字表示や操作する前に、[add_lay layer=(レイヤ名) class=txt]で文字レイヤを追加して下さい'};\n\n\t#argChk_layer(hArg: TArg, def = ''): string {\n\t\tconst ln = hArg.layer ?? def;\n\t\tif (ln.includes(',')) throw 'layer名に「,」は使えません';\n\t\tif (! (ln in this.#hPages)) throw '属性 layer【'+ ln +'】が不正です。レイヤーがありません';\n\n\t\thArg.layer = ln;\n\t\treturn ln;\n\t}\n\n\n\trecPagebreak() {this.#log.pagebreak()}\n\n\n\t//MARK: 文字消去\n\t#clear_text(hArg: TArg) {\n\t\tconst tf = this.#getTxtLayer(hArg);\n\t\tif (hArg.layer === this.#curTxtlay && hArg.page === 'fore') this.#log.pagebreak();\t// 改ページ、クリア前に\n\t\ttf.clearText();\n\t\treturn false;\n\t}\n\n\n\t//MARK: ハイパーリンクの終了\n\t#endlink(hArg: TArg) {this.#cmdTxt('endlink|', this.#getTxtLayer(hArg)); return false}\n\n\t//MARK: ページ両面の文字消去\n\t#er(hArg: TArg) {\n\t\tif (argChk_Boolean(hArg, 'rec_page_break', true)) this.#log.pagebreak();\t// 改ページ、クリア前に\n\n\t\tif (this.#pgTxtlay) {\n\t\t\tthis.#pgTxtlay.fore.clearLay(hArg);\n\t\t\tthis.#pgTxtlay.back.clearLay(hArg);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t//MARK: インライン画像表示\n\t#graph(hArg: TArg) {\n\t\tif (! hArg.pic) throw '[graph] picは必須です';\n\n\t\tthis.#cmdTxt('grp|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: ハイパーリンク\n\t#link(hArg: TArg) {\n\t\tif (! hArg.fn && ! hArg.label && ! hArg.url) throw 'fn,label,url いずれかは必須です';\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\n\t\thArg.style ??= 'background-color: rgba(255,0,0,0.5);';\n\t\thArg.style_hover ??= 'background-color: rgba(255,0,0,0.9);';\n\t\thArg.style_clicked ??= hArg.style;\n\t\tthis.#cmdTxt('link|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: 改行\n\t#r(hArg: TArg) {return this.#ch({...hArg, text: '\\n'})}\n\n\t//MARK: 文字列と複数ルビの追加\n\t#ruby2(hArg: TArg) {\n\t\tconst {t, r} = hArg;\n\t\tif (! t) throw '[ruby2] tは必須です';\n\t\tif (! r) throw '[ruby2] rは必須です';\n\n\t\thArg.text = '|'+ encodeURIComponent(t) +'《'+ encodeURIComponent(r) +'》';\n\t\tdelete hArg.t;\n\t\tdelete hArg.r;\n\t\treturn this.#ch(hArg);\n\t}\n\n\n\t//MARK: インラインスタイル設定\n\t#span(hArg: TArg) {\n\t\tthis.#cmdTxt('span|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\t//MARK: tcy縦中横を表示する\n\t#tcy(hArg: TArg) {\n\t\tif (! hArg.t) throw '[tcy] tは必須です';\n\n\t\tthis.#cmdTxt('tcy|'+ cnvSArg(<T_cmdTxt_JSON><unknown>hArg), this.#getTxtLayer(hArg));\n\t\treturn false;\n\t}\n\n\n\t//MARK: レイヤのダンプ\n\t#dump_lay({layer}: TArg) {\n\t\tconsole.group('🥟 [dump_lay]');\n\t\tfor (const ln of this.#getLayers(layer)) {\n\t\t\tconst {fore, back} = this.#hPages[ln]!;\n\t\t\ttry {\n\t\t\t\tconsole.info(`%c${fore.name.slice(0, -7)} %o`, `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`,\n\t\t\t\tJSON.parse(`{\"back\":{${back.dump()}}, \"fore\":{${fore.dump()}}}`));\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('dump_lay err:%o', e);\n\t\t\t\tconsole.error(` back:${back.dump()}`);\n\t\t\t\tconsole.error(` fore:${fore.dump()}`);\n\t\t\t}\n\t\t}\n\t\tconsole.groupEnd();\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: イベント有無の切替\n\t#enable_event(hArg: TArg) {\n\t\tconst ln = this.#argChk_layer(hArg, this.#curTxtlay);\n\t\tconst v = argChk_Boolean(hArg, 'enabled', true);\n\t\tthis.#getTxtLayer(hArg).enabled = v;\n\t\tthis.val.setVal_Nochk('save', 'const.sn.layer.'+ ln +'.enabled', v);\n\n\t\treturn false;\n\t}\n\n\n\t//MARK: ボタンを表示\n\t#button(hArg: TArg) {\n\t\tPages.argChk_page(hArg, 'back');\t// チェックしたいというよりデフォルトをbackに\n\t\thArg.fn ??= this.scrItr.scriptFn;\t// ここで指定する必要がある\n\t\t\t// fn省略時、画像ボタンはロード後という後のタイミングで scrItr.scriptFn を\n\t\t\t// 参照してしまうので\n\t\tvoid this.#getTxtLayer(hArg).addButton(hArg);\t// hArg[':id_tag'] も設定\n\n\t\tthis.scrItr.recodeDesign(hArg);\t// 必ず[':id_tag'] を設定すること\n\n\t\treturn false;\n\t}\n\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\trecord(): any {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tconst o: any = {};\n\t\tfor (const ln of this.#aLayName) {\n\t\t\tconst pg = this.#hPages[ln]!;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\to[ln] = {\n\t\t\t\tcls: pg.cls,\n\t\t\t\tfore: pg.fore.record(),\n\t\t\t\tback: pg.back.record(),\n\t\t\t};\n\t\t}\n\t\treturn o;\n\t}\n\tplayback($hPages: T_HPage): Promise<void>[] {\n\t\t// これを先に。save:const.sn.sLog がクリアされてしまう\n\t\tthis.#log.playback();\n\n\t\tconst aPrm: Promise<void>[] = [];\n\t\tconst aSort: {ln: string, idx: number}[] = [];\n\t\tfor (const [ln, {fore, fore: {idx}, back, cls}] of Object.entries($hPages)) {\t// 引数で言及の無いレイヤはそのまま。特に削除しない\n\t\t\taSort.push({ln, idx});\n\t\t\tconst ps = this.#hPages[ln] ??= new Pages(ln, cls, this.#fore, this.#back, {}, this.sys, this.val, {isWait: false});\n\t\t\tps.fore.playback(fore, aPrm);\n\t\t\tps.back.playback(back, aPrm);\n\t\t}\n\n\t\tconst len = this.#fore.children.length;\n\t\taPrm.push(new Promise(re=> {\t// 若い順にsetChildIndex()\n\t\t\tfor (const {ln, idx} of aSort.sort(({idx: a}, {idx: b})=> a === b ?0 :a < b ?-1 :1)) {\n\t\t\t\tconst pg = this.#hPages[ln];\n\t\t\t\tif (! pg) continue;\n\n\t\t\t\tconst i = len > idx ?idx :len -1;\n\t\t\t\tconst {fore, back} = pg;\n\t\t\t\tthis.#fore.setChildIndex(fore.ctn, i);\n\t\t\t\tthis.#back.setChildIndex(back.ctn, i);\n\t\t\t}\n\t\t\tre();\n\t\t}));\n\t\treturn aPrm;\n\t}\n\n}\n"],"mappings":"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"}
package/dist/Reading.js CHANGED
@@ -387,12 +387,11 @@ var PID_HD_TW = "tsy nm:", CmnTween = class e {
387
387
  e.#i.push(s);
388
388
  }
389
389
  static destroy() {
390
- e.#r.removeAll(), e.#n = () => 0, e.stopAllTw();
390
+ e.#r.removeAll(), e.#n = () => 0, e.stopAllTw(), e.#i = [];
391
391
  }
392
392
  static stopAllTw() {
393
393
  e.#e = {};
394
394
  for (let s of e.#i) s.removeAll();
395
- e.#i = [];
396
395
  }
397
396
  static setTwProp(e, c) {
398
397
  let u = argChk_Num(c, "repeat", 1);