intelligent-system-design-language 0.3.13

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 (209) hide show
  1. package/.claude/agents/langium-language-designer.md +38 -0
  2. package/.claude/agents/typescript-vscode-expert.md +29 -0
  3. package/.claude/agents/ui-ux-designer.md +36 -0
  4. package/.claude/settings.local.json +33 -0
  5. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  6. package/.idea/isdl.iml +14 -0
  7. package/.idea/modules.xml +9 -0
  8. package/.idea/vcs.xml +7 -0
  9. package/.idea/watcherTasks.xml +4 -0
  10. package/.vscodeignore +18 -0
  11. package/LICENSE +674 -0
  12. package/README.md +86 -0
  13. package/bin/cli.js +4 -0
  14. package/bin/lsp.js +8 -0
  15. package/isdl.png +0 -0
  16. package/out/_backgrounds.scss +91 -0
  17. package/out/_handlebars.scss +505 -0
  18. package/out/_isdlStyles.scss +1357 -0
  19. package/out/_vuetifyOverrides.scss +425 -0
  20. package/out/_vuetifyStyles.scss +31957 -0
  21. package/out/cli/cli-util.js +39 -0
  22. package/out/cli/cli-util.js.map +1 -0
  23. package/out/cli/components/_backgrounds.scss +91 -0
  24. package/out/cli/components/_handlebars.scss +505 -0
  25. package/out/cli/components/_isdlStyles.scss +1357 -0
  26. package/out/cli/components/_vuetifyOverrides.scss +425 -0
  27. package/out/cli/components/_vuetifyStyles.scss +31957 -0
  28. package/out/cli/components/active-effect-sheet-generator.js +643 -0
  29. package/out/cli/components/active-effect-sheet-generator.js.map +1 -0
  30. package/out/cli/components/base-actor-sheet-generator.js +125 -0
  31. package/out/cli/components/base-actor-sheet-generator.js.map +1 -0
  32. package/out/cli/components/base-sheet-generator.js +525 -0
  33. package/out/cli/components/base-sheet-generator.js.map +1 -0
  34. package/out/cli/components/chat-card-generator.js +683 -0
  35. package/out/cli/components/chat-card-generator.js.map +1 -0
  36. package/out/cli/components/css-generator.js +58 -0
  37. package/out/cli/components/css-generator.js.map +1 -0
  38. package/out/cli/components/damage-roll-generator.js +173 -0
  39. package/out/cli/components/damage-roll-generator.js.map +1 -0
  40. package/out/cli/components/datamodel-generator.js +672 -0
  41. package/out/cli/components/datamodel-generator.js.map +1 -0
  42. package/out/cli/components/derived-data-generator.js +1340 -0
  43. package/out/cli/components/derived-data-generator.js.map +1 -0
  44. package/out/cli/components/hotbar-drop-hook-generator.js +95 -0
  45. package/out/cli/components/hotbar-drop-hook-generator.js.map +1 -0
  46. package/out/cli/components/init-hook-generator.js +597 -0
  47. package/out/cli/components/init-hook-generator.js.map +1 -0
  48. package/out/cli/components/keywords-generator.js +220 -0
  49. package/out/cli/components/keywords-generator.js.map +1 -0
  50. package/out/cli/components/language-generator.js +110 -0
  51. package/out/cli/components/language-generator.js.map +1 -0
  52. package/out/cli/components/measured-template-preview.js +234 -0
  53. package/out/cli/components/measured-template-preview.js.map +1 -0
  54. package/out/cli/components/method-generator.js +1812 -0
  55. package/out/cli/components/method-generator.js.map +1 -0
  56. package/out/cli/components/ready-hook-generator.js +448 -0
  57. package/out/cli/components/ready-hook-generator.js.map +1 -0
  58. package/out/cli/components/token-generator.js +138 -0
  59. package/out/cli/components/token-generator.js.map +1 -0
  60. package/out/cli/components/utils.js +176 -0
  61. package/out/cli/components/utils.js.map +1 -0
  62. package/out/cli/components/vue/base-components/vue-attribute.js +148 -0
  63. package/out/cli/components/vue/base-components/vue-attribute.js.map +1 -0
  64. package/out/cli/components/vue/base-components/vue-boolean.js +77 -0
  65. package/out/cli/components/vue/base-components/vue-boolean.js.map +1 -0
  66. package/out/cli/components/vue/base-components/vue-calculator.js +106 -0
  67. package/out/cli/components/vue/base-components/vue-calculator.js.map +1 -0
  68. package/out/cli/components/vue/base-components/vue-damage-application.js +369 -0
  69. package/out/cli/components/vue/base-components/vue-damage-application.js.map +1 -0
  70. package/out/cli/components/vue/base-components/vue-damage-bonuses.js +225 -0
  71. package/out/cli/components/vue/base-components/vue-damage-bonuses.js.map +1 -0
  72. package/out/cli/components/vue/base-components/vue-damage-resistances.js +256 -0
  73. package/out/cli/components/vue/base-components/vue-damage-resistances.js.map +1 -0
  74. package/out/cli/components/vue/base-components/vue-damage-track.js +134 -0
  75. package/out/cli/components/vue/base-components/vue-damage-track.js.map +1 -0
  76. package/out/cli/components/vue/base-components/vue-date-time.js +55 -0
  77. package/out/cli/components/vue/base-components/vue-date-time.js.map +1 -0
  78. package/out/cli/components/vue/base-components/vue-dice.js +111 -0
  79. package/out/cli/components/vue/base-components/vue-dice.js.map +1 -0
  80. package/out/cli/components/vue/base-components/vue-die.js +86 -0
  81. package/out/cli/components/vue/base-components/vue-die.js.map +1 -0
  82. package/out/cli/components/vue/base-components/vue-document-choice.js +172 -0
  83. package/out/cli/components/vue/base-components/vue-document-choice.js.map +1 -0
  84. package/out/cli/components/vue/base-components/vue-document-choices.js +203 -0
  85. package/out/cli/components/vue/base-components/vue-document-choices.js.map +1 -0
  86. package/out/cli/components/vue/base-components/vue-document-link.js +73 -0
  87. package/out/cli/components/vue/base-components/vue-document-link.js.map +1 -0
  88. package/out/cli/components/vue/base-components/vue-extended-choice.js +101 -0
  89. package/out/cli/components/vue/base-components/vue-extended-choice.js.map +1 -0
  90. package/out/cli/components/vue/base-components/vue-inventory.js +532 -0
  91. package/out/cli/components/vue/base-components/vue-inventory.js.map +1 -0
  92. package/out/cli/components/vue/base-components/vue-macro-choice.js +150 -0
  93. package/out/cli/components/vue/base-components/vue-macro-choice.js.map +1 -0
  94. package/out/cli/components/vue/base-components/vue-measured-template.js +543 -0
  95. package/out/cli/components/vue/base-components/vue-measured-template.js.map +1 -0
  96. package/out/cli/components/vue/base-components/vue-money.js +496 -0
  97. package/out/cli/components/vue/base-components/vue-money.js.map +1 -0
  98. package/out/cli/components/vue/base-components/vue-number.js +184 -0
  99. package/out/cli/components/vue/base-components/vue-number.js.map +1 -0
  100. package/out/cli/components/vue/base-components/vue-paperdoll.js +56 -0
  101. package/out/cli/components/vue/base-components/vue-paperdoll.js.map +1 -0
  102. package/out/cli/components/vue/base-components/vue-parent-property-reference.js +89 -0
  103. package/out/cli/components/vue/base-components/vue-parent-property-reference.js.map +1 -0
  104. package/out/cli/components/vue/base-components/vue-prosemirror.js +31 -0
  105. package/out/cli/components/vue/base-components/vue-prosemirror.js.map +1 -0
  106. package/out/cli/components/vue/base-components/vue-resource.js +149 -0
  107. package/out/cli/components/vue/base-components/vue-resource.js.map +1 -0
  108. package/out/cli/components/vue/base-components/vue-roll-visualizer.js +121 -0
  109. package/out/cli/components/vue/base-components/vue-roll-visualizer.js.map +1 -0
  110. package/out/cli/components/vue/base-components/vue-self-property-reference.js +75 -0
  111. package/out/cli/components/vue/base-components/vue-self-property-reference.js.map +1 -0
  112. package/out/cli/components/vue/base-components/vue-string-choice.js +111 -0
  113. package/out/cli/components/vue/base-components/vue-string-choice.js.map +1 -0
  114. package/out/cli/components/vue/base-components/vue-string-choices.js +216 -0
  115. package/out/cli/components/vue/base-components/vue-string-choices.js.map +1 -0
  116. package/out/cli/components/vue/base-components/vue-string.js +73 -0
  117. package/out/cli/components/vue/base-components/vue-string.js.map +1 -0
  118. package/out/cli/components/vue/base-components/vue-text-field.js +66 -0
  119. package/out/cli/components/vue/base-components/vue-text-field.js.map +1 -0
  120. package/out/cli/components/vue/base-components/vue-tracker.js +444 -0
  121. package/out/cli/components/vue/base-components/vue-tracker.js.map +1 -0
  122. package/out/cli/components/vue/vue-action-component-generator.js +88 -0
  123. package/out/cli/components/vue/vue-action-component-generator.js.map +1 -0
  124. package/out/cli/components/vue/vue-active-effect-sheet-generator.js +1016 -0
  125. package/out/cli/components/vue/vue-active-effect-sheet-generator.js.map +1 -0
  126. package/out/cli/components/vue/vue-base-components-generator.js +59 -0
  127. package/out/cli/components/vue/vue-base-components-generator.js.map +1 -0
  128. package/out/cli/components/vue/vue-datatable-component-generator.js +307 -0
  129. package/out/cli/components/vue/vue-datatable-component-generator.js.map +1 -0
  130. package/out/cli/components/vue/vue-datatable-sheet-class-generator.js +342 -0
  131. package/out/cli/components/vue/vue-datatable-sheet-class-generator.js.map +1 -0
  132. package/out/cli/components/vue/vue-datatable2-component-generator.js +939 -0
  133. package/out/cli/components/vue/vue-datatable2-component-generator.js.map +1 -0
  134. package/out/cli/components/vue/vue-document-creation-app.js +140 -0
  135. package/out/cli/components/vue/vue-document-creation-app.js.map +1 -0
  136. package/out/cli/components/vue/vue-document-creation-sheet.js +105 -0
  137. package/out/cli/components/vue/vue-document-creation-sheet.js.map +1 -0
  138. package/out/cli/components/vue/vue-generator.js +240 -0
  139. package/out/cli/components/vue/vue-generator.js.map +1 -0
  140. package/out/cli/components/vue/vue-mixin.js +338 -0
  141. package/out/cli/components/vue/vue-mixin.js.map +1 -0
  142. package/out/cli/components/vue/vue-pinned-datatable-component-generator.js +306 -0
  143. package/out/cli/components/vue/vue-pinned-datatable-component-generator.js.map +1 -0
  144. package/out/cli/components/vue/vue-prompt-generator.js +201 -0
  145. package/out/cli/components/vue/vue-prompt-generator.js.map +1 -0
  146. package/out/cli/components/vue/vue-prompt-sheet-class-generator.js +252 -0
  147. package/out/cli/components/vue/vue-prompt-sheet-class-generator.js.map +1 -0
  148. package/out/cli/components/vue/vue-sheet-application-generator.js +2008 -0
  149. package/out/cli/components/vue/vue-sheet-application-generator.js.map +1 -0
  150. package/out/cli/components/vue/vue-sheet-class-generator.js +484 -0
  151. package/out/cli/components/vue/vue-sheet-class-generator.js.map +1 -0
  152. package/out/cli/generator.js +659 -0
  153. package/out/cli/generator.js.map +1 -0
  154. package/out/cli/main.js +43 -0
  155. package/out/cli/main.js.map +1 -0
  156. package/out/datatables.min.css +54 -0
  157. package/out/datatables.min.js +178 -0
  158. package/out/extension/github/githubAuthProvider.js +345 -0
  159. package/out/extension/github/githubAuthProvider.js.map +1 -0
  160. package/out/extension/github/githubConfig.js +132 -0
  161. package/out/extension/github/githubConfig.js.map +1 -0
  162. package/out/extension/github/githubGistActions.js +251 -0
  163. package/out/extension/github/githubGistActions.js.map +1 -0
  164. package/out/extension/github/githubGistManager.js +255 -0
  165. package/out/extension/github/githubGistManager.js.map +1 -0
  166. package/out/extension/github/githubManager.js +1735 -0
  167. package/out/extension/github/githubManager.js.map +1 -0
  168. package/out/extension/github/githubQuickActions.js +659 -0
  169. package/out/extension/github/githubQuickActions.js.map +1 -0
  170. package/out/extension/github/githubTreeProvider.js +181 -0
  171. package/out/extension/github/githubTreeProvider.js.map +1 -0
  172. package/out/extension/github/system-workflow.yml +48 -0
  173. package/out/extension/main.cjs +70315 -0
  174. package/out/extension/main.cjs.map +7 -0
  175. package/out/extension/main.js +237 -0
  176. package/out/extension/main.js.map +1 -0
  177. package/out/extension/package.json +426 -0
  178. package/out/isdl.png +0 -0
  179. package/out/language/generated/ast.js +2992 -0
  180. package/out/language/generated/ast.js.map +1 -0
  181. package/out/language/generated/grammar.js +13970 -0
  182. package/out/language/generated/grammar.js.map +1 -0
  183. package/out/language/generated/module.js +20 -0
  184. package/out/language/generated/module.js.map +1 -0
  185. package/out/language/intelligent-system-design-language-formatter.js +85 -0
  186. package/out/language/intelligent-system-design-language-formatter.js.map +1 -0
  187. package/out/language/intelligent-system-design-language-module.js +69 -0
  188. package/out/language/intelligent-system-design-language-module.js.map +1 -0
  189. package/out/language/intelligent-system-design-language-quickfixes.js +37 -0
  190. package/out/language/intelligent-system-design-language-quickfixes.js.map +1 -0
  191. package/out/language/intelligent-system-design-language-validator.js +515 -0
  192. package/out/language/intelligent-system-design-language-validator.js.map +1 -0
  193. package/out/language/isdl-hover-provider.js +77 -0
  194. package/out/language/isdl-hover-provider.js.map +1 -0
  195. package/out/language/isdl-scope-provider.js +149 -0
  196. package/out/language/isdl-scope-provider.js.map +1 -0
  197. package/out/language/main.cjs +47655 -0
  198. package/out/language/main.cjs.map +7 -0
  199. package/out/language/main.js +11 -0
  200. package/out/language/main.js.map +1 -0
  201. package/out/missing-character.png +0 -0
  202. package/out/package.json +426 -0
  203. package/out/paperdoll_default.png +0 -0
  204. package/out/progressbar.min.js +7 -0
  205. package/out/styles.scss +722 -0
  206. package/out/test/formatting/formatter.test.js +46 -0
  207. package/out/test/formatting/formatter.test.js.map +1 -0
  208. package/out/vuetify.esm.js +30279 -0
  209. package/package.json +426 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active-effect-sheet-generator.js","sourceRoot":"","sources":["../../../src/cli/components/active-effect-sheet-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { expandToNode, toString } from 'langium/generate';
4
+ export function generateBaseActorSheet(entry, id, destination) {
5
+ const generatedFileDir = path.join(destination, "system", "sheets");
6
+ const generatedFilePath = path.join(generatedFileDir, `${id}-actor-sheet.mjs`);
7
+ if (!fs.existsSync(generatedFileDir)) {
8
+ fs.mkdirSync(generatedFileDir, { recursive: true });
9
+ }
10
+ const fileNode = expandToNode `
11
+ import ${entry.config.name}DocumentSheet from "./${id}-sheet.mjs";
12
+
13
+ export default class ${entry.config.name}ActorSheet extends ${entry.config.name}DocumentSheet {
14
+
15
+ /** @override */
16
+ static get defaultOptions() {
17
+ return foundry.utils.mergeObject(super.defaultOptions, {
18
+ secrets: [{parentSelector: ".editor"}],
19
+ });
20
+ }
21
+
22
+ /* -------------------------------------------- */
23
+
24
+ /** @override */
25
+ get title() {
26
+ return this.actor.isToken ? \`[Token] \${this.actor.name}\` : this.actor.name;
27
+ }
28
+
29
+ /* -------------------------------------------- */
30
+
31
+ /**
32
+ * A convenience reference to the Actor document
33
+ * @type {Actor}
34
+ */
35
+ get actor() {
36
+ return this.object;
37
+ }
38
+
39
+ /* -------------------------------------------- */
40
+
41
+ /**
42
+ * If this Actor Sheet represents a synthetic Token actor, reference the active Token
43
+ * @type {Token|null}
44
+ */
45
+ get token() {
46
+ return this.object.token || this.options.token || null;
47
+ }
48
+
49
+ /* -------------------------------------------- */
50
+ /* Methods */
51
+ /* -------------------------------------------- */
52
+
53
+ /** @inheritdoc */
54
+ async close(options) {
55
+ this.options.token = null;
56
+ return super.close(options);
57
+ }
58
+
59
+ /* -------------------------------------------- */
60
+
61
+ /** @inheritdoc */
62
+ async getData(options={}) {
63
+ const context = await super.getData(options);
64
+ context.actor = this.object;
65
+ context.applicableEffects = Array.from(this.object.allApplicableEffects());
66
+ return context;
67
+ }
68
+
69
+ /* -------------------------------------------- */
70
+
71
+ /** @inheritdoc */
72
+ _getHeaderButtons() {
73
+ let buttons = super._getHeaderButtons();
74
+ const canConfigure = game.user.isGM || (this.actor.isOwner && game.user.can("TOKEN_CONFIGURE"));
75
+ if ( this.options.editable && canConfigure ) {
76
+ const closeIndex = buttons.findIndex(btn => btn.label === "Close");
77
+ buttons.splice(closeIndex, 0, {
78
+ label: this.token ? "Token" : "TOKEN.TitlePrototype",
79
+ class: "configure-token",
80
+ icon: "fas fa-user-circle",
81
+ onclick: ev => this._onConfigureToken(ev)
82
+ });
83
+ }
84
+ return buttons;
85
+ }
86
+
87
+ /* -------------------------------------------- */
88
+ /* Event Listeners */
89
+ /* -------------------------------------------- */
90
+
91
+ /**
92
+ * Handle requests to configure the Token for the Actor
93
+ * @param {PointerEvent} event The originating click event
94
+ * @private
95
+ */
96
+ _onConfigureToken(event) {
97
+ event.preventDefault();
98
+ const renderOptions = {
99
+ left: Math.max(this.position.left - 560 - 10, 10),
100
+ top: this.position.top
101
+ };
102
+ if ( this.token ) return this.token.sheet.render(true, renderOptions);
103
+ else new CONFIG.Token.prototypeSheetClass(this.actor.prototypeToken, renderOptions).render(true);
104
+ }
105
+
106
+ /* -------------------------------------------- */
107
+ /* Drag and Drop */
108
+ /* -------------------------------------------- */
109
+
110
+ /** @inheritdoc */
111
+ _canDragStart(selector) {
112
+ return this.isEditable;
113
+ }
114
+
115
+ /* -------------------------------------------- */
116
+
117
+ /** @inheritdoc */
118
+ _canDragDrop(selector) {
119
+ return this.isEditable;
120
+ }
121
+ }
122
+ `.appendNewLineIfNotEmpty();
123
+ fs.writeFileSync(generatedFilePath, toString(fileNode));
124
+ }
125
+ //# sourceMappingURL=base-actor-sheet-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-actor-sheet-generator.js","sourceRoot":"","sources":["../../../src/cli/components/base-actor-sheet-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,EAAU,EAAE,WAAmB;IAChF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAE/E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAClC,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KACvD;IAED,MAAM,QAAQ,GAAG,YAAY,CAAA;iBAChB,KAAK,CAAC,MAAM,CAAC,IAAI,yBAAyB,EAAE;;+BAE9B,KAAK,CAAC,MAAM,CAAC,IAAI,sBAAsB,KAAK,CAAC,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6GlF,CAAC,uBAAuB,EAAE,CAAC;IAE5B,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,525 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { expandToNode, toString } from 'langium/generate';
4
+ export function generateBaseDocumentSheet(entry, id, destination) {
5
+ const generatedFileDir = path.join(destination, "system", "sheets");
6
+ const generatedFilePath = path.join(generatedFileDir, `${id}-sheet.mjs`);
7
+ if (!fs.existsSync(generatedFileDir)) {
8
+ fs.mkdirSync(generatedFileDir, { recursive: true });
9
+ }
10
+ const fileNode = expandToNode `
11
+ export default class ${entry.config.name}DocumentSheet extends DocumentSheet {
12
+
13
+ /** @override */
14
+ static get defaultOptions() {
15
+ return foundry.utils.mergeObject(super.defaultOptions, {
16
+ classes: ["${id}", "sheet", "handlebars-sheet"],
17
+ width: 1000,
18
+ height: 950,
19
+ resizable: true,
20
+ submitOnClose: true,
21
+ submitOnChange: true,
22
+ closeOnSubmit: false,
23
+ tabs: [
24
+ {navSelector: ".pages", contentSelector: ".pages-container", initial: "main"},
25
+ {navSelector: ".tabs", contentSelector: ".tabs-container", initial: "description"}
26
+ ],
27
+ dragDrop: [
28
+ {dragSelector: "tr", dropSelector: ".tabs-container"},
29
+ {dropSelector: ".single-document"},
30
+ {dragSelector: ".paper-doll-slot", dropSelector: ".paper-doll-slot"}
31
+ ],
32
+ });
33
+ }
34
+
35
+ /* -------------------------------------------- */
36
+
37
+ /** @override */
38
+ get title() {
39
+ return \`\${this.object.name} \${game.i18n.localize("Config")}\`;
40
+ }
41
+
42
+ /* -------------------------------------------- */
43
+
44
+ /** @override */
45
+ async getData() {
46
+ const context = await super.getData();
47
+ context.descriptionHTML = await TextEditor.enrichHTML(
48
+ this.object.system.description,
49
+ {async: true, secrets: this.object.isOwner}
50
+ );
51
+ return context;
52
+ }
53
+
54
+ /* -------------------------------------------- */
55
+
56
+ activatedTables = [];
57
+
58
+ /** @override */
59
+ activateListeners(html) {
60
+ super.activateListeners(html);
61
+
62
+ this._swapBackground(this.defaultBackground);
63
+
64
+
65
+ html.find(".row-action").click(this._onTableRowAction.bind(this));
66
+ html.find(".single-document-remove").click(this._onSingleDocumentRemove.bind(this));
67
+
68
+ this.activateDataTables(html);
69
+ this.activateProgressBars(html);
70
+ }
71
+
72
+ dbInstance = null;
73
+
74
+ // Open IndexedDB (Cached)
75
+ openDB(version=1) {
76
+ return new Promise((resolve, reject) => {
77
+ if (this.dbInstance) return resolve(this.dbInstance);
78
+
79
+ const request = indexedDB.open("datatableDB", version);
80
+
81
+ request.onupgradeneeded = (event) => {
82
+ let db = event.target.result;
83
+ if (!db.objectStoreNames.contains("tableStates")) {
84
+ db.createObjectStore("tableStates", { keyPath: "id" });
85
+ }
86
+ };
87
+
88
+ request.onsuccess = (event) => {
89
+ this.dbInstance = event.target.result;
90
+ resolve(this.dbInstance);
91
+ };
92
+
93
+ request.onerror = () => reject("IndexedDB failed to open.");
94
+ });
95
+ }
96
+
97
+ // Save table state
98
+ saveTableState(name, data) {
99
+ this.openDB().then((db) => {
100
+ const tx = db.transaction("tableStates", "readwrite");
101
+ const store = tx.objectStore("tableStates");
102
+ store.put({ id: name, data });
103
+
104
+ tx.oncomplete = () => {};
105
+ tx.onerror = () => console.error(\`Failed to save state: \${name}\`);
106
+ });
107
+ }
108
+
109
+ // Load table state
110
+ loadTableState(name) {
111
+ return new Promise((resolve) => {
112
+ this.openDB().then((db) => {
113
+ const tx = db.transaction("tableStates", "readonly");
114
+ const store = tx.objectStore("tableStates");
115
+ const request = store.get(name);
116
+
117
+ request.onsuccess = () => resolve(request.result ? request.result.data : null);
118
+ request.onerror = () => resolve(null);
119
+ });
120
+ });
121
+ }
122
+
123
+
124
+ /* -------------------------------------------- */
125
+
126
+ activateDataTables(html) {
127
+ for ( let t of this.activatedTables ) {
128
+ try {
129
+ t.destroy();
130
+ } catch { }
131
+ }
132
+ this.activatedTables = [];
133
+ var tables = this._element.find("table");
134
+ for ( let t of tables ) {
135
+ let table = new DataTable(t, {
136
+ paging: false,
137
+ scrollY: 250,
138
+ stateSave: true,
139
+ stateSaveCallback: (settings, data) => {
140
+ const documentName = this.object.name;
141
+ const documentType = this.object.type;
142
+ const tableName = settings.nTable.closest(".tab").dataset.tab;
143
+ const name = \`DataTables_\${documentName}_\${documentType}_\${tableName}\`;
144
+ try {
145
+ this.saveTableState(name, data);
146
+ }
147
+ catch (e) {
148
+ console.error("Failed to save state:", e);
149
+ }
150
+ },
151
+ stateLoadCallback: (settings, callback) => {
152
+ const documentName = this.object.name;
153
+ const documentType = this.object.type;
154
+ const tableName = settings.nTable.closest(".tab").dataset.tab;
155
+ const name = \`DataTables_\${documentName}_\${documentType}_\${tableName}\`;
156
+
157
+
158
+ this.loadTableState(name).then((data) => {
159
+ callback(data);
160
+ }).catch((error) => {
161
+ console.error("Failed to load table state:", name, error);
162
+ callback(null); // Return null on failure
163
+ });
164
+ },
165
+ responsive: true,
166
+ scrollX: false,
167
+ colReorder: true,
168
+ layout: {
169
+ topStart: {
170
+ buttons: [
171
+ {
172
+ text: '<i class="fas fa-plus"></i> Add',
173
+ action: (e, dt, node, config) => {
174
+ // Find the parent tab so we know what type of Item to create
175
+ const tab = e.currentTarget.closest(".tab");
176
+ const type = tab.dataset.type;
177
+ if ( type == "ActiveEffect" ) {
178
+ ActiveEffect.createDocuments([{label: "New Effect"}], {parent: this.object}).then(effect => {
179
+ effect[0].sheet.render(true);
180
+ });
181
+ }
182
+ else {
183
+ Item.createDocuments([{type: type, name: "New " + type}], {parent: this.object}).then(item => {
184
+ item[0].sheet.render(true);
185
+ });
186
+ }
187
+ }
188
+ },
189
+ 'colvis'
190
+ ]
191
+ }
192
+ },
193
+ columnDefs: [
194
+ {
195
+ targets: [0, 1, -1], // Image, Name, Actions
196
+ responsivePriority: 1
197
+ },
198
+ {
199
+ target: 0, // Image
200
+ width: "40px"
201
+ },
202
+ {
203
+ target: -1, // Actions
204
+ orderable: false,
205
+ width: "200px"
206
+ },
207
+ {
208
+ target: 1, // Name
209
+ width: "200px"
210
+ }
211
+ ],
212
+ order: [
213
+ [1, "asc"]
214
+ ]
215
+ });
216
+
217
+ // When the table is re-ordered, update the sort attribute of each item
218
+ table.on('row-reordered', function (e, diff, edit) {
219
+ for (var i = 0, ien = diff.length; i < ien; i++) {
220
+ const id = diff[i].node.dataset.id;
221
+ const item = self.object.items.get(id);
222
+ if (item) {
223
+ item.update({sort: diff[i].newPosition});
224
+ }
225
+ }
226
+ });
227
+ this.activatedTables.push(table);
228
+ }
229
+ }
230
+
231
+ /* -------------------------------------------- */
232
+
233
+ lastKnownProgressBars = [];
234
+ activateProgressBars(html) {
235
+ const progressBars = html.find(".progress-bar");
236
+ for ( let p of progressBars ) {
237
+ const fromColor = p.dataset.colorFrom;
238
+ const toColor = p.dataset.colorTo;
239
+
240
+ // If we don't have a value and max, we can't create a progress bar
241
+ if (p.dataset.value === undefined || p.dataset.max === undefined) continue;
242
+
243
+ const value = parseFloat(p.dataset.value);
244
+ const max = parseFloat(p.dataset.max);
245
+
246
+ if ( isNaN(value) || isNaN(max) ) continue;
247
+ if ( max <= 0 ) continue;
248
+
249
+ const percent = Math.min(Math.max(value / max, 0), 1);
250
+ const name = p.attributes.name.value;
251
+ try {
252
+ var bar = new ProgressBar.Line(p, {
253
+ strokeWidth: 3,
254
+ easing: 'easeInOut',
255
+ duration: 1400,
256
+ color: '#FFEA82',
257
+ trailColor: '#eee',
258
+ trailWidth: 1,
259
+ svgStyle: {width: '100%', height: '100%'},
260
+ from: {color: fromColor},
261
+ to: {color: toColor},
262
+ step: (state, bar) => {
263
+ bar.path.setAttribute('stroke', state.color);
264
+ }
265
+ });
266
+
267
+ // We store a name: value pair for each progress bar. If there is a last known value, we set that as the non-animated base then update to the new value..
268
+ const lastKnown = this.lastKnownProgressBars.find(p => p.name === name);
269
+ if ( lastKnown ) {
270
+ bar.set(lastKnown.percent);
271
+ bar.animate(percent);
272
+ lastKnown.percent = percent;
273
+ } else {
274
+ bar.set(percent);
275
+ this.lastKnownProgressBars.push({name: name, percent: percent});
276
+ }
277
+ }
278
+ catch(err) {
279
+ // Do nothing
280
+ }
281
+ }
282
+ }
283
+
284
+ /* -------------------------------------------- */
285
+
286
+ get defaultBackground() {
287
+ return "topography";
288
+ }
289
+
290
+ _currentBackground = null;
291
+ _swapBackground(background) {
292
+ const form = this.form;
293
+ form.classList.remove("topography", "hideout", "graphpaper", "texture", "squares", "dominoes", "temple", "food", "anchors", "bubbles", "diamonds", "circuitboard", "bricks");
294
+ form.classList.add(background);
295
+ this._currentBackground = background;
296
+ }
297
+
298
+ /* -------------------------------------------- */
299
+
300
+ /** @override */
301
+ _onChangeTab(event, tabs, active) {
302
+ super._onChangeTab(event, tabs, active);
303
+
304
+ if ( tabs._content.classList.contains("pages-container") ) {
305
+ // Get the new active page header
306
+ const header = tabs._nav.querySelector(\`[data-tab="\${tabs.active}"]\`);
307
+ if ( !header ) return;
308
+
309
+ // Set the background
310
+ const background = header.dataset.background;
311
+
312
+ this._swapBackground(background);
313
+ }
314
+
315
+ // Redraw any DataTable instances which are active within the form for correct sizing
316
+ for ( let table of this.activatedTables ) {
317
+ table.draw();
318
+ table.responsive.rebuild();
319
+ table.responsive.recalc();
320
+ }
321
+
322
+ this.calculateHeight();
323
+ }
324
+
325
+ /* -------------------------------------------- */
326
+
327
+ firstRender = true;
328
+ /** @override */
329
+ setPosition({left, top, width, height, scale}={}) {
330
+ if ( !this.popOut && !this.options.resizable ) return;
331
+ super.setPosition({left, top, width, height, scale});
332
+
333
+ if ( this.firstRender ) {
334
+ this.firstRender = false;
335
+ this.calculateHeight();
336
+ }
337
+ }
338
+
339
+ /* -------------------------------------------- */
340
+
341
+ calculateHeight() {
342
+ // Calculate the height of the drawn content and set the height of the sheet to that value
343
+ const form = this.form;
344
+ let calculatedInnerHeight = 0;
345
+ for ( let c of form.children ) {
346
+ calculatedInnerHeight += c.offsetHeight;
347
+ }
348
+ const formHeight = calculatedInnerHeight + 75;
349
+ const maxHeight = window.innerHeight * 0.9; // 90% of the viewport height
350
+
351
+ this.setPosition({height: Math.min(formHeight, maxHeight)});
352
+ }
353
+
354
+ /* -------------------------------------------- */
355
+
356
+ /** @override */
357
+ async close(options={}) {
358
+
359
+ // Destroy any DataTable instances which are active within the form
360
+ for ( let t of this.activatedTables ) {
361
+ t.destroy();
362
+ }
363
+ this.activatedTables = [];
364
+
365
+ // Call the base close method
366
+ return super.close(options);
367
+ }
368
+
369
+ /* -------------------------------------------- */
370
+
371
+ /** @override */
372
+ _onResize(event) {
373
+ super._onResize(event);
374
+
375
+ // Redraw any DataTable instances which are active within the form for correct sizing
376
+ for ( let table of this.activatedTables ) {
377
+ table.draw();
378
+ table.responsive.rebuild();
379
+ table.responsive.recalc();
380
+ }
381
+ }
382
+
383
+ /* -------------------------------------------- */
384
+
385
+ async _onDrop(event) {
386
+ super._onDrop(event);
387
+ const data = JSON.parse(event.dataTransfer.getData("text/plain"));
388
+
389
+ // If the drop target is a single document, handle it differently
390
+ const linkedClasses = [ "single-document", "paper-doll-slot" ];
391
+ const eventClasses = Array.from(event.currentTarget.classList);
392
+ if (eventClasses.find(c => linkedClasses.includes(c))) {
393
+ const doc = await fromUuid(data.uuid);
394
+ if ( !doc ) return;
395
+ if ( doc.type !== event.currentTarget.dataset.type ) {
396
+ ui.notifications.error(\`Expected a \${event.currentTarget.dataset.type} type Document, but got a \${doc.type} type one instead. \`);
397
+ return;
398
+ }
399
+
400
+ const update = {};
401
+ update[event.currentTarget.dataset.name] = data.uuid;
402
+ await this.object.update(update);
403
+ return;
404
+ }
405
+
406
+ const dropTypes = ["Item", "ActiveEffect"];
407
+ if ( !dropTypes.includes(data.type) ) return;
408
+ const item = await fromUuid(data.uuid);
409
+ if ( !item ) return;
410
+
411
+ // Prevent duplicates when dropping an item that's already owned by this document
412
+ if ( item.parent?.uuid === this.object.uuid ) return;
413
+
414
+ if ( data.type === "ActiveEffect" ) {
415
+ ActiveEffect.createDocuments([item], {parent: this.object})
416
+ return;
417
+ }
418
+
419
+ await this.handleItemDrop(item);
420
+ }
421
+
422
+ /* -------------------------------------------- */
423
+
424
+ async handleItemDrop(item) { }
425
+
426
+ /* -------------------------------------------- */
427
+
428
+ async _onTableRowAction(event) {
429
+ event.preventDefault();
430
+
431
+ const action = event.currentTarget.dataset.action;
432
+ const id = event.currentTarget.closest("tr").dataset.id;
433
+ const type = event.currentTarget.closest(".tab").dataset.type;
434
+ const typeAccessor = type === "ActiveEffect" ? "effects" : "items";
435
+ const item = this.object[typeAccessor].get(id);
436
+
437
+ // If this is a .item-custom-action, route it to the item sheet handler
438
+ if ( event.currentTarget.classList.contains("item-custom-action") ) {
439
+ await item.sheet._onAction(event);
440
+ return;
441
+ }
442
+
443
+ switch ( action ) {
444
+ case "edit":
445
+ item.sheet.render(true);
446
+ break;
447
+ case "delete":
448
+ const shouldDelete = await Dialog.confirm({
449
+ title: "Delete Confirmation",
450
+ content: \`<p>Are you sure you would like to delete \${item.name}?</p>\`,
451
+ defaultYes: false
452
+ });
453
+ if ( shouldDelete ) item.delete();
454
+ break;
455
+ case "sendToChat":
456
+ const chatDescription = item.description ?? item.system.description;
457
+ const content = await renderTemplate("systems/${id}/system/templates/chat/standard-card.hbs", {
458
+ cssClass: "${id}",
459
+ document: item,
460
+ hasEffects: item.effects?.size > 0,
461
+ description: chatDescription,
462
+ hasDescription: chatDescription != ""
463
+ });
464
+ ChatMessage.create({
465
+ content: content,
466
+ speaker: ChatMessage.getSpeaker(),
467
+ type: CONST.CHAT_MESSAGE_TYPES.IC
468
+ });
469
+ break;
470
+ case "toggle":
471
+ // If we haven't found an effect on the actor, check the actor.items
472
+ if ( !item ) {
473
+ const ae = this.object.items.find(i => i.effects.has(id)).effects.get(id);
474
+ if ( !ae ) return;
475
+ await ae.update({ "disabled": !ae.disabled });
476
+ break;
477
+ }
478
+ await item.update({ "disabled": !item.disabled });
479
+ break;
480
+ default:
481
+ await this.handleTableRowAction(item, action);
482
+ break;
483
+ }
484
+ }
485
+
486
+ /* -------------------------------------------- */
487
+
488
+ async handleTableRowAction(item, action) { }
489
+
490
+ /* -------------------------------------------- */
491
+
492
+ async _onSingleDocumentRemove(event) {
493
+ event.preventDefault();
494
+ const update = {};
495
+ update[event.currentTarget.dataset.name] = null;
496
+ await this.object.update(update);
497
+ }
498
+
499
+ /* -------------------------------------------- */
500
+
501
+ _onDragStart(event) {
502
+ console.log("Drag Start");
503
+
504
+ if (event.currentTarget.classList.contains("paper-doll-slot")) {
505
+ // Remove the item from the slot
506
+ const name = event.currentTarget.dataset.name;
507
+ const update = {};
508
+ update[name] = null;
509
+ this.object.update(update);
510
+ }
511
+ else {
512
+ const tr = event.currentTarget.closest("tr");
513
+ const data = {
514
+ type: tr.dataset.type == "ActiveEffect" ? "ActiveEffect" : "Item",
515
+ uuid: tr.dataset.uuid
516
+ };
517
+
518
+ event.dataTransfer.setData("text/plain", JSON.stringify(data));
519
+ }
520
+ }
521
+ }
522
+ `.appendNewLineIfNotEmpty();
523
+ fs.writeFileSync(generatedFilePath, toString(fileNode));
524
+ }
525
+ //# sourceMappingURL=base-sheet-generator.js.map