@furystack/shades 10.0.3 → 10.0.5
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.
- package/CHANGELOG.md +13 -103
- package/esm/services/location-service.d.ts +5 -0
- package/esm/services/location-service.d.ts.map +1 -1
- package/esm/services/location-service.js +10 -3
- package/esm/services/location-service.js.map +1 -1
- package/esm/services/location-service.spec.js +14 -2
- package/esm/services/location-service.spec.js.map +1 -1
- package/esm/shade-component.d.ts.map +1 -1
- package/esm/shade-component.js +0 -1
- package/esm/shade-component.js.map +1 -1
- package/package.json +7 -7
- package/src/services/location-service.spec.ts +17 -2
- package/src/services/location-service.tsx +18 -4
- package/src/shade-component.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,192 +7,102 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @furystack/shades
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
10
|
### [4.0.4](https://github.com/furystack/furystack/compare/@furystack/shades@4.0.3...@furystack/shades@4.0.4) (2022-02-02)
|
|
16
11
|
|
|
17
12
|
**Note:** Version bump only for package @furystack/shades
|
|
18
13
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
14
|
### [4.0.3](https://github.com/furystack/furystack/compare/@furystack/shades@4.0.1...@furystack/shades@4.0.3) (2022-01-10)
|
|
25
15
|
|
|
26
16
|
**Note:** Version bump only for package @furystack/shades
|
|
27
17
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
18
|
### [4.0.2](https://github.com/furystack/furystack/compare/@furystack/shades@4.0.1...@furystack/shades@4.0.2) (2022-01-10)
|
|
34
19
|
|
|
35
20
|
**Note:** Version bump only for package @furystack/shades
|
|
36
21
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
22
|
### [4.0.1](https://github.com/furystack/furystack/compare/@furystack/shades@4.0.0...@furystack/shades@4.0.1) (2021-12-20)
|
|
43
23
|
|
|
44
24
|
**Note:** Version bump only for package @furystack/shades
|
|
45
25
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
26
|
## [4.0.0](https://github.com/furystack/furystack/compare/@furystack/shades@3.7.3...@furystack/shades@4.0.0) (2021-12-08)
|
|
52
27
|
|
|
53
|
-
|
|
54
28
|
### ⚠ BREAKING CHANGES
|
|
55
29
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* **@furystack/shades:** Routing based on pathname, add basic unit tests for component factory ([#164](https://github.com/furystack/furystack/issues/164)) ([3221e0c](https://github.com/furystack/furystack/commit/3221e0ce60d3532b6e5f570db64d211e479673ec))
|
|
30
|
+
- **@furystack/shades:** Disposable resources on Shade Components (#165)
|
|
31
|
+
- **@furystack/shades:** Routing based on pathname, add basic unit tests for component factory (#164)
|
|
60
32
|
|
|
33
|
+
- **@furystack/shades:** Routing based on pathname, add basic unit tests for component factory ([#164](https://github.com/furystack/furystack/issues/164)) ([3221e0c](https://github.com/furystack/furystack/commit/3221e0ce60d3532b6e5f570db64d211e479673ec))
|
|
61
34
|
|
|
62
35
|
### 🚀 What's new
|
|
63
36
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
37
|
+
- **@furystack/shades:** Disposable resources on Shade Components ([#165](https://github.com/furystack/furystack/issues/165)) ([8567e7e](https://github.com/furystack/furystack/commit/8567e7e2e01cec232a5f4448dfc0833c1f183229))
|
|
68
38
|
|
|
69
39
|
### [3.7.3](https://github.com/furystack/furystack/compare/@furystack/shades@3.7.2...@furystack/shades@3.7.3) (2021-11-30)
|
|
70
40
|
|
|
71
41
|
**Note:** Version bump only for package @furystack/shades
|
|
72
42
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
43
|
### [3.7.2](https://github.com/furystack/furystack/compare/@furystack/shades@3.7.1...@furystack/shades@3.7.2) (2021-11-29)
|
|
79
44
|
|
|
80
45
|
**Note:** Version bump only for package @furystack/shades
|
|
81
46
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
47
|
### [3.7.1](https://github.com/furystack/furystack/compare/@furystack/shades@3.7.0...@furystack/shades@3.7.1) (2021-11-19)
|
|
88
48
|
|
|
89
49
|
**Note:** Version bump only for package @furystack/shades
|
|
90
50
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
51
|
## [3.7.0](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.6...@furystack/shades@3.7.0) (2021-11-17)
|
|
97
52
|
|
|
98
|
-
|
|
99
53
|
### 🚀 What's new
|
|
100
54
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
55
|
+
- **@furystack/shades:** Attach Data attributes to native elements ([6225bcb](https://github.com/furystack/furystack/commit/6225bcb0cb6fd311f6761317a86d4d0e5b30bb3e))
|
|
105
56
|
|
|
106
57
|
### [3.6.6](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.5...@furystack/shades@3.6.6) (2021-11-09)
|
|
107
58
|
|
|
108
59
|
**Note:** Version bump only for package @furystack/shades
|
|
109
60
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
61
|
### [3.6.5](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.4...@furystack/shades@3.6.5) (2021-10-15)
|
|
116
62
|
|
|
117
63
|
**Note:** Version bump only for package @furystack/shades
|
|
118
64
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
65
|
### [3.6.4](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.3...@furystack/shades@3.6.4) (2021-10-05)
|
|
125
66
|
|
|
126
67
|
**Note:** Version bump only for package @furystack/shades
|
|
127
68
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
69
|
### [3.6.3](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.2...@furystack/shades@3.6.3) (2021-09-16)
|
|
134
70
|
|
|
135
71
|
**Note:** Version bump only for package @furystack/shades
|
|
136
72
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
73
|
### [3.6.2](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.1...@furystack/shades@3.6.2) (2021-08-27)
|
|
143
74
|
|
|
144
75
|
**Note:** Version bump only for package @furystack/shades
|
|
145
76
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
77
|
### [3.6.1](https://github.com/furystack/furystack/compare/@furystack/shades@3.6.0...@furystack/shades@3.6.1) (2021-08-19)
|
|
152
78
|
|
|
153
79
|
**Note:** Version bump only for package @furystack/shades
|
|
154
80
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
81
|
## [3.6.0](https://github.com/furystack/furystack/compare/@furystack/shades@3.2.10...@furystack/shades@3.6.0) (2021-08-19)
|
|
161
82
|
|
|
162
|
-
|
|
163
83
|
### 🚀 What's new
|
|
164
84
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
85
|
+
- **project:** re-added Shades ([#120](https://github.com/furystack/furystack/issues/120)) ([9f58174](https://github.com/furystack/furystack/commit/9f58174b3762fd4e4106f48215a72ec295cf2553))
|
|
86
|
+
- **Shades:** Added Screen service ([9f836d7](https://github.com/furystack/furystack/commit/9f836d7af4df38f067b387f8755dac8b7a0c98e2))
|
|
168
87
|
|
|
169
88
|
### 🐛 Bug Fixes
|
|
170
89
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
90
|
+
- **shades:** Orientation detection with media query ([f551318](https://github.com/furystack/furystack/commit/f5513183560a351ff1a3fd93353c42968543b88c))
|
|
175
91
|
|
|
176
92
|
## [3.5.0](https://github.com/furystack/furystack/compare/@furystack/shades@3.2.10...@furystack/shades@3.5.0) (2021-07-31)
|
|
177
93
|
|
|
178
|
-
|
|
179
94
|
### 🚀 What's new
|
|
180
95
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
96
|
+
- **project:** re-added Shades ([#120](https://github.com/furystack/furystack/issues/120)) ([9f58174](https://github.com/furystack/furystack/commit/9f58174b3762fd4e4106f48215a72ec295cf2553))
|
|
97
|
+
- **Shades:** Added Screen service ([9f836d7](https://github.com/furystack/furystack/commit/9f836d7af4df38f067b387f8755dac8b7a0c98e2))
|
|
184
98
|
|
|
185
99
|
### 🐛 Bug Fixes
|
|
186
100
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
101
|
+
- **shades:** Orientation detection with media query ([f551318](https://github.com/furystack/furystack/commit/f5513183560a351ff1a3fd93353c42968543b88c))
|
|
191
102
|
|
|
192
103
|
## [3.4.0](https://github.com/furystack/furystack/compare/@furystack/shades@3.2.10...@furystack/shades@3.4.0) (2021-07-30)
|
|
193
104
|
|
|
194
|
-
|
|
195
105
|
### 🚀 What's new
|
|
196
106
|
|
|
197
|
-
|
|
198
|
-
|
|
107
|
+
- **project:** re-added Shades ([#120](https://github.com/furystack/furystack/issues/120)) ([9f58174](https://github.com/furystack/furystack/commit/9f58174b3762fd4e4106f48215a72ec295cf2553))
|
|
108
|
+
- **Shades:** Added Screen service ([9f836d7](https://github.com/furystack/furystack/commit/9f836d7af4df38f067b387f8755dac8b7a0c98e2))
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { Disposable } from '@furystack/utils';
|
|
2
2
|
import { ObservableValue } from '@furystack/utils';
|
|
3
|
+
import { type Injector } from '@furystack/inject';
|
|
4
|
+
import { deserializeQueryString, serializeToQueryString } from '@furystack/rest';
|
|
3
5
|
export declare class LocationService implements Disposable {
|
|
6
|
+
serializeToQueryString: <T extends object>(queryObject: T) => string;
|
|
7
|
+
deserializeQueryString: (fullQueryString: string) => any;
|
|
4
8
|
dispose(): void;
|
|
5
9
|
/**
|
|
6
10
|
* Observable value that will be updated when the location pathname (e.g. /page/1) changes
|
|
@@ -31,4 +35,5 @@ export declare class LocationService implements Disposable {
|
|
|
31
35
|
private hashChangeListener;
|
|
32
36
|
constructor();
|
|
33
37
|
}
|
|
38
|
+
export declare const useCustomSearchStateSerializer: (injector: Injector, serialize: typeof serializeToQueryString, deserialize: typeof deserializeQueryString) => void;
|
|
34
39
|
//# sourceMappingURL=location-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-service.d.ts","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAS,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"location-service.d.ts","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAS,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAChF,qBACa,eAAgB,YAAW,UAAU;IACzC,sBAAsB,+CAAyB;IAE/C,sBAAsB,mCAAyB;IAE/C,OAAO;IAWd;;OAEG;IACI,qBAAqB,0BAAuD;IAEnF;;OAEG;IACI,qBAAqB,0BAAqC;IAEjE;;OAEG;IACI,uBAAuB,0BAA+C;IAEtE,mCAAmC,uBAAoE;IAEvG,4BAA4B,mDAEjC;IAEK,WAAW,aAIL;IAEb,SAAgB,sBAAsB,oCAA0C;IAEhF;;;;;OAKG;IACI,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IA+BrD,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,kBAAkB,CAAY;IAEtC,OAAO,CAAC,gBAAgB,CAEvB;IAED,OAAO,CAAC,kBAAkB,CAEzB;;CAoBF;AAED,eAAO,MAAM,8BAA8B,aAC/B,QAAQ,aACP,6BAA6B,eAC3B,6BAA6B,SAK3C,CAAA"}
|
|
@@ -11,6 +11,8 @@ import { ObservableValue, Trace } from '@furystack/utils';
|
|
|
11
11
|
import { Injectable } from '@furystack/inject';
|
|
12
12
|
import { deserializeQueryString, serializeToQueryString } from '@furystack/rest';
|
|
13
13
|
let LocationService = class LocationService {
|
|
14
|
+
serializeToQueryString = serializeToQueryString;
|
|
15
|
+
deserializeQueryString = deserializeQueryString;
|
|
14
16
|
dispose() {
|
|
15
17
|
window.removeEventListener('popstate', this.popStateListener);
|
|
16
18
|
window.removeEventListener('hashchange', this.hashChangeListener);
|
|
@@ -33,9 +35,9 @@ let LocationService = class LocationService {
|
|
|
33
35
|
* Observable value that will be updated when the location search (e.g. ?search=1) changes
|
|
34
36
|
*/
|
|
35
37
|
onLocationSearchChanged = new ObservableValue(location.search);
|
|
36
|
-
onDeserializedLocationSearchChanged = new ObservableValue(deserializeQueryString(location.search));
|
|
38
|
+
onDeserializedLocationSearchChanged = new ObservableValue(this.deserializeQueryString(location.search));
|
|
37
39
|
locationDeserializerObserver = this.onLocationSearchChanged.subscribe((search) => {
|
|
38
|
-
this.onDeserializedLocationSearchChanged.setValue(deserializeQueryString(search));
|
|
40
|
+
this.onDeserializedLocationSearchChanged.setValue(this.deserializeQueryString(search));
|
|
39
41
|
});
|
|
40
42
|
updateState = (() => {
|
|
41
43
|
this.onLocationPathChanged.setValue(location.pathname);
|
|
@@ -61,7 +63,7 @@ let LocationService = class LocationService {
|
|
|
61
63
|
newObservable.subscribe((value) => {
|
|
62
64
|
const currentQueryStringObject = this.onDeserializedLocationSearchChanged.getValue();
|
|
63
65
|
if (currentQueryStringObject[key] !== value) {
|
|
64
|
-
const params = serializeToQueryString({ ...currentQueryStringObject, [key]: value });
|
|
66
|
+
const params = this.serializeToQueryString({ ...currentQueryStringObject, [key]: value });
|
|
65
67
|
const newUrl = `${location.pathname}?${params}`;
|
|
66
68
|
history.pushState({}, '', newUrl);
|
|
67
69
|
}
|
|
@@ -104,4 +106,9 @@ LocationService = __decorate([
|
|
|
104
106
|
__metadata("design:paramtypes", [])
|
|
105
107
|
], LocationService);
|
|
106
108
|
export { LocationService };
|
|
109
|
+
export const useCustomSearchStateSerializer = (injector, serialize, deserialize) => {
|
|
110
|
+
const locationService = injector.getInstance(LocationService);
|
|
111
|
+
locationService.serializeToQueryString = serialize;
|
|
112
|
+
locationService.deserializeQueryString = deserialize;
|
|
113
|
+
};
|
|
107
114
|
//# sourceMappingURL=location-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ global.TextEncoder = TextEncoder;
|
|
|
3
3
|
global.TextDecoder = TextDecoder;
|
|
4
4
|
import { Injector } from '@furystack/inject';
|
|
5
5
|
import { using } from '@furystack/utils';
|
|
6
|
-
import { serializeValue } from '@furystack/rest';
|
|
7
|
-
import { LocationService } from './location-service.js';
|
|
6
|
+
import { deserializeQueryString, serializeToQueryString, serializeValue } from '@furystack/rest';
|
|
7
|
+
import { LocationService, useCustomSearchStateSerializer } from './location-service.js';
|
|
8
8
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
9
9
|
describe('LocationService', () => {
|
|
10
10
|
beforeEach(() => {
|
|
@@ -85,6 +85,18 @@ describe('LocationService', () => {
|
|
|
85
85
|
expect(location.search).toBe('?test=IjIi');
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
|
+
it('Should use custom serializer and deserializer', () => {
|
|
89
|
+
using(new Injector(), (i) => {
|
|
90
|
+
const customSerializer = vi.fn((value) => serializeToQueryString(value));
|
|
91
|
+
const customDeserializer = vi.fn((value) => deserializeQueryString(value));
|
|
92
|
+
const locationService = i.getInstance(LocationService);
|
|
93
|
+
const testSearchParam = locationService.useSearchParam('test', { value: 'foo' });
|
|
94
|
+
useCustomSearchStateSerializer(i, customSerializer, customDeserializer);
|
|
95
|
+
testSearchParam.setValue({ value: 'bar' });
|
|
96
|
+
expect(customSerializer).toBeCalledWith({ test: { value: 'bar' } });
|
|
97
|
+
expect(customDeserializer).toBeCalledWith('?test=eyJ2YWx1ZSI6ImJhciJ9');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
88
100
|
});
|
|
89
101
|
});
|
|
90
102
|
//# sourceMappingURL=location-service.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location-service.spec.js","sourceRoot":"","sources":["../../src/services/location-service.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE/C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,WAAkB,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"location-service.spec.js","sourceRoot":"","sources":["../../src/services/location-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,SAatD,CAAA;AAED,KAAK,mBAAmB,CAAC,MAAM,IAAI;IACjC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,GAAG,QAAQ,EAAE,YAAY;CAC1B,CAAA;
|
|
1
|
+
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,SAatD,CAAA;AAED,KAAK,mBAAmB,CAAC,MAAM,IAAI;IACjC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,GAAG,QAAQ,EAAE,YAAY;CAC1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,4MAgBhC,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,YAAY,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB,6IAI/B,CAAA;AAED,eAAO,MAAM,eAAe,oBAAqB,oBAAoB,MAAM,CAAC,GAAG,kBAAkB,+CAKhG,CAAA"}
|
package/esm/shade-component.js
CHANGED
|
@@ -57,7 +57,6 @@ export const attachProps = (el, props) => {
|
|
|
57
57
|
}
|
|
58
58
|
attachDataAttributes(el, props);
|
|
59
59
|
};
|
|
60
|
-
// eslint-disable-next-line jsdoc/require-param
|
|
61
60
|
/**
|
|
62
61
|
* Factory method that creates a component. This should be configured as a default JSX Factory in tsconfig.
|
|
63
62
|
* @returns the created JSX element
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAkC,EAAE,QAAsB,EAAE,EAAE;IACxF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;gBACtE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAoD,EAAE;IACvF,OAAO,KAAK,EAAE,KAAK,KAAK,SAAS,CAAA;AACnC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAe,EAAE,KAAU,EAAE,EAAE;IAC1D,IAAI,QAAQ,CAAC,KAAK,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC3D,CAAC;gBAAC,EAAE,CAAC,KAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAe,EAAE,KAAU,EAAE,EAAE;IAClE,KAAK;QACH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAG,KAAgB,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/E,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAe,EAAE,KAAU,EAAE,EAAE;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAM;IACR,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IAEhC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAEvB,IAAI,KAAK,IAAK,KAAa,CAAC,KAAK,EAAE,CAAC;QAClC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;IACD,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACjC,CAAC,CAAA;AAQD
|
|
1
|
+
{"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/shades",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.5",
|
|
4
4
|
"description": "Google Authentication Provider for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://github.com/furystack/furystack",
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@types/jsdom": "^21.1.
|
|
41
|
-
"@types/node": "^20.
|
|
42
|
-
"jsdom": "^24.
|
|
40
|
+
"@types/jsdom": "^21.1.7",
|
|
41
|
+
"@types/node": "^20.14.2",
|
|
42
|
+
"jsdom": "^24.1.0",
|
|
43
43
|
"typescript": "^5.4.5",
|
|
44
44
|
"vitest": "^1.6.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@furystack/inject": "^11.0.
|
|
48
|
-
"@furystack/rest": "^7.0.
|
|
49
|
-
"@furystack/utils": "^7.0.
|
|
47
|
+
"@furystack/inject": "^11.0.3",
|
|
48
|
+
"@furystack/rest": "^7.0.5",
|
|
49
|
+
"@furystack/utils": "^7.0.2",
|
|
50
50
|
"path-to-regexp": "^6.2.2",
|
|
51
51
|
"semaphore-async-await": "^1.5.1"
|
|
52
52
|
},
|
|
@@ -5,8 +5,8 @@ global.TextDecoder = TextDecoder as any
|
|
|
5
5
|
|
|
6
6
|
import { Injector } from '@furystack/inject'
|
|
7
7
|
import { using } from '@furystack/utils'
|
|
8
|
-
import { serializeValue } from '@furystack/rest'
|
|
9
|
-
import { LocationService } from './location-service.js'
|
|
8
|
+
import { deserializeQueryString, serializeToQueryString, serializeValue } from '@furystack/rest'
|
|
9
|
+
import { LocationService, useCustomSearchStateSerializer } from './location-service.js'
|
|
10
10
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
|
|
11
11
|
|
|
12
12
|
describe('LocationService', () => {
|
|
@@ -101,5 +101,20 @@ describe('LocationService', () => {
|
|
|
101
101
|
expect(location.search).toBe('?test=IjIi')
|
|
102
102
|
})
|
|
103
103
|
})
|
|
104
|
+
|
|
105
|
+
it('Should use custom serializer and deserializer', () => {
|
|
106
|
+
using(new Injector(), (i) => {
|
|
107
|
+
const customSerializer = vi.fn((value: any) => serializeToQueryString(value))
|
|
108
|
+
const customDeserializer = vi.fn((value: any) => deserializeQueryString(value))
|
|
109
|
+
const locationService = i.getInstance(LocationService)
|
|
110
|
+
const testSearchParam = locationService.useSearchParam('test', { value: 'foo' })
|
|
111
|
+
|
|
112
|
+
useCustomSearchStateSerializer(i, customSerializer, customDeserializer)
|
|
113
|
+
|
|
114
|
+
testSearchParam.setValue({ value: 'bar' })
|
|
115
|
+
expect(customSerializer).toBeCalledWith({ test: { value: 'bar' } })
|
|
116
|
+
expect(customDeserializer).toBeCalledWith('?test=eyJ2YWx1ZSI6ImJhciJ9')
|
|
117
|
+
})
|
|
118
|
+
})
|
|
104
119
|
})
|
|
105
120
|
})
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import type { Disposable } from '@furystack/utils'
|
|
2
2
|
import { ObservableValue, Trace } from '@furystack/utils'
|
|
3
|
-
import { Injectable } from '@furystack/inject'
|
|
3
|
+
import { Injectable, type Injector } from '@furystack/inject'
|
|
4
4
|
import { deserializeQueryString, serializeToQueryString } from '@furystack/rest'
|
|
5
5
|
@Injectable({ lifetime: 'singleton' })
|
|
6
6
|
export class LocationService implements Disposable {
|
|
7
|
+
public serializeToQueryString = serializeToQueryString
|
|
8
|
+
|
|
9
|
+
public deserializeQueryString = deserializeQueryString
|
|
10
|
+
|
|
7
11
|
public dispose() {
|
|
8
12
|
window.removeEventListener('popstate', this.popStateListener)
|
|
9
13
|
window.removeEventListener('hashchange', this.hashChangeListener)
|
|
@@ -30,10 +34,10 @@ export class LocationService implements Disposable {
|
|
|
30
34
|
*/
|
|
31
35
|
public onLocationSearchChanged = new ObservableValue<string>(location.search)
|
|
32
36
|
|
|
33
|
-
public onDeserializedLocationSearchChanged = new ObservableValue(deserializeQueryString(location.search))
|
|
37
|
+
public onDeserializedLocationSearchChanged = new ObservableValue(this.deserializeQueryString(location.search))
|
|
34
38
|
|
|
35
39
|
public locationDeserializerObserver = this.onLocationSearchChanged.subscribe((search) => {
|
|
36
|
-
this.onDeserializedLocationSearchChanged.setValue(deserializeQueryString(search))
|
|
40
|
+
this.onDeserializedLocationSearchChanged.setValue(this.deserializeQueryString(search))
|
|
37
41
|
})
|
|
38
42
|
|
|
39
43
|
public updateState = (() => {
|
|
@@ -66,7 +70,7 @@ export class LocationService implements Disposable {
|
|
|
66
70
|
newObservable.subscribe((value) => {
|
|
67
71
|
const currentQueryStringObject = this.onDeserializedLocationSearchChanged.getValue()
|
|
68
72
|
if (currentQueryStringObject[key] !== value) {
|
|
69
|
-
const params = serializeToQueryString({ ...currentQueryStringObject, [key]: value })
|
|
73
|
+
const params = this.serializeToQueryString({ ...currentQueryStringObject, [key]: value })
|
|
70
74
|
const newUrl = `${location.pathname}?${params}`
|
|
71
75
|
history.pushState({}, '', newUrl)
|
|
72
76
|
}
|
|
@@ -111,3 +115,13 @@ export class LocationService implements Disposable {
|
|
|
111
115
|
})
|
|
112
116
|
}
|
|
113
117
|
}
|
|
118
|
+
|
|
119
|
+
export const useCustomSearchStateSerializer = (
|
|
120
|
+
injector: Injector,
|
|
121
|
+
serialize: typeof serializeToQueryString,
|
|
122
|
+
deserialize: typeof deserializeQueryString,
|
|
123
|
+
) => {
|
|
124
|
+
const locationService = injector.getInstance(LocationService)
|
|
125
|
+
locationService.serializeToQueryString = serialize
|
|
126
|
+
locationService.deserializeQueryString = deserialize
|
|
127
|
+
}
|
package/src/shade-component.ts
CHANGED
|
@@ -70,7 +70,6 @@ type CreateComponentArgs<TProps> = [
|
|
|
70
70
|
...children: ChildrenList,
|
|
71
71
|
]
|
|
72
72
|
|
|
73
|
-
// eslint-disable-next-line jsdoc/require-param
|
|
74
73
|
/**
|
|
75
74
|
* Factory method that creates a component. This should be configured as a default JSX Factory in tsconfig.
|
|
76
75
|
* @returns the created JSX element
|