@typed/navigation 0.5.3 → 0.6.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.
Files changed (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/Blocking.js +53 -0
  4. package/dist/cjs/Blocking.js.map +1 -0
  5. package/dist/cjs/Layer.js +27 -0
  6. package/dist/cjs/Layer.js.map +1 -0
  7. package/dist/cjs/Navigation.js +184 -62
  8. package/dist/cjs/Navigation.js.map +1 -1
  9. package/dist/cjs/index.js +36 -17
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/internal/fromWindow.js +376 -0
  12. package/dist/cjs/internal/fromWindow.js.map +1 -0
  13. package/dist/cjs/internal/memory.js +67 -0
  14. package/dist/cjs/internal/memory.js.map +1 -0
  15. package/dist/cjs/internal/shared.js +403 -0
  16. package/dist/cjs/internal/shared.js.map +1 -0
  17. package/dist/dts/Blocking.d.ts +33 -0
  18. package/dist/dts/Blocking.d.ts.map +1 -0
  19. package/dist/dts/Layer.d.ts +44 -0
  20. package/dist/dts/Layer.d.ts.map +1 -0
  21. package/dist/dts/Navigation.d.ts +377 -0
  22. package/dist/dts/Navigation.d.ts.map +1 -0
  23. package/dist/dts/index.d.ts +17 -0
  24. package/dist/dts/index.d.ts.map +1 -0
  25. package/dist/dts/internal/fromWindow.d.ts +12 -0
  26. package/dist/dts/internal/fromWindow.d.ts.map +1 -0
  27. package/dist/dts/internal/memory.d.ts +6 -0
  28. package/dist/dts/internal/memory.d.ts.map +1 -0
  29. package/dist/dts/internal/shared.d.ts +139 -0
  30. package/dist/dts/internal/shared.d.ts.map +1 -0
  31. package/dist/esm/Blocking.js +39 -0
  32. package/dist/esm/Blocking.js.map +1 -0
  33. package/dist/esm/Layer.js +18 -0
  34. package/dist/esm/Layer.js.map +1 -0
  35. package/dist/esm/Navigation.js +166 -0
  36. package/dist/esm/Navigation.js.map +1 -0
  37. package/dist/esm/index.js +17 -0
  38. package/dist/esm/index.js.map +1 -0
  39. package/dist/esm/internal/fromWindow.js +273 -0
  40. package/dist/esm/internal/fromWindow.js.map +1 -0
  41. package/dist/esm/internal/memory.js +54 -0
  42. package/dist/esm/internal/memory.js.map +1 -0
  43. package/dist/esm/internal/shared.js +336 -0
  44. package/dist/esm/internal/shared.js.map +1 -0
  45. package/dist/esm/package.json +4 -0
  46. package/package.json +52 -32
  47. package/src/Blocking.ts +102 -0
  48. package/src/Layer.ts +53 -0
  49. package/src/Navigation.ts +342 -159
  50. package/src/index.ts +17 -3
  51. package/src/internal/fromWindow.ts +421 -0
  52. package/src/internal/memory.ts +79 -0
  53. package/src/internal/shared.ts +514 -0
  54. package/dist/DOM.d.ts +0 -12
  55. package/dist/DOM.d.ts.map +0 -1
  56. package/dist/DOM.js +0 -87
  57. package/dist/DOM.js.map +0 -1
  58. package/dist/Memory.d.ts +0 -10
  59. package/dist/Memory.d.ts.map +0 -1
  60. package/dist/Memory.js +0 -55
  61. package/dist/Memory.js.map +0 -1
  62. package/dist/Navigation.d.ts +0 -116
  63. package/dist/Navigation.d.ts.map +0 -1
  64. package/dist/Navigation.js +0 -36
  65. package/dist/Navigation.js.map +0 -1
  66. package/dist/_makeServerWindow.d.ts +0 -16
  67. package/dist/_makeServerWindow.d.ts.map +0 -1
  68. package/dist/_makeServerWindow.js +0 -9
  69. package/dist/_makeServerWindow.js.map +0 -1
  70. package/dist/cjs/DOM.d.ts +0 -12
  71. package/dist/cjs/DOM.d.ts.map +0 -1
  72. package/dist/cjs/DOM.js +0 -116
  73. package/dist/cjs/DOM.js.map +0 -1
  74. package/dist/cjs/Memory.d.ts +0 -10
  75. package/dist/cjs/Memory.d.ts.map +0 -1
  76. package/dist/cjs/Memory.js +0 -82
  77. package/dist/cjs/Memory.js.map +0 -1
  78. package/dist/cjs/Navigation.d.ts +0 -116
  79. package/dist/cjs/Navigation.d.ts.map +0 -1
  80. package/dist/cjs/_makeServerWindow.d.ts +0 -16
  81. package/dist/cjs/_makeServerWindow.d.ts.map +0 -1
  82. package/dist/cjs/_makeServerWindow.js +0 -36
  83. package/dist/cjs/_makeServerWindow.js.map +0 -1
  84. package/dist/cjs/constant.d.ts +0 -2
  85. package/dist/cjs/constant.d.ts.map +0 -1
  86. package/dist/cjs/constant.js +0 -30
  87. package/dist/cjs/constant.js.map +0 -1
  88. package/dist/cjs/dom-intent.d.ts +0 -28
  89. package/dist/cjs/dom-intent.d.ts.map +0 -1
  90. package/dist/cjs/dom-intent.js +0 -172
  91. package/dist/cjs/dom-intent.js.map +0 -1
  92. package/dist/cjs/history.d.ts +0 -31
  93. package/dist/cjs/history.d.ts.map +0 -1
  94. package/dist/cjs/history.js +0 -131
  95. package/dist/cjs/history.js.map +0 -1
  96. package/dist/cjs/index.d.ts +0 -4
  97. package/dist/cjs/index.d.ts.map +0 -1
  98. package/dist/cjs/json.d.ts +0 -13
  99. package/dist/cjs/json.d.ts.map +0 -1
  100. package/dist/cjs/json.js +0 -24
  101. package/dist/cjs/json.js.map +0 -1
  102. package/dist/cjs/memory-intent.d.ts +0 -27
  103. package/dist/cjs/memory-intent.d.ts.map +0 -1
  104. package/dist/cjs/memory-intent.js +0 -156
  105. package/dist/cjs/memory-intent.js.map +0 -1
  106. package/dist/cjs/model.d.ts +0 -22
  107. package/dist/cjs/model.d.ts.map +0 -1
  108. package/dist/cjs/model.js +0 -48
  109. package/dist/cjs/model.js.map +0 -1
  110. package/dist/cjs/shared-intent.d.ts +0 -14
  111. package/dist/cjs/shared-intent.d.ts.map +0 -1
  112. package/dist/cjs/shared-intent.js +0 -82
  113. package/dist/cjs/shared-intent.js.map +0 -1
  114. package/dist/cjs/storage.d.ts +0 -19
  115. package/dist/cjs/storage.d.ts.map +0 -1
  116. package/dist/cjs/storage.js +0 -101
  117. package/dist/cjs/storage.js.map +0 -1
  118. package/dist/cjs/util.d.ts +0 -5
  119. package/dist/cjs/util.d.ts.map +0 -1
  120. package/dist/cjs/util.js +0 -39
  121. package/dist/cjs/util.js.map +0 -1
  122. package/dist/constant.d.ts +0 -2
  123. package/dist/constant.d.ts.map +0 -1
  124. package/dist/constant.js +0 -4
  125. package/dist/constant.js.map +0 -1
  126. package/dist/dom-intent.d.ts +0 -28
  127. package/dist/dom-intent.d.ts.map +0 -1
  128. package/dist/dom-intent.js +0 -140
  129. package/dist/dom-intent.js.map +0 -1
  130. package/dist/history.d.ts +0 -31
  131. package/dist/history.d.ts.map +0 -1
  132. package/dist/history.js +0 -104
  133. package/dist/history.js.map +0 -1
  134. package/dist/index.d.ts +0 -4
  135. package/dist/index.d.ts.map +0 -1
  136. package/dist/index.js +0 -4
  137. package/dist/index.js.map +0 -1
  138. package/dist/intent.d.ts +0 -31
  139. package/dist/intent.d.ts.map +0 -1
  140. package/dist/intent.js +0 -157
  141. package/dist/intent.js.map +0 -1
  142. package/dist/json.d.ts +0 -13
  143. package/dist/json.d.ts.map +0 -1
  144. package/dist/json.js +0 -17
  145. package/dist/json.js.map +0 -1
  146. package/dist/memory-intent.d.ts +0 -27
  147. package/dist/memory-intent.d.ts.map +0 -1
  148. package/dist/memory-intent.js +0 -124
  149. package/dist/memory-intent.js.map +0 -1
  150. package/dist/model.d.ts +0 -22
  151. package/dist/model.d.ts.map +0 -1
  152. package/dist/model.js +0 -21
  153. package/dist/model.js.map +0 -1
  154. package/dist/shared-intent.d.ts +0 -14
  155. package/dist/shared-intent.d.ts.map +0 -1
  156. package/dist/shared-intent.js +0 -51
  157. package/dist/shared-intent.js.map +0 -1
  158. package/dist/storage.d.ts +0 -19
  159. package/dist/storage.d.ts.map +0 -1
  160. package/dist/storage.js +0 -73
  161. package/dist/storage.js.map +0 -1
  162. package/dist/tsconfig.cjs.build.tsbuildinfo +0 -1
  163. package/dist/util.d.ts +0 -5
  164. package/dist/util.d.ts.map +0 -1
  165. package/dist/util.js +0 -12
  166. package/dist/util.js.map +0 -1
  167. package/eslintrc.json +0 -3
  168. package/project.json +0 -46
  169. package/src/DOM.test.ts +0 -699
  170. package/src/DOM.ts +0 -163
  171. package/src/Memory.test.ts +0 -464
  172. package/src/Memory.ts +0 -102
  173. package/src/_makeServerWindow.ts +0 -28
  174. package/src/dom-intent.ts +0 -268
  175. package/src/history.ts +0 -165
  176. package/src/json.ts +0 -31
  177. package/src/memory-intent.ts +0 -224
  178. package/src/model.ts +0 -54
  179. package/src/shared-intent.ts +0 -117
  180. package/src/storage.ts +0 -101
  181. package/src/util.ts +0 -20
  182. package/tsconfig.build.json +0 -4
  183. package/tsconfig.build.tsbuildinfo +0 -1
  184. package/tsconfig.cjs.build.json +0 -22
  185. package/tsconfig.json +0 -27
  186. package/vite.config.mjs +0 -3
@@ -1,140 +0,0 @@
1
- import * as Effect from '@effect/io/Effect';
2
- import { Location } from '@typed/dom';
3
- import { NavigationType, } from './Navigation.js';
4
- import { makeGoTo, makeNotify, makeNotifyEnd, makeOnNavigation, makeOnNavigationEnd, } from './shared-intent.js';
5
- import { saveToStorage } from './storage.js';
6
- import { createKey, getUrl } from './util.js';
7
- // Roughly the number of History entries in a browser anyways
8
- const DEFAULT_MAX_ENTRIES = 50;
9
- export const makeIntent = (model, base, history, options) => {
10
- const maxEntries = Math.abs(options.maxEntries ?? DEFAULT_MAX_ENTRIES);
11
- const notify = makeNotify(model);
12
- const notifyEnd = makeNotifyEnd(model);
13
- const save = makeSave(model);
14
- const go = makeGo(model, notify, notifyEnd, save, history);
15
- const replace = makeReplace(model, notify, notifyEnd, save, history, base);
16
- const push = makePush(model, notify, notifyEnd, save, base, history, maxEntries);
17
- return {
18
- back: (skipHistory) => go(-1, skipHistory),
19
- forward: (skipHistory) => go(1, skipHistory),
20
- push,
21
- replace,
22
- navigate: (url, options = {}) => options.history === 'replace' ? replace(url, options) : push(url, options),
23
- notify,
24
- go: go,
25
- goTo: makeGoTo(model, go),
26
- reload: makeReload(model, notify, save),
27
- onNavigation: makeOnNavigation(model),
28
- onNavigationEnd: makeOnNavigationEnd(model),
29
- };
30
- };
31
- export const makeSave = (model) => (event) => Effect.gen(function* ($) {
32
- const events = yield* $(model.events);
33
- const index = yield* $(model.index);
34
- // Save to storage
35
- yield* $(saveToStorage(events, index));
36
- // Update current entry
37
- yield* $(model.currentEntry.set(event.destination));
38
- // Update canGoBack
39
- yield* $(model.canGoBack.set(index > 0));
40
- // Update canGoForward
41
- yield* $(model.canGoForward.set(index < events.length - 1));
42
- });
43
- export const makeReload = (model, notify, save) => Effect.gen(function* ($) {
44
- const i = yield* $(model.index.get);
45
- const e = yield* $(model.events);
46
- const event = e[i];
47
- const reloadEvent = { ...event, navigationType: NavigationType.Reload };
48
- yield* $(notify(reloadEvent));
49
- yield* $(save(reloadEvent));
50
- const location = yield* $(Location);
51
- location.reload();
52
- return event.destination;
53
- });
54
- export const makeReplace = (model, notify, notifyEnd, save, history, base) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
55
- const location = yield* $(Location);
56
- const entry = yield* $(model.currentEntry.get);
57
- const destination = {
58
- key: entry.key,
59
- url: getUrl(url, base, location.origin),
60
- state: options.state,
61
- };
62
- const event = {
63
- destination,
64
- hashChange: entry.url.hash !== destination.url.hash,
65
- navigationType: NavigationType.Replace,
66
- };
67
- yield* $(notify(event));
68
- if (!skipHistory) {
69
- history.replaceState({ key: destination.key, state: options.state }, '', url);
70
- }
71
- const currentIndex = yield* $(model.index);
72
- yield* $(model.events.update((entries) => {
73
- const updated = entries.slice(0);
74
- updated[currentIndex] = event;
75
- return updated;
76
- }));
77
- yield* $(save(event));
78
- yield* $(notifyEnd(event));
79
- return destination;
80
- });
81
- export const makePush = (model, notify, notifyEnd, save, base, history, maxEntries) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
82
- const location = yield* $(Location);
83
- const entry = yield* $(model.currentEntry.get);
84
- const destinationUrl = getUrl(url, base, location.origin);
85
- if (entry.url.href === destinationUrl.href) {
86
- return entry;
87
- }
88
- const destination = {
89
- key: yield* $(createKey),
90
- url: destinationUrl,
91
- state: options.state,
92
- };
93
- const event = {
94
- destination,
95
- hashChange: entry.url.hash !== destination.url.hash,
96
- navigationType: NavigationType.Push,
97
- };
98
- // Notify event handlers
99
- yield* $(notify(event));
100
- if (!skipHistory) {
101
- history.pushState({ key: destination.key, state: options.state }, '', url);
102
- }
103
- const currentIndex = yield* $(model.index);
104
- // Remove all entries after the current index
105
- // and add the new destination to the end
106
- yield* $(model.events.update((entries) => {
107
- const updated = entries.slice(0, currentIndex + 1);
108
- updated.push(event);
109
- return updated.slice(-maxEntries);
110
- }));
111
- // Update the index to the new destination
112
- yield* $(model.index.update((i) => Math.min(i + 1, maxEntries)));
113
- yield* $(save(event));
114
- yield* $(notifyEnd(event));
115
- return destination;
116
- });
117
- export const makeGo = (model, notify, notifyEnd, save, history) => (delta, skipHistory = false) => Effect.gen(function* ($) {
118
- const currentEntries = yield* $(model.events);
119
- const totalEntries = currentEntries.length;
120
- const currentIndex = yield* $(model.index);
121
- // Nothing to do here
122
- if (delta === 0)
123
- return currentEntries[currentIndex].destination;
124
- const nextIndex = delta > 0
125
- ? Math.min(currentIndex + delta, totalEntries - 1)
126
- : Math.min(Math.max(currentIndex + delta, 0));
127
- const nextEntry = currentEntries[nextIndex];
128
- yield* $(notify({
129
- ...nextEntry,
130
- navigationType: nextIndex > currentIndex ? NavigationType.Forward : NavigationType.Back,
131
- }));
132
- if (!skipHistory) {
133
- history.go(delta);
134
- }
135
- yield* $(model.index.set(nextIndex));
136
- yield* $(save(nextEntry));
137
- yield* $(notifyEnd(nextEntry));
138
- return nextEntry.destination;
139
- });
140
- //# sourceMappingURL=dom-intent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-intent.js","sourceRoot":"","sources":["../src/dom-intent.ts"],"names":[],"mappings":"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"}
package/dist/history.d.ts DELETED
@@ -1,31 +0,0 @@
1
- import * as Cause from '@effect/io/Cause';
2
- import * as Effect from '@effect/io/Effect';
3
- import * as Scope from '@effect/io/Scope';
4
- import { History } from '@typed/dom';
5
- import * as Fx from '@typed/fx';
6
- import { Destination, NavigationError } from './Navigation.js';
7
- import { DomIntent } from './dom-intent.js';
8
- export type HistoryEvent = PushStateEvent | ReplaceStateEvent | GoEvent | BackEvent | ForwardEvent;
9
- export interface PushStateEvent {
10
- readonly _tag: 'PushState';
11
- readonly state: unknown;
12
- readonly url: string;
13
- }
14
- export interface ReplaceStateEvent {
15
- readonly _tag: 'ReplaceState';
16
- readonly state: unknown;
17
- readonly url: string;
18
- }
19
- export interface GoEvent {
20
- readonly _tag: 'Go';
21
- readonly delta: number;
22
- }
23
- export interface BackEvent {
24
- readonly _tag: 'Back';
25
- }
26
- export interface ForwardEvent {
27
- readonly _tag: 'Forward';
28
- }
29
- export declare const patchHistory: Effect.Effect<History | Scope.Scope, never, readonly [History, Fx.Subject<never, HistoryEvent>]>;
30
- export declare function onHistoryEvent(event: HistoryEvent, intent: DomIntent): Effect.Effect<History | Location | Storage, Cause.NoSuchElementException | NavigationError, Destination>;
31
- //# sourceMappingURL=history.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAA;AAElG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CACtC,OAAO,GAAG,KAAK,CAAC,KAAK,EACrB,KAAK,EACL,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CA2CnD,CAAA;AA0DF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,SAAS,GAChB,MAAM,CAAC,MAAM,CACd,OAAO,GAAG,QAAQ,GAAG,OAAO,EAC5B,KAAK,CAAC,sBAAsB,GAAG,eAAe,EAC9C,WAAW,CACZ,CAeA"}
package/dist/history.js DELETED
@@ -1,104 +0,0 @@
1
- import * as Effect from '@effect/io/Effect';
2
- import * as Fiber from '@effect/io/Fiber';
3
- import * as Runtime from '@effect/io/Runtime';
4
- import { History } from '@typed/dom';
5
- import * as Fx from '@typed/fx';
6
- export const patchHistory = Effect.gen(function* ($) {
7
- const history = yield* $(History);
8
- const stateDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(history), 'state');
9
- // Create a clone that always operates on the original history
10
- const clone = {
11
- get length() {
12
- return history.length;
13
- },
14
- get scrollRestoration() {
15
- return history.scrollRestoration;
16
- },
17
- set scrollRestoration(value) {
18
- history.scrollRestoration = value;
19
- },
20
- get state() {
21
- const state = stateDescriptor?.get?.call(history);
22
- if (state && state.key && state.state)
23
- return state.state;
24
- return state;
25
- },
26
- back: history.back.bind(history),
27
- forward: history.forward.bind(history),
28
- go: history.go.bind(history),
29
- pushState: history.pushState.bind(history),
30
- replaceState: history.replaceState.bind(history),
31
- };
32
- const scope = yield* $(Effect.scope);
33
- const historyEvents = Fx.makeSubject();
34
- const runtime = yield* $(Effect.runtime());
35
- const runFork = Runtime.runFork(runtime);
36
- const cleanup = patchHistory_(history, (event) => runFork(Effect.flatMap(Effect.forkIn(historyEvents.event(event), scope), Fiber.join)));
37
- // unpatch history upon finalization
38
- yield* $(Effect.addFinalizer(() => Effect.sync(cleanup)));
39
- return [clone, historyEvents];
40
- });
41
- function patchHistory_(history, sendEvent) {
42
- const pushState = history.pushState;
43
- const replaceState = history.replaceState;
44
- const go = history.go;
45
- const back = history.back;
46
- const forward = history.forward;
47
- history.pushState = function (state, _, url) {
48
- if (url)
49
- sendEvent({ _tag: 'PushState', state, url: url.toString() });
50
- };
51
- history.replaceState = function (state, _, url) {
52
- if (url)
53
- sendEvent({ _tag: 'ReplaceState', state, url: url.toString() });
54
- };
55
- history.go = function (delta) {
56
- if (!delta)
57
- return;
58
- sendEvent({ _tag: 'Go', delta });
59
- };
60
- history.back = function () {
61
- sendEvent({ _tag: 'Back' });
62
- };
63
- history.forward = function () {
64
- sendEvent({ _tag: 'Forward' });
65
- };
66
- const stateDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(history), 'state');
67
- // Override state to always return the original state
68
- Object.defineProperty(history, 'state', {
69
- get() {
70
- const state = stateDescriptor?.get?.call(history);
71
- if (state && state.key && state.state)
72
- return state.state;
73
- return state;
74
- },
75
- });
76
- // Reset history to original state
77
- return () => {
78
- history.pushState = pushState;
79
- history.replaceState = replaceState;
80
- history.go = go;
81
- history.back = back;
82
- history.forward = forward;
83
- if (stateDescriptor) {
84
- Object.defineProperty(history, 'state', stateDescriptor);
85
- }
86
- };
87
- }
88
- export function onHistoryEvent(event, intent) {
89
- return Effect.gen(function* ($) {
90
- switch (event._tag) {
91
- case 'PushState':
92
- return yield* $(intent.push(event.url, { state: event.state }, true));
93
- case 'ReplaceState':
94
- return yield* $(intent.replace(event.url, { state: event.state }, true));
95
- case 'Back':
96
- return yield* $(intent.back(true));
97
- case 'Forward':
98
- return yield* $(intent.forward(true));
99
- case 'Go':
100
- return yield* $(intent.go(event.delta, true));
101
- }
102
- });
103
- }
104
- //# sourceMappingURL=history.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './Navigation.js';
2
- export * from './DOM.js';
3
- export * from './Memory.js';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
package/dist/index.js DELETED
@@ -1,4 +0,0 @@
1
- export * from './Navigation.js';
2
- export * from './DOM.js';
3
- export * from './Memory.js';
4
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
package/dist/intent.d.ts DELETED
@@ -1,31 +0,0 @@
1
- import * as Option from '@effect/data/Option';
2
- import * as Effect from '@effect/io/Effect';
3
- import * as Scope from '@effect/io/Scope';
4
- import { History, Location } from '@typed/dom';
5
- import type { DomNavigationOptions } from './DOM.js';
6
- import { Destination, NavigateOptions, NavigationError, NavigationEvent } from './Navigation.js';
7
- import { Model } from './model.js';
8
- export declare function makeIntent(model: Model, options: DomNavigationOptions): {
9
- readonly back: (skipHistory: boolean) => Effect.Effect<import("@typed/dom").Storage | History, NavigationError, Destination>;
10
- readonly forward: (skipHistory: boolean) => Effect.Effect<import("@typed/dom").Storage | History, NavigationError, Destination>;
11
- readonly push: (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<import("@typed/dom").Storage | Location | History, NavigationError, Destination>;
12
- readonly replace: (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<import("@typed/dom").Storage | Location | History, NavigationError, Destination>;
13
- readonly navigate: (url: string, options?: NavigateOptions) => Effect.Effect<import("@typed/dom").Storage | Location | History, NavigationError, Destination>;
14
- readonly go: (delta: number, skipHistory?: boolean) => Effect.Effect<import("@typed/dom").Storage | History, NavigationError, Destination>;
15
- readonly goTo: (key: string) => Effect.Effect<import("@typed/dom").Storage | History, NavigationError, Option.None<Destination> | Option.Some<Destination>>;
16
- readonly reload: Effect.Effect<import("@typed/dom").Storage | Location, NavigationError, Destination>;
17
- readonly onNavigation: <R>(handler: (event: NavigationEvent) => Effect.Effect<R, NavigationError, unknown>) => Effect.Effect<Scope.Scope | R, never, void>;
18
- };
19
- export type Intent = ReturnType<typeof makeIntent>;
20
- type Notify = ReturnType<typeof makeNotify>;
21
- type Save = ReturnType<typeof makeSave>;
22
- export declare const makeNotify: (model: Model) => (event: NavigationEvent) => Effect.Effect<never, NavigationError, void>;
23
- export declare const makeSave: (model: Model) => (event: NavigationEvent) => Effect.Effect<import("@typed/dom").Storage, never, void>;
24
- export declare const makeOnNavigation: ({ eventHandlers }: Model) => <R>(handler: (event: NavigationEvent) => Effect.Effect<R, NavigationError, unknown>) => Effect.Effect<Scope.Scope | R, never, void>;
25
- export declare const makeReload: (model: Model, notify: Notify, save: Save) => Effect.Effect<import("@typed/dom").Storage | Location, NavigationError, Destination>;
26
- export declare const makeReplace: (model: Model, notify: Notify, save: Save) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<import("@typed/dom").Storage | Location | History, NavigationError, Destination>;
27
- export declare const makePush: (model: Model, notify: Notify, save: Save, maxEntries: number) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<import("@typed/dom").Storage | Location | History, NavigationError, Destination>;
28
- export declare const makeGo: (model: Model, notify: Notify, save: Save) => (delta: number, skipHistory?: boolean) => Effect.Effect<import("@typed/dom").Storage | History, NavigationError, Destination>;
29
- export declare const makeGoTo: (model: Model, go: ReturnType<typeof makeGo>) => (key: string) => Effect.Effect<import("@typed/dom").Storage | History, NavigationError, Option.None<Destination> | Option.Some<Destination>>;
30
- export {};
31
- //# sourceMappingURL=intent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;iCAS9C,OAAO;oCACJ,OAAO;;;6BAGd,MAAM,YAAW,eAAe;;;;;EAOnD;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAElD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAC3C,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAA;AAGvC,eAAO,MAAM,UAAU,UAAW,KAAK,aAAa,eAAe,gDAK/D,CAAA;AAEJ,eAAO,MAAM,QAAQ,UAAW,KAAK,aAAa,eAAe,6DAa7D,CAAA;AAEJ,eAAO,MAAM,gBAAgB,sBACP,KAAK,0BAEN,eAAe,+FAY/B,CAAA;AAEL,eAAO,MAAM,UAAU,UAAW,KAAK,UAAU,MAAM,QAAQ,IAAI,yFAe/D,CAAA;AAEJ,eAAO,MAAM,WAAW,UACd,KAAK,UAAU,MAAM,QAAQ,IAAI,WACnC,MAAM,YAAW,eAAe,0HAyClC,CAAA;AAEN,eAAO,MAAM,QAAQ,UACX,KAAK,UAAU,MAAM,QAAQ,IAAI,cAAc,MAAM,WACvD,MAAM,YAAW,eAAe,0HA+ClC,CAAA;AAEN,eAAO,MAAM,MAAM,UACT,KAAK,UAAU,MAAM,QAAQ,IAAI,aACjC,MAAM,+GAiCV,CAAA;AAEN,eAAO,MAAM,QAAQ,UAAW,KAAK,MAAM,WAAW,aAAa,CAAC,WAAW,MAAM,gIAejF,CAAA"}
package/dist/intent.js DELETED
@@ -1,157 +0,0 @@
1
- import * as Option from '@effect/data/Option';
2
- import * as Effect from '@effect/io/Effect';
3
- import { History, Location } from '@typed/dom';
4
- import { NavigationType, } from './Navigation.js';
5
- import { ServiceId } from './constant.js';
6
- import { encodeEvent } from './json.js';
7
- import { saveToStorage } from './storage.js';
8
- import { createKey, getUrl } from './util.js';
9
- // Roughly the number of History entries in a browser anyways
10
- const DEFAULT_MAX_ENTRIES = 50;
11
- export function makeIntent(model, options) {
12
- const maxEntries = Math.abs(options.maxEntries ?? DEFAULT_MAX_ENTRIES);
13
- const notify = makeNotify(model);
14
- const save = makeSave(model);
15
- const go = makeGo(model, notify, save);
16
- const replace = makeReplace(model, notify, save);
17
- const push = makePush(model, notify, save, maxEntries);
18
- return {
19
- back: (skipHistory) => go(-1, skipHistory),
20
- forward: (skipHistory) => go(1, skipHistory),
21
- push,
22
- replace,
23
- navigate: (url, options = {}) => options.history === 'replace' ? replace(url, options) : push(url, options),
24
- go: go,
25
- goTo: makeGoTo(model, go),
26
- reload: makeReload(model, notify, save),
27
- onNavigation: makeOnNavigation(model),
28
- };
29
- }
30
- // Anytime there are changes to the model, we need to notify all event handlers
31
- export const makeNotify = (model) => (event) => Effect.gen(function* ($) {
32
- // Notify event handlers
33
- if (model.eventHandlers.size > 0)
34
- yield* $(Effect.forEachDiscard(model.eventHandlers, (handler) => handler(event)));
35
- });
36
- export const makeSave = (model) => (event) => Effect.gen(function* ($) {
37
- const events = yield* $(model.events);
38
- const index = yield* $(model.index);
39
- // Save to storage
40
- yield* $(saveToStorage(events, index));
41
- // Update current entry
42
- yield* $(model.currentEntry.set(event.destination));
43
- // Update canGoForward
44
- yield* $(model.canGoForward.set(index < events.length - 1));
45
- });
46
- export const makeOnNavigation = ({ eventHandlers }) => (handler) => Effect.uninterruptibleMask((restore) => Effect.gen(function* ($) {
47
- const context = yield* $(Effect.context());
48
- const handler_ = (event) => restore(Effect.provideContext(handler(event), context));
49
- eventHandlers.add(handler_);
50
- yield* $(Effect.addFinalizer(() => Effect.sync(() => eventHandlers.delete(handler_))));
51
- }));
52
- export const makeReload = (model, notify, save) => Effect.gen(function* ($) {
53
- const i = yield* $(model.index.get);
54
- const e = yield* $(model.events);
55
- const event = e[i];
56
- const reloadEvent = { ...event, navigationType: NavigationType.Reload };
57
- yield* $(notify(reloadEvent));
58
- yield* $(save(reloadEvent));
59
- const location = yield* $(Location);
60
- location.reload();
61
- return event.destination;
62
- });
63
- export const makeReplace = (model, notify, save) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
64
- const location = yield* $(Location);
65
- const entry = yield* $(model.currentEntry.get);
66
- const destination = {
67
- key: entry.key,
68
- url: getUrl(url, location.origin),
69
- state: options.state,
70
- };
71
- const event = {
72
- destination,
73
- hashChange: entry.url.hash !== destination.url.hash,
74
- navigationType: NavigationType.Replace,
75
- };
76
- yield* $(notify(event));
77
- if (!skipHistory) {
78
- const history = yield* $(History);
79
- history.replaceState.call(ServiceId, { state: options.state, event: encodeEvent(event) }, '', url);
80
- }
81
- const currentIndex = yield* $(model.index);
82
- yield* $(model.events.update((entries) => {
83
- const updated = entries.slice(0);
84
- updated[currentIndex] = event;
85
- return updated;
86
- }));
87
- yield* $(save(event));
88
- return destination;
89
- });
90
- export const makePush = (model, notify, save, maxEntries) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
91
- const location = yield* $(Location);
92
- const entry = yield* $(model.currentEntry.get);
93
- const destination = {
94
- key: yield* $(createKey),
95
- url: getUrl(url, location.origin),
96
- state: options.state,
97
- };
98
- const event = {
99
- destination,
100
- hashChange: entry.url.hash !== destination.url.hash,
101
- navigationType: NavigationType.Push,
102
- };
103
- // Notify event handlers
104
- yield* $(notify(event));
105
- if (!skipHistory) {
106
- const history = yield* $(History);
107
- history.pushState.call(ServiceId, { state: options.state, event: encodeEvent(event) }, '', url);
108
- }
109
- const currentIndex = yield* $(model.index);
110
- // Remove all entries after the current index
111
- // and add the new destination to the end
112
- yield* $(model.events.update((entries) => {
113
- const updated = entries.slice(0, currentIndex + 1);
114
- updated.push(event);
115
- return updated.slice(-maxEntries);
116
- }));
117
- // Update the index to the new destination
118
- yield* $(model.index.update((i) => i + 1));
119
- yield* $(save(event));
120
- return destination;
121
- });
122
- export const makeGo = (model, notify, save) => (delta, skipHistory = false) => Effect.gen(function* ($) {
123
- const currentEntries = yield* $(model.events);
124
- const totalEntries = currentEntries.length;
125
- const currentIndex = yield* $(model.index);
126
- // Nothing to do here
127
- if (delta === 0)
128
- return currentEntries[currentIndex].destination;
129
- const nextIndex = delta > 0
130
- ? Math.min(currentIndex + delta, totalEntries - 1)
131
- : Math.max(currentIndex + delta, 0);
132
- const nextEntry = currentEntries[nextIndex];
133
- yield* $(notify({
134
- ...nextEntry,
135
- navigationType: nextIndex > currentIndex ? NavigationType.Forward : NavigationType.Back,
136
- }));
137
- if (!skipHistory) {
138
- const history = yield* $(History);
139
- history.go.call(ServiceId, delta);
140
- }
141
- yield* $(model.index.set(nextIndex));
142
- yield* $(save(nextEntry));
143
- return nextEntry.destination;
144
- });
145
- export const makeGoTo = (model, go) => (key) => Effect.gen(function* ($) {
146
- const entries = yield* $(model.entries);
147
- const currentIndex = yield* $(model.index);
148
- const nextIndex = entries.findIndex((destination) => destination.key === key);
149
- if (nextIndex === -1)
150
- return Option.none();
151
- const delta = nextIndex - currentIndex;
152
- if (delta !== 0) {
153
- return Option.some(yield* $(go(delta)));
154
- }
155
- return Option.some(entries[nextIndex]);
156
- });
157
- //# sourceMappingURL=intent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"intent.js","sourceRoot":"","sources":["../src/intent.ts"],"names":[],"mappings":"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"}
package/dist/json.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import { Destination, NavigationEvent } from './Navigation.js';
2
- export type NavigationEventJson = {
3
- readonly [K in keyof NavigationEvent]: NavigationEvent[K] extends Destination ? DestinationJson : NavigationEvent[K];
4
- };
5
- type DestinationJson = {
6
- readonly [K in keyof Destination]: Destination[K] extends URL ? string : Destination[K];
7
- };
8
- export declare const decodeDestination: (d: DestinationJson) => Destination;
9
- export declare const decodeNavigationEvent: (event: NavigationEventJson) => NavigationEvent;
10
- export declare const encodeEvent: (event: NavigationEvent) => NavigationEventJson;
11
- export declare const encodeDestination: (destination: Destination) => DestinationJson;
12
- export {};
13
- //# sourceMappingURL=json.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,CAAC,IAAI,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,WAAW,GACzE,eAAe,GACf,eAAe,CAAC,CAAC,CAAC;CACvB,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;CACxF,CAAA;AAED,eAAO,MAAM,iBAAiB,MAAO,eAAe,KAAG,WAGrD,CAAA;AAEF,eAAO,MAAM,qBAAqB,UAAW,mBAAmB,KAAG,eAGjE,CAAA;AAEF,eAAO,MAAM,WAAW,UAAW,eAAe,KAAG,mBAGnD,CAAA;AAEF,eAAO,MAAM,iBAAiB,gBAAiB,WAAW,KAAG,eAG3D,CAAA"}
package/dist/json.js DELETED
@@ -1,17 +0,0 @@
1
- export const decodeDestination = (d) => ({
2
- ...d,
3
- url: new URL(d.url),
4
- });
5
- export const decodeNavigationEvent = (event) => ({
6
- ...event,
7
- destination: decodeDestination(event.destination),
8
- });
9
- export const encodeEvent = (event) => ({
10
- ...event,
11
- destination: encodeDestination(event.destination),
12
- });
13
- export const encodeDestination = (destination) => ({
14
- ...destination,
15
- url: destination.url.href,
16
- });
17
- //# sourceMappingURL=json.js.map
package/dist/json.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAkB,EAAe,EAAE,CAAC,CAAC;IACrE,GAAG,CAAC;IACJ,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;CACpB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAA0B,EAAmB,EAAE,CAAC,CAAC;IACrF,GAAG,KAAK;IACR,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;CAClD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAsB,EAAuB,EAAE,CAAC,CAAC;IAC3E,GAAG,KAAK;IACR,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;CAClD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAwB,EAAmB,EAAE,CAAC,CAAC;IAC/E,GAAG,WAAW;IACd,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI;CAC1B,CAAC,CAAA"}
@@ -1,27 +0,0 @@
1
- import { Option } from '@effect/data/Option';
2
- import * as Effect from '@effect/io/Effect';
3
- import type { MemoryNavigationOptions } from './Memory.js';
4
- import { Destination, NavigateOptions, NavigationError, NavigationEvent } from './Navigation.js';
5
- import { Model } from './model.js';
6
- import { Notify, Save, makeOnNavigation, makeOnNavigationEnd } from './shared-intent.js';
7
- export type MemoryIntent = {
8
- readonly back: ReturnType<ReturnType<typeof makeGo>>;
9
- readonly forward: ReturnType<ReturnType<typeof makeGo>>;
10
- readonly push: ReturnType<typeof makePush>;
11
- readonly replace: ReturnType<typeof makeReplace>;
12
- readonly navigate: (url: string, options?: NavigateOptions) => ReturnType<ReturnType<typeof makePush | typeof makeReplace>>;
13
- readonly notify: Notify;
14
- readonly go: ReturnType<typeof makeGo>;
15
- readonly goTo: (key: string) => Effect.Effect<never, NavigationError, Option<Destination>>;
16
- readonly reload: ReturnType<typeof makeReload>;
17
- readonly onNavigation: ReturnType<typeof makeOnNavigation>;
18
- readonly onNavigationEnd: ReturnType<typeof makeOnNavigationEnd>;
19
- };
20
- export declare function makeIntent(model: Model, options: MemoryNavigationOptions): MemoryIntent;
21
- export type Intent = ReturnType<typeof makeIntent>;
22
- export declare const makeSave: (model: Model) => (event: NavigationEvent) => Effect.Effect<never, never, void>;
23
- export declare const makeReload: (model: Model, notify: Notify, save: Save<never>) => Effect.Effect<never, NavigationError, Destination>;
24
- export declare const makeReplace: (model: Model, notify: Notify, save: Save<never>, base: string, origin: string) => (url: string, options?: NavigateOptions) => Effect.Effect<never, NavigationError, Destination>;
25
- export declare const makePush: (model: Model, notify: Notify, save: Save<never>, base: string, origin: string, maxEntries: number) => (url: string, options?: NavigateOptions) => Effect.Effect<never, NavigationError, Destination>;
26
- export declare const makeGo: (model: Model, notify: Notify, save: Save<never>) => (delta: number) => Effect.Effect<never, NavigationError, Destination>;
27
- //# sourceMappingURL=memory-intent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-intent.d.ts","sourceRoot":"","sources":["../src/memory-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EACL,MAAM,EACN,IAAI,EAGJ,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAM3B,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAA;IAEpD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAA;IAEvD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IAEhD,QAAQ,CAAC,QAAQ,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,KACtB,UAAU,CAAC,UAAU,CAAC,OAAO,QAAQ,GAAG,OAAO,WAAW,CAAC,CAAC,CAAA;IAEjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAA;IAEtC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE1F,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IAE9C,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;IAE1D,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;CACjE,CAAA;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAwBvF;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,QAAQ,EAAE,CACrB,KAAK,EAAE,KAAK,KACT,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAc3D,CAAA;AAEN,eAAO,MAAM,UAAU,UAAW,KAAK,UAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,uDAWtE,CAAA;AAEJ,eAAO,MAAM,WAAW,UACd,KAAK,UAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,QAAQ,MAAM,UAAU,MAAM,WACxE,MAAM,YAAW,eAAe,uDA6BlC,CAAA;AAEN,eAAO,MAAM,QAAQ,UAEV,KAAK,UACJ,MAAM,QACR,KAAK,KAAK,CAAC,QACX,MAAM,UACJ,MAAM,cACF,MAAM,WAEd,MAAM,YAAW,eAAe,uDAmClC,CAAA;AAEN,eAAO,MAAM,MAAM,UAAW,KAAK,UAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,aAAa,MAAM,uDA2BrF,CAAA"}