@drincs/pixi-vn-ink 0.1.0

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 (74) hide show
  1. package/README.md +15 -0
  2. package/dist/functions/ChoiceInfoConverter.d.mts +5 -0
  3. package/dist/functions/ChoiceInfoConverter.d.ts +5 -0
  4. package/dist/functions/ChoiceInfoConverter.js +57 -0
  5. package/dist/functions/ChoiceInfoConverter.js.map +1 -0
  6. package/dist/functions/ChoiceInfoConverter.mjs +55 -0
  7. package/dist/functions/ChoiceInfoConverter.mjs.map +1 -0
  8. package/dist/functions/Importer.d.mts +3 -0
  9. package/dist/functions/Importer.d.ts +3 -0
  10. package/dist/functions/Importer.js +231 -0
  11. package/dist/functions/Importer.js.map +1 -0
  12. package/dist/functions/Importer.mjs +229 -0
  13. package/dist/functions/Importer.mjs.map +1 -0
  14. package/dist/functions/InkToPixivn.d.mts +5 -0
  15. package/dist/functions/InkToPixivn.d.ts +5 -0
  16. package/dist/functions/InkToPixivn.js +220 -0
  17. package/dist/functions/InkToPixivn.js.map +1 -0
  18. package/dist/functions/InkToPixivn.mjs +218 -0
  19. package/dist/functions/InkToPixivn.mjs.map +1 -0
  20. package/dist/functions/StoryInfoConverter.d.mts +6 -0
  21. package/dist/functions/StoryInfoConverter.d.ts +6 -0
  22. package/dist/functions/StoryInfoConverter.js +192 -0
  23. package/dist/functions/StoryInfoConverter.js.map +1 -0
  24. package/dist/functions/StoryInfoConverter.mjs +190 -0
  25. package/dist/functions/StoryInfoConverter.mjs.map +1 -0
  26. package/dist/functions/index.d.mts +3 -0
  27. package/dist/functions/index.d.ts +3 -0
  28. package/dist/functions/index.js +232 -0
  29. package/dist/functions/index.js.map +1 -0
  30. package/dist/functions/index.mjs +229 -0
  31. package/dist/functions/index.mjs.map +1 -0
  32. package/dist/types/InkRootType.d.mts +5 -0
  33. package/dist/types/InkRootType.d.ts +5 -0
  34. package/dist/types/InkRootType.js +4 -0
  35. package/dist/types/InkRootType.js.map +1 -0
  36. package/dist/types/InkRootType.mjs +3 -0
  37. package/dist/types/InkRootType.mjs.map +1 -0
  38. package/dist/types/InkStoryType.d.mts +9 -0
  39. package/dist/types/InkStoryType.d.ts +9 -0
  40. package/dist/types/InkStoryType.js +4 -0
  41. package/dist/types/InkStoryType.js.map +1 -0
  42. package/dist/types/InkStoryType.mjs +3 -0
  43. package/dist/types/InkStoryType.mjs.map +1 -0
  44. package/dist/types/LabelChoiceRes.d.mts +10 -0
  45. package/dist/types/LabelChoiceRes.d.ts +10 -0
  46. package/dist/types/LabelChoiceRes.js +4 -0
  47. package/dist/types/LabelChoiceRes.js.map +1 -0
  48. package/dist/types/LabelChoiceRes.mjs +3 -0
  49. package/dist/types/LabelChoiceRes.mjs.map +1 -0
  50. package/dist/types/parserItems/CallParserItemType.d.mts +5 -0
  51. package/dist/types/parserItems/CallParserItemType.d.ts +5 -0
  52. package/dist/types/parserItems/CallParserItemType.js +4 -0
  53. package/dist/types/parserItems/CallParserItemType.js.map +1 -0
  54. package/dist/types/parserItems/CallParserItemType.mjs +3 -0
  55. package/dist/types/parserItems/CallParserItemType.mjs.map +1 -0
  56. package/dist/types/parserItems/ChoiseInfoParserItemType.d.mts +8 -0
  57. package/dist/types/parserItems/ChoiseInfoParserItemType.d.ts +8 -0
  58. package/dist/types/parserItems/ChoiseInfoParserItemType.js +4 -0
  59. package/dist/types/parserItems/ChoiseInfoParserItemType.js.map +1 -0
  60. package/dist/types/parserItems/ChoiseInfoParserItemType.mjs +3 -0
  61. package/dist/types/parserItems/ChoiseInfoParserItemType.mjs.map +1 -0
  62. package/dist/types/parserItems/ChoiseParserItemType.d.mts +6 -0
  63. package/dist/types/parserItems/ChoiseParserItemType.d.ts +6 -0
  64. package/dist/types/parserItems/ChoiseParserItemType.js +4 -0
  65. package/dist/types/parserItems/ChoiseParserItemType.js.map +1 -0
  66. package/dist/types/parserItems/ChoiseParserItemType.mjs +3 -0
  67. package/dist/types/parserItems/ChoiseParserItemType.mjs.map +1 -0
  68. package/dist/types/parserItems/RootParserItemType.d.mts +5 -0
  69. package/dist/types/parserItems/RootParserItemType.d.ts +5 -0
  70. package/dist/types/parserItems/RootParserItemType.js +4 -0
  71. package/dist/types/parserItems/RootParserItemType.js.map +1 -0
  72. package/dist/types/parserItems/RootParserItemType.mjs +3 -0
  73. package/dist/types/parserItems/RootParserItemType.mjs.map +1 -0
  74. package/package.json +50 -0
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # pixi-vn-ink
2
+
3
+ npm library to import .ink files into pixi-vn
4
+
5
+ ## install project
6
+
7
+ ```bash
8
+ git clone https://github.com/DRincs-Productions/pixi-vn-ink
9
+ git submodule update --init --recursive
10
+ npm install
11
+ ```
12
+
13
+ ## Run tests
14
+
15
+ Press F5 in vscode to run tests
@@ -0,0 +1,5 @@
1
+ import LabelChoiceRes from '../types/LabelChoiceRes.mjs';
2
+
3
+ declare function getLabelChoice(items: any[], result: LabelChoiceRes): void;
4
+
5
+ export { getLabelChoice };
@@ -0,0 +1,5 @@
1
+ import LabelChoiceRes from '../types/LabelChoiceRes.js';
2
+
3
+ declare function getLabelChoice(items: any[], result: LabelChoiceRes): void;
4
+
5
+ export { getLabelChoice };
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ // src/functions/ChoiceInfoConverter.ts
4
+ function getLabelChoice(items, result) {
5
+ let text = "";
6
+ let label = "";
7
+ let preDialog = "";
8
+ items.forEach((v, index) => {
9
+ if (typeof v === "string") {
10
+ if (v.startsWith("^")) {
11
+ text = v.substring(1);
12
+ }
13
+ } else if (v && typeof v === "object") {
14
+ if ("*" in v && typeof v["*"] && typeof v["*"] === "string" && v["*"].includes("c")) {
15
+ let l = "c" + v["*"].split("c")[1];
16
+ label = l;
17
+ } else if ("s" in v && v["s"] instanceof Array) {
18
+ let t = findChoiceText(v["s"]);
19
+ if (t) {
20
+ text = t;
21
+ preDialog = t;
22
+ }
23
+ }
24
+ }
25
+ if (text && label) {
26
+ if (result[label]) {
27
+ result[label].text = text + result[label].text;
28
+ } else {
29
+ result[label] = { text };
30
+ }
31
+ if (preDialog) {
32
+ result[label].preDialog = { text: preDialog };
33
+ }
34
+ let newListItem = items.slice(index + 1);
35
+ getLabelChoice(newListItem, result);
36
+ return;
37
+ }
38
+ });
39
+ }
40
+ function findChoiceText(items) {
41
+ for (const item of items) {
42
+ if (typeof item === "string") {
43
+ if (item.startsWith("^")) {
44
+ return item.substring(1);
45
+ }
46
+ } else if (item instanceof Array) {
47
+ let res = findChoiceText(item);
48
+ if (res) {
49
+ return res;
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ exports.getLabelChoice = getLabelChoice;
56
+ //# sourceMappingURL=ChoiceInfoConverter.js.map
57
+ //# sourceMappingURL=ChoiceInfoConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/functions/ChoiceInfoConverter.ts"],"names":[],"mappings":";;;AAGO,SAAS,cAAA,CAAe,OAAc,MAAwB,EAAA;AACjE,EAAA,IAAI,IAAe,GAAA,EAAA,CAAA;AACnB,EAAA,IAAI,KAAgB,GAAA,EAAA,CAAA;AACpB,EAAA,IAAI,SAAoB,GAAA,EAAA,CAAA;AACxB,EAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAU,KAAA;AACxB,IAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AAEvB,MAAI,IAAA,CAAA,CAAE,UAAW,CAAA,GAAG,CAAG,EAAA;AACnB,QAAO,IAAA,GAAA,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA;AAAA,OACxB;AAAA,KAEK,MAAA,IAAA,CAAA,IAAK,OAAO,CAAA,KAAM,QAAU,EAAA;AAEjC,MAAA,IAAI,OAAO,CAAK,IAAA,OAAO,CAAE,CAAA,GAAG,KAAK,OAAO,CAAA,CAAE,GAAG,CAAA,KAAM,YAAY,CAAE,CAAA,GAAG,CAAE,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACjF,QAAI,IAAA,CAAA,GAAI,MAAM,CAAE,CAAA,GAAG,EAAE,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AACjC,QAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,iBAGH,GAAO,IAAA,CAAA,IAAK,CAAE,CAAA,GAAG,aAAa,KAAO,EAAA;AAC1C,QAAA,IAAI,CAAI,GAAA,cAAA,CAAe,CAAE,CAAA,GAAG,CAAC,CAAA,CAAA;AAC7B,QAAA,IAAI,CAAG,EAAA;AACH,UAAO,IAAA,GAAA,CAAA,CAAA;AACP,UAAY,SAAA,GAAA,CAAA,CAAA;AAAA,SAChB;AAAA,OACJ;AAAA,KACJ;AACA,IAAA,IAAI,QAAQ,KAAO,EAAA;AACf,MAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACf,QAAA,MAAA,CAAO,KAAK,CAAE,CAAA,IAAA,GAAO,IAAO,GAAA,MAAA,CAAO,KAAK,CAAE,CAAA,IAAA,CAAA;AAAA,OAEzC,MAAA;AACD,QAAO,MAAA,CAAA,KAAK,CAAI,GAAA,EAAE,IAAW,EAAA,CAAA;AAAA,OACjC;AACA,MAAA,IAAI,SAAW,EAAA;AACX,QAAA,MAAA,CAAO,KAAK,CAAA,CAAE,SAAY,GAAA,EAAE,MAAM,SAAU,EAAA,CAAA;AAAA,OAChD;AAEA,MAAA,IAAI,WAAc,GAAA,KAAA,CAAM,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AACvC,MAAA,cAAA,CAAe,aAAa,MAAM,CAAA,CAAA;AAClC,MAAA,OAAA;AAAA,KACJ;AAAA,GACH,CAAA,CAAA;AACL,CAAA;AAEA,SAAS,eAAe,KAAiD,EAAA;AACrE,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACtB,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC1B,MAAI,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AACtB,QAAO,OAAA,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,KACJ,MAAA,IACS,gBAAgB,KAAO,EAAA;AAC5B,MAAI,IAAA,GAAA,GAAM,eAAe,IAAI,CAAA,CAAA;AAC7B,MAAA,IAAI,GAAK,EAAA;AACL,QAAO,OAAA,GAAA,CAAA;AAAA,OACX;AAAA,KACJ;AAAA,GACJ;AACJ","file":"ChoiceInfoConverter.js","sourcesContent":["import LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\n\r\nexport function getLabelChoice(items: any[], result: LabelChoiceRes) {\r\n let text: string = \"\"\r\n let label: string = \"\"\r\n let preDialog: string = \"\"\r\n items.forEach((v, index) => {\r\n if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n text = v.substring(1)\r\n }\r\n }\r\n else if (v && typeof v === \"object\") {\r\n // if is a choice\r\n if (\"*\" in v && typeof v[\"*\"] && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n let l = \"c\" + v[\"*\"].split(\"c\")[1]\r\n label = l\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n let t = findChoiceText(v[\"s\"])\r\n if (t) {\r\n text = t\r\n preDialog = t\r\n }\r\n }\r\n }\r\n if (text && label) {\r\n if (result[label]) {\r\n result[label].text = text + result[label].text\r\n }\r\n else {\r\n result[label] = { text: text }\r\n }\r\n if (preDialog) {\r\n result[label].preDialog = { text: preDialog }\r\n }\r\n // split text and label\r\n let newListItem = items.slice(index + 1)\r\n getLabelChoice(newListItem, result)\r\n return\r\n }\r\n })\r\n}\r\n\r\nfunction findChoiceText(items: RootParserItemType[]): string | undefined {\r\n for (const item of items) {\r\n if (typeof item === \"string\") {\r\n if (item.startsWith(\"^\")) {\r\n return item.substring(1)\r\n }\r\n }\r\n else if (item instanceof Array) {\r\n let res = findChoiceText(item)\r\n if (res) {\r\n return res\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,55 @@
1
+ // src/functions/ChoiceInfoConverter.ts
2
+ function getLabelChoice(items, result) {
3
+ let text = "";
4
+ let label = "";
5
+ let preDialog = "";
6
+ items.forEach((v, index) => {
7
+ if (typeof v === "string") {
8
+ if (v.startsWith("^")) {
9
+ text = v.substring(1);
10
+ }
11
+ } else if (v && typeof v === "object") {
12
+ if ("*" in v && typeof v["*"] && typeof v["*"] === "string" && v["*"].includes("c")) {
13
+ let l = "c" + v["*"].split("c")[1];
14
+ label = l;
15
+ } else if ("s" in v && v["s"] instanceof Array) {
16
+ let t = findChoiceText(v["s"]);
17
+ if (t) {
18
+ text = t;
19
+ preDialog = t;
20
+ }
21
+ }
22
+ }
23
+ if (text && label) {
24
+ if (result[label]) {
25
+ result[label].text = text + result[label].text;
26
+ } else {
27
+ result[label] = { text };
28
+ }
29
+ if (preDialog) {
30
+ result[label].preDialog = { text: preDialog };
31
+ }
32
+ let newListItem = items.slice(index + 1);
33
+ getLabelChoice(newListItem, result);
34
+ return;
35
+ }
36
+ });
37
+ }
38
+ function findChoiceText(items) {
39
+ for (const item of items) {
40
+ if (typeof item === "string") {
41
+ if (item.startsWith("^")) {
42
+ return item.substring(1);
43
+ }
44
+ } else if (item instanceof Array) {
45
+ let res = findChoiceText(item);
46
+ if (res) {
47
+ return res;
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ export { getLabelChoice };
54
+ //# sourceMappingURL=ChoiceInfoConverter.mjs.map
55
+ //# sourceMappingURL=ChoiceInfoConverter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/functions/ChoiceInfoConverter.ts"],"names":[],"mappings":";AAGO,SAAS,cAAA,CAAe,OAAc,MAAwB,EAAA;AACjE,EAAA,IAAI,IAAe,GAAA,EAAA,CAAA;AACnB,EAAA,IAAI,KAAgB,GAAA,EAAA,CAAA;AACpB,EAAA,IAAI,SAAoB,GAAA,EAAA,CAAA;AACxB,EAAM,KAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAU,KAAA;AACxB,IAAI,IAAA,OAAO,MAAM,QAAU,EAAA;AAEvB,MAAI,IAAA,CAAA,CAAE,UAAW,CAAA,GAAG,CAAG,EAAA;AACnB,QAAO,IAAA,GAAA,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA;AAAA,OACxB;AAAA,KAEK,MAAA,IAAA,CAAA,IAAK,OAAO,CAAA,KAAM,QAAU,EAAA;AAEjC,MAAA,IAAI,OAAO,CAAK,IAAA,OAAO,CAAE,CAAA,GAAG,KAAK,OAAO,CAAA,CAAE,GAAG,CAAA,KAAM,YAAY,CAAE,CAAA,GAAG,CAAE,CAAA,QAAA,CAAS,GAAG,CAAG,EAAA;AACjF,QAAI,IAAA,CAAA,GAAI,MAAM,CAAE,CAAA,GAAG,EAAE,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAA;AACjC,QAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,iBAGH,GAAO,IAAA,CAAA,IAAK,CAAE,CAAA,GAAG,aAAa,KAAO,EAAA;AAC1C,QAAA,IAAI,CAAI,GAAA,cAAA,CAAe,CAAE,CAAA,GAAG,CAAC,CAAA,CAAA;AAC7B,QAAA,IAAI,CAAG,EAAA;AACH,UAAO,IAAA,GAAA,CAAA,CAAA;AACP,UAAY,SAAA,GAAA,CAAA,CAAA;AAAA,SAChB;AAAA,OACJ;AAAA,KACJ;AACA,IAAA,IAAI,QAAQ,KAAO,EAAA;AACf,MAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACf,QAAA,MAAA,CAAO,KAAK,CAAE,CAAA,IAAA,GAAO,IAAO,GAAA,MAAA,CAAO,KAAK,CAAE,CAAA,IAAA,CAAA;AAAA,OAEzC,MAAA;AACD,QAAO,MAAA,CAAA,KAAK,CAAI,GAAA,EAAE,IAAW,EAAA,CAAA;AAAA,OACjC;AACA,MAAA,IAAI,SAAW,EAAA;AACX,QAAA,MAAA,CAAO,KAAK,CAAA,CAAE,SAAY,GAAA,EAAE,MAAM,SAAU,EAAA,CAAA;AAAA,OAChD;AAEA,MAAA,IAAI,WAAc,GAAA,KAAA,CAAM,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AACvC,MAAA,cAAA,CAAe,aAAa,MAAM,CAAA,CAAA;AAClC,MAAA,OAAA;AAAA,KACJ;AAAA,GACH,CAAA,CAAA;AACL,CAAA;AAEA,SAAS,eAAe,KAAiD,EAAA;AACrE,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACtB,IAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC1B,MAAI,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AACtB,QAAO,OAAA,IAAA,CAAK,UAAU,CAAC,CAAA,CAAA;AAAA,OAC3B;AAAA,KACJ,MAAA,IACS,gBAAgB,KAAO,EAAA;AAC5B,MAAI,IAAA,GAAA,GAAM,eAAe,IAAI,CAAA,CAAA;AAC7B,MAAA,IAAI,GAAK,EAAA;AACL,QAAO,OAAA,GAAA,CAAA;AAAA,OACX;AAAA,KACJ;AAAA,GACJ;AACJ","file":"ChoiceInfoConverter.mjs","sourcesContent":["import LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\n\r\nexport function getLabelChoice(items: any[], result: LabelChoiceRes) {\r\n let text: string = \"\"\r\n let label: string = \"\"\r\n let preDialog: string = \"\"\r\n items.forEach((v, index) => {\r\n if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n text = v.substring(1)\r\n }\r\n }\r\n else if (v && typeof v === \"object\") {\r\n // if is a choice\r\n if (\"*\" in v && typeof v[\"*\"] && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n let l = \"c\" + v[\"*\"].split(\"c\")[1]\r\n label = l\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n let t = findChoiceText(v[\"s\"])\r\n if (t) {\r\n text = t\r\n preDialog = t\r\n }\r\n }\r\n }\r\n if (text && label) {\r\n if (result[label]) {\r\n result[label].text = text + result[label].text\r\n }\r\n else {\r\n result[label] = { text: text }\r\n }\r\n if (preDialog) {\r\n result[label].preDialog = { text: preDialog }\r\n }\r\n // split text and label\r\n let newListItem = items.slice(index + 1)\r\n getLabelChoice(newListItem, result)\r\n return\r\n }\r\n })\r\n}\r\n\r\nfunction findChoiceText(items: RootParserItemType[]): string | undefined {\r\n for (const item of items) {\r\n if (typeof item === \"string\") {\r\n if (item.startsWith(\"^\")) {\r\n return item.substring(1)\r\n }\r\n }\r\n else if (item instanceof Array) {\r\n let res = findChoiceText(item)\r\n if (res) {\r\n return res\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,3 @@
1
+ declare function importInkText(text: string): void;
2
+
3
+ export { importInkText };
@@ -0,0 +1,3 @@
1
+ declare function importInkText(text: string): void;
2
+
3
+ export { importInkText };
@@ -0,0 +1,231 @@
1
+ 'use strict';
2
+
3
+ var pixiVn = require('@drincs/pixi-vn');
4
+ var Compiler = require('inkjs/compiler/Compiler');
5
+
6
+ // src/functions/Importer.ts
7
+
8
+ // src/functions/ChoiceInfoConverter.ts
9
+ function getLabelChoice(items, result) {
10
+ let text = "";
11
+ let label = "";
12
+ let preDialog = "";
13
+ items.forEach((v, index) => {
14
+ if (typeof v === "string") {
15
+ if (v.startsWith("^")) {
16
+ text = v.substring(1);
17
+ }
18
+ } else if (v && typeof v === "object") {
19
+ if ("*" in v && typeof v["*"] && typeof v["*"] === "string" && v["*"].includes("c")) {
20
+ let l = "c" + v["*"].split("c")[1];
21
+ label = l;
22
+ } else if ("s" in v && v["s"] instanceof Array) {
23
+ let t = findChoiceText(v["s"]);
24
+ if (t) {
25
+ text = t;
26
+ preDialog = t;
27
+ }
28
+ }
29
+ }
30
+ if (text && label) {
31
+ if (result[label]) {
32
+ result[label].text = text + result[label].text;
33
+ } else {
34
+ result[label] = { text };
35
+ }
36
+ if (preDialog) {
37
+ result[label].preDialog = { text: preDialog };
38
+ }
39
+ let newListItem = items.slice(index + 1);
40
+ getLabelChoice(newListItem, result);
41
+ return;
42
+ }
43
+ });
44
+ }
45
+ function findChoiceText(items) {
46
+ for (const item of items) {
47
+ if (typeof item === "string") {
48
+ if (item.startsWith("^")) {
49
+ return item.substring(1);
50
+ }
51
+ } else if (item instanceof Array) {
52
+ let res = findChoiceText(item);
53
+ if (res) {
54
+ return res;
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ // src/functions/StoryInfoConverter.ts
61
+ function getInkLabel(story) {
62
+ try {
63
+ let label = {};
64
+ findLabel(story, label);
65
+ return label;
66
+ } catch (e) {
67
+ console.error("[Pixi'VN Ink] Error parsing ink file", e);
68
+ }
69
+ }
70
+ function findLabel(story, labels) {
71
+ for (const storyItem of story) {
72
+ if (storyItem) {
73
+ if (storyItem instanceof Array) {
74
+ findLabel(storyItem, labels);
75
+ } else if (typeof storyItem === "object") {
76
+ addLabels(storyItem, labels);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ function addLabels(storyItem, result, dadLabelKey = "", shareData = { preDialog: {} }) {
82
+ if (storyItem === null) {
83
+ return;
84
+ }
85
+ for (const [key, value] of Object.entries(storyItem)) {
86
+ if (value instanceof Array) {
87
+ let labels = [];
88
+ let subLabels = {};
89
+ let labelName = (dadLabelKey ? dadLabelKey + "_" : "") + key;
90
+ getLabel(value, labelName, labels, subLabels, shareData);
91
+ for (const [subKey, subValue] of Object.entries(subLabels)) {
92
+ result[subKey] = subValue;
93
+ }
94
+ if (labels.length > 0) {
95
+ result[labelName] = labels;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ function getLabel(items, labelKey, labelSteps, subLabels, shareData, isNewLine = true) {
101
+ var _a;
102
+ let isInEnv = false;
103
+ let envList = [];
104
+ if (shareData.preDialog[labelKey]) {
105
+ labelSteps.push({
106
+ dialog: shareData.preDialog[labelKey].text
107
+ });
108
+ delete shareData.preDialog[labelKey];
109
+ isNewLine = false;
110
+ }
111
+ items.forEach((v) => {
112
+ if (isInEnv) {
113
+ envList.push(v);
114
+ if (typeof v === "string" && v == "/ev") {
115
+ isInEnv = false;
116
+ }
117
+ } else if (typeof v === "string") {
118
+ if (v.startsWith("^")) {
119
+ if (!isNewLine && labelSteps.length > 0) {
120
+ labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1);
121
+ } else {
122
+ labelSteps.push({
123
+ dialog: v.substring(1)
124
+ });
125
+ }
126
+ isNewLine = false;
127
+ } else if (v == "ev") {
128
+ isInEnv = true;
129
+ } else if (v == "\n") {
130
+ isNewLine = true;
131
+ } else if (v == "done") {
132
+ labelSteps.push({
133
+ end: "label_end"
134
+ });
135
+ isNewLine = false;
136
+ } else if (v == "end") {
137
+ labelSteps.push({
138
+ end: "game_end"
139
+ });
140
+ isNewLine = false;
141
+ }
142
+ } else if (v instanceof Array) {
143
+ getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine);
144
+ } else if (v && typeof v === "object") {
145
+ if ("->" in v && typeof v["->"] === "string" && !v["->"].includes(".^.^.")) {
146
+ labelSteps.push({
147
+ labelToOpen: {
148
+ labelId: v["->"],
149
+ type: "call"
150
+ }
151
+ });
152
+ isNewLine = false;
153
+ } else if ("*" in v && typeof v["*"] === "string" && v["*"].includes("c")) {
154
+ envList.push(v);
155
+ isNewLine = false;
156
+ } else if ("s" in v && v["s"] instanceof Array) {
157
+ envList.push(v);
158
+ isNewLine = false;
159
+ } else {
160
+ addLabels(v, subLabels, labelKey, shareData);
161
+ }
162
+ }
163
+ });
164
+ if (envList.length > 0) {
165
+ let choices = {};
166
+ getLabelChoice(envList, choices);
167
+ for (const [key, value] of Object.entries(choices)) {
168
+ let newKey = labelKey + "_" + key;
169
+ if (labelSteps.length > 0 && "currentChoiceMenuOptions" in labelSteps[labelSteps.length - 1]) {
170
+ (_a = labelSteps[labelSteps.length - 1].currentChoiceMenuOptions) == null ? void 0 : _a.push({
171
+ text: value.text,
172
+ label: newKey,
173
+ props: {},
174
+ type: "call"
175
+ });
176
+ } else {
177
+ labelSteps.push({
178
+ currentChoiceMenuOptions: [{
179
+ text: value.text,
180
+ label: newKey,
181
+ props: {},
182
+ type: "call"
183
+ }]
184
+ });
185
+ }
186
+ if (value.preDialog) {
187
+ shareData.preDialog[newKey] = {
188
+ text: value.preDialog.text
189
+ };
190
+ }
191
+ }
192
+ }
193
+ }
194
+
195
+ // src/functions/InkToPixivn.ts
196
+ function convertInkText(text) {
197
+ let json = convertorInkToJson(text);
198
+ let obj;
199
+ try {
200
+ obj = JSON.parse(json);
201
+ } catch (e) {
202
+ console.error("[Pixi'VN Ink] Error parsing ink file", e);
203
+ return;
204
+ }
205
+ return getInkLabel(obj.root);
206
+ }
207
+ function convertorInkToJson(test) {
208
+ try {
209
+ const story = new Compiler.Compiler(test).Compile();
210
+ let json = story.ToJson();
211
+ console.log(json);
212
+ return json || "";
213
+ } catch (e) {
214
+ console.error("[Pixi'VN] Error compiling ink file", e);
215
+ return "";
216
+ }
217
+ }
218
+
219
+ // src/functions/Importer.ts
220
+ function importInkText(text) {
221
+ let data = convertInkText(text);
222
+ if (data) {
223
+ {
224
+ pixiVn.importPixiVNJson(data);
225
+ }
226
+ }
227
+ }
228
+
229
+ exports.importInkText = importInkText;
230
+ //# sourceMappingURL=Importer.js.map
231
+ //# sourceMappingURL=Importer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/functions/ChoiceInfoConverter.ts","../../src/functions/StoryInfoConverter.ts","../../src/functions/InkToPixivn.ts","../../src/functions/Importer.ts"],"names":["Compiler","importPixiVNJson"],"mappings":"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","file":"Importer.js","sourcesContent":["import LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\n\r\nexport function getLabelChoice(items: any[], result: LabelChoiceRes) {\r\n let text: string = \"\"\r\n let label: string = \"\"\r\n let preDialog: string = \"\"\r\n items.forEach((v, index) => {\r\n if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n text = v.substring(1)\r\n }\r\n }\r\n else if (v && typeof v === \"object\") {\r\n // if is a choice\r\n if (\"*\" in v && typeof v[\"*\"] && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n let l = \"c\" + v[\"*\"].split(\"c\")[1]\r\n label = l\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n let t = findChoiceText(v[\"s\"])\r\n if (t) {\r\n text = t\r\n preDialog = t\r\n }\r\n }\r\n }\r\n if (text && label) {\r\n if (result[label]) {\r\n result[label].text = text + result[label].text\r\n }\r\n else {\r\n result[label] = { text: text }\r\n }\r\n if (preDialog) {\r\n result[label].preDialog = { text: preDialog }\r\n }\r\n // split text and label\r\n let newListItem = items.slice(index + 1)\r\n getLabelChoice(newListItem, result)\r\n return\r\n }\r\n })\r\n}\r\n\r\nfunction findChoiceText(items: RootParserItemType[]): string | undefined {\r\n for (const item of items) {\r\n if (typeof item === \"string\") {\r\n if (item.startsWith(\"^\")) {\r\n return item.substring(1)\r\n }\r\n }\r\n else if (item instanceof Array) {\r\n let res = findChoiceText(item)\r\n if (res) {\r\n return res\r\n }\r\n }\r\n }\r\n}\r\n","import { LabelJsonType, StepLabelJsonType } from '@drincs/pixi-vn';\r\nimport InkRootType from '../types/InkRootType';\r\nimport LabelChoiceRes from '../types/LabelChoiceRes';\r\nimport RootParserItemType from '../types/parserItems/RootParserItemType';\r\nimport { getLabelChoice } from './ChoiceInfoConverter';\r\n\r\nexport function getInkLabel(story: InkRootType[]): LabelJsonType | undefined {\r\n try {\r\n let label: LabelJsonType = {}\r\n\r\n findLabel(story, label)\r\n\r\n return label;\r\n } catch (e) {\r\n console.error(\"[Pixi'VN Ink] Error parsing ink file\", e)\r\n }\r\n}\r\n\r\nfunction findLabel(story: RootParserItemType[], labels: LabelJsonType) {\r\n for (const storyItem of story) {\r\n if (storyItem) {\r\n if (storyItem instanceof Array) {\r\n findLabel(storyItem, labels)\r\n }\r\n else if (typeof storyItem === \"object\") {\r\n addLabels(storyItem, labels)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction addLabels(storyItem: object, result: LabelJsonType, dadLabelKey: string = \"\", shareData: ShareData = { preDialog: {} }) {\r\n if (storyItem === null) {\r\n return\r\n }\r\n // for value and key in item\r\n for (const [key, value] of Object.entries(storyItem)) {\r\n // if value is an array\r\n if (value instanceof Array) {\r\n let labels: StepLabelJsonType[] = []\r\n let subLabels: LabelJsonType = {}\r\n let labelName = (dadLabelKey ? dadLabelKey + \"_\" : \"\") + key\r\n getLabel(value, labelName, labels, subLabels, shareData)\r\n for (const [subKey, subValue] of Object.entries(subLabels)) {\r\n result[subKey] = subValue\r\n }\r\n if (labels.length > 0) {\r\n result[labelName] = labels\r\n }\r\n }\r\n }\r\n}\r\n\r\ntype ShareData = {\r\n preDialog: { [label: string]: { text: string } }\r\n}\r\nfunction getLabel(items: any[], labelKey: string, labelSteps: StepLabelJsonType[], subLabels: LabelJsonType, shareData: ShareData, isNewLine: boolean = true) {\r\n let isInEnv = false\r\n let envList: any[] = []\r\n if (shareData.preDialog[labelKey]) {\r\n labelSteps.push({\r\n dialog: shareData.preDialog[labelKey].text\r\n })\r\n delete shareData.preDialog[labelKey]\r\n isNewLine = false\r\n }\r\n items.forEach((v) => {\r\n if (isInEnv) {\r\n envList.push(v)\r\n if (typeof v === \"string\" && v == \"/ev\") {\r\n isInEnv = false\r\n }\r\n }\r\n else if (typeof v === \"string\") {\r\n // Dialog\r\n if (v.startsWith(\"^\")) {\r\n if (!isNewLine && labelSteps.length > 0) {\r\n labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1)\r\n } else {\r\n labelSteps.push({\r\n dialog: v.substring(1)\r\n })\r\n }\r\n isNewLine = false\r\n }\r\n else if (v == \"ev\") {\r\n isInEnv = true\r\n }\r\n else if (v == \"\\n\") {\r\n isNewLine = true\r\n }\r\n else if (v == \"done\") {\r\n labelSteps.push({\r\n end: \"label_end\"\r\n })\r\n isNewLine = false\r\n }\r\n else if (v == \"end\") {\r\n labelSteps.push({\r\n end: \"game_end\"\r\n })\r\n isNewLine = false\r\n }\r\n }\r\n else if (v instanceof Array) {\r\n getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine)\r\n }\r\n else if (v && typeof v === \"object\") {\r\n if (\"->\" in v && typeof v[\"->\"] === \"string\" && !v[\"->\"].includes(\".^.^.\")) {\r\n labelSteps.push({\r\n labelToOpen: {\r\n labelId: v[\"->\"],\r\n type: \"call\",\r\n }\r\n })\r\n isNewLine = false\r\n }\r\n else if (\"*\" in v && typeof v[\"*\"] === \"string\" && v[\"*\"].includes(\"c\")) {\r\n envList.push(v)\r\n isNewLine = false\r\n }\r\n // if is choise info\r\n else if (\"s\" in v && v[\"s\"] instanceof Array) {\r\n envList.push(v)\r\n isNewLine = false\r\n }\r\n else {\r\n addLabels(v, subLabels, labelKey, shareData)\r\n }\r\n }\r\n })\r\n if (envList.length > 0) {\r\n let choices: LabelChoiceRes = {}\r\n getLabelChoice(envList, choices)\r\n for (const [key, value] of Object.entries(choices)) {\r\n let newKey = labelKey + \"_\" + key\r\n // if last step is choice\r\n if (labelSteps.length > 0 && \"currentChoiceMenuOptions\" in labelSteps[labelSteps.length - 1]) {\r\n labelSteps[labelSteps.length - 1].currentChoiceMenuOptions?.push({\r\n text: value.text,\r\n label: newKey,\r\n props: {},\r\n type: \"call\"\r\n })\r\n }\r\n else {\r\n labelSteps.push({\r\n currentChoiceMenuOptions: [{\r\n text: value.text,\r\n label: newKey,\r\n props: {},\r\n type: \"call\"\r\n }]\r\n })\r\n }\r\n if (value.preDialog) {\r\n shareData.preDialog[newKey] = {\r\n text: value.preDialog.text\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { LabelJsonType } from \"@drincs/pixi-vn\";\r\nimport { Compiler } from \"inkjs/compiler/Compiler\";\r\nimport InkStoryType from \"../types/InkStoryType\";\r\nimport { getInkLabel } from \"./StoryInfoConverter\";\r\n\r\nexport function convertInkText(text: string): LabelJsonType | undefined {\r\n let json = convertorInkToJson(text);\r\n let obj: InkStoryType\r\n try {\r\n obj = JSON.parse(json);\r\n } catch (e) {\r\n console.error(\"[Pixi'VN Ink] Error parsing ink file\", e)\r\n return\r\n }\r\n\r\n return getInkLabel(obj.root)\r\n}\r\n\r\nfunction convertorInkToJson(test: string): string {\r\n try {\r\n const story = new Compiler(test).Compile();\r\n let json = story.ToJson();\r\n console.log(json);\r\n return json || \"\";\r\n } catch (e) {\r\n console.error(\"[Pixi'VN] Error compiling ink file\", e)\r\n return \"\"\r\n }\r\n}\r\n","import { importPixiVNJson } from \"@drincs/pixi-vn\";\r\nimport { convertInkText } from \"./InkToPixivn\";\r\n\r\nexport function importInkText(text: string) {\r\n let data = convertInkText(text)\r\n if (data) {\r\n {\r\n importPixiVNJson(data)\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,229 @@
1
+ import { importPixiVNJson } from '@drincs/pixi-vn';
2
+ import { Compiler } from 'inkjs/compiler/Compiler';
3
+
4
+ // src/functions/Importer.ts
5
+
6
+ // src/functions/ChoiceInfoConverter.ts
7
+ function getLabelChoice(items, result) {
8
+ let text = "";
9
+ let label = "";
10
+ let preDialog = "";
11
+ items.forEach((v, index) => {
12
+ if (typeof v === "string") {
13
+ if (v.startsWith("^")) {
14
+ text = v.substring(1);
15
+ }
16
+ } else if (v && typeof v === "object") {
17
+ if ("*" in v && typeof v["*"] && typeof v["*"] === "string" && v["*"].includes("c")) {
18
+ let l = "c" + v["*"].split("c")[1];
19
+ label = l;
20
+ } else if ("s" in v && v["s"] instanceof Array) {
21
+ let t = findChoiceText(v["s"]);
22
+ if (t) {
23
+ text = t;
24
+ preDialog = t;
25
+ }
26
+ }
27
+ }
28
+ if (text && label) {
29
+ if (result[label]) {
30
+ result[label].text = text + result[label].text;
31
+ } else {
32
+ result[label] = { text };
33
+ }
34
+ if (preDialog) {
35
+ result[label].preDialog = { text: preDialog };
36
+ }
37
+ let newListItem = items.slice(index + 1);
38
+ getLabelChoice(newListItem, result);
39
+ return;
40
+ }
41
+ });
42
+ }
43
+ function findChoiceText(items) {
44
+ for (const item of items) {
45
+ if (typeof item === "string") {
46
+ if (item.startsWith("^")) {
47
+ return item.substring(1);
48
+ }
49
+ } else if (item instanceof Array) {
50
+ let res = findChoiceText(item);
51
+ if (res) {
52
+ return res;
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ // src/functions/StoryInfoConverter.ts
59
+ function getInkLabel(story) {
60
+ try {
61
+ let label = {};
62
+ findLabel(story, label);
63
+ return label;
64
+ } catch (e) {
65
+ console.error("[Pixi'VN Ink] Error parsing ink file", e);
66
+ }
67
+ }
68
+ function findLabel(story, labels) {
69
+ for (const storyItem of story) {
70
+ if (storyItem) {
71
+ if (storyItem instanceof Array) {
72
+ findLabel(storyItem, labels);
73
+ } else if (typeof storyItem === "object") {
74
+ addLabels(storyItem, labels);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ function addLabels(storyItem, result, dadLabelKey = "", shareData = { preDialog: {} }) {
80
+ if (storyItem === null) {
81
+ return;
82
+ }
83
+ for (const [key, value] of Object.entries(storyItem)) {
84
+ if (value instanceof Array) {
85
+ let labels = [];
86
+ let subLabels = {};
87
+ let labelName = (dadLabelKey ? dadLabelKey + "_" : "") + key;
88
+ getLabel(value, labelName, labels, subLabels, shareData);
89
+ for (const [subKey, subValue] of Object.entries(subLabels)) {
90
+ result[subKey] = subValue;
91
+ }
92
+ if (labels.length > 0) {
93
+ result[labelName] = labels;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ function getLabel(items, labelKey, labelSteps, subLabels, shareData, isNewLine = true) {
99
+ var _a;
100
+ let isInEnv = false;
101
+ let envList = [];
102
+ if (shareData.preDialog[labelKey]) {
103
+ labelSteps.push({
104
+ dialog: shareData.preDialog[labelKey].text
105
+ });
106
+ delete shareData.preDialog[labelKey];
107
+ isNewLine = false;
108
+ }
109
+ items.forEach((v) => {
110
+ if (isInEnv) {
111
+ envList.push(v);
112
+ if (typeof v === "string" && v == "/ev") {
113
+ isInEnv = false;
114
+ }
115
+ } else if (typeof v === "string") {
116
+ if (v.startsWith("^")) {
117
+ if (!isNewLine && labelSteps.length > 0) {
118
+ labelSteps[labelSteps.length - 1].dialog = labelSteps[labelSteps.length - 1].dialog + v.substring(1);
119
+ } else {
120
+ labelSteps.push({
121
+ dialog: v.substring(1)
122
+ });
123
+ }
124
+ isNewLine = false;
125
+ } else if (v == "ev") {
126
+ isInEnv = true;
127
+ } else if (v == "\n") {
128
+ isNewLine = true;
129
+ } else if (v == "done") {
130
+ labelSteps.push({
131
+ end: "label_end"
132
+ });
133
+ isNewLine = false;
134
+ } else if (v == "end") {
135
+ labelSteps.push({
136
+ end: "game_end"
137
+ });
138
+ isNewLine = false;
139
+ }
140
+ } else if (v instanceof Array) {
141
+ getLabel(v, labelKey, labelSteps, subLabels, shareData, isNewLine);
142
+ } else if (v && typeof v === "object") {
143
+ if ("->" in v && typeof v["->"] === "string" && !v["->"].includes(".^.^.")) {
144
+ labelSteps.push({
145
+ labelToOpen: {
146
+ labelId: v["->"],
147
+ type: "call"
148
+ }
149
+ });
150
+ isNewLine = false;
151
+ } else if ("*" in v && typeof v["*"] === "string" && v["*"].includes("c")) {
152
+ envList.push(v);
153
+ isNewLine = false;
154
+ } else if ("s" in v && v["s"] instanceof Array) {
155
+ envList.push(v);
156
+ isNewLine = false;
157
+ } else {
158
+ addLabels(v, subLabels, labelKey, shareData);
159
+ }
160
+ }
161
+ });
162
+ if (envList.length > 0) {
163
+ let choices = {};
164
+ getLabelChoice(envList, choices);
165
+ for (const [key, value] of Object.entries(choices)) {
166
+ let newKey = labelKey + "_" + key;
167
+ if (labelSteps.length > 0 && "currentChoiceMenuOptions" in labelSteps[labelSteps.length - 1]) {
168
+ (_a = labelSteps[labelSteps.length - 1].currentChoiceMenuOptions) == null ? void 0 : _a.push({
169
+ text: value.text,
170
+ label: newKey,
171
+ props: {},
172
+ type: "call"
173
+ });
174
+ } else {
175
+ labelSteps.push({
176
+ currentChoiceMenuOptions: [{
177
+ text: value.text,
178
+ label: newKey,
179
+ props: {},
180
+ type: "call"
181
+ }]
182
+ });
183
+ }
184
+ if (value.preDialog) {
185
+ shareData.preDialog[newKey] = {
186
+ text: value.preDialog.text
187
+ };
188
+ }
189
+ }
190
+ }
191
+ }
192
+
193
+ // src/functions/InkToPixivn.ts
194
+ function convertInkText(text) {
195
+ let json = convertorInkToJson(text);
196
+ let obj;
197
+ try {
198
+ obj = JSON.parse(json);
199
+ } catch (e) {
200
+ console.error("[Pixi'VN Ink] Error parsing ink file", e);
201
+ return;
202
+ }
203
+ return getInkLabel(obj.root);
204
+ }
205
+ function convertorInkToJson(test) {
206
+ try {
207
+ const story = new Compiler(test).Compile();
208
+ let json = story.ToJson();
209
+ console.log(json);
210
+ return json || "";
211
+ } catch (e) {
212
+ console.error("[Pixi'VN] Error compiling ink file", e);
213
+ return "";
214
+ }
215
+ }
216
+
217
+ // src/functions/Importer.ts
218
+ function importInkText(text) {
219
+ let data = convertInkText(text);
220
+ if (data) {
221
+ {
222
+ importPixiVNJson(data);
223
+ }
224
+ }
225
+ }
226
+
227
+ export { importInkText };
228
+ //# sourceMappingURL=Importer.mjs.map
229
+ //# sourceMappingURL=Importer.mjs.map