@molecule/app-svelte 1.0.0
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/LICENSE +115 -0
- package/README.md +2032 -0
- package/dist/context.d.ts +126 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +217 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/stores/async-state.d.ts +47 -0
- package/dist/stores/async-state.d.ts.map +1 -0
- package/dist/stores/async-state.js +89 -0
- package/dist/stores/async-state.js.map +1 -0
- package/dist/stores/auth.d.ts +54 -0
- package/dist/stores/auth.d.ts.map +1 -0
- package/dist/stores/auth.js +93 -0
- package/dist/stores/auth.js.map +1 -0
- package/dist/stores/capacitor-app.d.ts +46 -0
- package/dist/stores/capacitor-app.d.ts.map +1 -0
- package/dist/stores/capacitor-app.js +59 -0
- package/dist/stores/capacitor-app.js.map +1 -0
- package/dist/stores/change-password.d.ts +17 -0
- package/dist/stores/change-password.d.ts.map +1 -0
- package/dist/stores/change-password.js +17 -0
- package/dist/stores/change-password.js.map +1 -0
- package/dist/stores/device.d.ts +39 -0
- package/dist/stores/device.d.ts.map +1 -0
- package/dist/stores/device.js +51 -0
- package/dist/stores/device.js.map +1 -0
- package/dist/stores/forms.d.ts +121 -0
- package/dist/stores/forms.d.ts.map +1 -0
- package/dist/stores/forms.js +178 -0
- package/dist/stores/forms.js.map +1 -0
- package/dist/stores/http.d.ts +119 -0
- package/dist/stores/http.d.ts.map +1 -0
- package/dist/stores/http.js +206 -0
- package/dist/stores/http.js.map +1 -0
- package/dist/stores/i18n.d.ts +50 -0
- package/dist/stores/i18n.d.ts.map +1 -0
- package/dist/stores/i18n.js +67 -0
- package/dist/stores/i18n.js.map +1 -0
- package/dist/stores/index.d.ts +27 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +27 -0
- package/dist/stores/index.js.map +1 -0
- package/dist/stores/logger.d.ts +83 -0
- package/dist/stores/logger.d.ts.map +1 -0
- package/dist/stores/logger.js +104 -0
- package/dist/stores/logger.js.map +1 -0
- package/dist/stores/login.d.ts +33 -0
- package/dist/stores/login.d.ts.map +1 -0
- package/dist/stores/login.js +32 -0
- package/dist/stores/login.js.map +1 -0
- package/dist/stores/oauth.d.ts +74 -0
- package/dist/stores/oauth.d.ts.map +1 -0
- package/dist/stores/oauth.js +183 -0
- package/dist/stores/oauth.js.map +1 -0
- package/dist/stores/password-reset.d.ts +31 -0
- package/dist/stores/password-reset.d.ts.map +1 -0
- package/dist/stores/password-reset.js +26 -0
- package/dist/stores/password-reset.js.map +1 -0
- package/dist/stores/platform.d.ts +41 -0
- package/dist/stores/platform.d.ts.map +1 -0
- package/dist/stores/platform.js +44 -0
- package/dist/stores/platform.js.map +1 -0
- package/dist/stores/promise.d.ts +41 -0
- package/dist/stores/promise.d.ts.map +1 -0
- package/dist/stores/promise.js +76 -0
- package/dist/stores/promise.js.map +1 -0
- package/dist/stores/push.d.ts +41 -0
- package/dist/stores/push.d.ts.map +1 -0
- package/dist/stores/push.js +73 -0
- package/dist/stores/push.js.map +1 -0
- package/dist/stores/router.d.ts +74 -0
- package/dist/stores/router.d.ts.map +1 -0
- package/dist/stores/router.js +131 -0
- package/dist/stores/router.js.map +1 -0
- package/dist/stores/signup.d.ts +18 -0
- package/dist/stores/signup.d.ts.map +1 -0
- package/dist/stores/signup.js +17 -0
- package/dist/stores/signup.js.map +1 -0
- package/dist/stores/state.d.ts +62 -0
- package/dist/stores/state.d.ts.map +1 -0
- package/dist/stores/state.js +74 -0
- package/dist/stores/state.js.map +1 -0
- package/dist/stores/storage.d.ts +76 -0
- package/dist/stores/storage.d.ts.map +1 -0
- package/dist/stores/storage.js +159 -0
- package/dist/stores/storage.js.map +1 -0
- package/dist/stores/theme.d.ts +68 -0
- package/dist/stores/theme.d.ts.map +1 -0
- package/dist/stores/theme.js +119 -0
- package/dist/stores/theme.js.map +1 -0
- package/dist/stores/version.d.ts +44 -0
- package/dist/stores/version.d.ts.map +1 -0
- package/dist/stores/version.js +73 -0
- package/dist/stores/version.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte store for password reset with async state tracking.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { getAuthClient } from '../context.js';
|
|
7
|
+
import { createPromiseStore } from './promise.js';
|
|
8
|
+
/**
|
|
9
|
+
* Creates password reset stores with async state tracking.
|
|
10
|
+
*
|
|
11
|
+
* @returns Password reset stores for request and confirm steps
|
|
12
|
+
*/
|
|
13
|
+
export function createPasswordResetStores() {
|
|
14
|
+
const client = getAuthClient();
|
|
15
|
+
const request = createPromiseStore((data) => client.requestPasswordReset(data));
|
|
16
|
+
const confirm = createPromiseStore((data) => client.confirmPasswordReset(data));
|
|
17
|
+
return {
|
|
18
|
+
request,
|
|
19
|
+
confirm,
|
|
20
|
+
resetAll: () => {
|
|
21
|
+
request.reset();
|
|
22
|
+
confirm.reset();
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=password-reset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-reset.js","sourceRoot":"","sources":["../../src/stores/password-reset.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAmBjD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAE9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,IAA0B,EAAE,EAAE,CAChE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAClC,CAAA;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,IAA0B,EAAE,EAAE,CAChE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAClC,CAAA;IAED,OAAO;QACL,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte stores for platform detection.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Platform } from '@molecule/app-platform';
|
|
7
|
+
/**
|
|
8
|
+
* Create platform stores from the module-level platform info.
|
|
9
|
+
*
|
|
10
|
+
* Platform information is static (no reactive subscription needed),
|
|
11
|
+
* so this returns plain values rather than Svelte stores.
|
|
12
|
+
*
|
|
13
|
+
* @returns Platform information and utility functions
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```svelte
|
|
17
|
+
* <script>
|
|
18
|
+
* import { createPlatformStores } from '@molecule/app-svelte'
|
|
19
|
+
*
|
|
20
|
+
* const { platform, isNative, isMobile, isPlatform } = createPlatformStores()
|
|
21
|
+
* </script>
|
|
22
|
+
*
|
|
23
|
+
* <p>Platform: {platform}</p>
|
|
24
|
+
* {#if isMobile}
|
|
25
|
+
* <MobileLayout />
|
|
26
|
+
* {:else}
|
|
27
|
+
* <DesktopLayout />
|
|
28
|
+
* {/if}
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function createPlatformStores(): {
|
|
32
|
+
platform: Platform;
|
|
33
|
+
isNative: boolean;
|
|
34
|
+
isMobile: boolean;
|
|
35
|
+
isDesktop: boolean;
|
|
36
|
+
isWeb: boolean;
|
|
37
|
+
isDevelopment: boolean;
|
|
38
|
+
isProduction: boolean;
|
|
39
|
+
isPlatform: (...platforms: Platform[]) => boolean;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/stores/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGtD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,IAAI;IACtC,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAA;CAClD,CAaA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte stores for platform detection.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { getPlatformInfo, isPlatform } from '@molecule/app-platform';
|
|
7
|
+
/**
|
|
8
|
+
* Create platform stores from the module-level platform info.
|
|
9
|
+
*
|
|
10
|
+
* Platform information is static (no reactive subscription needed),
|
|
11
|
+
* so this returns plain values rather than Svelte stores.
|
|
12
|
+
*
|
|
13
|
+
* @returns Platform information and utility functions
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```svelte
|
|
17
|
+
* <script>
|
|
18
|
+
* import { createPlatformStores } from '@molecule/app-svelte'
|
|
19
|
+
*
|
|
20
|
+
* const { platform, isNative, isMobile, isPlatform } = createPlatformStores()
|
|
21
|
+
* </script>
|
|
22
|
+
*
|
|
23
|
+
* <p>Platform: {platform}</p>
|
|
24
|
+
* {#if isMobile}
|
|
25
|
+
* <MobileLayout />
|
|
26
|
+
* {:else}
|
|
27
|
+
* <DesktopLayout />
|
|
28
|
+
* {/if}
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function createPlatformStores() {
|
|
32
|
+
const info = getPlatformInfo();
|
|
33
|
+
return {
|
|
34
|
+
platform: info.platform,
|
|
35
|
+
isNative: info.isNative,
|
|
36
|
+
isMobile: info.isMobile,
|
|
37
|
+
isDesktop: info.isDesktop,
|
|
38
|
+
isWeb: info.isWeb,
|
|
39
|
+
isDevelopment: info.isDevelopment,
|
|
40
|
+
isProduction: info.isProduction,
|
|
41
|
+
isPlatform: (...platforms) => isPlatform(...platforms),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/stores/platform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,oBAAoB;IAUlC,MAAM,IAAI,GAAG,eAAe,EAAE,CAAA;IAE9B,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,CAAC,GAAG,SAAqB,EAAW,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;KAC5E,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte store for tracking async function state.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { type Readable } from 'svelte/store';
|
|
7
|
+
import type { PromiseState } from '@molecule/app-utilities';
|
|
8
|
+
/**
|
|
9
|
+
* Promise store with action methods.
|
|
10
|
+
*/
|
|
11
|
+
export interface PromiseStore<T> extends Readable<PromiseState<T>> {
|
|
12
|
+
call: (...args: any[]) => Promise<T>;
|
|
13
|
+
cancel: (message?: string) => void;
|
|
14
|
+
reset: () => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates a store that tracks async function state.
|
|
18
|
+
*
|
|
19
|
+
* @param asyncFn - The async function to track
|
|
20
|
+
* @returns Promise store with subscribe, call, cancel, and reset
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```svelte
|
|
24
|
+
* <script>
|
|
25
|
+
* import { createPromiseStore } from '@molecule/app-svelte'
|
|
26
|
+
*
|
|
27
|
+
* const users = createPromiseStore((query) => api.searchUsers(query))
|
|
28
|
+
* </script>
|
|
29
|
+
*
|
|
30
|
+
* <button on:click={() => users.call('john')} disabled={$users.status === 'pending'}>
|
|
31
|
+
* Search
|
|
32
|
+
* </button>
|
|
33
|
+
* {#if $users.value}
|
|
34
|
+
* {#each $users.value as user}
|
|
35
|
+
* <div>{user.name}</div>
|
|
36
|
+
* {/each}
|
|
37
|
+
* {/if}
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare const createPromiseStore: <T extends (...args: any[]) => Promise<any>>(asyncFn: T) => PromiseStore<Awaited<ReturnType<T>>>;
|
|
41
|
+
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../src/stores/promise.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,cAAc,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAA;AAE1E;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACpC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC3E,SAAS,CAAC,KACT,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CA0DrC,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte store for tracking async function state.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
+
import { writable } from 'svelte/store';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a store that tracks async function state.
|
|
10
|
+
*
|
|
11
|
+
* @param asyncFn - The async function to track
|
|
12
|
+
* @returns Promise store with subscribe, call, cancel, and reset
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```svelte
|
|
16
|
+
* <script>
|
|
17
|
+
* import { createPromiseStore } from '@molecule/app-svelte'
|
|
18
|
+
*
|
|
19
|
+
* const users = createPromiseStore((query) => api.searchUsers(query))
|
|
20
|
+
* </script>
|
|
21
|
+
*
|
|
22
|
+
* <button on:click={() => users.call('john')} disabled={$users.status === 'pending'}>
|
|
23
|
+
* Search
|
|
24
|
+
* </button>
|
|
25
|
+
* {#if $users.value}
|
|
26
|
+
* {#each $users.value as user}
|
|
27
|
+
* <div>{user.name}</div>
|
|
28
|
+
* {/each}
|
|
29
|
+
* {/if}
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export const createPromiseStore = (asyncFn) => {
|
|
33
|
+
const initial = {
|
|
34
|
+
status: 'idle',
|
|
35
|
+
value: null,
|
|
36
|
+
error: null,
|
|
37
|
+
};
|
|
38
|
+
const store = writable(initial);
|
|
39
|
+
let callId = 0;
|
|
40
|
+
const call = (...args) => {
|
|
41
|
+
callId += 1;
|
|
42
|
+
const thisCallId = callId;
|
|
43
|
+
store.set({ status: 'pending', value: null, error: null });
|
|
44
|
+
return asyncFn(...args).then((resolved) => {
|
|
45
|
+
if (thisCallId === callId) {
|
|
46
|
+
store.set({ status: 'resolved', value: resolved, error: null });
|
|
47
|
+
}
|
|
48
|
+
return resolved;
|
|
49
|
+
}, (err) => {
|
|
50
|
+
const rejection = err instanceof Error ? err : new Error(String(err));
|
|
51
|
+
if (thisCallId === callId) {
|
|
52
|
+
store.set({ status: 'rejected', value: null, error: rejection });
|
|
53
|
+
}
|
|
54
|
+
throw rejection;
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
const cancel = (message) => {
|
|
58
|
+
callId += 1;
|
|
59
|
+
store.set({
|
|
60
|
+
status: 'rejected',
|
|
61
|
+
value: null,
|
|
62
|
+
error: message ? new Error(message) : null,
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const reset = () => {
|
|
66
|
+
callId += 1;
|
|
67
|
+
store.set({ status: 'idle', value: null, error: null });
|
|
68
|
+
};
|
|
69
|
+
return {
|
|
70
|
+
subscribe: store.subscribe,
|
|
71
|
+
call,
|
|
72
|
+
cancel,
|
|
73
|
+
reset,
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/stores/promise.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uDAAuD;AACvD,OAAO,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAA;AAatD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAU,EAC4B,EAAE;IAGxC,MAAM,OAAO,GAAoB;QAC/B,MAAM,EAAE,MAAuB;QAC/B,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;KACZ,CAAA;IAED,MAAM,KAAK,GAAG,QAAQ,CAAkB,OAAO,CAAC,CAAA;IAEhD,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,EAAc,EAAE;QAC1C,MAAM,IAAI,CAAC,CAAA;QACX,MAAM,UAAU,GAAG,MAAM,CAAA;QAEzB,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1D,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAC1B,CAAC,QAAW,EAAE,EAAE;YACd,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACjE,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC,EACD,CAAC,GAAY,EAAE,EAAE;YACf,MAAM,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAErE,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YAClE,CAAC;YAED,MAAM,SAAS,CAAA;QACjB,CAAC,CACF,CAAA;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAQ,EAAE;QACxC,MAAM,IAAI,CAAC,CAAA;QACX,KAAK,CAAC,GAAG,CAAC;YACR,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;SAC3C,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,MAAM,IAAI,CAAC,CAAA;QACX,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI;QACJ,MAAM;QACN,KAAK;KACN,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte stores for push notifications.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { type Readable } from 'svelte/store';
|
|
7
|
+
import type { NotificationActionListener, NotificationReceivedListener, PermissionStatus, PushRegisterOptions, PushToken, TokenChangeListener } from '@molecule/app-push';
|
|
8
|
+
/**
|
|
9
|
+
* Create push notification stores from the module-level push provider.
|
|
10
|
+
*
|
|
11
|
+
* @returns Push notification stores and actions
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```svelte
|
|
15
|
+
* <script>
|
|
16
|
+
* import { createPushStores } from '@molecule/app-svelte'
|
|
17
|
+
*
|
|
18
|
+
* const { permission, token, requestPermission, register } = createPushStores()
|
|
19
|
+
* </script>
|
|
20
|
+
*
|
|
21
|
+
* {#if $permission === 'default'}
|
|
22
|
+
* <button on:click={requestPermission}>Enable Notifications</button>
|
|
23
|
+
* {:else if $permission === 'granted'}
|
|
24
|
+
* <p>Token: {$token?.value}</p>
|
|
25
|
+
* {/if}
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function createPushStores(): {
|
|
29
|
+
permission: Readable<PermissionStatus | null>;
|
|
30
|
+
token: Readable<PushToken | null>;
|
|
31
|
+
checkPermission: () => Promise<PermissionStatus>;
|
|
32
|
+
requestPermission: () => Promise<PermissionStatus>;
|
|
33
|
+
register: (options?: PushRegisterOptions) => Promise<PushToken>;
|
|
34
|
+
unregister: () => Promise<void>;
|
|
35
|
+
onNotificationReceived: (listener: NotificationReceivedListener) => () => void;
|
|
36
|
+
onNotificationAction: (listener: NotificationActionListener) => () => void;
|
|
37
|
+
onTokenChange: (listener: TokenChangeListener) => () => void;
|
|
38
|
+
setBadge: (count: number) => Promise<void>;
|
|
39
|
+
clearBadge: () => Promise<void>;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/stores/push.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,QAAQ,EAA2B,MAAM,cAAc,CAAA;AAErE,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAG3B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;IAC7C,KAAK,EAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACjC,eAAe,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAChD,iBAAiB,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClD,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/D,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,sBAAsB,EAAE,CAAC,QAAQ,EAAE,4BAA4B,KAAK,MAAM,IAAI,CAAA;IAC9E,oBAAoB,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,MAAM,IAAI,CAAA;IAC1E,aAAa,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,MAAM,IAAI,CAAA;IAC5D,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC,CAyDA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte stores for push notifications.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { writable } from 'svelte/store';
|
|
7
|
+
import { getProvider } from '@molecule/app-push';
|
|
8
|
+
/**
|
|
9
|
+
* Create push notification stores from the module-level push provider.
|
|
10
|
+
*
|
|
11
|
+
* @returns Push notification stores and actions
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```svelte
|
|
15
|
+
* <script>
|
|
16
|
+
* import { createPushStores } from '@molecule/app-svelte'
|
|
17
|
+
*
|
|
18
|
+
* const { permission, token, requestPermission, register } = createPushStores()
|
|
19
|
+
* </script>
|
|
20
|
+
*
|
|
21
|
+
* {#if $permission === 'default'}
|
|
22
|
+
* <button on:click={requestPermission}>Enable Notifications</button>
|
|
23
|
+
* {:else if $permission === 'granted'}
|
|
24
|
+
* <p>Token: {$token?.value}</p>
|
|
25
|
+
* {/if}
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function createPushStores() {
|
|
29
|
+
const provider = getProvider();
|
|
30
|
+
const permissionStore = writable(null);
|
|
31
|
+
const tokenStore = writable(null);
|
|
32
|
+
// Actions that update stores
|
|
33
|
+
const checkPermission = async () => {
|
|
34
|
+
const status = await provider.checkPermission();
|
|
35
|
+
permissionStore.set(status);
|
|
36
|
+
return status;
|
|
37
|
+
};
|
|
38
|
+
const requestPermission = async () => {
|
|
39
|
+
const status = await provider.requestPermission();
|
|
40
|
+
permissionStore.set(status);
|
|
41
|
+
return status;
|
|
42
|
+
};
|
|
43
|
+
const register = async (options) => {
|
|
44
|
+
const pushToken = await provider.register(options);
|
|
45
|
+
tokenStore.set(pushToken);
|
|
46
|
+
return pushToken;
|
|
47
|
+
};
|
|
48
|
+
const unregister = async () => {
|
|
49
|
+
await provider.unregister();
|
|
50
|
+
tokenStore.set(null);
|
|
51
|
+
};
|
|
52
|
+
// Event listeners
|
|
53
|
+
const onNotificationReceived = (listener) => provider.onNotificationReceived(listener);
|
|
54
|
+
const onNotificationAction = (listener) => provider.onNotificationAction(listener);
|
|
55
|
+
const onTokenChange = (listener) => provider.onTokenChange(listener);
|
|
56
|
+
// Badge management
|
|
57
|
+
const setBadge = (count) => provider.setBadge(count);
|
|
58
|
+
const clearBadge = () => provider.clearBadge();
|
|
59
|
+
return {
|
|
60
|
+
permission: { subscribe: permissionStore.subscribe },
|
|
61
|
+
token: { subscribe: tokenStore.subscribe },
|
|
62
|
+
checkPermission,
|
|
63
|
+
requestPermission,
|
|
64
|
+
register,
|
|
65
|
+
unregister,
|
|
66
|
+
onNotificationReceived,
|
|
67
|
+
onNotificationAction,
|
|
68
|
+
onTokenChange,
|
|
69
|
+
setBadge,
|
|
70
|
+
clearBadge,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/stores/push.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgC,QAAQ,EAAE,MAAM,cAAc,CAAA;AAUrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB;IAa9B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,eAAe,GAAsC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACzE,MAAM,UAAU,GAA+B,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE7D,6BAA6B;IAC7B,MAAM,eAAe,GAAG,KAAK,IAA+B,EAAE;QAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAA;QAC/C,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,IAA+B,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAA;QACjD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EAAE,OAA6B,EAAsB,EAAE;QAC3E,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAClD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzB,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;QAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,kBAAkB;IAClB,MAAM,sBAAsB,GAAG,CAAC,QAAsC,EAAgB,EAAE,CACtF,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAE3C,MAAM,oBAAoB,GAAG,CAAC,QAAoC,EAAgB,EAAE,CAClF,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAEzC,MAAM,aAAa,GAAG,CAAC,QAA6B,EAAgB,EAAE,CACpE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAElC,mBAAmB;IACnB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAiB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,GAAkB,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IAE7D,OAAO;QACL,UAAU,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,SAAS,EAAuC;QACzF,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAgC;QACxE,eAAe;QACf,iBAAiB;QACjB,QAAQ;QACR,UAAU;QACV,sBAAsB;QACtB,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,UAAU;KACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte stores for routing.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { type Readable } from 'svelte/store';
|
|
7
|
+
import type { NavigateOptions, QueryParams, RouteLocation, RouteParams, Router } from '@molecule/app-routing';
|
|
8
|
+
/**
|
|
9
|
+
* Router stores and actions.
|
|
10
|
+
*/
|
|
11
|
+
interface RouterStores {
|
|
12
|
+
location: Readable<RouteLocation>;
|
|
13
|
+
params: Readable<RouteParams>;
|
|
14
|
+
query: Readable<QueryParams>;
|
|
15
|
+
pathname: Readable<string>;
|
|
16
|
+
navigate: (path: string, options?: NavigateOptions) => void;
|
|
17
|
+
navigateTo: (name: string, routeParams?: RouteParams, query?: QueryParams, options?: NavigateOptions) => void;
|
|
18
|
+
back: () => void;
|
|
19
|
+
forward: () => void;
|
|
20
|
+
isActive: (path: string, exact?: boolean) => boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create router stores from the router in context.
|
|
24
|
+
*
|
|
25
|
+
* @returns Router stores and actions
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```svelte
|
|
29
|
+
* <script>
|
|
30
|
+
* import { createRouterStores } from '@molecule/app-svelte'
|
|
31
|
+
*
|
|
32
|
+
* const { location, params, query, navigate, back } = createRouterStores()
|
|
33
|
+
* </script>
|
|
34
|
+
*
|
|
35
|
+
* <nav>
|
|
36
|
+
* <a href="#" on:click|preventDefault={() => navigate('/home')}>Home</a>
|
|
37
|
+
* <span>Current: {$location.pathname}</span>
|
|
38
|
+
* </nav>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function createRouterStores(): RouterStores;
|
|
42
|
+
/**
|
|
43
|
+
* Create a derived store that checks if a path is active.
|
|
44
|
+
*
|
|
45
|
+
* @param location - A readable location store (from createRouterStores or createRouterStoresFromRouter)
|
|
46
|
+
* @param router - Router instance (for isActive check)
|
|
47
|
+
* @param path - Path to check
|
|
48
|
+
* @param exact - Whether to require exact match (default: false)
|
|
49
|
+
* @returns Readable store of whether the path is active
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```svelte
|
|
53
|
+
* <script>
|
|
54
|
+
* import { createRouterStores, createIsActiveStore } from '@molecule/app-svelte'
|
|
55
|
+
* import { getRouter } from '@molecule/app-svelte'
|
|
56
|
+
*
|
|
57
|
+
* const { location } = createRouterStores()
|
|
58
|
+
* const router = getRouter()
|
|
59
|
+
* const isHomeActive = createIsActiveStore(location, router, '/home', true)
|
|
60
|
+
* </script>
|
|
61
|
+
*
|
|
62
|
+
* <a class:active={$isHomeActive} href="/home">Home</a>
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function createIsActiveStore(location: Readable<RouteLocation>, router: Router, path: string, exact?: boolean): Readable<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Create router stores from a specific router.
|
|
68
|
+
*
|
|
69
|
+
* @param router - Router instance
|
|
70
|
+
* @returns Router stores and actions
|
|
71
|
+
*/
|
|
72
|
+
export declare function createRouterStoresFromRouter(router: Router): RouterStores;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/stores/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,QAAQ,EAAY,MAAM,cAAc,CAAA;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,WAAW,EACX,MAAM,EACP,MAAM,uBAAuB,CAAA;AAI9B;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IACjC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC5B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,IAAI,CAAA;IAC3D,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,WAAW,EACzB,KAAK,CAAC,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,eAAe,KACtB,IAAI,CAAA;IACT,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;CACrD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAyEjD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACZ,QAAQ,CAAC,OAAO,CAAC,CAEnB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAkCzE"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte stores for routing.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { derived, readable } from 'svelte/store';
|
|
7
|
+
import { getRouter } from '../context.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create router stores from the router in context.
|
|
10
|
+
*
|
|
11
|
+
* @returns Router stores and actions
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```svelte
|
|
15
|
+
* <script>
|
|
16
|
+
* import { createRouterStores } from '@molecule/app-svelte'
|
|
17
|
+
*
|
|
18
|
+
* const { location, params, query, navigate, back } = createRouterStores()
|
|
19
|
+
* </script>
|
|
20
|
+
*
|
|
21
|
+
* <nav>
|
|
22
|
+
* <a href="#" on:click|preventDefault={() => navigate('/home')}>Home</a>
|
|
23
|
+
* <span>Current: {$location.pathname}</span>
|
|
24
|
+
* </nav>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function createRouterStores() {
|
|
28
|
+
const router = getRouter();
|
|
29
|
+
// Location store
|
|
30
|
+
const location = readable(router.getLocation(), (set) => {
|
|
31
|
+
return router.subscribe(() => {
|
|
32
|
+
set(router.getLocation());
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
// Params store
|
|
36
|
+
const params = readable(router.getParams(), (set) => {
|
|
37
|
+
return router.subscribe(() => {
|
|
38
|
+
set(router.getParams());
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
// Query store
|
|
42
|
+
const query = readable(router.getQuery(), (set) => {
|
|
43
|
+
return router.subscribe(() => {
|
|
44
|
+
set(router.getQuery());
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
// Derived stores
|
|
48
|
+
const pathname = derived(location, ($loc) => $loc.pathname);
|
|
49
|
+
// Actions
|
|
50
|
+
const navigate = (path, options) => {
|
|
51
|
+
router.navigate(path, options);
|
|
52
|
+
};
|
|
53
|
+
const navigateTo = (name, routeParams, query, options) => {
|
|
54
|
+
router.navigateTo(name, routeParams, query, options);
|
|
55
|
+
};
|
|
56
|
+
const back = () => {
|
|
57
|
+
router.back();
|
|
58
|
+
};
|
|
59
|
+
const forward = () => {
|
|
60
|
+
router.forward();
|
|
61
|
+
};
|
|
62
|
+
const isActive = (path, exact = false) => {
|
|
63
|
+
return router.isActive(path, exact);
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
location,
|
|
67
|
+
params,
|
|
68
|
+
query,
|
|
69
|
+
pathname,
|
|
70
|
+
navigate,
|
|
71
|
+
navigateTo,
|
|
72
|
+
back,
|
|
73
|
+
forward,
|
|
74
|
+
isActive,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a derived store that checks if a path is active.
|
|
79
|
+
*
|
|
80
|
+
* @param location - A readable location store (from createRouterStores or createRouterStoresFromRouter)
|
|
81
|
+
* @param router - Router instance (for isActive check)
|
|
82
|
+
* @param path - Path to check
|
|
83
|
+
* @param exact - Whether to require exact match (default: false)
|
|
84
|
+
* @returns Readable store of whether the path is active
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```svelte
|
|
88
|
+
* <script>
|
|
89
|
+
* import { createRouterStores, createIsActiveStore } from '@molecule/app-svelte'
|
|
90
|
+
* import { getRouter } from '@molecule/app-svelte'
|
|
91
|
+
*
|
|
92
|
+
* const { location } = createRouterStores()
|
|
93
|
+
* const router = getRouter()
|
|
94
|
+
* const isHomeActive = createIsActiveStore(location, router, '/home', true)
|
|
95
|
+
* </script>
|
|
96
|
+
*
|
|
97
|
+
* <a class:active={$isHomeActive} href="/home">Home</a>
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export function createIsActiveStore(location, router, path, exact = false) {
|
|
101
|
+
return derived(location, () => router.isActive(path, exact));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create router stores from a specific router.
|
|
105
|
+
*
|
|
106
|
+
* @param router - Router instance
|
|
107
|
+
* @returns Router stores and actions
|
|
108
|
+
*/
|
|
109
|
+
export function createRouterStoresFromRouter(router) {
|
|
110
|
+
const location = readable(router.getLocation(), (set) => {
|
|
111
|
+
return router.subscribe(() => set(router.getLocation()));
|
|
112
|
+
});
|
|
113
|
+
const params = readable(router.getParams(), (set) => {
|
|
114
|
+
return router.subscribe(() => set(router.getParams()));
|
|
115
|
+
});
|
|
116
|
+
const query = readable(router.getQuery(), (set) => {
|
|
117
|
+
return router.subscribe(() => set(router.getQuery()));
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
location,
|
|
121
|
+
params,
|
|
122
|
+
query,
|
|
123
|
+
pathname: derived(location, ($loc) => $loc.pathname),
|
|
124
|
+
navigate: (path, options) => router.navigate(path, options),
|
|
125
|
+
navigateTo: (name, p, q, options) => router.navigateTo(name, p, q, options),
|
|
126
|
+
back: () => router.back(),
|
|
127
|
+
forward: () => router.forward(),
|
|
128
|
+
isActive: (path, exact = false) => router.isActive(path, exact),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/stores/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte store for registration with async state tracking.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { AuthResult } from '@molecule/app-auth';
|
|
7
|
+
import { type PromiseStore } from './promise.js';
|
|
8
|
+
/**
|
|
9
|
+
* Signup store type.
|
|
10
|
+
*/
|
|
11
|
+
export type SignupStore<T = unknown> = PromiseStore<AuthResult<T>>;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a signup store with async state tracking.
|
|
14
|
+
*
|
|
15
|
+
* @returns Signup promise store
|
|
16
|
+
*/
|
|
17
|
+
export declare function createSignupStore<T = unknown>(): SignupStore<T>;
|
|
18
|
+
//# sourceMappingURL=signup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/stores/signup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAEpE;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,CAG/D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Svelte store for registration with async state tracking.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { getAuthClient } from '../context.js';
|
|
7
|
+
import { createPromiseStore } from './promise.js';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a signup store with async state tracking.
|
|
10
|
+
*
|
|
11
|
+
* @returns Signup promise store
|
|
12
|
+
*/
|
|
13
|
+
export function createSignupStore() {
|
|
14
|
+
const client = getAuthClient();
|
|
15
|
+
return createPromiseStore((data) => client.register(data));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=signup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/stores/signup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAqB,MAAM,cAAc,CAAA;AAOpE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,aAAa,EAAK,CAAA;IACjC,OAAO,kBAAkB,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1E,CAAC"}
|