zudoku 0.3.0-dev.32 → 0.3.0-dev.34
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.client.d.ts +0 -2
- package/dist/app/entry.client.js +17 -8
- package/dist/app/entry.client.js.map +1 -1
- package/dist/app/entry.server.js +2 -10
- package/dist/app/entry.server.js.map +1 -1
- package/dist/lib/components/DevPortal.js +3 -9
- package/dist/lib/components/DevPortal.js.map +1 -1
- package/dist/lib/components/Layout.js +1 -4
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js +1 -3
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js +2 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/vite/build.js +11 -5
- package/dist/vite/build.js.map +1 -1
- package/dist/vite/config.js +3 -2
- package/dist/vite/config.js.map +1 -1
- package/lib/{MdxPage-Z3HKNTrj.js → MdxPage-BRKQDcVW.js} +87 -88
- package/lib/{MdxPage-Z3HKNTrj.js.map → MdxPage-BRKQDcVW.js.map} +1 -1
- package/lib/{OperationList-KoITgfDT.js → OperationList-DfkWNe8Y.js} +7 -3
- package/lib/{OperationList-KoITgfDT.js.map → OperationList-DfkWNe8Y.js.map} +1 -1
- package/lib/{index-BoWzKb_9.js → index-BjSy8IQO.js} +2 -2
- package/lib/{index-BoWzKb_9.js.map → index-BjSy8IQO.js.map} +1 -1
- package/lib/{index-BdWBDosx.js → index-Brq2ztwd.js} +2 -2
- package/lib/{index-BdWBDosx.js.map → index-Brq2ztwd.js.map} +1 -1
- package/lib/index-QzXzw_ra.js +24 -0
- package/lib/index-QzXzw_ra.js.map +1 -0
- package/lib/zudoku.components.js +147 -156
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +1 -1
- package/package.json +8 -9
- package/src/app/entry.client.tsx +28 -18
- package/src/app/entry.server.tsx +2 -17
- package/src/lib/components/DevPortal.tsx +1 -15
- package/src/lib/components/Layout.tsx +0 -9
- package/src/lib/plugins/markdown/MdxPage.tsx +0 -6
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +6 -1
- package/lib/index.esm-CPEExBJE.js +0 -694
- package/lib/index.esm-CPEExBJE.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.components.js","sources":["../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/moon-star.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/sun.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/.pnpm/react-error-boundary@4.0.13_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../src/lib/core/plugins.ts","../src/lib/core/DevPortalContext.ts","../src/lib/errors/TopLevelError.tsx","../src/lib/components/TopNavigation.tsx","../src/lib/components/Header.tsx","../src/lib/components/context/ComponentsContext.tsx","../src/lib/components/DevPortal.tsx","../src/lib/components/index.ts"],"sourcesContent":["/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MoonStar = createLucideIcon(\"MoonStar\", [\n [\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9\", key: \"4ay0iu\" }],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }]\n]);\n\nexport { MoonStar as default };\n//# sourceMappingURL=moon-star.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sun = createLucideIcon(\"Sun\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n]);\n\nexport { Sun as default };\n//# sourceMappingURL=sun.js.map\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import { type ReactElement } from \"react\";\nimport { type RouteObject } from \"react-router-dom\";\nimport {\n DevPortalContext,\n type ApiIdentity,\n type NavigationCategory,\n} from \"./DevPortalContext.js\";\n\nexport type PluginNavigationCategory = {\n path: string;\n} & NavigationCategory;\n\nexport type DevPortalPlugin =\n | CommonPlugin\n | NavigationPlugin\n | ApiIdentityPlugin;\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getNavigation?: (path: string) => Promise<PluginNavigationCategory[]>;\n}\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: DevPortalContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface CommonPlugin {\n initialize?: (context: DevPortalContext) => Promise<void> | void;\n getHead?: () => ReactElement | undefined;\n}\n\nexport const isNavigationPlugin = (\n obj: DevPortalPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const needsInitialization = (\n obj: DevPortalPlugin,\n): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: DevPortalPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: DevPortalPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { type ReactNode } from \"react\";\nimport { create } from \"zustand\";\nimport { type AuthenticationProvider } from \"../authentication/authentication.js\";\nimport type { ComponentsContextType } from \"../components/context/ComponentsContext.js\";\nimport { type DevPortalPath } from \"../components/DevPortal.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport {\n type DevPortalPlugin,\n isApiIdentityPlugin,\n isNavigationPlugin,\n type NavigationPlugin,\n needsInitialization,\n} from \"./plugins.js\";\n\nexport interface ApiIdentity {\n authorizeRequest: (request: Request) => Request;\n label: string;\n id: string;\n}\n\ntype BaseNavigationCategoryItem = {\n label: ReactNode;\n title?: string;\n muted?: boolean;\n icon?: ReactNode;\n};\n\nexport type PathNavigationCategoryItem = BaseNavigationCategoryItem & {\n path: string;\n children?: NavigationCategoryItem[];\n};\n\nexport type HrefNavigationCategoryItem = BaseNavigationCategoryItem & {\n href: string;\n};\n\nexport type NavigationCategoryItem =\n | PathNavigationCategoryItem\n | HrefNavigationCategoryItem;\n\nexport type NavigationCategory = {\n label: string;\n path?: string;\n expanded?: boolean;\n collapsible?: boolean;\n icon?: ReactNode;\n children: NavigationCategoryItem[];\n};\n\nexport type NavigationItem = {\n label: string;\n path: DevPortalPath;\n categories?: NavigationCategory[];\n};\n\nexport type RoutingState = {\n path?: string;\n};\n\nexport const queryClient = new QueryClient();\n\nexport const useRoutingState = create<RoutingState>(() => ({}));\n\nexport type ApiKeyCache = \"api-keys\";\nexport type DevPortalCacheKey = ApiKeyCache | string;\n\nexport type ZudokuContextMetadataOptions = Partial<{\n title: string;\n description: string;\n logo: string;\n favicon: string;\n generator: string;\n applicationName: string;\n referrer: string;\n keywords: string[];\n authors: string[];\n creator: string;\n publisher: string;\n}>;\nexport type ZudokuContextPageOptions = Partial<{\n pageTitle?: string;\n logo?: string;\n}>;\nexport type ZudokuContextOptions = {\n metadata?: ZudokuContextMetadataOptions;\n page?: ZudokuContextPageOptions;\n authentication?: AuthenticationProvider;\n navigation: NavigationItem[];\n plugins?: DevPortalPlugin[];\n mdxComponents?: MdxComponentsType;\n overrides?: ComponentsContextType;\n};\n\nexport class DevPortalContext {\n private plugins: DevPortalPlugin[] = [];\n private navigationPlugins: NavigationPlugin[];\n\n public navigation: NavigationItem[];\n public meta: ZudokuContextOptions[\"metadata\"];\n public page: ZudokuContextOptions[\"page\"];\n public authentication?: AuthenticationProvider;\n public state: typeof useRoutingState;\n\n constructor(config: ZudokuContextOptions) {\n this.plugins = config.plugins ?? [];\n this.navigation = config.navigation;\n this.navigationPlugins = this.plugins.filter(isNavigationPlugin);\n this.authentication = config.authentication;\n this.meta = config.metadata;\n this.page = config.page;\n this.state = useRoutingState;\n }\n\n initialize = async () => {\n await Promise.all([\n this.plugins\n .filter(needsInitialization)\n .map((plugin) => plugin.initialize?.(this)),\n ]);\n };\n\n invalidateCache = async (key: DevPortalCacheKey[]) => {\n await queryClient.invalidateQueries({ queryKey: key });\n };\n\n getApiIdentities = async () => {\n const keys = await Promise.all(\n this.plugins\n .filter(isApiIdentityPlugin)\n .map((plugin) => plugin.getIdentities(this)),\n );\n\n return keys.flat();\n };\n\n getNavigation = async (path: string) => {\n const navigations = await Promise.all(\n this.navigationPlugins.map(async (plugin) =>\n plugin.getNavigation?.(path),\n ),\n );\n\n return navigations.flatMap((nav) => nav ?? []);\n };\n\n async signRequest(request: Request) {\n if (!this.authentication) {\n throw new Error(\"No authentication provider configured\");\n }\n\n const accessToken = await this.authentication.getAccessToken();\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n\n return request;\n }\n}\n","import { FallbackProps } from \"react-error-boundary\";\nimport { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function TopLevelError({ error, resetErrorBoundary }: FallbackProps) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return <ErrorAlert error={error} />;\n}\n","import { cx } from \"class-variance-authority\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\n\nexport const TopNavigation = () => {\n const { navigation } = useDevPortal();\n\n // Hide tope nav if there is only one item\n if (navigation.length <= 1) {\n return null;\n }\n\n return (\n <nav className=\"border-b border-border text-sm px-12 h-[--top-nav-height]\">\n <ul className=\"flex flex-row items-center gap-8\">\n {navigation.map((item) => (\n <li key={item.label}>\n <NavLink\n className={({ isActive }) =>\n cx(\n \"block py-3.5 font-medium -mb-px border-b-2\",\n isActive\n ? \"border-primary text-foreground\"\n : \"border-transparent text-foreground/75 hover:text-foreground hover:border-accent-foreground/25\",\n )\n }\n to={item.path}\n >\n {item.label}\n </NavLink>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import { MoonStarIcon, SunIcon } from \"lucide-react\";\nimport { memo } from \"react\";\n\nimport { useAuth } from \"../authentication/hook.js\";\nimport { TopNavigation } from \"./TopNavigation.js\";\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\nimport { useTheme } from \"./context/ThemeContext.js\";\n\nexport const Header = memo(function HeaderInner() {\n const [isDark, toggleTheme] = useTheme();\n const { isAuthenticated, profile, isAuthEnabled, login, logout } = useAuth();\n const { page } = useDevPortal();\n\n const ThemeIcon = isDark ? MoonStarIcon : SunIcon;\n\n return (\n <header className=\"fixed top-0 w-full z-10 bg-background/80 backdrop-blur\">\n <div className=\"max-w-screen-2xl mx-auto\">\n <div className=\"grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b border-border px-12 h-[--top-header-height]\">\n <div className=\"flex items-center gap-3.5\">\n {page?.logo && (\n <img src={page.logo} alt={page.pageTitle} className=\"h-10\" />\n )}\n <span className=\"font-bold text-2xl text-foreground/85 tracking-wide\">\n {page?.pageTitle}\n </span>\n </div>\n <div className=\"grid grid-cols-[--sidecar-grid-cols] items-center gap-8\">\n <div className=\"w-full max-w-prose\">\n {/*<button className=\"flex items-center border border-input hover:bg-accent hover:text-accent-foreground p-4 relative h-8 justify-start rounded-lg bg-background text-sm text-muted-foreground shadow-none w-40 sm:w-72\">\n <div className=\"flex items-center gap-2 flex-grow\">\n <SearchIcon size={14} />\n Search\n </div>\n <kbd className=\"absolute right-[0.3rem] top-[0.3rem] hidden h-5 select-none items-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[11px] font-medium opacity-100 sm:flex\">\n ⌘K\n </kbd>\n </button>*/}\n </div>\n\n <div className=\"items-center justify-self-end text-sm hidden lg:flex\">\n {isAuthEnabled && (\n <>\n {isAuthenticated ? (\n <button\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded text-nowrap\"\n onClick={logout}\n >\n Logout {profile?.email ? `(${profile.email})` : null}\n </button>\n ) : (\n <button\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded\"\n onClick={login}\n >\n Login\n </button>\n )}\n </>\n )}\n <button\n className=\"cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full\"\n onClick={toggleTheme}\n >\n <ThemeIcon size={18} />\n </button>\n </div>\n </div>\n </div>\n <TopNavigation />\n </div>\n </header>\n );\n});\n","import {\n createContext,\n useContext,\n type ComponentProps,\n type ComponentType,\n} from \"react\";\nimport { Header } from \"../Header.js\";\n\nexport const DEFAULT_COMPONENTS = {\n Header,\n};\n\nexport type ComponentsContextType = {\n Header?: ComponentType<ComponentProps<typeof Header>>;\n};\n\nconst ComponentsContext =\n createContext<Required<ComponentsContextType>>(DEFAULT_COMPONENTS);\n\nexport const ComponentsProvider = ComponentsContext.Provider;\n\nexport const useComponents = () => {\n return useContext(ComponentsContext);\n};\n","import { MDXProvider } from \"@mdx-js/react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n Fragment,\n memo,\n type PropsWithChildren,\n useEffect,\n useMemo,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { Helmet } from \"react-helmet-async\";\nimport {\n DevPortalContext,\n queryClient,\n ZudokuContextOptions,\n} from \"../core/DevPortalContext.js\";\nimport { hasHead } from \"../core/plugins.js\";\nimport { TopLevelError } from \"../errors/TopLevelError.js\";\nimport { MdxComponents } from \"../util/MdxComponents.js\";\nimport {\n ComponentsProvider,\n DEFAULT_COMPONENTS,\n} from \"./context/ComponentsContext.js\";\nimport { DevPortalProvider } from \"./context/DevPortalProvider.js\";\nimport { ThemeProvider } from \"./context/ThemeContext.js\";\nimport { ViewportAnchorProvider } from \"./context/ViewportAnchorContext.js\";\n\nexport const DevPortalSystemPaths = {\n Settings: \"/settings\",\n} as const;\n\nexport type DevPortalPath =\n | string\n | (typeof DevPortalSystemPaths)[keyof typeof DevPortalSystemPaths];\n\nconst DevPortalInner = ({\n children,\n ...props\n}: PropsWithChildren<ZudokuContextOptions>) => {\n const components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...props.overrides }),\n [props.overrides],\n );\n\n const mdxComponents = useMemo(\n () => ({ ...MdxComponents, ...props.mdxComponents }),\n [props.mdxComponents],\n );\n\n const devPortalContext = useMemo(() => new DevPortalContext(props), [props]);\n\n useEffect(() => {\n void devPortalContext.initialize();\n }, [devPortalContext]);\n\n const heads = props.plugins\n ?.filter(hasHead)\n // eslint-disable-next-line react/no-array-index-key\n .map((plugin, i) => <Fragment key={i}>{plugin.getHead?.()}</Fragment>);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Helmet>{heads}</Helmet>\n <DevPortalProvider value={devPortalContext}>\n <MDXProvider components={mdxComponents}>\n <ThemeProvider>\n <ComponentsProvider value={components}>\n <ViewportAnchorProvider>{children}</ViewportAnchorProvider>\n </ComponentsProvider>\n </ThemeProvider>\n </MDXProvider>\n </DevPortalProvider>\n </QueryClientProvider>\n );\n};\n\nconst Inner = memo(DevPortalInner);\n\nconst DevPortal = (props: ZudokuContextOptions) => {\n return (\n <ErrorBoundary FallbackComponent={TopLevelError}>\n <Inner {...props} />\n </ErrorBoundary>\n );\n};\nDevPortal.displayName = \"DevPortal\";\n\nexport { DevPortal };\n","import { useMDXComponents as useMDXComponentsImport } from \"@mdx-js/react\";\nimport { Link as LinkImport } from \"react-router-dom\";\nimport { Callout as CalloutImport } from \"../ui/Callout.js\";\nimport { DevPortal as DevPortalImport } from \"./DevPortal.js\";\n\nexport const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;\nexport const Callout = /*@__PURE__*/ CalloutImport;\nexport const DevPortal = /*@__PURE__*/ DevPortalImport;\nexport const Link = /*@__PURE__*/ LinkImport;\n"],"names":["MoonStar","createLucideIcon","Sun","QueryCache","_a","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","MutationCache","_mutations","_mutationId","mutation","Mutation","__privateWrapper","scope","scopeFor","mutations","x","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","context","fetchFn","direction","_c","_b","oldPages","_d","oldPageParams","_e","empty","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","data","param","previous","queryFnContext","page","maxPages","addTo","addToStart","addToEnd","result","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","i","pageParams","lastIndex","QueryClient","_queryCache","_mutationCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","cachedData","defaultedOptions","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","refetchFilters","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","error","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","children","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","isNavigationPlugin","obj","needsInitialization","hasHead","isApiIdentityPlugin","queryClient","useRoutingState","create","DevPortalContext","__publicField","plugin","key","path","nav","request","accessToken","TopLevelError","resetErrorBoundary","jsx","ErrorAlert","TopNavigation","navigation","useDevPortal","NavLink","isActive","cx","Header","memo","isDark","toggleTheme","useTheme","isAuthenticated","profile","isAuthEnabled","login","logout","useAuth","ThemeIcon","MoonStarIcon","SunIcon","jsxs","DEFAULT_COMPONENTS","ComponentsContext","ComponentsProvider","DevPortalInner","components","useMemo","mdxComponents","MdxComponents","devPortalContext","useEffect","heads","Fragment","QueryClientProvider","Helmet","DevPortalProvider","MDXProvider","ThemeProvider","ViewportAnchorProvider","Inner","DevPortal","useMDXComponents","useMDXComponentsImport","Callout","CalloutImport","DevPortalImport","Link","LinkImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"file":"zudoku.components.js","sources":["../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/moon-star.js","../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/sun.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/.pnpm/@tanstack+query-core@5.50.1/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/.pnpm/react-error-boundary@4.0.13_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../src/lib/core/plugins.ts","../src/lib/core/DevPortalContext.ts","../src/lib/errors/TopLevelError.tsx","../src/lib/components/TopNavigation.tsx","../src/lib/components/Header.tsx","../src/lib/components/context/ComponentsContext.tsx","../src/lib/components/DevPortal.tsx","../src/lib/components/index.ts"],"sourcesContent":["/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MoonStar = createLucideIcon(\"MoonStar\", [\n [\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9\", key: \"4ay0iu\" }],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }]\n]);\n\nexport { MoonStar as default };\n//# sourceMappingURL=moon-star.js.map\n","/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sun = createLucideIcon(\"Sun\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n]);\n\nexport { Sun as default };\n//# sourceMappingURL=sun.js.map\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n const empty = { pages: [], pageParams: [] };\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n let result;\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam\n );\n const remainingPages = pages ?? oldPages.length;\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result);\n result = await fetchPage(result, param);\n }\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n );\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams\n );\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import { type ReactElement } from \"react\";\nimport { type RouteObject } from \"react-router-dom\";\nimport {\n DevPortalContext,\n type ApiIdentity,\n type NavigationCategory,\n} from \"./DevPortalContext.js\";\n\nexport type PluginNavigationCategory = {\n path: string;\n} & NavigationCategory;\n\nexport type DevPortalPlugin =\n | CommonPlugin\n | NavigationPlugin\n | ApiIdentityPlugin;\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getNavigation?: (path: string) => Promise<PluginNavigationCategory[]>;\n}\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: DevPortalContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface CommonPlugin {\n initialize?: (context: DevPortalContext) => Promise<void> | void;\n getHead?: () => ReactElement | undefined;\n}\n\nexport const isNavigationPlugin = (\n obj: DevPortalPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const needsInitialization = (\n obj: DevPortalPlugin,\n): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: DevPortalPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: DevPortalPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { type ReactNode } from \"react\";\nimport { create } from \"zustand\";\nimport { type AuthenticationProvider } from \"../authentication/authentication.js\";\nimport type { ComponentsContextType } from \"../components/context/ComponentsContext.js\";\nimport { type DevPortalPath } from \"../components/DevPortal.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport {\n type DevPortalPlugin,\n isApiIdentityPlugin,\n isNavigationPlugin,\n type NavigationPlugin,\n needsInitialization,\n} from \"./plugins.js\";\n\nexport interface ApiIdentity {\n authorizeRequest: (request: Request) => Request;\n label: string;\n id: string;\n}\n\ntype BaseNavigationCategoryItem = {\n label: ReactNode;\n title?: string;\n muted?: boolean;\n icon?: ReactNode;\n};\n\nexport type PathNavigationCategoryItem = BaseNavigationCategoryItem & {\n path: string;\n children?: NavigationCategoryItem[];\n};\n\nexport type HrefNavigationCategoryItem = BaseNavigationCategoryItem & {\n href: string;\n};\n\nexport type NavigationCategoryItem =\n | PathNavigationCategoryItem\n | HrefNavigationCategoryItem;\n\nexport type NavigationCategory = {\n label: string;\n path?: string;\n expanded?: boolean;\n collapsible?: boolean;\n icon?: ReactNode;\n children: NavigationCategoryItem[];\n};\n\nexport type NavigationItem = {\n label: string;\n path: DevPortalPath;\n categories?: NavigationCategory[];\n};\n\nexport type RoutingState = {\n path?: string;\n};\n\nexport const queryClient = new QueryClient();\n\nexport const useRoutingState = create<RoutingState>(() => ({}));\n\nexport type ApiKeyCache = \"api-keys\";\nexport type DevPortalCacheKey = ApiKeyCache | string;\n\nexport type ZudokuContextMetadataOptions = Partial<{\n title: string;\n description: string;\n logo: string;\n favicon: string;\n generator: string;\n applicationName: string;\n referrer: string;\n keywords: string[];\n authors: string[];\n creator: string;\n publisher: string;\n}>;\nexport type ZudokuContextPageOptions = Partial<{\n pageTitle?: string;\n logo?: string;\n}>;\nexport type ZudokuContextOptions = {\n metadata?: ZudokuContextMetadataOptions;\n page?: ZudokuContextPageOptions;\n authentication?: AuthenticationProvider;\n navigation: NavigationItem[];\n plugins?: DevPortalPlugin[];\n mdxComponents?: MdxComponentsType;\n overrides?: ComponentsContextType;\n};\n\nexport class DevPortalContext {\n private plugins: DevPortalPlugin[] = [];\n private navigationPlugins: NavigationPlugin[];\n\n public navigation: NavigationItem[];\n public meta: ZudokuContextOptions[\"metadata\"];\n public page: ZudokuContextOptions[\"page\"];\n public authentication?: AuthenticationProvider;\n public state: typeof useRoutingState;\n\n constructor(config: ZudokuContextOptions) {\n this.plugins = config.plugins ?? [];\n this.navigation = config.navigation;\n this.navigationPlugins = this.plugins.filter(isNavigationPlugin);\n this.authentication = config.authentication;\n this.meta = config.metadata;\n this.page = config.page;\n this.state = useRoutingState;\n }\n\n initialize = async () => {\n await Promise.all([\n this.plugins\n .filter(needsInitialization)\n .map((plugin) => plugin.initialize?.(this)),\n ]);\n };\n\n invalidateCache = async (key: DevPortalCacheKey[]) => {\n await queryClient.invalidateQueries({ queryKey: key });\n };\n\n getApiIdentities = async () => {\n const keys = await Promise.all(\n this.plugins\n .filter(isApiIdentityPlugin)\n .map((plugin) => plugin.getIdentities(this)),\n );\n\n return keys.flat();\n };\n\n getNavigation = async (path: string) => {\n const navigations = await Promise.all(\n this.navigationPlugins.map(async (plugin) =>\n plugin.getNavigation?.(path),\n ),\n );\n\n return navigations.flatMap((nav) => nav ?? []);\n };\n\n async signRequest(request: Request) {\n if (!this.authentication) {\n throw new Error(\"No authentication provider configured\");\n }\n\n const accessToken = await this.authentication.getAccessToken();\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n\n return request;\n }\n}\n","import { FallbackProps } from \"react-error-boundary\";\nimport { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function TopLevelError({ error, resetErrorBoundary }: FallbackProps) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return <ErrorAlert error={error} />;\n}\n","import { cx } from \"class-variance-authority\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\n\nexport const TopNavigation = () => {\n const { navigation } = useDevPortal();\n\n // Hide tope nav if there is only one item\n if (navigation.length <= 1) {\n return null;\n }\n\n return (\n <nav className=\"border-b border-border text-sm px-12 h-[--top-nav-height]\">\n <ul className=\"flex flex-row items-center gap-8\">\n {navigation.map((item) => (\n <li key={item.label}>\n <NavLink\n className={({ isActive }) =>\n cx(\n \"block py-3.5 font-medium -mb-px border-b-2\",\n isActive\n ? \"border-primary text-foreground\"\n : \"border-transparent text-foreground/75 hover:text-foreground hover:border-accent-foreground/25\",\n )\n }\n to={item.path}\n >\n {item.label}\n </NavLink>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import { MoonStarIcon, SunIcon } from \"lucide-react\";\nimport { memo } from \"react\";\n\nimport { useAuth } from \"../authentication/hook.js\";\nimport { TopNavigation } from \"./TopNavigation.js\";\nimport { useDevPortal } from \"./context/DevPortalProvider.js\";\nimport { useTheme } from \"./context/ThemeContext.js\";\n\nexport const Header = memo(function HeaderInner() {\n const [isDark, toggleTheme] = useTheme();\n const { isAuthenticated, profile, isAuthEnabled, login, logout } = useAuth();\n const { page } = useDevPortal();\n\n const ThemeIcon = isDark ? MoonStarIcon : SunIcon;\n\n return (\n <header className=\"fixed top-0 w-full z-10 bg-background/80 backdrop-blur\">\n <div className=\"max-w-screen-2xl mx-auto\">\n <div className=\"grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b border-border px-12 h-[--top-header-height]\">\n <div className=\"flex items-center gap-3.5\">\n {page?.logo && (\n <img src={page.logo} alt={page.pageTitle} className=\"h-10\" />\n )}\n <span className=\"font-bold text-2xl text-foreground/85 tracking-wide\">\n {page?.pageTitle}\n </span>\n </div>\n <div className=\"grid grid-cols-[--sidecar-grid-cols] items-center gap-8\">\n <div className=\"w-full max-w-prose\">\n {/*<button className=\"flex items-center border border-input hover:bg-accent hover:text-accent-foreground p-4 relative h-8 justify-start rounded-lg bg-background text-sm text-muted-foreground shadow-none w-40 sm:w-72\">\n <div className=\"flex items-center gap-2 flex-grow\">\n <SearchIcon size={14} />\n Search\n </div>\n <kbd className=\"absolute right-[0.3rem] top-[0.3rem] hidden h-5 select-none items-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[11px] font-medium opacity-100 sm:flex\">\n ⌘K\n </kbd>\n </button>*/}\n </div>\n\n <div className=\"items-center justify-self-end text-sm hidden lg:flex\">\n {isAuthEnabled && (\n <>\n {isAuthenticated ? (\n <button\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded text-nowrap\"\n onClick={logout}\n >\n Logout {profile?.email ? `(${profile.email})` : null}\n </button>\n ) : (\n <button\n className=\"cursor-pointer hover:bg-secondary p-1 px-2 mx-2 rounded\"\n onClick={login}\n >\n Login\n </button>\n )}\n </>\n )}\n <button\n className=\"cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full\"\n onClick={toggleTheme}\n >\n <ThemeIcon size={18} />\n </button>\n </div>\n </div>\n </div>\n <TopNavigation />\n </div>\n </header>\n );\n});\n","import {\n createContext,\n useContext,\n type ComponentProps,\n type ComponentType,\n} from \"react\";\nimport { Header } from \"../Header.js\";\n\nexport const DEFAULT_COMPONENTS = {\n Header,\n};\n\nexport type ComponentsContextType = {\n Header?: ComponentType<ComponentProps<typeof Header>>;\n};\n\nconst ComponentsContext =\n createContext<Required<ComponentsContextType>>(DEFAULT_COMPONENTS);\n\nexport const ComponentsProvider = ComponentsContext.Provider;\n\nexport const useComponents = () => {\n return useContext(ComponentsContext);\n};\n","import { MDXProvider } from \"@mdx-js/react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport { memo, type PropsWithChildren, useEffect, useMemo } from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport {\n DevPortalContext,\n queryClient,\n ZudokuContextOptions,\n} from \"../core/DevPortalContext.js\";\nimport { TopLevelError } from \"../errors/TopLevelError.js\";\nimport { MdxComponents } from \"../util/MdxComponents.js\";\nimport {\n ComponentsProvider,\n DEFAULT_COMPONENTS,\n} from \"./context/ComponentsContext.js\";\nimport { DevPortalProvider } from \"./context/DevPortalProvider.js\";\nimport { ThemeProvider } from \"./context/ThemeContext.js\";\nimport { ViewportAnchorProvider } from \"./context/ViewportAnchorContext.js\";\n\nexport const DevPortalSystemPaths = {\n Settings: \"/settings\",\n} as const;\n\nexport type DevPortalPath =\n | string\n | (typeof DevPortalSystemPaths)[keyof typeof DevPortalSystemPaths];\n\nconst DevPortalInner = ({\n children,\n ...props\n}: PropsWithChildren<ZudokuContextOptions>) => {\n const components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...props.overrides }),\n [props.overrides],\n );\n\n const mdxComponents = useMemo(\n () => ({ ...MdxComponents, ...props.mdxComponents }),\n [props.mdxComponents],\n );\n\n const devPortalContext = useMemo(() => new DevPortalContext(props), [props]);\n\n useEffect(() => {\n void devPortalContext.initialize();\n }, [devPortalContext]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <DevPortalProvider value={devPortalContext}>\n <MDXProvider components={mdxComponents}>\n <ThemeProvider>\n <ComponentsProvider value={components}>\n <ViewportAnchorProvider>{children}</ViewportAnchorProvider>\n </ComponentsProvider>\n </ThemeProvider>\n </MDXProvider>\n </DevPortalProvider>\n </QueryClientProvider>\n );\n};\n\nconst Inner = memo(DevPortalInner);\n\nconst DevPortal = (props: ZudokuContextOptions) => {\n return (\n <ErrorBoundary FallbackComponent={TopLevelError}>\n <Inner {...props} />\n </ErrorBoundary>\n );\n};\nDevPortal.displayName = \"DevPortal\";\n\nexport { DevPortal };\n","import { useMDXComponents as useMDXComponentsImport } from \"@mdx-js/react\";\nimport { Link as LinkImport } from \"react-router-dom\";\nimport { Callout as CalloutImport } from \"../ui/Callout.js\";\nimport { DevPortal as DevPortalImport } from \"./DevPortal.js\";\n\nexport const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;\nexport const Callout = /*@__PURE__*/ CalloutImport;\nexport const DevPortal = /*@__PURE__*/ DevPortalImport;\nexport const Link = /*@__PURE__*/ LinkImport;\n"],"names":["MoonStar","createLucideIcon","Sun","QueryCache","_a","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","MutationCache","_mutations","_mutationId","mutation","Mutation","__privateWrapper","scope","scopeFor","mutations","x","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","context","fetchFn","direction","_c","_b","oldPages","_d","oldPageParams","_e","empty","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","data","param","previous","queryFnContext","page","maxPages","addTo","addToStart","addToEnd","result","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","i","pageParams","lastIndex","QueryClient","_queryCache","_mutationCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","cachedData","defaultedOptions","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","refetchFilters","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","error","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","children","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","isNavigationPlugin","obj","needsInitialization","isApiIdentityPlugin","queryClient","useRoutingState","create","DevPortalContext","__publicField","plugin","key","path","nav","request","accessToken","TopLevelError","resetErrorBoundary","jsx","ErrorAlert","TopNavigation","navigation","useDevPortal","NavLink","isActive","cx","Header","memo","isDark","toggleTheme","useTheme","isAuthenticated","profile","isAuthEnabled","login","logout","useAuth","ThemeIcon","MoonStarIcon","SunIcon","jsxs","DEFAULT_COMPONENTS","ComponentsContext","ComponentsProvider","DevPortalInner","components","useMemo","mdxComponents","MdxComponents","devPortalContext","useEffect","QueryClientProvider","DevPortalProvider","MDXProvider","ThemeProvider","ViewportAnchorProvider","Inner","DevPortal","useMDXComponents","useMDXComponentsImport","Callout","CalloutImport","DevPortalImport","Link","LinkImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zudoku",
|
|
3
|
-
"version": "0.3.0-dev.
|
|
3
|
+
"version": "0.3.0-dev.34",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -70,14 +70,17 @@
|
|
|
70
70
|
"@mdx-js/rollup": "3.0.1",
|
|
71
71
|
"@monaco-editor/react": "^4.6.0",
|
|
72
72
|
"@pothos/core": "3.41.0",
|
|
73
|
+
"@radix-ui/react-collapsible": "1.1.0",
|
|
73
74
|
"@radix-ui/react-select": "2.1.1",
|
|
74
75
|
"@radix-ui/react-visually-hidden": "1.1.0",
|
|
75
76
|
"@sentry/node": "8.11.0",
|
|
76
77
|
"@stefanprobst/rehype-extract-toc": "2.2.0",
|
|
77
78
|
"@tailwindcss/typography": "0.5.13",
|
|
79
|
+
"@tanstack/react-query": "5.50.1",
|
|
78
80
|
"@vitejs/plugin-react": "4.3.1",
|
|
79
81
|
"autoprefixer": "10.4.19",
|
|
80
82
|
"chokidar": "^3.6.0",
|
|
83
|
+
"class-variance-authority": "0.7.0",
|
|
81
84
|
"dotenv": "16.4.5",
|
|
82
85
|
"express": "4.19.2",
|
|
83
86
|
"graphql": "16.9.0",
|
|
@@ -112,20 +115,20 @@
|
|
|
112
115
|
"slugify": "1.6.6",
|
|
113
116
|
"strip-ansi": "7.1.0",
|
|
114
117
|
"tailwindcss": "3.4.4",
|
|
118
|
+
"tailwind-merge": "2.3.0",
|
|
115
119
|
"tiny-invariant": "1.3.3",
|
|
116
120
|
"ulidx": "^2.3.0",
|
|
117
121
|
"unist-util-visit": "5.0.0",
|
|
118
122
|
"urql": "4.1.0",
|
|
119
123
|
"vite": "5.3.3",
|
|
120
124
|
"yaml": "2.4.1",
|
|
121
|
-
"yargs": "17.7.2"
|
|
125
|
+
"yargs": "17.7.2",
|
|
126
|
+
"zustand": "4.5.4"
|
|
122
127
|
},
|
|
123
128
|
"devDependencies": {
|
|
124
|
-
"@radix-ui/react-collapsible": "1.1.0",
|
|
125
129
|
"@radix-ui/react-dialog": "1.1.1",
|
|
126
130
|
"@radix-ui/react-slot": "1.1.0",
|
|
127
131
|
"@radix-ui/react-tabs": "1.1.0",
|
|
128
|
-
"@tanstack/react-query": "5.50.1",
|
|
129
132
|
"@types/express": "^4.17.21",
|
|
130
133
|
"@types/har-format": "^1.2.15",
|
|
131
134
|
"@types/json-schema": "7.0.15",
|
|
@@ -138,19 +141,15 @@
|
|
|
138
141
|
"@types/semver": "^7.5.8",
|
|
139
142
|
"@types/yargs": "^17.0.32",
|
|
140
143
|
"@zudoku/httpsnippet": "10.0.9",
|
|
141
|
-
"class-variance-authority": "0.7.0",
|
|
142
144
|
"clsx": "2.1.1",
|
|
143
145
|
"lucide-react": "0.378.0",
|
|
144
146
|
"oauth4webapi": "2.11.1",
|
|
145
147
|
"prism-react-renderer": "2.3.1",
|
|
146
148
|
"prismjs": "1.29.0",
|
|
147
|
-
"react-helmet-async": "2.0.5",
|
|
148
149
|
"react-markdown": "9.0.1",
|
|
149
150
|
"react-router-dom": "6.24.1",
|
|
150
151
|
"rollup-plugin-visualizer": "^5.12.0",
|
|
151
|
-
"
|
|
152
|
-
"typescript": "5.5.3",
|
|
153
|
-
"zustand": "4.5.4"
|
|
152
|
+
"typescript": "5.5.3"
|
|
154
153
|
},
|
|
155
154
|
"peerDependencies": {
|
|
156
155
|
"react": ">18.0.0",
|
package/src/app/entry.client.tsx
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { StrictMode } from "react";
|
|
2
|
-
import { hydrateRoot } from "react-dom/client";
|
|
3
|
-
import { HelmetProvider } from "react-helmet-async";
|
|
2
|
+
import { createRoot, hydrateRoot } from "react-dom/client";
|
|
4
3
|
import {
|
|
5
4
|
createBrowserRouter,
|
|
6
5
|
matchRoutes,
|
|
7
|
-
type RouteObject,
|
|
8
6
|
RouterProvider,
|
|
7
|
+
type RouteObject,
|
|
9
8
|
} from "react-router-dom";
|
|
10
9
|
import "virtual:vite-zudoku-custom-css.css";
|
|
11
10
|
import config from "virtual:zudoku-config";
|
|
@@ -15,9 +14,26 @@ import "./main.css";
|
|
|
15
14
|
|
|
16
15
|
import { getRoutesByConfig } from "./main.js";
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
const routes = getRoutesByConfig(config);
|
|
18
|
+
const root = document.getElementById("root")!;
|
|
19
|
+
|
|
20
|
+
const RootReactElement = ({
|
|
21
|
+
router,
|
|
22
|
+
}: {
|
|
23
|
+
router: ReturnType<typeof createBrowserRouter>;
|
|
24
|
+
}) => (
|
|
25
|
+
<StrictMode>
|
|
26
|
+
<RouterProvider router={router} />
|
|
27
|
+
</StrictMode>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
if (root.childElementCount > 0) {
|
|
31
|
+
void hydrate(routes);
|
|
32
|
+
} else {
|
|
33
|
+
void render(routes);
|
|
34
|
+
}
|
|
19
35
|
|
|
20
|
-
|
|
36
|
+
async function hydrateLazyRoutes(routes: RouteObject[]) {
|
|
21
37
|
const lazyMatches = matchRoutes(routes, window.location)?.filter(
|
|
22
38
|
(m) => m.route.lazy,
|
|
23
39
|
);
|
|
@@ -32,20 +48,14 @@ export async function hydrateLazyRoutes(routes: RouteObject[]) {
|
|
|
32
48
|
}
|
|
33
49
|
}
|
|
34
50
|
|
|
35
|
-
|
|
36
|
-
const
|
|
51
|
+
function render(routes: RouteObject[]) {
|
|
52
|
+
const router = createBrowserRouter(routes);
|
|
53
|
+
createRoot(root).render(<RootReactElement router={router} />);
|
|
54
|
+
}
|
|
37
55
|
|
|
56
|
+
async function hydrate(routes: RouteObject[]) {
|
|
38
57
|
await hydrateLazyRoutes(routes);
|
|
39
|
-
|
|
40
58
|
const router = createBrowserRouter(routes);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
hydrateRoot(
|
|
44
|
-
root,
|
|
45
|
-
<StrictMode>
|
|
46
|
-
<HelmetProvider>
|
|
47
|
-
<RouterProvider router={router} />
|
|
48
|
-
</HelmetProvider>
|
|
49
|
-
</StrictMode>,
|
|
50
|
-
);
|
|
59
|
+
|
|
60
|
+
hydrateRoot(root, <RootReactElement router={router} />);
|
|
51
61
|
}
|
package/src/app/entry.server.tsx
CHANGED
|
@@ -3,7 +3,6 @@ import logger from "loglevel";
|
|
|
3
3
|
import { Transform } from "node:stream";
|
|
4
4
|
import { StrictMode } from "react";
|
|
5
5
|
import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
|
|
6
|
-
import { HelmetData, HelmetProvider } from "react-helmet-async";
|
|
7
6
|
import { isRouteErrorResponse } from "react-router-dom";
|
|
8
7
|
import {
|
|
9
8
|
createStaticHandler,
|
|
@@ -60,13 +59,10 @@ export const render = async ({
|
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
const router = createStaticRouter(dataRoutes, context);
|
|
63
|
-
const helmetContext = {} as HelmetData["context"];
|
|
64
62
|
|
|
65
63
|
const { pipe } = renderToPipeableStream(
|
|
66
64
|
<StrictMode>
|
|
67
|
-
<
|
|
68
|
-
<StaticRouterProvider router={router} context={context} />
|
|
69
|
-
</HelmetProvider>
|
|
65
|
+
<StaticRouterProvider router={router} context={context} />
|
|
70
66
|
</StrictMode>,
|
|
71
67
|
{
|
|
72
68
|
onShellError(error) {
|
|
@@ -92,18 +88,7 @@ export const render = async ({
|
|
|
92
88
|
|
|
93
89
|
const [htmlStart, htmlEnd] = template.split("<!--app-html-->");
|
|
94
90
|
|
|
95
|
-
response.write(
|
|
96
|
-
htmlStart.replace(
|
|
97
|
-
"<!--app-helmet-->",
|
|
98
|
-
[
|
|
99
|
-
helmetContext.helmet.title.toString(),
|
|
100
|
-
helmetContext.helmet.meta.toString(),
|
|
101
|
-
helmetContext.helmet.link.toString(),
|
|
102
|
-
helmetContext.helmet.style.toString(),
|
|
103
|
-
helmetContext.helmet.script.toString(),
|
|
104
|
-
].join("\n"),
|
|
105
|
-
),
|
|
106
|
-
);
|
|
91
|
+
response.write(htmlStart.replace("<!--app-helmet-->", [].join("\n")));
|
|
107
92
|
|
|
108
93
|
transformStream.on("finish", () => {
|
|
109
94
|
response.end(htmlEnd);
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import { MDXProvider } from "@mdx-js/react";
|
|
2
2
|
import { QueryClientProvider } from "@tanstack/react-query";
|
|
3
|
-
import {
|
|
4
|
-
Fragment,
|
|
5
|
-
memo,
|
|
6
|
-
type PropsWithChildren,
|
|
7
|
-
useEffect,
|
|
8
|
-
useMemo,
|
|
9
|
-
} from "react";
|
|
3
|
+
import { memo, type PropsWithChildren, useEffect, useMemo } from "react";
|
|
10
4
|
import { ErrorBoundary } from "react-error-boundary";
|
|
11
|
-
import { Helmet } from "react-helmet-async";
|
|
12
5
|
import {
|
|
13
6
|
DevPortalContext,
|
|
14
7
|
queryClient,
|
|
15
8
|
ZudokuContextOptions,
|
|
16
9
|
} from "../core/DevPortalContext.js";
|
|
17
|
-
import { hasHead } from "../core/plugins.js";
|
|
18
10
|
import { TopLevelError } from "../errors/TopLevelError.js";
|
|
19
11
|
import { MdxComponents } from "../util/MdxComponents.js";
|
|
20
12
|
import {
|
|
@@ -53,14 +45,8 @@ const DevPortalInner = ({
|
|
|
53
45
|
void devPortalContext.initialize();
|
|
54
46
|
}, [devPortalContext]);
|
|
55
47
|
|
|
56
|
-
const heads = props.plugins
|
|
57
|
-
?.filter(hasHead)
|
|
58
|
-
// eslint-disable-next-line react/no-array-index-key
|
|
59
|
-
.map((plugin, i) => <Fragment key={i}>{plugin.getHead?.()}</Fragment>);
|
|
60
|
-
|
|
61
48
|
return (
|
|
62
49
|
<QueryClientProvider client={queryClient}>
|
|
63
|
-
<Helmet>{heads}</Helmet>
|
|
64
50
|
<DevPortalProvider value={devPortalContext}>
|
|
65
51
|
<MDXProvider components={mdxComponents}>
|
|
66
52
|
<ThemeProvider>
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Suspense, useEffect, useRef, type ReactNode } from "react";
|
|
2
|
-
import { Helmet } from "react-helmet-async";
|
|
3
2
|
import { Outlet, useLocation } from "react-router-dom";
|
|
4
3
|
import { cn } from "../util/cn.js";
|
|
5
4
|
import { useScrollToAnchor } from "../util/useScrollToAnchor.js";
|
|
6
5
|
import { useScrollToTop } from "../util/useScrollToTop.js";
|
|
7
|
-
import { useDevPortal } from "./context/DevPortalProvider.js";
|
|
8
6
|
import { useViewportAnchor } from "./context/ViewportAnchorContext.js";
|
|
9
7
|
import { Header } from "./Header.js";
|
|
10
8
|
import { SideNavigation } from "./navigation/SideNavigation.js";
|
|
@@ -13,7 +11,6 @@ import { Spinner } from "./Spinner.js";
|
|
|
13
11
|
export const Layout = ({ children }: { children?: ReactNode }) => {
|
|
14
12
|
const location = useLocation();
|
|
15
13
|
const { setActiveAnchor } = useViewportAnchor();
|
|
16
|
-
const { meta } = useDevPortal();
|
|
17
14
|
|
|
18
15
|
useScrollToAnchor();
|
|
19
16
|
useScrollToTop();
|
|
@@ -30,12 +27,6 @@ export const Layout = ({ children }: { children?: ReactNode }) => {
|
|
|
30
27
|
|
|
31
28
|
return (
|
|
32
29
|
<>
|
|
33
|
-
<Helmet titleTemplate={meta?.title}>
|
|
34
|
-
{meta?.description && (
|
|
35
|
-
<meta name="description" content={meta.description} />
|
|
36
|
-
)}
|
|
37
|
-
{meta?.favicon && <link rel="icon" href={meta.favicon} />}
|
|
38
|
-
</Helmet>
|
|
39
30
|
<Header />
|
|
40
31
|
|
|
41
32
|
<div className="max-w-screen-2xl mx-auto pt-[--header-height] px-10 lg:px-12 h-full">
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useMDXComponents } from "@mdx-js/react";
|
|
2
2
|
import { useMemo, type PropsWithChildren, type ReactNode } from "react";
|
|
3
|
-
import { Helmet } from "react-helmet-async";
|
|
4
3
|
import { Link, useLocation } from "react-router-dom";
|
|
5
4
|
import { CategoryHeading } from "../../components/CategoryHeading.js";
|
|
6
5
|
import { Heading } from "../../components/Heading.js";
|
|
@@ -53,8 +52,6 @@ export const MdxPage = ({
|
|
|
53
52
|
const title = frontmatter.title;
|
|
54
53
|
const category = frontmatter.category ?? categoryTitle;
|
|
55
54
|
const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;
|
|
56
|
-
const pageTitle =
|
|
57
|
-
tableOfContents.find((item) => item.depth === 1)?.value ?? title;
|
|
58
55
|
const hidePager =
|
|
59
56
|
frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;
|
|
60
57
|
|
|
@@ -92,9 +89,6 @@ export const MdxPage = ({
|
|
|
92
89
|
|
|
93
90
|
return (
|
|
94
91
|
<div className="xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between">
|
|
95
|
-
<Helmet>
|
|
96
|
-
<title>{pageTitle}</title>
|
|
97
|
-
</Helmet>
|
|
98
92
|
<div
|
|
99
93
|
className={cn(
|
|
100
94
|
ProseClasses,
|