@web-atoms/core 2.6.24 → 2.6.25

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 (120) hide show
  1. package/dist-esm/App.js +231 -235
  2. package/dist-esm/Atom.js +93 -96
  3. package/dist-esm/MockApp.js +17 -18
  4. package/dist-esm/Pack.js +1 -3
  5. package/dist-esm/core/AtomBinder.js +189 -187
  6. package/dist-esm/core/AtomComponent.js +479 -502
  7. package/dist-esm/core/AtomDispatcher.js +46 -48
  8. package/dist-esm/core/AtomDisposableList.js +24 -25
  9. package/dist-esm/core/AtomEnumerator.js +15 -16
  10. package/dist-esm/core/AtomList.js +193 -192
  11. package/dist-esm/core/AtomLoader.js +229 -215
  12. package/dist-esm/core/AtomMap.js +7 -8
  13. package/dist-esm/core/AtomOnce.js +22 -24
  14. package/dist-esm/core/AtomSelectableList.js +240 -243
  15. package/dist-esm/core/AtomUri.js +70 -72
  16. package/dist-esm/core/AtomWatcher.js +105 -111
  17. package/dist-esm/core/Bind.js +271 -269
  18. package/dist-esm/core/BindableProperty.js +26 -27
  19. package/dist-esm/core/CancelTokenFactory.js +21 -24
  20. package/dist-esm/core/Color.js +1 -2
  21. package/dist-esm/core/Colors.js +545 -231
  22. package/dist-esm/core/Command.js +236 -223
  23. package/dist-esm/core/Defer.js +21 -22
  24. package/dist-esm/core/EventScope.js +96 -88
  25. package/dist-esm/core/ExpressionParser.js +132 -144
  26. package/dist-esm/core/ExtendControl.js +7 -8
  27. package/dist-esm/core/FormattedError.js +7 -8
  28. package/dist-esm/core/FormattedString.js +4 -5
  29. package/dist-esm/core/Hacks.js +41 -42
  30. package/dist-esm/core/IFetchEvent.js +1 -2
  31. package/dist-esm/core/IScreen.js +1 -2
  32. package/dist-esm/core/IValueConverter.js +1 -2
  33. package/dist-esm/core/InheritedProperty.js +61 -63
  34. package/dist-esm/core/InjectProperty.js +12 -13
  35. package/dist-esm/core/KeyValuePairs.js +1 -2
  36. package/dist-esm/core/Markdown.js +14 -17
  37. package/dist-esm/core/MarkdownError.js +6 -7
  38. package/dist-esm/core/PropertyBinding.js +1 -2
  39. package/dist-esm/core/PropertyMap.js +28 -27
  40. package/dist-esm/core/Route.js +149 -148
  41. package/dist-esm/core/SingleInvoker.js +32 -35
  42. package/dist-esm/core/StringHelper.js +49 -51
  43. package/dist-esm/core/TransientDisposable.js +14 -16
  44. package/dist-esm/core/WatchProperty.js +18 -17
  45. package/dist-esm/core/WebImage.js +7 -8
  46. package/dist-esm/core/XNode.js +134 -117
  47. package/dist-esm/core/sleep.js +21 -24
  48. package/dist-esm/core/types.js +102 -103
  49. package/dist-esm/di/DISingleton.js +7 -5
  50. package/dist-esm/di/DITransient.js +7 -5
  51. package/dist-esm/di/IMockOrInject.js +1 -2
  52. package/dist-esm/di/IServiceProvider.js +1 -2
  53. package/dist-esm/di/Inject.js +67 -67
  54. package/dist-esm/di/Register.js +25 -26
  55. package/dist-esm/di/RegisterScoped.js +4 -3
  56. package/dist-esm/di/RegisterSingleton.js +4 -3
  57. package/dist-esm/di/ServiceCollection.js +38 -37
  58. package/dist-esm/di/ServiceProvider.js +94 -94
  59. package/dist-esm/di/TypeKey.js +13 -12
  60. package/dist-esm/services/BusyIndicatorService.js +7 -11
  61. package/dist-esm/services/CacheService.js +54 -62
  62. package/dist-esm/services/FetchBuilder.js +327 -278
  63. package/dist-esm/services/JsonService.js +118 -116
  64. package/dist-esm/services/MockNavigationService.js +127 -126
  65. package/dist-esm/services/NavigationService.js +95 -102
  66. package/dist-esm/services/ReferenceService.js +30 -33
  67. package/dist-esm/services/http/AjaxOptions.js +1 -3
  68. package/dist-esm/services/http/JsonError.js +16 -15
  69. package/dist-esm/services/http/RestService.js +314 -323
  70. package/dist-esm/style/StyleRule.js +1 -2
  71. package/dist-esm/test.js +0 -1
  72. package/dist-esm/unit/AtomTest.js +10 -11
  73. package/dist-esm/view-model/Action.js +258 -223
  74. package/dist-esm/view-model/AtomViewModel.js +234 -232
  75. package/dist-esm/view-model/AtomWindowViewModel.js +13 -14
  76. package/dist-esm/view-model/BindableUrlParameter.js +7 -8
  77. package/dist-esm/view-model/Delay.js +21 -25
  78. package/dist-esm/view-model/Disposable.js +28 -29
  79. package/dist-esm/view-model/Load.js +72 -73
  80. package/dist-esm/view-model/Once.js +33 -35
  81. package/dist-esm/view-model/baseTypes.js +4 -5
  82. package/dist-esm/view-model/bindPromise.js +24 -27
  83. package/dist-esm/view-model/bindProperty.js +3 -4
  84. package/dist-esm/view-model/bindUrlParameter.js +39 -43
  85. package/dist-esm/web/controls/AtomComboBox.js +56 -63
  86. package/dist-esm/web/controls/AtomControl.js +485 -490
  87. package/dist-esm/web/controls/AtomGridSplitter.js +57 -50
  88. package/dist-esm/web/controls/AtomGridView.js +230 -222
  89. package/dist-esm/web/controls/AtomItemsControl.js +677 -688
  90. package/dist-esm/web/controls/AtomPage.js +6 -7
  91. package/dist-esm/web/controls/AtomTemplate.js +1 -3
  92. package/dist-esm/web/controls/AtomTemplateControl.js +28 -29
  93. package/dist-esm/web/controls/AtomViewStack.js +19 -20
  94. package/dist-esm/web/core/AtomUI.js +200 -200
  95. package/dist-esm/web/core/Encoder.js +142 -152
  96. package/dist-esm/web/core/HtmlNode.js +141 -139
  97. package/dist-esm/web/images/Busy.js +1 -2
  98. package/dist-esm/web/images/BusyDataUrl.js +2 -869
  99. package/dist-esm/web/images/Button.js +1 -2
  100. package/dist-esm/web/images/ButtonDataUrl.js +2 -30
  101. package/dist-esm/web/images/CloseButton.js +1 -2
  102. package/dist-esm/web/images/CloseButtonDataUrl.js +2 -30
  103. package/dist-esm/web/images/CloseButtonHover.js +1 -2
  104. package/dist-esm/web/images/CloseButtonHoverDataUrl.js +2 -24
  105. package/dist-esm/web/services/LastTarget.js +31 -29
  106. package/dist-esm/web/services/MarkdownService.js +19 -31
  107. package/dist-esm/web/services/NotificationPopup.js +28 -21
  108. package/dist-esm/web/services/PopupService.js +512 -478
  109. package/dist-esm/web/services/PopupWindow.js +266 -247
  110. package/dist-esm/web/styles/AtomAlertWindowStyle.js +39 -40
  111. package/dist-esm/web/styles/AtomFrameStyle.js +15 -16
  112. package/dist-esm/web/styles/AtomNotificationStyle.js +19 -20
  113. package/dist-esm/web/styles/AtomPageLinkStyle.js +11 -12
  114. package/dist-esm/web/styles/AtomPopupStyle.js +9 -10
  115. package/dist-esm/web/styles/AtomStyle.js +61 -64
  116. package/dist-esm/web/styles/AtomStyleSheet.js +50 -51
  117. package/dist-esm/web/styles/AtomWindowStyle.js +116 -117
  118. package/dist-esm/web/styles/IStyleDeclaration.js +1 -2
  119. package/dist-esm/web/styles/StyleBuilder.js +79 -80
  120. package/package.json +1 -1
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=StyleRule.js.map
1
+ export {};
package/dist-esm/test.js CHANGED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=test.js.map
@@ -2,14 +2,13 @@ import TestItem from "@web-atoms/unit-test/dist/TestItem.js";
2
2
  import { MockApp } from "../MockApp.js";
3
3
  import { waitForReady } from "../view-model/AtomViewModel.js";
4
4
  export class AtomTest extends TestItem {
5
- constructor(app = new MockApp()) {
6
- super();
7
- this.app = app;
8
- }
9
- async createViewModel(c) {
10
- const vm = this.app.resolve(c, true);
11
- await waitForReady(vm);
12
- return vm;
13
- }
14
- }
15
- //# sourceMappingURL=AtomTest.js.map
5
+ constructor(app = new MockApp()) {
6
+ super();
7
+ this.app = app;
8
+ }
9
+ async createViewModel(c) {
10
+ const vm = this.app.resolve(c, true);
11
+ await waitForReady(vm);
12
+ return vm;
13
+ }
14
+ }
@@ -6,243 +6,278 @@ import { CancelToken, errorHandled } from "../core/types.js";
6
6
  import JsonError from "../services/http/JsonError.js";
7
7
  import PopupService, { NotifyType } from "../web/services/PopupService.js";
8
8
  export class MarkBusySet {
9
- static { this.none = new MarkBusySet(function* () {
10
- }); }
11
- static { this.target = new MarkBusySet(function* (t, ct) {
12
- yield t;
13
- }); }
14
- static { this.currentTarget = new MarkBusySet(function* (t, ct) {
15
- yield ct;
16
- }); }
17
- static { this.tillCurrentTarget = new MarkBusySet(function* (target, currentTarget) {
18
- let start = target;
19
- do {
20
- yield start;
21
- start = start.parentElement;
22
- } while (start !== currentTarget);
23
- yield currentTarget;
24
- }); }
25
- static { this.button = new MarkBusySet(function* (target, currentTarget) {
26
- let start = target;
27
- while (start) {
28
- if (start.tagName === "BUTTON") {
29
- yield start;
30
- break;
31
- }
32
- start = start.parentElement;
9
+ static {
10
+ this.none = new MarkBusySet(function* () {});
11
+ }
12
+ static {
13
+ this.target = new MarkBusySet(function* (t, ct) {
14
+ yield t;
15
+ });
16
+ }
17
+ static {
18
+ this.currentTarget = new MarkBusySet(function* (t, ct) {
19
+ yield ct;
20
+ });
21
+ }
22
+ static {
23
+ this.tillCurrentTarget = new MarkBusySet(function* (target, currentTarget) {
24
+ let start = target;
25
+ do {
26
+ yield start;
27
+ start = start.parentElement;
28
+ } while (start !== currentTarget);
29
+ yield currentTarget;
30
+ });
31
+ }
32
+ static {
33
+ this.button = new MarkBusySet(function* (target, currentTarget) {
34
+ let start = target;
35
+ while (start) {
36
+ if (start.tagName === "BUTTON") {
37
+ yield start;
38
+ break;
33
39
  }
34
- }); }
35
- static { this.buttonOrAnchor = new MarkBusySet(function* (target, currentTarget) {
36
- let start = target;
37
- while (start) {
38
- if (start.tagName === "BUTTON" || start.tagName === "A") {
39
- yield start;
40
- break;
41
- }
42
- start = start.parentElement;
40
+ start = start.parentElement;
41
+ }
42
+ });
43
+ }
44
+ static {
45
+ this.buttonOrAnchor = new MarkBusySet(function* (target, currentTarget) {
46
+ let start = target;
47
+ while (start) {
48
+ if (start.tagName === "BUTTON" || start.tagName === "A") {
49
+ yield start;
50
+ break;
43
51
  }
44
- }); }
45
- static selector(selector) {
46
- return new MarkBusySet(function* (target, currentTarget) {
47
- let start = target;
48
- while (start) {
49
- if (start.matches(selector)) {
50
- yield start;
51
- break;
52
- }
53
- start = start.parentElement;
54
- }
55
- });
52
+ start = start.parentElement;
53
+ }
54
+ });
55
+ }
56
+ static selector(selector) {
57
+ return new MarkBusySet(function* (target, currentTarget) {
58
+ let start = target;
59
+ while (start) {
60
+ if (start.matches(selector)) {
61
+ yield start;
62
+ break;
63
+ }
64
+ start = start.parentElement;
65
+ }
66
+ });
67
+ }
68
+ static {
69
+ this.allAncestors = new MarkBusySet(function* (target, currentTarget) {
70
+ do {
71
+ yield target;
72
+ target = target.parentElement;
73
+ } while (target);
74
+ });
75
+ }
76
+ constructor(set) {
77
+ this.set = set;
78
+ }
79
+ *find(event) {
80
+ yield* this.set(event.target, event.currentTarget);
81
+ }
82
+ }
83
+ const onEventHandler = (owner, blockMultipleExecution, key, busyKey, onEventSetBusy) => async ce => {
84
+ const element = ce.currentTarget;
85
+ if (owner[busyKey]) {
86
+ if (blockMultipleExecution) {
87
+ return;
56
88
  }
57
- static { this.allAncestors = new MarkBusySet(function* (target, currentTarget) {
58
- do {
59
- yield target;
60
- target = target.parentElement;
61
- } while (target);
62
- }); }
63
- constructor(set) {
64
- this.set = set;
89
+ }
90
+ owner[busyKey] = true;
91
+ try {
92
+ if (onEventSetBusy) {
93
+ for (const iterator of onEventSetBusy.find(ce)) {
94
+ iterator.setAttribute("data-busy", "true");
95
+ }
65
96
  }
66
- *find(event) {
67
- yield* this.set(event.target, event.currentTarget);
97
+ const detail = ce.detail;
98
+ return await owner[key](detail, ce);
99
+ } finally {
100
+ delete owner[busyKey];
101
+ if (onEventSetBusy) {
102
+ for (const iterator of onEventSetBusy.find(ce)) {
103
+ iterator.removeAttribute("data-busy");
104
+ }
68
105
  }
69
- }
70
- const onEventHandler = (owner, blockMultipleExecution, key, busyKey, onEventSetBusy) => async (ce) => {
71
- const element = ce.currentTarget;
72
- if (owner[busyKey]) {
73
- if (blockMultipleExecution) {
74
- return;
75
- }
76
- }
77
- owner[busyKey] = true;
78
- try {
79
- if (onEventSetBusy) {
80
- for (const iterator of onEventSetBusy.find(ce)) {
81
- iterator.setAttribute("data-busy", "true");
106
+ }
107
+ };
108
+ export default function Action({
109
+ onEvent = void 0,
110
+ onEventTarget = void 0,
111
+ onEventSetBusy,
112
+ blockMultipleExecution = true,
113
+ dispatchEvent,
114
+ authorize = void 0,
115
+ defer = void 0,
116
+ success = null,
117
+ successTitle = "Done",
118
+ successMode = "notify",
119
+ confirm = null,
120
+ confirmTitle = null,
121
+ validate = false,
122
+ validateTitle = null,
123
+ close = false,
124
+ notifyDelay = 2000
125
+ } = {}) {
126
+ return (target, key, descriptor) => {
127
+ const getEventNames = names => {
128
+ if (names === null || names === void 0) {
129
+ return;
130
+ }
131
+ if (Array.isArray(names)) {
132
+ return names.map(getEventNames);
133
+ }
134
+ if (names instanceof Command) {
135
+ onEventTarget ??= window;
136
+ return names.eventScope.eventType;
137
+ }
138
+ if (names instanceof EventScope) {
139
+ onEventTarget ??= window;
140
+ return names.eventType;
141
+ }
142
+ return names;
143
+ };
144
+ onEvent = getEventNames(onEvent);
145
+ if (onEvent?.length > 0) {
146
+ const oldCreate = target.beginEdit;
147
+ if (oldCreate) {
148
+ const onEventName = Array.isArray(onEvent) ? onEvent.map(StringHelper.fromHyphenToCamel) : StringHelper.fromHyphenToCamel(onEvent);
149
+ const busyKey = Symbol.for("isBusy" + key.toString());
150
+ target.beginEdit = function () {
151
+ const result = oldCreate.apply(this, arguments);
152
+ const c = this;
153
+ let element = this.element;
154
+ if (element) {
155
+ if (onEventTarget) {
156
+ element = onEventTarget;
82
157
  }
83
- }
84
- const detail = ce.detail;
85
- return await owner[key](detail, ce);
86
- }
87
- finally {
88
- delete owner[busyKey];
89
- if (onEventSetBusy) {
90
- for (const iterator of onEventSetBusy.find(ce)) {
91
- iterator.removeAttribute("data-busy");
158
+ const handler = onEventHandler(c, blockMultipleExecution, key, busyKey, onEventSetBusy);
159
+ if (typeof onEventName === "string") {
160
+ c.bindEvent(element, onEventName, handler);
161
+ } else {
162
+ for (const eventName of onEventName) {
163
+ c.bindEvent(element, eventName, handler);
164
+ }
92
165
  }
93
- }
166
+ }
167
+ return result;
168
+ };
169
+ }
94
170
  }
95
- };
96
- export default function Action({ onEvent = void 0, onEventTarget = void 0, onEventSetBusy, blockMultipleExecution = true, dispatchEvent, authorize = void 0, defer = void 0, success = null, successTitle = "Done", successMode = "notify", confirm = null, confirmTitle = null, validate = false, validateTitle = null, close = false, notifyDelay = 2000, } = {}) {
97
- return (target, key, descriptor) => {
98
- const getEventNames = (names) => {
99
- if (names === null || names === void 0) {
171
+ const {
172
+ value
173
+ } = descriptor;
174
+ const deferSymbol = defer ? Symbol.for(`${key.toString()}Defer`) : void 0;
175
+ return {
176
+ get: function () {
177
+ const vm = this;
178
+ const oldMethod = value;
179
+ const fx = async function (...a) {
180
+ const vm = this;
181
+ if (defer) {
182
+ const previous = vm[deferSymbol];
183
+ if (previous !== 0) {
184
+ if (previous > 0) {
185
+ clearTimeout(previous);
186
+ }
187
+ vm[deferSymbol] = setTimeout(() => {
188
+ vm[deferSymbol] = 0;
189
+ const r = vm[key](...a);
190
+ delete vm[deferSymbol];
191
+ return r;
192
+ }, defer);
193
+ return;
194
+ }
195
+ }
196
+ const app = vm.app;
197
+ try {
198
+ if (authorize && !App.authorize()) {
199
+ return;
200
+ }
201
+ if (validate) {
202
+ if (!vm.isValid) {
203
+ const vMsg = typeof validate === "boolean" ? "Please enter correct information" : validate;
204
+ await PopupService.alert({
205
+ message: vMsg,
206
+ title: validateTitle || "Error"
207
+ });
100
208
  return;
209
+ }
101
210
  }
102
- if (Array.isArray(names)) {
103
- return names.map(getEventNames);
211
+ if (confirm) {
212
+ if (!(await PopupService.confirm({
213
+ message: confirm,
214
+ title: confirmTitle || "Confirm"
215
+ }))) {
216
+ return;
217
+ }
104
218
  }
105
- if (names instanceof Command) {
106
- onEventTarget ??= window;
107
- return names.eventScope.eventType;
219
+ let result = oldMethod.apply(vm, a);
220
+ if (result?.then) {
221
+ result = await result;
108
222
  }
109
- if (names instanceof EventScope) {
110
- onEventTarget ??= window;
111
- return names.eventType;
223
+ if (success) {
224
+ if (successMode === "notify") {
225
+ await PopupService.notify(success, successTitle, NotifyType.Information, notifyDelay);
226
+ } else {
227
+ await PopupService.alert({
228
+ message: success,
229
+ title: successTitle
230
+ });
231
+ }
112
232
  }
113
- return names;
114
- };
115
- onEvent = getEventNames(onEvent);
116
- if (onEvent?.length > 0) {
117
- const oldCreate = target.beginEdit;
118
- if (oldCreate) {
119
- const onEventName = Array.isArray(onEvent)
120
- ? onEvent.map(StringHelper.fromHyphenToCamel)
121
- : StringHelper.fromHyphenToCamel(onEvent);
122
- const busyKey = Symbol.for("isBusy" + key.toString());
123
- target.beginEdit = function () {
124
- const result = oldCreate.apply(this, arguments);
125
- const c = this;
126
- let element = this.element;
127
- if (element) {
128
- if (onEventTarget) {
129
- element = onEventTarget;
130
- }
131
- const handler = onEventHandler(c, blockMultipleExecution, key, busyKey, onEventSetBusy);
132
- if (typeof onEventName === "string") {
133
- c.bindEvent(element, onEventName, handler);
134
- }
135
- else {
136
- for (const eventName of onEventName) {
137
- c.bindEvent(element, eventName, handler);
138
- }
139
- }
140
- }
141
- return result;
142
- };
233
+ if (close) {
234
+ vm.close?.(result);
143
235
  }
144
- }
145
- const { value } = descriptor;
146
- const deferSymbol = defer ? Symbol.for(`${key.toString()}Defer`) : void 0;
147
- return {
148
- get: function () {
149
- const vm = this;
150
- const oldMethod = value;
151
- const fx = async function (...a) {
152
- const vm = this;
153
- if (defer) {
154
- const previous = vm[deferSymbol];
155
- if (previous !== 0) {
156
- if (previous > 0) {
157
- clearTimeout(previous);
158
- }
159
- vm[deferSymbol] = setTimeout(() => {
160
- vm[deferSymbol] = 0;
161
- const r = vm[key](...a);
162
- delete vm[deferSymbol];
163
- return r;
164
- }, defer);
165
- return;
166
- }
167
- }
168
- const app = vm.app;
169
- try {
170
- if (authorize && !App.authorize()) {
171
- return;
172
- }
173
- if (validate) {
174
- if (!vm.isValid) {
175
- const vMsg = typeof validate === "boolean"
176
- ? "Please enter correct information"
177
- : validate;
178
- await PopupService.alert({ message: vMsg, title: validateTitle || "Error" });
179
- return;
180
- }
181
- }
182
- if (confirm) {
183
- if (!await PopupService.confirm({
184
- message: confirm,
185
- title: confirmTitle || "Confirm"
186
- })) {
187
- return;
188
- }
189
- }
190
- let result = oldMethod.apply(vm, a);
191
- if (result?.then) {
192
- result = await result;
193
- }
194
- if (success) {
195
- if (successMode === "notify") {
196
- await PopupService.notify(success, successTitle, NotifyType.Information, notifyDelay);
197
- }
198
- else {
199
- await PopupService.alert({ message: success, title: successTitle });
200
- }
201
- }
202
- if (close) {
203
- vm.close?.(result);
204
- }
205
- if (dispatchEvent) {
206
- const element = (vm.element ?? document.body);
207
- if (typeof dispatchEvent !== "string") {
208
- dispatchEvent = dispatchEvent.eventType;
209
- }
210
- element.dispatchEvent(new CustomEvent(dispatchEvent, { detail: result, bubbles: true }));
211
- }
212
- return result;
213
- }
214
- catch (e) {
215
- if (CancelToken.isCancelled(e)) {
216
- throw e;
217
- }
218
- e[errorHandled] = true;
219
- if (/^timeout$/i.test(e.toString().trim())) {
220
- console.warn(e);
221
- throw e;
222
- }
223
- if (e instanceof JsonError) {
224
- if (e.details) {
225
- await PopupService.alert({
226
- message: e.message,
227
- title: "Error",
228
- detail: e.details
229
- });
230
- throw e;
231
- }
232
- }
233
- await PopupService.alert({ message: e, title: "Error" });
234
- throw e;
235
- }
236
- };
237
- Object.defineProperty(vm, key, {
238
- value: fx,
239
- writable: true,
240
- enumerable: false
236
+ if (dispatchEvent) {
237
+ const element = vm.element ?? document.body;
238
+ if (typeof dispatchEvent !== "string") {
239
+ dispatchEvent = dispatchEvent.eventType;
240
+ }
241
+ element.dispatchEvent(new CustomEvent(dispatchEvent, {
242
+ detail: result,
243
+ bubbles: true
244
+ }));
245
+ }
246
+ return result;
247
+ } catch (e) {
248
+ if (CancelToken.isCancelled(e)) {
249
+ throw e;
250
+ }
251
+ e[errorHandled] = true;
252
+ if (/^timeout$/i.test(e.toString().trim())) {
253
+ console.warn(e);
254
+ throw e;
255
+ }
256
+ if (e instanceof JsonError) {
257
+ if (e.details) {
258
+ await PopupService.alert({
259
+ message: e.message,
260
+ title: "Error",
261
+ detail: e.details
241
262
  });
242
- return fx;
243
- },
244
- configurable: true
263
+ throw e;
264
+ }
265
+ }
266
+ await PopupService.alert({
267
+ message: e,
268
+ title: "Error"
269
+ });
270
+ throw e;
271
+ }
245
272
  };
273
+ Object.defineProperty(vm, key, {
274
+ value: fx,
275
+ writable: true,
276
+ enumerable: false
277
+ });
278
+ return fx;
279
+ },
280
+ configurable: true
246
281
  };
247
- }
248
- //# sourceMappingURL=Action.js.map
282
+ };
283
+ }