@myko/ui-svelte 4.4.0 → 4.4.3

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 (80) hide show
  1. package/{src/lib → dist}/components/ConnectionStats.svelte +8 -22
  2. package/dist/components/ConnectionStats.svelte.d.ts +10 -0
  3. package/dist/components/EntityDiffBadge.svelte +10 -0
  4. package/dist/components/EntityDiffBadge.svelte.d.ts +7 -0
  5. package/{src/lib → dist}/components/EntityDiffFields.svelte +27 -49
  6. package/dist/components/EntityDiffFields.svelte.d.ts +11 -0
  7. package/{src/lib → dist}/components/EntityDiffNode.svelte +25 -43
  8. package/dist/components/EntityDiffNode.svelte.d.ts +14 -0
  9. package/{src/lib → dist}/components/EntityDiffTree.svelte +150 -200
  10. package/dist/components/EntityDiffTree.svelte.d.ts +21 -0
  11. package/dist/components/Logs.svelte +30 -0
  12. package/dist/components/Logs.svelte.d.ts +7 -0
  13. package/dist/components/Query.svelte +21 -0
  14. package/dist/components/Query.svelte.d.ts +35 -0
  15. package/dist/components/Report.svelte +13 -0
  16. package/dist/components/Report.svelte.d.ts +32 -0
  17. package/dist/components/Search.svelte +46 -0
  18. package/dist/components/Search.svelte.d.ts +56 -0
  19. package/dist/components/ServerView.svelte +76 -0
  20. package/dist/components/ServerView.svelte.d.ts +8 -0
  21. package/dist/components/state/resolutions.d.ts +11 -0
  22. package/dist/components/state/resolutions.js +129 -0
  23. package/dist/components/state/viewstate.svelte.d.ts +60 -0
  24. package/dist/components/state/viewstate.svelte.js +259 -0
  25. package/dist/components/state/windback.svelte.d.ts +16 -0
  26. package/dist/components/state/windback.svelte.js +65 -0
  27. package/dist/components/transactions/EntityHistory.svelte +135 -0
  28. package/dist/components/transactions/EntityHistory.svelte.d.ts +10 -0
  29. package/{src/lib → dist}/components/transactions/TimeStrip.svelte +18 -25
  30. package/dist/components/transactions/TimeStrip.svelte.d.ts +3 -0
  31. package/dist/components/transactions/TransactionDetails.svelte +24 -0
  32. package/dist/components/transactions/TransactionDetails.svelte.d.ts +7 -0
  33. package/{src/lib → dist}/components/transactions/TransactionEvent.svelte +20 -32
  34. package/dist/components/transactions/TransactionEvent.svelte.d.ts +7 -0
  35. package/{src/lib → dist}/components/transactions/TransactionEventGroup.svelte +8 -13
  36. package/dist/components/transactions/TransactionEventGroup.svelte.d.ts +8 -0
  37. package/dist/components/transactions/Transactions.svelte +94 -0
  38. package/dist/components/transactions/Transactions.svelte.d.ts +8 -0
  39. package/{src/lib → dist}/components/transactions/TransactonView.svelte +3 -7
  40. package/dist/components/transactions/TransactonView.svelte.d.ts +7 -0
  41. package/{src/lib → dist}/components/windback/WindbackFrame.svelte +3 -6
  42. package/dist/components/windback/WindbackFrame.svelte.d.ts +7 -0
  43. package/dist/components/windback/index.js +1 -0
  44. package/dist/index.d.ts +18 -0
  45. package/{src/lib/index.ts → dist/index.js} +2 -15
  46. package/dist/services/svelte-client.svelte.d.ts +278 -0
  47. package/dist/services/svelte-client.svelte.js +678 -0
  48. package/dist/utils/entity-apply.d.ts +17 -0
  49. package/dist/utils/entity-apply.js +35 -0
  50. package/dist/utils/entity-diff.d.ts +40 -0
  51. package/dist/utils/entity-diff.js +57 -0
  52. package/dist/utils/entity-tree.d.ts +24 -0
  53. package/dist/utils/entity-tree.js +111 -0
  54. package/package.json +13 -9
  55. package/.prettierignore +0 -4
  56. package/.prettierrc +0 -15
  57. package/src/app.d.ts +0 -13
  58. package/src/app.html +0 -12
  59. package/src/lib/components/EntityDiffBadge.svelte +0 -18
  60. package/src/lib/components/Logs.svelte +0 -37
  61. package/src/lib/components/Query.svelte +0 -34
  62. package/src/lib/components/Report.svelte +0 -25
  63. package/src/lib/components/Search.svelte +0 -85
  64. package/src/lib/components/ServerView.svelte +0 -95
  65. package/src/lib/components/state/resolutions.ts +0 -137
  66. package/src/lib/components/state/viewstate.svelte.ts +0 -375
  67. package/src/lib/components/state/windback.svelte.ts +0 -88
  68. package/src/lib/components/transactions/EntityHistory.svelte +0 -173
  69. package/src/lib/components/transactions/TransactionDetails.svelte +0 -26
  70. package/src/lib/components/transactions/Transactions.svelte +0 -111
  71. package/src/lib/services/svelte-client.svelte.ts +0 -863
  72. package/src/lib/utils/entity-apply.ts +0 -47
  73. package/src/lib/utils/entity-diff.ts +0 -105
  74. package/src/lib/utils/entity-tree.ts +0 -130
  75. package/src/routes/+page.svelte +0 -3
  76. package/static/favicon.png +0 -0
  77. package/svelte.config.js +0 -18
  78. package/tsconfig.json +0 -13
  79. package/vite.config.ts +0 -6
  80. /package/{src/lib/components/windback/index.ts → dist/components/windback/index.d.ts} +0 -0
@@ -0,0 +1,30 @@
1
+ <script lang="ts">import { startWith } from "rxjs";
2
+ import { myko as client } from "../services/svelte-client.svelte.js";
3
+ import { Loggers } from "@myko/core";
4
+ const { serverId } = $props();
5
+ const logs = client.watchReport(new Loggers({})).pipe(startWith([]));
6
+ </script>
7
+
8
+ {#each $logs as log}
9
+ <div class="log">
10
+ <input type="checkbox" />
11
+ <span>
12
+ {log}
13
+ </span>
14
+ </div>
15
+ {/each}
16
+
17
+ <style>
18
+ .log {
19
+ display: flex;
20
+ align-items: center;
21
+ }
22
+
23
+ .log input {
24
+ margin-right: 0.5rem;
25
+ }
26
+
27
+ .log span {
28
+ flex: 1;
29
+ }
30
+ </style>
@@ -0,0 +1,7 @@
1
+ import { type ID } from '@myko/core';
2
+ type Props = {
3
+ serverId: ID;
4
+ };
5
+ declare const Logs: import("svelte").Component<Props, {}, "">;
6
+ type Logs = ReturnType<typeof Logs>;
7
+ export default Logs;
@@ -0,0 +1,21 @@
1
+ <script lang="ts" generics="Q extends Query<unknown>">import { getMykoClient } from "../services/svelte-client.svelte.js";
2
+ let { query, client, children, empty, loading } = $props();
3
+ const resolvedClient = client ?? getMykoClient();
4
+ const result = resolvedClient.liveQuery(() => query);
5
+ </script>
6
+
7
+ {#if result.items.size === 0}
8
+ {#if !result.resolved}
9
+ {#if loading}
10
+ {@render loading()}
11
+ {:else}
12
+ <span class="query-loading">Loading...</span>
13
+ {/if}
14
+ {:else if empty}
15
+ {@render empty()}
16
+ {/if}
17
+ {:else}
18
+ {#each result.items as [id, item] (id)}
19
+ {@render children(item)}
20
+ {/each}
21
+ {/if}
@@ -0,0 +1,35 @@
1
+ import type { Query, QueryItem } from '@myko/core';
2
+ import { type SvelteMykoClient } from '../services/svelte-client.svelte.js';
3
+ import type { Snippet } from 'svelte';
4
+ declare function $$render<Q extends Query<unknown>>(): {
5
+ props: {
6
+ query: Q;
7
+ client?: SvelteMykoClient;
8
+ children: Snippet<[QueryItem<Q> & {
9
+ id: string;
10
+ }]>;
11
+ empty?: Snippet;
12
+ loading?: Snippet;
13
+ };
14
+ exports: {};
15
+ bindings: "";
16
+ slots: {};
17
+ events: {};
18
+ };
19
+ declare class __sveltets_Render<Q extends Query<unknown>> {
20
+ props(): ReturnType<typeof $$render<Q>>['props'];
21
+ events(): ReturnType<typeof $$render<Q>>['events'];
22
+ slots(): ReturnType<typeof $$render<Q>>['slots'];
23
+ bindings(): "";
24
+ exports(): {};
25
+ }
26
+ interface $$IsomorphicComponent {
27
+ new <Q extends Query<unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Q>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Q>['props']>, ReturnType<__sveltets_Render<Q>['events']>, ReturnType<__sveltets_Render<Q>['slots']>> & {
28
+ $$bindings?: ReturnType<__sveltets_Render<Q>['bindings']>;
29
+ } & ReturnType<__sveltets_Render<Q>['exports']>;
30
+ <Q extends Query<unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<Q>['props']> & {}): ReturnType<__sveltets_Render<Q>['exports']>;
31
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
32
+ }
33
+ declare const Query: $$IsomorphicComponent;
34
+ type Query<Q extends Query<unknown>> = InstanceType<typeof Query<Q>>;
35
+ export default Query;
@@ -0,0 +1,13 @@
1
+ <script lang="ts" generics="R extends Report<unknown>">import { getMykoClient } from "../services/svelte-client.svelte.js";
2
+ let { report, client, children, loading } = $props();
3
+ const resolvedClient = client ?? getMykoClient();
4
+ const result = resolvedClient.liveReport(() => report);
5
+ </script>
6
+
7
+ {#if result.value === undefined}
8
+ {#if loading}
9
+ {@render loading()}
10
+ {/if}
11
+ {:else}
12
+ {@render children(result.value)}
13
+ {/if}
@@ -0,0 +1,32 @@
1
+ import type { Report, ReportResult } from '@myko/core';
2
+ import { type SvelteMykoClient } from '../services/svelte-client.svelte.js';
3
+ import type { Snippet } from 'svelte';
4
+ declare function $$render<R extends Report<unknown>>(): {
5
+ props: {
6
+ report: R;
7
+ client?: SvelteMykoClient;
8
+ children: Snippet<[ReportResult<R>]>;
9
+ loading?: Snippet;
10
+ };
11
+ exports: {};
12
+ bindings: "";
13
+ slots: {};
14
+ events: {};
15
+ };
16
+ declare class __sveltets_Render<R extends Report<unknown>> {
17
+ props(): ReturnType<typeof $$render<R>>['props'];
18
+ events(): ReturnType<typeof $$render<R>>['events'];
19
+ slots(): ReturnType<typeof $$render<R>>['slots'];
20
+ bindings(): "";
21
+ exports(): {};
22
+ }
23
+ interface $$IsomorphicComponent {
24
+ new <R extends Report<unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<R>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<R>['props']>, ReturnType<__sveltets_Render<R>['events']>, ReturnType<__sveltets_Render<R>['slots']>> & {
25
+ $$bindings?: ReturnType<__sveltets_Render<R>['bindings']>;
26
+ } & ReturnType<__sveltets_Render<R>['exports']>;
27
+ <R extends Report<unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<R>['props']> & {}): ReturnType<__sveltets_Render<R>['exports']>;
28
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
29
+ }
30
+ declare const Report: $$IsomorphicComponent;
31
+ type Report<R extends Report<unknown>> = InstanceType<typeof Report<R>>;
32
+ export default Report;
@@ -0,0 +1,46 @@
1
+ <script lang="ts" generics="T extends { id: string }">import { EntitySearch } from "@myko/core";
2
+ import { getMykoClient } from "../services/svelte-client.svelte.js";
3
+ let {
4
+ entityType,
5
+ query,
6
+ limit = 100,
7
+ queryByIds,
8
+ showAllOnEmpty,
9
+ client,
10
+ children,
11
+ empty,
12
+ loading
13
+ } = $props();
14
+ const resolvedClient = client ?? getMykoClient();
15
+ const searchResult = resolvedClient.liveReport(
16
+ () => query?.trim() ? new EntitySearch({ entityType, query, limit }) : null
17
+ );
18
+ const searchIds = $derived(searchResult.value?.ids ?? []);
19
+ const itemsResult = resolvedClient.liveQuery(() => {
20
+ if (query?.trim()) {
21
+ return searchIds.length > 0 ? queryByIds(searchIds) : null;
22
+ } else if (showAllOnEmpty) {
23
+ return showAllOnEmpty;
24
+ }
25
+ return null;
26
+ });
27
+ const isLoading = $derived(
28
+ query?.trim() ? !searchResult.value || searchIds.length > 0 && !itemsResult.resolved : showAllOnEmpty ? !itemsResult.resolved : false
29
+ );
30
+ </script>
31
+
32
+ {#if isLoading}
33
+ {#if loading}
34
+ {@render loading()}
35
+ {:else}
36
+ <span class="search-loading">Searching...</span>
37
+ {/if}
38
+ {:else if itemsResult.items.size === 0}
39
+ {#if empty}
40
+ {@render empty()}
41
+ {/if}
42
+ {:else}
43
+ {#each itemsResult.items as [id, item] (id)}
44
+ {@render children(item)}
45
+ {/each}
46
+ {/if}
@@ -0,0 +1,56 @@
1
+ import { type Query } from '@myko/core';
2
+ import { type SvelteMykoClient } from '../services/svelte-client.svelte.js';
3
+ import type { Snippet } from 'svelte';
4
+ declare function $$render<T extends {
5
+ id: string;
6
+ }>(): {
7
+ props: {
8
+ /** Entity type to search (e.g., "Target", "Scene") */
9
+ entityType: string;
10
+ /** Search query string */
11
+ query: string;
12
+ /** Maximum number of results (default: 100) */
13
+ limit?: number;
14
+ /** Query factory to fetch items by IDs - receives array of matching IDs */
15
+ queryByIds: (ids: string[]) => Query<T>;
16
+ /** Query to use when search query is empty (shows all items) */
17
+ showAllOnEmpty?: Query<T>;
18
+ /** Optional client instance */
19
+ client?: SvelteMykoClient;
20
+ /** Render snippet for each result item */
21
+ children: Snippet<[T]>;
22
+ /** Render snippet when no results found */
23
+ empty?: Snippet;
24
+ /** Render snippet while loading */
25
+ loading?: Snippet;
26
+ };
27
+ exports: {};
28
+ bindings: "";
29
+ slots: {};
30
+ events: {};
31
+ };
32
+ declare class __sveltets_Render<T extends {
33
+ id: string;
34
+ }> {
35
+ props(): ReturnType<typeof $$render<T>>['props'];
36
+ events(): ReturnType<typeof $$render<T>>['events'];
37
+ slots(): ReturnType<typeof $$render<T>>['slots'];
38
+ bindings(): "";
39
+ exports(): {};
40
+ }
41
+ interface $$IsomorphicComponent {
42
+ new <T extends {
43
+ id: string;
44
+ }>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
45
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
46
+ } & ReturnType<__sveltets_Render<T>['exports']>;
47
+ <T extends {
48
+ id: string;
49
+ }>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
50
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
51
+ }
52
+ declare const Search: $$IsomorphicComponent;
53
+ type Search<T extends {
54
+ id: string;
55
+ }> = InstanceType<typeof Search<T>>;
56
+ export default Search;
@@ -0,0 +1,76 @@
1
+ <script lang="ts">import {
2
+ LOG_RANK,
3
+ PeerAlive,
4
+ ServerLogLevel,
5
+ SetLogLevel
6
+ } from "@myko/core";
7
+ import { DateTime } from "luxon";
8
+ import { Observable, interval, switchMap } from "rxjs";
9
+ import { onDestroy } from "svelte";
10
+ import { myko as client } from "../services/svelte-client.svelte.js";
11
+ let { server, isClientServer = false } = $props();
12
+ let alive = $derived(
13
+ isClientServer ? interval(500).pipe(switchMap(() => client.ping().catch((e) => false))) : client.watchReport(new PeerAlive({ peerId: server.id }))
14
+ );
15
+ let ping = $derived.by(() => {
16
+ const value = $alive;
17
+ if (value === void 0) return "Connecting";
18
+ if (value === false) return "Dead";
19
+ if (!Number.isFinite(value) || value < 0) return "Unknown";
20
+ return `${Math.round(value)}ms`;
21
+ });
22
+ let started = $state(DateTime.fromISO(server.startedAt).toRelative());
23
+ let startedInterbal = setInterval(() => {
24
+ started = DateTime.fromISO(server.startedAt).toRelative();
25
+ }, 1e3);
26
+ onDestroy(() => {
27
+ clearInterval(startedInterbal);
28
+ });
29
+ const currentLogLevel = $derived(client.watchReport(new ServerLogLevel({ serverId: server.id })));
30
+ </script>
31
+
32
+ <div class="server flex gap-5">
33
+ <div class="info">
34
+ <span class="address">{server.address}:{server.port}</span>
35
+ <span class="version">{server.version}</span>
36
+ <span class="id">ID: {server.id}</span>
37
+ <span class="started">Started: {started}</span>
38
+ <span>Ping {isClientServer ? '' : 'to connected'}: {ping}</span>
39
+ <select
40
+ aria-label="Log Level"
41
+ class="select"
42
+ onchange={(e) => {
43
+ console.log(e.currentTarget.value);
44
+ client.sendCommand(
45
+ new SetLogLevel({
46
+ serverId: server.id,
47
+ level: e.currentTarget.value as LogLevel
48
+ })
49
+ );
50
+ }}
51
+ >
52
+ {#each LOG_RANK as rank}
53
+ <option selected={rank === $currentLogLevel} value={rank}>{rank}</option>
54
+ {/each}
55
+ </select>
56
+ </div>
57
+ </div>
58
+
59
+ <style>
60
+ .server {
61
+ position: relative;
62
+ }
63
+
64
+ span {
65
+ display: block;
66
+ white-space: nowrap;
67
+ }
68
+
69
+ .version {
70
+ opacity: 0.5;
71
+ }
72
+
73
+ .id {
74
+ white-space: nowrap;
75
+ }
76
+ </style>
@@ -0,0 +1,8 @@
1
+ import { type Server } from '@myko/core';
2
+ interface Props {
3
+ server: Server;
4
+ isClientServer?: boolean;
5
+ }
6
+ declare const ServerView: import("svelte").Component<Props, {}, "">;
7
+ type ServerView = ReturnType<typeof ServerView>;
8
+ export default ServerView;
@@ -0,0 +1,11 @@
1
+ export type Resolution = {
2
+ milis: number;
3
+ majorFormat: string;
4
+ minorFormat: string;
5
+ };
6
+ export declare const resolutions: {
7
+ label: string;
8
+ majorFormat: string;
9
+ minorFormat: string;
10
+ milis: number;
11
+ }[];
@@ -0,0 +1,129 @@
1
+ import { Duration } from 'luxon';
2
+ export const resolutions = [
3
+ {
4
+ label: '1ms',
5
+ majorFormat: 'dd MMM HH:mm:ss.SSS',
6
+ minorFormat: '.SSS',
7
+ milis: Duration.fromObject({ milliseconds: 1 }).as('milliseconds')
8
+ },
9
+ {
10
+ label: '5ms',
11
+ majorFormat: 'dd MMM HH:mm:ss.SSS',
12
+ minorFormat: '.SSS',
13
+ milis: Duration.fromObject({ milliseconds: 5 }).as('milliseconds')
14
+ },
15
+ {
16
+ label: '10ms',
17
+ minorFormat: '.SSS',
18
+ majorFormat: 'dd MMM HH:mm:ss.SSS',
19
+ milis: Duration.fromObject({ milliseconds: 10 }).as('milliseconds')
20
+ },
21
+ {
22
+ label: '50ms',
23
+ minorFormat: '.SSS',
24
+ majorFormat: 'dd MMM HH:mm:ss.SSS',
25
+ milis: Duration.fromObject({ milliseconds: 50 }).as('milliseconds')
26
+ },
27
+ {
28
+ label: '100ms',
29
+ majorFormat: 'dd MMM HH:mm:ss.SSS',
30
+ minorFormat: '.SSS',
31
+ milis: Duration.fromObject({ milliseconds: 100 }).as('milliseconds')
32
+ },
33
+ {
34
+ label: '500ms',
35
+ majorFormat: 'dd MMM HH:mm:ss.SSS',
36
+ minorFormat: '.SSS',
37
+ milis: Duration.fromObject({ milliseconds: 500 }).as('milliseconds')
38
+ },
39
+ {
40
+ label: '1s',
41
+ majorFormat: 'dd MMM HH:mm:ss',
42
+ minorFormat: 'ss',
43
+ milis: Duration.fromObject({ seconds: 1 }).as('milliseconds')
44
+ },
45
+ {
46
+ label: '5s',
47
+ majorFormat: 'dd MMM HH:mm:ss',
48
+ minorFormat: 'ss',
49
+ milis: Duration.fromObject({ seconds: 5 }).as('milliseconds')
50
+ },
51
+ {
52
+ label: '10s',
53
+ majorFormat: 'dd MMM HH:mm:ss',
54
+ minorFormat: 'ss',
55
+ milis: Duration.fromObject({ seconds: 10 }).as('milliseconds')
56
+ },
57
+ {
58
+ label: '30s',
59
+ majorFormat: 'dd MMM HH:mm:ss',
60
+ minorFormat: 'ss',
61
+ milis: Duration.fromObject({ seconds: 30 }).as('milliseconds')
62
+ },
63
+ {
64
+ label: '1m',
65
+ majorFormat: 'dd MMM HH:mm:ss',
66
+ minorFormat: 'mm:ss',
67
+ milis: Duration.fromObject({ minutes: 1 }).as('milliseconds')
68
+ },
69
+ {
70
+ label: '5m',
71
+ majorFormat: 'dd MMM HH:mm:ss',
72
+ minorFormat: 'mm:ss',
73
+ milis: Duration.fromObject({ minutes: 5 }).as('milliseconds')
74
+ },
75
+ {
76
+ label: '10m',
77
+ majorFormat: 'dd MMM HH:mm:ss',
78
+ minorFormat: 'mm:ss',
79
+ milis: Duration.fromObject({ minutes: 10 }).as('milliseconds')
80
+ },
81
+ {
82
+ label: '30m',
83
+ majorFormat: 'dd MMM HH:mm:ss',
84
+ minorFormat: 'mm:ss',
85
+ milis: Duration.fromObject({ minutes: 30 }).as('milliseconds')
86
+ },
87
+ {
88
+ label: '1h',
89
+ majorFormat: 'dd MMM HH:mm:ss',
90
+ minorFormat: 'HH:mm',
91
+ milis: Duration.fromObject({ hours: 1 }).as('milliseconds')
92
+ },
93
+ {
94
+ label: '6h',
95
+ majorFormat: 'dd MMM HH:mm:ss',
96
+ minorFormat: 'HH:mm',
97
+ milis: Duration.fromObject({ hours: 6 }).as('milliseconds')
98
+ },
99
+ {
100
+ label: '12h',
101
+ majorFormat: 'dd MMM',
102
+ minorFormat: 'HH:mm',
103
+ milis: Duration.fromObject({ hours: 12 }).as('milliseconds')
104
+ },
105
+ {
106
+ label: '1d',
107
+ majorFormat: 'dd MMM',
108
+ minorFormat: 'dd',
109
+ milis: Duration.fromObject({ days: 1 }).as('milliseconds')
110
+ },
111
+ {
112
+ label: '1w',
113
+ majorFormat: 'dd MMM yyyy',
114
+ minorFormat: 'dd',
115
+ milis: Duration.fromObject({ weeks: 1 }).as('milliseconds')
116
+ },
117
+ {
118
+ label: '1M',
119
+ majorFormat: 'MMM yyyy',
120
+ minorFormat: 'MMM',
121
+ milis: Duration.fromObject({ months: 1 }).as('milliseconds')
122
+ },
123
+ {
124
+ label: '1y',
125
+ majorFormat: 'yyyy',
126
+ minorFormat: 'yyyy',
127
+ milis: Duration.fromObject({ years: 1 }).as('milliseconds')
128
+ }
129
+ ];
@@ -0,0 +1,60 @@
1
+ import { DateTime, type Duration } from 'luxon';
2
+ import { type Resolution } from './resolutions.js';
3
+ import type { WindbackState } from './windback.svelte.js';
4
+ export declare class TransactionsViewState {
5
+ #private;
6
+ readonly windbackState: WindbackState;
7
+ constructor(windbackState: WindbackState);
8
+ get windbackX(): number;
9
+ get windbackFullX(): number;
10
+ registerEvents(events: string[]): void;
11
+ get rightTime(): DateTime;
12
+ set rightTime(_value: DateTime);
13
+ get rightTimeMilis(): number;
14
+ set rightTimeMilis(_value: number);
15
+ get durationMilisPerPx(): number;
16
+ set durationMilisPerPx(_value: number);
17
+ get leftTime(): DateTime;
18
+ set leftTime(_value: DateTime);
19
+ get leftTimeMilis(): number;
20
+ set leftTimeMilis(_value: number);
21
+ get timeRangeMilis(): number;
22
+ set timeRangeMilis(_value: number);
23
+ get milisPerPx(): number;
24
+ set milisPerPx(_value: number);
25
+ set width(value: number);
26
+ get width(): number;
27
+ set timeZero(value: DateTime);
28
+ get timeZero(): DateTime;
29
+ get now(): DateTime;
30
+ set now(_value: DateTime);
31
+ set mouseX(value: number);
32
+ get isOverWindback(): boolean;
33
+ get mouseX(): number;
34
+ get mouseTime(): DateTime;
35
+ set mouseTime(_value: DateTime);
36
+ get mouseTimeRelative(): Duration;
37
+ get allEventTimestamps(): number[];
38
+ set allEventTimestamps(_value: number[]);
39
+ get majorResolution(): Resolution;
40
+ get majorResolutionIndex(): number;
41
+ get majors(): {
42
+ leftPx: number;
43
+ time: number;
44
+ }[];
45
+ get minorResolution(): Resolution;
46
+ get minors(): {
47
+ leftPx: number;
48
+ time: number;
49
+ }[];
50
+ zoomAllTheWayOut(): void;
51
+ zoom(delta: number): void;
52
+ pan(delta: number): void;
53
+ startDragWindback(): void;
54
+ stopDragWindback(): void;
55
+ }
56
+ export declare const TRANSACTIONS_VIEW_STATE: unique symbol;
57
+ export declare const FULL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
58
+ export declare const fromISOMemo: typeof DateTime.fromISO;
59
+ export declare const fromMillisMemo: typeof DateTime.fromMillis;
60
+ export declare const isoToMillisMemo: (isoString: string) => number;