@web-atoms/core 2.6.24 → 2.6.26

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 (130) hide show
  1. package/dist/core/XNode.d.ts +1 -13
  2. package/dist/core/XNode.d.ts.map +1 -1
  3. package/dist/core/XNode.js +2 -24
  4. package/dist/core/XNode.js.map +1 -1
  5. package/dist/tsconfig.tsbuildinfo +1 -1
  6. package/dist-esm/App.js +231 -235
  7. package/dist-esm/Atom.js +93 -96
  8. package/dist-esm/MockApp.js +17 -18
  9. package/dist-esm/Pack.js +1 -3
  10. package/dist-esm/core/AtomBinder.js +189 -187
  11. package/dist-esm/core/AtomComponent.js +479 -502
  12. package/dist-esm/core/AtomDispatcher.js +46 -48
  13. package/dist-esm/core/AtomDisposableList.js +24 -25
  14. package/dist-esm/core/AtomEnumerator.js +15 -16
  15. package/dist-esm/core/AtomList.js +193 -192
  16. package/dist-esm/core/AtomLoader.js +229 -215
  17. package/dist-esm/core/AtomMap.js +7 -8
  18. package/dist-esm/core/AtomOnce.js +22 -24
  19. package/dist-esm/core/AtomSelectableList.js +240 -243
  20. package/dist-esm/core/AtomUri.js +70 -72
  21. package/dist-esm/core/AtomWatcher.js +105 -111
  22. package/dist-esm/core/Bind.js +271 -269
  23. package/dist-esm/core/BindableProperty.js +26 -27
  24. package/dist-esm/core/CancelTokenFactory.js +21 -24
  25. package/dist-esm/core/Color.js +1 -2
  26. package/dist-esm/core/Colors.js +545 -231
  27. package/dist-esm/core/Command.js +236 -223
  28. package/dist-esm/core/Defer.js +21 -22
  29. package/dist-esm/core/EventScope.js +96 -88
  30. package/dist-esm/core/ExpressionParser.js +132 -144
  31. package/dist-esm/core/ExtendControl.js +7 -8
  32. package/dist-esm/core/FormattedError.js +7 -8
  33. package/dist-esm/core/FormattedString.js +4 -5
  34. package/dist-esm/core/Hacks.js +41 -42
  35. package/dist-esm/core/IFetchEvent.js +1 -2
  36. package/dist-esm/core/IScreen.js +1 -2
  37. package/dist-esm/core/IValueConverter.js +1 -2
  38. package/dist-esm/core/InheritedProperty.js +61 -63
  39. package/dist-esm/core/InjectProperty.js +12 -13
  40. package/dist-esm/core/KeyValuePairs.js +1 -2
  41. package/dist-esm/core/Markdown.js +14 -17
  42. package/dist-esm/core/MarkdownError.js +6 -7
  43. package/dist-esm/core/PropertyBinding.js +1 -2
  44. package/dist-esm/core/PropertyMap.js +28 -27
  45. package/dist-esm/core/Route.js +149 -148
  46. package/dist-esm/core/SingleInvoker.js +32 -35
  47. package/dist-esm/core/StringHelper.js +49 -51
  48. package/dist-esm/core/TransientDisposable.js +14 -16
  49. package/dist-esm/core/WatchProperty.js +18 -17
  50. package/dist-esm/core/WebImage.js +7 -8
  51. package/dist-esm/core/XNode.d.ts +1 -13
  52. package/dist-esm/core/XNode.d.ts.map +1 -1
  53. package/dist-esm/core/XNode.js +116 -120
  54. package/dist-esm/core/XNode.js.map +1 -1
  55. package/dist-esm/core/sleep.js +21 -24
  56. package/dist-esm/core/types.js +102 -103
  57. package/dist-esm/di/DISingleton.js +7 -5
  58. package/dist-esm/di/DITransient.js +7 -5
  59. package/dist-esm/di/IMockOrInject.js +1 -2
  60. package/dist-esm/di/IServiceProvider.js +1 -2
  61. package/dist-esm/di/Inject.js +67 -67
  62. package/dist-esm/di/Register.js +25 -26
  63. package/dist-esm/di/RegisterScoped.js +4 -3
  64. package/dist-esm/di/RegisterSingleton.js +4 -3
  65. package/dist-esm/di/ServiceCollection.js +38 -37
  66. package/dist-esm/di/ServiceProvider.js +94 -94
  67. package/dist-esm/di/TypeKey.js +13 -12
  68. package/dist-esm/services/BusyIndicatorService.js +7 -11
  69. package/dist-esm/services/CacheService.js +54 -62
  70. package/dist-esm/services/FetchBuilder.js +327 -278
  71. package/dist-esm/services/JsonService.js +118 -116
  72. package/dist-esm/services/MockNavigationService.js +127 -126
  73. package/dist-esm/services/NavigationService.js +95 -102
  74. package/dist-esm/services/ReferenceService.js +30 -33
  75. package/dist-esm/services/http/AjaxOptions.js +1 -3
  76. package/dist-esm/services/http/JsonError.js +16 -15
  77. package/dist-esm/services/http/RestService.js +314 -323
  78. package/dist-esm/style/StyleRule.js +1 -2
  79. package/dist-esm/test.js +0 -1
  80. package/dist-esm/tsconfig.esm.tsbuildinfo +1 -1
  81. package/dist-esm/unit/AtomTest.js +10 -11
  82. package/dist-esm/view-model/Action.js +258 -223
  83. package/dist-esm/view-model/AtomViewModel.js +234 -232
  84. package/dist-esm/view-model/AtomWindowViewModel.js +13 -14
  85. package/dist-esm/view-model/BindableUrlParameter.js +7 -8
  86. package/dist-esm/view-model/Delay.js +21 -25
  87. package/dist-esm/view-model/Disposable.js +28 -29
  88. package/dist-esm/view-model/Load.js +72 -73
  89. package/dist-esm/view-model/Once.js +33 -35
  90. package/dist-esm/view-model/baseTypes.js +4 -5
  91. package/dist-esm/view-model/bindPromise.js +24 -27
  92. package/dist-esm/view-model/bindProperty.js +3 -4
  93. package/dist-esm/view-model/bindUrlParameter.js +39 -43
  94. package/dist-esm/web/controls/AtomComboBox.js +56 -63
  95. package/dist-esm/web/controls/AtomControl.js +485 -490
  96. package/dist-esm/web/controls/AtomGridSplitter.js +57 -50
  97. package/dist-esm/web/controls/AtomGridView.js +230 -222
  98. package/dist-esm/web/controls/AtomItemsControl.js +677 -688
  99. package/dist-esm/web/controls/AtomPage.js +6 -7
  100. package/dist-esm/web/controls/AtomTemplate.js +1 -3
  101. package/dist-esm/web/controls/AtomTemplateControl.js +28 -29
  102. package/dist-esm/web/controls/AtomViewStack.js +19 -20
  103. package/dist-esm/web/core/AtomUI.js +200 -200
  104. package/dist-esm/web/core/Encoder.js +142 -152
  105. package/dist-esm/web/core/HtmlNode.js +141 -139
  106. package/dist-esm/web/images/Busy.js +1 -2
  107. package/dist-esm/web/images/BusyDataUrl.js +2 -869
  108. package/dist-esm/web/images/Button.js +1 -2
  109. package/dist-esm/web/images/ButtonDataUrl.js +2 -30
  110. package/dist-esm/web/images/CloseButton.js +1 -2
  111. package/dist-esm/web/images/CloseButtonDataUrl.js +2 -30
  112. package/dist-esm/web/images/CloseButtonHover.js +1 -2
  113. package/dist-esm/web/images/CloseButtonHoverDataUrl.js +2 -24
  114. package/dist-esm/web/services/LastTarget.js +31 -29
  115. package/dist-esm/web/services/MarkdownService.js +19 -31
  116. package/dist-esm/web/services/NotificationPopup.js +28 -21
  117. package/dist-esm/web/services/PopupService.js +512 -478
  118. package/dist-esm/web/services/PopupWindow.js +266 -247
  119. package/dist-esm/web/styles/AtomAlertWindowStyle.js +39 -40
  120. package/dist-esm/web/styles/AtomFrameStyle.js +15 -16
  121. package/dist-esm/web/styles/AtomNotificationStyle.js +19 -20
  122. package/dist-esm/web/styles/AtomPageLinkStyle.js +11 -12
  123. package/dist-esm/web/styles/AtomPopupStyle.js +9 -10
  124. package/dist-esm/web/styles/AtomStyle.js +61 -64
  125. package/dist-esm/web/styles/AtomStyleSheet.js +50 -51
  126. package/dist-esm/web/styles/AtomWindowStyle.js +116 -117
  127. package/dist-esm/web/styles/IStyleDeclaration.js +1 -2
  128. package/dist-esm/web/styles/StyleBuilder.js +79 -80
  129. package/package.json +1 -1
  130. package/src/core/XNode.ts +12 -38
@@ -1,248 +1,245 @@
1
1
  import { AtomBinder } from "./AtomBinder.js";
2
2
  const isSelectableItem = {};
3
3
  export default class AtomSelectableList {
4
- get selectedIndex() {
5
- if (this.selectedItems.length) {
6
- return this.items.indexOf(this.selectedItems[0]);
7
- }
8
- return -1;
9
- }
10
- set selectedIndex(n) {
11
- this.selectedItems.clear();
12
- if (n === -1) {
13
- this.updateBindings(true);
14
- return;
15
- }
16
- this.selectedItems.add(this.items[n]);
17
- }
18
- get selectedItem() {
19
- if (!this.selectedItems.length) {
20
- return null;
21
- }
22
- const s = this.selectedItems[0];
23
- return s ? s.item : null;
24
- }
25
- set selectedItem(item) {
26
- this.selectedItems.clear();
27
- if (!item) {
28
- this.updateBindings(true);
29
- return;
30
- }
31
- const si = this.items.find((s) => s.item === item);
32
- si.select();
33
- }
34
- get label() {
35
- const labels = this.selectedItems.map((x) => this.labelPath(x.item));
36
- if (this.allowMultipleSelection) {
37
- return labels;
38
- }
39
- return labels[0] || null;
40
- }
41
- get selectAll() {
42
- if (this.items.length) {
43
- return this.items.length === this.selectedItems.length;
44
- }
45
- return false;
46
- }
47
- set selectAll(v) {
4
+ get selectedIndex() {
5
+ if (this.selectedItems.length) {
6
+ return this.items.indexOf(this.selectedItems[0]);
7
+ }
8
+ return -1;
9
+ }
10
+ set selectedIndex(n) {
11
+ this.selectedItems.clear();
12
+ if (n === -1) {
13
+ this.updateBindings(true);
14
+ return;
15
+ }
16
+ this.selectedItems.add(this.items[n]);
17
+ }
18
+ get selectedItem() {
19
+ if (!this.selectedItems.length) {
20
+ return null;
21
+ }
22
+ const s = this.selectedItems[0];
23
+ return s ? s.item : null;
24
+ }
25
+ set selectedItem(item) {
26
+ this.selectedItems.clear();
27
+ if (!item) {
28
+ this.updateBindings(true);
29
+ return;
30
+ }
31
+ const si = this.items.find(s => s.item === item);
32
+ si.select();
33
+ }
34
+ get label() {
35
+ const labels = this.selectedItems.map(x => this.labelPath(x.item));
36
+ if (this.allowMultipleSelection) {
37
+ return labels;
38
+ }
39
+ return labels[0] || null;
40
+ }
41
+ get selectAll() {
42
+ if (this.items.length) {
43
+ return this.items.length === this.selectedItems.length;
44
+ }
45
+ return false;
46
+ }
47
+ set selectAll(v) {
48
+ if (v) {
49
+ this.selectedItems.splice(0, this.selectedItems.length, ...this.items);
50
+ } else {
51
+ this.selectedItems.clear();
52
+ }
53
+ AtomBinder.refreshItems(this.selectedItems);
54
+ for (const iterator of this.items) {
55
+ AtomBinder.refreshValue(iterator, "selected");
56
+ }
57
+ }
58
+ get value() {
59
+ if (this.allowMultipleSelection && this.items.length) {
60
+ return this.selectedItems.map(x => this.valuePath(x.item));
61
+ }
62
+ if (this.selectedItems.length) {
63
+ return this.valuePath(this.selectedItems[0].item);
64
+ }
65
+ return this.mValue;
66
+ }
67
+ set value(v) {
68
+ this.mValue = v;
69
+ if (!this.allowMultipleSelection) {
70
+ v = [v];
71
+ }
72
+ const va = v;
73
+ this.replaceSelectedInternal(va, false);
74
+ }
75
+ constructor(allowMultipleSelection = false, valuePath, labelPath) {
76
+ this.allowMultipleSelection = allowMultipleSelection;
77
+ this.valuePath = valuePath;
78
+ this.labelPath = labelPath;
79
+ this.selectedItems = [];
80
+ this.mValue = undefined;
81
+ if (!this.valuePath) {
82
+ this.valuePath = x => x;
83
+ }
84
+ if (!this.labelPath) {
85
+ this.labelPath = x => x.label || x;
86
+ }
87
+ this.items = [];
88
+ }
89
+ clear(clearValue = false) {
90
+ if (clearValue) {
91
+ this.replaceSelectedInternal([], false);
92
+ }
93
+ this.items.clear();
94
+ }
95
+ append(source, total) {
96
+ let values = this.value;
97
+ if (!this.allowMultipleSelection) {
98
+ values = [values];
99
+ }
100
+ const map = source.map(x => {
101
+ const item = this.newItem(x);
102
+ if (values && values.length) {
103
+ const v = this.valuePath(x);
104
+ if (values.find(v1 => v1 === v)) {
105
+ item.selected = true;
106
+ }
107
+ }
108
+ return item;
109
+ });
110
+ this.total = total;
111
+ this.items.addAll(map);
112
+ this.mValue = undefined;
113
+ this.updateBindings(true);
114
+ }
115
+ replace(source, start, size) {
116
+ let values = this.value;
117
+ if (!this.allowMultipleSelection) {
118
+ values = [values];
119
+ }
120
+ this.selectedItems.clear();
121
+ const map = source.map(x => {
122
+ const item = this.newItem(x);
123
+ if (values && values.length) {
124
+ const v = this.valuePath(x);
125
+ if (values.find(v1 => v1 === v)) {
126
+ item.selected = true;
127
+ }
128
+ }
129
+ return item;
130
+ });
131
+ const a = source;
132
+ if (a.total) {
133
+ map.total = a.total;
134
+ }
135
+ this.items.replace(map, start, size);
136
+ this.mValue = undefined;
137
+ this.updateBindings(true);
138
+ }
139
+ find(item) {
140
+ let itemF = i => item(i);
141
+ if (typeof item !== "function") {
142
+ const e = item;
143
+ itemF = i => i === e;
144
+ }
145
+ return this.items.find(i => itemF(i.item));
146
+ }
147
+ select(item) {
148
+ const i = item;
149
+ if (i.itemType === isSelectableItem) {
150
+ i.select();
151
+ return;
152
+ }
153
+ const si = this.items.find(x => x.item === item);
154
+ si.select();
155
+ }
156
+ deselect(item) {
157
+ const i = item;
158
+ if (i.itemType === isSelectableItem) {
159
+ i.deselect();
160
+ return;
161
+ }
162
+ const si = this.items.find(x => x.item === item);
163
+ si.deselect();
164
+ }
165
+ toggle(item) {
166
+ const i = item;
167
+ if (i.itemType === isSelectableItem) {
168
+ i.toggle();
169
+ return;
170
+ }
171
+ const si = this.items.find(x => x.item === item);
172
+ si.toggle();
173
+ }
174
+ replaceSelected(va) {
175
+ this.replaceSelectedInternal(va, true);
176
+ }
177
+ replaceSelectedInternal(va = [], refreshValue = true) {
178
+ const newItems = !va ? [] : this.items.filter(x => {
179
+ const vp = this.valuePath(x.item);
180
+ const existing = va.find(y => y === vp);
181
+ return existing ? true : false;
182
+ });
183
+ const s = this.selectedItems.slice();
184
+ this.selectedItems.clear();
185
+ for (const iterator of s) {
186
+ AtomBinder.refreshValue(iterator, "selected");
187
+ }
188
+ if (newItems.length) {
189
+ this.selectedItems.replace(newItems);
190
+ }
191
+ this.updateBindings(refreshValue);
192
+ }
193
+ updateBindings(refreshValue = true) {
194
+ if (refreshValue) {
195
+ AtomBinder.refreshValue(this, "value");
196
+ }
197
+ AtomBinder.refreshValue(this, "label");
198
+ AtomBinder.refreshValue(this, "selectAll");
199
+ AtomBinder.refreshValue(this, "selectedItem");
200
+ AtomBinder.refreshValue(this, "selectedIndex");
201
+ }
202
+ newItem(item) {
203
+ const self = this;
204
+ const newItem = {
205
+ item,
206
+ itemType: isSelectableItem,
207
+ select: null,
208
+ deselect: null,
209
+ toggle: null,
210
+ get selected() {
211
+ return self.selectedItems.find(x => x === this) ? true : false;
212
+ },
213
+ set selected(v) {
48
214
  if (v) {
49
- this.selectedItems.splice(0, this.selectedItems.length, ...this.items);
50
- }
51
- else {
52
- this.selectedItems.clear();
53
- }
54
- AtomBinder.refreshItems(this.selectedItems);
55
- for (const iterator of this.items) {
56
- AtomBinder.refreshValue(iterator, "selected");
57
- }
58
- }
59
- get value() {
60
- if (this.allowMultipleSelection && this.items.length) {
61
- return this.selectedItems.map((x) => this.valuePath(x.item));
62
- }
63
- if (this.selectedItems.length) {
64
- return this.valuePath(this.selectedItems[0].item);
65
- }
66
- return this.mValue;
67
- }
68
- set value(v) {
69
- this.mValue = v;
70
- if (!this.allowMultipleSelection) {
71
- v = [v];
72
- }
73
- const va = v;
74
- this.replaceSelectedInternal(va, false);
75
- }
76
- constructor(allowMultipleSelection = false, valuePath, labelPath) {
77
- this.allowMultipleSelection = allowMultipleSelection;
78
- this.valuePath = valuePath;
79
- this.labelPath = labelPath;
80
- this.selectedItems = [];
81
- this.mValue = undefined;
82
- if (!this.valuePath) {
83
- this.valuePath = (x) => x;
84
- }
85
- if (!this.labelPath) {
86
- this.labelPath = (x) => x.label || x;
87
- }
88
- this.items = [];
89
- }
90
- clear(clearValue = false) {
91
- if (clearValue) {
92
- this.replaceSelectedInternal([], false);
93
- }
94
- this.items.clear();
95
- }
96
- append(source, total) {
97
- let values = this.value;
98
- if (!this.allowMultipleSelection) {
99
- values = [values];
100
- }
101
- const map = source.map((x) => {
102
- const item = this.newItem(x);
103
- if (values && values.length) {
104
- const v = this.valuePath(x);
105
- if (values.find((v1) => v1 === v)) {
106
- item.selected = true;
107
- }
108
- }
109
- return item;
110
- });
111
- this.total = total;
112
- this.items.addAll(map);
113
- this.mValue = undefined;
114
- this.updateBindings(true);
115
- }
116
- replace(source, start, size) {
117
- let values = this.value;
118
- if (!this.allowMultipleSelection) {
119
- values = [values];
120
- }
121
- this.selectedItems.clear();
122
- const map = source.map((x) => {
123
- const item = this.newItem(x);
124
- if (values && values.length) {
125
- const v = this.valuePath(x);
126
- if (values.find((v1) => v1 === v)) {
127
- item.selected = true;
128
- }
129
- }
130
- return item;
131
- });
132
- const a = source;
133
- if (a.total) {
134
- map.total = a.total;
135
- }
136
- this.items.replace(map, start, size);
137
- this.mValue = undefined;
138
- this.updateBindings(true);
139
- }
140
- find(item) {
141
- let itemF = (i) => item(i);
142
- if (typeof item !== "function") {
143
- const e = item;
144
- itemF = (i) => i === e;
145
- }
146
- return this.items.find((i) => itemF(i.item));
147
- }
148
- select(item) {
149
- const i = item;
150
- if (i.itemType === isSelectableItem) {
151
- i.select();
152
- return;
153
- }
154
- const si = this.items.find((x) => x.item === item);
155
- si.select();
156
- }
157
- deselect(item) {
158
- const i = item;
159
- if (i.itemType === isSelectableItem) {
160
- i.deselect();
161
- return;
162
- }
163
- const si = this.items.find((x) => x.item === item);
164
- si.deselect();
165
- }
166
- toggle(item) {
167
- const i = item;
168
- if (i.itemType === isSelectableItem) {
169
- i.toggle();
215
+ if (this.selected) {
170
216
  return;
171
- }
172
- const si = this.items.find((x) => x.item === item);
173
- si.toggle();
174
- }
175
- replaceSelected(va) {
176
- this.replaceSelectedInternal(va, true);
177
- }
178
- replaceSelectedInternal(va = [], refreshValue = true) {
179
- const newItems = !va ? [] : this.items.filter((x) => {
180
- const vp = this.valuePath(x.item);
181
- const existing = va.find((y) => y === vp);
182
- return existing ? true : false;
183
- });
184
- const s = this.selectedItems.slice();
185
- this.selectedItems.clear();
186
- for (const iterator of s) {
187
- AtomBinder.refreshValue(iterator, "selected");
188
- }
189
- if (newItems.length) {
190
- this.selectedItems.replace(newItems);
191
- }
192
- this.updateBindings(refreshValue);
193
- }
194
- updateBindings(refreshValue = true) {
195
- if (refreshValue) {
196
- AtomBinder.refreshValue(this, "value");
197
- }
198
- AtomBinder.refreshValue(this, "label");
199
- AtomBinder.refreshValue(this, "selectAll");
200
- AtomBinder.refreshValue(this, "selectedItem");
201
- AtomBinder.refreshValue(this, "selectedIndex");
202
- }
203
- newItem(item) {
204
- const self = this;
205
- const newItem = {
206
- item,
207
- itemType: isSelectableItem,
208
- select: null,
209
- deselect: null,
210
- toggle: null,
211
- get selected() {
212
- return self.selectedItems.find((x) => x === this) ? true : false;
213
- },
214
- set selected(v) {
215
- if (v) {
216
- if (this.selected) {
217
- return;
218
- }
219
- self.clearSelected();
220
- self.selectedItems.add(this);
221
- }
222
- else {
223
- self.selectedItems.remove(this);
224
- }
225
- AtomBinder.refreshValue(this, "selected");
226
- self.updateBindings(true);
227
- }
228
- };
229
- newItem.select = () => {
230
- newItem.selected = true;
231
- };
232
- newItem.deselect = () => {
233
- newItem.selected = false;
234
- };
235
- newItem.toggle = () => {
236
- newItem.selected = !newItem.selected;
237
- };
238
- return newItem;
239
- }
240
- clearSelected() {
241
- if (!this.allowMultipleSelection) {
242
- const si = this.selectedItem;
243
- this.selectedItems.clear();
244
- AtomBinder.refreshValue(si, "selected");
245
- }
246
- }
247
- }
248
- //# sourceMappingURL=AtomSelectableList.js.map
217
+ }
218
+ self.clearSelected();
219
+ self.selectedItems.add(this);
220
+ } else {
221
+ self.selectedItems.remove(this);
222
+ }
223
+ AtomBinder.refreshValue(this, "selected");
224
+ self.updateBindings(true);
225
+ }
226
+ };
227
+ newItem.select = () => {
228
+ newItem.selected = true;
229
+ };
230
+ newItem.deselect = () => {
231
+ newItem.selected = false;
232
+ };
233
+ newItem.toggle = () => {
234
+ newItem.selected = !newItem.selected;
235
+ };
236
+ return newItem;
237
+ }
238
+ clearSelected() {
239
+ if (!this.allowMultipleSelection) {
240
+ const si = this.selectedItem;
241
+ this.selectedItems.clear();
242
+ AtomBinder.refreshValue(si, "selected");
243
+ }
244
+ }
245
+ }
@@ -1,79 +1,77 @@
1
1
  import { AtomUI } from "../web/core/AtomUI.js";
2
2
  export class AtomUri {
3
- get pathAndQuery() {
4
- const q = [];
5
- const h = [];
6
- for (const key in this.query) {
7
- if (this.query.hasOwnProperty(key)) {
8
- const element = this.query[key];
9
- if (element === undefined || element === null) {
10
- continue;
11
- }
12
- q.push(`${encodeURIComponent(key)}=${encodeURIComponent(element.toString())}`);
13
- }
3
+ get pathAndQuery() {
4
+ const q = [];
5
+ const h = [];
6
+ for (const key in this.query) {
7
+ if (this.query.hasOwnProperty(key)) {
8
+ const element = this.query[key];
9
+ if (element === undefined || element === null) {
10
+ continue;
14
11
  }
15
- for (const key in this.hash) {
16
- if (this.hash.hasOwnProperty(key)) {
17
- const element = this.hash[key];
18
- if (element === undefined || element === null) {
19
- continue;
20
- }
21
- h.push(`${encodeURIComponent(key)}=${encodeURIComponent(element.toString())}`);
22
- }
23
- }
24
- const query = q.length ? "?" + q.join("&") : "";
25
- const hash = h.length ? "#" + h.join("&") : "";
26
- let path = this.path || "/";
27
- if (path.startsWith("/")) {
28
- path = path.substr(1);
29
- }
30
- return `${path}${query}${hash}`;
12
+ q.push(`${encodeURIComponent(key)}=${encodeURIComponent(element.toString())}`);
13
+ }
31
14
  }
32
- constructor(url) {
33
- let path;
34
- let query = "";
35
- let hash = "";
36
- let t = url.split("?");
37
- path = t[0];
38
- if (t.length === 2) {
39
- query = t[1] || "";
40
- t = query.split("#");
41
- query = t[0];
42
- hash = t[1] || "";
43
- }
44
- else {
45
- t = path.split("#");
46
- path = t[0];
47
- hash = t[1] || "";
48
- }
49
- let scheme = "";
50
- let host = "";
51
- let port = "";
52
- let i = path.indexOf("//");
53
- if (i !== -1) {
54
- scheme = path.substr(0, i);
55
- path = path.substr(i + 2);
56
- i = path.indexOf("/");
57
- if (i !== -1) {
58
- host = path.substr(0, i);
59
- path = path.substr(i + 1);
60
- t = host.split(":");
61
- if (t.length > 1) {
62
- host = t[0];
63
- port = t[1];
64
- }
65
- }
15
+ for (const key in this.hash) {
16
+ if (this.hash.hasOwnProperty(key)) {
17
+ const element = this.hash[key];
18
+ if (element === undefined || element === null) {
19
+ continue;
66
20
  }
67
- this.host = host;
68
- this.protocol = scheme;
69
- this.port = port;
70
- this.path = path;
71
- this.query = AtomUI.parseUrl(query);
72
- this.hash = AtomUI.parseUrl(hash);
21
+ h.push(`${encodeURIComponent(key)}=${encodeURIComponent(element.toString())}`);
22
+ }
73
23
  }
74
- toString() {
75
- const port = this.port ? ":" + this.port : "";
76
- return `${this.protocol}//${this.host}${port}/${this.pathAndQuery}`;
24
+ const query = q.length ? "?" + q.join("&") : "";
25
+ const hash = h.length ? "#" + h.join("&") : "";
26
+ let path = this.path || "/";
27
+ if (path.startsWith("/")) {
28
+ path = path.substr(1);
29
+ }
30
+ return `${path}${query}${hash}`;
31
+ }
32
+ constructor(url) {
33
+ let path;
34
+ let query = "";
35
+ let hash = "";
36
+ let t = url.split("?");
37
+ path = t[0];
38
+ if (t.length === 2) {
39
+ query = t[1] || "";
40
+ t = query.split("#");
41
+ query = t[0];
42
+ hash = t[1] || "";
43
+ } else {
44
+ t = path.split("#");
45
+ path = t[0];
46
+ hash = t[1] || "";
47
+ }
48
+ let scheme = "";
49
+ let host = "";
50
+ let port = "";
51
+ let i = path.indexOf("//");
52
+ if (i !== -1) {
53
+ scheme = path.substr(0, i);
54
+ path = path.substr(i + 2);
55
+ i = path.indexOf("/");
56
+ if (i !== -1) {
57
+ host = path.substr(0, i);
58
+ path = path.substr(i + 1);
59
+ t = host.split(":");
60
+ if (t.length > 1) {
61
+ host = t[0];
62
+ port = t[1];
63
+ }
64
+ }
77
65
  }
78
- }
79
- //# sourceMappingURL=AtomUri.js.map
66
+ this.host = host;
67
+ this.protocol = scheme;
68
+ this.port = port;
69
+ this.path = path;
70
+ this.query = AtomUI.parseUrl(query);
71
+ this.hash = AtomUI.parseUrl(hash);
72
+ }
73
+ toString() {
74
+ const port = this.port ? ":" + this.port : "";
75
+ return `${this.protocol}//${this.host}${port}/${this.pathAndQuery}`;
76
+ }
77
+ }