zudoku 0.16.2 → 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/entry.server.js +4 -5
- package/dist/app/entry.server.js.map +1 -1
- 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 +4 -2
- 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/CollapsibleCode.js +4 -2
- package/dist/lib/plugins/openapi/CollapsibleCode.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/ParameterListItem.js +6 -1
- package/dist/lib/plugins/openapi/ParameterListItem.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/client/createMemoryClient.d.ts +1 -4
- package/dist/lib/plugins/openapi/client/createMemoryClient.js +9 -1
- package/dist/lib/plugins/openapi/client/createMemoryClient.js.map +1 -1
- package/dist/lib/plugins/openapi/client/createWorkerClient.js +2 -1
- package/dist/lib/plugins/openapi/client/createWorkerClient.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 +4 -0
- package/dist/lib/ui/ActionButton.js +10 -0
- package/dist/lib/ui/ActionButton.js.map +1 -0
- package/dist/lib/util/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/lib/util/useIsomorphicLayoutEffect.js +4 -0
- package/dist/lib/util/useIsomorphicLayoutEffect.js.map +1 -0
- 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-35iw_Gil.js → OperationList-BHUBGM0c.js} +116 -113
- package/lib/OperationList-BHUBGM0c.js.map +1 -0
- package/lib/{Route-BsEZmkNl.js → Route-B0XuN1oC.js} +3 -3
- package/lib/{Route-BsEZmkNl.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/{Spinner-C6zroowC.js → SidebarBadge-Bbt92M5K.js} +16 -18
- package/lib/SidebarBadge-Bbt92M5K.js.map +1 -0
- package/lib/{SlotletProvider-Da7eFgd2.js → SlotletProvider-mhjLPG44.js} +4 -4
- package/lib/{SlotletProvider-Da7eFgd2.js.map → SlotletProvider-mhjLPG44.js.map} +1 -1
- package/lib/Spinner-ChOGyPls.js +51 -0
- package/lib/Spinner-ChOGyPls.js.map +1 -0
- 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-BdD8UbS-.js → index-BRg5pi5D.js} +1351 -1364
- 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 +24 -0
- package/lib/ui/ActionButton.js.map +1 -0
- package/lib/urql-core-35Qt_U4i.js +1511 -0
- package/lib/{urql-core-KJnLL26g.js.map → urql-core-35Qt_U4i.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 +690 -667
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.openapi-worker.js +737 -729
- package/lib/zudoku.openapi-worker.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 +6 -6
- 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/entry.server.tsx +9 -5
- 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 +31 -25
- 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/CollapsibleCode.tsx +5 -8
- package/src/lib/plugins/openapi/OperationList.tsx +2 -1
- package/src/lib/plugins/openapi/ParameterListItem.tsx +37 -31
- package/src/lib/plugins/openapi/Sidecar.tsx +65 -51
- package/src/lib/plugins/openapi/client/createMemoryClient.ts +17 -3
- package/src/lib/plugins/openapi/client/createWorkerClient.ts +5 -1
- 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 +28 -0
- package/src/lib/util/useIsomorphicLayoutEffect.ts +5 -0
- 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/OperationList-35iw_Gil.js.map +0 -1
- package/lib/Spinner-C6zroowC.js.map +0 -1
- package/lib/ZudokuContext-BKXGJTmu.js.map +0 -1
- package/lib/index-BdD8UbS-.js.map +0 -1
- package/lib/state-CsuHT8ZO.js +0 -183
- package/lib/state-CsuHT8ZO.js.map +0 -1
- package/lib/urql-core-KJnLL26g.js +0 -1455
- 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"}
|
|
@@ -2,13 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { MoonStarIcon, SunIcon } from "lucide-react";
|
|
3
3
|
import { memo } from "react";
|
|
4
4
|
import { Link } from "react-router-dom";
|
|
5
|
+
import { Button } from "zudoku/ui/Button.js";
|
|
6
|
+
import { Skeleton } from "zudoku/ui/Skeleton.js";
|
|
5
7
|
import { useAuth } from "../authentication/hook.js";
|
|
6
8
|
import { isProfileMenuPlugin } from "../core/plugins.js";
|
|
7
|
-
import { Button } from "../ui/Button.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(
|
|
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":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAmC,EAAE,EAAE;IAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrB,MAAC,eAAe,eACd,KAAC,sBAAsB,cAAE,IAAI,CAAC,KAAK,GAA0B,EAC7D,KAAC,kBAAkB,cACjB,KAAC,sBAAsB,cACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9B,oDAAoD;oBACpD,KAAC,aAAa,IAAS,IAAI,EAAE,IAAI,IAAb,CAAC,CAAgB,CACtC,CAAC,GACqB,GACN,KATD,IAAI,CAAC,KAAK,CAUd,CACnB,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,YACvB,KAAC,gBAAgB,cAAmB,IAAI,CAAC,KAAK,IAAvB,IAAI,CAAC,KAAK,CAAiC,GAC7D,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,WAAW;IAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAE,CAAC;IACzC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAElC,MAAM,YAAY,GAAG,OAAO;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;SACrC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAC,aAAa,IAAe,IAAI,EAAE,CAAC,IAAhB,CAAC,CAAC,KAAK,CAAa,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IAElD,OAAO,CACL,kBAAQ,SAAS,EAAC,4DAA4D,aAC5E,KAAC,MAAM,KAAG,EACV,eAAK,SAAS,EAAC,0BAA0B,aACvC,eAAK,SAAS,EAAC,wIAAwI,aACrJ,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,IAAI,IAAC,EAAE,EAAC,GAAG,YACV,eAAK,SAAS,EAAC,2BAA2B,aACvC,IAAI,EAAE,IAAI,IAAI,CACb,8BACE,cACE,GAAG,EACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;4DACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;4DACrB,CAAC,CAAC,QAAQ,CACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CACpB,EAEP,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EACpC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EACjC,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,EACzC,OAAO,EAAC,MAAM,GACd,EACF,cACE,GAAG,EACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;4DACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;4DACpB,CAAC,CAAC,QAAQ,CACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CACnB,EAEP,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EACpC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EACjC,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,QAAQ,CAAC,EAC1C,OAAO,EAAC,MAAM,GACd,IACD,CACJ,EACD,eAAM,SAAS,EAAC,qDAAqD,YAClE,IAAI,EAAE,SAAS,GACX,IACH,GACD,GACH,EACN,eAAK,SAAS,EAAC,wEAAwE,aACrF,cAAK,SAAS,EAAC,sCAAsC,YACnD,KAAC,MAAM,KAAG,GACN,EAEN,KAAC,mBAAmB,KAAG,EACvB,eAAK,SAAS,EAAC,4DAA4D,aACzE,KAAC,OAAO,IAAC,IAAI,EAAC,uBAAuB,GAAG,EACxC,KAAC,UAAU,IACT,QAAQ,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,uBAAuB,GAAG,YAEvD,aAAa,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACnC,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,sBAE1C,CACV,CAAC,CAAC,CAAC,CACF,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CACzB,MAAC,YAAY,IAAC,KAAK,EAAE,KAAK,aACxB,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,YACpB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,GAC5C,GACW,EACtB,MAAC,mBAAmB,IAAC,SAAS,EAAC,MAAM,aACnC,KAAC,iBAAiB,6BAA+B,EACjD,KAAC,qBAAqB,KAAG,EACxB,YAAY,IACO,IACT,CAChB,CACF,GACU,EACb,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,gBAEb,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,EAEzD,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAE,WAAW,YAEpB,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,GAChB,EACT,KAAC,OAAO,IAAC,IAAI,EAAC,qBAAqB,GAAG,IAClC,IACF,IACF,EACN,KAAC,OAAO,IAAC,IAAI,EAAC,uBAAuB,GAAG,EACxC,KAAC,aAAa,KAAG,EACjB,KAAC,OAAO,IAAC,IAAI,EAAC,sBAAsB,GAAG,IACnC,IACC,CACV,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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;
|