@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
@@ -3,237 +3,250 @@ import Route from "./Route.js";
3
3
  import { CancelToken } from "./types.js";
4
4
  export const routeSymbol = Symbol("routeSymbol");
5
5
  export const displayRouteSymbol = Symbol("displayRouteSymbol");
6
- document.body.addEventListener("click", (ce) => {
7
- let target = ce.target;
8
- let clickCommand;
9
- let commandParameter;
10
- while (target) {
11
- clickCommand = target.getAttribute("data-click-command");
12
- const cp = target.commandParameter;
13
- if (cp) {
14
- commandParameter = cp;
15
- }
16
- if (clickCommand) {
17
- break;
18
- }
19
- target = target.parentElement;
20
- }
21
- if (!clickCommand) {
22
- return;
6
+ document.body.addEventListener("click", ce => {
7
+ let target = ce.target;
8
+ let clickCommand;
9
+ let commandParameter;
10
+ while (target) {
11
+ clickCommand = target.getAttribute("data-click-command");
12
+ const cp = target.commandParameter;
13
+ if (cp) {
14
+ commandParameter = cp;
23
15
  }
24
- const cmd = Command.registry.get(clickCommand);
25
- if (cmd) {
26
- cmd.eventScope.dispatch(target, commandParameter);
16
+ if (clickCommand) {
17
+ break;
27
18
  }
19
+ target = target.parentElement;
20
+ }
21
+ if (!clickCommand) {
22
+ return;
23
+ }
24
+ const cmd = Command.registry.get(clickCommand);
25
+ if (cmd) {
26
+ cmd.eventScope.dispatch(target, commandParameter);
27
+ }
28
28
  });
29
29
  let id = 1;
30
- export class PageCommands {
31
- }
32
- const defaultOrSelf = (x) => x?.default ?? x;
30
+ export class PageCommands {}
31
+ const defaultOrSelf = x => x?.default ?? x;
33
32
  export default class Command {
34
- static { this.routePrefix = ""; }
35
- static { this.registry = new Map(); }
36
- static { this.routes = []; }
37
- static invokeRoute(route = location.hash.startsWith("#!")
38
- ? location.hash.substring(2)
39
- : location.href, forceDisplay = false) {
40
- let sp;
41
- if (/^http(s)?\:\/\//i.test(route)) {
42
- const url = new URL(route);
43
- sp = url.searchParams;
44
- route = url.hash.startsWith("#!") ? url.hash.substring(2) : url.pathname;
45
- }
46
- else {
47
- if (route.startsWith("#!")) {
48
- route = route.substring(2);
49
- }
50
- }
51
- const index = route.indexOf("?");
52
- if (index !== -1) {
53
- sp = new URLSearchParams(route.substring(index + 1));
54
- route = route.substring(0, index);
55
- }
56
- else {
57
- sp ??= new URLSearchParams("");
58
- }
59
- for (const iterator of this.routes) {
60
- const params = iterator.route.matches(route, sp);
61
- if (params) {
62
- params[routeSymbol] = route;
63
- params[displayRouteSymbol] = forceDisplay
64
- ? (sp.size > 0 ? `${route}?${sp.toString()}` : route)
65
- : "";
66
- iterator.dispatch(params, true);
67
- return iterator;
68
- }
69
- }
33
+ static {
34
+ this.routePrefix = "";
35
+ }
36
+ static {
37
+ this.registry = new Map();
38
+ }
39
+ static {
40
+ this.routes = [];
41
+ }
42
+ static invokeRoute(route = location.hash.startsWith("#!") ? location.hash.substring(2) : location.href, forceDisplay = false) {
43
+ let sp;
44
+ if (/^http(s)?\:\/\//i.test(route)) {
45
+ const url = new URL(route);
46
+ sp = url.searchParams;
47
+ route = url.hash.startsWith("#!") ? url.hash.substring(2) : url.pathname;
48
+ } else {
49
+ if (route.startsWith("#!")) {
50
+ route = route.substring(2);
51
+ }
70
52
  }
71
- static create({ name = `command${id++}`, eventScope = EventScope.create(), route, routeQueries, routeOrder = 0, routeDefaults, pageLoader, pageListener, openPage, pushPage, registerOnClick, pushPageForResult, pushPageForResultOrCancel, listener }) {
72
- let cmd = new Command(name, eventScope, registerOnClick);
73
- if (route) {
74
- if (this.routePrefix) {
75
- if (!route.startsWith(this.routePrefix)) {
76
- route = this.routePrefix + route;
77
- }
78
- }
79
- cmd = cmd.withRoute(route, routeQueries, routeOrder, routeDefaults);
80
- }
81
- cmd.listener = listener;
82
- if (openPage) {
83
- let pageType;
84
- cmd.listener = async (ce) => {
85
- const p = ce.detail ?? {};
86
- return p.returnResult
87
- ? PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await openPage()), p)
88
- : PageCommands.openPage(pageType ??= defaultOrSelf(await openPage()), p);
89
- };
90
- }
91
- if (pushPage) {
92
- let pageType;
93
- cmd.listener = async (ce) => {
94
- const p = ce.detail ?? {};
95
- return p.returnResult
96
- ? PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await pushPage()), p)
97
- : PageCommands.pushPage(pageType ??= defaultOrSelf(await pushPage()), p);
98
- };
99
- }
100
- if (pushPageForResult) {
101
- let pageType;
102
- cmd.listener = async (ce) => PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await pushPageForResult()), ce.detail ?? {});
103
- }
104
- if (pushPageForResultOrCancel) {
105
- let pageType;
106
- cmd.listener = async (ce) => {
107
- try {
108
- return await PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await pushPageForResultOrCancel()), ce.detail ?? {});
109
- }
110
- catch (e) {
111
- if (CancelToken.isCancelled(e)) {
112
- return;
113
- }
114
- console.error(e);
115
- }
116
- };
117
- }
118
- if (pageLoader) {
119
- let pageType;
120
- cmd.listener = async (ce) => {
121
- try {
122
- pageType ??= defaultOrSelf(await pageLoader());
123
- return pageListener(pageType)(ce);
124
- }
125
- catch (e) {
126
- if (CancelToken.isCancelled(e)) {
127
- return;
128
- }
129
- console.error(e);
130
- }
131
- };
132
- }
133
- return cmd;
134
- }
135
- get eventName() {
136
- return this.eventScope.eventType;
137
- }
138
- get route() {
139
- return this.routeObj;
140
- }
141
- constructor(name = `command${id++}`, eventScope = EventScope.create(), registerOnClick = (p) => ({
142
- "data-click-command": this.name,
143
- "commandParameter": p
144
- })) {
145
- this.name = name;
146
- this.eventScope = eventScope;
147
- this.registerOnClick = registerOnClick;
148
- Command.registry.set(this.name, this);
149
- }
150
- displayRoute(p, absoluteUrl = false) {
151
- let route = Route.encodeUrl(this.routeObj.substitute(p));
152
- if (absoluteUrl) {
153
- if (route.startsWith("#!")) {
154
- route = location.href.split("#")[0] + route;
155
- }
156
- else if (route.startsWith("/")) {
157
- route = location.protocol + "//" + location.host + route;
158
- }
159
- }
160
- return route;
161
- }
162
- withRoute(route, queries, order = 0, defaults) {
163
- this.routeObj = Route.create(route, queries, order);
164
- Command.routes.push(this);
165
- Command.routes.sort((a, b) => a.route.order - b.route.order);
166
- this.defaults = defaults;
167
- return this;
168
- }
169
- listen(r, handler = this.listener) {
170
- if (!handler) {
171
- throw new Error("Handler must be specified...");
172
- }
173
- const d = this.eventScope.listen((e) => {
174
- const ce = e;
175
- try {
176
- ce.executed = true;
177
- ce.promise = handler(e);
178
- }
179
- catch (error) {
180
- ce.promise = Promise.reject(error);
181
- }
182
- r.app.runAsync(() => ce.promise);
183
- });
184
- return r.registerDisposable(d);
185
- }
186
- dispatch(detail, cancelable) {
187
- if (this.route) {
188
- detail = this.updateRoute(detail);
189
- }
190
- this.eventScope.dispatch(document.body, detail, { cancelable, bubbles: true });
191
- }
192
- updateRoute(detail) {
193
- const d = detail ??= {};
194
- let r = d[routeSymbol];
195
- if (r === null || r === void 0) {
196
- r = this.route.substitute(d);
197
- d[routeSymbol] = r;
198
- d[displayRouteSymbol] = r;
199
- }
200
- const { defaults } = this;
201
- if (defaults) {
202
- for (const key in defaults) {
203
- if (Object.prototype.hasOwnProperty.call(defaults, key)) {
204
- const element = defaults[key];
205
- if (d[key] === void 0) {
206
- d[key] = element;
207
- }
208
- }
209
- }
210
- }
211
- return detail;
53
+ const index = route.indexOf("?");
54
+ if (index !== -1) {
55
+ sp = new URLSearchParams(route.substring(index + 1));
56
+ route = route.substring(0, index);
57
+ } else {
58
+ sp ??= new URLSearchParams("");
212
59
  }
213
- async dispatchAsync(detail, cancelable) {
214
- if (this.route) {
215
- detail = this.updateRoute(detail);
216
- }
217
- const ce = new CustomEvent(this.eventScope.eventType, { detail, cancelable });
218
- ce.returnResult = true;
219
- window.dispatchEvent(ce);
220
- if (ce.executed) {
221
- const promise = ce.promise;
222
- if (promise) {
223
- return await promise;
224
- }
225
- }
60
+ for (const iterator of this.routes) {
61
+ const params = iterator.route.matches(route, sp);
62
+ if (params) {
63
+ params[routeSymbol] = route;
64
+ params[displayRouteSymbol] = forceDisplay ? sp.size > 0 ? `${route}?${sp.toString()}` : route : "";
65
+ iterator.dispatch(params, true);
66
+ return iterator;
67
+ }
68
+ }
69
+ }
70
+ static create({
71
+ name = `command${id++}`,
72
+ eventScope = EventScope.create(),
73
+ route,
74
+ routeQueries,
75
+ routeOrder = 0,
76
+ routeDefaults,
77
+ pageLoader,
78
+ pageListener,
79
+ openPage,
80
+ pushPage,
81
+ registerOnClick,
82
+ pushPageForResult,
83
+ pushPageForResultOrCancel,
84
+ listener
85
+ }) {
86
+ let cmd = new Command(name, eventScope, registerOnClick);
87
+ if (route) {
88
+ if (this.routePrefix) {
89
+ if (!route.startsWith(this.routePrefix)) {
90
+ route = this.routePrefix + route;
91
+ }
92
+ }
93
+ cmd = cmd.withRoute(route, routeQueries, routeOrder, routeDefaults);
94
+ }
95
+ cmd.listener = listener;
96
+ if (openPage) {
97
+ let pageType;
98
+ cmd.listener = async ce => {
99
+ const p = ce.detail ?? {};
100
+ return p.returnResult ? PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await openPage()), p) : PageCommands.openPage(pageType ??= defaultOrSelf(await openPage()), p);
101
+ };
102
+ }
103
+ if (pushPage) {
104
+ let pageType;
105
+ cmd.listener = async ce => {
106
+ const p = ce.detail ?? {};
107
+ return p.returnResult ? PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await pushPage()), p) : PageCommands.pushPage(pageType ??= defaultOrSelf(await pushPage()), p);
108
+ };
109
+ }
110
+ if (pushPageForResult) {
111
+ let pageType;
112
+ cmd.listener = async ce => PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await pushPageForResult()), ce.detail ?? {});
113
+ }
114
+ if (pushPageForResultOrCancel) {
115
+ let pageType;
116
+ cmd.listener = async ce => {
117
+ try {
118
+ return await PageCommands.pushPageForResult(pageType ??= defaultOrSelf(await pushPageForResultOrCancel()), ce.detail ?? {});
119
+ } catch (e) {
120
+ if (CancelToken.isCancelled(e)) {
121
+ return;
122
+ }
123
+ console.error(e);
124
+ }
125
+ };
126
+ }
127
+ if (pageLoader) {
128
+ let pageType;
129
+ cmd.listener = async ce => {
130
+ try {
131
+ pageType ??= defaultOrSelf(await pageLoader());
132
+ return pageListener(pageType)(ce);
133
+ } catch (e) {
134
+ if (CancelToken.isCancelled(e)) {
135
+ return;
136
+ }
137
+ console.error(e);
138
+ }
139
+ };
226
140
  }
141
+ return cmd;
142
+ }
143
+ get eventName() {
144
+ return this.eventScope.eventType;
145
+ }
146
+ get route() {
147
+ return this.routeObj;
148
+ }
149
+ constructor(name = `command${id++}`, eventScope = EventScope.create(), registerOnClick = p => ({
150
+ "data-click-command": this.name,
151
+ "commandParameter": p
152
+ })) {
153
+ this.name = name;
154
+ this.eventScope = eventScope;
155
+ this.registerOnClick = registerOnClick;
156
+ Command.registry.set(this.name, this);
157
+ }
158
+ displayRoute(p, absoluteUrl = false) {
159
+ let route = Route.encodeUrl(this.routeObj.substitute(p));
160
+ if (absoluteUrl) {
161
+ if (route.startsWith("#!")) {
162
+ route = location.href.split("#")[0] + route;
163
+ } else if (route.startsWith("/")) {
164
+ route = location.protocol + "//" + location.host + route;
165
+ }
166
+ }
167
+ return route;
168
+ }
169
+ withRoute(route, queries, order = 0, defaults) {
170
+ this.routeObj = Route.create(route, queries, order);
171
+ Command.routes.push(this);
172
+ Command.routes.sort((a, b) => a.route.order - b.route.order);
173
+ this.defaults = defaults;
174
+ return this;
175
+ }
176
+ listen(r, handler = this.listener) {
177
+ if (!handler) {
178
+ throw new Error("Handler must be specified...");
179
+ }
180
+ const d = this.eventScope.listen(e => {
181
+ const ce = e;
182
+ try {
183
+ ce.executed = true;
184
+ ce.promise = handler(e);
185
+ } catch (error) {
186
+ ce.promise = Promise.reject(error);
187
+ }
188
+ r.app.runAsync(() => ce.promise);
189
+ });
190
+ return r.registerDisposable(d);
191
+ }
192
+ dispatch(detail, cancelable) {
193
+ if (this.route) {
194
+ detail = this.updateRoute(detail);
195
+ }
196
+ this.eventScope.dispatch(document.body, detail, {
197
+ cancelable,
198
+ bubbles: true
199
+ });
200
+ }
201
+ updateRoute(detail) {
202
+ const d = detail ??= {};
203
+ let r = d[routeSymbol];
204
+ if (r === null || r === void 0) {
205
+ r = this.route.substitute(d);
206
+ d[routeSymbol] = r;
207
+ d[displayRouteSymbol] = r;
208
+ }
209
+ const {
210
+ defaults
211
+ } = this;
212
+ if (defaults) {
213
+ for (const key in defaults) {
214
+ if (Object.prototype.hasOwnProperty.call(defaults, key)) {
215
+ const element = defaults[key];
216
+ if (d[key] === void 0) {
217
+ d[key] = element;
218
+ }
219
+ }
220
+ }
221
+ }
222
+ return detail;
223
+ }
224
+ async dispatchAsync(detail, cancelable) {
225
+ if (this.route) {
226
+ detail = this.updateRoute(detail);
227
+ }
228
+ const ce = new CustomEvent(this.eventScope.eventType, {
229
+ detail,
230
+ cancelable
231
+ });
232
+ ce.returnResult = true;
233
+ window.dispatchEvent(ce);
234
+ if (ce.executed) {
235
+ const promise = ce.promise;
236
+ if (promise) {
237
+ return await promise;
238
+ }
239
+ }
240
+ }
227
241
  }
228
242
  export class Commands {
229
- static install(control) {
230
- this.app = control.app;
231
- for (const key in this) {
232
- const element = this[key];
233
- if (element instanceof Command) {
234
- element.listen(control);
235
- }
236
- }
243
+ static install(control) {
244
+ this.app = control.app;
245
+ for (const key in this) {
246
+ const element = this[key];
247
+ if (element instanceof Command) {
248
+ element.listen(control);
249
+ }
237
250
  }
238
- }
239
- //# sourceMappingURL=Command.js.map
251
+ }
252
+ }
@@ -1,26 +1,25 @@
1
1
  import { CancelToken } from "./types.js";
2
2
  export default function Defer(n = 250) {
3
- return (target, key, descriptor) => {
4
- const old = descriptor.value;
5
- const k = Symbol.for(`defer_${key}`);
6
- descriptor.value = function (...a) {
7
- const id = this[k];
8
- if (id) {
9
- clearTimeout(id);
3
+ return (target, key, descriptor) => {
4
+ const old = descriptor.value;
5
+ const k = Symbol.for(`defer_${key}`);
6
+ descriptor.value = function (...a) {
7
+ const id = this[k];
8
+ if (id) {
9
+ clearTimeout(id);
10
+ }
11
+ this[k] = setTimeout(() => {
12
+ this[k] = undefined;
13
+ const result = old.apply(this, a);
14
+ if (result?.then) {
15
+ result.catch(e => {
16
+ if (CancelToken.isCancelled(e)) {
17
+ return;
10
18
  }
11
- this[k] = setTimeout(() => {
12
- this[k] = undefined;
13
- const result = old.apply(this, a);
14
- if (result?.then) {
15
- result.catch((e) => {
16
- if (CancelToken.isCancelled(e)) {
17
- return;
18
- }
19
- console.error(e);
20
- });
21
- }
22
- }, n);
23
- };
19
+ console.error(e);
20
+ });
21
+ }
22
+ }, n);
24
23
  };
25
- }
26
- //# sourceMappingURL=Defer.js.map
24
+ };
25
+ }