zudoku 0.16.3 → 0.17.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/dist/app/main.d.ts +1 -1
- package/dist/app/main.js +2 -2
- package/dist/app/main.js.map +1 -1
- package/dist/config/validators/validate.d.ts +44 -44
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/authentication/authentication.d.ts +2 -2
- package/dist/lib/authentication/state.d.ts +1 -1
- package/dist/lib/authentication/state.js +5 -3
- package/dist/lib/authentication/state.js.map +1 -1
- package/dist/lib/authentication/use-broadcast/shared.d.ts +48 -0
- package/dist/lib/authentication/use-broadcast/shared.js +243 -0
- package/dist/lib/authentication/use-broadcast/shared.js.map +1 -0
- package/dist/lib/authentication/use-broadcast/useBroadcast.d.ts +24 -0
- package/dist/lib/authentication/use-broadcast/useBroadcast.js +106 -0
- package/dist/lib/authentication/use-broadcast/useBroadcast.js.map +1 -0
- package/dist/lib/components/ClientOnly.d.ts +4 -2
- package/dist/lib/components/ClientOnly.js +1 -1
- package/dist/lib/components/ClientOnly.js.map +1 -1
- package/dist/lib/components/Header.js +3 -1
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/{DevPortal.d.ts → Zudoku.d.ts} +3 -3
- package/dist/lib/components/{DevPortal.js → Zudoku.js} +11 -11
- package/dist/lib/components/Zudoku.js.map +1 -0
- package/dist/lib/components/context/ZudokuContext.d.ts +4 -4
- package/dist/lib/components/context/ZudokuContext.js +1 -1
- package/dist/lib/components/context/ZudokuContext.js.map +1 -1
- package/dist/lib/components/context/ZudokuProvider.d.ts +2 -2
- package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
- package/dist/lib/components/index.d.ts +4 -7
- package/dist/lib/components/index.js +2 -3
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/core/{DevPortalContext.d.ts → ZudokuContext.d.ts} +5 -5
- package/dist/lib/core/{DevPortalContext.js → ZudokuContext.js} +2 -2
- package/dist/lib/core/ZudokuContext.js.map +1 -0
- package/dist/lib/core/plugins.d.ts +12 -12
- package/dist/lib/core/plugins.js.map +1 -1
- package/dist/lib/plugins/api-keys/index.d.ts +9 -9
- package/dist/lib/plugins/api-keys/index.js.map +1 -1
- package/dist/lib/plugins/custom-pages/index.d.ts +2 -2
- package/dist/lib/plugins/custom-pages/index.js.map +1 -1
- package/dist/lib/plugins/markdown/index.d.ts +2 -2
- package/dist/lib/plugins/markdown/index.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +1 -1
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +28 -24
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/index.d.ts +2 -2
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/redirect/index.d.ts +2 -2
- package/dist/lib/plugins/redirect/index.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/index.d.ts +2 -2
- package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
- package/dist/lib/ui/ActionButton.d.ts +3 -1
- package/dist/lib/util/useOnScreen.d.ts +4 -0
- package/dist/lib/util/useOnScreen.js +19 -0
- package/dist/lib/util/useOnScreen.js.map +1 -0
- package/dist/vite/plugin-mdx.d.ts +0 -6
- package/dist/vite/plugin-mdx.js.map +1 -1
- package/lib/{AnchorLink-BbB2q-jx.js → AnchorLink-DYbUOP9U.js} +2 -2
- package/lib/{AnchorLink-BbB2q-jx.js.map → AnchorLink-DYbUOP9U.js.map} +1 -1
- package/lib/{AuthenticationPlugin-C9BHGXlE.js → AuthenticationPlugin-bqGAKfot.js} +3 -3
- package/lib/{AuthenticationPlugin-C9BHGXlE.js.map → AuthenticationPlugin-bqGAKfot.js.map} +1 -1
- package/lib/{ClientOnly-CVN6leDu.js → ClientOnly-E7hGysn1.js} +4 -4
- package/lib/ClientOnly-E7hGysn1.js.map +1 -0
- package/lib/{Markdown-BDcCAWwm.js → Markdown-D6UxMbZm.js} +2 -2
- package/lib/{Markdown-BDcCAWwm.js.map → Markdown-D6UxMbZm.js.map} +1 -1
- package/lib/{MdxPage-DKMH_t0f.js → MdxPage-DRKqyn2b.js} +5 -5
- package/lib/{MdxPage-DKMH_t0f.js.map → MdxPage-DRKqyn2b.js.map} +1 -1
- package/lib/{OperationList-BjppA5yM.js → OperationList-BHUBGM0c.js} +5 -5
- package/lib/{OperationList-BjppA5yM.js.map → OperationList-BHUBGM0c.js.map} +1 -1
- package/lib/{Route-D_djzMv3.js → Route-B0XuN1oC.js} +3 -3
- package/lib/{Route-D_djzMv3.js.map → Route-B0XuN1oC.js.map} +1 -1
- package/lib/{Select-Bagt3Bme.js → Select-DYKDahHt.js} +3 -3
- package/lib/{Select-Bagt3Bme.js.map → Select-DYKDahHt.js.map} +1 -1
- package/lib/{SlotletProvider-Da7eFgd2.js → SlotletProvider-mhjLPG44.js} +4 -4
- package/lib/{SlotletProvider-Da7eFgd2.js.map → SlotletProvider-mhjLPG44.js.map} +1 -1
- package/lib/{hook-sn0zMTkE.js → hook-CjQERPa7.js} +3 -3
- package/lib/{hook-sn0zMTkE.js.map → hook-CjQERPa7.js.map} +1 -1
- package/lib/{index-_gtpPhlu.js → index-BRg5pi5D.js} +1190 -1165
- package/lib/index-BRg5pi5D.js.map +1 -0
- package/lib/{index-CRo94sKK.js → index-DM9hrcCG.js} +4 -4
- package/lib/{index-CRo94sKK.js.map → index-DM9hrcCG.js.map} +1 -1
- package/lib/state-BsPrOUAh.js +252 -0
- package/lib/state-BsPrOUAh.js.map +1 -0
- package/lib/ui/ActionButton.js.map +1 -1
- package/lib/{useExposedProps-ChOIUaS4.js → useExposedProps-BxyHjPNN.js} +2 -2
- package/lib/{useExposedProps-ChOIUaS4.js.map → useExposedProps-BxyHjPNN.js.map} +1 -1
- package/lib/{ZudokuContext-BKXGJTmu.js → utils-DNAltzXc.js} +153 -152
- package/lib/utils-DNAltzXc.js.map +1 -0
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-clerk.js +2 -2
- package/lib/zudoku.auth-openid.js +4 -4
- package/lib/zudoku.components.js +672 -650
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-api-keys.js +5 -5
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +2 -2
- package/lib/zudoku.plugin-custom-pages.js.map +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-markdown.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +5 -5
- package/lib/zudoku.plugin-redirect.js.map +1 -1
- package/lib/zudoku.plugin-search-inkeep.js +1 -1
- package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
- package/package.json +2 -2
- package/src/app/main.tsx +4 -4
- package/src/lib/authentication/authentication.ts +2 -2
- package/src/lib/authentication/state.ts +12 -5
- package/{LICENSE.md → src/lib/authentication/use-broadcast/LICENSE.md} +2 -2
- package/src/lib/authentication/use-broadcast/shared.ts +372 -0
- package/src/lib/authentication/use-broadcast/useBroadcast.ts +146 -0
- package/src/lib/components/ClientOnly.tsx +6 -3
- package/src/lib/components/Header.tsx +26 -20
- package/src/lib/components/Zudoku.tsx +113 -0
- package/src/lib/components/context/ZudokuContext.ts +3 -3
- package/src/lib/components/context/ZudokuProvider.tsx +2 -2
- package/src/lib/components/index.ts +2 -3
- package/src/lib/core/{DevPortalContext.ts → ZudokuContext.ts} +5 -5
- package/src/lib/core/plugins.ts +12 -16
- package/src/lib/plugins/api-keys/index.tsx +9 -9
- package/src/lib/plugins/custom-pages/index.tsx +2 -2
- package/src/lib/plugins/markdown/index.tsx +2 -2
- package/src/lib/plugins/openapi/OperationList.tsx +2 -1
- package/src/lib/plugins/openapi/Sidecar.tsx +65 -51
- package/src/lib/plugins/openapi/index.tsx +2 -4
- package/src/lib/plugins/redirect/index.tsx +2 -2
- package/src/lib/plugins/search-inkeep/index.tsx +2 -2
- package/src/lib/ui/ActionButton.tsx +1 -1
- package/src/lib/util/useOnScreen.ts +32 -0
- package/dist/lib/components/DevPortal.js.map +0 -1
- package/dist/lib/core/DevPortalContext.js.map +0 -1
- package/lib/ClientOnly-CVN6leDu.js.map +0 -1
- package/lib/ZudokuContext-BKXGJTmu.js.map +0 -1
- package/lib/index-_gtpPhlu.js.map +0 -1
- package/lib/state-CsuHT8ZO.js +0 -183
- package/lib/state-CsuHT8ZO.js.map +0 -1
- package/src/lib/components/DevPortal.tsx +0 -111
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// https://github.com/Romainlg29/use-broadcast/
|
|
2
|
+
/**
|
|
3
|
+
* Shared implementation
|
|
4
|
+
* @param f Zustand state creator
|
|
5
|
+
* @param options The options
|
|
6
|
+
*/
|
|
7
|
+
const sharedImpl = (f, options) => (set, get, store) => {
|
|
8
|
+
/**
|
|
9
|
+
* The broadcast channel is not supported in SSR
|
|
10
|
+
*/
|
|
11
|
+
if (typeof window === "undefined" &&
|
|
12
|
+
!(typeof WorkerGlobalScope !== "undefined" &&
|
|
13
|
+
self instanceof WorkerGlobalScope)) {
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
console.warn("BroadcastChannel is not supported in this environment. The store will not be shared.");
|
|
16
|
+
return f(set, get, store);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* If BroadcastChannel is not supported, return the basic store
|
|
20
|
+
*/
|
|
21
|
+
if (typeof BroadcastChannel === "undefined") {
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
|
+
console.warn("BroadcastChannel is not supported in this browser. The store will not be shared.");
|
|
24
|
+
return f(set, get, store);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Is the store synced with the other tabs
|
|
28
|
+
*/
|
|
29
|
+
let isSynced = get() !== undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Is this tab / window the main tab / window
|
|
32
|
+
* When a new tab / window is opened, it will be synced with the main
|
|
33
|
+
*/
|
|
34
|
+
let isMain = false;
|
|
35
|
+
/**
|
|
36
|
+
* The broadcast channel name
|
|
37
|
+
*/
|
|
38
|
+
const name = options?.name ?? f.toString();
|
|
39
|
+
/**
|
|
40
|
+
* The id of the tab / window
|
|
41
|
+
*/
|
|
42
|
+
let id = 0;
|
|
43
|
+
/**
|
|
44
|
+
* Store a list of all the tabs / windows
|
|
45
|
+
* Only for the main tab / window
|
|
46
|
+
*/
|
|
47
|
+
const tabs = [0];
|
|
48
|
+
/**
|
|
49
|
+
* Create the broadcast channel
|
|
50
|
+
*/
|
|
51
|
+
const channel = new BroadcastChannel(name);
|
|
52
|
+
/**
|
|
53
|
+
* Handle the Zustand set function
|
|
54
|
+
* Trigger a postMessage to all the other tabs
|
|
55
|
+
*/
|
|
56
|
+
const onSet = (...args) => {
|
|
57
|
+
/**
|
|
58
|
+
* Get the previous states
|
|
59
|
+
*/
|
|
60
|
+
const previous = get();
|
|
61
|
+
/**
|
|
62
|
+
* Update the states
|
|
63
|
+
*/
|
|
64
|
+
set(...args);
|
|
65
|
+
/**
|
|
66
|
+
* If the stores should not be synced, return.
|
|
67
|
+
*/
|
|
68
|
+
if (options?.unsync) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the fresh states
|
|
73
|
+
*/
|
|
74
|
+
const updated = get();
|
|
75
|
+
/**
|
|
76
|
+
* Get the states that changed
|
|
77
|
+
*/
|
|
78
|
+
const state = Object.entries(updated).reduce((obj, [key, val]) => {
|
|
79
|
+
if (previous[key] !== val) {
|
|
80
|
+
obj = { ...obj, [key]: val };
|
|
81
|
+
}
|
|
82
|
+
return obj;
|
|
83
|
+
}, {});
|
|
84
|
+
/**
|
|
85
|
+
* Send the states to all the other tabs
|
|
86
|
+
*/
|
|
87
|
+
channel.postMessage({ action: "change", state });
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Subscribe to the broadcast channel
|
|
91
|
+
*/
|
|
92
|
+
channel.onmessage = (e) => {
|
|
93
|
+
if (e.data.action === "sync") {
|
|
94
|
+
/**
|
|
95
|
+
* If this tab / window is not the main, return
|
|
96
|
+
*/
|
|
97
|
+
if (!isMain) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Remove all the functions and symbols from the store
|
|
102
|
+
*/
|
|
103
|
+
const state = Object.entries(get()).reduce((obj, [key, val]) => {
|
|
104
|
+
if (typeof val !== "function" && typeof val !== "symbol") {
|
|
105
|
+
obj = { ...obj, [key]: val };
|
|
106
|
+
}
|
|
107
|
+
return obj;
|
|
108
|
+
}, {});
|
|
109
|
+
/**
|
|
110
|
+
* Send the state to the other tabs
|
|
111
|
+
*/
|
|
112
|
+
channel.postMessage({ action: "change", state });
|
|
113
|
+
/**
|
|
114
|
+
* Set the new tab / window id
|
|
115
|
+
*/
|
|
116
|
+
const new_id = tabs[tabs.length - 1] + 1;
|
|
117
|
+
tabs.push(new_id);
|
|
118
|
+
options?.onTabsChange?.(tabs);
|
|
119
|
+
channel.postMessage({ action: "add_new_tab", id: new_id });
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Set an id for the tab / window if it doesn't have one
|
|
124
|
+
*/
|
|
125
|
+
if (e.data.action === "add_new_tab" && !isMain && id === 0) {
|
|
126
|
+
id = e.data.id;
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* On receiving a new state, update the state
|
|
131
|
+
*/
|
|
132
|
+
if (e.data.action === "change") {
|
|
133
|
+
/**
|
|
134
|
+
* Update the state
|
|
135
|
+
*/
|
|
136
|
+
set(e.data.state);
|
|
137
|
+
/**
|
|
138
|
+
* Set the synced attribute
|
|
139
|
+
*/
|
|
140
|
+
isSynced = true;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* On receiving a close message, remove the tab / window id from the list
|
|
144
|
+
*/
|
|
145
|
+
if (e.data.action === "close") {
|
|
146
|
+
if (!isMain) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const index = tabs.indexOf(e.data.id);
|
|
150
|
+
if (index !== -1) {
|
|
151
|
+
tabs.splice(index, 1);
|
|
152
|
+
options?.onTabsChange?.(tabs);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* On receiving a change_main message, change the main tab / window
|
|
157
|
+
*/
|
|
158
|
+
if (e.data.action === "change_main") {
|
|
159
|
+
if (e.data.id === id) {
|
|
160
|
+
isMain = true;
|
|
161
|
+
tabs.splice(0, tabs.length, ...e.data.tabs);
|
|
162
|
+
options?.onBecomeMain?.(id);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Synchronize with the main tab
|
|
168
|
+
*/
|
|
169
|
+
const synchronize = () => {
|
|
170
|
+
channel.postMessage({ action: "sync" });
|
|
171
|
+
/**
|
|
172
|
+
* If isSynced is false after 100ms, this tab is the main tab
|
|
173
|
+
*/
|
|
174
|
+
setTimeout(() => {
|
|
175
|
+
if (!isSynced) {
|
|
176
|
+
isMain = true;
|
|
177
|
+
isSynced = true;
|
|
178
|
+
options?.onBecomeMain?.(id);
|
|
179
|
+
}
|
|
180
|
+
}, options?.mainTimeout ?? 100);
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Handle case when the tab / window is closed
|
|
184
|
+
*/
|
|
185
|
+
const onClose = () => {
|
|
186
|
+
channel.postMessage({ action: "close", id });
|
|
187
|
+
/**
|
|
188
|
+
* If we're closing the main, make the second the new main
|
|
189
|
+
*/
|
|
190
|
+
if (isMain) {
|
|
191
|
+
/**
|
|
192
|
+
* If there is only one tab left, close the channel and return
|
|
193
|
+
*/
|
|
194
|
+
if (tabs.length === 1) {
|
|
195
|
+
/**
|
|
196
|
+
* Clean up
|
|
197
|
+
*/
|
|
198
|
+
channel.close();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const remaining_tabs = tabs.filter((tab) => tab !== id);
|
|
202
|
+
channel.postMessage({
|
|
203
|
+
action: "change_main",
|
|
204
|
+
id: remaining_tabs[0],
|
|
205
|
+
tabs: remaining_tabs,
|
|
206
|
+
});
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Add close event listener
|
|
212
|
+
*/
|
|
213
|
+
if (typeof window !== "undefined") {
|
|
214
|
+
window.addEventListener("beforeunload", onClose);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Synchronize with the main tab
|
|
218
|
+
*/
|
|
219
|
+
if (!isSynced) {
|
|
220
|
+
synchronize();
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Modify and return the Zustand store
|
|
224
|
+
*/
|
|
225
|
+
store.setState = onSet;
|
|
226
|
+
return f(onSet, get, store);
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Shared middleware
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* import { create } from 'zustand';
|
|
233
|
+
* import { shared } from 'use-broadcast-ts';
|
|
234
|
+
*
|
|
235
|
+
* const useStore = create(
|
|
236
|
+
* shared(
|
|
237
|
+
* (set) => ({ count: 0 }),
|
|
238
|
+
* { name: 'my-store' }
|
|
239
|
+
* )
|
|
240
|
+
* );
|
|
241
|
+
*/
|
|
242
|
+
export const shared = sharedImpl;
|
|
243
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/lib/authentication/use-broadcast/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Our hook will return an object with three properties:
|
|
3
|
+
* - send: a function that will send a message to all other tabs
|
|
4
|
+
* - state: the current state of the broadcast
|
|
5
|
+
* - subscribe: a function that will subscribe to the broadcast (Only if options.subscribe is true)
|
|
6
|
+
*/
|
|
7
|
+
export type UseBroadcastReturn<T> = {
|
|
8
|
+
send: (val: T) => void;
|
|
9
|
+
state: T | undefined;
|
|
10
|
+
subscribe: (callback: (e: T) => void) => () => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* The options for the useBroadcast hook
|
|
14
|
+
*/
|
|
15
|
+
export type UseBroadcastOptions = {
|
|
16
|
+
subscribe?: boolean;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param name The name of the broadcast channel
|
|
21
|
+
* @param val The initial value of the broadcast
|
|
22
|
+
* @returns Returns an object with three properties: send, state and subscribe
|
|
23
|
+
*/
|
|
24
|
+
export declare const useBroadcast: <T>(name: string, val?: T, options?: UseBroadcastOptions) => UseBroadcastReturn<T>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// https://github.com/Romainlg29/use-broadcast/
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param name The name of the broadcast channel
|
|
6
|
+
* @param val The initial value of the broadcast
|
|
7
|
+
* @returns Returns an object with three properties: send, state and subscribe
|
|
8
|
+
*/
|
|
9
|
+
export const useBroadcast = (name, val, options) => {
|
|
10
|
+
/**
|
|
11
|
+
* Store the state of the broadcast
|
|
12
|
+
*/
|
|
13
|
+
const [state, setState] = useState(val);
|
|
14
|
+
/**
|
|
15
|
+
* Store the BroadcastChannel instance
|
|
16
|
+
*/
|
|
17
|
+
const channel = useRef(null);
|
|
18
|
+
/**
|
|
19
|
+
* Store the listeners
|
|
20
|
+
*/
|
|
21
|
+
const listeners = useRef([]);
|
|
22
|
+
/**
|
|
23
|
+
* This function send the value to all the other tabs
|
|
24
|
+
* @param val The value to send
|
|
25
|
+
*/
|
|
26
|
+
const send = (val) => {
|
|
27
|
+
if (!channel.current) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Send the value to all the other tabs
|
|
32
|
+
*/
|
|
33
|
+
channel.current.postMessage(val);
|
|
34
|
+
if (!options?.subscribe) {
|
|
35
|
+
setState(val);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Dispatch the event to the listeners
|
|
39
|
+
*/
|
|
40
|
+
listeners.current.forEach((listener) => listener(val));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* This function subscribe to the broadcast
|
|
44
|
+
* @param callback The callback function
|
|
45
|
+
* @returns Returns a function that unsubscribe the callback
|
|
46
|
+
*/
|
|
47
|
+
const subscribe = (callback) => {
|
|
48
|
+
/**
|
|
49
|
+
* Add the callback to the listeners
|
|
50
|
+
*/
|
|
51
|
+
listeners.current.push(callback);
|
|
52
|
+
/**
|
|
53
|
+
* Return a function that unsubscribe the callback
|
|
54
|
+
*/
|
|
55
|
+
return () => listeners.current.splice(listeners.current.indexOf(callback), 1);
|
|
56
|
+
};
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
/**
|
|
59
|
+
* If BroadcastChannel is not supported, we log an error and return
|
|
60
|
+
*/
|
|
61
|
+
if (typeof window === "undefined") {
|
|
62
|
+
// eslint-disable-next-line no-console
|
|
63
|
+
console.error("Window is undefined!");
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (!window.BroadcastChannel) {
|
|
67
|
+
// eslint-disable-next-line no-console
|
|
68
|
+
console.error("BroadcastChannel is not supported!");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* If the channel is null, we create a new one
|
|
73
|
+
*/
|
|
74
|
+
if (!channel.current) {
|
|
75
|
+
channel.current = new BroadcastChannel(name);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Subscribe to the message event
|
|
79
|
+
* @param e The message event
|
|
80
|
+
*/
|
|
81
|
+
channel.current.onmessage = (e) => {
|
|
82
|
+
/**
|
|
83
|
+
* Update the state
|
|
84
|
+
*/
|
|
85
|
+
if (!options?.subscribe) {
|
|
86
|
+
setState(e.data);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Dispatch an event to the listeners
|
|
90
|
+
*/
|
|
91
|
+
listeners.current.forEach((listener) => listener(e.data));
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Cleanup
|
|
95
|
+
*/
|
|
96
|
+
return () => {
|
|
97
|
+
if (!channel.current) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
channel.current.close();
|
|
101
|
+
channel.current = null;
|
|
102
|
+
};
|
|
103
|
+
}, [name, options]);
|
|
104
|
+
return { send, state, subscribe };
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=useBroadcast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBroadcast.js","sourceRoot":"","sources":["../../../../src/lib/authentication/use-broadcast/useBroadcast.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAqBpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACZ,GAAO,EACP,OAA6B,EACN,EAAE;IACzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,GAAG,CAAC,CAAC;IAEvD;;OAEG;IACH,MAAM,OAAO,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAEtD;;OAEG;IACH,MAAM,SAAS,GAAG,MAAM,CAAqB,EAAE,CAAC,CAAC;IAEjD;;;OAGG;IACH,MAAM,IAAI,GAAG,CAAC,GAAM,EAAE,EAAE;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED;;WAEG;QACH,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QAED;;WAEG;QACH,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF;;;;OAIG;IACH,MAAM,SAAS,GAAG,CAAC,QAAwB,EAAE,EAAE;QAC7C;;WAEG;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC;;WAEG;QACH,OAAO,GAAG,EAAE,CACV,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb;;WAEG;QACH,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7B,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED;;WAEG;QACH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED;;;WAGG;QACH,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;YAChC;;eAEG;YACH,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED;;eAEG;YACH,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF;;WAEG;QACH,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -2,6 +2,6 @@ import { useSyncExternalStore } from "react";
|
|
|
2
2
|
const noop = () => () => { };
|
|
3
3
|
export const ClientOnly = (props) => {
|
|
4
4
|
const value = useSyncExternalStore(noop, () => "client", () => "server");
|
|
5
|
-
return value === "client" ? props.children :
|
|
5
|
+
return value === "client" ? props.children : props.fallback;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=ClientOnly.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientOnly.js","sourceRoot":"","sources":["../../../src/lib/components/ClientOnly.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ClientOnly.js","sourceRoot":"","sources":["../../../src/lib/components/ClientOnly.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAG1B,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,oBAAoB,CAChC,IAAI,EACJ,GAAG,EAAE,CAAC,QAAQ,EACd,GAAG,EAAE,CAAC,QAAQ,CACf,CAAC;IAEF,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9D,CAAC,CAAC"}
|
|
@@ -3,12 +3,14 @@ import { MoonStarIcon, SunIcon } from "lucide-react";
|
|
|
3
3
|
import { memo } from "react";
|
|
4
4
|
import { Link } from "react-router-dom";
|
|
5
5
|
import { Button } from "zudoku/ui/Button.js";
|
|
6
|
+
import { Skeleton } from "zudoku/ui/Skeleton.js";
|
|
6
7
|
import { useAuth } from "../authentication/hook.js";
|
|
7
8
|
import { isProfileMenuPlugin } from "../core/plugins.js";
|
|
8
9
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "../ui/DropdownMenu.js";
|
|
9
10
|
import { cn } from "../util/cn.js";
|
|
10
11
|
import { joinPath } from "../util/joinPath.js";
|
|
11
12
|
import { Banner } from "./Banner.js";
|
|
13
|
+
import { ClientOnly } from "./ClientOnly.js";
|
|
12
14
|
import { useTheme } from "./context/ThemeContext.js";
|
|
13
15
|
import { useZudoku } from "./context/ZudokuContext.js";
|
|
14
16
|
import { MobileTopNavigation } from "./MobileTopNavigation.js";
|
|
@@ -35,6 +37,6 @@ export const Header = memo(function HeaderInner() {
|
|
|
35
37
|
? page.logo.src.light
|
|
36
38
|
: joinPath(import.meta.env.BASE_URL, page.logo.src.light), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", isDark && "hidden"), loading: "lazy" }), _jsx("img", { src: /https?:\/\//.test(page.logo.src.dark)
|
|
37
39
|
? page.logo.src.dark
|
|
38
|
-
: joinPath(import.meta.env.BASE_URL, page.logo.src.dark), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", !isDark && "hidden"), loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-[--sidecar-grid-cols] items-center gap-8", children: [_jsx("div", { className: "w-full justify-center hidden lg:flex", children: _jsx(Search, {}) }), _jsx(MobileTopNavigation, {}), _jsxs("div", { className: "hidden lg:flex items-center justify-self-end text-sm gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), isAuthEnabled && !isAuthenticated ? (_jsx(Button, { variant: "ghost", onClick: () => auth.login(), children: "Login" })) : (accountItems.length > 0 && (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.email ? `${profile.email}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsx(DropdownMenuLabel, { children: "My Account" }), _jsx(DropdownMenuSeparator, {}), accountItems] })] }))), _jsx(Button, { variant: "ghost", "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode", className: "p-2.5 -m-2.5 rounded-full", onClick: toggleTheme, children: _jsx(ThemeIcon, { size: 18 }) }), _jsx(Slotlet, { name: "head-navigation-end" })] })] })] }), _jsx(Slotlet, { name: "top-navigation-before" }), _jsx(TopNavigation, {}), _jsx(Slotlet, { name: "top-navigation-after" })] })] }));
|
|
40
|
+
: joinPath(import.meta.env.BASE_URL, page.logo.src.dark), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", !isDark && "hidden"), loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-[--sidecar-grid-cols] items-center gap-8", children: [_jsx("div", { className: "w-full justify-center hidden lg:flex", children: _jsx(Search, {}) }), _jsx(MobileTopNavigation, {}), _jsxs("div", { className: "hidden lg:flex items-center justify-self-end text-sm gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), _jsx(ClientOnly, { fallback: _jsx(Skeleton, { className: "rounded h-5 w-24 mr-4" }), children: isAuthEnabled && !isAuthenticated ? (_jsx(Button, { variant: "ghost", onClick: () => auth.login(), children: "Login" })) : (accountItems.length > 0 && (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.email ? `${profile.email}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsx(DropdownMenuLabel, { children: "My Account" }), _jsx(DropdownMenuSeparator, {}), accountItems] })] }))) }), _jsx(Button, { variant: "ghost", "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode", className: "p-2.5 -m-2.5 rounded-full", onClick: toggleTheme, children: _jsx(ThemeIcon, { size: 18 }) }), _jsx(Slotlet, { name: "head-navigation-end" })] })] })] }), _jsx(Slotlet, { name: "top-navigation-before" }), _jsx(TopNavigation, {}), _jsx(Slotlet, { name: "top-navigation-after" })] })] }));
|
|
39
41
|
});
|
|
40
42
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ZudokuContextOptions } from "../core/
|
|
1
|
+
import { ZudokuContextOptions } from "../core/ZudokuContext.js";
|
|
2
2
|
import "../util/requestIdleCallbackPolyfill.js";
|
|
3
|
-
declare const
|
|
3
|
+
declare const Zudoku: {
|
|
4
4
|
(props: ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
displayName: string;
|
|
6
6
|
};
|
|
7
|
-
export {
|
|
7
|
+
export { Zudoku };
|
|
@@ -5,8 +5,8 @@ import { Helmet } from "@zudoku/react-helmet-async";
|
|
|
5
5
|
import { Fragment, memo, useContext, useEffect, useMemo, useState, } from "react";
|
|
6
6
|
import { ErrorBoundary } from "react-error-boundary";
|
|
7
7
|
import { Outlet, useNavigation } from "react-router-dom";
|
|
8
|
-
import { DevPortalContext, queryClient, } from "../core/DevPortalContext.js";
|
|
9
8
|
import { hasHead, isMdxProviderPlugin } from "../core/plugins.js";
|
|
9
|
+
import { queryClient, ZudokuContext, } from "../core/ZudokuContext.js";
|
|
10
10
|
import { TopLevelError } from "../errors/TopLevelError.js";
|
|
11
11
|
import { StaggeredRenderContext } from "../plugins/openapi/StaggeredRender.js";
|
|
12
12
|
import { MdxComponents } from "../util/MdxComponents.js";
|
|
@@ -16,7 +16,7 @@ import { ThemeProvider } from "./context/ThemeProvider.js";
|
|
|
16
16
|
import { ViewportAnchorProvider } from "./context/ViewportAnchorContext.js";
|
|
17
17
|
import { ZudokuProvider } from "./context/ZudokuProvider.js";
|
|
18
18
|
import { SlotletProvider } from "./SlotletProvider.js";
|
|
19
|
-
const
|
|
19
|
+
const ZudokoInner = memo(({ children, ...props }) => {
|
|
20
20
|
const components = useMemo(() => ({ ...DEFAULT_COMPONENTS, ...props.overrides }), [props.overrides]);
|
|
21
21
|
const mdxComponents = useMemo(() => {
|
|
22
22
|
const componentsFromPlugins = (props.plugins ?? [])
|
|
@@ -38,17 +38,17 @@ const DevPortalInner = ({ children, ...props }) => {
|
|
|
38
38
|
}
|
|
39
39
|
setDidNavigate(true);
|
|
40
40
|
}, [didNavigate, navigation.location]);
|
|
41
|
-
const [
|
|
41
|
+
const [zudokuContext] = useState(() => new ZudokuContext(props));
|
|
42
42
|
const heads = props.plugins
|
|
43
43
|
?.filter(hasHead)
|
|
44
44
|
// eslint-disable-next-line react/no-array-index-key
|
|
45
45
|
.map((plugin, i) => _jsx(Fragment, { children: plugin.getHead?.() }, i));
|
|
46
|
-
return (_jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(Helmet, { children: heads }), _jsx(StaggeredRenderContext.Provider, { value: staggeredValue, children: _jsx(ZudokuProvider, { context:
|
|
46
|
+
return (_jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(Helmet, { children: heads }), _jsx(StaggeredRenderContext.Provider, { value: staggeredValue, children: _jsx(ZudokuProvider, { context: zudokuContext, children: _jsx(MDXProvider, { components: mdxComponents, children: _jsx(ThemeProvider, { children: _jsx(ComponentsProvider, { value: components, children: _jsx(SlotletProvider, { slotlets: props.slotlets, children: _jsx(ViewportAnchorProvider, { children: children ?? _jsx(Outlet, {}) }) }) }) }) }) }) })] }));
|
|
47
|
+
});
|
|
48
|
+
ZudokoInner.displayName = "ZudokoInner";
|
|
49
|
+
const Zudoku = (props) => {
|
|
50
|
+
return (_jsx(ErrorBoundary, { FallbackComponent: TopLevelError, children: _jsx(ZudokoInner, { ...props }) }));
|
|
47
51
|
};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
52
|
-
DevPortal.displayName = "DevPortal";
|
|
53
|
-
export { DevPortal };
|
|
54
|
-
//# sourceMappingURL=DevPortal.js.map
|
|
52
|
+
Zudoku.displayName = "Zudoku";
|
|
53
|
+
export { Zudoku };
|
|
54
|
+
//# sourceMappingURL=Zudoku.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Zudoku.js","sourceRoot":"","sources":["../../../src/lib/components/Zudoku.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,IAAI,EAEJ,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,WAAW,EACX,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,wCAAwC,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,CACtB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA2C,EAAE,EAAE;IAClE,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EACrD,CAAC,KAAK,CAAC,SAAS,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,MAAM,qBAAqB,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;aAChD,MAAM,CAAC,mBAAmB,CAAC;aAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3D,CAAC;QAEJ,OAAO;YACL,GAAG,qBAAqB,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EACpC,EAAE,CACH;YACD,GAAG,aAAa;YAChB,GAAG,KAAK,CAAC,GAAG,EAAE,UAAU;SACzB,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACvD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,OAAO,CAC5B,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EACrD,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvC,MAAM,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO;QACzB,EAAE,MAAM,CAAC,OAAO,CAAC;QACjB,oDAAoD;SACnD,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,KAAC,QAAQ,cAAU,MAAM,CAAC,OAAO,EAAE,EAAE,IAAtB,CAAC,CAAiC,CAAC,CAAC;IAEzE,OAAO,CACL,MAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,aACtC,KAAC,MAAM,cAAE,KAAK,GAAU,EACxB,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,YACpD,KAAC,cAAc,IAAC,OAAO,EAAE,aAAa,YACpC,KAAC,WAAW,IAAC,UAAU,EAAE,aAAa,YACpC,KAAC,aAAa,cACZ,KAAC,kBAAkB,IAAC,KAAK,EAAE,UAAU,YACnC,KAAC,eAAe,IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,YACvC,KAAC,sBAAsB,cACpB,QAAQ,IAAI,KAAC,MAAM,KAAG,GACA,GACT,GACC,GACP,GACJ,GACC,GACe,IACd,CACvB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,MAAM,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7C,OAAO,CACL,KAAC,aAAa,IAAC,iBAAiB,EAAE,aAAa,YAC7C,KAAC,WAAW,OAAK,KAAK,GAAI,GACZ,CACjB,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const ZudokuReactContext: import("react").Context<
|
|
3
|
-
export declare const useZudoku: () =>
|
|
4
|
-
export declare const useApiIdentities: () => import("@tanstack/react-query").UseQueryResult<import("../../core/
|
|
1
|
+
import { ZudokuContext } from "../../core/ZudokuContext.js";
|
|
2
|
+
export declare const ZudokuReactContext: import("react").Context<ZudokuContext | undefined>;
|
|
3
|
+
export declare const useZudoku: () => ZudokuContext;
|
|
4
|
+
export declare const useApiIdentities: () => import("@tanstack/react-query").UseQueryResult<import("../../core/ZudokuContext.js").ApiIdentity[], Error>;
|
|
5
5
|
export declare const useCurrentNavigation: () => import("@tanstack/react-query").UseSuspenseQueryResult<{
|
|
6
6
|
sidebar: import("../../../config/validators/SidebarSchema.js").SidebarItem[];
|
|
7
7
|
topNavItem: {
|
|
@@ -7,7 +7,7 @@ export const ZudokuReactContext = createContext(undefined);
|
|
|
7
7
|
export const useZudoku = () => {
|
|
8
8
|
const context = useContext(ZudokuReactContext);
|
|
9
9
|
if (!context) {
|
|
10
|
-
throw new Error("
|
|
10
|
+
throw new Error("useZudoku must be used within a ZudokuProvider.");
|
|
11
11
|
}
|
|
12
12
|
return context;
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;QACvE,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI;oBACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC;YAElB,IAAI,MAAM,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,iBAAiB,GACrB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtE,OAAO,gBAAgB,CAAC;QACtB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE;oBACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,aAAa;iBACjB;gBACD,UAAU,EAAE,iBAAiB;aAC9B,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PropsWithChildren } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { ZudokuContext } from "../../core/ZudokuContext.js";
|
|
3
3
|
export declare const ZudokuProvider: ({ children, context, }: PropsWithChildren<{
|
|
4
|
-
context:
|
|
4
|
+
context: ZudokuContext;
|
|
5
5
|
}>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZudokuProvider.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,OAAO,
|
|
1
|
+
{"version":3,"file":"ZudokuProvider.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,OAAO,GACuC,EAAE,EAAE;IAClD,gBAAgB,CAAC;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACxC,QAAQ,GACmB,CAC/B,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,10 +4,6 @@ import { Link as LinkImport } from "react-router-dom";
|
|
|
4
4
|
import { RouterError as RouterErrorImport } from "../errors/RouterError.js";
|
|
5
5
|
import { ServerError as ServerErrorImport } from "../errors/ServerError.js";
|
|
6
6
|
export declare const useMDXComponents: typeof useMDXComponentsImport;
|
|
7
|
-
export declare const DevPortal: {
|
|
8
|
-
(props: import("../core/DevPortalContext.js").ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
displayName: string;
|
|
10
|
-
};
|
|
11
7
|
export declare const Layout: ({ children }: {
|
|
12
8
|
children?: import("react").ReactNode;
|
|
13
9
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -23,10 +19,10 @@ export declare const BootstrapStatic: ({ router, context, helmetContext, }: {
|
|
|
23
19
|
router: ReturnType<typeof import("react-router-dom/server.js").createStaticRouter>;
|
|
24
20
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
25
21
|
export declare const Head: typeof Helmet;
|
|
26
|
-
export declare const useZudoku: () => import("../core/
|
|
22
|
+
export declare const useZudoku: () => import("../core/ZudokuContext.js").ZudokuContext;
|
|
27
23
|
export declare const useAuth: import("zustand").UseBoundStore<import("zustand").StoreApi<import("../authentication/state.js").AuthState>>;
|
|
28
24
|
export declare const Zudoku: {
|
|
29
|
-
(props: import("../core/
|
|
25
|
+
(props: import("../core/ZudokuContext.js").ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
|
|
30
26
|
displayName: string;
|
|
31
27
|
};
|
|
32
28
|
export declare const Callout: ({ type, children, title, className }: {
|
|
@@ -36,7 +32,8 @@ export declare const Callout: ({ type, children, title, className }: {
|
|
|
36
32
|
className?: string;
|
|
37
33
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
38
34
|
export declare const ClientOnly: (props: {
|
|
39
|
-
children:
|
|
35
|
+
children: import("react").ReactNode;
|
|
36
|
+
fallback?: import("react").ReactNode;
|
|
40
37
|
}) => import("react").ReactNode;
|
|
41
38
|
export declare const Button: import("react").ForwardRefExoticComponent<import("../ui/Button.js").ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
42
39
|
export declare const Link: typeof LinkImport;
|