@famibee/skynovel 1.64.15 → 1.64.17
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.map +1 -1
- package/dist/Reading.js +5 -9
- package/dist/Reading.js.map +1 -1
- package/dist/ScriptIterator.js +1 -0
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +101 -101
- package/dist/SndBuf.js.map +1 -1
- package/dist/sn/CmnInterface.d.ts +1 -1
- package/dist/sn/CmnInterface.d.ts.map +1 -1
- package/dist/sn/CmnLib.d.ts +2 -0
- package/dist/sn/CmnLib.d.ts.map +1 -1
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts +1 -0
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/SysBase.d.ts.map +1 -1
- package/dist/web2.js +6 -2
- package/dist/web2.js.map +1 -1
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Reading.js +17 -21
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/ScriptIterator.js +1 -0
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +101 -101
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/app2.js +92 -88
- package/dist_app/app2.js.map +1 -1
- package/dist_app/sn/CmnInterface.d.ts +1 -1
- package/dist_app/sn/CmnInterface.d.ts.map +1 -1
- package/dist_app/sn/CmnLib.d.ts +2 -0
- package/dist_app/sn/CmnLib.d.ts.map +1 -1
- package/dist_app/sn/Reading.d.ts.map +1 -1
- package/dist_app/sn/SndBuf.d.ts +1 -0
- package/dist_app/sn/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/SysBase.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/LayerMng.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerMng.js","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\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","/* eslint-disable @typescript-eslint/restrict-template-expressions */\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: ${a}; ${b_color} position: absolute; left:${\n\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t}px; top: ${\n\t\t\tFrameMng.#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(${sx}, ${sy}) rotate(${r}deg);\" width=\"${\n\t\t\trct.width *FrameMng.#sys.cvsScale\n\t\t}\" height=\"${\n\t\t\trct.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} ${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) res.type = LoaderResource.TYPE.IMAGE;\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} ${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 = `${FrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale}px`;\n\t\t\tf.style.top = `${FrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale}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 = `${++this.#zIdx}`;\n\t\telse if ('index' in hArg) s.zIndex = `${argChk_Num(hArg, 'index', 0)}`;\n\t\telse if (hArg.dive) s.zIndex = `-${++this.#zIdx}`;\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 = `${FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale}px`;\n\t\t\ts.top = `${FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale}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(${sx}, ${sy}) rotate(${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 = ()=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = ()=> {\n\t\t\t\tf.style.opacity = String(hNow.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', hNow.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = ()=> { /* 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 = ()=> {\n\t\t\t\tf.style.left = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +hNow.x! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.top = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +hNow.y! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.transform = `scale(${hNow.sx}, ${hNow.sy}) rotate(${hNow.r}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', hNow.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', hNow.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', hNow.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', hNow.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', hNow.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = ()=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.width = `${hNow.w! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', hNow.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = ()=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.height = `${hNow.h! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', hNow.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), ()=> {\n\t\t\tfncA(); fncXYSR(); fncW(); fncH();\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: ()=> 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\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>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>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, this.appPixi);\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('| 《'+ 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>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>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>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>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>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"],"names":["Pages","layname","cls","fore","back","hArg","sys","val","ret","fncF","f","b","nm","argChk_Boolean","#pg","valnm","hash","def","v","aPrm","FrameMng","hTag","appPixi","o","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#cfg","#sys","#main","cfg","main","#evtMng","evtMng","#hIfrm","id","style","#hIfrmVisibleBk","src","a","sx","sy","vn","b_color","rct","#rect","RPN_ADD_FRAME","Reading","url","SEARCH_PATH_ARG_EXT","ld","Loader","LoaderResource","res","next","r","e","_ldr","hRes","#hDisabled","iLastSep","path_parent","path_pa_pa","br","_","p1","win","i","#loadPic2Img","argChk_Num","CmnLib","img","onload","oUrl","#hEncImgOUrl","aImg","#hARetImg","srcNoPrm","Prm","path","ld2","s2","u2","ri","x","y","w","h","var_name","text","#zIdx","s","d","alpha","scale_x","scale_y","rotate","width","height","hNow","hArg2","CmnTween","fncA","fncXYSR","fncW","fncH","Log","oCfg","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","cnvSArg","LayerMng","scrItr","sndMng","prpPrs","fncResizeLay","#modeLnSub","ln","#aLayName","#hPages","#frmMng","#elc","tid","#log","TxtLayer","me","GrpLayer","#loadplugin","#snapshot","#snapshot4proc","RPN_SNAPSHOT","#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","SpritesMng","#dump_lay","#enable_event","#button","#cmdTxt","#bg_color","parseColor","grp","Graphics","#fore","#back","#stage","#spTransBack","#spTransFore","fncTxt_b_alpha","_name","#foreachRedrawTxtLayBack","fncBtnFont","Button","DesignCast","type","#hProcDbgRes","Container","EventListenerCtn","lay","gdc","#selectNode","#curTxtlay","#modeLn","node","pages","#grpCover","visible","bg_color","p","RubySpliter","TxtStage","g_alpha","cmd","tl","_record","_hArg","dt","getDateStr","fn0","PROTOCOL_USERDATA","PROTOCOL_DL","layer","aBk","ctn","#getLayers","sp","argChk_Color","rnd","autoDetectRenderer","pg","re","renTx","RenderTexture","fn","join","RPN_LOADPLUGIN","addStyle","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","dive","idx_dive","pg_dive","back_dive","fore_dive","idx_back_dive","idx_fore_dive","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","Sprite","#rtTransFore","sDoTrans","aLayFore","comp","idx","TW_NM_TRANS","aBackTransAfter","aBack","ticker","renderer","fncRenderBack","oldFnc","render","fncRenderFore","fncRender","glsl","rule","comp2","uniforms","Texture","Filter","tw","isStop","fnc","aLn","layers","ai","bi","l","aLayCtn","c","uint","fncV","name","finishBlendLayer","hTo","arrive","backlay","spBack","Layer","#add_filter2","#enable_filter2","len","record","doRecLog","#pgTxtlay","tf","t","$hPages","aSort","ps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LayerMng.js","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\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","/* eslint-disable @typescript-eslint/restrict-template-expressions */\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: ${a}; ${b_color} position: absolute; left:${\n\t\t\tFrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale\n\t\t}px; top: ${\n\t\t\tFrameMng.#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(${sx}, ${sy}) rotate(${r}deg);\" width=\"${\n\t\t\trct.width *FrameMng.#sys.cvsScale\n\t\t}\" height=\"${\n\t\t\trct.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} ${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) res.type = LoaderResource.TYPE.IMAGE;\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} ${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 = `${FrameMng.#sys.ofsLeft4elm +x *FrameMng.#sys.cvsScale}px`;\n\t\t\tf.style.top = `${FrameMng.#sys.ofsTop4elm +y *FrameMng.#sys.cvsScale}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 = `${++this.#zIdx}`;\n\t\telse if ('index' in hArg) s.zIndex = `${argChk_Num(hArg, 'index', 0)}`;\n\t\telse if (hArg.dive) s.zIndex = `-${++this.#zIdx}`;\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 = `${FrameMng.#sys.ofsLeft4elm +rct.x *FrameMng.#sys.cvsScale}px`;\n\t\t\ts.top = `${FrameMng.#sys.ofsTop4elm +rct.y *FrameMng.#sys.cvsScale}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(${sx}, ${sy}) rotate(${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 = ()=> { /* empty */ };\n\t\tif (alpha) {\n\t\t\thTo.a = argChk_Num(hArg2, 'alpha', 0);\n\t\t\tfncA = ()=> {\n\t\t\t\tf.style.opacity = String(hNow.a);\n\t\t\t\tthis.val.setVal_Nochk('tmp', 'alpha', hNow.a);\n\t\t\t};\n\t\t}\n\t\tlet fncXYSR = ()=> { /* 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 = ()=> {\n\t\t\t\tf.style.left = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsLeft4elm +hNow.x! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.top = `${\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tFrameMng.#sys.ofsTop4elm +hNow.y! *FrameMng.#sys.cvsScale\n\t\t\t\t} px`;\n\t\t\t\tf.style.transform = `scale(${hNow.sx}, ${hNow.sy}) rotate(${hNow.r}deg)`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.x', hNow.x);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.y', hNow.y);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_x', hNow.sx);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.scale_y', hNow.sy);\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.rotate', hNow.r);\n\t\t\t};\n\t\t}\n\t\tlet fncW = ()=> { /* empty */ };\n\t\tif (width) {\n\t\t\thTo.w = rct.width;\n\t\t\tfncW = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.width = `${hNow.w! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.width', hNow.w);\n\t\t\t};\n\t\t}\n\t\tlet fncH = ()=> { /* empty */ };\n\t\tif (height) {\n\t\t\thTo.h = rct.height;\n\t\t\tfncH = ()=> {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tf.height = `${hNow.h! *FrameMng.#sys.cvsScale} px`;\n\t\t\t\tthis.val.setVal_Nochk('tmp', vn +'.height', hNow.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), ()=> {\n\t\t\tfncA(); fncXYSR(); fncW(); fncH();\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: ()=> 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>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>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, this.appPixi);\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('| 《'+ 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>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>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>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>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>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"],"names":["Pages","layname","cls","fore","back","hArg","sys","val","ret","fncF","f","b","nm","argChk_Boolean","#pg","valnm","hash","def","v","aPrm","FrameMng","hTag","appPixi","o","#add_frame","#let_frame","#set_frame","#frame","#tsy_frame","#cfg","#sys","#main","cfg","main","#evtMng","evtMng","#hIfrm","id","style","#hIfrmVisibleBk","src","a","sx","sy","vn","b_color","rct","#rect","RPN_ADD_FRAME","Reading","url","SEARCH_PATH_ARG_EXT","ld","Loader","LoaderResource","res","next","r","e","_ldr","hRes","#hDisabled","iLastSep","path_parent","path_pa_pa","br","_","p1","win","i","#loadPic2Img","argChk_Num","CmnLib","img","onload","oUrl","#hEncImgOUrl","aImg","#hARetImg","srcNoPrm","Prm","path","ld2","s2","u2","ri","x","y","w","h","var_name","text","#zIdx","s","d","alpha","scale_x","scale_y","rotate","width","height","hNow","hArg2","CmnTween","fncA","fncXYSR","fncW","fncH","Log","oCfg","#rec_ch","#rec_r","#reset_rec","#LastLog","#aLog","cnvSArg","LayerMng","scrItr","sndMng","prpPrs","fncResizeLay","#modeLnSub","ln","#aLayName","#hPages","#frmMng","#elc","tid","#log","TxtLayer","me","GrpLayer","#loadplugin","#snapshot","#snapshot4proc","RPN_SNAPSHOT","#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","SpritesMng","#dump_lay","#enable_event","#button","#cmdTxt","#bg_color","parseColor","grp","Graphics","#fore","#back","#stage","#spTransBack","#spTransFore","fncTxt_b_alpha","_name","#foreachRedrawTxtLayBack","fncBtnFont","Button","DesignCast","type","#hProcDbgRes","Container","EventListenerCtn","lay","gdc","#selectNode","#curTxtlay","#modeLn","node","pages","#grpCover","visible","bg_color","p","RubySpliter","TxtStage","g_alpha","cmd","tl","_record","_hArg","dt","getDateStr","fn0","PROTOCOL_USERDATA","PROTOCOL_DL","layer","aBk","ctn","#getLayers","sp","argChk_Color","rnd","autoDetectRenderer","pg","re","renTx","RenderTexture","fn","join","RPN_LOADPLUGIN","addStyle","#chkTxtLay","#getTxtLayer","#$getTxtLayer","#$current","#firstGrplay","#argChk_layer","#rebuildLayerRankInfo","dive","idx_dive","pg_dive","back_dive","fore_dive","idx_back_dive","idx_fore_dive","#sortLayers","#foreachLayers","#srcRuleTransFragment","#rtTransBack","Sprite","#rtTransFore","sDoTrans","aLayFore","comp","idx","TW_NM_TRANS","aBackTransAfter","aBack","ticker","renderer","fncRenderBack","oldFnc","render","fncRenderFore","fncRender","glsl","rule","comp2","uniforms","Texture","Filter","tw","isStop","fnc","aLn","layers","ai","bi","l","aLayCtn","c","uint","fncV","name","finishBlendLayer","hTo","arrive","backlay","spBack","Layer","#add_filter2","#enable_filter2","len","record","doRecLog","#pgTxtlay","tf","t","$hPages","aSort","ps"],"mappings":"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"}
|
package/dist/Reading.js
CHANGED
|
@@ -479,20 +479,16 @@ class n {
|
|
|
479
479
|
static recodePage(t = !1) {
|
|
480
480
|
if (!a.val.getVal("save:sn.doRecLog")) return;
|
|
481
481
|
const { fn: i, idx: s } = a.scrItr.nowScrIdx(), r = `${s - 1}:` + i;
|
|
482
|
-
if (this.aPage.findIndex((
|
|
482
|
+
if (this.aPage.findIndex((c) => c.key === r) > -1) return;
|
|
483
483
|
d.debugLog && console.log(`📜 %crecodePage === week:${t} lenPage:${this.lenPage} len:${this.aPage.length} POP:${this.aPage.at(-1)?.week}`, "color:#3B0;"), this.aPage.at(-1)?.week && this.aPage.pop();
|
|
484
|
-
const { max_len: o } = a.cfg.oCfg.log;
|
|
485
|
-
|
|
484
|
+
const { max_len: o } = a.cfg.oCfg.log, l = a.scrItr.nowMark();
|
|
485
|
+
l.hSave["const.sn.sLog"] = "[]", this.aPage.push({
|
|
486
486
|
key: r,
|
|
487
487
|
week: t,
|
|
488
488
|
fn: a.val.getVal("save:const.sn.scriptFn", i),
|
|
489
489
|
index: a.val.getVal("save:const.sn.scriptIdx", 0),
|
|
490
|
-
mark:
|
|
491
|
-
}) > o && (this.aPage = this.aPage.slice(-o)), this.lenPage = this.aPage.length, d.debugLog)
|
|
492
|
-
const l = a.scrItr.nowMark();
|
|
493
|
-
console.log(` %clenPage:${this.lenPage} (base=${l.hPages.base.fore.sBkFn} 0=${l.hPages[0].fore.sBkFn} mes=${/color: \w+;/.exec(l.hPages.mes.fore.txs.cssText)})%c mark:%o`, "color:#3B0;", "", l), console.table(this.aPage);
|
|
494
|
-
}
|
|
495
|
-
a.val.setVal_Nochk("sys", "const.sn.aPageLog", JSON.stringify(this.aPage));
|
|
490
|
+
mark: l
|
|
491
|
+
}) > o && (this.aPage = this.aPage.slice(-o)), this.lenPage = this.aPage.length, d.debugLog && (console.log(` %clenPage:${this.lenPage} (base=${l.hPages.base.fore.sBkFn} 0=${l.hPages[0].fore.sBkFn} mes=${/color: \w+;/.exec(l.hPages.mes.fore.txs.cssText)})%c mark:%o`, "color:#3B0;", "", l), console.table(this.aPage)), a.val.setVal_Nochk("sys", "const.sn.aPageLog", JSON.stringify(this.aPage));
|
|
496
492
|
}
|
|
497
493
|
static playbackPage(t, i) {
|
|
498
494
|
this.aPage = JSON.parse(t), this.lenPage = this.aPage.length, this.posPage >= this.lenPage && (this.posPage = this.lenPage - 1), this.styPaging = i;
|