@famibee/skynovel 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/Button.js +36 -34
  2. package/dist/Button.js.map +1 -1
  3. package/dist/CallStack.js +11 -6
  4. package/dist/CallStack.js.map +1 -1
  5. package/dist/CmnInterface.js +13 -11
  6. package/dist/CmnInterface.js.map +1 -1
  7. package/dist/CmnLib.js +58 -56
  8. package/dist/CmnLib.js.map +1 -1
  9. package/dist/Config.js +9 -7
  10. package/dist/Config.js.map +1 -1
  11. package/dist/ConfigBase.js +52 -49
  12. package/dist/ConfigBase.js.map +1 -1
  13. package/dist/DebugMng.js +9 -6
  14. package/dist/DebugMng.js.map +1 -1
  15. package/dist/EventListenerCtn.js +6 -4
  16. package/dist/EventListenerCtn.js.map +1 -1
  17. package/dist/EventMng.js +522 -417
  18. package/dist/EventMng.js.map +1 -1
  19. package/dist/Grammar.js +22 -20
  20. package/dist/Grammar.js.map +1 -1
  21. package/dist/GrpLayer.js +58 -57
  22. package/dist/GrpLayer.js.map +1 -1
  23. package/dist/Layer.js +66 -64
  24. package/dist/Layer.js.map +1 -1
  25. package/dist/LayerMng.js +461 -441
  26. package/dist/LayerMng.js.map +1 -1
  27. package/dist/Main.js +69 -67
  28. package/dist/Main.js.map +1 -1
  29. package/dist/PropParser.js +23 -19
  30. package/dist/PropParser.js.map +1 -1
  31. package/dist/Reading.js +422 -418
  32. package/dist/Reading.js.map +1 -1
  33. package/dist/RubySpliter.js +4 -2
  34. package/dist/RubySpliter.js.map +1 -1
  35. package/dist/ScriptIterator.js +374 -370
  36. package/dist/ScriptIterator.js.map +1 -1
  37. package/dist/SndBuf.js +643 -622
  38. package/dist/SndBuf.js.map +1 -1
  39. package/dist/SoundMng.js +59 -60
  40. package/dist/SoundMng.js.map +1 -1
  41. package/dist/SpritesMng.js +135 -129
  42. package/dist/SpritesMng.js.map +1 -1
  43. package/dist/SysBase.js +1019 -955
  44. package/dist/SysBase.js.map +1 -1
  45. package/dist/TxtLayer.js +558 -551
  46. package/dist/TxtLayer.js.map +1 -1
  47. package/dist/Variable.js +47 -45
  48. package/dist/Variable.js.map +1 -1
  49. package/dist/chunk.js +11 -9
  50. package/dist/gamepad.js +396 -660
  51. package/dist/gamepad.js.map +1 -1
  52. package/dist/pixi.js +3044 -3648
  53. package/dist/pixi.js.map +1 -1
  54. package/dist/platform.js +6 -4
  55. package/dist/platform.js.map +1 -1
  56. package/dist/rolldown-runtime.js +20 -0
  57. package/dist/web.js +106 -590
  58. package/dist/web.js.map +1 -1
  59. package/dist_app/Button.js +36 -34
  60. package/dist_app/Button.js.map +1 -1
  61. package/dist_app/CallStack.js +11 -6
  62. package/dist_app/CallStack.js.map +1 -1
  63. package/dist_app/CmnInterface.js +13 -11
  64. package/dist_app/CmnInterface.js.map +1 -1
  65. package/dist_app/CmnLib.js +58 -56
  66. package/dist_app/CmnLib.js.map +1 -1
  67. package/dist_app/Config.js +9 -7
  68. package/dist_app/Config.js.map +1 -1
  69. package/dist_app/ConfigBase.js +52 -49
  70. package/dist_app/ConfigBase.js.map +1 -1
  71. package/dist_app/DebugMng.js +9 -6
  72. package/dist_app/DebugMng.js.map +1 -1
  73. package/dist_app/EventListenerCtn.js +6 -4
  74. package/dist_app/EventListenerCtn.js.map +1 -1
  75. package/dist_app/EventMng.js +522 -417
  76. package/dist_app/EventMng.js.map +1 -1
  77. package/dist_app/Grammar.js +22 -20
  78. package/dist_app/Grammar.js.map +1 -1
  79. package/dist_app/GrpLayer.js +58 -57
  80. package/dist_app/GrpLayer.js.map +1 -1
  81. package/dist_app/Layer.js +66 -64
  82. package/dist_app/Layer.js.map +1 -1
  83. package/dist_app/LayerMng.js +461 -441
  84. package/dist_app/LayerMng.js.map +1 -1
  85. package/dist_app/Main.js +69 -67
  86. package/dist_app/Main.js.map +1 -1
  87. package/dist_app/PropParser.js +23 -19
  88. package/dist_app/PropParser.js.map +1 -1
  89. package/dist_app/Reading.js +422 -418
  90. package/dist_app/Reading.js.map +1 -1
  91. package/dist_app/RubySpliter.js +4 -2
  92. package/dist_app/RubySpliter.js.map +1 -1
  93. package/dist_app/ScriptIterator.js +374 -370
  94. package/dist_app/ScriptIterator.js.map +1 -1
  95. package/dist_app/SndBuf.js +643 -622
  96. package/dist_app/SndBuf.js.map +1 -1
  97. package/dist_app/SoundMng.js +59 -60
  98. package/dist_app/SoundMng.js.map +1 -1
  99. package/dist_app/SpritesMng.js +135 -129
  100. package/dist_app/SpritesMng.js.map +1 -1
  101. package/dist_app/SysBase.js +1019 -955
  102. package/dist_app/SysBase.js.map +1 -1
  103. package/dist_app/TxtLayer.js +558 -551
  104. package/dist_app/TxtLayer.js.map +1 -1
  105. package/dist_app/Variable.js +47 -45
  106. package/dist_app/Variable.js.map +1 -1
  107. package/dist_app/app.js +62 -63
  108. package/dist_app/app.js.map +1 -1
  109. package/dist_app/appMain.js +1 -21
  110. package/dist_app/appMain.js.map +1 -1
  111. package/dist_app/chunk.js +11 -9
  112. package/dist_app/gamepad.js +396 -660
  113. package/dist_app/gamepad.js.map +1 -1
  114. package/dist_app/pixi.js +2028 -1990
  115. package/dist_app/pixi.js.map +1 -1
  116. package/dist_app/platform.js +6 -4
  117. package/dist_app/platform.js.map +1 -1
  118. package/dist_app/preload.js +1 -1
  119. package/dist_app/preload.js.map +1 -1
  120. package/dist_app/rolldown-runtime.js +20 -0
  121. package/package.json +20 -47
package/dist_app/app.js CHANGED
@@ -1,12 +1,10 @@
1
- import { g as uint, l as argChk_Num, s as argChk_Boolean, t as CmnLib, u as getDateStr } from "./CmnLib.js";
2
- import { n as creSYS_DATA } from "./CmnInterface.js";
3
- import "./pixi.js";
4
- import "./EventListenerCtn.js";
5
- import "./ConfigBase.js";
6
- import { t as SysBase } from "./SysBase.js";
7
- import { t as DebugMng } from "./DebugMng.js";
8
- import { t as Layer } from "./Layer.js";
9
- var { to_app } = globalThis, SysApp = class extends SysBase {
1
+ import { g as e, l as t, s as n, t as r, u as i } from "./CmnLib.js";
2
+ import { n as a } from "./CmnInterface.js";
3
+ import { t as o } from "./SysBase.js";
4
+ import { t as s } from "./DebugMng.js";
5
+ import { t as c } from "./Layer.js";
6
+ //#region src/sn/SysApp.ts
7
+ var { to_app: l } = globalThis, u = class extends o {
10
8
  constructor(...[e = {}, t = {
11
9
  cur: "prj/",
12
10
  crypto: !1,
@@ -15,10 +13,10 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
15
13
  super(e, t), this.loaded(e, t);
16
14
  }
17
15
  async loaded(...[t, n]) {
18
- await super.loaded(t, n), this.#e = await to_app.getInfo(), CmnLib.isPackaged = this.#e.isPackaged, this.arg = {
16
+ await super.loaded(t, n), this.#e = await l.getInfo(), r.isPackaged = this.#e.isPackaged, this.arg = {
19
17
  ...n,
20
- cur: this.#e.getAppPath.replaceAll("\\", "/") + (CmnLib.isPackaged ? "/doc/" : "/") + n.cur
21
- }, to_app.on("log", (e, t) => console.info("main: %o", t)), this.$path_downloads = this.#e.downloads.replaceAll("\\", "/") + "/", CmnLib.isDbg = !!this.#e.env.SKYNOVEL_DBG && !CmnLib.isPackaged, CmnLib.isDbg && (this.extPort = uint(this.#e.env.SKYNOVEL_PORT ?? "3776")), await this.run();
18
+ cur: this.#e.getAppPath.replaceAll("\\", "/") + (r.isPackaged ? "/doc/" : "/") + n.cur
19
+ }, l.on("log", (e, t) => console.info("main: %o", t)), this.$path_downloads = this.#e.downloads.replaceAll("\\", "/") + "/", r.isDbg = !!this.#e.env.SKYNOVEL_DBG && !r.isPackaged, r.isDbg && (this.extPort = e(this.#e.env.SKYNOVEL_PORT ?? "3776")), await this.run();
22
20
  }
23
21
  #e = {
24
22
  getAppPath: "",
@@ -31,30 +29,30 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
31
29
  arch: ""
32
30
  };
33
31
  fetch = (e) => fetch(e, { cache: "no-store" });
34
- ensureFile = to_app.ensureFile;
32
+ ensureFile = l.ensureFile;
35
33
  async readFile(e, t) {
36
34
  return Promise.resolve("");
37
35
  }
38
- writeFile = to_app.writeFile;
39
- appendFile = to_app.appendFile;
40
- outputFile = to_app.outputFile;
36
+ writeFile = l.writeFile;
37
+ appendFile = l.appendFile;
38
+ outputFile = l.outputFile;
41
39
  isApp = !0;
42
40
  $path_userdata = "";
43
41
  $path_downloads = "";
44
42
  async initVal(e, n) {
45
- e["const.sn.isDebugger"] = !1, this.$path_userdata = CmnLib.isDbg ? this.#e.getAppPath.slice(0, -3) + ".vscode/" : this.#e.userData.replaceAll("\\", "/") + "/", this.flushSub = () => {
46
- to_app.flush(JSON.parse(JSON.stringify(this.data)));
43
+ e["const.sn.isDebugger"] = !1, this.$path_userdata = r.isDbg ? this.#e.getAppPath.slice(0, -3) + ".vscode/" : this.#e.userData.replaceAll("\\", "/") + "/", this.flushSub = () => {
44
+ l.flush(JSON.parse(JSON.stringify(this.data)));
47
45
  }, await this.#t();
48
- let i = e["const.sn.isFirstBoot"] = await to_app.Store_isEmpty();
49
- if (i) this.data.sys = creSYS_DATA(), this.data.mark = {}, this.data.kidoku = {};
46
+ let i = e["const.sn.isFirstBoot"] = await l.Store_isEmpty();
47
+ if (i) this.data.sys = a(), this.data.mark = {}, this.data.kidoku = {};
50
48
  else {
51
- let e = await to_app.Store_get();
49
+ let e = await l.Store_get();
52
50
  this.data.sys = e.sys, this.data.mark = e.mark, this.data.kidoku = e.kidoku;
53
51
  }
54
- let o = argChk_Num(this.data.sys, "const.sn.nativeWindow.x", 0), s = argChk_Num(this.data.sys, "const.sn.nativeWindow.y", 0), c = this.data.sys["const.sn.nativeWindow.w"] || CmnLib.stageW, u = this.data.sys["const.sn.nativeWindow.h"] || CmnLib.stageH;
55
- to_app.on("save_win_inf", (t, { x: r, y: i, w: a, h: o }) => {
52
+ let o = t(this.data.sys, "const.sn.nativeWindow.x", 0), s = t(this.data.sys, "const.sn.nativeWindow.y", 0), c = this.data.sys["const.sn.nativeWindow.w"] || r.stageW, u = this.data.sys["const.sn.nativeWindow.h"] || r.stageH;
53
+ l.on("save_win_inf", (t, { x: r, y: i, w: a, h: o }) => {
56
54
  this.data.sys["const.sn.nativeWindow.x"] = r, this.data.sys["const.sn.nativeWindow.y"] = i, this.data.sys["const.sn.nativeWindow.w"] = a, this.data.sys["const.sn.nativeWindow.h"] = o, e["const.sn.screenResolutionX"] = screen.availWidth, e["const.sn.screenResolutionY"] = screen.availHeight, n(this.data);
57
- }), await to_app.inited(this.cfg.oCfg, {
55
+ }), await l.inited(this.cfg.oCfg, {
58
56
  c: i,
59
57
  x: o,
60
58
  y: s,
@@ -62,16 +60,16 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
62
60
  h: u
63
61
  });
64
62
  }
65
- #t = () => to_app.Store({
63
+ #t = () => l.Store({
66
64
  cwd: this.$path_userdata + "storage",
67
65
  name: this.arg.crypto ? "data_" : "data",
68
66
  encryptionKey: this.arg.crypto ? this.stk() : void 0
69
67
  });
70
68
  init(e, t, n) {
71
69
  let r = super.init(e, t, n);
72
- document.body.style.backgroundColor = "#000", to_app.on("shutdown", (e) => this.main?.destroy());
70
+ document.body.style.backgroundColor = "#000", l.on("shutdown", (e) => this.main?.destroy());
73
71
  let i = new MouseEvent("click");
74
- return to_app.on("fire", (e, t) => this.fire(t, i)), r;
72
+ return l.on("fire", (e, t) => this.fire(t, i)), r;
75
73
  }
76
74
  cvsResize() {
77
75
  if (super.cvsResize(), !this.main) return;
@@ -82,18 +80,18 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
82
80
  }
83
81
  copyBMFolder = (e, t) => {
84
82
  let n = `${this.$path_userdata}storage/${String(e)}/`, r = `${this.$path_userdata}storage/${String(t)}/`;
85
- to_app.existsSync(n).then(async (e) => {
86
- e && await to_app.copy(n, r);
83
+ l.existsSync(n).then(async (e) => {
84
+ e && await l.copy(n, r);
87
85
  });
88
86
  };
89
87
  eraseBMFolder = (e) => {
90
- to_app.remove(`${this.$path_userdata}storage/${String(e)}/`);
88
+ l.remove(`${this.$path_userdata}storage/${String(e)}/`);
91
89
  };
92
- close = () => (to_app.win_close(), !1);
93
- _export = () => (to_app.zip(this.$path_userdata + "storage/", this.$path_downloads + (this.arg.crypto ? "" : "no_crypto_") + this.cfg.headNs + getDateStr("-", "_", "") + ".spd").then(() => {
94
- CmnLib.debugLog && console.log("プレイデータをエクスポートしました"), this.fire("sn:exported", new MouseEvent("click"));
90
+ close = () => (l.win_close(), !1);
91
+ _export = () => (l.zip(this.$path_userdata + "storage/", this.$path_downloads + (this.arg.crypto ? "" : "no_crypto_") + this.cfg.headNs + i("-", "_", "") + ".spd").then(() => {
92
+ r.debugLog && console.log("プレイデータをエクスポートしました"), this.fire("sn:exported", new MouseEvent("click"));
95
93
  }), !1);
96
- _import = () => (to_app.showOpenDialog({
94
+ _import = () => (l.showOpenDialog({
97
95
  title: "play data import",
98
96
  filters: [{
99
97
  name: "sn import",
@@ -103,26 +101,26 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
103
101
  }).then(async ({ canceled: e, filePaths: [t] }) => {
104
102
  if (e) return;
105
103
  let n = () => this.flush();
106
- this.flush = () => {}, await to_app.unzip(t, this.$path_userdata + "storage/"), await this.#t();
107
- let i = await to_app.Store_get();
108
- this.data.sys = i.sys, this.data.mark = i.mark, this.data.kidoku = i.kidoku, this.flush = n, this.flush(), this.val.updateData(i), CmnLib.debugLog && console.log("プレイデータをインポートしました"), this.fire("sn:imported", new MouseEvent("click"));
104
+ this.flush = () => {}, await l.unzip(t, this.$path_userdata + "storage/"), await this.#t();
105
+ let i = await l.Store_get();
106
+ this.data.sys = i.sys, this.data.mark = i.mark, this.data.kidoku = i.kidoku, this.flush = n, this.flush(), this.val.updateData(i), r.debugLog && console.log("プレイデータをインポートしました"), this.fire("sn:imported", new MouseEvent("click"));
109
107
  }).catch((e) => console.log(`[import] err: ${String(e)}`)), !1);
110
108
  navigate_to = (e) => {
111
109
  let { url: t } = e;
112
110
  if (!t) throw "[navigate_to] urlは必須です";
113
- return to_app.navigate_to(t), !1;
111
+ return l.navigate_to(t), !1;
114
112
  };
115
113
  titleSub(e) {
116
- to_app.win_setTitle(e);
114
+ l.win_setTitle(e);
117
115
  }
118
- tglFlscr_sub = () => to_app.isSimpleFullScreen().then(async (e) => {
119
- this.isFullScr = !e, await to_app.setSimpleFullScreen(this.isFullScr);
116
+ tglFlscr_sub = () => l.isSimpleFullScreen().then(async (e) => {
117
+ this.isFullScr = !e, await l.setSimpleFullScreen(this.isFullScr);
120
118
  });
121
119
  update_check = (e) => {
122
120
  let { url: t } = e;
123
121
  if (!t) throw "[update_check] urlは必須です";
124
122
  if (!t.endsWith("/")) throw "[update_check] urlの末尾は/にして下さい";
125
- return CmnLib.debugLog && DebugMng.myTrace(`[update_check] url=${t}`, "D"), this.fetch(t + "_index.json").then(async (e) => {
123
+ return r.debugLog && s.myTrace(`[update_check] url=${t}`, "D"), this.fetch(t + "_index.json").then(async (e) => {
126
124
  let n = {
127
125
  title: "アプリ更新",
128
126
  icon: this.#e.getAppPath + "/app/icon.png",
@@ -132,10 +130,10 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
132
130
  message: `アプリ【${this.cfg.oCfg.book.title}】に更新があります。\nダウンロードしますか?`
133
131
  };
134
132
  e.ok ? await this.#n(e, t, n) : await this.#r(t, n);
135
- }).catch((e) => DebugMng.myTrace(String(e), "ET")), !1;
133
+ }).catch((e) => s.myTrace(String(e), "ET")), !1;
136
134
  };
137
135
  async #n(e, t, n) {
138
- CmnLib.debugLog && DebugMng.myTrace("[update_check] _index.jsonを取得しました", "D");
136
+ r.debugLog && s.myTrace("[update_check] _index.jsonを取得しました", "D");
139
137
  let i = await e.json();
140
138
  if (!await this.#i(i.version, n)) return;
141
139
  let a = this.#e.platform + "_" + this.#e.arch, o = i[a];
@@ -144,18 +142,18 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
144
142
  await this.#a(t, a + "-" + e, r), await this.#o(n);
145
143
  return;
146
144
  }
147
- let c = "", u = /* @__PURE__ */ RegExp("^" + this.#e.platform + "_"), d = Object.entries(i).flatMap(([e, { path: n, cn: r }]) => u.test(e) ? (c += "\n- " + n, this.#a(t, e + "-" + r, n)) : []);
145
+ let c = "", u = RegExp("^" + this.#e.platform + "_"), d = Object.entries(i).flatMap(([e, { path: n, cn: r }]) => u.test(e) ? (c += "\n- " + n, this.#a(t, e + "-" + r, n)) : []);
148
146
  n.message = `CPU = ${this.#e.arch}\nに対応するファイルが見つかりません。同じOSのファイルをすべてダウンロードしますか?`, n.detail = `${String(d.length)} 個ファイルがあります` + c;
149
- let { response: f } = await to_app.showMessageBox(n);
147
+ let { response: f } = await l.showMessageBox(n);
150
148
  f > 0 || (await Promise.allSettled(d), await this.#o(n));
151
149
  }
152
150
  async #r(e, t) {
153
- let n = await this.fetch(e + `latest${CmnLib.isMac ? "-mac" : ""}.yml`);
151
+ let n = await this.fetch(e + `latest${r.isMac ? "-mac" : ""}.yml`);
154
152
  if (!n.ok) {
155
- if (CmnLib.debugLog) throw "[update_check] .ymlが見つかりません";
153
+ if (r.debugLog) throw "[update_check] .ymlが見つかりません";
156
154
  return;
157
155
  }
158
- CmnLib.debugLog && DebugMng.myTrace("[update_check] .ymlを取得しました", "D");
156
+ r.debugLog && s.myTrace("[update_check] .ymlを取得しました", "D");
159
157
  let i = await n.text(), a = /version: (.+)/.exec(i)?.[1];
160
158
  if (!a) throw "[update_check] .yml に version が見つかりません";
161
159
  if (!await this.#i(a, t)) return;
@@ -163,11 +161,11 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
163
161
  if (!o) throw "[update_check] path が見つかりません";
164
162
  let [, c] = o;
165
163
  if (!c) throw "[update_check] path が見つかりません.";
166
- CmnLib.debugLog && DebugMng.myTrace(`[update_check] path=${c}`, "D");
164
+ r.debugLog && s.myTrace(`[update_check] path=${c}`, "D");
167
165
  let l = /sha512: (.+)/.exec(i);
168
166
  if (!l) throw "[update_check] sha512 が見つかりません";
169
167
  let [, u] = l;
170
- CmnLib.debugLog && DebugMng.myTrace(`[update_check] sha=${u ?? ""}=`, "D");
168
+ r.debugLog && s.myTrace(`[update_check] sha=${u ?? ""}=`, "D");
171
169
  let [, d, f] = /(.+)(\.\w+)/.exec(c) ?? [
172
170
  "",
173
171
  "",
@@ -177,36 +175,37 @@ var { to_app } = globalThis, SysApp = class extends SysBase {
177
175
  }
178
176
  async #i(e, t) {
179
177
  let n = this.#e.getVersion;
180
- if (CmnLib.debugLog && DebugMng.myTrace(`[update_check] 現在ver=${n} 新規ver=${e}`, "D"), e === n) return CmnLib.debugLog && DebugMng.myTrace("[update_check] バージョン更新なし", "I"), !1;
178
+ if (r.debugLog && s.myTrace(`[update_check] 現在ver=${n} 新規ver=${e}`, "D"), e === n) return r.debugLog && s.myTrace("[update_check] バージョン更新なし", "I"), !1;
181
179
  t.detail = `現在 NOW ver ${n}\n新規 NEW ver ${e}`;
182
- let { response: i } = await to_app.showMessageBox(t);
183
- return i > 0 ? !1 : (CmnLib.debugLog && DebugMng.myTrace("[update_check] アプリダウンロード開始", "D"), !0);
180
+ let { response: i } = await l.showMessageBox(t);
181
+ return i > 0 ? !1 : (r.debugLog && s.myTrace("[update_check] アプリダウンロード開始", "D"), !0);
184
182
  }
185
183
  async #a(e, t, n) {
186
- CmnLib.debugLog && DebugMng.myTrace(`[update_check] アプリファイルDL試行... url=${e + t}`, "D");
184
+ r.debugLog && s.myTrace(`[update_check] アプリファイルDL試行... url=${e + t}`, "D");
187
185
  let i = await this.fetch(e + t);
188
186
  if (!i.ok) {
189
- CmnLib.debugLog && DebugMng.myTrace(`[update_check] アプリファイルが見つかりません url=${e + n}`);
187
+ r.debugLog && s.myTrace(`[update_check] アプリファイルが見つかりません url=${e + n}`);
190
188
  return;
191
189
  }
192
190
  let a = this.#e.downloads + "/" + n;
193
- CmnLib.debugLog && DebugMng.myTrace(`[update_check] pathDL=${a}`, "D"), await this.writeFile(a, new DataView(await i.arrayBuffer()));
191
+ r.debugLog && s.myTrace(`[update_check] pathDL=${a}`, "D"), await this.writeFile(a, new DataView(await i.arrayBuffer()));
194
192
  }
195
193
  async #o(e) {
196
- CmnLib.debugLog && DebugMng.myTrace("アプリファイルを保存しました", "D"), e.buttons.pop(), e.message = `アプリ【${this.cfg.oCfg.book.title}】の更新パッケージを\nダウンロードしました`, await to_app.showMessageBox(e);
194
+ r.debugLog && s.myTrace("アプリファイルを保存しました", "D"), e.buttons.pop(), e.message = `アプリ【${this.cfg.oCfg.book.title}】の更新パッケージを\nダウンロードしました`, await l.showMessageBox(e);
197
195
  }
198
196
  window = (e) => {
199
- let i = argChk_Num(e, "x", Number(this.val.getVal("sys:const.sn.nativeWindow.x", 0))), a = argChk_Num(e, "y", Number(this.val.getVal("sys:const.sn.nativeWindow.y", 0))), o = argChk_Num(e, "w", Number(this.val.getVal("sys:const.sn.nativeWindow.w", CmnLib.stageW))), s = argChk_Num(e, "h", Number(this.val.getVal("sys:const.sn.nativeWindow.h", CmnLib.stageH)));
200
- return to_app.window(argChk_Boolean(e, "centering", !1), i, a, CmnLib.stageW, CmnLib.stageH), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.x", i), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.y", a), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.w", o), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.h", s), this.flush(), !1;
197
+ let i = t(e, "x", Number(this.val.getVal("sys:const.sn.nativeWindow.x", 0))), a = t(e, "y", Number(this.val.getVal("sys:const.sn.nativeWindow.y", 0))), o = t(e, "w", Number(this.val.getVal("sys:const.sn.nativeWindow.w", r.stageW))), s = t(e, "h", Number(this.val.getVal("sys:const.sn.nativeWindow.h", r.stageH)));
198
+ return l.window(n(e, "centering", !1), i, a, r.stageW, r.stageH), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.x", i), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.y", a), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.w", o), this.val.setVal_Nochk("sys", "const.sn.nativeWindow.h", s), this.flush(), !1;
201
199
  };
202
200
  capturePage(e, t, n, r) {
203
- to_app.capturePage(e, t, n).then(() => r());
201
+ l.capturePage(e, t, n).then(() => r());
204
202
  }
205
203
  async savePic(e, t) {
206
204
  let n = t.slice(t.indexOf(",", 20) + 1);
207
- await this.ensureFile(e), await this.writeFile(e, n), CmnLib.debugLog && console.log(`画像ファイル ${e} を保存しました`);
205
+ await this.ensureFile(e), await this.writeFile(e, n), r.debugLog && console.log(`画像ファイル ${e} を保存しました`);
208
206
  }
209
207
  };
210
- export { CmnLib, Layer, SysApp, argChk_Boolean, argChk_Num };
208
+ //#endregion
209
+ export { r as CmnLib, c as Layer, u as SysApp, n as argChk_Boolean, t as argChk_Num };
211
210
 
212
211
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","names":["#hInfo","#setStore","mbo: MessageBoxOptions","#idxjs_found","#idxjs_not_found","#dl_start","#dl_app","#dl_comp","a: Promise<void>[]"],"sources":["../src/sn/SysApp.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 {T_HINFO} from '../appMain_cmn';\nimport {SysBase} from './SysBase';\nimport {CmnLib, getDateStr, argChk_Boolean, argChk_Num, uint} from './CmnLib';\nimport type {T_HTag, TTag} from './Grammar';\nimport type {T_Variable, T_Data4Vari, T_SysBaseParams, T_SysBaseLoadedParams, T_H_TMP_DATA} from './CmnInterface';\nimport {creSYS_DATA} from './CmnInterface';\nimport type {HPROC, SAVE_WIN_INF} from '../preload';\nimport {DebugMng} from './DebugMng';\nconst {to_app} = <{to_app: HPROC;}><unknown>globalThis;\n\nimport type {Application} from 'pixi.js';\nimport type {IpcRendererEvent, MessageBoxOptions} from 'electron/renderer';\nimport type {readFile} from 'fs-extra';\n\n\ntype T_upd__index_json_pkg = {\n\t[pkg_name: string]: {\n\t\tpath\t: string;\n\t\tsize\t: number;\n\t\tsha512\t: string;\n\t\tcn\t\t: string;\n\t};\n\t// 'win32_x64': {\n\t// \t'path': 'xxx-1.0.0-x64.exe',\n\t// \t'size': 23892...,\n\t// \t'sha512': 'GVaqx...',\n\t// \t'cn': 'YTNm...'\n\t// }\n}\ntype T_upd__index_json = T_upd__index_json_pkg & {\n\tversion\t: string;\n\tname\t: string;\n}\n\n\n\t// console.log はアプリのコンソールに出る\nexport class SysApp extends SysBase {\n\tconstructor(...[hPlg = {}, arg = {cur: 'prj/', crypto: false, dip: ''}]: T_SysBaseParams) {\t// DOMContentLoaded は呼び出し側でやる\n\t\tsuper(hPlg, arg);\n\n\t\tvoid this.loaded(hPlg, arg);\n\t}\n\tprotected override async loaded(...[hPlg, arg]: T_SysBaseLoadedParams) {\n\t\tawait super.loaded(hPlg, arg);\n\n\t\tthis.#hInfo = await to_app.getInfo();\n\t\tCmnLib.isPackaged = this.#hInfo.isPackaged;\n\t\tthis.arg = {...arg, cur: this.#hInfo.getAppPath.replaceAll('\\\\', '/') + (CmnLib.isPackaged ?'/doc/' :'/')+ arg.cur};\n\n\t\tto_app.on('log', (_: IpcRendererEvent, arg: unknown)=> console.info('main: %o', arg));\n\n\t\tthis.$path_downloads = this.#hInfo.downloads.replaceAll('\\\\', '/') +'/';\n\n\t\tCmnLib.isDbg = Boolean(this.#hInfo.env.SKYNOVEL_DBG) && ! CmnLib.isPackaged;\t// 配布版では無効\n\t\tif (CmnLib.isDbg) this.extPort = uint(this.#hInfo.env.SKYNOVEL_PORT ?? '3776');\n\n\t\tawait this.run();\n\t}\n\t#hInfo: T_HINFO = {\n\t\tgetAppPath\t: '',\n\t\tisPackaged\t: false,\n\t\tdownloads\t: '',\n\t\tuserData\t: '',\n\t\tgetVersion\t: '',\n\t\tenv\t\t\t: {},\n\t\tplatform\t: '',\n\t\tarch\t\t: '',\n\t};\n\n\n\toverride\treadonly\tfetch = (url: string)=> fetch(url, {cache: 'no-store'});\n\n\toverride\treadonly\tensureFile\t= to_app.ensureFile;\n\tprotected\tasync readFile(_path: string, _encoding: Parameters<typeof readFile>[1]): Promise<string> {return Promise.resolve('')}\n\tprotected\treadonly\twriteFile\t= to_app.writeFile;\n\toverride\treadonly\tappendFile\t= to_app.appendFile;\n\toverride\treadonly\toutputFile\t= to_app.outputFile;\n\n\toverride readonly\tisApp = true;\n\tprotected \toverride $path_userdata\t\t= '';\n\tprotected\toverride $path_downloads\t= '';\n\n\toverride async\tinitVal(hTmp: T_H_TMP_DATA, comp: (data: T_Data4Vari)=> void) {\n\t\t// システム情報\n\t\thTmp['const.sn.isDebugger'] = false;\n\t\t\t// システムがデバッグ用の特別なバージョンか\n\t\t\t// AIRNovel の const.flash.system.Capabilities.isDebugger\n\n\t\tthis.$path_userdata\t= CmnLib.isDbg\n\t\t\t? this.#hInfo.getAppPath.slice(0, -3) +'.vscode/'\t// /doc → /\n\t\t\t: this.#hInfo.userData.replaceAll('\\\\', '/') +'/';\n\n\t\tthis.flushSub = ()=> {\n\t\t\tvoid to_app.flush(JSON.parse(JSON.stringify(this.data)));\n\t\t}\t// 関数や undefined を無視してくれるので、structuredClone() よりいい動作\n\t\tawait this.#setStore();\n\n\t\tconst first = hTmp['const.sn.isFirstBoot']\n\t\t= await to_app.Store_isEmpty();\n\t\tif (first) {\n\t\t\t// データがない(初回起動)場合の処理\n\t\t\tthis.data.sys = creSYS_DATA();\n\t\t\tthis.data.mark = {};\n\t\t\tthis.data.kidoku = {};\n\t\t}\n\t\telse {\n\t\t\t// データがある場合の処理\n\t\t\tconst o = await to_app.Store_get();\n\t\t\tthis.data.sys = o.sys;\n\t\t\tthis.data.mark = o.mark;\n\t\t\tthis.data.kidoku = o.kidoku;\n\t\t}\n\n\t\t// ウインドウ位置\n\t\tconst x = argChk_Num(this.data.sys, 'const.sn.nativeWindow.x', 0);\n\t\t//const x = Number(this.val.getVal(\t// ここではまだ使えない\n\t\tconst y = argChk_Num(this.data.sys, 'const.sn.nativeWindow.y', 0);\n\t\tconst w = this.data.sys['const.sn.nativeWindow.w'] || CmnLib.stageW;\n\t\tconst h = this.data.sys['const.sn.nativeWindow.h'] || CmnLib.stageH;\n\n\t\tto_app.on('save_win_inf', (_e, {x, y, w, h}: SAVE_WIN_INF)=> {\n// // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n// console.log(`fn:SysApp.ts save_win_inf (${x},${y},${w},${h})`);\n\t\t\tthis.data.sys['const.sn.nativeWindow.x'] = x;\n\t\t\tthis.data.sys['const.sn.nativeWindow.y'] = y;\n\t\t\tthis.data.sys['const.sn.nativeWindow.w'] = w;\n\t\t\tthis.data.sys['const.sn.nativeWindow.h'] = h;\n\n\t\t\t// ・画面サイズ:screen.width ウインドウが表示されているディスプレイのサイズ\n\t\t\t//\t※ macOSなら【設定】-【ディスプレイ】-【使用形態】のイメージボタンにホバーすると出る数字と同じ\n// DebugMng.myTrace(`fn:SysApp.ts 画面サイズ(${String(screen.width)} x ${String(screen.height)}) 利用可能領域(${String(screen.availWidth)} x ${String(screen.availHeight)})`, 'W');\n\t\t\thTmp['const.sn.screenResolutionX'] = screen.availWidth;\t// 画面の最大水平解像度\n\t\t\thTmp['const.sn.screenResolutionY'] = screen.availHeight;\t// 画面の最大垂直解像度\n\t\t\t\t// AIRNovel の const.flash.system.Capabilities.screenResolutionX、Y\n\t\t\t\t// 上のメニューバーは含んでいない(たぶん an も)。含むのは workAreaSize\n\n\t\t\tcomp(this.data);\n\t\t});\n\n// console.log(`fn:SysApp.ts to_app.inited(${x},${y},${w},${h})`);\n\t\tawait to_app.inited(this.cfg.oCfg, {c: first, x, y, w, h});\n\t}\n\treadonly\t#setStore = ()=> to_app.Store({\n\t\tcwd\t: this.$path_userdata +'storage',\n\t\tname: this.arg.crypto ?'data_' :'data',\n\t\tencryptionKey: this.arg.crypto ?this.stk() :undefined,\n\t});\n\n\n\toverride init(hTag: T_HTag, appPixi: Application, val: T_Variable) {\n\t\tconst ret = super.init(hTag, appPixi, val);\n\t\tdocument.body.style.backgroundColor = '#000';\n\n\t\tto_app.on('shutdown', (_e)=> this.main?.destroy());\n\n\t\tconst ev = new MouseEvent('click');\n\t\tto_app.on('fire', (_e, KEY: string)=> this.fire(KEY, ev));\n\t\t//to_app.on('call', (_e: IpcRendererEvent, fn: string, label: string)=> main.resumeByJumpOrCall({fn, label}));\t// 実験・保留コード。セキュリティ懸念\n\n\t\treturn ret;\n\t}\n\n\n\toverride cvsResize() {\n\t\tsuper.cvsResize();\n\n\t\tif (! this.main) return;\n\t\tconst cvs = this.main.cvs;\n\t\tconst ps = cvs.parentElement?.style;\n\t\tif (! ps) return;\n\t\tconst s = cvs.style;\n\t\tif (this.isFullScr) {\n\t\t\tps.position = '';\t// SysBaseを上書き\n\t\t\tps.width = '';\n\t\t\tps.height= '';\n\n\t\t\ts.position = 'fixed';\n\t\t\ts.left = `${String(this.ofsLeft4elm)}px`;\n\t\t\ts.top = `${String(this.ofsTop4elm)}px`;\n\t\t}\n\t\telse {\n\t\t\tps.position = 'relative';\t// SysBaseを上書き\n\t\t\tps.width = `${String(this.cvsWidth)}px`;\n\t\t\tps.height= `${String(this.cvsHeight)}px`;\n\n\t\t\ts.position = 'relative';\n\t\t\ts.left = '';\n\t\t\ts.top = '';\n\t\t}\n\t}\n\n\n\toverride readonly copyBMFolder = (from: number, to: number)=> {\n\t\tconst path_from = `${this.$path_userdata}storage/${String(from)}/`;\n\t\tconst path_to = `${this.$path_userdata}storage/${String(to)}/`;\n\t\tvoid to_app.existsSync(path_from).then(async v=> {\n\t\t\tif (v) await to_app.copy(path_from, path_to);\n\t\t});\n\t};\n\toverride readonly eraseBMFolder = (place: number)=> {\n\t\tvoid to_app.remove(`${this.$path_userdata}storage/${String(place)}/`);\n\t};\n\n\t// アプリの終了\n\tprotected override readonly\tclose = ()=> {to_app.win_close(); return false}\n\n\t// プレイデータをエクスポート\n\tprotected override readonly\t_export = ()=> {\n\t\tvoid to_app.zip(\n\t\t\tthis.$path_userdata +'storage/',\n\t\t\tthis.$path_downloads + (this.arg.crypto ?'' :'no_crypto_')\n\t\t\t+ this.cfg.headNs + getDateStr('-', '_', '') +'.spd',\n\t\t).then(()=> {\n\t\t\tif (CmnLib.debugLog) console.log('プレイデータをエクスポートしました');\n\t\t\tthis.fire('sn:exported', new MouseEvent('click'));\t// 末尾に処理\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t// プレイデータをインポート\n\tprotected override readonly\t_import = ()=> {\n\t\tto_app.showOpenDialog({\n\t\t\ttitle\t: 'play data import',\n\t\t\tfilters\t: [{name: 'sn import', extensions: ['spd']}],\n\t\t\tproperties: [\n\t\t\t\t'openFile',\t// - ファイルを選択するのを許可します。\n\t\t\t\t// openDirectory - ディレクトリを選択するのを許可します。\n\t\t\t\t// multiSelections - 複数のパスを選択するのを許可します。\n\t\t\t],\n\t\t}).then(async ({canceled, filePaths: [inp]})=> {\n\t\t\tif (canceled) return;\n\n\t\t\tconst bkFlush = ()=> this.flush();\n\t\t\tthis.flush = ()=> { /* empty */ };\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tawait to_app.unzip(inp!, this.$path_userdata +'storage/');\n\n\t\t\tawait this.#setStore();\n\t\t\tconst o = await to_app.Store_get();\n\t\t\tthis.data.sys = o.sys;\n\t\t\tthis.data.mark = o.mark;\n\t\t\tthis.data.kidoku = o.kidoku;\n\t\t\tthis.flush = bkFlush;\n\t\t\tthis.flush();\n\t\t\tthis.val.updateData(o);\n\n\t\t\tif (CmnLib.debugLog) console.log('プレイデータをインポートしました');\n\t\t\tthis.fire('sn:imported', new MouseEvent('click'));\n\t\t})\n\t\t.catch((e: unknown)=> console.log(`[import] err: ${String(e)}`));\n\n\t\treturn false;\n\t}\n\n\t// URLを開く\n\tprotected override readonly\tnavigate_to: TTag = hArg=> {\n\t\tconst {url} = hArg;\n\t\tif (! url) throw '[navigate_to] urlは必須です';\n\n\t\tto_app.navigate_to(url);\n\n\t\treturn false;\n\t}\n\t// タイトル指定\n\tprotected override titleSub(title: string) {to_app.win_setTitle(title)}\n\n\t// 全画面状態切替\n\tprotected override readonly\ttglFlscr_sub\n\t= ()=> to_app.isSimpleFullScreen().then(async isFS=> {\n\t\tthis.isFullScr = ! isFS;\n\t\tawait to_app.setSimpleFullScreen(this.isFullScr);\n\t});\n\n\t// 更新チェック\n\tprotected override readonly\tupdate_check: TTag = hArg=> {\n\t\tconst {url} = hArg;\n\t\tif (! url) throw '[update_check] urlは必須です';\n\t\tif (! url.endsWith('/')) throw '[update_check] urlの末尾は/にして下さい';\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] url=${url}`, 'D');\n\n\t\tvoid this.fetch(url +'_index.json')\n\t\t.then(async o=> {\n\t\t\tconst mbo: MessageBoxOptions = {\n\t\t\t\ttitle\t: 'アプリ更新',\n\t\t\t\ticon\t: this.#hInfo.getAppPath +'/app/icon.png',\n\t\t\t\tbuttons\t: ['OK', 'Cancel'],\n\t\t\t\tdefaultId\t: 0,\n\t\t\t\tcancelId\t: 1,\n\t\t\t\tmessage\t: `アプリ【${this.cfg.oCfg.book.title}】に更新があります。\\nダウンロードしますか?`,\n\t\t\t};\n\t\t\tif (o.ok) await this.#idxjs_found(o, url, mbo);\n\t\t\telse await this.#idxjs_not_found(url, mbo);\n\t\t})\n\t\t.catch((e: unknown)=> DebugMng.myTrace(String(e), 'ET'));\n\n\t\treturn false;\n\t}\n\tasync #idxjs_found(o: Response, url: string, mbo: MessageBoxOptions) {\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] _index.jsonを取得しました', 'D');\n\t\tconst oIdx = <T_upd__index_json>await o.json();\n\t\tif (! await this.#dl_start(oIdx.version, mbo)) return;\n\n\t\tconst key = this.#hInfo.platform +'_'+ this.#hInfo.arch;\n\t//\tconst key = this.#hInfo.platform +'_@'+ this.#hInfo.arch;\n\t\t\t// アーキテクチャがない場合の動作テスト\n\t\tconst k = oIdx[key];\n\t\tif (k) {\n\t\t\tconst {cn, path} = k;\n\t\t\tawait this.#dl_app(url, key +'-'+ cn, path);\n\t\t\tawait this.#dl_comp(mbo);\n\t\t\treturn;\n\t\t}\n\n\t\tlet d = '';\n\t\tconst regOldSameKey = new RegExp('^'+ this.#hInfo.platform +'_');\n\t\tconst a: Promise<void>[] = Object.entries(<{[nm: string]: {\n\t\t\tpath: string,\n\t\t\tcn\t: string,\n\t\t}}>oIdx)\n\t\t.flatMap(([nm, {path, cn}])=> {\n\t\t\tif (! regOldSameKey.test(nm)) return [];\n\t\t\td += '\\n- '+ path;\n\t\t\treturn this.#dl_app(url, nm +'-'+ cn, path);\n\t\t});\n\n\t\tmbo.message = `CPU = ${this.#hInfo.arch}\\nに対応するファイルが見つかりません。同じOSのファイルをすべてダウンロードしますか?`;\n\t\tmbo.detail = `${String(a.length)} 個ファイルがあります`+ d;\n\t\tconst {response} = await to_app.showMessageBox(mbo);\n\t\tif (response > 0) return;\n\n\t\tawait Promise.allSettled(a);\n\t\tawait this.#dl_comp(mbo);\n\t}\n\tasync #idxjs_not_found(url: string, mbo: MessageBoxOptions) {\n\t\tconst o = await this.fetch(url +`latest${CmnLib.isMac ?'-mac' :''}.yml`);\n\t\tif (! o.ok) {\n\t\t\tif (CmnLib.debugLog) throw '[update_check] .ymlが見つかりません';\n\t\t\treturn;\n\t\t}\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] .ymlを取得しました', 'D');\n\t\tconst sYml = await o.text();\n\t\tconst mv = /version: (.+)/.exec(sYml);\n\t\tconst mv2 = mv?.[1];\n\t\tif (! mv2) throw '[update_check] .yml に version が見つかりません';\n\n\t\tif (! await this.#dl_start(mv2, mbo)) return;\n\n\n\t\tconst mp = /path: (.+)/.exec(sYml);\n\t\tif (! mp) throw '[update_check] path が見つかりません';\n\t\tconst [,path] = mp;\n\t\tif (! path) throw '[update_check] path が見つかりません.';\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] path=${path}`, 'D');\n\n\t\tconst mc = /sha512: (.+)/.exec(sYml);\n\t\tif (! mc) throw '[update_check] sha512 が見つかりません';\n\t\tconst [,sha] = mc;\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] sha=${sha ?? ''}=`, 'D');\n\n\t\t// (id)-1.0.0-arm64.dmg\n\t\tconst [,id, arch] = /(.+)(\\.\\w+)/.exec(path) ?? ['', '', ''];\n\t\tawait this.#dl_app(url, id + '-' + this.#hInfo.arch + arch, path);\n\t\tawait this.#dl_comp(mbo);\n\t}\n\n\tasync #dl_start(netver: string, mbo: MessageBoxOptions): Promise<boolean> {\n\t\tconst appver = this.#hInfo.getVersion;\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] 現在ver=${appver} 新規ver=${netver}`, 'D');\n\t\tif (netver === appver) {\n\t\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] バージョン更新なし', 'I');\n\t\t\treturn false;\n\t\t}\n\n\t\tmbo.detail = `現在 NOW ver ${appver}\\n新規 NEW ver ${netver}`;\n\t\tconst {response} = await to_app.showMessageBox(mbo);\n\t\tif (response > 0) return false;\n\n\t\t// アプリダウンロード\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] アプリダウンロード開始', 'D');\n\n\t\treturn true;\n\t}\n\tasync #dl_app(url: string, urlApp: string, fn: string) {\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] アプリファイルDL試行... url=${url + urlApp}`, 'D');\n\t\tconst o = await this.fetch(url + urlApp);\n\t\tif (! o.ok) {\n\t\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] アプリファイルが見つかりません url=${url + fn}`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst pathDL = this.#hInfo.downloads +'/'+ fn;\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] pathDL=${pathDL}`, 'D');\n\n\t\tawait this.writeFile(pathDL, new DataView(await o.arrayBuffer()));\n\t}\n\tasync #dl_comp(mbo: MessageBoxOptions) {\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('アプリファイルを保存しました', 'D');\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tmbo.buttons!.pop();\n\t\tmbo.message = `アプリ【${this.cfg.oCfg.book.title}】の更新パッケージを\\nダウンロードしました`;\n//\t\t\tmbo.message = `アプリ【${this.cfg.oCfg.book.title}】の更新パッケージを\\nダウンロードしました`+ (isOk ?'' :'が、破損しています。\\n開発元に連絡してください');\n\t\tawait to_app.showMessageBox(mbo);\n\t}\n\n\t// アプリウインドウ設定\n\tprotected override readonly\twindow: TTag = hArg=> {\n\t\tconst x = argChk_Num(hArg, 'x', Number(this.val.getVal('sys:const.sn.nativeWindow.x', 0)));\n\t\tconst y = argChk_Num(hArg, 'y', Number(this.val.getVal('sys:const.sn.nativeWindow.y', 0)));\n\t\tconst w = argChk_Num(hArg, 'w', Number(this.val.getVal('sys:const.sn.nativeWindow.w', CmnLib.stageW)));\n\t\tconst h = argChk_Num(hArg, 'h', Number(this.val.getVal('sys:const.sn.nativeWindow.h', CmnLib.stageH)));\n\t\tto_app.window(argChk_Boolean(hArg, 'centering', false), x, y, CmnLib.stageW, CmnLib.stageH);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.x', x);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.y', y);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.w', w);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.h', h);\n\t\tthis.flush();\n\n\t\treturn false;\n\t}\n\n\toverride capturePage(path: string, w: number, h: number, fnc: ()=> void) {\n\t\tvoid to_app.capturePage(path, w, h).then(()=> fnc());\n\t}\n\n\toverride async savePic(path: string, data_url: string) {\n\t\tconst bs64 = data_url.slice(data_url.indexOf(',', 20) +1);\n\t\tawait this.ensureFile(path);\n\t\tawait this.writeFile(path, bs64);\n\t\tif (CmnLib.debugLog) console.log(`画像ファイル ${path} を保存しました`);\n\t}\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"app.js","names":["#hInfo","#setStore","#idxjs_found","#idxjs_not_found","#dl_start","#dl_app","#dl_comp"],"sources":["../src/sn/SysApp.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 {T_HINFO} from '../appMain_cmn';\nimport {SysBase} from './SysBase';\nimport {CmnLib, getDateStr, argChk_Boolean, argChk_Num, uint} from './CmnLib';\nimport type {T_HTag, TTag} from './Grammar';\nimport type {T_Variable, T_Data4Vari, T_SysBaseParams, T_SysBaseLoadedParams, T_H_TMP_DATA} from './CmnInterface';\nimport {creSYS_DATA} from './CmnInterface';\nimport type {HPROC, SAVE_WIN_INF} from '../preload';\nimport {DebugMng} from './DebugMng';\nconst {to_app} = <{to_app: HPROC;}><unknown>globalThis;\n\nimport type {Application} from 'pixi.js';\nimport type {IpcRendererEvent, MessageBoxOptions} from 'electron/renderer';\nimport type {readFile} from 'fs-extra';\n\n\ntype T_upd__index_json_pkg = {\n\t[pkg_name: string]: {\n\t\tpath\t: string;\n\t\tsize\t: number;\n\t\tsha512\t: string;\n\t\tcn\t\t: string;\n\t};\n\t// 'win32_x64': {\n\t// \t'path': 'xxx-1.0.0-x64.exe',\n\t// \t'size': 23892...,\n\t// \t'sha512': 'GVaqx...',\n\t// \t'cn': 'YTNm...'\n\t// }\n}\ntype T_upd__index_json = T_upd__index_json_pkg & {\n\tversion\t: string;\n\tname\t: string;\n}\n\n\n\t// console.log はアプリのコンソールに出る\nexport class SysApp extends SysBase {\n\tconstructor(...[hPlg = {}, arg = {cur: 'prj/', crypto: false, dip: ''}]: T_SysBaseParams) {\t// DOMContentLoaded は呼び出し側でやる\n\t\tsuper(hPlg, arg);\n\n\t\tvoid this.loaded(hPlg, arg);\n\t}\n\tprotected override async loaded(...[hPlg, arg]: T_SysBaseLoadedParams) {\n\t\tawait super.loaded(hPlg, arg);\n\n\t\tthis.#hInfo = await to_app.getInfo();\n\t\tCmnLib.isPackaged = this.#hInfo.isPackaged;\n\t\tthis.arg = {...arg, cur: this.#hInfo.getAppPath.replaceAll('\\\\', '/') + (CmnLib.isPackaged ?'/doc/' :'/')+ arg.cur};\n\n\t\tto_app.on('log', (_: IpcRendererEvent, arg: unknown)=> console.info('main: %o', arg));\n\n\t\tthis.$path_downloads = this.#hInfo.downloads.replaceAll('\\\\', '/') +'/';\n\n\t\tCmnLib.isDbg = Boolean(this.#hInfo.env.SKYNOVEL_DBG) && ! CmnLib.isPackaged;\t// 配布版では無効\n\t\tif (CmnLib.isDbg) this.extPort = uint(this.#hInfo.env.SKYNOVEL_PORT ?? '3776');\n\n\t\tawait this.run();\n\t}\n\t#hInfo: T_HINFO = {\n\t\tgetAppPath\t: '',\n\t\tisPackaged\t: false,\n\t\tdownloads\t: '',\n\t\tuserData\t: '',\n\t\tgetVersion\t: '',\n\t\tenv\t\t\t: {},\n\t\tplatform\t: '',\n\t\tarch\t\t: '',\n\t};\n\n\n\toverride\treadonly\tfetch = (url: string)=> fetch(url, {cache: 'no-store'});\n\n\toverride\treadonly\tensureFile\t= to_app.ensureFile;\n\tprotected\tasync readFile(_path: string, _encoding: Parameters<typeof readFile>[1]): Promise<string> {return Promise.resolve('')}\n\tprotected\treadonly\twriteFile\t= to_app.writeFile;\n\toverride\treadonly\tappendFile\t= to_app.appendFile;\n\toverride\treadonly\toutputFile\t= to_app.outputFile;\n\n\toverride readonly\tisApp = true;\n\tprotected \toverride $path_userdata\t\t= '';\n\tprotected\toverride $path_downloads\t= '';\n\n\toverride async\tinitVal(hTmp: T_H_TMP_DATA, comp: (data: T_Data4Vari)=> void) {\n\t\t// システム情報\n\t\thTmp['const.sn.isDebugger'] = false;\n\t\t\t// システムがデバッグ用の特別なバージョンか\n\t\t\t// AIRNovel の const.flash.system.Capabilities.isDebugger\n\n\t\tthis.$path_userdata\t= CmnLib.isDbg\n\t\t\t? this.#hInfo.getAppPath.slice(0, -3) +'.vscode/'\t// /doc → /\n\t\t\t: this.#hInfo.userData.replaceAll('\\\\', '/') +'/';\n\n\t\tthis.flushSub = ()=> {\n\t\t\tvoid to_app.flush(JSON.parse(JSON.stringify(this.data)));\n\t\t}\t// 関数や undefined を無視してくれるので、structuredClone() よりいい動作\n\t\tawait this.#setStore();\n\n\t\tconst first = hTmp['const.sn.isFirstBoot']\n\t\t= await to_app.Store_isEmpty();\n\t\tif (first) {\n\t\t\t// データがない(初回起動)場合の処理\n\t\t\tthis.data.sys = creSYS_DATA();\n\t\t\tthis.data.mark = {};\n\t\t\tthis.data.kidoku = {};\n\t\t}\n\t\telse {\n\t\t\t// データがある場合の処理\n\t\t\tconst o = await to_app.Store_get();\n\t\t\tthis.data.sys = o.sys;\n\t\t\tthis.data.mark = o.mark;\n\t\t\tthis.data.kidoku = o.kidoku;\n\t\t}\n\n\t\t// ウインドウ位置\n\t\tconst x = argChk_Num(this.data.sys, 'const.sn.nativeWindow.x', 0);\n\t\t//const x = Number(this.val.getVal(\t// ここではまだ使えない\n\t\tconst y = argChk_Num(this.data.sys, 'const.sn.nativeWindow.y', 0);\n\t\tconst w = this.data.sys['const.sn.nativeWindow.w'] || CmnLib.stageW;\n\t\tconst h = this.data.sys['const.sn.nativeWindow.h'] || CmnLib.stageH;\n\n\t\tto_app.on('save_win_inf', (_e, {x, y, w, h}: SAVE_WIN_INF)=> {\n// // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n// console.log(`fn:SysApp.ts save_win_inf (${x},${y},${w},${h})`);\n\t\t\tthis.data.sys['const.sn.nativeWindow.x'] = x;\n\t\t\tthis.data.sys['const.sn.nativeWindow.y'] = y;\n\t\t\tthis.data.sys['const.sn.nativeWindow.w'] = w;\n\t\t\tthis.data.sys['const.sn.nativeWindow.h'] = h;\n\n\t\t\t// ・画面サイズ:screen.width ウインドウが表示されているディスプレイのサイズ\n\t\t\t//\t※ macOSなら【設定】-【ディスプレイ】-【使用形態】のイメージボタンにホバーすると出る数字と同じ\n// DebugMng.myTrace(`fn:SysApp.ts 画面サイズ(${String(screen.width)} x ${String(screen.height)}) 利用可能領域(${String(screen.availWidth)} x ${String(screen.availHeight)})`, 'W');\n\t\t\thTmp['const.sn.screenResolutionX'] = screen.availWidth;\t// 画面の最大水平解像度\n\t\t\thTmp['const.sn.screenResolutionY'] = screen.availHeight;\t// 画面の最大垂直解像度\n\t\t\t\t// AIRNovel の const.flash.system.Capabilities.screenResolutionX、Y\n\t\t\t\t// 上のメニューバーは含んでいない(たぶん an も)。含むのは workAreaSize\n\n\t\t\tcomp(this.data);\n\t\t});\n\n// console.log(`fn:SysApp.ts to_app.inited(${x},${y},${w},${h})`);\n\t\tawait to_app.inited(this.cfg.oCfg, {c: first, x, y, w, h});\n\t}\n\treadonly\t#setStore = ()=> to_app.Store({\n\t\tcwd\t: this.$path_userdata +'storage',\n\t\tname: this.arg.crypto ?'data_' :'data',\n\t\tencryptionKey: this.arg.crypto ?this.stk() :undefined,\n\t});\n\n\n\toverride init(hTag: T_HTag, appPixi: Application, val: T_Variable) {\n\t\tconst ret = super.init(hTag, appPixi, val);\n\t\tdocument.body.style.backgroundColor = '#000';\n\n\t\tto_app.on('shutdown', (_e)=> this.main?.destroy());\n\n\t\tconst ev = new MouseEvent('click');\n\t\tto_app.on('fire', (_e, KEY: string)=> this.fire(KEY, ev));\n\t\t//to_app.on('call', (_e: IpcRendererEvent, fn: string, label: string)=> main.resumeByJumpOrCall({fn, label}));\t// 実験・保留コード。セキュリティ懸念\n\n\t\treturn ret;\n\t}\n\n\n\toverride cvsResize() {\n\t\tsuper.cvsResize();\n\n\t\tif (! this.main) return;\n\t\tconst cvs = this.main.cvs;\n\t\tconst ps = cvs.parentElement?.style;\n\t\tif (! ps) return;\n\t\tconst s = cvs.style;\n\t\tif (this.isFullScr) {\n\t\t\tps.position = '';\t// SysBaseを上書き\n\t\t\tps.width = '';\n\t\t\tps.height= '';\n\n\t\t\ts.position = 'fixed';\n\t\t\ts.left = `${String(this.ofsLeft4elm)}px`;\n\t\t\ts.top = `${String(this.ofsTop4elm)}px`;\n\t\t}\n\t\telse {\n\t\t\tps.position = 'relative';\t// SysBaseを上書き\n\t\t\tps.width = `${String(this.cvsWidth)}px`;\n\t\t\tps.height= `${String(this.cvsHeight)}px`;\n\n\t\t\ts.position = 'relative';\n\t\t\ts.left = '';\n\t\t\ts.top = '';\n\t\t}\n\t}\n\n\n\toverride readonly copyBMFolder = (from: number, to: number)=> {\n\t\tconst path_from = `${this.$path_userdata}storage/${String(from)}/`;\n\t\tconst path_to = `${this.$path_userdata}storage/${String(to)}/`;\n\t\tvoid to_app.existsSync(path_from).then(async v=> {\n\t\t\tif (v) await to_app.copy(path_from, path_to);\n\t\t});\n\t};\n\toverride readonly eraseBMFolder = (place: number)=> {\n\t\tvoid to_app.remove(`${this.$path_userdata}storage/${String(place)}/`);\n\t};\n\n\t// アプリの終了\n\tprotected override readonly\tclose = ()=> {to_app.win_close(); return false}\n\n\t// プレイデータをエクスポート\n\tprotected override readonly\t_export = ()=> {\n\t\tvoid to_app.zip(\n\t\t\tthis.$path_userdata +'storage/',\n\t\t\tthis.$path_downloads + (this.arg.crypto ?'' :'no_crypto_')\n\t\t\t+ this.cfg.headNs + getDateStr('-', '_', '') +'.spd',\n\t\t).then(()=> {\n\t\t\tif (CmnLib.debugLog) console.log('プレイデータをエクスポートしました');\n\t\t\tthis.fire('sn:exported', new MouseEvent('click'));\t// 末尾に処理\n\t\t});\n\n\t\treturn false;\n\t}\n\n\t// プレイデータをインポート\n\tprotected override readonly\t_import = ()=> {\n\t\tto_app.showOpenDialog({\n\t\t\ttitle\t: 'play data import',\n\t\t\tfilters\t: [{name: 'sn import', extensions: ['spd']}],\n\t\t\tproperties: [\n\t\t\t\t'openFile',\t// - ファイルを選択するのを許可します。\n\t\t\t\t// openDirectory - ディレクトリを選択するのを許可します。\n\t\t\t\t// multiSelections - 複数のパスを選択するのを許可します。\n\t\t\t],\n\t\t}).then(async ({canceled, filePaths: [inp]})=> {\n\t\t\tif (canceled) return;\n\n\t\t\tconst bkFlush = ()=> this.flush();\n\t\t\tthis.flush = ()=> { /* empty */ };\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tawait to_app.unzip(inp!, this.$path_userdata +'storage/');\n\n\t\t\tawait this.#setStore();\n\t\t\tconst o = await to_app.Store_get();\n\t\t\tthis.data.sys = o.sys;\n\t\t\tthis.data.mark = o.mark;\n\t\t\tthis.data.kidoku = o.kidoku;\n\t\t\tthis.flush = bkFlush;\n\t\t\tthis.flush();\n\t\t\tthis.val.updateData(o);\n\n\t\t\tif (CmnLib.debugLog) console.log('プレイデータをインポートしました');\n\t\t\tthis.fire('sn:imported', new MouseEvent('click'));\n\t\t})\n\t\t.catch((e: unknown)=> console.log(`[import] err: ${String(e)}`));\n\n\t\treturn false;\n\t}\n\n\t// URLを開く\n\tprotected override readonly\tnavigate_to: TTag = hArg=> {\n\t\tconst {url} = hArg;\n\t\tif (! url) throw '[navigate_to] urlは必須です';\n\n\t\tto_app.navigate_to(url);\n\n\t\treturn false;\n\t}\n\t// タイトル指定\n\tprotected override titleSub(title: string) {to_app.win_setTitle(title)}\n\n\t// 全画面状態切替\n\tprotected override readonly\ttglFlscr_sub\n\t= ()=> to_app.isSimpleFullScreen().then(async isFS=> {\n\t\tthis.isFullScr = ! isFS;\n\t\tawait to_app.setSimpleFullScreen(this.isFullScr);\n\t});\n\n\t// 更新チェック\n\tprotected override readonly\tupdate_check: TTag = hArg=> {\n\t\tconst {url} = hArg;\n\t\tif (! url) throw '[update_check] urlは必須です';\n\t\tif (! url.endsWith('/')) throw '[update_check] urlの末尾は/にして下さい';\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] url=${url}`, 'D');\n\n\t\tvoid this.fetch(url +'_index.json')\n\t\t.then(async o=> {\n\t\t\tconst mbo: MessageBoxOptions = {\n\t\t\t\ttitle\t: 'アプリ更新',\n\t\t\t\ticon\t: this.#hInfo.getAppPath +'/app/icon.png',\n\t\t\t\tbuttons\t: ['OK', 'Cancel'],\n\t\t\t\tdefaultId\t: 0,\n\t\t\t\tcancelId\t: 1,\n\t\t\t\tmessage\t: `アプリ【${this.cfg.oCfg.book.title}】に更新があります。\\nダウンロードしますか?`,\n\t\t\t};\n\t\t\tif (o.ok) await this.#idxjs_found(o, url, mbo);\n\t\t\telse await this.#idxjs_not_found(url, mbo);\n\t\t})\n\t\t.catch((e: unknown)=> DebugMng.myTrace(String(e), 'ET'));\n\n\t\treturn false;\n\t}\n\tasync #idxjs_found(o: Response, url: string, mbo: MessageBoxOptions) {\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] _index.jsonを取得しました', 'D');\n\t\tconst oIdx = <T_upd__index_json>await o.json();\n\t\tif (! await this.#dl_start(oIdx.version, mbo)) return;\n\n\t\tconst key = this.#hInfo.platform +'_'+ this.#hInfo.arch;\n\t//\tconst key = this.#hInfo.platform +'_@'+ this.#hInfo.arch;\n\t\t\t// アーキテクチャがない場合の動作テスト\n\t\tconst k = oIdx[key];\n\t\tif (k) {\n\t\t\tconst {cn, path} = k;\n\t\t\tawait this.#dl_app(url, key +'-'+ cn, path);\n\t\t\tawait this.#dl_comp(mbo);\n\t\t\treturn;\n\t\t}\n\n\t\tlet d = '';\n\t\tconst regOldSameKey = new RegExp('^'+ this.#hInfo.platform +'_');\n\t\tconst a: Promise<void>[] = Object.entries(<{[nm: string]: {\n\t\t\tpath: string,\n\t\t\tcn\t: string,\n\t\t}}>oIdx)\n\t\t.flatMap(([nm, {path, cn}])=> {\n\t\t\tif (! regOldSameKey.test(nm)) return [];\n\t\t\td += '\\n- '+ path;\n\t\t\treturn this.#dl_app(url, nm +'-'+ cn, path);\n\t\t});\n\n\t\tmbo.message = `CPU = ${this.#hInfo.arch}\\nに対応するファイルが見つかりません。同じOSのファイルをすべてダウンロードしますか?`;\n\t\tmbo.detail = `${String(a.length)} 個ファイルがあります`+ d;\n\t\tconst {response} = await to_app.showMessageBox(mbo);\n\t\tif (response > 0) return;\n\n\t\tawait Promise.allSettled(a);\n\t\tawait this.#dl_comp(mbo);\n\t}\n\tasync #idxjs_not_found(url: string, mbo: MessageBoxOptions) {\n\t\tconst o = await this.fetch(url +`latest${CmnLib.isMac ?'-mac' :''}.yml`);\n\t\tif (! o.ok) {\n\t\t\tif (CmnLib.debugLog) throw '[update_check] .ymlが見つかりません';\n\t\t\treturn;\n\t\t}\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] .ymlを取得しました', 'D');\n\t\tconst sYml = await o.text();\n\t\tconst mv = /version: (.+)/.exec(sYml);\n\t\tconst mv2 = mv?.[1];\n\t\tif (! mv2) throw '[update_check] .yml に version が見つかりません';\n\n\t\tif (! await this.#dl_start(mv2, mbo)) return;\n\n\n\t\tconst mp = /path: (.+)/.exec(sYml);\n\t\tif (! mp) throw '[update_check] path が見つかりません';\n\t\tconst [,path] = mp;\n\t\tif (! path) throw '[update_check] path が見つかりません.';\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] path=${path}`, 'D');\n\n\t\tconst mc = /sha512: (.+)/.exec(sYml);\n\t\tif (! mc) throw '[update_check] sha512 が見つかりません';\n\t\tconst [,sha] = mc;\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] sha=${sha ?? ''}=`, 'D');\n\n\t\t// (id)-1.0.0-arm64.dmg\n\t\tconst [,id, arch] = /(.+)(\\.\\w+)/.exec(path) ?? ['', '', ''];\n\t\tawait this.#dl_app(url, id + '-' + this.#hInfo.arch + arch, path);\n\t\tawait this.#dl_comp(mbo);\n\t}\n\n\tasync #dl_start(netver: string, mbo: MessageBoxOptions): Promise<boolean> {\n\t\tconst appver = this.#hInfo.getVersion;\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] 現在ver=${appver} 新規ver=${netver}`, 'D');\n\t\tif (netver === appver) {\n\t\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] バージョン更新なし', 'I');\n\t\t\treturn false;\n\t\t}\n\n\t\tmbo.detail = `現在 NOW ver ${appver}\\n新規 NEW ver ${netver}`;\n\t\tconst {response} = await to_app.showMessageBox(mbo);\n\t\tif (response > 0) return false;\n\n\t\t// アプリダウンロード\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('[update_check] アプリダウンロード開始', 'D');\n\n\t\treturn true;\n\t}\n\tasync #dl_app(url: string, urlApp: string, fn: string) {\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] アプリファイルDL試行... url=${url + urlApp}`, 'D');\n\t\tconst o = await this.fetch(url + urlApp);\n\t\tif (! o.ok) {\n\t\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] アプリファイルが見つかりません url=${url + fn}`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst pathDL = this.#hInfo.downloads +'/'+ fn;\n\t\tif (CmnLib.debugLog) DebugMng.myTrace(`[update_check] pathDL=${pathDL}`, 'D');\n\n\t\tawait this.writeFile(pathDL, new DataView(await o.arrayBuffer()));\n\t}\n\tasync #dl_comp(mbo: MessageBoxOptions) {\n\t\tif (CmnLib.debugLog) DebugMng.myTrace('アプリファイルを保存しました', 'D');\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tmbo.buttons!.pop();\n\t\tmbo.message = `アプリ【${this.cfg.oCfg.book.title}】の更新パッケージを\\nダウンロードしました`;\n//\t\t\tmbo.message = `アプリ【${this.cfg.oCfg.book.title}】の更新パッケージを\\nダウンロードしました`+ (isOk ?'' :'が、破損しています。\\n開発元に連絡してください');\n\t\tawait to_app.showMessageBox(mbo);\n\t}\n\n\t// アプリウインドウ設定\n\tprotected override readonly\twindow: TTag = hArg=> {\n\t\tconst x = argChk_Num(hArg, 'x', Number(this.val.getVal('sys:const.sn.nativeWindow.x', 0)));\n\t\tconst y = argChk_Num(hArg, 'y', Number(this.val.getVal('sys:const.sn.nativeWindow.y', 0)));\n\t\tconst w = argChk_Num(hArg, 'w', Number(this.val.getVal('sys:const.sn.nativeWindow.w', CmnLib.stageW)));\n\t\tconst h = argChk_Num(hArg, 'h', Number(this.val.getVal('sys:const.sn.nativeWindow.h', CmnLib.stageH)));\n\t\tto_app.window(argChk_Boolean(hArg, 'centering', false), x, y, CmnLib.stageW, CmnLib.stageH);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.x', x);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.y', y);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.w', w);\n\t\tthis.val.setVal_Nochk('sys', 'const.sn.nativeWindow.h', h);\n\t\tthis.flush();\n\n\t\treturn false;\n\t}\n\n\toverride capturePage(path: string, w: number, h: number, fnc: ()=> void) {\n\t\tvoid to_app.capturePage(path, w, h).then(()=> fnc());\n\t}\n\n\toverride async savePic(path: string, data_url: string) {\n\t\tconst bs64 = data_url.slice(data_url.indexOf(',', 20) +1);\n\t\tawait this.ensureFile(path);\n\t\tawait this.writeFile(path, bs64);\n\t\tif (CmnLib.debugLog) console.log(`画像ファイル ${path} を保存しました`);\n\t}\n\n}\n"],"mappings":"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"}