@cratis/scene.engine 3.6.0 → 4.0.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 (53) hide show
  1. package/ActionDispatcher.ts +87 -0
  2. package/buildStarterProfile.ts +2 -2
  3. package/dist/cjs/buildStarterProfile.js.map +1 -1
  4. package/dist/cjs/index.js +9 -0
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/resolveBehaviors.js +104 -0
  7. package/dist/cjs/resolveBehaviors.js.map +1 -0
  8. package/dist/cjs/runActions.js +219 -0
  9. package/dist/cjs/runActions.js.map +1 -0
  10. package/dist/esm/ActionDispatcher.d.ts +27 -0
  11. package/dist/esm/ActionDispatcher.d.ts.map +1 -0
  12. package/dist/esm/ActionDispatcher.js +2 -0
  13. package/dist/esm/ActionDispatcher.js.map +1 -0
  14. package/dist/esm/buildStarterProfile.d.ts +2 -2
  15. package/dist/esm/buildStarterProfile.d.ts.map +1 -1
  16. package/dist/esm/buildStarterProfile.js.map +1 -1
  17. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.d.ts +2 -0
  18. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.d.ts.map +1 -0
  19. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.js +68 -0
  20. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.js.map +1 -0
  21. package/dist/esm/for_runActions/given/a_recording_dispatcher.d.ts +21 -0
  22. package/dist/esm/for_runActions/given/a_recording_dispatcher.d.ts.map +1 -0
  23. package/dist/esm/for_runActions/given/a_recording_dispatcher.js +45 -0
  24. package/dist/esm/for_runActions/given/a_recording_dispatcher.js.map +1 -0
  25. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.d.ts +2 -0
  26. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.d.ts.map +1 -0
  27. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.js +126 -0
  28. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.js.map +1 -0
  29. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.d.ts +2 -0
  30. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.d.ts.map +1 -0
  31. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.js +61 -0
  32. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.js.map +1 -0
  33. package/dist/esm/index.d.ts +3 -0
  34. package/dist/esm/index.d.ts.map +1 -1
  35. package/dist/esm/index.js +2 -0
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/resolveBehaviors.d.ts +16 -0
  38. package/dist/esm/resolveBehaviors.d.ts.map +1 -0
  39. package/dist/esm/resolveBehaviors.js +99 -0
  40. package/dist/esm/resolveBehaviors.js.map +1 -0
  41. package/dist/esm/runActions.d.ts +26 -0
  42. package/dist/esm/runActions.d.ts.map +1 -0
  43. package/dist/esm/runActions.js +215 -0
  44. package/dist/esm/runActions.js.map +1 -0
  45. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  46. package/for_resolveBehaviors/when_resolving_additive_attachments.ts +100 -0
  47. package/for_runActions/given/a_recording_dispatcher.ts +72 -0
  48. package/for_runActions/when_running_a_sequence_of_actions.ts +226 -0
  49. package/for_runActions/when_running_against_the_shared_fixture_corpus.ts +124 -0
  50. package/index.ts +3 -0
  51. package/package.json +3 -3
  52. package/resolveBehaviors.ts +137 -0
  53. package/runActions.ts +284 -0
@@ -0,0 +1,215 @@
1
+ import { InteractionActionKind } from '@cratis/scene.model';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * Why an interaction stopped before running everything it was given.
7
+ */ var InteractionStop = /*#__PURE__*/ function(InteractionStop) {
8
+ /** Everything ran. */ InteractionStop["Completed"] = "Completed";
9
+ /** A `confirm` was declined, so the actions it gates did not run. */ InteractionStop["Declined"] = "Declined";
10
+ /** A navigation happened, so anything after it belonged to a screen that is gone. */ InteractionStop["Navigated"] = "Navigated";
11
+ /** An action could not be realized and was reported. */ InteractionStop["Reported"] = "Reported";
12
+ return InteractionStop;
13
+ }({});
14
+ function describe(action) {
15
+ switch(action.kind){
16
+ case InteractionActionKind.ExecuteCommand:
17
+ return `execute ${action.command}`;
18
+ case InteractionActionKind.Navigate:
19
+ return `navigate to ${action.screen}`;
20
+ case InteractionActionKind.NavigateBack:
21
+ return 'navigate back';
22
+ case InteractionActionKind.OpenDialog:
23
+ return `open dialog ${action.dialogTemplate}`;
24
+ case InteractionActionKind.CloseDialog:
25
+ return 'close dialog';
26
+ case InteractionActionKind.RefreshQuery:
27
+ return `refresh ${action.query}`;
28
+ case InteractionActionKind.SetState:
29
+ return `set ${action.target}`;
30
+ case InteractionActionKind.Notify:
31
+ return 'notify';
32
+ case InteractionActionKind.Confirm:
33
+ return 'confirm';
34
+ case InteractionActionKind.RaiseTrigger:
35
+ return `raise ${action.trigger}`;
36
+ default:
37
+ return String(action.kind);
38
+ }
39
+ }
40
+ function argumentsOf(action, context) {
41
+ const args = {};
42
+ for (const argument of action.arguments ?? []){
43
+ args[argument.name] = context.resolve(argument.value);
44
+ }
45
+ return args;
46
+ }
47
+ function messageOf(message, context, findings) {
48
+ if (message.text !== undefined) return message.text;
49
+ if (message.stringsKey !== undefined) return context.localize ? context.localize(message.stringsKey) : message.stringsKey;
50
+ if (message.binding !== undefined) {
51
+ const resolved = context.resolve(message.binding);
52
+ if (resolved === undefined || resolved === null) {
53
+ findings.push({
54
+ kind: 'unresolvedMessage',
55
+ detail: `The message binding '${message.binding.path}' resolved to nothing`
56
+ });
57
+ return '';
58
+ }
59
+ return String(resolved);
60
+ }
61
+ findings.push({
62
+ kind: 'unresolvedMessage',
63
+ detail: 'The action carries no message'
64
+ });
65
+ return '';
66
+ }
67
+ /**
68
+ * Runs a sequence of actions, in order, handling continuations.
69
+ *
70
+ * The rules, all of which live here rather than in a renderer so they can be asserted without a DOM:
71
+ *
72
+ * - Actions run in the order they were declared.
73
+ * - A declined `confirm` stops the sequence. Gating what follows is the whole point of it.
74
+ * - A navigation stops the sequence, because the screen the remaining actions were written for is gone. The
75
+ * compiler reports that as unreachable, so reaching it at runtime means the document changed underneath.
76
+ * - An action that can fail branches into `onSuccess` or `onFailure`; a dialog also runs `onResult`.
77
+ * - An action kind the engine does not know is **reported and the sequence abandoned**, never silently skipped.
78
+ * Continuing would half-apply a sequence whose gate may well have been the action this renderer could not
79
+ * understand. This is what lets a newer document be opened by an older renderer without pretending it worked.
80
+ *
81
+ * @param actions The actions to run.
82
+ * @param dispatcher The seam that performs the effects.
83
+ * @param context How to resolve bindings and localization.
84
+ * @returns What happened.
85
+ */ async function runActions(actions, dispatcher, context) {
86
+ const run = {
87
+ stop: "Completed",
88
+ findings: [],
89
+ ran: []
90
+ };
91
+ await runSequence(actions, dispatcher, context, run);
92
+ return run;
93
+ }
94
+ async function runSequence(actions, dispatcher, context, run) {
95
+ for (const action of actions){
96
+ if (await runOne(action, dispatcher, context, run)) return;
97
+ }
98
+ }
99
+ async function runOne(action, dispatcher, context, run) {
100
+ const args = argumentsOf(action, context);
101
+ switch(action.kind){
102
+ case InteractionActionKind.ExecuteCommand:
103
+ {
104
+ run.ran.push(describe(action));
105
+ const outcome = await dispatcher.executeCommand(action.command, args);
106
+ await runSequence(outcome.isSuccess ? action.onSuccess ?? [] : action.onFailure ?? [], dispatcher, context, run);
107
+ return false;
108
+ }
109
+ case InteractionActionKind.Navigate:
110
+ run.ran.push(describe(action));
111
+ await dispatcher.navigate(action.screen, args);
112
+ run.stop = "Navigated";
113
+ return true;
114
+ case InteractionActionKind.NavigateBack:
115
+ run.ran.push(describe(action));
116
+ await dispatcher.navigateBack();
117
+ run.stop = "Navigated";
118
+ return true;
119
+ case InteractionActionKind.OpenDialog:
120
+ {
121
+ run.ran.push(describe(action));
122
+ const outcome = await dispatcher.openDialog(action.dialogTemplate, args);
123
+ await runSequence(outcome.isConfirmed ? action.onSuccess ?? [] : action.onFailure ?? [], dispatcher, context, run);
124
+ await runSequence(action.onResult ?? [], dispatcher, context, run);
125
+ return false;
126
+ }
127
+ case InteractionActionKind.CloseDialog:
128
+ run.ran.push(describe(action));
129
+ await dispatcher.closeDialog();
130
+ return false;
131
+ case InteractionActionKind.RefreshQuery:
132
+ {
133
+ run.ran.push(describe(action));
134
+ await dispatcher.refreshQuery(action.query);
135
+ await runSequence(action.onSuccess ?? [], dispatcher, context, run);
136
+ return false;
137
+ }
138
+ case InteractionActionKind.SetState:
139
+ run.ran.push(describe(action));
140
+ dispatcher.setState(action.target, context.resolve(action.value));
141
+ return false;
142
+ case InteractionActionKind.Notify:
143
+ run.ran.push(describe(action));
144
+ dispatcher.notify(action.level, messageOf(action.message, context, run.findings));
145
+ return false;
146
+ case InteractionActionKind.Confirm:
147
+ {
148
+ run.ran.push(describe(action));
149
+ const confirmed = await dispatcher.confirm(messageOf(action.message, context, run.findings));
150
+ if (!confirmed) {
151
+ await runSequence(action.onFailure ?? [], dispatcher, context, run);
152
+ run.stop = "Declined";
153
+ return true;
154
+ }
155
+ await runSequence(action.onSuccess ?? [], dispatcher, context, run);
156
+ return false;
157
+ }
158
+ case InteractionActionKind.RaiseTrigger:
159
+ {
160
+ run.ran.push(describe(action));
161
+ await dispatcher.raise(action.trigger, args);
162
+ await runSequence(action.onSuccess ?? [], dispatcher, context, run);
163
+ return false;
164
+ }
165
+ default:
166
+ run.findings.push({
167
+ kind: 'unknownAction',
168
+ detail: `The renderer does not know the action kind '${String(action.kind)}'`
169
+ });
170
+ run.stop = "Reported";
171
+ return true;
172
+ }
173
+ }
174
+ /**
175
+ * Runs the bindings a trigger resolved to, in order, honouring each one's guard.
176
+ *
177
+ * The `where` guard belongs here rather than in a renderer for the same reason the sequencing does: whether a
178
+ * binding applies is a property of the document, not of the event that arrived. A guard that resolves to
179
+ * nothing is treated as false and reported - an interaction that silently does nothing is indistinguishable
180
+ * from one that is broken, and the whole point of a finding is to tell those apart.
181
+ *
182
+ * @param bindings The bindings to run, already resolved and ordered.
183
+ * @param dispatcher The seam that performs the effects.
184
+ * @param context How to resolve bindings and localization.
185
+ * @returns What happened across all of them.
186
+ */ async function runBindings(bindings, dispatcher, context) {
187
+ const run = {
188
+ stop: "Completed",
189
+ findings: [],
190
+ ran: []
191
+ };
192
+ for (const candidate of bindings){
193
+ if (!applies(candidate.binding, context, run)) continue;
194
+ await runSequence(candidate.binding.actions ?? [], dispatcher, context, run);
195
+ // A navigation or a declined confirm ends the interaction, not merely the binding that caused it.
196
+ // The screen the later bindings were attached to is gone, or the gate they sat behind was refused.
197
+ if (run.stop !== "Completed") break;
198
+ }
199
+ return run;
200
+ }
201
+ function applies(binding, context, run) {
202
+ if (!binding.condition) return true;
203
+ const value = context.resolve(binding.condition);
204
+ if (value === undefined || value === null) {
205
+ run.findings.push({
206
+ kind: 'unresolvedCondition',
207
+ detail: `The guard '${binding.condition.path}' resolved to nothing, so the binding did not run`
208
+ });
209
+ return false;
210
+ }
211
+ return Boolean(value);
212
+ }
213
+
214
+ export { InteractionStop, runActions, runBindings };
215
+ //# sourceMappingURL=runActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runActions.js","sources":["../../runActions.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { InteractionBinding } from '@cratis/scene.model';\nimport { ResolvedBinding } from './resolveBehaviors';\nimport {\n ConfirmAction,\n ExecuteCommandAction,\n InteractionAction,\n InteractionActionKind,\n InteractionArgument,\n InteractionMessage,\n NavigateAction,\n NotifyAction,\n OpenDialogAction,\n RaiseTriggerAction,\n RefreshQueryAction,\n SetStateAction,\n} from '@cratis/scene.model';\n\nimport { ActionDispatcher } from './ActionDispatcher';\nimport { BindingResolver } from './BindingResolver';\n\n/**\n * Why an interaction stopped before running everything it was given.\n */\nexport enum InteractionStop {\n /** Everything ran. */\n Completed = 'Completed',\n\n /** A `confirm` was declined, so the actions it gates did not run. */\n Declined = 'Declined',\n\n /** A navigation happened, so anything after it belonged to a screen that is gone. */\n Navigated = 'Navigated',\n\n /** An action could not be realized and was reported. */\n Reported = 'Reported',\n}\n\n/**\n * Something an interaction could not do.\n *\n * Findings are collected rather than thrown: one unresolvable action must not take down the rest of the\n * application, and 'this application produced no findings' has to be checkable rather than a matter of opinion.\n */\nexport interface InteractionFinding {\n kind: 'unknownAction' | 'unresolvedMessage' | 'unresolvedCondition';\n detail: string;\n}\n\n/**\n * What an interaction did.\n */\nexport interface InteractionRun {\n stop: InteractionStop;\n findings: InteractionFinding[];\n /** The actions that actually ran, in order - the thing a spec asserts on. */\n ran: string[];\n}\n\n/**\n * How to resolve the values an action needs.\n */\nexport interface InteractionContext {\n resolve: BindingResolver;\n /** Looks up a localization key. Returns the key itself when the host has no catalogue for it. */\n localize?: (key: string) => string;\n}\n\nfunction describe(action: InteractionAction): string {\n switch (action.kind) {\n case InteractionActionKind.ExecuteCommand: return `execute ${(action as ExecuteCommandAction).command}`;\n case InteractionActionKind.Navigate: return `navigate to ${(action as NavigateAction).screen}`;\n case InteractionActionKind.NavigateBack: return 'navigate back';\n case InteractionActionKind.OpenDialog: return `open dialog ${(action as OpenDialogAction).dialogTemplate}`;\n case InteractionActionKind.CloseDialog: return 'close dialog';\n case InteractionActionKind.RefreshQuery: return `refresh ${(action as RefreshQueryAction).query}`;\n case InteractionActionKind.SetState: return `set ${(action as SetStateAction).target}`;\n case InteractionActionKind.Notify: return 'notify';\n case InteractionActionKind.Confirm: return 'confirm';\n case InteractionActionKind.RaiseTrigger: return `raise ${(action as RaiseTriggerAction).trigger}`;\n default: return String(action.kind);\n }\n}\n\nfunction argumentsOf(action: InteractionAction, context: InteractionContext): Record<string, unknown> {\n const args: Record<string, unknown> = {};\n for (const argument of (action.arguments ?? []) as InteractionArgument[]) {\n args[argument.name] = context.resolve(argument.value);\n }\n\n return args;\n}\n\nfunction messageOf(message: InteractionMessage, context: InteractionContext, findings: InteractionFinding[]): string {\n if (message.text !== undefined) return message.text;\n if (message.stringsKey !== undefined) return context.localize ? context.localize(message.stringsKey) : message.stringsKey;\n if (message.binding !== undefined) {\n const resolved = context.resolve(message.binding);\n if (resolved === undefined || resolved === null) {\n findings.push({ kind: 'unresolvedMessage', detail: `The message binding '${message.binding.path}' resolved to nothing` });\n return '';\n }\n\n return String(resolved);\n }\n\n findings.push({ kind: 'unresolvedMessage', detail: 'The action carries no message' });\n return '';\n}\n\n/**\n * Runs a sequence of actions, in order, handling continuations.\n *\n * The rules, all of which live here rather than in a renderer so they can be asserted without a DOM:\n *\n * - Actions run in the order they were declared.\n * - A declined `confirm` stops the sequence. Gating what follows is the whole point of it.\n * - A navigation stops the sequence, because the screen the remaining actions were written for is gone. The\n * compiler reports that as unreachable, so reaching it at runtime means the document changed underneath.\n * - An action that can fail branches into `onSuccess` or `onFailure`; a dialog also runs `onResult`.\n * - An action kind the engine does not know is **reported and the sequence abandoned**, never silently skipped.\n * Continuing would half-apply a sequence whose gate may well have been the action this renderer could not\n * understand. This is what lets a newer document be opened by an older renderer without pretending it worked.\n *\n * @param actions The actions to run.\n * @param dispatcher The seam that performs the effects.\n * @param context How to resolve bindings and localization.\n * @returns What happened.\n */\nexport async function runActions(\n actions: InteractionAction[],\n dispatcher: ActionDispatcher,\n context: InteractionContext\n): Promise<InteractionRun> {\n const run: InteractionRun = { stop: InteractionStop.Completed, findings: [], ran: [] };\n await runSequence(actions, dispatcher, context, run);\n return run;\n}\n\nasync function runSequence(\n actions: InteractionAction[],\n dispatcher: ActionDispatcher,\n context: InteractionContext,\n run: InteractionRun\n): Promise<void> {\n for (const action of actions) {\n if (await runOne(action, dispatcher, context, run)) return;\n }\n}\n\nasync function runOne(\n action: InteractionAction,\n dispatcher: ActionDispatcher,\n context: InteractionContext,\n run: InteractionRun\n): Promise<boolean> {\n const args = argumentsOf(action, context);\n\n switch (action.kind) {\n case InteractionActionKind.ExecuteCommand: {\n run.ran.push(describe(action));\n const outcome = await dispatcher.executeCommand((action as ExecuteCommandAction).command, args);\n await runSequence(outcome.isSuccess ? (action.onSuccess ?? []) : (action.onFailure ?? []), dispatcher, context, run);\n return false;\n }\n\n case InteractionActionKind.Navigate:\n run.ran.push(describe(action));\n await dispatcher.navigate((action as NavigateAction).screen, args);\n run.stop = InteractionStop.Navigated;\n return true;\n\n case InteractionActionKind.NavigateBack:\n run.ran.push(describe(action));\n await dispatcher.navigateBack();\n run.stop = InteractionStop.Navigated;\n return true;\n\n case InteractionActionKind.OpenDialog: {\n run.ran.push(describe(action));\n const outcome = await dispatcher.openDialog((action as OpenDialogAction).dialogTemplate, args);\n await runSequence(outcome.isConfirmed ? (action.onSuccess ?? []) : (action.onFailure ?? []), dispatcher, context, run);\n await runSequence((action.onResult ?? []), dispatcher, context, run);\n return false;\n }\n\n case InteractionActionKind.CloseDialog:\n run.ran.push(describe(action));\n await dispatcher.closeDialog();\n return false;\n\n case InteractionActionKind.RefreshQuery: {\n run.ran.push(describe(action));\n await dispatcher.refreshQuery((action as RefreshQueryAction).query);\n await runSequence((action.onSuccess ?? []), dispatcher, context, run);\n return false;\n }\n\n case InteractionActionKind.SetState:\n run.ran.push(describe(action));\n dispatcher.setState((action as SetStateAction).target, context.resolve((action as SetStateAction).value));\n return false;\n\n case InteractionActionKind.Notify:\n run.ran.push(describe(action));\n dispatcher.notify((action as NotifyAction).level, messageOf((action as NotifyAction).message, context, run.findings));\n return false;\n\n case InteractionActionKind.Confirm: {\n run.ran.push(describe(action));\n const confirmed = await dispatcher.confirm(messageOf((action as ConfirmAction).message, context, run.findings));\n if (!confirmed) {\n await runSequence((action.onFailure ?? []), dispatcher, context, run);\n run.stop = InteractionStop.Declined;\n return true;\n }\n\n await runSequence((action.onSuccess ?? []), dispatcher, context, run);\n return false;\n }\n\n case InteractionActionKind.RaiseTrigger: {\n run.ran.push(describe(action));\n await dispatcher.raise((action as RaiseTriggerAction).trigger, args);\n await runSequence((action.onSuccess ?? []), dispatcher, context, run);\n return false;\n }\n\n default:\n run.findings.push({ kind: 'unknownAction', detail: `The renderer does not know the action kind '${String(action.kind)}'` });\n run.stop = InteractionStop.Reported;\n return true;\n }\n}\n\n/**\n * Runs the bindings a trigger resolved to, in order, honouring each one's guard.\n *\n * The `where` guard belongs here rather than in a renderer for the same reason the sequencing does: whether a\n * binding applies is a property of the document, not of the event that arrived. A guard that resolves to\n * nothing is treated as false and reported - an interaction that silently does nothing is indistinguishable\n * from one that is broken, and the whole point of a finding is to tell those apart.\n *\n * @param bindings The bindings to run, already resolved and ordered.\n * @param dispatcher The seam that performs the effects.\n * @param context How to resolve bindings and localization.\n * @returns What happened across all of them.\n */\nexport async function runBindings(\n bindings: ResolvedBinding[],\n dispatcher: ActionDispatcher,\n context: InteractionContext\n): Promise<InteractionRun> {\n const run: InteractionRun = { stop: InteractionStop.Completed, findings: [], ran: [] };\n\n for (const candidate of bindings) {\n if (!applies(candidate.binding, context, run)) continue;\n\n await runSequence(candidate.binding.actions ?? [], dispatcher, context, run);\n\n // A navigation or a declined confirm ends the interaction, not merely the binding that caused it.\n // The screen the later bindings were attached to is gone, or the gate they sat behind was refused.\n if (run.stop !== InteractionStop.Completed) break;\n }\n\n return run;\n}\n\nfunction applies(binding: InteractionBinding, context: InteractionContext, run: InteractionRun): boolean {\n if (!binding.condition) return true;\n\n const value = context.resolve(binding.condition);\n if (value === undefined || value === null) {\n run.findings.push({\n kind: 'unresolvedCondition',\n detail: `The guard '${binding.condition.path}' resolved to nothing, so the binding did not run`,\n });\n return false;\n }\n\n return Boolean(value);\n}\n"],"names":["InteractionStop","describe","action","kind","InteractionActionKind","ExecuteCommand","command","Navigate","screen","NavigateBack","OpenDialog","dialogTemplate","CloseDialog","RefreshQuery","query","SetState","target","Notify","Confirm","RaiseTrigger","trigger","String","argumentsOf","context","args","argument","arguments","name","resolve","value","messageOf","message","findings","text","undefined","stringsKey","localize","binding","resolved","push","detail","path","runActions","actions","dispatcher","run","stop","ran","runSequence","runOne","outcome","executeCommand","isSuccess","onSuccess","onFailure","navigate","navigateBack","openDialog","isConfirmed","onResult","closeDialog","refreshQuery","setState","notify","level","confirmed","confirm","raise","runBindings","bindings","candidate","applies","condition","Boolean"],"mappings":"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"}