@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
@@ -6,236 +6,250 @@ import { displayRouteSymbol } from "./Command.js";
6
6
  import { getOwnInheritedProperty } from "./InheritedProperty.js";
7
7
  import { CancelToken } from "./types.js";
8
8
  export class AtomLoader {
9
- static { this.id = 1; }
10
- static async load(url, app) {
11
- if (url instanceof AtomUri) {
12
- if (url.host === "reference") {
13
- const r = app.get(ReferenceService).get(url.path);
14
- if (!r) {
15
- throw new Error("reference not found");
16
- }
17
- return r.consume();
18
- }
19
- if (url.host === "class") {
20
- const r = app.get(ReferenceService).get(url.path);
21
- if (!r) {
22
- throw new Error("reference not found");
23
- }
24
- return app.resolve(r.consume(), true);
25
- }
26
- url = url.path;
9
+ static {
10
+ this.id = 1;
11
+ }
12
+ static async load(url, app) {
13
+ if (url instanceof AtomUri) {
14
+ if (url.host === "reference") {
15
+ const r = app.get(ReferenceService).get(url.path);
16
+ if (!r) {
17
+ throw new Error("reference not found");
27
18
  }
28
- const obj = app.resolve(url, true);
29
- return obj;
19
+ return r.consume();
20
+ }
21
+ if (url.host === "class") {
22
+ const r = app.get(ReferenceService).get(url.path);
23
+ if (!r) {
24
+ throw new Error("reference not found");
25
+ }
26
+ return app.resolve(r.consume(), true);
27
+ }
28
+ url = url.path;
30
29
  }
31
- static async loadView(url, app, hookCloseEvents, vmFactory) {
32
- const env_1 = { stack: [], error: void 0, hasError: false };
33
- try {
34
- const _busy = __addDisposableResource(env_1, app.createBusyIndicator({
35
- title: url.toString(),
36
- description: `Loading View ${url}`
37
- }), false);
38
- const view = await AtomLoader.load(url, app);
39
- let vm = view.viewModel;
40
- if (!vm) {
41
- if (!vmFactory) {
42
- return { view };
43
- }
44
- vm = vmFactory();
45
- view.viewModel = vm;
30
+ const obj = app.resolve(url, true);
31
+ return obj;
32
+ }
33
+ static async loadView(url, app, hookCloseEvents, vmFactory) {
34
+ const env_1 = {
35
+ stack: [],
36
+ error: void 0,
37
+ hasError: false
38
+ };
39
+ try {
40
+ const _busy = __addDisposableResource(env_1, app.createBusyIndicator({
41
+ title: url.toString(),
42
+ description: `Loading View ${url}`
43
+ }), false);
44
+ const view = await AtomLoader.load(url, app);
45
+ let vm = view.viewModel;
46
+ if (!vm) {
47
+ if (!vmFactory) {
48
+ return {
49
+ view
50
+ };
51
+ }
52
+ vm = vmFactory();
53
+ view.viewModel = vm;
54
+ }
55
+ if ("parameters" in view) {
56
+ vm = view.parameters;
57
+ }
58
+ if (vm) {
59
+ const jsonService = app.get(JsonService);
60
+ for (const key in url.query) {
61
+ if (url.query.hasOwnProperty(key)) {
62
+ const element = url.query[key];
63
+ if (typeof element === "object") {
64
+ vm[key] = jsonService.parse(jsonService.stringify(element));
65
+ continue;
46
66
  }
47
- if ("parameters" in view) {
48
- vm = view.parameters;
67
+ if (/^json\:/.test(key)) {
68
+ const k = key.split(":")[1];
69
+ vm[k] = jsonService.parse(element.toString());
70
+ continue;
49
71
  }
50
- if (vm) {
51
- const jsonService = app.get(JsonService);
52
- for (const key in url.query) {
53
- if (url.query.hasOwnProperty(key)) {
54
- const element = url.query[key];
55
- if (typeof element === "object") {
56
- vm[key] = jsonService.parse(jsonService.stringify(element));
57
- continue;
58
- }
59
- if (/^json\:/.test(key)) {
60
- const k = key.split(":")[1];
61
- vm[k] = jsonService.parse(element.toString());
62
- continue;
63
- }
64
- if (/^ref\:/.test(key)) {
65
- const rs = app.get(ReferenceService);
66
- const v = rs.get(element);
67
- vm[key.split(":", 2)[1]] = v.consume();
68
- continue;
69
- }
70
- try {
71
- vm[key] = element;
72
- }
73
- catch (e) {
74
- console.error(e);
75
- }
76
- }
77
- }
72
+ if (/^ref\:/.test(key)) {
73
+ const rs = app.get(ReferenceService);
74
+ const v = rs.get(element);
75
+ vm[key.split(":", 2)[1]] = v.consume();
76
+ continue;
78
77
  }
79
- if (hookCloseEvents && vm) {
80
- const disposables = view.disposables;
81
- const id = (AtomLoader.id++).toString();
82
- view.id = id;
83
- const returnPromise = new Promise((resolve, reject) => {
84
- disposables.add(app.subscribe(`atom-window-close:${id}`, (m, r) => {
85
- resolve(r);
86
- view.dispose();
87
- }));
88
- disposables.add(app.subscribe(`atom-window-cancel:${id}`, () => {
89
- reject("cancelled");
90
- view.dispose();
91
- }));
92
- });
93
- vm.windowName = id;
94
- view.returnPromise = returnPromise;
95
- return { view, disposables, returnPromise, id };
78
+ try {
79
+ vm[key] = element;
80
+ } catch (e) {
81
+ console.error(e);
96
82
  }
97
- return { view };
98
- }
99
- catch (e_1) {
100
- env_1.error = e_1;
101
- env_1.hasError = true;
102
- }
103
- finally {
104
- __disposeResources(env_1);
83
+ }
105
84
  }
85
+ }
86
+ if (hookCloseEvents && vm) {
87
+ const disposables = view.disposables;
88
+ const id = (AtomLoader.id++).toString();
89
+ view.id = id;
90
+ const returnPromise = new Promise((resolve, reject) => {
91
+ disposables.add(app.subscribe(`atom-window-close:${id}`, (m, r) => {
92
+ resolve(r);
93
+ view.dispose();
94
+ }));
95
+ disposables.add(app.subscribe(`atom-window-cancel:${id}`, () => {
96
+ reject("cancelled");
97
+ view.dispose();
98
+ }));
99
+ });
100
+ vm.windowName = id;
101
+ view.returnPromise = returnPromise;
102
+ return {
103
+ view,
104
+ disposables,
105
+ returnPromise,
106
+ id
107
+ };
108
+ }
109
+ return {
110
+ view
111
+ };
112
+ } catch (e_1) {
113
+ env_1.error = e_1;
114
+ env_1.hasError = true;
115
+ } finally {
116
+ __disposeResources(env_1);
106
117
  }
107
- static async loadClass(url, { title, [displayRouteSymbol]: route, ...parameters } = {}, app) {
108
- const env_2 = { stack: [], error: void 0, hasError: false };
109
- try {
110
- const _busyIndicator = __addDisposableResource(env_2, app.createBusyIndicator({
111
- title: url?.toString(),
112
- description: `Loading View ${url}`
113
- }), false);
114
- const view = await AtomLoader.load(url, app);
115
- const vm = getOwnInheritedProperty(view, "viewModel");
116
- let params;
117
- if ("parameters" in view) {
118
- params = view.parameters;
119
- }
120
- if (!vm) {
121
- params = view.parameters ??= {};
118
+ }
119
+ static async loadClass(url, {
120
+ title,
121
+ [displayRouteSymbol]: route,
122
+ ...parameters
123
+ } = {}, app) {
124
+ const env_2 = {
125
+ stack: [],
126
+ error: void 0,
127
+ hasError: false
128
+ };
129
+ try {
130
+ const _busyIndicator = __addDisposableResource(env_2, app.createBusyIndicator({
131
+ title: url?.toString(),
132
+ description: `Loading View ${url}`
133
+ }), false);
134
+ const view = await AtomLoader.load(url, app);
135
+ const vm = getOwnInheritedProperty(view, "viewModel");
136
+ let params;
137
+ if ("parameters" in view) {
138
+ params = view.parameters;
139
+ }
140
+ if (!vm) {
141
+ params = view.parameters ??= {};
142
+ } else {
143
+ console.warn("ViewModel is deprecated");
144
+ }
145
+ if (title) {
146
+ view.title = title;
147
+ }
148
+ if (params) {
149
+ params[displayRouteSymbol] = route;
150
+ }
151
+ if ((vm || params) && parameters) {
152
+ for (const key in parameters) {
153
+ if (parameters.hasOwnProperty(key)) {
154
+ const element = parameters[key];
155
+ try {
156
+ if (vm) {
157
+ vm[key] = element;
158
+ }
159
+ if (params) {
160
+ params[key] = element;
161
+ }
162
+ } catch (e) {
163
+ console.error(e);
122
164
  }
123
- else {
124
- console.warn("ViewModel is deprecated");
125
- }
126
- if (title) {
127
- view.title = title;
128
- }
129
- if (params) {
130
- params[displayRouteSymbol] = route;
131
- }
132
- if ((vm || params) && parameters) {
133
- for (const key in parameters) {
134
- if (parameters.hasOwnProperty(key)) {
135
- const element = parameters[key];
136
- try {
137
- if (vm) {
138
- vm[key] = element;
139
- }
140
- if (params) {
141
- params[key] = element;
142
- }
143
- }
144
- catch (e) {
145
- console.error(e);
146
- }
147
- }
148
- }
149
- }
150
- view.init?.()
151
- ?.catch((error) => {
152
- if (!CancelToken.isCancelled(error)) {
153
- console.error(error);
154
- }
155
- });
156
- return view;
157
- }
158
- catch (e_2) {
159
- env_2.error = e_2;
160
- env_2.hasError = true;
165
+ }
161
166
  }
162
- finally {
163
- __disposeResources(env_2);
167
+ }
168
+ view.init?.()?.catch(error => {
169
+ if (!CancelToken.isCancelled(error)) {
170
+ console.error(error);
164
171
  }
172
+ });
173
+ return view;
174
+ } catch (e_2) {
175
+ env_2.error = e_2;
176
+ env_2.hasError = true;
177
+ } finally {
178
+ __disposeResources(env_2);
165
179
  }
166
- static async loadControl(url, app) {
167
- const env_3 = { stack: [], error: void 0, hasError: false };
168
- try {
169
- const _busyIndicator = __addDisposableResource(env_3, app.createBusyIndicator({
170
- title: url?.toString(),
171
- description: `Loading View ${url}`
172
- }), false);
173
- const view = await AtomLoader.load(url, app);
174
- const vm = getOwnInheritedProperty(view, "viewModel");
175
- let params;
176
- if ("parameters" in view) {
177
- params = view.parameters;
180
+ }
181
+ static async loadControl(url, app) {
182
+ const env_3 = {
183
+ stack: [],
184
+ error: void 0,
185
+ hasError: false
186
+ };
187
+ try {
188
+ const _busyIndicator = __addDisposableResource(env_3, app.createBusyIndicator({
189
+ title: url?.toString(),
190
+ description: `Loading View ${url}`
191
+ }), false);
192
+ const view = await AtomLoader.load(url, app);
193
+ const vm = getOwnInheritedProperty(view, "viewModel");
194
+ let params;
195
+ if ("parameters" in view) {
196
+ params = view.parameters;
197
+ }
198
+ if (!vm) {
199
+ params = view.parameters ??= {};
200
+ }
201
+ if (vm || params) {
202
+ const jsonService = app.get(JsonService);
203
+ for (const key in url.query) {
204
+ if (url.query.hasOwnProperty(key)) {
205
+ const element = url.query[key];
206
+ if (/^json\:/.test(key)) {
207
+ const k = key.split(":")[1];
208
+ const v = jsonService.parse(element.toString());
209
+ if (vm) {
210
+ vm[k] = v;
211
+ }
212
+ if (params) {
213
+ params[k] = v;
214
+ }
215
+ continue;
178
216
  }
179
- if (!vm) {
180
- params = view.parameters ??= {};
217
+ if (/^ref\:/.test(key)) {
218
+ const rs = app.get(ReferenceService);
219
+ const v = rs.get(element).consume();
220
+ const keyName = key.split(":", 2)[1];
221
+ if (vm) {
222
+ vm[keyName] = v;
223
+ }
224
+ if (params) {
225
+ params[keyName] = v;
226
+ }
227
+ continue;
181
228
  }
182
- if (vm || params) {
183
- const jsonService = app.get(JsonService);
184
- for (const key in url.query) {
185
- if (url.query.hasOwnProperty(key)) {
186
- const element = url.query[key];
187
- if (/^json\:/.test(key)) {
188
- const k = key.split(":")[1];
189
- const v = jsonService.parse(element.toString());
190
- if (vm) {
191
- vm[k] = v;
192
- }
193
- if (params) {
194
- params[k] = v;
195
- }
196
- continue;
197
- }
198
- if (/^ref\:/.test(key)) {
199
- const rs = app.get(ReferenceService);
200
- const v = rs.get(element).consume();
201
- const keyName = key.split(":", 2)[1];
202
- if (vm) {
203
- vm[keyName] = v;
204
- }
205
- if (params) {
206
- params[keyName] = v;
207
- }
208
- continue;
209
- }
210
- try {
211
- if (vm) {
212
- vm[key] = element;
213
- }
214
- if (params) {
215
- params[key] = element;
216
- }
217
- }
218
- catch (e) {
219
- console.error(e);
220
- }
221
- }
222
- }
229
+ try {
230
+ if (vm) {
231
+ vm[key] = element;
232
+ }
233
+ if (params) {
234
+ params[key] = element;
235
+ }
236
+ } catch (e) {
237
+ console.error(e);
223
238
  }
224
- view.init?.()
225
- ?.catch((error) => {
226
- if (!CancelToken.isCancelled(error)) {
227
- console.error(error);
228
- }
229
- });
230
- return view;
231
- }
232
- catch (e_3) {
233
- env_3.error = e_3;
234
- env_3.hasError = true;
239
+ }
235
240
  }
236
- finally {
237
- __disposeResources(env_3);
241
+ }
242
+ view.init?.()?.catch(error => {
243
+ if (!CancelToken.isCancelled(error)) {
244
+ console.error(error);
238
245
  }
246
+ });
247
+ return view;
248
+ } catch (e_3) {
249
+ env_3.error = e_3;
250
+ env_3.hasError = true;
251
+ } finally {
252
+ __disposeResources(env_3);
239
253
  }
240
- }
241
- //# sourceMappingURL=AtomLoader.js.map
254
+ }
255
+ }
@@ -1,10 +1,9 @@
1
1
  Map.prototype.getOrCreate = function (key, factory) {
2
- let item = this.get(key);
3
- if (item === undefined) {
4
- item = factory(key);
5
- this.set(key, item);
6
- }
7
- return item;
2
+ let item = this.get(key);
3
+ if (item === undefined) {
4
+ item = factory(key);
5
+ this.set(key, item);
6
+ }
7
+ return item;
8
8
  };
9
- export default Map;
10
- //# sourceMappingURL=AtomMap.js.map
9
+ export default Map;
@@ -1,26 +1,24 @@
1
1
  export class AtomOnce {
2
- run(f) {
3
- if (this.isRunning) {
4
- return;
5
- }
6
- let isAsync = false;
7
- try {
8
- this.isRunning = true;
9
- const p = f();
10
- if (p && p.then && p.catch) {
11
- isAsync = true;
12
- p.then(() => {
13
- this.isRunning = false;
14
- }).catch(() => {
15
- this.isRunning = false;
16
- });
17
- }
18
- }
19
- finally {
20
- if (!isAsync) {
21
- this.isRunning = false;
22
- }
23
- }
2
+ run(f) {
3
+ if (this.isRunning) {
4
+ return;
24
5
  }
25
- }
26
- //# sourceMappingURL=AtomOnce.js.map
6
+ let isAsync = false;
7
+ try {
8
+ this.isRunning = true;
9
+ const p = f();
10
+ if (p && p.then && p.catch) {
11
+ isAsync = true;
12
+ p.then(() => {
13
+ this.isRunning = false;
14
+ }).catch(() => {
15
+ this.isRunning = false;
16
+ });
17
+ }
18
+ } finally {
19
+ if (!isAsync) {
20
+ this.isRunning = false;
21
+ }
22
+ }
23
+ }
24
+ }