intelligent-system-design-language 0.3.21 → 0.3.22

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 (42) hide show
  1. package/out/_isdlStyles.scss +63 -0
  2. package/out/cli/components/_isdlStyles.scss +63 -0
  3. package/out/cli/components/chat-card-generator.js +13 -10
  4. package/out/cli/components/chat-card-generator.js.map +1 -1
  5. package/out/cli/components/datamodel-generator.js +7 -0
  6. package/out/cli/components/datamodel-generator.js.map +1 -1
  7. package/out/cli/components/language-generator.js +1 -1
  8. package/out/cli/components/language-generator.js.map +1 -1
  9. package/out/cli/components/method-generator.js +513 -421
  10. package/out/cli/components/method-generator.js.map +1 -1
  11. package/out/cli/components/vue/base-components/vue-roll-visualizer.js +262 -85
  12. package/out/cli/components/vue/base-components/vue-roll-visualizer.js.map +1 -1
  13. package/out/cli/components/vue/vue-prompt-generator.js +22 -7
  14. package/out/cli/components/vue/vue-prompt-generator.js.map +1 -1
  15. package/out/cli/components/vue/vue-sheet-application-generator.js +17 -7
  16. package/out/cli/components/vue/vue-sheet-application-generator.js.map +1 -1
  17. package/out/cli/generator.js +32 -27
  18. package/out/cli/generator.js.map +1 -1
  19. package/out/extension/github/githubAuthProvider.js +71 -29
  20. package/out/extension/github/githubAuthProvider.js.map +1 -1
  21. package/out/extension/github/githubGistManager.js +4 -3
  22. package/out/extension/github/githubGistManager.js.map +1 -1
  23. package/out/extension/github/githubManager.js +5 -3
  24. package/out/extension/github/githubManager.js.map +1 -1
  25. package/out/extension/main.cjs +909 -532
  26. package/out/extension/main.cjs.map +3 -3
  27. package/out/extension/package.json +1 -1
  28. package/out/language/generated/ast.js +51 -2
  29. package/out/language/generated/ast.js.map +1 -1
  30. package/out/language/generated/grammar.js +742 -493
  31. package/out/language/generated/grammar.js.map +1 -1
  32. package/out/language/intelligent-system-design-language-validator.js +32 -2
  33. package/out/language/intelligent-system-design-language-validator.js.map +1 -1
  34. package/out/language/isdl-scope-provider.js +14 -1
  35. package/out/language/isdl-scope-provider.js.map +1 -1
  36. package/out/language/main.cjs +913 -569
  37. package/out/language/main.cjs.map +3 -3
  38. package/out/package.json +1 -1
  39. package/out/styles.scss +30 -15
  40. package/out/test/validating/diagnostics.test.js +40 -0
  41. package/out/test/validating/diagnostics.test.js.map +1 -1
  42. package/package.json +1 -1
@@ -8,114 +8,291 @@ export default function generateRollVisualizerComponent(destination) {
8
8
  fs.mkdirSync(generatedFileDir, { recursive: true });
9
9
  }
10
10
  const fileNode = expandToNode `
11
+ <script>
12
+ // Module-scoped cache (shared across all roll-visualizer instances for the page
13
+ // session, and surviving sheet re-renders/re-opens). Keyed by the RESOLVED formula
14
+ // (after @refs are substituted), so the same dice math -- especially the expensive
15
+ // simulation path -- is only computed once. Cleared on page reload.
16
+ const __rollVisualizerCache = new Map();
17
+ </script>
11
18
  <script setup>
12
- import { ref, computed, watch } from "vue";
13
-
14
- const props = defineProps({});
15
-
16
- const resultText = ref("Not Evaluated");
17
- const roll = ref("2d20 + d6 + 5");
19
+ import { ref, watch, computed, inject } from "vue";
18
20
 
19
- let estimated = true;
20
-
21
- const iterations = ref(1000);
22
- const labels = ref([]);
23
- const values = ref([]);
24
- const min = ref(0);
25
- const max = ref(0);
26
-
27
- const countAndSplitNumbers = (arr) => {
28
- // Count occurrences
29
- const countMap = arr.reduce((acc, num) => {
30
- acc[num] = (acc[num] || 0) + 1;
31
- return acc;
32
- }, {});
21
+ const props = defineProps({
22
+ label: String,
23
+ icon: String,
24
+ color: String,
25
+ systemPath: String,
26
+ context: Object,
27
+ // The Foundry roll formula (may contain @refs), compiled from the field's value: expression.
28
+ formula: { type: String, default: "" },
29
+ // Data object resolving the @refs, bound from the live (reactive) document/prompt data.
30
+ rollData: { type: Object, default: () => ({}) }
31
+ });
33
32
 
34
- // Sort and split into two arrays
35
- const sortedEntries = Object.entries(countMap).sort(([a], [b]) => a - b);
36
- const labels = sortedEntries.map(([num]) => Number(num));
37
- const values = sortedEntries.map(([, count]) => count);
33
+ // ----- Distribution engine ---------------------------------------------------
34
+ // For purely additive dice formulas (dice + constants, +/- only, no dice
35
+ // modifiers) we compute the EXACT probability distribution by convolution.
36
+ // Anything more exotic (keep-highest/lowest, exploding, rerolls, multiplied
37
+ // dice, fate dice, pools, functions) falls back to Monte Carlo simulation.
38
38
 
39
- return { labels, values };
40
- }
39
+ // A distribution is a Map<outcomeValue, probability>.
40
+ const dieDist = (faces) => {
41
+ const m = new Map();
42
+ for (let f = 1; f <= faces; f++) m.set(f, 1 / faces);
43
+ return m;
44
+ };
45
+ const convolve = (a, b) => {
46
+ const out = new Map();
47
+ for (const [va, pa] of a) {
48
+ for (const [vb, pb] of b) {
49
+ const v = va + vb;
50
+ out.set(v, (out.get(v) || 0) + pa * pb);
51
+ }
52
+ }
53
+ return out;
54
+ };
55
+ const negate = (a) => {
56
+ const m = new Map();
57
+ for (const [v, p] of a) m.set(-v, p);
58
+ return m;
59
+ };
60
+ const shift = (a, k) => {
61
+ const m = new Map();
62
+ for (const [v, p] of a) m.set(v + k, p);
63
+ return m;
64
+ };
41
65
 
42
- watch(roll, async () => {
66
+ // Classify a Foundry roll term. Foundry does not minify these class names in
67
+ // either v12 or v13, so constructor.name is a reliable signal.
68
+ const classify = (term) => {
69
+ const n = term?.constructor?.name;
70
+ if (n === "Die") return "die";
71
+ if (n === "NumericTerm") return "num";
72
+ if (n === "OperatorTerm") return "op";
73
+ return "other";
74
+ };
43
75
 
44
- if (!Roll.validate(roll.value)) {
45
- return;
76
+ // Decide whether a parsed roll can be solved exactly. Guard the convolution
77
+ // against pathological sizes (huge dice pools) by falling back to simulation.
78
+ const MAX_BUCKETS = 5000;
79
+ const canConvolve = (terms) => {
80
+ let minTotal = 0, maxTotal = 0;
81
+ for (const term of terms) {
82
+ const kind = classify(term);
83
+ if (kind === "op") {
84
+ if (term.operator !== "+" && term.operator !== "-") return false;
85
+ continue;
86
+ }
87
+ if (kind === "die") {
88
+ if (Array.isArray(term.modifiers) && term.modifiers.length > 0) return false;
89
+ const number = Number(term.number);
90
+ const faces = Number(term.faces);
91
+ if (!Number.isInteger(number) || !Number.isInteger(faces) || faces < 1 || number < 0) return false;
92
+ minTotal += number;
93
+ maxTotal += number * faces;
94
+ continue;
95
+ }
96
+ if (kind === "num") {
97
+ if (!Number.isFinite(Number(term.number))) return false;
98
+ continue;
99
+ }
100
+ return false; // unknown term type
46
101
  }
102
+ return (maxTotal - minTotal) <= MAX_BUCKETS;
103
+ };
47
104
 
48
- // Whenever the roll changes, we need to re-calculate the value. First we do a quick simulation, then we do a more accurate one and reload the results
49
- let result = await Roll.simulate(roll.value, 1000);
50
- let counted = countAndSplitNumbers(result);
51
- iterations.value = 1000;
105
+ // Build the exact PMF for an additive term list.
106
+ const convolveTerms = (terms) => {
107
+ let acc = new Map([[0, 1]]);
108
+ let sign = 1;
109
+ for (const term of terms) {
110
+ const kind = classify(term);
111
+ if (kind === "op") {
112
+ sign = term.operator === "-" ? -1 : 1;
113
+ continue;
114
+ }
115
+ if (kind === "die") {
116
+ let dist = new Map([[0, 1]]);
117
+ for (let i = 0; i < Number(term.number); i++) dist = convolve(dist, dieDist(Number(term.faces)));
118
+ if (sign < 0) dist = negate(dist);
119
+ acc = convolve(acc, dist);
120
+ }
121
+ else if (kind === "num") {
122
+ acc = shift(acc, sign * Number(term.number));
123
+ }
124
+ sign = 1;
125
+ }
126
+ return acc;
127
+ };
52
128
 
53
- // If there are more than 20 labels, only show every other label
54
- if (counted.labels.length > 20) {
55
- counted.labels = counted.labels.filter((_, i) => i % 2 === 0);
56
- counted.values = counted.values.filter((_, i) => i % 2 === 0);
129
+ // Derive the display payload (average, min, max, chart series) from a PMF.
130
+ const summarize = (dist, approximate) => {
131
+ const entries = [...dist.entries()].sort((a, b) => a[0] - b[0]);
132
+ let average = 0, min = Infinity, max = -Infinity;
133
+ for (const [v, p] of entries) {
134
+ average += v * p;
135
+ if (v < min) min = v;
136
+ if (v > max) max = v;
57
137
  }
138
+ const outcomeValues = entries.map(([v]) => v);
139
+ const values = entries.map(([, p]) => +(p * 100).toFixed(2));
140
+ // Thin the x-axis labels so they don't cluster/overlap: pick a "nice" step
141
+ // (1, 2, 5, 10, ...) targeting ~8 labels, and only label outcomes that land on
142
+ // a multiple of it -- so the axis reads in round numbers (5, 10, 15, 20 ...).
143
+ const lo = outcomeValues.length ? outcomeValues[0] : 0;
144
+ const hi = outcomeValues.length ? outcomeValues[outcomeValues.length - 1] : 0;
145
+ const span = Math.max(1, hi - lo);
146
+ const rawStep = span / 8;
147
+ const pow = Math.pow(10, Math.floor(Math.log10(rawStep)));
148
+ const norm = rawStep / pow;
149
+ const niceStep = (norm <= 1 ? 1 : norm <= 2 ? 2 : norm <= 5 ? 5 : 10) * pow;
150
+ const step = Math.max(1, Math.round(niceStep));
151
+ return {
152
+ average: +average.toFixed(2),
153
+ min: entries.length ? min : 0,
154
+ max: entries.length ? max : 0,
155
+ labels: outcomeValues,
156
+ values,
157
+ step,
158
+ approximate,
159
+ hasData: entries.length > 0
160
+ };
161
+ };
58
162
 
59
- labels.value = counted.labels;
60
- values.value = counted.values;
61
- min.value = Math.min(...counted.labels);
62
- max.value = Math.max(...counted.labels);
163
+ // ----- Reactive computation --------------------------------------------------
63
164
 
64
- setTimeout(async () => {
65
- Roll.simulate(roll.value, 10000).then(result2 => {
66
- let counted2 = countAndSplitNumbers(result2);
67
- iterations.value = 10000;
165
+ const result = ref({ average: 0, min: 0, max: 0, labels: [], values: [], step: 1, approximate: false, hasData: false });
166
+ const iterations = ref(0);
167
+ let runToken = 0;
68
168
 
69
- // If there are more than 20 labels, only show every other label
70
- if (counted2.labels.length > 20) {
71
- counted2.labels = counted.labels.filter((_, i) => i % 2 === 0);
72
- counted2.values = counted.values.filter((_, i) => i % 2 === 0);
73
- }
169
+ // Monte Carlo fallback. Roll.simulate builds a full Roll per sample (~0.2ms each),
170
+ // so a large batch blocks the main thread for seconds and freezes the sheet on
171
+ // render. Instead, sample a modest target in small chunks and yield to the event
172
+ // loop between each, refining the curve in place. The sheet stays responsive and
173
+ // the chart fills in progressively.
174
+ const SIM_TARGET = 2000;
175
+ const SIM_CHUNK = 200;
176
+ const runSimulation = async (formula, token, cacheKey) => {
177
+ const counts = new Map();
178
+ let done = 0;
179
+ while (done < SIM_TARGET) {
180
+ if (token !== runToken) return; // a newer run superseded us
181
+ const n = Math.min(SIM_CHUNK, SIM_TARGET - done);
182
+ const batch = await Roll.simulate(formula, n);
183
+ if (token !== runToken) return;
184
+ for (const v of batch) counts.set(v, (counts.get(v) || 0) + 1);
185
+ done += n;
186
+ const dist = new Map();
187
+ for (const [v, c] of counts) dist.set(v, c / done);
188
+ result.value = summarize(dist, true);
189
+ iterations.value = done;
190
+ // Yield so the browser can paint and handle input between chunks.
191
+ await new Promise(r => setTimeout(r, 0));
192
+ }
193
+ // Cache the completed estimate so this formula isn't re-simulated later.
194
+ __rollVisualizerCache.set(cacheKey, result.value);
195
+ };
74
196
 
75
- labels.value = counted2.labels;
76
- values.value = counted2.values;
77
- });
78
- }, 0);
79
- });
197
+ const recompute = () => {
198
+ const token = ++runToken;
199
+ const raw = (props.formula || "").trim();
200
+ if (!raw) {
201
+ result.value = { average: 0, min: 0, max: 0, labels: [], values: [], step: 1, approximate: false, hasData: false };
202
+ return;
203
+ }
204
+ let roll;
205
+ try {
206
+ roll = new Roll(raw, props.rollData || {});
207
+ }
208
+ catch (e) {
209
+ result.value = { average: 0, min: 0, max: 0, labels: [], values: [], step: 1, approximate: false, hasData: false };
210
+ return;
211
+ }
212
+ // Cache hit on the resolved formula -> reuse the result, no recompute.
213
+ const cacheKey = roll.formula;
214
+ const cached = __rollVisualizerCache.get(cacheKey);
215
+ if (cached) {
216
+ result.value = cached;
217
+ iterations.value = cached.approximate ? SIM_TARGET : 0;
218
+ return;
219
+ }
220
+ // After construction Foundry has substituted @refs into the terms.
221
+ const terms = roll.terms || [];
222
+ if (canConvolve(terms)) {
223
+ iterations.value = 0;
224
+ const summary = summarize(convolveTerms(terms), false);
225
+ __rollVisualizerCache.set(cacheKey, summary);
226
+ result.value = summary;
227
+ }
228
+ else {
229
+ // Simulate against the resolved formula (no @refs remain in roll.formula).
230
+ runSimulation(roll.formula, token, cacheKey);
231
+ }
232
+ };
80
233
 
234
+ // Debounce so rapid field edits don't kick off redundant simulations.
235
+ let debounceHandle = null;
236
+ watch(
237
+ () => [props.formula, JSON.stringify(props.rollData || {})],
238
+ () => {
239
+ if (debounceHandle) clearTimeout(debounceHandle);
240
+ debounceHandle = setTimeout(recompute, 200);
241
+ },
242
+ { immediate: true }
243
+ );
81
244
 
245
+ const getLabel = computed(() => {
246
+ const localized = game.i18n.localize(props.label);
247
+ if (props.icon) return \`<i class="fa-solid \${props.icon}"></i> \${localized}\`;
248
+ return localized;
249
+ });
250
+ const accentColor = computed(() => props.color || "#92aed9");
251
+ const averageText = computed(() => (result.value.approximate ? "≈ " : "") + result.value.average);
82
252
  </script>
83
253
 
84
254
  <template>
85
- <v-card class="mt-8 mx-auto overflow-visible" style="min-width: 600px;">
86
- <v-sheet
87
- class="v-sheet--offset mx-auto"
88
- color="cyan"
89
- elevation="12"
90
- max-width="calc(100% - 32px)"
91
- rounded="lg"
255
+ <v-card class="isdl-roll-visualizer" :name="systemPath" variant="tonal" density="compact">
256
+ <div class="isdl-roll-visualizer__header">
257
+ <span class="isdl-roll-visualizer__label" v-html="getLabel"></span>
258
+ <span class="isdl-roll-visualizer__avg" :style="{ color: accentColor }">{{ averageText }}</span>
259
+ </div>
260
+ <v-sparkline
261
+ v-if="result.hasData"
262
+ :labels="result.labels"
263
+ :model-value="result.values"
264
+ :color="accentColor"
265
+ line-width="2"
266
+ padding="8"
267
+ smooth="6"
268
+ :label-size="10"
269
+ auto-draw
270
+ preserveAspectRatio="none"
92
271
  >
93
- <v-sparkline
94
- :labels="labels"
95
- :model-value="values"
96
- color="white"
97
- line-width="2"
98
- padding="16"
99
- smooth="8"
100
- label-size="6"
101
- ></v-sparkline>
102
- </v-sheet>
103
-
104
- <v-card-text class="pt-0">
105
- <div class="text-h6 font-weight-light mb-2">
106
- <v-text-field v-model="roll"></v-text-field>
107
- </div>
108
- <div class="subheading font-weight-light text-grey" v-if="values.length > 0">
109
- Min: {{min}} Max: {{max}}
110
- </div>
111
- <v-divider class="my-2"></v-divider>
112
- <span class="text-caption text-grey font-weight-light">
113
- Approximate results based on {{iterations}} simulations
272
+ <!-- Render a label only on "nice" round outcomes; blank elsewhere so the
273
+ axis doesn't cluster and never falls back to showing the raw value. -->
274
+ <template #label="item">
275
+ {{ Number(item.value) % result.step === 0 ? item.value : "" }}
276
+ </template>
277
+ </v-sparkline>
278
+ <div v-else class="isdl-roll-visualizer__empty text-caption">
279
+ {{ game.i18n.localize("ROLLVISUALIZER.NoFormula") }}
280
+ </div>
281
+ <div class="isdl-roll-visualizer__footer text-caption">
282
+ <span v-if="result.hasData">
283
+ {{ game.i18n.localize("ROLLVISUALIZER.Min") }}: {{ result.min }}
284
+ &middot;
285
+ {{ game.i18n.localize("ROLLVISUALIZER.Max") }}: {{ result.max }}
286
+ &middot;
287
+ {{ game.i18n.localize("ROLLVISUALIZER.Average") }}: {{ averageText }}
288
+ </span>
289
+ <span v-if="result.approximate && iterations > 0" class="isdl-roll-visualizer__approx">
290
+ ({{ iterations }} {{ game.i18n.localize("ROLLVISUALIZER.Simulations") }})
114
291
  </span>
115
- </v-card-text>
292
+ </div>
116
293
  </v-card>
117
294
  </template>
118
- `;
295
+ `.appendNewLine();
119
296
  fs.writeFileSync(generatedFilePath, toString(fileNode));
120
297
  }
121
298
  //# sourceMappingURL=vue-roll-visualizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vue-roll-visualizer.js","sourceRoot":"","sources":["../../../../../src/cli/components/vue/base-components/vue-roll-visualizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,WAAmB;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAE7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAClC,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;KACrD;IAED,MAAM,QAAQ,GAAG,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4G5B,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"vue-roll-visualizer.js","sourceRoot":"","sources":["../../../../../src/cli/components/vue/base-components/vue-roll-visualizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,WAAmB;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAE7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAClC,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;KACrD;IAED,MAAM,QAAQ,GAAG,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6R5B,CAAC,aAAa,EAAE,CAAC;IAElB,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import * as path from 'node:path';
2
2
  import * as fs from 'node:fs';
3
3
  import { expandToNode, joinToNode, toString } from 'langium/generate';
4
- import { isAction, isActor, isAttributeExp, isBooleanExp, isDateExp, isDateTimeExp, isDocumentChoiceExp, isDocumentChoicesExp, isHookHandler, isNumberExp, isNumberParamValue, isParentPropertyRefChoiceParam, isParentPropertyRefExp, isProperty, isResourceExp, isSingleDocumentExp, isStringChoiceField, isStringExp, isStringExtendedChoice, isStringParamChoices, isStringParamValue, isChoiceStringValue, isLabelParam, isTimeExp, isVariableExpression, isStringChoicesField, isDamageTypeChoiceField, isDieField, isDiceField, isDieChoicesParam, isDieNoneParam, isSelfPropertyRefExp } from "../../../language/generated/ast.js";
4
+ import { isAction, isActor, isAttributeExp, isBooleanExp, isDateExp, isDateTimeExp, isDocumentChoiceExp, isDocumentChoicesExp, isHookHandler, isNumberExp, isNumberParamValue, isParentPropertyRefChoiceParam, isParentPropertyRefExp, isProperty, isResourceExp, isSingleDocumentExp, isStringChoiceField, isStringExp, isStringExtendedChoice, isStringParamChoices, isStringParamValue, isChoiceStringValue, isLabelParam, isTimeExp, isVariableExpression, isStringChoicesField, isDamageTypeChoiceField, isDieField, isDiceField, isDieChoicesParam, isDieNoneParam, isSelfPropertyRefExp, isRollVisualizerField, isIconParam, isColorParam } from "../../../language/generated/ast.js";
5
5
  import { getDocument, globalGetAllOfType, toMachineIdentifier } from '../utils.js';
6
+ import { compileVisualizerFormula } from '../method-generator.js';
6
7
  import { AstUtils } from 'langium';
7
8
  export function generatePromptApp(name, entry, id, document, prompt, destination) {
8
9
  const type = isActor(document) ? 'actor' : 'item';
@@ -30,7 +31,7 @@ export function generatePromptApp(name, entry, id, document, prompt, destination
30
31
  <div style="flex: 1 1 auto; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 0.5rem;">
31
32
  ${joinToNode(prompt.body, element => generateElement(element), { appendNewLineIfNotEmpty: true })}
32
33
  </div>
33
- <v-row class="flexrow" style="flex: 0 0 auto; margin: 0;">
34
+ <v-row class="flexrow isdl-prompt-footer" style="flex: 0 0 auto; margin: 0;">
34
35
  <v-btn @click="context.promptSubmit && context.promptSubmit()" color="primary" class="ma-1 action-btn">Submit</v-btn>
35
36
  <v-btn @click="context.promptCancel && context.promptCancel()" color="error" class="ma-1 action-btn">Cancel</v-btn>
36
37
  </v-row>
@@ -47,11 +48,6 @@ export function generatePromptApp(name, entry, id, document, prompt, destination
47
48
  return expandToNode ``;
48
49
  if (element.modifier == "hidden")
49
50
  return expandToNode ``;
50
- if (element.name == "RollVisualizer") {
51
- return expandToNode `
52
- <i-roll-visualizer :context="context"></i-roll-visualizer>
53
- `;
54
- }
55
51
  let disabled = element.modifier == "readonly" || element.modifier == "locked"; // TODO: Edit mode
56
52
  if (element.modifier == "unlocked")
57
53
  disabled = false;
@@ -60,6 +56,25 @@ export function generatePromptApp(name, entry, id, document, prompt, destination
60
56
  const label = `${document.name}.${element.name}`;
61
57
  const labelFragment = `:label="game.i18n.localize('${label}')"`;
62
58
  const systemPath = `system.${action === null || action === void 0 ? void 0 : action.name.toLowerCase()}${variable === null || variable === void 0 ? void 0 : variable.name.toLowerCase()}.${element.name.toLowerCase()}`;
59
+ if (isRollVisualizerField(element)) {
60
+ // Phase 1: static preview on prompts -- the formula resolves against the
61
+ // document's data (context.object.system). It does not yet react to sibling
62
+ // prompt inputs as the user types (see the roll-visualizer design spec).
63
+ const { formula, data } = compileVisualizerFormula(entry, id, element);
64
+ const iconParam = element.params.find(p => isIconParam(p));
65
+ const colorParam = element.params.find(p => isColorParam(p));
66
+ return expandToNode `
67
+ <i-roll-visualizer
68
+ :context="context"
69
+ label="${label}"
70
+ ${iconParam ? `icon="${iconParam.value}"` : ``}
71
+ ${colorParam ? `color="${colorParam.value}"` : ``}
72
+ systemPath="${systemPath}"
73
+ :formula='${formula}'
74
+ :rollData='${data}'>
75
+ </i-roll-visualizer>
76
+ `;
77
+ }
63
78
  if (isParentPropertyRefExp(element)) {
64
79
  let allChoices = [];
65
80
  const choicesParam = element.params.find(p => isParentPropertyRefChoiceParam(p));
@@ -1 +1 @@
1
- {"version":3,"file":"vue-prompt-generator.js","sourceRoot":"","sources":["../../../../src/cli/components/vue/vue-prompt-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vue-prompt-generator.js","sourceRoot":"","sources":["../../../../src/cli/components/vue/vue-prompt-generator.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import * as path from 'node:path';
2
2
  import * as fs from 'node:fs';
3
3
  import { expandToNode, joinToNode, toString } from 'langium/generate';
4
- import { isAccess, isAction, isActor, isAttributeExp, isAttributeParamMod, isAttributeRollParam, isAttributeFunctionParam, isAttributeStyleParam, isBackgroundParam, isBooleanExp, isBooleanParamValue, isChoiceCustomProperty, isChoiceStringValue, isColorParam, isColumn, isDateExp, isDateTimeExp, isDiceField, isDiceFields, isDieChoicesParam, isDieNoneParam, isDieField, isDocumentChoiceExp, isDocumentChoicesExp, isEntry, isHtmlExp, isIconParam, isImageParam, isLabelParam, isMacroField, isMeasuredTemplateField, isDamageBonusesField, isDamageResistancesField, isPinnedField, isMoneyField, isDamageTrackExp, isDamageTrackTypesParam, isMethodBlock, isNumberExp, isNumberParamMax, isNumberParamMin, isNumberParamValue, isNumberParamCalculator, isPage, isPaperDollExp, isParentPropertyRefChoiceParam, isParentPropertyRefExp, isSelfPropertyRefExp, isProperty, isResourceExp, isRow, isSection, isSegmentsParameter, isSingleDocumentExp, isSizeParam, isStatusProperty, isStringChoiceField, isDamageTypeChoiceField, isStringChoicesField, isStringExp, isStringExtendedChoice, isStringParamChoices, isStringParamValue, isTableField, isTimeExp, isTrackerExp, isTrackerStyleParameter, isVisibilityParam, isInventoryField, isInventorySlotsParam, isInventoryRowsParam, isInventoryColumnsParam, isInventorySlotSizeParam, isInventoryQuantityParam, isInventoryMoneyParam, isInventorySumParam, isInventorySumMaxParam, isInventorySortParam, isInventoryEmptySlotsParam, isInventorySummaryParam, isWhereParam, isGlobalParam } from "../../../language/generated/ast.js";
4
+ import { isAccess, isAction, isActor, isAttributeExp, isAttributeParamMod, isAttributeRollParam, isAttributeFunctionParam, isAttributeStyleParam, isBackgroundParam, isBooleanExp, isBooleanParamValue, isChoiceCustomProperty, isChoiceStringValue, isColorParam, isColumn, isDateExp, isDateTimeExp, isDiceField, isDiceFields, isDieChoicesParam, isDieNoneParam, isDieField, isDocumentChoiceExp, isDocumentChoicesExp, isEntry, isHtmlExp, isIconParam, isImageParam, isLabelParam, isMacroField, isMeasuredTemplateField, isDamageBonusesField, isDamageResistancesField, isPinnedField, isMoneyField, isDamageTrackExp, isDamageTrackTypesParam, isRollVisualizerField, isMethodBlock, isNumberExp, isNumberParamMax, isNumberParamMin, isNumberParamValue, isNumberParamCalculator, isPage, isPaperDollExp, isParentPropertyRefChoiceParam, isParentPropertyRefExp, isSelfPropertyRefExp, isProperty, isResourceExp, isRow, isSection, isSegmentsParameter, isSingleDocumentExp, isSizeParam, isStatusProperty, isStringChoiceField, isDamageTypeChoiceField, isStringChoicesField, isStringExp, isStringExtendedChoice, isStringParamChoices, isStringParamValue, isTableField, isTimeExp, isTrackerExp, isTrackerStyleParameter, isVisibilityParam, isInventoryField, isInventorySlotsParam, isInventoryRowsParam, isInventoryColumnsParam, isInventorySlotSizeParam, isInventoryQuantityParam, isInventoryMoneyParam, isInventorySumParam, isInventorySumMaxParam, isInventorySortParam, isInventoryEmptySlotsParam, isInventorySummaryParam, isWhereParam, isGlobalParam } from "../../../language/generated/ast.js";
5
5
  import { getAllOfType, getDocument, getSystemPath, globalGetAllOfType, toMachineIdentifier } from '../utils.js';
6
6
  import { AstUtils } from 'langium';
7
7
  import { generateActionComponent } from './vue-action-component-generator.js';
8
8
  import { generatePinnedVuetifyDatatableComponent } from './vue-pinned-datatable-component-generator.js';
9
9
  // import {generateDocumentChoiceComponent} from './vue-document-choice-component-generator.js';
10
10
  import { generateDocumentChoicesComponent } from './base-components/vue-document-choices.js';
11
- import { translateBodyExpressionToJavascript, translateExpression } from '../method-generator.js';
11
+ import { translateBodyExpressionToJavascript, translateExpression, compileVisualizerFormula } from '../method-generator.js';
12
12
  import { humanize } from "inflection";
13
13
  import { generateVuetifyDatatableComponent } from "./vue-datatable2-component-generator.js";
14
14
  import { generateDocumentChoiceComponent } from "./base-components/vue-document-choice.js";
@@ -1123,11 +1123,6 @@ function generateVueComponentTemplate(entry, id, document) {
1123
1123
  if (isProperty(element)) {
1124
1124
  if (element.modifier == "hidden")
1125
1125
  return expandToNode ``;
1126
- if (element.name == "RollVisualizer") {
1127
- return expandToNode `
1128
- <i-roll-visualizer :context="context"></i-roll-visualizer>
1129
- `;
1130
- }
1131
1126
  const standardParams = element.params;
1132
1127
  const iconParam = standardParams.find(p => isIconParam(p));
1133
1128
  const colorParam = standardParams.find(p => isColorParam(p));
@@ -1135,6 +1130,21 @@ function generateVueComponentTemplate(entry, id, document) {
1135
1130
  const standardParamsFragment = colorParam ? `:disabled="isDisabled('${element.name.toLowerCase()}')" v-if="!isHidden('${element.name.toLowerCase()}')" color="${colorParam.value}"` : `:disabled="isDisabled('${element.name.toLowerCase()}')" v-if="!isHidden('${element.name.toLowerCase()}')"`;
1136
1131
  const systemPath = getSystemPath(element, [], undefined, false);
1137
1132
  const entry = AstUtils.getContainerOfType(element, isEntry);
1133
+ if (isRollVisualizerField(element)) {
1134
+ const { formula, data } = compileVisualizerFormula(entry, id, element);
1135
+ return expandToNode `
1136
+ <i-roll-visualizer
1137
+ :context="context"
1138
+ label="${label}"
1139
+ ${iconParam ? `icon="${iconParam.value}"` : ``}
1140
+ ${colorParam ? `color="${colorParam.value}"` : ``}
1141
+ systemPath="${systemPath}"
1142
+ :formula='${formula}'
1143
+ :rollData='${data}'
1144
+ v-if="!isHidden('${element.name.toLowerCase()}')">
1145
+ </i-roll-visualizer>
1146
+ `;
1147
+ }
1138
1148
  if (isParentPropertyRefExp(element)) {
1139
1149
  const choicesParam = element.params.find(p => isParentPropertyRefChoiceParam(p));
1140
1150
  let allChoices = [];