From 9dfde0af5b0c1673a918f18d71a47a5acd6f6993 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 15 Oct 2025 22:46:04 +0200 Subject: [PATCH 01/49] feature: provide progress state of page to sidebar --- docusaurus.config.ts | 24 +++++++++++++--- src/theme/DocSidebarItem/index.tsx | 31 +++++++++++++++++++++ src/theme/DocSidebarItem/styles.module.scss | 8 ++++++ 3 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 src/theme/DocSidebarItem/index.tsx create mode 100644 src/theme/DocSidebarItem/styles.module.scss diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 490ce5134..58380e457 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -23,6 +23,7 @@ import { recommendedBeforeDefaultRemarkPlugins, recommendedRehypePlugins, recomm import { remarkPdfPluginConfig } from '@tdev/remark-pdf'; import { excalidrawPluginConfig } from '@tdev/excalidoc'; import { EditThisPageOption, ShowEditThisPage } from '@tdev/siteConfig/siteConfig'; +import type { ParseFrontMatterResult } from '@docusaurus/types/src/markdown'; const siteConfig = getSiteConfig(); @@ -48,6 +49,21 @@ const PROJECT_NAME = siteConfig.gitHub?.projectName ?? 'teaching-dev'; const GH_OAUTH_CLIENT_ID = process.env.GH_OAUTH_CLIENT_ID; const DEFAULT_TEST_USER = process.env.DEFAULT_TEST_USER?.trim(); +/** + * exposes the `page_id` frontmatter as `pid` in `sidebar_custom_props` + * this way the sidebar can access the page_id without additional plugins + * and we can use it to access the page model for the current page in the sidebar + */ +const exposePidToSidebar = (fm: ParseFrontMatterResult) => { + if (!('sidebar_custom_props' in fm.frontMatter)) { + fm.frontMatter.sidebar_custom_props = {}; + } + if (!('pid' in (fm.frontMatter as any).sidebar_custom_props) && ('page_id' in fm.frontMatter)) { + (fm.frontMatter.sidebar_custom_props as any).pid = fm.frontMatter.page_id; + } + return fm; +}; + const config: Config = applyTransformers({ title: TITLE, tagline: siteConfig.tagline ?? 'Eine Plattform zur Gestaltung interaktiver Lernerlebnisse', @@ -137,7 +153,7 @@ const config: Config = applyTransformers({ parseFrontMatter: async (params) => { const result = await params.defaultParseFrontMatter(params); if (process.env.NODE_ENV === 'production') { - return result; + return exposePidToSidebar(result); } /** * don't add frontmatter to partials @@ -145,13 +161,13 @@ const config: Config = applyTransformers({ const fileName = path.basename(params.filePath); if (fileName.startsWith('_')) { // it is a partial, don't add frontmatter - return result; + return exposePidToSidebar(result); } /** * don't edit blogs frontmatter */ if (params.filePath.startsWith(`${BUILD_LOCATION}/blog/`)) { - return result; + return exposePidToSidebar(result); } if (process.env.NODE_ENV !== 'production') { let needsRewrite = false; @@ -181,7 +197,7 @@ const config: Config = applyTransformers({ ) } } - return result; + return exposePidToSidebar(result); }, mermaid: true, hooks: { diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx new file mode 100644 index 000000000..cf49c77eb --- /dev/null +++ b/src/theme/DocSidebarItem/index.tsx @@ -0,0 +1,31 @@ +import React, { type ReactNode } from 'react'; +import DocSidebarItem from '@theme-original/DocSidebarItem'; +import type DocSidebarItemType from '@theme/DocSidebarItem'; +import type { WrapperProps } from '@docusaurus/types'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; +import Icon from '@mdi/react'; +import { mdiCheck, mdiCheckCircle, mdiProgressQuestion } from '@mdi/js'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; + +type Props = WrapperProps; + +const DocSidebarItemWrapper = observer((props: Props): ReactNode => { + const pageStore = useStore('pageStore'); + const { pid } = (props.item.customProps || {}) as { pid?: string }; + const page = pageStore.find(pid); + return ( +
+ + +
+ ); +}); + +export default DocSidebarItemWrapper; diff --git a/src/theme/DocSidebarItem/styles.module.scss b/src/theme/DocSidebarItem/styles.module.scss new file mode 100644 index 000000000..70b5b8da8 --- /dev/null +++ b/src/theme/DocSidebarItem/styles.module.scss @@ -0,0 +1,8 @@ +.item { + position: relative; + .icon { + position: absolute; + right: 0px; + top: 12px; + } +} From a1a499a0c4ec3ffe4539f052c673eef39bd39eea Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 15 Oct 2025 23:05:16 +0200 Subject: [PATCH 02/49] make linter happy --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 288fd5121..e0f7af2de 100644 --- a/package.json +++ b/package.json @@ -127,4 +127,4 @@ "engines": { "node": ">=22.15" } -} \ No newline at end of file +} From 3464f524195982e7cbe32f53b325be9fb1402739 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Sun, 19 Oct 2025 14:58:39 +0200 Subject: [PATCH 03/49] basic exporter --- src/.page-index/.gitignore | 1 + src/.page-index/.gitkeep | 0 src/plugins/remark-page/plugin.ts | 33 ++++++++++++++++++++--- src/siteConfig/markdownPluginConfigs.ts | 36 ++++++++++++++++++++++++- 4 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 src/.page-index/.gitignore create mode 100644 src/.page-index/.gitkeep diff --git a/src/.page-index/.gitignore b/src/.page-index/.gitignore new file mode 100644 index 000000000..94a2dd146 --- /dev/null +++ b/src/.page-index/.gitignore @@ -0,0 +1 @@ +*.json \ No newline at end of file diff --git a/src/.page-index/.gitkeep b/src/.page-index/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/src/plugins/remark-page/plugin.ts b/src/plugins/remark-page/plugin.ts index 709756319..1becf1d41 100644 --- a/src/plugins/remark-page/plugin.ts +++ b/src/plugins/remark-page/plugin.ts @@ -1,21 +1,48 @@ import type { Plugin, Transformer } from 'unified'; import type { MdxJsxFlowElement } from 'mdast-util-mdx'; -import type { Root } from 'mdast'; +import type { Node, Root } from 'mdast'; import { toJsxAttribute } from '../helpers'; +import path from 'path'; +import { promises as fs } from 'fs'; + +export interface PluginOptions { + extractors: { test: (node: Node) => boolean; getDocumentRootIds: (node: Node) => string[] }[]; + exportDir: string; +} /** * A remark plugin that adds a ` elements at the top of the current page. * This is useful to initialize a page model on page load and to trigger side-effects on page display, * as to load models attached to the `page_id`'s root document. */ -const plugin: Plugin = function plugin(): Transformer { +const plugin: Plugin = function plugin( + options = { extractors: [], exportDir: './.page-index' } +): Transformer { return async (root, file) => { const { visit, EXIT } = await import('unist-util-visit'); const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; if (!page_id) { return; } - visit(root, (node, index, parent) => { + const index: Set = new Set(); + visit(root, (node, idx, parent) => { + const extractor = options.extractors.find((ext) => ext.test(node)); + if (!extractor) { + return; + } + const docRootIds = extractor.getDocumentRootIds(node); + docRootIds.forEach((id) => index.add(id)); + }); + if (index.size > 0) { + await fs.writeFile( + path.join(options.exportDir, `${page_id}.json`), + JSON.stringify([...index], null, 2), + { + encoding: 'utf-8' + } + ); + } + visit(root, (node, idx, parent) => { /** add the MdxPage exactly once at the top of the document and exit */ if (root === node && !parent) { const loaderNode: MdxJsxFlowElement = { diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index cbd602295..ae2640bbe 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -1,5 +1,7 @@ import type { Node } from 'mdast'; +import path from 'path'; import type { LeafDirective } from 'mdast-util-directive'; +import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx'; import strongPlugin, { transformer as captionVisitor } from '../plugins/remark-strong/plugin'; import deflistPlugin from '../plugins/remark-deflist/plugin'; import mdiPlugin from '../plugins/remark-mdi/plugin'; @@ -129,7 +131,39 @@ export const enumerateAnswersPluginConfig = [ export const pdfPluginConfig = pdfPlugin; -export const pagePluginConfig = pagePlugin; +const cwd = process.cwd(); +const indexPath = path.resolve(cwd, './src/.page-index'); +const ComponentsWithId = new Set(['TaskState', 'ProgressState']); +const AnswerTypes = new Set(['state', 'progress']); +export const pagePluginConfig = [ + pagePlugin, + { + exportDir: indexPath, + extractors: [ + { + test: (_node: Node) => { + if (_node.type !== 'mdxJsxFlowElement') { + return false; + } + const node = _node as MdxJsxFlowElement; + const name = node.name as string; + return ( + ComponentsWithId.has(name) || + node.attributes.some( + (a) => + (a as { name?: string }).name === 'type' && AnswerTypes.has(a.value as string) + ) + ); + }, + getDocumentRootIds: (node: Node) => { + const jsxNode = node as MdxJsxFlowElement; + const idAttr = jsxNode.attributes.find((attr) => (attr as any).name === 'id'); + return idAttr ? [idAttr.value] : []; + } + } + ] + } +]; export const graphvizPluginConfig = graphvizPlugin; export const commentPluginConfig = [ From 2cd2a9fb633e4dbbb4fc0fbe1f2e8a46ce81620f Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 20 Oct 2025 11:44:03 +0200 Subject: [PATCH 04/49] account border width in html sandbox --- .../documents/CodeEditor/HtmlEditor/HtmlSandbox.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/documents/CodeEditor/HtmlEditor/HtmlSandbox.tsx b/src/components/documents/CodeEditor/HtmlEditor/HtmlSandbox.tsx index 8d0446235..aa839987a 100644 --- a/src/components/documents/CodeEditor/HtmlEditor/HtmlSandbox.tsx +++ b/src/components/documents/CodeEditor/HtmlEditor/HtmlSandbox.tsx @@ -42,9 +42,11 @@ function sendHeight() { if (scrollHeight !== clientHeight) { parent.postMessage({id: '${id}', type: 'resize', height: scrollHeight}, "*"); } else { + const borderTopWidth = parseFloat(getComputedStyle(document.body).borderTopWidth); + const borderBottomWidth = parseFloat(getComputedStyle(document.body).borderBottomWidth); const mTop = parseFloat(getComputedStyle(document.body).marginTop); const mBottom = parseFloat(getComputedStyle(document.body).marginBottom); - const total = mTop + mBottom; + const total = mTop + mBottom + borderTopWidth + borderBottomWidth; if (scrollHeight > document.body.clientHeight + total) { parent.postMessage({id: '${id}', type: 'resize', height: document.body.clientHeight + total}, "*"); } From b114f15fa858975d76d21d627996e0392facc8a8 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 20 Oct 2025 12:08:54 +0200 Subject: [PATCH 05/49] fix missing null check --- src/components/Admin/EditUser/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Admin/EditUser/index.tsx b/src/components/Admin/EditUser/index.tsx index 418195018..65db66e68 100644 --- a/src/components/Admin/EditUser/index.tsx +++ b/src/components/Admin/EditUser/index.tsx @@ -219,7 +219,7 @@ const EditUser = observer((props: Props) => { authClient.admin .setUserPassword({ userId: user.id, newPassword: password }) .then((res) => { - if (res.data) { + if (res?.data) { setPwState('success'); } else { setPwState('error'); @@ -284,7 +284,7 @@ const EditUser = observer((props: Props) => { setSpinState('deleting'); authClient.admin.removeUser({ userId: user.id }).then( action((res) => { - if (res.data?.success) { + if (res?.data?.success) { userStore.removeFromStore(user.id); props.close(); } From 7f89fafe8dc37eeece51c40c9e0ce2a8662eac3d Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 3 Nov 2025 10:02:03 +0100 Subject: [PATCH 06/49] add experiments --- packages/tdev/page-progress-state/.gitignore | 1 + .../page-progress-state/assets}/.gitignore | 0 .../tdev/page-progress-state/package.json | 15 +++ .../remark-plugin/index.ts | 95 +++++++++++++++++++ .../tdev/page-progress-state/tsconfig.json | 3 + src/.page-index/.gitkeep | 0 src/plugins/remark-page/plugin.ts | 29 +----- src/siteConfig/markdownPluginConfigs.ts | 10 +- src/stores/PageStore.ts | 32 +++++++ src/stores/rootStore.ts | 1 + src/theme/DocItem/Content/index.tsx | 7 ++ src/theme/DocSidebarItem/index.tsx | 2 +- 12 files changed, 163 insertions(+), 32 deletions(-) create mode 100644 packages/tdev/page-progress-state/.gitignore rename {src/.page-index => packages/tdev/page-progress-state/assets}/.gitignore (100%) create mode 100644 packages/tdev/page-progress-state/package.json create mode 100644 packages/tdev/page-progress-state/remark-plugin/index.ts create mode 100644 packages/tdev/page-progress-state/tsconfig.json delete mode 100644 src/.page-index/.gitkeep diff --git a/packages/tdev/page-progress-state/.gitignore b/packages/tdev/page-progress-state/.gitignore new file mode 100644 index 000000000..3a03a092e --- /dev/null +++ b/packages/tdev/page-progress-state/.gitignore @@ -0,0 +1 @@ +.assets \ No newline at end of file diff --git a/src/.page-index/.gitignore b/packages/tdev/page-progress-state/assets/.gitignore similarity index 100% rename from src/.page-index/.gitignore rename to packages/tdev/page-progress-state/assets/.gitignore diff --git a/packages/tdev/page-progress-state/package.json b/packages/tdev/page-progress-state/package.json new file mode 100644 index 000000000..9723aad76 --- /dev/null +++ b/packages/tdev/page-progress-state/package.json @@ -0,0 +1,15 @@ +{ + "name": "@tdev/page-progress-state", + "version": "1.0.0", + "main": "remark-plugin/index.ts", + "types": "remark-plugin/index.ts", + "dependencies": {}, + "devDependencies": { + "vitest": "*", + "@docusaurus/module-type-aliases": "*", + "@docusaurus/core": "*" + }, + "peerDependencies": { + "@tdev/core": "1.0.0" + } +} \ No newline at end of file diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts new file mode 100644 index 000000000..f564a55b3 --- /dev/null +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -0,0 +1,95 @@ +import type { Plugin, Transformer } from 'unified'; +import type { Node, Root } from 'mdast'; +import path from 'path'; +import { promises as fs, accessSync, mkdirSync, writeFileSync, readFileSync } from 'fs'; + +export interface PluginOptions { + extractors: { test: (node: Node) => boolean; getDocumentRootIds: (node: Node) => string[] }[]; +} + +const projectRoot = process.cwd(); + +/** + * + * sidebar: + * { + * "1f6db0ee-aa48-44c7-af43-4b66843f665e": [ ... document root ids ] + * } + * + * structure: + * { + * "path" : { + * "to": { + * "doc": + * }, + * } + * } + */ + +const ensureFile = async (indexPath: string) => { + const assetsDir = path.dirname(indexPath); + try { + accessSync(assetsDir); + } catch { + mkdirSync(assetsDir, { recursive: true }); + } + try { + accessSync(indexPath); + } catch { + writeFileSync(indexPath, JSON.stringify({}, null, 2), { + encoding: 'utf-8' + }); + } +}; + +/** + * A remark plugin that adds a ` elements at the top of the current page. + * This is useful to initialize a page model on page load and to trigger side-effects on page display, + * as to load models attached to the `page_id`'s root document. + */ +const remarkPlugin: Plugin = function plugin( + options = { extractors: [] } +): Transformer { + const index = new Map(); + const structurePath = path.resolve(__dirname, '../assets/', 'structure.json'); + const indexPath = path.resolve(__dirname, '../assets/', 'index.json'); + ensureFile(indexPath); + ensureFile(structurePath); + try { + const content = readFileSync(indexPath, { encoding: 'utf-8' }); + const parsed = JSON.parse(content) as { [key: string]: string[] }; + for (const [key, values] of Object.entries(parsed)) { + index.set(key, values); + } + } catch { + console.log('Error parsing existing index file, starting fresh.'); + } + + return async (root, file) => { + const { visit, EXIT } = await import('unist-util-visit'); + const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; + if (!page_id) { + return; + } + const filePath = path + .relative(projectRoot, file.path) + .replace(/\/(index|README)\.mdx?$/i, '') + .replace(/\.mdx?$/i, ''); + console.log('file', filePath); + const pageIndex = new Set([]); + visit(root, (node, idx, parent) => { + const extractor = options.extractors.find((ext) => ext.test(node)); + if (!extractor) { + return; + } + const docRootIds = extractor.getDocumentRootIds(node); + docRootIds.forEach((id) => pageIndex.add(id)); + }); + index.set(page_id, [...pageIndex]); + await fs.writeFile(indexPath, JSON.stringify(Object.fromEntries(index), null, 2), { + encoding: 'utf-8' + }); + }; +}; + +export default remarkPlugin; diff --git a/packages/tdev/page-progress-state/tsconfig.json b/packages/tdev/page-progress-state/tsconfig.json new file mode 100644 index 000000000..ea56794f8 --- /dev/null +++ b/packages/tdev/page-progress-state/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tsconfig.json" +} diff --git a/src/.page-index/.gitkeep b/src/.page-index/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/plugins/remark-page/plugin.ts b/src/plugins/remark-page/plugin.ts index 1becf1d41..90d748676 100644 --- a/src/plugins/remark-page/plugin.ts +++ b/src/plugins/remark-page/plugin.ts @@ -2,46 +2,19 @@ import type { Plugin, Transformer } from 'unified'; import type { MdxJsxFlowElement } from 'mdast-util-mdx'; import type { Node, Root } from 'mdast'; import { toJsxAttribute } from '../helpers'; -import path from 'path'; -import { promises as fs } from 'fs'; - -export interface PluginOptions { - extractors: { test: (node: Node) => boolean; getDocumentRootIds: (node: Node) => string[] }[]; - exportDir: string; -} /** * A remark plugin that adds a ` elements at the top of the current page. * This is useful to initialize a page model on page load and to trigger side-effects on page display, * as to load models attached to the `page_id`'s root document. */ -const plugin: Plugin = function plugin( - options = { extractors: [], exportDir: './.page-index' } -): Transformer { +const plugin: Plugin = function plugin(): Transformer { return async (root, file) => { const { visit, EXIT } = await import('unist-util-visit'); const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; if (!page_id) { return; } - const index: Set = new Set(); - visit(root, (node, idx, parent) => { - const extractor = options.extractors.find((ext) => ext.test(node)); - if (!extractor) { - return; - } - const docRootIds = extractor.getDocumentRootIds(node); - docRootIds.forEach((id) => index.add(id)); - }); - if (index.size > 0) { - await fs.writeFile( - path.join(options.exportDir, `${page_id}.json`), - JSON.stringify([...index], null, 2), - { - encoding: 'utf-8' - } - ); - } visit(root, (node, idx, parent) => { /** add the MdxPage exactly once at the top of the document and exit */ if (root === node && !parent) { diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index ae2640bbe..c725b99b4 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -15,6 +15,7 @@ import linkAnnotationPlugin from '../plugins/remark-link-annotation/plugin'; import mediaPlugin from '../plugins/remark-media/plugin'; import detailsPlugin from '../plugins/remark-details/plugin'; import pagePlugin from '../plugins/remark-page/plugin'; +import pageProgressStatePlugin from '@tdev/page-progress-state/remark-plugin'; import graphvizPlugin from '@tdev/remark-graphviz/remark-plugin'; import pdfPlugin from '@tdev/remark-pdf/remark-plugin'; import codeAsAttributePlugin from '../plugins/remark-code-as-attribute/plugin'; @@ -135,10 +136,11 @@ const cwd = process.cwd(); const indexPath = path.resolve(cwd, './src/.page-index'); const ComponentsWithId = new Set(['TaskState', 'ProgressState']); const AnswerTypes = new Set(['state', 'progress']); -export const pagePluginConfig = [ - pagePlugin, +export const pagePluginConfig = [pagePlugin, {}]; + +export const pageProgressStatePluginConfig = [ + pageProgressStatePlugin, { - exportDir: indexPath, extractors: [ { test: (_node: Node) => { @@ -164,6 +166,7 @@ export const pagePluginConfig = [ ] } ]; + export const graphvizPluginConfig = graphvizPlugin; export const commentPluginConfig = [ @@ -203,6 +206,7 @@ export const recommendedRemarkPlugins = [ enumerateAnswersPluginConfig, pdfPluginConfig, pagePluginConfig, + pageProgressStatePluginConfig, commentPluginConfig, linkAnnotationPluginConfig, codeAsAttributePluginConfig diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 059fb283c..fbd74e8fb 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -4,6 +4,9 @@ import { RootStore } from '@tdev-stores/rootStore'; import Page from '@tdev-models/Page'; import { computedFn } from 'mobx-utils'; import { allDocuments as apiAllDocuments } from '@tdev-api/document'; +import type { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; +import { PropSidebarItem } from '@docusaurus/plugin-content-docs'; +type PageIndex = { [key: string]: string[] }; export class PageStore extends iStore { readonly root: RootStore; @@ -13,11 +16,40 @@ export class PageStore extends iStore { @observable accessor currentPageId: string | undefined = undefined; @observable accessor runningTurtleScriptId: string | undefined = undefined; + @observable.ref accessor pageIndex: PageIndex = {}; + sidebars = observable.map>([], { deep: false }); + constructor(store: RootStore) { super(); this.root = store; } + @action + configureSidebar(id: string, sidebar: ReturnType) { + if (this.sidebars.has(id) || !sidebar) { + return; + } + this.sidebars.set(id, sidebar); + sidebar.items.forEach((item) => { + if (item.type !== 'category') { + return; + } + item.items; + }); + } + + @action + load() { + return import('@tdev/page-progress-state/assets/index.json').then((mod) => { + this.updatePageIndex(mod.default as PageIndex); + }); + } + + @action + updatePageIndex(newIndex: PageIndex) { + this.pageIndex = newIndex; + } + find = computedFn( function (this: PageStore, id?: string): Page | undefined { if (!id) { diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index b2b623e50..7c8a6a5de 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -55,6 +55,7 @@ export class RootStore { * load stores */ this.userStore.load(); + this.pageStore.load(); this.studentGroupStore.load(); this.cmsStore.initialize(); if (user.hasElevatedAccess) { diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx index 12295d8d1..54581cc7f 100644 --- a/src/theme/DocItem/Content/index.tsx +++ b/src/theme/DocItem/Content/index.tsx @@ -6,10 +6,17 @@ import { observer } from 'mobx-react-lite'; import { useStore } from '@tdev-hooks/useStore'; import { useLocation } from '@docusaurus/router'; type Props = WrapperProps; +import { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; const ContentWrapper = observer((props: Props): React.ReactNode => { const pageStore = useStore('pageStore'); const location = useLocation(); + const sidebar = useDocsSidebar(); + React.useEffect(() => { + if (sidebar?.name) { + pageStore.configureSidebar(sidebar.name, sidebar); + } + }, [sidebar, pageStore]); React.useEffect(() => { if (pageStore.current) { diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index cf49c77eb..1f674eeac 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -8,9 +8,9 @@ import Icon from '@mdi/react'; import { mdiCheck, mdiCheckCircle, mdiProgressQuestion } from '@mdi/js'; import clsx from 'clsx'; import styles from './styles.module.scss'; +import { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; type Props = WrapperProps; - const DocSidebarItemWrapper = observer((props: Props): ReactNode => { const pageStore = useStore('pageStore'); const { pid } = (props.item.customProps || {}) as { pid?: string }; From 4634aaba588d8e79debc50e41787d846c36eac7f Mon Sep 17 00:00:00 2001 From: bh0fer Date: Fri, 19 Dec 2025 08:06:39 +0100 Subject: [PATCH 07/49] fix docusaurus config --- docusaurus.config.ts | 292 +++++++++++++++++++++++-------------------- 1 file changed, 155 insertions(+), 137 deletions(-) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index c88f7d4ea..d5dc8388d 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -41,8 +41,8 @@ import { } from './src/siteConfig/markdownPluginConfigs'; import { remarkPdfPluginConfig } from '@tdev/remark-pdf'; import { GlobExcludeDefault } from '@docusaurus/utils'; -import type { ParseFrontMatterResult } from '@docusaurus/types/src/markdown'; import extractPackageDocs from './src/siteConfig/extractPackageDocs'; +import { ParseFrontMatterResult } from '@docusaurus/types/src/markdown'; const withSiteConfig = async (): Promise => { if (process.env.SITE_CONFIG_PATH) { @@ -204,150 +204,168 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { } }, - // Even if you don't use internationalization, you can use this field to set - // useful metadata like html lang. For example, if your site is Chinese, you - // may want to replace "en" with "zh-Hans". - i18n: { - defaultLocale: siteConfig.defaultLocale ?? 'de', - locales: siteConfig.locales ?? ['de'], - }, - markdown: { - parseFrontMatter: async (params) => { - const result = await params.defaultParseFrontMatter(params); - if (process.env.NODE_ENV === 'production') { - return exposePidToSidebar(result); - } - /** - * don't add frontmatter to partials - */ - const fileName = path.basename(params.filePath); - if (fileName.startsWith('_')) { - // it is a partial, don't add frontmatter - return exposePidToSidebar(result); - } - /** - * don't edit blogs frontmatter - */ - if (params.filePath.startsWith(`${BUILD_LOCATION}/blog/`)) { - return result; - } - if (process.env.NODE_ENV !== 'production') { - let needsRewrite = false; - /** - * material on ofi.gbsl.website used to have 'sidebar_custom_props.id' as the page id. - * Rewrite it as 'page_id' and remove it in case it's present. - */ - if ('sidebar_custom_props' in result.frontMatter && 'id' in (result.frontMatter as any).sidebar_custom_props) { - if (!('page_id' in result.frontMatter)) { - result.frontMatter.page_id = (result.frontMatter as any).sidebar_custom_props.id; - needsRewrite = true; + // Even if you don't use internationalization, you can use this field to set + // useful metadata like html lang. For example, if your site is Chinese, you + // may want to replace "en" with "zh-Hans". + i18n: { + defaultLocale: siteConfig.defaultLocale ?? 'de', + locales: siteConfig.locales ?? ['de'] + }, + markdown: { + parseFrontMatter: async (params) => { + const result = await params.defaultParseFrontMatter(params); + if (process.env.NODE_ENV === 'production') { + return exposePidToSidebar(result); } - delete (result.frontMatter as any).sidebar_custom_props.id; - if (Object.keys((result.frontMatter as any).sidebar_custom_props).length === 0) { - delete result.frontMatter.sidebar_custom_props; + /** + * don't add frontmatter to partials + */ + const fileName = path.basename(params.filePath); + if (fileName.startsWith('_')) { + // it is a partial, don't add frontmatter + return exposePidToSidebar(result); } - } - if (!('page_id' in result.frontMatter)) { - result.frontMatter.page_id = uuidv4(); - needsRewrite = true; - } - if (needsRewrite) { - await fs.writeFile( - params.filePath, - matter.stringify(params.fileContent, result.frontMatter), - { encoding: 'utf-8' } - ) - } - } - return exposePidToSidebar(result); - }, - mermaid: true, - hooks: { - onBrokenMarkdownLinks: siteConfig.onBrokenMarkdownLinks ?? 'warn', - }, - ...siteConfig.markdown - }, - presets: [ - [ - 'classic', - { - docs: DOCS_PATH ? { - sidebarPath: './sidebars.ts', - // Remove this to remove the "edit this page" links. - path: DOCS_PATH, - editUrl: - `/cms/${ORGANIZATION_NAME}/${PROJECT_NAME}/`, - remarkPlugins: REMARK_PLUGINS, - rehypePlugins: REHYPE_PLUGINS, - beforeDefaultRemarkPlugins: BEFORE_DEFAULT_REMARK_PLUGINS, - ...(siteConfig.docs || {}) - } : false, - blog: BLOG_PATH ? { - path: BLOG_PATH, - showReadingTime: true, - // Remove this to remove the "edit this page" links. - editUrl: - `/cms/${ORGANIZATION_NAME}/${PROJECT_NAME}/`, - remarkPlugins: REMARK_PLUGINS, - rehypePlugins: REHYPE_PLUGINS, - beforeDefaultRemarkPlugins: BEFORE_DEFAULT_REMARK_PLUGINS, - ...(siteConfig.blog || {}) - } : false, - pages: { - id: 'website-pages', - path: 'website/pages', - remarkPlugins: REMARK_PLUGINS, - rehypePlugins: REHYPE_PLUGINS, - beforeDefaultRemarkPlugins: BEFORE_DEFAULT_REMARK_PLUGINS, - editUrl: `/cms/${ORGANIZATION_NAME}/${PROJECT_NAME}/`, - ...(siteConfig.pages || {}) + /** + * don't edit blogs frontmatter + */ + if (params.filePath.startsWith(`${BUILD_LOCATION}/blog/`)) { + return result; + } + if (process.env.NODE_ENV !== 'production') { + let needsRewrite = false; + /** + * material on ofi.gbsl.website used to have 'sidebar_custom_props.id' as the page id. + * Rewrite it as 'page_id' and remove it in case it's present. + */ + if ( + 'sidebar_custom_props' in result.frontMatter && + 'id' in (result.frontMatter as any).sidebar_custom_props + ) { + if (!('page_id' in result.frontMatter)) { + result.frontMatter.page_id = (result.frontMatter as any).sidebar_custom_props.id; + needsRewrite = true; + } + delete (result.frontMatter as any).sidebar_custom_props.id; + if (Object.keys((result.frontMatter as any).sidebar_custom_props).length === 0) { + delete result.frontMatter.sidebar_custom_props; + } + } + if (!('page_id' in result.frontMatter)) { + result.frontMatter.page_id = uuidv4(); + needsRewrite = true; + } + if (needsRewrite) { + await fs.writeFile(params.filePath, matter.stringify(params.fileContent, result.frontMatter), { + encoding: 'utf-8' + }); + } + } + return exposePidToSidebar(result); }, - theme: { - customCss: siteConfig.siteStyles ? ['./src/css/custom.scss', ...siteConfig.siteStyles] : './src/css/custom.scss', + mermaid: true, + hooks: { + onBrokenMarkdownLinks: siteConfig.onBrokenMarkdownLinks ?? 'warn', + onBrokenMarkdownImages: + process.env.NODE_ENV === 'production' + ? (siteConfig.onBrokenImages ?? 'throw') + : onBrokenImage }, - } satisfies Preset.Options, - ], - ], - themeConfig: { - image: siteConfig.socialCard ?? 'img/social-card.jpg', - navbar: { - title: TITLE, - logo: { - alt: `${TITLE} Logo`, - src: siteConfig.logo ?? 'img/logo.svg', + ...siteConfig.markdown }, - items: siteConfig.navbarItems ?? [ - gallery, - blog, - cms, - gitHub, - taskStateOverview, - accountSwitcher, - devModeAccessLocalFS, - requestTarget, - personalSpaceOverlay, - loginProfileButton, - ], - }, - footer: { - style: siteConfig.footer?.style ?? 'dark', - links: siteConfig.footer?.links ?? [ - { - title: 'Docs', - items: [ - { - label: 'Galerie', - to: '/docs/gallery', + presets: [ + [ + 'classic', + { + docs: DOCS_PATH + ? { + sidebarPath: './sidebars.ts', + // Remove this to remove the "edit this page" links. + path: DOCS_PATH, + editUrl: '/', + remarkPlugins: REMARK_PLUGINS, + rehypePlugins: REHYPE_PLUGINS, + beforeDefaultRemarkPlugins: BEFORE_DEFAULT_REMARK_PLUGINS, + ...DEFAULT_ADMONITION_CONFIG, + exclude: [...new Set([...GlobExcludeDefault, '**/node_modules/**'])], + async sidebarItemsGenerator({defaultSidebarItemsGenerator, ...args}) { + const sidebarItems = await defaultSidebarItemsGenerator(args); + return extractPackageDocs(sidebarItems); + }, + ...(siteConfig.docs || {}) + } + : false, + blog: BLOG_PATH + ? { + path: BLOG_PATH, + showReadingTime: true, + // Remove this to remove the "edit this page" links. + editUrl: '/', + remarkPlugins: REMARK_PLUGINS, + rehypePlugins: REHYPE_PLUGINS, + beforeDefaultRemarkPlugins: BEFORE_DEFAULT_REMARK_PLUGINS, + ...DEFAULT_ADMONITION_CONFIG, + ...(siteConfig.blog || {}) + } + : false, + pages: { + id: 'website-pages', + path: 'website/pages', + remarkPlugins: REMARK_PLUGINS, + rehypePlugins: REHYPE_PLUGINS, + beforeDefaultRemarkPlugins: BEFORE_DEFAULT_REMARK_PLUGINS, + editUrl: '/', + ...DEFAULT_ADMONITION_CONFIG, + ...(siteConfig.pages || {}) }, - ], + theme: { + customCss: siteConfig.siteStyles + ? ['./src/css/custom.scss', ...siteConfig.siteStyles] + : './src/css/custom.scss' + } + } satisfies Preset.Options + ] + ], + themeConfig: { + image: siteConfig.socialCard ?? 'img/social-card.jpg', + navbar: { + title: TITLE, + logo: { + alt: `${TITLE} Logo`, + src: siteConfig.logo ?? 'img/logo.svg' + }, + items: siteConfig.navbarItems ?? [ + docs, + blog, + gitHub, + taskStateOverview, + accountSwitcher, + devModeAccessLocalFS, + requestTarget, + personalSpaceOverlay, + loginProfileButton + ] }, - { - title: 'More', - items: [ + footer: { + style: siteConfig.footer?.style ?? 'dark', + links: siteConfig.footer?.links ?? [ { - label: 'Blog', - to: '/blog', + title: 'Unterricht', + items: [ + { + label: 'Material', + to: '/docs' + } + ] }, + { + title: 'Mehr', + items: [ + { + label: 'Blog', + to: '/blog' + } + ] + } ], copyright: siteConfig.footer?.copyright ?? @@ -414,4 +432,4 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { return config; }); -export default docusaurusConfig; +export default docusaurusConfig; \ No newline at end of file From 1e3750603d485d038bc4e23bb4c4da7f971ca8ec Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 27 Jan 2026 00:20:23 +0100 Subject: [PATCH 08/49] poc of gathering doc ids --- package.json | 2 + src/components/Answer/helper.answer.ts | 16 +++ src/components/Answer/index.tsx | 6 +- .../remark-gather-document-roots/plugin.ts | 116 ++++++++++++++++++ src/siteConfig/markdownPluginConfigs.ts | 64 ++++++++++ yarn.lock | 29 ++++- 6 files changed, 228 insertions(+), 5 deletions(-) create mode 100644 src/components/Answer/helper.answer.ts create mode 100644 src/plugins/remark-gather-document-roots/plugin.ts diff --git a/package.json b/package.json index 35ed55ab6..5187c1815 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "@docusaurus/plugin-rsdoctor": "^3.9.2", "@docusaurus/tsconfig": "^3.9.2", "@docusaurus/types": "^3.9.2", + "@types/better-sqlite3": "^7.6.13", "@types/exceljs": "^1.3.0", "@types/fs-extra": "^11.0.4", "@types/js-yaml": "^4.0.9", @@ -104,6 +105,7 @@ "@types/uuid": "^10.0.0", "@types/wicg-file-system-access": "^2023.10.6", "@vitest/coverage-v8": "^2.0.5", + "better-sqlite3": "^12.6.2", "concurrently": "^9.2.1", "fs-extra": "^11.2.0", "prettier": "^3.3.2", diff --git a/src/components/Answer/helper.answer.ts b/src/components/Answer/helper.answer.ts new file mode 100644 index 000000000..e1f66dd5c --- /dev/null +++ b/src/components/Answer/helper.answer.ts @@ -0,0 +1,16 @@ +import { DocumentType } from '@tdev-api/document'; + +export const getAnswerDocumentType = (type: string): DocumentType => { + switch (type) { + case 'text': + return 'quill_v2'; + case 'string': + return 'string'; + case 'state': + return 'task_state'; + case 'progress': + return 'progress_state'; + default: + return type as DocumentType; + } +}; diff --git a/src/components/Answer/index.tsx b/src/components/Answer/index.tsx index db1c4bdf7..bc05d3d7a 100644 --- a/src/components/Answer/index.tsx +++ b/src/components/Answer/index.tsx @@ -5,6 +5,7 @@ import String from '@tdev-components/documents/String'; import TaskState from '@tdev-components/documents/TaskState'; import ProgressState from '@tdev-components/documents/ProgressState'; import { DocumentType } from '@tdev-api/document'; +import { getAnswerDocumentType } from './helper.answer'; interface Props { id: string; @@ -21,8 +22,7 @@ type AnswerProps = Props & ); const Answer = observer((props: AnswerProps) => { - switch (props.type) { - case 'text': + switch (getAnswerDocumentType(props.type)) { case 'quill_v2': return )} />; case 'string': @@ -34,10 +34,8 @@ const Answer = observer((props: AnswerProps) => { } /> ); - case 'progress': case 'progress_state': return )} />; - case 'state': case 'task_state': return ; } diff --git a/src/plugins/remark-gather-document-roots/plugin.ts b/src/plugins/remark-gather-document-roots/plugin.ts new file mode 100644 index 000000000..d1692c54c --- /dev/null +++ b/src/plugins/remark-gather-document-roots/plugin.ts @@ -0,0 +1,116 @@ +import type { Plugin, Transformer } from 'unified'; +import type { Root } from 'mdast'; +import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; +import path from 'path'; +import Database from 'better-sqlite3'; +import { accessSync, mkdirSync } from 'fs'; + +const projectRoot = process.cwd(); +const dbPath = path.join(projectRoot, '.docusaurus', 'tdev-gather-document-roots', 'docs-pages.db'); + +try { + accessSync(path.dirname(dbPath)); +} catch { + mkdirSync(path.dirname(dbPath), { recursive: true }); +} +const db = new Database(dbPath, { fileMustExist: false }); +db.pragma('journal_mode = WAL'); + +const createPages = db.prepare( + 'CREATE TABLE IF NOT EXISTS pages (id TEXT NOT NULL, path TEXT NOT NULL, UNIQUE(id, path))' +); +const createDocRoots = db.prepare( + 'CREATE TABLE IF NOT EXISTS document_roots (id TEXT PRIMARY KEY, type TEXT NOT NULL, page_id TEXT NOT NULL, position INTEGER NOT NULL)' +); +createPages.run(); +createDocRoots.run(); + +const insertPage = db.prepare( + 'INSERT INTO pages (id, path) VALUES (@id, @path) ON CONFLICT(id, path) DO NOTHING' +); +const insertDocRoot = db.prepare( + 'INSERT INTO document_roots (id, type, page_id, position) VALUES (@id, @type, @page_id, @position) ON CONFLICT(id) DO UPDATE SET type=excluded.type, page_id=excluded.page_id, position=excluded.position' +); + +interface JsxConfig { + /** + * Component Name + */ + name: string; + /** + * @default id + */ + attributeName?: string; + docTypeExtractor: (node: T) => string; +} + +export interface PluginOptions { + components: JsxConfig[]; + liveCodeDocTypeTransformer?: (lang: `live_${string}`) => string; +} + +/** + * This plugin transforms inline code and code blocks in MDX files to use + * custom MDX components by converting the code content into attributes. + */ +const plugin: Plugin = function plugin( + options = { components: [], liveCodeDocTypeTransformer: () => 'code' } +): Transformer { + const { components } = options; + const mdxJsxComponents = new Map(components.map((c) => [c.name, c])); + return async (root, file) => { + const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; + if (components.length < 1 || !page_id) { + return; + } + const { visit, SKIP, CONTINUE } = await import('unist-util-visit'); + + const filePath = path + .relative(projectRoot, file.path) + .replace(/\/(index|README)\.mdx?$/i, '') + .replace(/\.mdx?$/i, ''); + insertPage.run({ id: page_id, path: filePath }); + let pagePosition = 0; + visit(root, (node, index, parent) => { + if (node.type === 'code') { + const idMatch = /id=([a-zA-Z0-9-_]+)/.exec(node.meta || ''); + if (!idMatch) { + return CONTINUE; + } + const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); + const docId = idMatch[1]; + const docType = liveLangMatch + ? options.liveCodeDocTypeTransformer!(liveLangMatch[1] as `live_${string}`) + : 'code'; + insertDocRoot.run({ + id: docId, + type: docType, + page_id: page_id, + position: pagePosition + }); + pagePosition = pagePosition + 1; + return CONTINUE; + } + if ( + (node.type !== 'mdxJsxFlowElement' && node.type !== 'mdxJsxTextElement') || + !mdxJsxComponents.has(node.name as string) + ) { + return CONTINUE; + } + const config = mdxJsxComponents.get(node.name!)!; + const attr = node.attributes.find( + (a) => a.type === 'mdxJsxAttribute' && a.name === (config.attributeName || 'id') + ); + if (!attr || attr.type !== 'mdxJsxAttribute' || typeof attr.value !== 'string') { + return CONTINUE; + } + const docId = attr.value; + const docType = config.docTypeExtractor(node); + insertDocRoot.run({ id: docId, type: docType, page_id: page_id, position: pagePosition }); + pagePosition = pagePosition + 1; + return CONTINUE; + }); + }; +}; + +export default plugin; diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index 2c62430f8..2d48332e1 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -13,11 +13,14 @@ import linkAnnotationPlugin from '../plugins/remark-link-annotation/plugin'; import mediaPlugin from '../plugins/remark-media/plugin'; import detailsPlugin from '../plugins/remark-details/plugin'; import pagePlugin from '../plugins/remark-page/plugin'; +import gatherDocRootPlugin from '../plugins/remark-gather-document-roots/plugin'; import graphvizPlugin from '@tdev/remark-graphviz/remark-plugin'; import pdfPlugin from '@tdev/remark-pdf/remark-plugin'; import codeAsAttributePlugin from '../plugins/remark-code-as-attribute/plugin'; import commentPlugin from '../plugins/remark-comments/plugin'; import enumerateAnswersPlugin from '../plugins/remark-enumerate-components/plugin'; +import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; +import { getAnswerDocumentType } from '../components/Answer/helper.answer'; export const flexCardsPluginConfig = [ flexCardsPlugin, @@ -153,6 +156,66 @@ export const linkAnnotationPluginConfig = [ } ]; +export const gatherDocRootPluginConfig = [ + gatherDocRootPlugin, + { + components: [ + { + name: 'Answer', + docTypeExtractor: (node: MdxJsxFlowElement) => + getAnswerDocumentType( + node.attributes.find((a) => a.type === 'mdxJsxAttribute' && a.name === 'type') + ?.value as string + ) || 'unknown' + }, + { + name: 'ProgressState', + docTypeExtractor: () => 'progress_state' + }, + { + name: 'TaskState', + docTypeExtractor: () => 'task_state' + }, + { + name: 'QuillV2', + docTypeExtractor: () => 'quill_v2' + }, + { + name: 'String', + docTypeExtractor: () => 'string' + }, + { + name: 'CmsText', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'CmsCode', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'Restricted', + docTypeExtractor: () => 'restricted' + }, + { + name: 'DynamicDocumentRoots', + docTypeExtractor: () => 'dynamic_document_roots' + } + ], + liveCodeDocTypeTransformer: (liveCode: `live_${string}`) => { + switch (liveCode) { + case 'live_py': + case 'live_bry': + // legacy name, TODO. should be 'brython_code'? + return 'script'; + case 'live_pyo': + return 'pyodide_code'; + default: + return 'code'; + } + } + } +]; + export const rehypeKatexPluginConfig = rehypeKatex; export const recommendedBeforeDefaultRemarkPlugins = [ @@ -165,6 +228,7 @@ export const recommendedBeforeDefaultRemarkPlugins = [ ]; export const recommendedRemarkPlugins = [ + gatherDocRootPluginConfig, strongPluginConfig, mdiPluginConfig, mediaPluginConfig, diff --git a/yarn.lock b/yarn.lock index 372f5d1db..741cd4622 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5632,6 +5632,13 @@ dependencies: tslib "^2.4.0" +"@types/better-sqlite3@^7.6.13": + version "7.6.13" + resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz#a72387f00d2f53cab699e63f2e2c05453cf953f0" + integrity sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA== + dependencies: + "@types/node" "*" + "@types/body-parser@*": version "1.19.6" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" @@ -7025,6 +7032,14 @@ better-call@1.1.8: rou3 "^0.7.10" set-cookie-parser "^2.7.1" +better-sqlite3@^12.6.2: + version "12.6.2" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-12.6.2.tgz#770649f28a62e543a360f3dfa1afe4cc944b1937" + integrity sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA== + dependencies: + bindings "^1.5.0" + prebuild-install "^7.1.1" + big-integer@^1.6.17: version "1.6.52" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" @@ -7048,6 +7063,13 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bl@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -9454,6 +9476,11 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filesize@^10.1.6: version "10.1.6" resolved "https://registry.yarnpkg.com/filesize/-/filesize-10.1.6.tgz#31194da825ac58689c0bce3948f33ce83aabd361" @@ -13610,7 +13637,7 @@ postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.43, postcss@^8.5 picocolors "^1.1.1" source-map-js "^1.2.1" -prebuild-install@^7.1.3: +prebuild-install@^7.1.1, prebuild-install@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== From fae0d579edf7701f2189ef08453c09c2b85e070c Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 27 Jan 2026 08:39:03 +0100 Subject: [PATCH 09/49] better config option --- src/plugins/remark-gather-document-roots/plugin.ts | 11 ++++------- src/siteConfig/markdownPluginConfigs.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/plugins/remark-gather-document-roots/plugin.ts b/src/plugins/remark-gather-document-roots/plugin.ts index d1692c54c..6a18b2a82 100644 --- a/src/plugins/remark-gather-document-roots/plugin.ts +++ b/src/plugins/remark-gather-document-roots/plugin.ts @@ -1,5 +1,5 @@ import type { Plugin, Transformer } from 'unified'; -import type { Root } from 'mdast'; +import type { Code, Root } from 'mdast'; import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; import path from 'path'; import Database from 'better-sqlite3'; @@ -46,7 +46,7 @@ interface JsxConfig string; + persistedCodeType?: (code: Code) => string; } /** @@ -54,7 +54,7 @@ export interface PluginOptions { * custom MDX components by converting the code content into attributes. */ const plugin: Plugin = function plugin( - options = { components: [], liveCodeDocTypeTransformer: () => 'code' } + options = { components: [], persistedCodeType: () => 'code' } ): Transformer { const { components } = options; const mdxJsxComponents = new Map(components.map((c) => [c.name, c])); @@ -77,11 +77,8 @@ const plugin: Plugin = function plugin( if (!idMatch) { return CONTINUE; } - const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); const docId = idMatch[1]; - const docType = liveLangMatch - ? options.liveCodeDocTypeTransformer!(liveLangMatch[1] as `live_${string}`) - : 'code'; + const docType = options.persistedCodeType?.(node) ?? 'code'; insertDocRoot.run({ id: docId, type: docType, diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index 2d48332e1..1a533430c 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -1,4 +1,4 @@ -import type { Node } from 'mdast'; +import type { Code, Node } from 'mdast'; import type { LeafDirective } from 'mdast-util-directive'; import strongPlugin, { transformer as captionVisitor } from '../plugins/remark-strong/plugin'; import deflistPlugin from '../plugins/remark-deflist/plugin'; @@ -201,7 +201,13 @@ export const gatherDocRootPluginConfig = [ docTypeExtractor: () => 'dynamic_document_roots' } ], - liveCodeDocTypeTransformer: (liveCode: `live_${string}`) => { + persistedCodeType: (node: Code) => { + if (node.lang === 'html') { + return 'script'; + } + const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); + const liveCode = liveLangMatch ? liveLangMatch[1] : null; + switch (liveCode) { case 'live_py': case 'live_bry': From df06f79f6e3d6299da47ea46c68ad2d3b26f19ea Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 27 Jan 2026 14:29:18 +0100 Subject: [PATCH 10/49] work to synchronize pocs --- docusaurus.config.ts | 37 +--- packages/tdev/page-progress-state/plugin.ts | 27 +++ .../remark-plugin/index.ts | 158 ++++++++++-------- .../remark-gather-document-roots/plugin.ts | 113 ------------- src/siteConfig/markdownPluginConfigs.ts | 70 +++----- src/stores/PageStore.ts | 7 +- 6 files changed, 144 insertions(+), 268 deletions(-) create mode 100644 packages/tdev/page-progress-state/plugin.ts delete mode 100644 src/plugins/remark-gather-document-roots/plugin.ts diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 26b7c129c..7df49bf2a 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -32,6 +32,7 @@ import { socketIoNoDepWarningsPluginConfig, aliasConfigurationPlugin } from './src/siteConfig/pluginConfigs'; +import persistableDocuments from './packages/tdev/page-progress-state/plugin'; import { useTdevContentPath } from './src/siteConfig/helpers'; import path from 'path'; import { @@ -41,21 +42,6 @@ import { } from './src/siteConfig/markdownPluginConfigs'; import { remarkPdfPluginConfig } from '@tdev/remark-pdf'; import { GlobExcludeDefault } from '@docusaurus/utils'; -import extractPackageDocs from './src/siteConfig/extractPackageDocs'; -import { ParseFrontMatterResult } from '@docusaurus/types/src/markdown'; - -const withSiteConfig = async (): Promise => { - if (process.env.SITE_CONFIG_PATH) { - console.log(`Using site config from ${process.env.SITE_CONFIG_PATH}`); - const pathToConfig = path.resolve(process.cwd(), process.env.SITE_CONFIG_PATH); - const getConfig = await import(pathToConfig).then((mod) => mod.default); - return getConfig(); - } else { - console.log(`Using site config from default './siteConfig'`); - const getConfig = await import('./siteConfig').then((mod) => mod.default); - return getConfig(); - } -}; const BUILD_LOCATION = __dirname; const GIT_COMMIT_SHA = process.env.GITHUB_SHA || Math.random().toString(36).substring(7); @@ -75,20 +61,6 @@ const DEFAULT_ADMONITION_CONFIG = { extendDefaults: true } }; -/** - * exposes the `page_id` frontmatter as `pid` in `sidebar_custom_props` - * this way the sidebar can access the page_id without additional plugins - * and we can use it to access the page model for the current page in the sidebar - */ -const exposePidToSidebar = (fm: ParseFrontMatterResult) => { - if (!('sidebar_custom_props' in fm.frontMatter)) { - fm.frontMatter.sidebar_custom_props = {}; - } - if (!('pid' in (fm.frontMatter as any).sidebar_custom_props) && ('page_id' in fm.frontMatter)) { - (fm.frontMatter.sidebar_custom_props as any).pid = fm.frontMatter.page_id; - } - return fm; -}; const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { const TITLE = siteConfig.title ?? 'Teaching-Dev'; @@ -217,7 +189,7 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { parseFrontMatter: async (params) => { const result = await params.defaultParseFrontMatter(params); if (process.env.NODE_ENV === 'production') { - return exposePidToSidebar(result); + return result; } /** * don't add frontmatter to partials @@ -225,7 +197,7 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { const fileName = path.basename(params.filePath); if (fileName.startsWith('_')) { // it is a partial, don't add frontmatter - return exposePidToSidebar(result); + return result; } /** * don't edit blogs frontmatter @@ -268,7 +240,7 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { }); } } - return exposePidToSidebar(result); + return result; }, mermaid: true, hooks: { @@ -400,6 +372,7 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { remarkPdfPluginConfig, socketIoNoDepWarningsPluginConfig, ...loadedPlugins, + persistableDocuments, [ '@docusaurus/plugin-content-pages', { diff --git a/packages/tdev/page-progress-state/plugin.ts b/packages/tdev/page-progress-state/plugin.ts new file mode 100644 index 000000000..c02f1991b --- /dev/null +++ b/packages/tdev/page-progress-state/plugin.ts @@ -0,0 +1,27 @@ +import { LoadContext, Plugin, PluginModule } from '@docusaurus/types'; +import { Joi } from '@docusaurus/utils-validation'; +import fs from 'fs-extra'; +import path from 'path'; + +const persistableDocuments: PluginModule = (context: LoadContext) => { + const isHashRouter = context.siteConfig.future?.experimental_router === 'hash'; + return { + name: 'tdev-persistable-documents', + async loadContent() { + console.log('Calling persistable-documents plugin loadContent'); + return {}; + }, + async contentLoaded({ actions: { setGlobalData } }) { + console.log('Calling persistable-documents plugin contentLoaded'); + }, + + async postBuild({ siteConfig = {}, routesPaths = [], outDir }) { + // Print out to console all the rendered routes. + routesPaths.map((route) => { + console.log(route); + }); + } + }; +}; + +export default persistableDocuments; diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts index f564a55b3..28a71ad35 100644 --- a/packages/tdev/page-progress-state/remark-plugin/index.ts +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -1,93 +1,113 @@ import type { Plugin, Transformer } from 'unified'; -import type { Node, Root } from 'mdast'; +import type { Code, Root } from 'mdast'; +import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; import path from 'path'; -import { promises as fs, accessSync, mkdirSync, writeFileSync, readFileSync } from 'fs'; +import Database from 'better-sqlite3'; +import { accessSync, mkdirSync } from 'fs'; -export interface PluginOptions { - extractors: { test: (node: Node) => boolean; getDocumentRootIds: (node: Node) => string[] }[]; +const projectRoot = process.cwd(); +const dbPath = path.join(projectRoot, '.docusaurus', 'tdev-gather-document-roots', 'docs-pages.db'); + +try { + accessSync(path.dirname(dbPath)); +} catch { + mkdirSync(path.dirname(dbPath), { recursive: true }); } +const db = new Database(dbPath, { fileMustExist: false }); +db.pragma('journal_mode = WAL'); -const projectRoot = process.cwd(); +const createPages = db.prepare( + 'CREATE TABLE IF NOT EXISTS pages (id TEXT NOT NULL, path TEXT NOT NULL, UNIQUE(id, path))' +); +const createDocRoots = db.prepare( + 'CREATE TABLE IF NOT EXISTS document_roots (id TEXT PRIMARY KEY, type TEXT NOT NULL, page_id TEXT NOT NULL, position INTEGER NOT NULL)' +); +createPages.run(); +createDocRoots.run(); -/** - * - * sidebar: - * { - * "1f6db0ee-aa48-44c7-af43-4b66843f665e": [ ... document root ids ] - * } - * - * structure: - * { - * "path" : { - * "to": { - * "doc": - * }, - * } - * } - */ +const insertPage = db.prepare( + 'INSERT INTO pages (id, path) VALUES (@id, @path) ON CONFLICT(id, path) DO NOTHING' +); +const insertDocRoot = db.prepare( + 'INSERT INTO document_roots (id, type, page_id, position) VALUES (@id, @type, @page_id, @position) ON CONFLICT(id) DO UPDATE SET type=excluded.type, page_id=excluded.page_id, position=excluded.position' +); -const ensureFile = async (indexPath: string) => { - const assetsDir = path.dirname(indexPath); - try { - accessSync(assetsDir); - } catch { - mkdirSync(assetsDir, { recursive: true }); - } - try { - accessSync(indexPath); - } catch { - writeFileSync(indexPath, JSON.stringify({}, null, 2), { - encoding: 'utf-8' - }); - } -}; +interface JsxConfig { + /** + * Component Name + */ + name: string; + /** + * @default id + */ + attributeName?: string; + docTypeExtractor: (node: T) => string; +} + +export interface PluginOptions { + components: JsxConfig[]; + persistedCodeType?: (code: Code) => string; +} /** - * A remark plugin that adds a ` elements at the top of the current page. - * This is useful to initialize a page model on page load and to trigger side-effects on page display, - * as to load models attached to the `page_id`'s root document. + * This plugin transforms inline code and code blocks in MDX files to use + * custom MDX components by converting the code content into attributes. */ const remarkPlugin: Plugin = function plugin( - options = { extractors: [] } + options = { components: [], persistedCodeType: () => 'code' } ): Transformer { - const index = new Map(); - const structurePath = path.resolve(__dirname, '../assets/', 'structure.json'); - const indexPath = path.resolve(__dirname, '../assets/', 'index.json'); - ensureFile(indexPath); - ensureFile(structurePath); - try { - const content = readFileSync(indexPath, { encoding: 'utf-8' }); - const parsed = JSON.parse(content) as { [key: string]: string[] }; - for (const [key, values] of Object.entries(parsed)) { - index.set(key, values); - } - } catch { - console.log('Error parsing existing index file, starting fresh.'); - } - + const { components } = options; + const mdxJsxComponents = new Map(components.map((c) => [c.name, c])); return async (root, file) => { - const { visit, EXIT } = await import('unist-util-visit'); const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; - if (!page_id) { + if (components.length < 1 || !page_id) { return; } + const { visit, SKIP, CONTINUE } = await import('unist-util-visit'); + console.log( + ` Processing persistable documents for page_id=${page_id}` + ); const filePath = path .relative(projectRoot, file.path) .replace(/\/(index|README)\.mdx?$/i, '') .replace(/\.mdx?$/i, ''); - console.log('file', filePath); - const pageIndex = new Set([]); - visit(root, (node, idx, parent) => { - const extractor = options.extractors.find((ext) => ext.test(node)); - if (!extractor) { - return; + insertPage.run({ id: page_id, path: filePath }); + let pagePosition = 0; + visit(root, (node, index, parent) => { + if (node.type === 'code') { + const idMatch = /id=([a-zA-Z0-9-_]+)/.exec(node.meta || ''); + if (!idMatch) { + return CONTINUE; + } + const docId = idMatch[1]; + const docType = options.persistedCodeType?.(node) ?? 'code'; + insertDocRoot.run({ + id: docId, + type: docType, + page_id: page_id, + position: pagePosition + }); + pagePosition = pagePosition + 1; + return CONTINUE; } - const docRootIds = extractor.getDocumentRootIds(node); - docRootIds.forEach((id) => pageIndex.add(id)); - }); - index.set(page_id, [...pageIndex]); - await fs.writeFile(indexPath, JSON.stringify(Object.fromEntries(index), null, 2), { - encoding: 'utf-8' + if ( + (node.type !== 'mdxJsxFlowElement' && node.type !== 'mdxJsxTextElement') || + !mdxJsxComponents.has(node.name as string) + ) { + return CONTINUE; + } + const config = mdxJsxComponents.get(node.name!)!; + const attr = node.attributes.find( + (a) => a.type === 'mdxJsxAttribute' && a.name === (config.attributeName || 'id') + ); + if (!attr || attr.type !== 'mdxJsxAttribute' || typeof attr.value !== 'string') { + return CONTINUE; + } + const docId = attr.value; + const docType = config.docTypeExtractor(node); + insertDocRoot.run({ id: docId, type: docType, page_id: page_id, position: pagePosition }); + pagePosition = pagePosition + 1; + return CONTINUE; }); }; }; diff --git a/src/plugins/remark-gather-document-roots/plugin.ts b/src/plugins/remark-gather-document-roots/plugin.ts deleted file mode 100644 index 6a18b2a82..000000000 --- a/src/plugins/remark-gather-document-roots/plugin.ts +++ /dev/null @@ -1,113 +0,0 @@ -import type { Plugin, Transformer } from 'unified'; -import type { Code, Root } from 'mdast'; -import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; -import path from 'path'; -import Database from 'better-sqlite3'; -import { accessSync, mkdirSync } from 'fs'; - -const projectRoot = process.cwd(); -const dbPath = path.join(projectRoot, '.docusaurus', 'tdev-gather-document-roots', 'docs-pages.db'); - -try { - accessSync(path.dirname(dbPath)); -} catch { - mkdirSync(path.dirname(dbPath), { recursive: true }); -} -const db = new Database(dbPath, { fileMustExist: false }); -db.pragma('journal_mode = WAL'); - -const createPages = db.prepare( - 'CREATE TABLE IF NOT EXISTS pages (id TEXT NOT NULL, path TEXT NOT NULL, UNIQUE(id, path))' -); -const createDocRoots = db.prepare( - 'CREATE TABLE IF NOT EXISTS document_roots (id TEXT PRIMARY KEY, type TEXT NOT NULL, page_id TEXT NOT NULL, position INTEGER NOT NULL)' -); -createPages.run(); -createDocRoots.run(); - -const insertPage = db.prepare( - 'INSERT INTO pages (id, path) VALUES (@id, @path) ON CONFLICT(id, path) DO NOTHING' -); -const insertDocRoot = db.prepare( - 'INSERT INTO document_roots (id, type, page_id, position) VALUES (@id, @type, @page_id, @position) ON CONFLICT(id) DO UPDATE SET type=excluded.type, page_id=excluded.page_id, position=excluded.position' -); - -interface JsxConfig { - /** - * Component Name - */ - name: string; - /** - * @default id - */ - attributeName?: string; - docTypeExtractor: (node: T) => string; -} - -export interface PluginOptions { - components: JsxConfig[]; - persistedCodeType?: (code: Code) => string; -} - -/** - * This plugin transforms inline code and code blocks in MDX files to use - * custom MDX components by converting the code content into attributes. - */ -const plugin: Plugin = function plugin( - options = { components: [], persistedCodeType: () => 'code' } -): Transformer { - const { components } = options; - const mdxJsxComponents = new Map(components.map((c) => [c.name, c])); - return async (root, file) => { - const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; - if (components.length < 1 || !page_id) { - return; - } - const { visit, SKIP, CONTINUE } = await import('unist-util-visit'); - - const filePath = path - .relative(projectRoot, file.path) - .replace(/\/(index|README)\.mdx?$/i, '') - .replace(/\.mdx?$/i, ''); - insertPage.run({ id: page_id, path: filePath }); - let pagePosition = 0; - visit(root, (node, index, parent) => { - if (node.type === 'code') { - const idMatch = /id=([a-zA-Z0-9-_]+)/.exec(node.meta || ''); - if (!idMatch) { - return CONTINUE; - } - const docId = idMatch[1]; - const docType = options.persistedCodeType?.(node) ?? 'code'; - insertDocRoot.run({ - id: docId, - type: docType, - page_id: page_id, - position: pagePosition - }); - pagePosition = pagePosition + 1; - return CONTINUE; - } - if ( - (node.type !== 'mdxJsxFlowElement' && node.type !== 'mdxJsxTextElement') || - !mdxJsxComponents.has(node.name as string) - ) { - return CONTINUE; - } - const config = mdxJsxComponents.get(node.name!)!; - const attr = node.attributes.find( - (a) => a.type === 'mdxJsxAttribute' && a.name === (config.attributeName || 'id') - ); - if (!attr || attr.type !== 'mdxJsxAttribute' || typeof attr.value !== 'string') { - return CONTINUE; - } - const docId = attr.value; - const docType = config.docTypeExtractor(node); - insertDocRoot.run({ id: docId, type: docType, page_id: page_id, position: pagePosition }); - pagePosition = pagePosition + 1; - return CONTINUE; - }); - }; -}; - -export default plugin; diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index 84d124186..ceb4c9898 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -15,14 +15,12 @@ import linkAnnotationPlugin from '../plugins/remark-link-annotation/plugin'; import mediaPlugin from '../plugins/remark-media/plugin'; import detailsPlugin from '../plugins/remark-details/plugin'; import pagePlugin from '../plugins/remark-page/plugin'; -import gatherDocRootPlugin from '../plugins/remark-gather-document-roots/plugin'; import pageProgressStatePlugin from '@tdev/page-progress-state/remark-plugin'; import graphvizPlugin from '@tdev/remark-graphviz/remark-plugin'; import pdfPlugin from '@tdev/remark-pdf/remark-plugin'; import codeAsAttributePlugin from '../plugins/remark-code-as-attribute/plugin'; import commentPlugin from '../plugins/remark-comments/plugin'; import enumerateAnswersPlugin from '../plugins/remark-enumerate-components/plugin'; -import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; import { getAnswerDocumentType } from '../components/Answer/helper.answer'; export const flexCardsPluginConfig = [ @@ -147,54 +145,6 @@ export const pagePluginConfig = [pagePlugin, {}]; export const pageProgressStatePluginConfig = [ pageProgressStatePlugin, - { - extractors: [ - { - test: (_node: Node) => { - if (_node.type !== 'mdxJsxFlowElement') { - return false; - } - const node = _node as MdxJsxFlowElement; - const name = node.name as string; - return ( - ComponentsWithId.has(name) || - node.attributes.some( - (a) => - (a as { name?: string }).name === 'type' && AnswerTypes.has(a.value as string) - ) - ); - }, - getDocumentRootIds: (node: Node) => { - const jsxNode = node as MdxJsxFlowElement; - const idAttr = jsxNode.attributes.find((attr) => (attr as any).name === 'id'); - return idAttr ? [idAttr.value] : []; - } - } - ] - } -]; - -export const graphvizPluginConfig = graphvizPlugin; - -export const commentPluginConfig = [ - commentPlugin, - { - commentableJsxFlowElements: ['DefHeading', 'figcaption', 'String'], - ignoreJsxFlowElements: ['summary', 'dt'], - ignoreCodeBlocksWithMeta: /live_py/ - } -]; - -export const linkAnnotationPluginConfig = [ - linkAnnotationPlugin, - { - prefix: '👉', - postfix: null - } -]; - -export const gatherDocRootPluginConfig = [ - gatherDocRootPlugin, { components: [ { @@ -259,6 +209,25 @@ export const gatherDocRootPluginConfig = [ } ]; +export const graphvizPluginConfig = graphvizPlugin; + +export const commentPluginConfig = [ + commentPlugin, + { + commentableJsxFlowElements: ['DefHeading', 'figcaption', 'String'], + ignoreJsxFlowElements: ['summary', 'dt'], + ignoreCodeBlocksWithMeta: /live_py/ + } +]; + +export const linkAnnotationPluginConfig = [ + linkAnnotationPlugin, + { + prefix: '👉', + postfix: null + } +]; + export const rehypeKatexPluginConfig = rehypeKatex; export const recommendedBeforeDefaultRemarkPlugins = [ @@ -271,7 +240,6 @@ export const recommendedBeforeDefaultRemarkPlugins = [ ]; export const recommendedRemarkPlugins = [ - gatherDocRootPluginConfig, strongPluginConfig, mdiPluginConfig, mediaPluginConfig, diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index e53156d8f..aac293eb5 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -40,9 +40,10 @@ export class PageStore extends iStore { @action load() { - return import('@tdev/page-progress-state/assets/index.json').then((mod) => { - this.updatePageIndex(mod.default as PageIndex); - }); + // return import('@tdev/page-progress-state/assets/index.json').then((mod) => { + // this.updatePageIndex(mod.default as PageIndex); + // }); + return Promise.resolve(); } @action From e66da9e734ff4b33ff6559863a44f7fd6b35a22b Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 27 Jan 2026 23:25:18 +0100 Subject: [PATCH 11/49] poc --- docusaurus.config.ts | 4 +- packages/tdev/brython-code/README.mdx | 2 +- packages/tdev/page-progress-state/README.mdx | 11 +++ packages/tdev/page-progress-state/exportDb.ts | 14 +++ packages/tdev/page-progress-state/index.ts | 1 + packages/tdev/page-progress-state/options.ts | 18 ++++ .../tdev/page-progress-state/package.json | 6 +- packages/tdev/page-progress-state/plugin.ts | 40 +++++---- .../remark-plugin/index.ts | 88 +++++++++++-------- packages/tdev/page-progress-state/utils/db.ts | 31 +++++++ src/components/Demo/index.tsx | 11 +++ src/siteConfig/markdownPluginConfigs.ts | 3 +- src/stores/PageStore.ts | 16 ++-- src/stores/rootStore.ts | 2 +- static/tdev-artifacts/.gitignore | 1 + 15 files changed, 179 insertions(+), 69 deletions(-) create mode 100644 packages/tdev/page-progress-state/README.mdx create mode 100644 packages/tdev/page-progress-state/exportDb.ts create mode 100644 packages/tdev/page-progress-state/index.ts create mode 100644 packages/tdev/page-progress-state/options.ts create mode 100644 packages/tdev/page-progress-state/utils/db.ts create mode 100644 src/components/Demo/index.tsx create mode 100644 static/tdev-artifacts/.gitignore diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 7df49bf2a..8b922d75f 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -372,7 +372,6 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { remarkPdfPluginConfig, socketIoNoDepWarningsPluginConfig, ...loadedPlugins, - persistableDocuments, [ '@docusaurus/plugin-content-pages', { @@ -385,7 +384,8 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { ...(siteConfig.pages || {}) } ], - ...((siteConfig.plugins as Config['plugins']) || []) + ...((siteConfig.plugins as Config['plugins']) || []), + persistableDocuments ], themes: [ '@docusaurus/theme-mermaid', diff --git a/packages/tdev/brython-code/README.mdx b/packages/tdev/brython-code/README.mdx index 790c0e0df..d78517320 100644 --- a/packages/tdev/brython-code/README.mdx +++ b/packages/tdev/brython-code/README.mdx @@ -1,5 +1,5 @@ --- -page_id: e7bde0ab-c0fe-4225-8325-e4ebc22d414b +page_id: 0f9fe018-9c46-4ec0-be50-c2ae69a6a005 tags: - '@tdev/' - python diff --git a/packages/tdev/page-progress-state/README.mdx b/packages/tdev/page-progress-state/README.mdx new file mode 100644 index 000000000..c4e9aa7f9 --- /dev/null +++ b/packages/tdev/page-progress-state/README.mdx @@ -0,0 +1,11 @@ +--- +page_id: cfbd9607-c2d5-4c2a-82e0-9f39c5756747 +tags: + - '@tdev/' +--- +import { Comp } from '@tdev-components/Demo'; + +# page-progress-state + + + diff --git a/packages/tdev/page-progress-state/exportDb.ts b/packages/tdev/page-progress-state/exportDb.ts new file mode 100644 index 000000000..fab307fb1 --- /dev/null +++ b/packages/tdev/page-progress-state/exportDb.ts @@ -0,0 +1,14 @@ +import db from './utils/db'; +import { promises as fs } from 'fs'; +import { pageIndexPath } from './options'; + +const getDocumentRoots = db.prepare('SELECT * FROM document_roots ORDER BY path ASC, position ASC'); + +export const getContent = () => { + const documentRoots = getDocumentRoots.all(); + return { documentRoots }; +}; + +export const exportDB = async () => { + await fs.writeFile(pageIndexPath, JSON.stringify(getContent(), null, 2)); +}; diff --git a/packages/tdev/page-progress-state/index.ts b/packages/tdev/page-progress-state/index.ts new file mode 100644 index 000000000..a109fadcf --- /dev/null +++ b/packages/tdev/page-progress-state/index.ts @@ -0,0 +1 @@ +export const PluginName = 'page-progress-state'; diff --git a/packages/tdev/page-progress-state/options.ts b/packages/tdev/page-progress-state/options.ts new file mode 100644 index 000000000..3408a9eae --- /dev/null +++ b/packages/tdev/page-progress-state/options.ts @@ -0,0 +1,18 @@ +import path from 'path'; +import { PluginName } from '.'; + +// current file's directory: +export const pluginRootDir = path.dirname(new URL(import.meta.url).pathname); +export const assetDir = path.join(pluginRootDir, 'assets'); + +const projectRoot = process.cwd(); +const isDev = process.env.NODE_ENV !== 'production'; + +export const generatedDbDir = path.join(projectRoot, '.docusaurus', PluginName, 'default'); + +export const generatedDataDir = isDev + ? path.join(projectRoot, 'static/tdev-artifacts', PluginName) + : path.join(projectRoot, 'build/tdev-artifacts', PluginName); + +export const dbPath = path.join(generatedDbDir, 'index.db'); +export const pageIndexPath = path.join(generatedDataDir, 'pageIndex.json'); diff --git a/packages/tdev/page-progress-state/package.json b/packages/tdev/page-progress-state/package.json index 9723aad76..93c593671 100644 --- a/packages/tdev/page-progress-state/package.json +++ b/packages/tdev/page-progress-state/package.json @@ -1,9 +1,9 @@ { "name": "@tdev/page-progress-state", "version": "1.0.0", - "main": "remark-plugin/index.ts", - "types": "remark-plugin/index.ts", - "dependencies": {}, + "main": "index.ts", + "types": "index.ts", + "dependencies": { }, "devDependencies": { "vitest": "*", "@docusaurus/module-type-aliases": "*", diff --git a/packages/tdev/page-progress-state/plugin.ts b/packages/tdev/page-progress-state/plugin.ts index c02f1991b..df9774780 100644 --- a/packages/tdev/page-progress-state/plugin.ts +++ b/packages/tdev/page-progress-state/plugin.ts @@ -1,27 +1,35 @@ import { LoadContext, Plugin, PluginModule } from '@docusaurus/types'; -import { Joi } from '@docusaurus/utils-validation'; -import fs from 'fs-extra'; +import { exportDB, getContent } from './exportDb'; import path from 'path'; +import { promises as fs } from 'fs'; +import { PluginName } from '.'; +import { pageIndexPath } from './options'; + +const isDev = process.env.NODE_ENV !== 'production'; const persistableDocuments: PluginModule = (context: LoadContext) => { - const isHashRouter = context.siteConfig.future?.experimental_router === 'hash'; - return { - name: 'tdev-persistable-documents', - async loadContent() { - console.log('Calling persistable-documents plugin loadContent'); - return {}; - }, - async contentLoaded({ actions: { setGlobalData } }) { - console.log('Calling persistable-documents plugin contentLoaded'); + const config: Plugin<{}> = { + name: PluginName, + async allContentLoaded() { + if (isDev) { + try { + await fs.access(path.dirname(pageIndexPath)); + } catch { + await fs.mkdir(path.dirname(pageIndexPath), { recursive: true }); + } + } }, + async postBuild() { + try { + await fs.access(path.dirname(pageIndexPath)); + } catch { + await fs.mkdir(path.dirname(pageIndexPath), { recursive: true }); + } - async postBuild({ siteConfig = {}, routesPaths = [], outDir }) { - // Print out to console all the rendered routes. - routesPaths.map((route) => { - console.log(route); - }); + await exportDB(); } }; + return config as Plugin; }; export default persistableDocuments; diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts index 28a71ad35..a58eaa4fb 100644 --- a/packages/tdev/page-progress-state/remark-plugin/index.ts +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -2,34 +2,26 @@ import type { Plugin, Transformer } from 'unified'; import type { Code, Root } from 'mdast'; import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; import path from 'path'; -import Database from 'better-sqlite3'; -import { accessSync, mkdirSync } from 'fs'; +import db from '../utils/db'; +import { exportDB } from '../exportDb'; const projectRoot = process.cwd(); -const dbPath = path.join(projectRoot, '.docusaurus', 'tdev-gather-document-roots', 'docs-pages.db'); +const isDev = process.env.NODE_ENV !== 'production'; -try { - accessSync(path.dirname(dbPath)); -} catch { - mkdirSync(path.dirname(dbPath), { recursive: true }); -} -const db = new Database(dbPath, { fileMustExist: false }); -db.pragma('journal_mode = WAL'); - -const createPages = db.prepare( - 'CREATE TABLE IF NOT EXISTS pages (id TEXT NOT NULL, path TEXT NOT NULL, UNIQUE(id, path))' -); -const createDocRoots = db.prepare( - 'CREATE TABLE IF NOT EXISTS document_roots (id TEXT PRIMARY KEY, type TEXT NOT NULL, page_id TEXT NOT NULL, position INTEGER NOT NULL)' -); -createPages.run(); -createDocRoots.run(); - -const insertPage = db.prepare( - 'INSERT INTO pages (id, path) VALUES (@id, @path) ON CONFLICT(id, path) DO NOTHING' -); const insertDocRoot = db.prepare( - 'INSERT INTO document_roots (id, type, page_id, position) VALUES (@id, @type, @page_id, @position) ON CONFLICT(id) DO UPDATE SET type=excluded.type, page_id=excluded.page_id, position=excluded.position' + `INSERT INTO document_roots ( + id, + type, + page_id, + path, + position + ) VALUES ( + @id, + @type, + @page_id, + @path, + @position + ) ON CONFLICT(id, path) DO NOTHING` ); interface JsxConfig { @@ -47,32 +39,36 @@ interface JsxConfig string; + docsParentDir?: string; } +const slugCountMap = new Map(); + /** * This plugin transforms inline code and code blocks in MDX files to use * custom MDX components by converting the code content into attributes. */ const remarkPlugin: Plugin = function plugin( - options = { components: [], persistedCodeType: () => 'code' } + options = { components: [], persistedCodeType: () => 'code', docsParentDir: '' } ): Transformer { const { components } = options; const mdxJsxComponents = new Map(components.map((c) => [c.name, c])); + const replaceStart = new RegExp(`^${options.docsParentDir}`); return async (root, file) => { const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; if (components.length < 1 || !page_id) { return; } const { visit, SKIP, CONTINUE } = await import('unist-util-visit'); - console.log( - ` Processing persistable documents for page_id=${page_id}` - ); - const filePath = path - .relative(projectRoot, file.path) - .replace(/\/(index|README)\.mdx?$/i, '') - .replace(/\.mdx?$/i, ''); - insertPage.run({ id: page_id, path: filePath }); - let pagePosition = 0; + const filePath = `/${path.relative(projectRoot, file.path)}` + .replace(/\/(index|README)\.mdx?$/i, '/') + .replace(/\.mdx?$/i, '/') + .replace(replaceStart, '') + .replace(/^\/versioned_docs\/version-/, '/'); + + if (!slugCountMap.has(filePath)) { + slugCountMap.set(filePath, 1); + } visit(root, (node, index, parent) => { if (node.type === 'code') { const idMatch = /id=([a-zA-Z0-9-_]+)/.exec(node.meta || ''); @@ -81,13 +77,16 @@ const remarkPlugin: Plugin = function plugin( } const docId = idMatch[1]; const docType = options.persistedCodeType?.(node) ?? 'code'; - insertDocRoot.run({ + const res = insertDocRoot.run({ id: docId, type: docType, page_id: page_id, - position: pagePosition + path: filePath, + position: slugCountMap.get(filePath)! }); - pagePosition = pagePosition + 1; + if (res.changes > 0) { + slugCountMap.set(filePath, slugCountMap.get(filePath)! + 1); + } return CONTINUE; } if ( @@ -105,10 +104,21 @@ const remarkPlugin: Plugin = function plugin( } const docId = attr.value; const docType = config.docTypeExtractor(node); - insertDocRoot.run({ id: docId, type: docType, page_id: page_id, position: pagePosition }); - pagePosition = pagePosition + 1; + const res = insertDocRoot.run({ + id: docId, + type: docType, + page_id: page_id, + path: filePath, + position: slugCountMap.get(filePath)! + }); + if (res.changes > 0) { + slugCountMap.set(filePath, slugCountMap.get(filePath)! + 1); + } return CONTINUE; }); + if (isDev) { + await exportDB(); + } }; }; diff --git a/packages/tdev/page-progress-state/utils/db.ts b/packages/tdev/page-progress-state/utils/db.ts new file mode 100644 index 000000000..a7174f001 --- /dev/null +++ b/packages/tdev/page-progress-state/utils/db.ts @@ -0,0 +1,31 @@ +import path from 'path'; +import Database from 'better-sqlite3'; +import { accessSync, mkdirSync } from 'fs'; +import { dbPath } from '../options'; + +try { + accessSync(path.dirname(dbPath)); +} catch { + mkdirSync(path.dirname(dbPath), { recursive: true }); +} + +const db = new Database(dbPath, { fileMustExist: false }); +db.pragma('journal_mode = WAL'); + +// const createPages = db.prepare( +// 'CREATE TABLE IF NOT EXISTS pages (id TEXT NOT NULL, path TEXT NOT NULL, UNIQUE(id, path))' +// ); +const createDocRoots = db.prepare( + `CREATE TABLE IF NOT EXISTS document_roots ( + id TEXT NOT NULL, + type TEXT NOT NULL, + page_id TEXT NOT NULL, + path TEXT NOT NULL, + position INTEGER NOT NULL, + UNIQUE(id, path) + )` +); +// createPages.run(); +createDocRoots.run(); + +export default db; diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx new file mode 100644 index 000000000..532131c67 --- /dev/null +++ b/src/components/Demo/index.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import CodeBlock from '@theme/CodeBlock'; +import BrowserOnly from '@docusaurus/BrowserOnly'; +import { observer } from 'mobx-react-lite'; +import { useStore } from '@tdev-hooks/useStore'; + +export const Comp = observer(() => { + const pageStore = useStore('pageStore'); + + return {JSON.stringify(pageStore.pageIndex, null, 2)}; +}); diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index ceb4c9898..79f0edeb7 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -205,7 +205,8 @@ export const pageProgressStatePluginConfig = [ default: return 'code'; } - } + }, + docsParentDir: '/tdev-website' } ]; diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index aac293eb5..59b7aef0d 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -5,8 +5,9 @@ import Page from '@tdev-models/Page'; import { computedFn } from 'mobx-utils'; import { allDocuments as apiAllDocuments, DocumentType } from '@tdev-api/document'; import type { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; -import { PropSidebarItem } from '@docusaurus/plugin-content-docs'; -type PageIndex = { [key: string]: string[] }; +import siteConfig from '@generated/docusaurus.config'; + +type PageIndex = Record; export class PageStore extends iStore { readonly root: RootStore; @@ -40,10 +41,13 @@ export class PageStore extends iStore { @action load() { - // return import('@tdev/page-progress-state/assets/index.json').then((mod) => { - // this.updatePageIndex(mod.default as PageIndex); - // }); - return Promise.resolve(); + return fetch(`${siteConfig.baseUrl}tdev-artifacts/page-progress-state/pageIndex.json`) + .then((res) => { + return res.json(); + }) + .then((data) => { + this.updatePageIndex(data as PageIndex); + }); } @action diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 74ee8c802..13df3fe21 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -61,7 +61,7 @@ export class RootStore { * load stores */ this.userStore.load(); - this.pageStore.load(); + // this.pageStore.load(); this.studentGroupStore.load(); this.cmsStore.initialize(); if (user.hasElevatedAccess) { diff --git a/static/tdev-artifacts/.gitignore b/static/tdev-artifacts/.gitignore new file mode 100644 index 000000000..94a2dd146 --- /dev/null +++ b/static/tdev-artifacts/.gitignore @@ -0,0 +1 @@ +*.json \ No newline at end of file From c5d82bd171e1f41d1c771a8971f152c1786a6189 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 27 Jan 2026 23:52:47 +0100 Subject: [PATCH 12/49] load pageStore on load --- src/stores/rootStore.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 13df3fe21..d3bcda241 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -60,8 +60,9 @@ export class RootStore { /** * load stores */ + this.userStore.load(); - // this.pageStore.load(); + this.pageStore.load(); this.studentGroupStore.load(); this.cmsStore.initialize(); if (user.hasElevatedAccess) { From 2ed64739bce3265d0a52717bca38776a81f0766a Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 28 Jan 2026 00:01:53 +0100 Subject: [PATCH 13/49] refactor page-progress-state --- packages/tdev/page-progress-state/assets/.gitignore | 1 - packages/tdev/page-progress-state/plugin.ts | 4 ++-- .../tdev/page-progress-state/remark-plugin/index.ts | 13 +++++++++++-- packages/tdev/page-progress-state/utils/db.ts | 6 +----- .../page-progress-state/{ => utils}/exportDb.ts | 2 +- .../tdev/page-progress-state/{ => utils}/options.ts | 2 +- 6 files changed, 16 insertions(+), 12 deletions(-) delete mode 100644 packages/tdev/page-progress-state/assets/.gitignore rename packages/tdev/page-progress-state/{ => utils}/exportDb.ts (93%) rename packages/tdev/page-progress-state/{ => utils}/options.ts (95%) diff --git a/packages/tdev/page-progress-state/assets/.gitignore b/packages/tdev/page-progress-state/assets/.gitignore deleted file mode 100644 index 94a2dd146..000000000 --- a/packages/tdev/page-progress-state/assets/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.json \ No newline at end of file diff --git a/packages/tdev/page-progress-state/plugin.ts b/packages/tdev/page-progress-state/plugin.ts index df9774780..7ed6194bb 100644 --- a/packages/tdev/page-progress-state/plugin.ts +++ b/packages/tdev/page-progress-state/plugin.ts @@ -1,9 +1,9 @@ import { LoadContext, Plugin, PluginModule } from '@docusaurus/types'; -import { exportDB, getContent } from './exportDb'; +import { exportDB, getContent } from './utils/exportDb'; import path from 'path'; import { promises as fs } from 'fs'; import { PluginName } from '.'; -import { pageIndexPath } from './options'; +import { pageIndexPath } from './utils/options'; const isDev = process.env.NODE_ENV !== 'production'; diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts index a58eaa4fb..6726d925b 100644 --- a/packages/tdev/page-progress-state/remark-plugin/index.ts +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -3,7 +3,8 @@ import type { Code, Root } from 'mdast'; import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx'; import path from 'path'; import db from '../utils/db'; -import { exportDB } from '../exportDb'; +import { exportDB } from '../utils/exportDb'; +import { debounce } from 'es-toolkit/function'; const projectRoot = process.cwd(); const isDev = process.env.NODE_ENV !== 'production'; @@ -44,6 +45,14 @@ export interface PluginOptions { const slugCountMap = new Map(); +const scheduleExportDb = debounce( + async () => { + await exportDB(); + }, + 250, + { edges: ['trailing'] } +); + /** * This plugin transforms inline code and code blocks in MDX files to use * custom MDX components by converting the code content into attributes. @@ -117,7 +126,7 @@ const remarkPlugin: Plugin = function plugin( return CONTINUE; }); if (isDev) { - await exportDB(); + scheduleExportDb(); } }; }; diff --git a/packages/tdev/page-progress-state/utils/db.ts b/packages/tdev/page-progress-state/utils/db.ts index a7174f001..e5c7d6da8 100644 --- a/packages/tdev/page-progress-state/utils/db.ts +++ b/packages/tdev/page-progress-state/utils/db.ts @@ -1,7 +1,7 @@ import path from 'path'; import Database from 'better-sqlite3'; import { accessSync, mkdirSync } from 'fs'; -import { dbPath } from '../options'; +import { dbPath } from './options'; try { accessSync(path.dirname(dbPath)); @@ -12,9 +12,6 @@ try { const db = new Database(dbPath, { fileMustExist: false }); db.pragma('journal_mode = WAL'); -// const createPages = db.prepare( -// 'CREATE TABLE IF NOT EXISTS pages (id TEXT NOT NULL, path TEXT NOT NULL, UNIQUE(id, path))' -// ); const createDocRoots = db.prepare( `CREATE TABLE IF NOT EXISTS document_roots ( id TEXT NOT NULL, @@ -25,7 +22,6 @@ const createDocRoots = db.prepare( UNIQUE(id, path) )` ); -// createPages.run(); createDocRoots.run(); export default db; diff --git a/packages/tdev/page-progress-state/exportDb.ts b/packages/tdev/page-progress-state/utils/exportDb.ts similarity index 93% rename from packages/tdev/page-progress-state/exportDb.ts rename to packages/tdev/page-progress-state/utils/exportDb.ts index fab307fb1..36c3b875b 100644 --- a/packages/tdev/page-progress-state/exportDb.ts +++ b/packages/tdev/page-progress-state/utils/exportDb.ts @@ -1,4 +1,4 @@ -import db from './utils/db'; +import db from './db'; import { promises as fs } from 'fs'; import { pageIndexPath } from './options'; diff --git a/packages/tdev/page-progress-state/options.ts b/packages/tdev/page-progress-state/utils/options.ts similarity index 95% rename from packages/tdev/page-progress-state/options.ts rename to packages/tdev/page-progress-state/utils/options.ts index 3408a9eae..420ea7416 100644 --- a/packages/tdev/page-progress-state/options.ts +++ b/packages/tdev/page-progress-state/utils/options.ts @@ -1,5 +1,5 @@ import path from 'path'; -import { PluginName } from '.'; +import { PluginName } from '..'; // current file's directory: export const pluginRootDir = path.dirname(new URL(import.meta.url).pathname); From 03b52e4fa753732ed125dacf05e220fa58f4637b Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 28 Jan 2026 08:09:20 +0100 Subject: [PATCH 14/49] generate Page models from loaded index --- packages/tdev/page-progress-state/index.ts | 20 +++++++ packages/tdev/page-progress-state/plugin.ts | 2 +- .../page-progress-state/utils/exportDb.ts | 3 +- src/components/Demo/index.tsx | 2 +- .../documents/ProgressState/index.tsx | 2 +- src/components/documents/TaskState/index.tsx | 2 +- src/models/Page.ts | 19 ++++++- src/stores/PageStore.ts | 57 +++++++++++++------ src/stores/rootStore.ts | 2 +- 9 files changed, 83 insertions(+), 26 deletions(-) diff --git a/packages/tdev/page-progress-state/index.ts b/packages/tdev/page-progress-state/index.ts index a109fadcf..143bd11a8 100644 --- a/packages/tdev/page-progress-state/index.ts +++ b/packages/tdev/page-progress-state/index.ts @@ -1 +1,21 @@ +import { DocumentType } from '@tdev-api/document'; + +export interface PageIndex { + /** + * the document root id + */ + id: string; + type: DocumentType; + /** + * the page_id in the frontmatter of each md/mdx file + */ + page_id: string; + /** + * The resolved path to the file - should be the same + * as docusaurus `path` field in the sidebar index. + */ + path: string; + position: number; +} + export const PluginName = 'page-progress-state'; diff --git a/packages/tdev/page-progress-state/plugin.ts b/packages/tdev/page-progress-state/plugin.ts index 7ed6194bb..1f8616c7a 100644 --- a/packages/tdev/page-progress-state/plugin.ts +++ b/packages/tdev/page-progress-state/plugin.ts @@ -1,5 +1,5 @@ import { LoadContext, Plugin, PluginModule } from '@docusaurus/types'; -import { exportDB, getContent } from './utils/exportDb'; +import { exportDB } from './utils/exportDb'; import path from 'path'; import { promises as fs } from 'fs'; import { PluginName } from '.'; diff --git a/packages/tdev/page-progress-state/utils/exportDb.ts b/packages/tdev/page-progress-state/utils/exportDb.ts index 36c3b875b..985c41aec 100644 --- a/packages/tdev/page-progress-state/utils/exportDb.ts +++ b/packages/tdev/page-progress-state/utils/exportDb.ts @@ -1,11 +1,12 @@ import db from './db'; import { promises as fs } from 'fs'; import { pageIndexPath } from './options'; +import { PageIndex } from '..'; const getDocumentRoots = db.prepare('SELECT * FROM document_roots ORDER BY path ASC, position ASC'); export const getContent = () => { - const documentRoots = getDocumentRoots.all(); + const documentRoots = getDocumentRoots.all() as PageIndex[]; return { documentRoots }; }; diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx index 532131c67..d132e9c3e 100644 --- a/src/components/Demo/index.tsx +++ b/src/components/Demo/index.tsx @@ -7,5 +7,5 @@ import { useStore } from '@tdev-hooks/useStore'; export const Comp = observer(() => { const pageStore = useStore('pageStore'); - return {JSON.stringify(pageStore.pageIndex, null, 2)}; + return {JSON.stringify(pageStore._pageIndex, null, 2)}; }); diff --git a/src/components/documents/ProgressState/index.tsx b/src/components/documents/ProgressState/index.tsx index babbd11b1..40f724ffb 100644 --- a/src/components/documents/ProgressState/index.tsx +++ b/src/components/documents/ProgressState/index.tsx @@ -74,7 +74,7 @@ const ProgressState = observer((props: Props) => { React.useEffect(() => { if (doc?.root && pageStore.current && !doc.root.isDummy) { - pageStore.current.addDocumentRoot(doc); + pageStore.current.assertDocumentRoot(doc); } }, [doc, pageStore.current]); diff --git a/src/components/documents/TaskState/index.tsx b/src/components/documents/TaskState/index.tsx index 3db082718..1f53dcb3f 100644 --- a/src/components/documents/TaskState/index.tsx +++ b/src/components/documents/TaskState/index.tsx @@ -94,7 +94,7 @@ export const TaskStateComponent = observer((props: ComponentProps) => { React.useEffect(() => { if (doc.root && pageStore.current && !doc.root.isDummy) { - pageStore.current.addDocumentRoot(doc); + pageStore.current.assertDocumentRoot(doc); } }, [doc, pageStore.current]); diff --git a/src/models/Page.ts b/src/models/Page.ts index 0bf48ce1e..680af3a54 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -13,6 +13,7 @@ import ProgressState from './documents/ProgressState'; export default class Page { readonly store: PageStore; readonly id: string; + readonly path: string; refetchTimestamps: number[] = []; @observable.ref accessor _primaryStudentGroupName: string | undefined = undefined; @@ -21,8 +22,9 @@ export default class Page { dynamicValues = observable.map(); - constructor(id: string, store: PageStore) { + constructor(id: string, path: string, store: PageStore) { this.id = id; + this.path = path; this.store = store; this.documentRootIds = observable.set([id]); } @@ -37,8 +39,19 @@ export default class Page { } @action - addDocumentRoot(doc: iDocument) { - this.documentRootIds.add(doc.documentRootId); + assertDocumentRoot(doc: iDocument) { + // this.documentRootIds.add(doc.documentRootId); + if (process.env.NODE_ENV === 'production') { + return; + } + if (!this.documentRootIds.has(doc.documentRootId)) { + this.store.loadPageIndex(true); + } + } + + @action + addDocumentRootId(id: string) { + this.documentRootIds.add(id); } @computed diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 59b7aef0d..35419bab3 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -6,8 +6,12 @@ import { computedFn } from 'mobx-utils'; import { allDocuments as apiAllDocuments, DocumentType } from '@tdev-api/document'; import type { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; import siteConfig from '@generated/docusaurus.config'; +import { PageIndex } from '@tdev/page-progress-state'; +import { groupBy } from 'es-toolkit/array'; -type PageIndex = Record; +interface PagesIndex { + documentRoots: PageIndex[]; +} export class PageStore extends iStore { readonly root: RootStore; @@ -17,7 +21,7 @@ export class PageStore extends iStore { @observable accessor currentPageId: string | undefined = undefined; @observable accessor runningTurtleScriptId: string | undefined = undefined; - @observable.ref accessor pageIndex: PageIndex = {}; + @observable.ref accessor _pageIndex: PageIndex[] = []; sidebars = observable.map>([], { deep: false }); constructor(store: RootStore) { @@ -40,19 +44,35 @@ export class PageStore extends iStore { } @action - load() { + loadPageIndex(force: boolean = false) { + if (!force && this._pageIndex.length > 0) { + return Promise.resolve(); + } return fetch(`${siteConfig.baseUrl}tdev-artifacts/page-progress-state/pageIndex.json`) .then((res) => { - return res.json(); + return res.json() as Promise; }) - .then((data) => { - this.updatePageIndex(data as PageIndex); + .then( + action((data) => { + const grouped = groupBy(data.documentRoots, (dr) => `${dr.path}::${dr.page_id}`); + const pages = Object.values(grouped).map((docs) => { + const doc = docs[0]!; + const page = new Page(doc.page_id, doc.path, this); + docs.forEach((d) => page.addDocumentRootId(d.id)); + return page; + }); + this.pages.replace(pages); + this.setPageIndex(data.documentRoots); + }) + ) + .catch((err) => { + console.error('Failed to load page index', err); }); } @action - updatePageIndex(newIndex: PageIndex) { - this.pageIndex = newIndex; + setPageIndex(newIndex: PageIndex[]) { + this._pageIndex = newIndex; } find = computedFn( @@ -70,19 +90,22 @@ export class PageStore extends iStore { return this.find(this.currentPageId); } - @action - addToStore(page: Page) { - const old = this.find(page.id); - if (old) { - this.pages.remove(old); - } - this.pages.push(page); - } + // @action + // addToStore(page: Page) { + // const old = this.find(page.id); + // if (old) { + // this.pages.remove(old); + // } + // this.pages.push(page); + // } @action addIfNotPresent(id: string, makeCurrent?: boolean) { if (!this.find(id)) { - const page = new Page(id, this); + if (process.env.NODE_ENV !== 'production') { + this.loadPageIndex(true); + } + const page = new Page(id, window.location.pathname, this); this.pages.push(page); } if (makeCurrent) { diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index d3bcda241..821a873f9 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -51,6 +51,7 @@ export class RootStore { @action load(userId: string) { + this.pageStore.loadPageIndex(); this.sessionStore.setCurrentUserId(userId); this.sessionStore.setIsLoggedIn(!!userId); this.userStore.loadCurrent().then((user) => { @@ -62,7 +63,6 @@ export class RootStore { */ this.userStore.load(); - this.pageStore.load(); this.studentGroupStore.load(); this.cmsStore.initialize(); if (user.hasElevatedAccess) { From e6f8646accd14198aa9db163131dee5262b67e50 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 28 Jan 2026 16:05:56 +0100 Subject: [PATCH 15/49] create page tree --- .../remark-plugin/index.ts | 14 +- src/components/Demo/index.tsx | 2 +- .../DynamicValues/TemplateCode/index.tsx | 4 +- src/components/DynamicValues/Val/index.tsx | 2 +- src/components/MdxPage/index.tsx | 4 +- src/models/Page.ts | 47 +- src/stores/PageStore.ts | 65 +- yarn.lock | 637 +++++++++--------- 8 files changed, 429 insertions(+), 346 deletions(-) diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts index 6726d925b..267d9a3c0 100644 --- a/packages/tdev/page-progress-state/remark-plugin/index.ts +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -68,16 +68,22 @@ const remarkPlugin: Plugin = function plugin( if (components.length < 1 || !page_id) { return; } - const { visit, SKIP, CONTINUE } = await import('unist-util-visit'); + const { visit, CONTINUE } = await import('unist-util-visit'); const filePath = `/${path.relative(projectRoot, file.path)}` .replace(/\/(index|README)\.mdx?$/i, '/') .replace(/\.mdx?$/i, '/') .replace(replaceStart, '') .replace(/^\/versioned_docs\/version-/, '/'); + slugCountMap.set(filePath, 1); + + insertDocRoot.run({ + id: page_id, + type: '', + page_id: page_id, + path: filePath, + position: 0 + }); - if (!slugCountMap.has(filePath)) { - slugCountMap.set(filePath, 1); - } visit(root, (node, index, parent) => { if (node.type === 'code') { const idMatch = /id=([a-zA-Z0-9-_]+)/.exec(node.meta || ''); diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx index d132e9c3e..3848cd14a 100644 --- a/src/components/Demo/index.tsx +++ b/src/components/Demo/index.tsx @@ -7,5 +7,5 @@ import { useStore } from '@tdev-hooks/useStore'; export const Comp = observer(() => { const pageStore = useStore('pageStore'); - return {JSON.stringify(pageStore._pageIndex, null, 2)}; + return {JSON.stringify(pageStore.tree, null, 2)}; }); diff --git a/src/components/DynamicValues/TemplateCode/index.tsx b/src/components/DynamicValues/TemplateCode/index.tsx index 0cee3e95d..7a188ee31 100644 --- a/src/components/DynamicValues/TemplateCode/index.tsx +++ b/src/components/DynamicValues/TemplateCode/index.tsx @@ -17,8 +17,8 @@ const TemplateCode = observer((props: Props) => { if (!current) { return null; } - const code = templateReplacer(props.code, pageStore.current?.dynamicValues); - const metastring = templateReplacer(props.codeAttributes?.meta, pageStore.current?.dynamicValues); + const code = templateReplacer(props.code, current.dynamicValues); + const metastring = templateReplacer(props.codeAttributes?.meta, current.dynamicValues); return ( {code} diff --git a/src/components/DynamicValues/Val/index.tsx b/src/components/DynamicValues/Val/index.tsx index ee0bdbbdd..77d769026 100644 --- a/src/components/DynamicValues/Val/index.tsx +++ b/src/components/DynamicValues/Val/index.tsx @@ -23,7 +23,7 @@ const Val = observer((props: Props) => { } let value = ''; if ('code' in props) { - value = templateReplacer(props.code, pageStore.current?.dynamicValues); + value = templateReplacer(props.code, current.dynamicValues); } else if ('name' in props) { value = current.dynamicValues.get(props.name) || `<${props.name}>`; } diff --git a/src/components/MdxPage/index.tsx b/src/components/MdxPage/index.tsx index 80442f9f8..86f631ff4 100644 --- a/src/components/MdxPage/index.tsx +++ b/src/components/MdxPage/index.tsx @@ -40,9 +40,7 @@ const MdxPage = observer((props: Props) => { if (!current || !userStore.current?.hasElevatedAccess) { return; } - if (userStore.viewedUserId && userStore.viewedUserId !== userStore.current?.id) { - current.loadLinkedDocumentRoots(); - } + current.loadLinkedDocumentRoots(); }, [pageStore.current, userStore.viewedUserId]); return null; }); diff --git a/src/models/Page.ts b/src/models/Page.ts index 680af3a54..993d06c0a 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -3,13 +3,19 @@ */ import { action, computed, observable, ObservableSet } from 'mobx'; -import { PageStore } from '@tdev-stores/PageStore'; +import { PageStore, SidebarVersions } from '@tdev-stores/PageStore'; import TaskState from '@tdev-models/documents/TaskState'; import _ from 'es-toolkit/compat'; import iDocument from '@tdev-models/iDocument'; import StudentGroup from '@tdev-models/StudentGroup'; import ProgressState from './documents/ProgressState'; +interface PageTree { + id: string; + path: string; + pages: PageTree[]; +} + export default class Page { readonly store: PageStore; readonly id: string; @@ -29,6 +35,42 @@ export default class Page { this.documentRootIds = observable.set([id]); } + @computed + get isLandingpage() { + return SidebarVersions.some((version) => version.entryPath === this.path); + } + + @computed + get tree(): PageTree { + return { + id: this.id, + path: this.path, + pages: this.subPages.map((page) => page.tree) + }; + } + + @computed + get parentPath() { + const parts = this.path.split('/').slice(0, -2); + while (parts.length > 1) { + const parentPath = `${parts.join('/')}/`; + const parentPage = this.store.pages.find((p) => p.path === parentPath); + if (parentPage) { + return parentPage.path; + } + if (SidebarVersions.some((v) => v.versionPath === parentPath)) { + return parentPath; + } + parts.splice(-1, 1); + } + return '/'; + } + + @computed + get subPages() { + return this.store.pages.filter((page) => page.parentPath === this.path); + } + @action setDynamicValue(key: string, value?: string) { if (value === undefined) { @@ -115,6 +157,9 @@ export default class Page { @action loadLinkedDocumentRoots() { this.refetchTimestamps.push(Date.now()); + if (!this.store.root.userStore.isUserSwitched && this.documents.length > 0) { + return; + } return this.store.loadAllDocuments(this).catch((err) => { const now = Date.now(); const ts = this.refetchTimestamps.filter((ts) => now - ts < 10_000); diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 35419bab3..7073cafaf 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -4,10 +4,25 @@ import { RootStore } from '@tdev-stores/rootStore'; import Page from '@tdev-models/Page'; import { computedFn } from 'mobx-utils'; import { allDocuments as apiAllDocuments, DocumentType } from '@tdev-api/document'; -import type { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; +import type { GlobalPluginData, GlobalVersion, useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; import siteConfig from '@generated/docusaurus.config'; import { PageIndex } from '@tdev/page-progress-state'; import { groupBy } from 'es-toolkit/array'; +import globalData from '@generated/globalData'; +const ensureTrailingSlash = (str: string) => { + return str.endsWith('/') ? str : `${str}/`; +}; +export const SidebarVersions = ( + globalData['docusaurus-plugin-content-docs'].default as GlobalPluginData +).versions.map((version) => { + const { mainDocId } = version; + const mainDoc = version.docs.find((doc) => doc.id === mainDocId); + return { + name: version.name, + entryPath: ensureTrailingSlash(mainDoc!.path), + versionPath: ensureTrailingSlash(version.path) + }; +}); interface PagesIndex { documentRoots: PageIndex[]; @@ -29,6 +44,10 @@ export class PageStore extends iStore { this.root = store; } + get sidebarVersions() { + return SidebarVersions; + } + @action configureSidebar(id: string, sidebar: ReturnType) { if (this.sidebars.has(id) || !sidebar) { @@ -43,6 +62,31 @@ export class PageStore extends iStore { }); } + @computed + get landingPages() { + return this.pages.filter((page) => page.isLandingpage); + } + + @computed + get tree() { + return SidebarVersions.map((version) => { + if (version.entryPath === version.versionPath) { + const rootLandingPage = this.pages.find((page) => page.path === version.entryPath); + return { + version: version.name, + path: version.versionPath, + pages: [rootLandingPage!.tree] + }; + } + const pages = this.pages.filter((page) => page.parentPath === version.versionPath); + return { + version: version.name, + path: version.versionPath, + pages: pages.map((page) => page.tree) + }; + }); + } + @action loadPageIndex(force: boolean = false) { if (!force && this._pageIndex.length > 0) { @@ -58,23 +102,17 @@ export class PageStore extends iStore { const pages = Object.values(grouped).map((docs) => { const doc = docs[0]!; const page = new Page(doc.page_id, doc.path, this); - docs.forEach((d) => page.addDocumentRootId(d.id)); + docs.filter((doc) => doc.position > 0).forEach((d) => page.addDocumentRootId(d.id)); return page; }); this.pages.replace(pages); - this.setPageIndex(data.documentRoots); + this._pageIndex = data.documentRoots; }) ) .catch((err) => { console.error('Failed to load page index', err); }); } - - @action - setPageIndex(newIndex: PageIndex[]) { - this._pageIndex = newIndex; - } - find = computedFn( function (this: PageStore, id?: string): Page | undefined { if (!id) { @@ -90,15 +128,6 @@ export class PageStore extends iStore { return this.find(this.currentPageId); } - // @action - // addToStore(page: Page) { - // const old = this.find(page.id); - // if (old) { - // this.pages.remove(old); - // } - // this.pages.push(page); - // } - @action addIfNotPresent(id: string, makeCurrent?: boolean) { if (!this.find(id)) { diff --git a/yarn.lock b/yarn.lock index 741cd4622..e0ad94a83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1089,11 +1089,16 @@ "@better-auth/utils" "0.3.0" "@better-fetch/fetch" "1.1.21" -"@better-auth/utils@0.3.0", "@better-auth/utils@^0.3.0": +"@better-auth/utils@0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@better-auth/utils/-/utils-0.3.0.tgz#066c5ce82bf393421547dd887b14a6899310003d" integrity sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw== +"@better-auth/utils@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@better-auth/utils/-/utils-0.3.1.tgz#ffa4de03b9aef33df536fd19f36a24fa9c9942c0" + integrity sha512-+CGp4UmZSUrHHnpHhLPYu6cV+wSUSvVbZbNykxhUDocpVNTo9uFFxw/NqJlh1iC4wQ9HKKWGCKuZ5wUgS0v6Kg== + "@better-fetch/fetch@1.1.21", "@better-fetch/fetch@^1.1.4": version "1.1.21" resolved "https://registry.yarnpkg.com/@better-fetch/fetch/-/fetch-1.1.21.tgz#2b4990e73c46b0ae5e66b247083610ff8c37bddc" @@ -1450,9 +1455,9 @@ "@codemirror/language" "^6.0.0" "@codemirror/lint@^6.0.0": - version "6.9.2" - resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.2.tgz#09ed0aedec13381c9e36e1ac5d126027740c3ef4" - integrity sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ== + version "6.9.3" + resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.3.tgz#eee48c9d60ea63582eee1ebd6b4ae65102eb8782" + integrity sha512-y3YkYhdnhjDBAe0VIA0c4wVoFOvnp8CnAvfLqi0TqotIv92wIlAAP7HELOpLBsKwjAX6W92rSflA6an/2zBvXw== dependencies: "@codemirror/state" "^6.0.0" "@codemirror/view" "^6.35.0" @@ -2936,34 +2941,34 @@ lodash.isundefined "^3.0.1" lodash.uniq "^4.5.0" -"@floating-ui/core@^1.7.3": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7" - integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w== +"@floating-ui/core@^1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.4.tgz#4a006a6e01565c0f87ba222c317b056a2cffd2f4" + integrity sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg== dependencies: "@floating-ui/utils" "^0.2.10" -"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.4.tgz#ee667549998745c9c3e3e84683b909c31d6c9a77" - integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA== +"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.5.tgz#60bfc83a4d1275b2a90db76bf42ca2a5f2c231c2" + integrity sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg== dependencies: - "@floating-ui/core" "^1.7.3" + "@floating-ui/core" "^1.7.4" "@floating-ui/utils" "^0.2.10" -"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.6.tgz#189f681043c1400561f62972f461b93f01bf2231" - integrity sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw== +"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.7": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.7.tgz#529475cc16ee4976ba3387968117e773d9aa703e" + integrity sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg== dependencies: - "@floating-ui/dom" "^1.7.4" + "@floating-ui/dom" "^1.7.5" "@floating-ui/react@^0.27.8": - version "0.27.16" - resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.27.16.tgz#6e485b5270b7a3296fdc4d0faf2ac9abf955a2f7" - integrity sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g== + version "0.27.17" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.27.17.tgz#f1d74e01cf10016825a4167b3b0139a4d5af118a" + integrity sha512-LGVZKHwmWGg6MRHjLLgsfyaX2y2aCNgnD1zT/E6B+/h+vxg+nIJUqHPAlTzsHDyqdgEpJ1Np5kxWuFEErXzoGg== dependencies: - "@floating-ui/react-dom" "^2.1.6" + "@floating-ui/react-dom" "^2.1.7" "@floating-ui/utils" "^0.2.10" tabbable "^6.0.0" @@ -2985,9 +2990,9 @@ "@hapi/hoek" "^9.0.0" "@hpcc-js/wasm-graphviz@^1.7.0": - version "1.20.0" - resolved "https://registry.yarnpkg.com/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.20.0.tgz#26fcdc5742ef9331b81caa3c59df7a8c02bd2294" - integrity sha512-29nwKSkoKoXBHPqvimS2OmWUTojU148CFMszANgWvVOh76jbRFh1ZxXAiSzVWbtQcYFcb39T8tDEAXtUjyVlMA== + version "1.20.1" + resolved "https://registry.yarnpkg.com/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.20.1.tgz#f31016380418beeef9ed18837714a9046d3f0772" + integrity sha512-F4ga7c4vXfmBRwORJI9QeAW4n9Rbzqc0o+0sB0CsbL5n1E1Gxhb6EWq/M5ya0z/KpSOs3LvxLKc8yoJB9QBa6w== "@iconify/types@^2.0.0": version "2.0.0" @@ -3532,9 +3537,9 @@ "@lezer/lr" "^1.0.0" "@lezer/lr@^1.0.0", "@lezer/lr@^1.1.0", "@lezer/lr@^1.3.0", "@lezer/lr@^1.3.1", "@lezer/lr@^1.3.3", "@lezer/lr@^1.4.0": - version "1.4.7" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.7.tgz#01a38556652bf73ffbf3af4a88b91e4c056cc6ee" - integrity sha512-wNIFWdSUfX9Jc6ePMzxSPVgTVB4EOfDIwLQLWASyiUdHKaMsiilj9bYiGkGQCKVodd0x6bgQCV207PILGFCF9Q== + version "1.4.8" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.8.tgz#333de9bc9346057323ff09beb4cda47ccc38a498" + integrity sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA== dependencies: "@lezer/common" "^1.0.0" @@ -4817,130 +4822,130 @@ resolved "https://registry.yarnpkg.com/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz#c06dac2d011f36d61259aa1c6df4f0d5e28bc55e" integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg== -"@rollup/rollup-android-arm-eabi@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz#067cfcd81f1c1bfd92aefe3ad5ef1523549d5052" - integrity sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw== - -"@rollup/rollup-android-arm64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz#85e39a44034d7d4e4fee2a1616f0bddb85a80517" - integrity sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q== - -"@rollup/rollup-darwin-arm64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz#17d92fe98f2cc277b91101eb1528b7c0b6c00c54" - integrity sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w== - -"@rollup/rollup-darwin-x64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz#89ae6c66b1451609bd1f297da9384463f628437d" - integrity sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g== - -"@rollup/rollup-freebsd-arm64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz#cdbdb9947b26e76c188a31238c10639347413628" - integrity sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ== - -"@rollup/rollup-freebsd-x64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz#9b1458d07b6e040be16ee36d308a2c9520f7f7cc" - integrity sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg== - -"@rollup/rollup-linux-arm-gnueabihf@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz#1d50ded7c965d5f125f5832c971ad5b287befef7" - integrity sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A== - -"@rollup/rollup-linux-arm-musleabihf@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz#53597e319b7e65990d3bc2a5048097384814c179" - integrity sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw== - -"@rollup/rollup-linux-arm64-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz#597002909dec198ca4bdccb25f043d32db3d6283" - integrity sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ== - -"@rollup/rollup-linux-arm64-musl@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz#286f0e0f799545ce288bdc5a7c777261fcba3d54" - integrity sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA== - -"@rollup/rollup-linux-loong64-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz#1fab07fa1a4f8d3697735b996517f1bae0ba101b" - integrity sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg== - -"@rollup/rollup-linux-loong64-musl@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz#efc2cb143d6c067f95205482afb177f78ed9ea3d" - integrity sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA== - -"@rollup/rollup-linux-ppc64-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz#e8de8bd3463f96b92b7dfb7f151fd80ffe8a937c" - integrity sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw== - -"@rollup/rollup-linux-ppc64-musl@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz#8c508fe28a239da83b3a9da75bcf093186e064b4" - integrity sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg== - -"@rollup/rollup-linux-riscv64-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz#ff6d51976e0830732880770a9e18553136b8d92b" - integrity sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew== - -"@rollup/rollup-linux-riscv64-musl@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz#325fb35eefc7e81d75478318f0deee1e4a111493" - integrity sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ== - -"@rollup/rollup-linux-s390x-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz#37410fabb5d3ba4ad34abcfbe9ba9b6288413f30" - integrity sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ== - -"@rollup/rollup-linux-x64-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz#8ef907a53b2042068fc03fcc6a641e2b02276eca" - integrity sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw== - -"@rollup/rollup-linux-x64-musl@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz#61b9ba09ea219e0174b3f35a6ad2afc94bdd5662" - integrity sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA== - -"@rollup/rollup-openbsd-x64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz#fc4e54133134c1787d0b016ffdd5aeb22a5effd3" - integrity sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA== - -"@rollup/rollup-openharmony-arm64@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz#959ae225b1eeea0cc5b7c9f88e4834330fb6cd09" - integrity sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ== - -"@rollup/rollup-win32-arm64-msvc@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz#842acd38869fa1cbdbc240c76c67a86f93444c27" - integrity sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing== - -"@rollup/rollup-win32-ia32-msvc@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz#7ab654def4042df44cb29f8ed9d5044e850c66d5" - integrity sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg== - -"@rollup/rollup-win32-x64-gnu@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz#7426cdec1b01d2382ffd5cda83cbdd1c8efb3ca6" - integrity sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ== - -"@rollup/rollup-win32-x64-msvc@4.56.0": - version "4.56.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz#9eec0212732a432c71bde0350bc40b673d15b2db" - integrity sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g== +"@rollup/rollup-android-arm-eabi@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz#f762035679a6b168138c94c960fda0b0cdb00d98" + integrity sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA== + +"@rollup/rollup-android-arm64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz#1061ce0bfa6a6da361bda52a2949612769cd22ef" + integrity sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg== + +"@rollup/rollup-darwin-arm64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz#20d65f967566000d22ef6c9defb0f96d2f95ed79" + integrity sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg== + +"@rollup/rollup-darwin-x64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz#2a805303beb4cd44bfef993c39582cb0f1794f90" + integrity sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA== + +"@rollup/rollup-freebsd-arm64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz#7cf26a60d7245e9207a253ac07f11ddfcc47d622" + integrity sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g== + +"@rollup/rollup-freebsd-x64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz#2b1acc1e624b47f676f526df30bb4357ea21f9b6" + integrity sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA== + +"@rollup/rollup-linux-arm-gnueabihf@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz#1ba1ef444365a51687c7af2824b370791a1e3aaf" + integrity sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q== + +"@rollup/rollup-linux-arm-musleabihf@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz#e49863b683644bbbb9abc5b051c9b9d59774c3a0" + integrity sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA== + +"@rollup/rollup-linux-arm64-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz#fda3bfd43d2390d2d99bc7d9617c2db2941da52b" + integrity sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw== + +"@rollup/rollup-linux-arm64-musl@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz#aea6199031404f80a0ccf33d5d3a63de53819da0" + integrity sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw== + +"@rollup/rollup-linux-loong64-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz#f467333a5691f69a18295a7051e1cebb6815fdfe" + integrity sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q== + +"@rollup/rollup-linux-loong64-musl@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz#e46dffc29692caa743140636eb0d1d9a24ed0fc3" + integrity sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ== + +"@rollup/rollup-linux-ppc64-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz#be5b4494047ccbaadf1542fe9ac45b7788e73968" + integrity sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ== + +"@rollup/rollup-linux-ppc64-musl@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz#b14ce2b0fe9c37fd0646ec3095087c1d64c791f4" + integrity sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA== + +"@rollup/rollup-linux-riscv64-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz#b78357f88ee7a34f677b118714594e37a2362a8c" + integrity sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ== + +"@rollup/rollup-linux-riscv64-musl@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz#f44107ec0c30d691552c89eb3e4f287c33c56c3c" + integrity sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ== + +"@rollup/rollup-linux-s390x-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz#ddb1cf80fb21b376a45a4e93ffdbeb15205d38f3" + integrity sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg== + +"@rollup/rollup-linux-x64-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz#0da46a644c87e1d8b13da5e2901037193caea8d3" + integrity sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A== + +"@rollup/rollup-linux-x64-musl@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz#e561c93b6a23114a308396806551c25e28d3e303" + integrity sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw== + +"@rollup/rollup-openbsd-x64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz#52490600775364a0476f26be7ddc416dfa11439b" + integrity sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw== + +"@rollup/rollup-openharmony-arm64@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz#c25988aae57bd21fa7d0fcb014ef85ec8987ad2c" + integrity sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA== + +"@rollup/rollup-win32-arm64-msvc@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz#572a8cd78442441121f1a6b5ad686ab723c31ae4" + integrity sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ== + +"@rollup/rollup-win32-ia32-msvc@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz#431fa95c0be8377907fe4e7070aaa4016c7b7e3b" + integrity sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA== + +"@rollup/rollup-win32-x64-gnu@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz#19db67feb9c5fe09b1358efd1d97c5f6b299d347" + integrity sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA== + +"@rollup/rollup-win32-x64-msvc@4.57.0": + version "4.57.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz#6f38851da1123ac0380121108abd31ff21205c3d" + integrity sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ== "@rsdoctor/client@0.4.13": version "0.4.13" @@ -5444,147 +5449,147 @@ "@svgr/plugin-jsx" "8.1.0" "@svgr/plugin-svgo" "8.1.0" -"@swc/core-darwin-arm64@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.10.tgz#fb76ac44fa1d30696299d45c84f35b62f9ea2bac" - integrity sha512-U72pGqmJYbjrLhMndIemZ7u9Q9owcJczGxwtfJlz/WwMaGYAV/g4nkGiUVk/+QSX8sFCAjanovcU1IUsP2YulA== +"@swc/core-darwin-arm64@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz#6f177125831b765e5dacdd1d8c07de576962ad16" + integrity sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg== -"@swc/core-darwin-x64@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.10.tgz#b00fdc59022152cc4998e8478a9250ca8382a7d7" - integrity sha512-NZpDXtwHH083L40xdyj1sY31MIwLgOxKfZEAGCI8xHXdHa+GWvEiVdGiu4qhkJctoHFzAEc7ZX3GN5phuJcPuQ== +"@swc/core-darwin-x64@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz#31381b6560bbd8b8ca6a0755262df321e28c039d" + integrity sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA== -"@swc/core-linux-arm-gnueabihf@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.10.tgz#d39405a2ddcf6604db684fcbbcc9c807810b5d41" - integrity sha512-ioieF5iuRziUF1HkH1gg1r93e055dAdeBAPGAk40VjqpL5/igPJ/WxFHGvc6WMLhUubSJI4S0AiZAAhEAp1jDg== +"@swc/core-linux-arm-gnueabihf@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz#ea7831776f7d8a548db4a8a5f38ef37faf5c0c66" + integrity sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg== -"@swc/core-linux-arm64-gnu@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.10.tgz#5f59553f7d1d3e0af02eb9544b6f88c05a7bb372" - integrity sha512-tD6BClOrxSsNus9cJL7Gxdv7z7Y2hlyvZd9l0NQz+YXzmTWqnfzLpg16ovEI7gknH2AgDBB5ywOsqu8hUgSeEQ== +"@swc/core-linux-arm64-gnu@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz#c99a5843115ef57cbefd40b93c99cb130d6db12f" + integrity sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA== -"@swc/core-linux-arm64-musl@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.10.tgz#eb833e49df2a706d2ccf8e4474c111e7a1b784a5" - integrity sha512-4uAHO3nbfbrTcmO/9YcVweTQdx5fN3l7ewwl5AEK4yoC4wXmoBTEPHAVdKNe4r9+xrTgd4BgyPsy0409OjjlMw== +"@swc/core-linux-arm64-musl@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz#9a7831f558b2ff504d3d6eaaf6a4c84e5232284b" + integrity sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w== -"@swc/core-linux-x64-gnu@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.10.tgz#5d0b6f36e9d9d49fc0a2170fec2b6de2c9c0e76a" - integrity sha512-W0h9ONNw1pVIA0cN7wtboOSTl4Jk3tHq+w2cMPQudu9/+3xoCxpFb9ZdehwCAk29IsvdWzGzY6P7dDVTyFwoqg== +"@swc/core-linux-x64-gnu@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz#4a1fce9b9abedde04459fefe5da9dd9e405a2ae8" + integrity sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ== -"@swc/core-linux-x64-musl@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.10.tgz#0788cf24330f8efec0379cce594c727f3bc0a7c8" - integrity sha512-XQNZlLZB62S8nAbw7pqoqwy91Ldy2RpaMRqdRN3T+tAg6Xg6FywXRKCsLh6IQOadr4p1+lGnqM/Wn35z5a/0Vw== +"@swc/core-linux-x64-musl@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz#0865f23b1cc532d9d77e743a83279e074edbee25" + integrity sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw== -"@swc/core-win32-arm64-msvc@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.10.tgz#1555dc561606268ff84805568cd9a60b5de42543" - integrity sha512-qnAGrRv5Nj/DATxAmCnJQRXXQqnJwR0trxLndhoHoxGci9MuguNIjWahS0gw8YZFjgTinbTxOwzatkoySihnmw== +"@swc/core-win32-arm64-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz#73eda8b54c94046728f5983e5516223ad1009c59" + integrity sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA== -"@swc/core-win32-ia32-msvc@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.10.tgz#e51f79e4e257f9b1a8c90437b20fc5a9b5b13119" - integrity sha512-i4X/q8QSvzVlaRtv1xfnfl+hVKpCfiJ+9th484rh937fiEZKxZGf51C+uO0lfKDP1FfnT6C1yBYwHy7FLBVXFw== +"@swc/core-win32-ia32-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz#0df41547974ba9f26ba3e903e803ff523c15650b" + integrity sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw== -"@swc/core-win32-x64-msvc@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.10.tgz#9c2a11ac3321ebea8fc24940a1cd4b4cc9249fe2" - integrity sha512-HvY8XUFuoTXn6lSccDLYFlXv1SU/PzYi4PyUqGT++WfTnbw/68N/7BdUZqglGRwiSqr0qhYt/EhmBpULj0J9rA== +"@swc/core-win32-x64-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz#f6f97500472c0ea4ab756c383c5d97896075f95c" + integrity sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw== "@swc/core@^1.7.39": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.10.tgz#8487c006be73f4b4bee52d431f2b29881ae70ea4" - integrity sha512-udNofxftduMUEv7nqahl2nvodCiCDQ4Ge0ebzsEm6P8s0RC2tBM0Hqx0nNF5J/6t9uagFJyWIDjXy3IIWMHDJw== + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.11.tgz#8f52ab37b4d874b9cc1b1ae809778620b42dbf9f" + integrity sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w== dependencies: "@swc/counter" "^0.1.3" "@swc/types" "^0.1.25" optionalDependencies: - "@swc/core-darwin-arm64" "1.15.10" - "@swc/core-darwin-x64" "1.15.10" - "@swc/core-linux-arm-gnueabihf" "1.15.10" - "@swc/core-linux-arm64-gnu" "1.15.10" - "@swc/core-linux-arm64-musl" "1.15.10" - "@swc/core-linux-x64-gnu" "1.15.10" - "@swc/core-linux-x64-musl" "1.15.10" - "@swc/core-win32-arm64-msvc" "1.15.10" - "@swc/core-win32-ia32-msvc" "1.15.10" - "@swc/core-win32-x64-msvc" "1.15.10" + "@swc/core-darwin-arm64" "1.15.11" + "@swc/core-darwin-x64" "1.15.11" + "@swc/core-linux-arm-gnueabihf" "1.15.11" + "@swc/core-linux-arm64-gnu" "1.15.11" + "@swc/core-linux-arm64-musl" "1.15.11" + "@swc/core-linux-x64-gnu" "1.15.11" + "@swc/core-linux-x64-musl" "1.15.11" + "@swc/core-win32-arm64-msvc" "1.15.11" + "@swc/core-win32-ia32-msvc" "1.15.11" + "@swc/core-win32-x64-msvc" "1.15.11" "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/html-darwin-arm64@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.10.tgz#98c95d79b6713906fadb0618a9fc18ef4068231e" - integrity sha512-WmQiAZe3TSbIvdPKljsFUwGqj3j53CSNxNcJcLhbTPVCU8Z0QQ9cEpeyktkqGNrQWOGp5r5EorWi+nvFu4HfqQ== +"@swc/html-darwin-arm64@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.11.tgz#209c1591bb8c3cff87f104ae44ec75c8e9c9ecfc" + integrity sha512-FTa0ypbMbUXiwXIIT76HMFQYewEdTsPKOQGDqI6/kUTzU+lCIqIJequdoh6gqQvMq2BtBu/15dkTYYIlp4JoJw== -"@swc/html-darwin-x64@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.15.10.tgz#f93e63c582b93598ffdb79b2ccc1f318a52ecdc7" - integrity sha512-EQaa43uKUn48dOaXyY7JpA2DChFYTwdfyfFvqz+sN3LoEM1OV1QxocWoF+qHPTKEzvLUzIYH5Tm09GzJz9hWIA== +"@swc/html-darwin-x64@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-darwin-x64/-/html-darwin-x64-1.15.11.tgz#411b53362105385132ffdf9bf556217d71283cfd" + integrity sha512-U+WFUFqbqS2WsLVCt40MuBGJ7mxDJi/T8RocBvQkoRwU3juOmeM2V/Od/QLBZxTFZTLQ3RCHJTkLXSDnxUWUuw== -"@swc/html-linux-arm-gnueabihf@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.10.tgz#dcad09c8e9bea3fe6d2d230700c786695d723c40" - integrity sha512-UymYHc37ejcKubESPGP5LlGqmx6vJnVs5CYCUbdpblar1XN1oW0SkxKOZVjURYCVAaB3XxfCTCptEol04uvhiw== +"@swc/html-linux-arm-gnueabihf@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.11.tgz#12a9e6a0fbb62f68fe0f003f2c43a9232c66d1ea" + integrity sha512-Cid64465sEkAiTh8KLFCbQbsIbgDzPeGdA5ZYB8w5AXmYAGPJ0xbeRHEFq3iq469Dj2rxYvExrLCXNhn8rHbww== -"@swc/html-linux-arm64-gnu@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.10.tgz#db770640cd8e14837209cb3f3fbeddd8977b0460" - integrity sha512-o9FzVmnpyD0Z4fzUbIrFz+1JZ72ZFaij+tZ4ZPtIWgA0ymyqlplPOHAbRsbt5/YoLoAx0wo2FN/sYsMdPv3mcA== +"@swc/html-linux-arm64-gnu@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.11.tgz#35b7395c3db2c702a4e2db7bac9e2805d3d0453f" + integrity sha512-sxKdt0QJIR2x/6pAmDPK0tjfGVwsSZsfeY1BM8ODTm7h18ApE7KVNN+ZtsDbl4n5ejfXG7fOWNmMPUvj8qSMSA== -"@swc/html-linux-arm64-musl@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.10.tgz#08e7a223944006121d94b6883f0189f396723f3a" - integrity sha512-3bBKC6VbOCFH4zJECWmp6jpuoOTcRIaC33zXLJta/GL9bT4AL3PAP0TdSvjNJ4fCAnOJFmbhawlCIOJJ5mTl/g== +"@swc/html-linux-arm64-musl@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.11.tgz#c21b62f3027720aeac30039fcc85487893d1523c" + integrity sha512-aNACh2/HPy52VbKPqHieVRDeKzkO66DQdlhiVUi+fggdn8khvllni6Xr52INeAMjYFASrTTth/3vKXMv215t3A== -"@swc/html-linux-x64-gnu@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.10.tgz#6811a3f9de97a1377715d3176163931462fec63e" - integrity sha512-4Bb77cpu8fZ38+PqfctHzO3JuJ74B8HKG3/NaqGUlJbwQOiHy0RSAowAp9njyMZ1EzbEkpC9XXju75RLI1KdLA== +"@swc/html-linux-x64-gnu@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.11.tgz#c0bb4430a406f5fdd171b4ba1d6157320dbbe3c7" + integrity sha512-8YOar0XeRLBzA+UMMW5smGpsQamoZLtaQ5RKGfap21FxOUUXqkPhkDTRr+kBVCYb47yz3NokjTPaDGTWOYNyww== -"@swc/html-linux-x64-musl@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.10.tgz#170a25071cc42c02740eb3a5f6d9b51faab50cfc" - integrity sha512-amYNWp667VbuV+4cAJB0RWYwsBPyh+7WtV0CDpD0ATgB4UvkOWuencFqUYXKC9xczFriani6OqdMa1d2Bffbog== +"@swc/html-linux-x64-musl@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.11.tgz#2b3ea8fb8937966fac39bf5d36c07dd99b6d34c0" + integrity sha512-em2Ur0uGFA/nw2JbMclXu9mLuUC7q/1J06i8FZTRHqZzNGt9Q0UMdgH9T8HkGLT5e7dZ6ROJoq1H4st6B8N3uw== -"@swc/html-win32-arm64-msvc@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.10.tgz#2c67ce17b84c7bf5bdf82e80bc0ca12ce95dc4d6" - integrity sha512-FRtTz1akAUfS1PH1WsILwBuRAgy/4E/d++il+dZAGkaAP5UaNUXPduNfLaJhT/mR3rVJaIqfAmAJEc1ts0u0lA== +"@swc/html-win32-arm64-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.11.tgz#3503c7ecddb773bd90ee09f31fb30e230edcecda" + integrity sha512-Xf9Vd4UsYTs4ejBwS+j9zShkyp3KQ+qfn/ZKVMKDygWjuOjU6FFXWYm93/PdTmS5qD0c58FhmoqTv+uFEZ4nxQ== -"@swc/html-win32-ia32-msvc@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.10.tgz#6b320b474bb42a590bb38ac584ff19b2e53df78e" - integrity sha512-eRscB+1U3WvxKyKrbh7aBioxNB/G3t+NP/RoTEAfSmKfIMuRTR3YX6FrPSU/7SFjv2lgswjRt5MGX7Ygjh5xuw== +"@swc/html-win32-ia32-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.11.tgz#41ce66ac169bb7d4b3fa061f0a5be1cc834a5ddb" + integrity sha512-+YNzKR81UqH+xOZPU8XEIy5L6E63UUGSSEu1Wv3D85GVMQkZ8X9LZkZ5hq4vvqmCTV1zeHIPfzNrrVElqK198g== -"@swc/html-win32-x64-msvc@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.10.tgz#a7300047fd90710907ba7d4f52a882eb33047efc" - integrity sha512-UnKP25R8n3rxl3o0/04FK0iezi9m3Yp8Qrc9nzzrjFpso/TPbJwfgE+2bGUYaX482EsBU7TBorLY2t8fWcD7/Q== +"@swc/html-win32-x64-msvc@1.15.11": + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.11.tgz#98793d32a81457c33248c3bf50711379025104d2" + integrity sha512-Y3Xj62eA+pjadhgiVNFUBgIN9Wa1gYrB3N1l6NmSLeApVE2qkBww3WrVXhRDfqUXiWz7eRHPDakZSRQREyMv5A== "@swc/html@^1.13.5": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.15.10.tgz#5d20c1b04a11cb1134e4af6de8d9fd8bf1516226" - integrity sha512-nlsp1DcT84fQPLcdOO8InIApoD6pI2gWmZCqyCfdu9WRIXZyKv43xIFEymtFrkZgR1iE0YlQV5mrsMnY2D2kxA== + version "1.15.11" + resolved "https://registry.yarnpkg.com/@swc/html/-/html-1.15.11.tgz#f8dcdc099eaffdc2d40b0a818b13ec6198d75b50" + integrity sha512-JOO48SCxyR3KbH9iiLMSWRDm7+Xl6lgvOBe5di54W8PsumdeP0Imatq8cunkRAUR7br8xAjlpB16bX6iJeyeMw== dependencies: "@swc/counter" "^0.1.3" optionalDependencies: - "@swc/html-darwin-arm64" "1.15.10" - "@swc/html-darwin-x64" "1.15.10" - "@swc/html-linux-arm-gnueabihf" "1.15.10" - "@swc/html-linux-arm64-gnu" "1.15.10" - "@swc/html-linux-arm64-musl" "1.15.10" - "@swc/html-linux-x64-gnu" "1.15.10" - "@swc/html-linux-x64-musl" "1.15.10" - "@swc/html-win32-arm64-msvc" "1.15.10" - "@swc/html-win32-ia32-msvc" "1.15.10" - "@swc/html-win32-x64-msvc" "1.15.10" + "@swc/html-darwin-arm64" "1.15.11" + "@swc/html-darwin-x64" "1.15.11" + "@swc/html-linux-arm-gnueabihf" "1.15.11" + "@swc/html-linux-arm64-gnu" "1.15.11" + "@swc/html-linux-arm64-musl" "1.15.11" + "@swc/html-linux-x64-gnu" "1.15.11" + "@swc/html-linux-x64-musl" "1.15.11" + "@swc/html-win32-arm64-msvc" "1.15.11" + "@swc/html-win32-ia32-msvc" "1.15.11" + "@swc/html-win32-x64-msvc" "1.15.11" "@swc/types@^0.1.25": version "0.1.25" @@ -6031,9 +6036,9 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@^4.0.2": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" + integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q== "@types/http-errors@*": version "2.0.5" @@ -6210,9 +6215,9 @@ integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*": - version "19.2.9" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.9.tgz#84ec7669742bb3e7e2e8d6a5258d95ead7764200" - integrity sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA== + version "19.2.10" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.10.tgz#f3ea799e6b4cebad6dfd231c238fc9de7652e2d2" + integrity sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw== dependencies: csstype "^3.2.2" @@ -6913,9 +6918,9 @@ autoprefixer@^10.4.19, autoprefixer@^10.4.23: postcss-value-parser "^4.2.0" axios@^1.7.9, axios@^1.9.0: - version "1.13.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" - integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== + version "1.13.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.4.tgz#15d109a4817fb82f73aea910d41a2c85606076bc" + integrity sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg== dependencies: follow-redirects "^1.15.6" form-data "^4.0.4" @@ -6990,9 +6995,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== baseline-browser-mapping@^2.9.0: - version "2.9.17" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.17.tgz#9d6019766cd7eba738cb5f32c84b9f937cc87780" - integrity sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ== + version "2.9.18" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz#c8281693035a9261b10d662a5379650a6c2d1ff7" + integrity sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA== batch@0.6.1: version "0.6.1" @@ -8063,9 +8068,9 @@ css-what@^6.0.1, css-what@^6.1.0: integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== cssdb@^8.6.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.7.0.tgz#5a0846fabf863a4d397d980d8d29eb3eb26dfde1" - integrity sha512-UxiWVpV953ENHqAKjKRPZHNDfRo3uOymvO5Ef7MFCWlenaohkYj7PTO7WCBdjZm8z/aDZd6rXyUIlwZ0AjyFSg== + version "8.7.1" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.7.1.tgz#f296bbedc39ace9edf0ed8fbbec57c3e117747cd" + integrity sha512-+F6LKx48RrdGOtE4DT5jz7Uo+VeyKXpK797FAevIkzjV8bMHz6xTO5F7gNDcRCHmPgD5jj2g6QCsY9zmVrh38A== cssesc@^3.0.0: version "3.0.0" @@ -8826,9 +8831,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.263: - version "1.5.278" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz#807a5e321f012a41bfd64e653f35993c9af95493" - integrity sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw== + version "1.5.279" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz#67dfdeb22fd81412d0d18d1d9b2c749e9b8945cb" + integrity sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg== elkjs@^0.9.0, elkjs@^0.9.3: version "0.9.3" @@ -10815,9 +10820,9 @@ jszip@^3.10.1: setimmediate "^1.0.5" katex@^0.16.0, katex@^0.16.22, katex@^0.16.9: - version "0.16.27" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.27.tgz#4ecf6f620e0ca1c1a5de722e85fcdcec49086a48" - integrity sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw== + version "0.16.28" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.28.tgz#64068425b5a29b41b136aae0d51cbb2c71d64c39" + integrity sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg== dependencies: commander "^8.3.0" @@ -13774,9 +13779,9 @@ pwacompat@2.0.17: integrity sha512-6Du7IZdIy7cHiv7AhtDy4X2QRM8IAD5DII69mt5qWibC2d15ZU8DmBG1WdZKekG11cChSu4zkSUGPF9sweOl6w== pyodide@^0.29.1: - version "0.29.2" - resolved "https://registry.yarnpkg.com/pyodide/-/pyodide-0.29.2.tgz#cab544903fe202b765da2e6046e7d55c064ec34e" - integrity sha512-q/Fnbmiwlw80GfaG74gTbZ6hXOYHwZ1wCDZzE03+tzQYDP1wKEqrSqmIuLQRSYixFFdNdlGEinoGYcDnulwp5g== + version "0.29.3" + resolved "https://registry.yarnpkg.com/pyodide/-/pyodide-0.29.3.tgz#555ec43c09983a3cf3794c778e40084de24cfb95" + integrity sha512-22UBuhOJawj7vKUnS7/F3xK+515LJdjiMAHoCfuS6/PbHiOrSQVnYwDe+2sbVwiOZ3sMMexdXICew6NqOMQGgA== dependencies: "@types/emscripten" "^1.41.4" ws "^8.5.0" @@ -13931,9 +13936,9 @@ react-diff-viewer-continued@^3.4.0: prop-types "^15.8.1" react-dom@^19.2.0: - version "19.2.3" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.3.tgz#f0b61d7e5c4a86773889fcc1853af3ed5f215b17" - integrity sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg== + version "19.2.4" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.4.tgz#6fac6bd96f7db477d966c7ec17c1a2b1ad8e6591" + integrity sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ== dependencies: scheduler "^0.27.0" @@ -14121,9 +14126,9 @@ react-transition-group@^4.3.0: prop-types "^15.6.2" react@^19.2.0: - version "19.2.3" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.3.tgz#d83e5e8e7a258cf6b4fe28640515f99b87cd19b8" - integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA== + version "19.2.4" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.4.tgz#438e57baa19b77cb23aab516cf635cd0579ee09a" + integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ== reactjs-popup@^2.0.6: version "2.0.6" @@ -14503,37 +14508,37 @@ robust-predicates@^3.0.2: integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== rollup@^4.20.0, rollup@^4.43.0: - version "4.56.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.56.0.tgz#65959d13cfbd7e48b8868c05165b1738f0143862" - integrity sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg== + version "4.57.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.57.0.tgz#9fa13c1fb779d480038f45708b5e01b9449b6853" + integrity sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.56.0" - "@rollup/rollup-android-arm64" "4.56.0" - "@rollup/rollup-darwin-arm64" "4.56.0" - "@rollup/rollup-darwin-x64" "4.56.0" - "@rollup/rollup-freebsd-arm64" "4.56.0" - "@rollup/rollup-freebsd-x64" "4.56.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.56.0" - "@rollup/rollup-linux-arm-musleabihf" "4.56.0" - "@rollup/rollup-linux-arm64-gnu" "4.56.0" - "@rollup/rollup-linux-arm64-musl" "4.56.0" - "@rollup/rollup-linux-loong64-gnu" "4.56.0" - "@rollup/rollup-linux-loong64-musl" "4.56.0" - "@rollup/rollup-linux-ppc64-gnu" "4.56.0" - "@rollup/rollup-linux-ppc64-musl" "4.56.0" - "@rollup/rollup-linux-riscv64-gnu" "4.56.0" - "@rollup/rollup-linux-riscv64-musl" "4.56.0" - "@rollup/rollup-linux-s390x-gnu" "4.56.0" - "@rollup/rollup-linux-x64-gnu" "4.56.0" - "@rollup/rollup-linux-x64-musl" "4.56.0" - "@rollup/rollup-openbsd-x64" "4.56.0" - "@rollup/rollup-openharmony-arm64" "4.56.0" - "@rollup/rollup-win32-arm64-msvc" "4.56.0" - "@rollup/rollup-win32-ia32-msvc" "4.56.0" - "@rollup/rollup-win32-x64-gnu" "4.56.0" - "@rollup/rollup-win32-x64-msvc" "4.56.0" + "@rollup/rollup-android-arm-eabi" "4.57.0" + "@rollup/rollup-android-arm64" "4.57.0" + "@rollup/rollup-darwin-arm64" "4.57.0" + "@rollup/rollup-darwin-x64" "4.57.0" + "@rollup/rollup-freebsd-arm64" "4.57.0" + "@rollup/rollup-freebsd-x64" "4.57.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.57.0" + "@rollup/rollup-linux-arm-musleabihf" "4.57.0" + "@rollup/rollup-linux-arm64-gnu" "4.57.0" + "@rollup/rollup-linux-arm64-musl" "4.57.0" + "@rollup/rollup-linux-loong64-gnu" "4.57.0" + "@rollup/rollup-linux-loong64-musl" "4.57.0" + "@rollup/rollup-linux-ppc64-gnu" "4.57.0" + "@rollup/rollup-linux-ppc64-musl" "4.57.0" + "@rollup/rollup-linux-riscv64-gnu" "4.57.0" + "@rollup/rollup-linux-riscv64-musl" "4.57.0" + "@rollup/rollup-linux-s390x-gnu" "4.57.0" + "@rollup/rollup-linux-x64-gnu" "4.57.0" + "@rollup/rollup-linux-x64-musl" "4.57.0" + "@rollup/rollup-openbsd-x64" "4.57.0" + "@rollup/rollup-openharmony-arm64" "4.57.0" + "@rollup/rollup-win32-arm64-msvc" "4.57.0" + "@rollup/rollup-win32-ia32-msvc" "4.57.0" + "@rollup/rollup-win32-x64-gnu" "4.57.0" + "@rollup/rollup-win32-x64-msvc" "4.57.0" fsevents "~2.3.2" rou3@^0.7.10: From ba0d1cbc55917e4fdc9a9cde32db47bcadf510ef Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 28 Jan 2026 17:19:12 +0100 Subject: [PATCH 16/49] update loading behavior --- src/models/Page.ts | 26 +++++++++----------------- src/stores/DocumentRootStore.ts | 26 +++++++++++++------------- src/stores/PageStore.ts | 25 +++++++++++++++++-------- 3 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/models/Page.ts b/src/models/Page.ts index 993d06c0a..d5d2eeae4 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -2,13 +2,14 @@ * A Markdown or MDX Page */ -import { action, computed, observable, ObservableSet } from 'mobx'; +import { action, computed, observable, ObservableMap } from 'mobx'; import { PageStore, SidebarVersions } from '@tdev-stores/PageStore'; import TaskState from '@tdev-models/documents/TaskState'; import _ from 'es-toolkit/compat'; import iDocument from '@tdev-models/iDocument'; import StudentGroup from '@tdev-models/StudentGroup'; import ProgressState from './documents/ProgressState'; +import { DocumentType } from '@tdev-api/document'; interface PageTree { id: string; @@ -20,11 +21,10 @@ export default class Page { readonly store: PageStore; readonly id: string; readonly path: string; - refetchTimestamps: number[] = []; @observable.ref accessor _primaryStudentGroupName: string | undefined = undefined; @observable.ref accessor _activeStudentGroup: StudentGroup | undefined = undefined; - documentRootIds: ObservableSet; + documentRootConfigs: ObservableMap; dynamicValues = observable.map(); @@ -32,7 +32,7 @@ export default class Page { this.id = id; this.path = path; this.store = store; - this.documentRootIds = observable.set([id]); + this.documentRootConfigs = observable.map([[id, 'mdx_comment']]); } @computed @@ -86,20 +86,20 @@ export default class Page { if (process.env.NODE_ENV === 'production') { return; } - if (!this.documentRootIds.has(doc.documentRootId)) { + if (!this.documentRootConfigs.has(doc.documentRootId)) { this.store.loadPageIndex(true); } } @action - addDocumentRootId(id: string) { - this.documentRootIds.add(id); + addDocumentRootConfig(id: string, type: DocumentType) { + this.documentRootConfigs.set(id, type); } @computed get documentRoots() { return this.store.root.documentRootStore.documentRoots.filter( - (doc) => this.documentRootIds.has(doc.id) && !doc.isDummy + (doc) => this.documentRootConfigs.has(doc.id) && !doc.isDummy ); } @@ -156,18 +156,10 @@ export default class Page { */ @action loadLinkedDocumentRoots() { - this.refetchTimestamps.push(Date.now()); if (!this.store.root.userStore.isUserSwitched && this.documents.length > 0) { return; } - return this.store.loadAllDocuments(this).catch((err) => { - const now = Date.now(); - const ts = this.refetchTimestamps.filter((ts) => now - ts < 10_000); - if (ts.length < 5) { - setTimeout(() => this.loadLinkedDocumentRoots(), 500); - } - console.warn('Failed to load linked document roots for page', this, err); - }); + return this.store.loadAllDocuments(this); } @action diff --git a/src/stores/DocumentRootStore.ts b/src/stores/DocumentRootStore.ts index 1dca366b4..6ed915cbc 100644 --- a/src/stores/DocumentRootStore.ts +++ b/src/stores/DocumentRootStore.ts @@ -170,13 +170,13 @@ export class DocumentRootStore extends iStore { this.loadQueued(); console.log('Postponing', postponed.length, 'document roots for next batch'); } - const current = new Map(batch); + const currentBatch = new Map(batch); /** * if the user is not logged in, we can't load the documents * so we just mark all queued documents as loaded */ if (!this.root.sessionStore.isLoggedIn) { - [...current.keys()].forEach((id) => { + [...currentBatch.keys()].forEach((id) => { const dummyModel = this.find(id); if (dummyModel && dummyModel.isDummy) { dummyModel.setLoaded(); @@ -188,16 +188,16 @@ export class DocumentRootStore extends iStore { /** * load all queued documents */ - const rootIds = [...current.keys()].sort(); + const rootIds = [...currentBatch.keys()].sort(); const idConfigs: [DocumentType | undefined, string[]][] = []; - const rootIdsWithDocs = rootIds.filter((id) => !current.get(id)!.load.documentType); + const rootIdsWithDocs = rootIds.filter((id) => !currentBatch.get(id)!.load.documentType); if (rootIdsWithDocs.length > 0) { idConfigs.push([undefined, rootIdsWithDocs]); } rootIds - .filter((id) => current.get(id)!.load.documentType) + .filter((id) => currentBatch.get(id)!.load.documentType) .reduce((acc, id) => { - const type = current.get(id)!.load.documentType; + const type = currentBatch.get(id)!.load.documentType; const idx = acc.findIndex((item) => item[0] === type); if (idx < 0) { acc.push([type, [id]]); @@ -220,21 +220,21 @@ export class DocumentRootStore extends iStore { ).then((results) => results.flatMap((r) => r.data)); runInAction(() => { models.forEach((data) => { - const config = current.get(data.id); + const config = currentBatch.get(data.id); if (!config) { return; } this.addApiResultToStore(data, config); - current.delete(data.id); + currentBatch.delete(data.id); }); }); if (!isUserSwitched) { // create all missing root documents const created = await Promise.all( - [...current.keys()] - .filter((id) => !this.find(id)?.isLoaded && !current.get(id)!.load.skipCreate) + [...currentBatch.keys()] + .filter((id) => !this.find(id)?.isLoaded && !currentBatch.get(id)!.load.skipCreate) .map((id) => { - const config = current.get(id); + const config = currentBatch.get(id); if (config && config.meta) { return this.create(id, config.meta, config.access).catch(() => { // queue it up for loading later - the model was probably generated in the mean time? @@ -258,12 +258,12 @@ export class DocumentRootStore extends iStore { created .filter((docRoot) => !!docRoot) .forEach((docRoot) => { - current.delete(docRoot.id); + currentBatch.delete(docRoot.id); }); } // mark all remaining roots as loaded runInAction(() => { - [...current.keys()].forEach((id) => { + [...currentBatch.keys()].forEach((id) => { const dummyModel = this.find(id); if (dummyModel && dummyModel.isDummy) { dummyModel.setLoaded(); diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 7073cafaf..79646f0ea 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -102,7 +102,9 @@ export class PageStore extends iStore { const pages = Object.values(grouped).map((docs) => { const doc = docs[0]!; const page = new Page(doc.page_id, doc.path, this); - docs.filter((doc) => doc.position > 0).forEach((d) => page.addDocumentRootId(d.id)); + docs.filter((doc) => doc.position > 0).forEach((d) => + page.addDocumentRootConfig(d.id, d.type) + ); return page; }); this.pages.replace(pages); @@ -149,15 +151,22 @@ export class PageStore extends iStore { @action loadAllDocuments(page: Page) { - return this.withAbortController(`load-all-${page.id}`, (sig) => { - return apiAllDocuments([...page.documentRootIds], sig.signal).then(({ data }) => { - return transaction(() => { - return data.map((doc) => { - return this.root.documentStore.addToStore(doc); - }); - }); + page.documentRootConfigs.forEach((type, docId) => { + this.root.documentRootStore.loadInNextBatch(docId, undefined, { + skipCreate: true, + documentType: type, + documentRoot: false }); }); + // return this.withAbortController(`load-all-${page.id}`, (sig) => { + // return apiAllDocuments([...page.documentRootConfigs.keys()], sig.signal).then(({ data }) => { + // return transaction(() => { + // return data.map((doc) => { + // return this.root.documentStore.addToStore(doc); + // }); + // }); + // }); + // }); } @action From 6a99db56855b5376dff692cd8448d76cac779e93 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 28 Jan 2026 23:00:16 +0100 Subject: [PATCH 17/49] add init load --- src/models/Page.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/models/Page.ts b/src/models/Page.ts index d5d2eeae4..022b8968f 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -21,6 +21,7 @@ export default class Page { readonly store: PageStore; readonly id: string; readonly path: string; + initialLoadComplete = false; @observable.ref accessor _primaryStudentGroupName: string | undefined = undefined; @observable.ref accessor _activeStudentGroup: StudentGroup | undefined = undefined; @@ -155,13 +156,19 @@ export default class Page { * loads all linked document roots (added by #addDocumentRoot) */ @action - loadLinkedDocumentRoots() { - if (!this.store.root.userStore.isUserSwitched && this.documents.length > 0) { + loadLinkedDocumentRoots(force = false) { + if (this.initialLoadComplete && !force && !this.store.root.userStore.isUserSwitched) { return; } + this.initialLoadComplete = true; return this.store.loadAllDocuments(this); } + @action + stateableDocumentRootIds() { + this.documentRootConfigs; + } + @action toggleActiveStudentGroup(studentGroup: StudentGroup) { if (this._activeStudentGroup && this._activeStudentGroup.id === studentGroup.id) { From ca063f740c07b06a31fc947b8a87d9c45ecca34d Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 29 Jan 2026 00:24:15 +0100 Subject: [PATCH 18/49] poc --- src/components/EditingOverview/index.tsx | 2 +- src/components/MdxPage/index.tsx | 4 +- src/models/Page.ts | 14 +++++-- src/stores/PageStore.ts | 52 +++++++++++------------- src/theme/DocItem/Content/index.tsx | 7 ---- src/theme/DocSidebarItem/index.tsx | 15 +++++-- 6 files changed, 49 insertions(+), 45 deletions(-) diff --git a/src/components/EditingOverview/index.tsx b/src/components/EditingOverview/index.tsx index 71c20f324..ceb84c605 100644 --- a/src/components/EditingOverview/index.tsx +++ b/src/components/EditingOverview/index.tsx @@ -78,7 +78,7 @@ const EditingOverview = observer(() => { } onOpen={() => { - currentPage.loadLinkedDocumentRoots(); + currentPage.loadLinkedDocumentRoots(true); }} contentStyle={{ position: 'fixed' diff --git a/src/components/MdxPage/index.tsx b/src/components/MdxPage/index.tsx index 86f631ff4..76051be13 100644 --- a/src/components/MdxPage/index.tsx +++ b/src/components/MdxPage/index.tsx @@ -40,7 +40,9 @@ const MdxPage = observer((props: Props) => { if (!current || !userStore.current?.hasElevatedAccess) { return; } - current.loadLinkedDocumentRoots(); + if (userStore.isUserSwitched) { + current.loadLinkedDocumentRoots(); + } }, [pageStore.current, userStore.viewedUserId]); return null; }); diff --git a/src/models/Page.ts b/src/models/Page.ts index 022b8968f..f7febd8f5 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -157,16 +157,22 @@ export default class Page { */ @action loadLinkedDocumentRoots(force = false) { - if (this.initialLoadComplete && !force && !this.store.root.userStore.isUserSwitched) { + if (!force && !this.store.root.userStore.isUserSwitched) { + return; + } + if (!force && this.initialLoadComplete) { return; } this.initialLoadComplete = true; return this.store.loadAllDocuments(this); } - @action - stateableDocumentRootIds() { - this.documentRootConfigs; + @computed + get taskableDocumentRootIds() { + return [...this.documentRootConfigs.keys()].filter((id) => { + const config = this.documentRootConfigs.get(id)!; + return config === 'task_state' || config === 'progress_state'; + }); } @action diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 79646f0ea..eee1060af 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -37,7 +37,6 @@ export class PageStore extends iStore { @observable accessor runningTurtleScriptId: string | undefined = undefined; @observable.ref accessor _pageIndex: PageIndex[] = []; - sidebars = observable.map>([], { deep: false }); constructor(store: RootStore) { super(); @@ -48,20 +47,6 @@ export class PageStore extends iStore { return SidebarVersions; } - @action - configureSidebar(id: string, sidebar: ReturnType) { - if (this.sidebars.has(id) || !sidebar) { - return; - } - this.sidebars.set(id, sidebar); - sidebar.items.forEach((item) => { - if (item.type !== 'category') { - return; - } - item.items; - }); - } - @computed get landingPages() { return this.pages.filter((page) => page.isLandingpage); @@ -111,10 +96,26 @@ export class PageStore extends iStore { this._pageIndex = data.documentRoots; }) ) + .then(() => { + this.loadTaskableDocuments(); + }) .catch((err) => { console.error('Failed to load page index', err); }); } + + @action + loadTaskableDocuments() { + this.pages.forEach((page) => { + page.taskableDocumentRootIds.forEach((id) => { + this.root.documentRootStore.loadInNextBatch(id, undefined, { + documentRoot: false, + skipCreate: true + }); + }); + }); + } + find = computedFn( function (this: PageStore, id?: string): Page | undefined { if (!id) { @@ -151,22 +152,15 @@ export class PageStore extends iStore { @action loadAllDocuments(page: Page) { - page.documentRootConfigs.forEach((type, docId) => { - this.root.documentRootStore.loadInNextBatch(docId, undefined, { - skipCreate: true, - documentType: type, - documentRoot: false + return this.withAbortController(`load-all-${page.id}`, (sig) => { + return apiAllDocuments([...page.documentRootConfigs.keys()], sig.signal).then(({ data }) => { + return transaction(() => { + return data.map((doc) => { + return this.root.documentStore.addToStore(doc); + }); + }); }); }); - // return this.withAbortController(`load-all-${page.id}`, (sig) => { - // return apiAllDocuments([...page.documentRootConfigs.keys()], sig.signal).then(({ data }) => { - // return transaction(() => { - // return data.map((doc) => { - // return this.root.documentStore.addToStore(doc); - // }); - // }); - // }); - // }); } @action diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx index 54581cc7f..12295d8d1 100644 --- a/src/theme/DocItem/Content/index.tsx +++ b/src/theme/DocItem/Content/index.tsx @@ -6,17 +6,10 @@ import { observer } from 'mobx-react-lite'; import { useStore } from '@tdev-hooks/useStore'; import { useLocation } from '@docusaurus/router'; type Props = WrapperProps; -import { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; const ContentWrapper = observer((props: Props): React.ReactNode => { const pageStore = useStore('pageStore'); const location = useLocation(); - const sidebar = useDocsSidebar(); - React.useEffect(() => { - if (sidebar?.name) { - pageStore.configureSidebar(sidebar.name, sidebar); - } - }, [sidebar, pageStore]); React.useEffect(() => { if (pageStore.current) { diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index 1f674eeac..9be76a2d7 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -8,13 +8,22 @@ import Icon from '@mdi/react'; import { mdiCheck, mdiCheckCircle, mdiProgressQuestion } from '@mdi/js'; import clsx from 'clsx'; import styles from './styles.module.scss'; -import { useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; +const ensureTrailingSlash = (path?: string) => { + if (!path) { + return ''; + } + return path.endsWith('/') ? path : path + '/'; +}; type Props = WrapperProps; const DocSidebarItemWrapper = observer((props: Props): ReactNode => { const pageStore = useStore('pageStore'); - const { pid } = (props.item.customProps || {}) as { pid?: string }; - const page = pageStore.find(pid); + const path = props.item.type !== 'html' ? ensureTrailingSlash(props.item.href) : undefined; + if (!path) { + console.log(props.item); + } + + const page = pageStore.pages.find((p) => p.path === path); return (
Date: Thu, 29 Jan 2026 07:14:06 +0100 Subject: [PATCH 19/49] add taskableDocs --- src/components/Demo/index.tsx | 19 ++++++++++++++++++- src/models/Page.ts | 17 ++++++++++++++++- src/theme/DocSidebarItem/index.tsx | 18 ++++++++---------- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx index 3848cd14a..802ad97e8 100644 --- a/src/components/Demo/index.tsx +++ b/src/components/Demo/index.tsx @@ -7,5 +7,22 @@ import { useStore } from '@tdev-hooks/useStore'; export const Comp = observer(() => { const pageStore = useStore('pageStore'); - return {JSON.stringify(pageStore.tree, null, 2)}; + return ( +
+ + {JSON.stringify( + pageStore.pages + .filter((p) => p.taskableDocumentRootIds.length > 0) + .map((p) => ({ + path: p.path, + rids: p.taskableDocumentRootIds, + docs: p.taskableDocuments.map((d) => d.id) + })), + null, + 2 + )} + + {JSON.stringify(pageStore.tree, null, 2)}; +
+ ); }); diff --git a/src/models/Page.ts b/src/models/Page.ts index f7febd8f5..23206cd2b 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -17,6 +17,8 @@ interface PageTree { pages: PageTree[]; } +const TaskableDocument = new Set(['task_state', 'progress_state']); + export default class Page { readonly store: PageStore; readonly id: string; @@ -171,7 +173,20 @@ export default class Page { get taskableDocumentRootIds() { return [...this.documentRootConfigs.keys()].filter((id) => { const config = this.documentRootConfigs.get(id)!; - return config === 'task_state' || config === 'progress_state'; + return TaskableDocument.has(config); + }); + } + + @computed + get taskableDocuments() { + const uid = this.store.root.userStore.viewedUserId; + if (!uid) { + return []; + } + return this.taskableDocumentRootIds.flatMap((rid) => { + return this.store.root.documentStore + .findByDocumentRoot(rid) + .filter((doc) => doc.authorId === uid && TaskableDocument.has(doc.type)); }); } diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index 9be76a2d7..369e983b3 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -19,19 +19,17 @@ type Props = WrapperProps; const DocSidebarItemWrapper = observer((props: Props): ReactNode => { const pageStore = useStore('pageStore'); const path = props.item.type !== 'html' ? ensureTrailingSlash(props.item.href) : undefined; - if (!path) { - console.log(props.item); - } - const page = pageStore.pages.find((p) => p.path === path); return (
- + {(page?.taskableDocuments?.length ?? 0) > 0 && ( + + )}
); From 21bc5f0c094d7bd4c4a47df4604af6e0b90571e6 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 29 Jan 2026 13:50:26 +0100 Subject: [PATCH 20/49] load docs on the fly --- src/components/Demo/index.tsx | 1 - src/hooks/useDocumentRoot.ts | 2 +- .../documents/DynamicDocumentRoots/index.ts | 4 +- src/models/iDocumentContainer.ts | 6 +- src/stores/ComponentStore.ts | 8 +++ src/stores/DocumentRootStore.ts | 60 +++++++++++++++---- src/stores/PageStore.ts | 4 +- src/stores/SocketDataStore.ts | 2 +- 8 files changed, 66 insertions(+), 21 deletions(-) diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx index 802ad97e8..acfe82cf6 100644 --- a/src/components/Demo/index.tsx +++ b/src/components/Demo/index.tsx @@ -1,6 +1,5 @@ import React from 'react'; import CodeBlock from '@theme/CodeBlock'; -import BrowserOnly from '@docusaurus/BrowserOnly'; import { observer } from 'mobx-react-lite'; import { useStore } from '@tdev-hooks/useStore'; diff --git a/src/hooks/useDocumentRoot.ts b/src/hooks/useDocumentRoot.ts index 4fedb5830..bbc534076 100644 --- a/src/hooks/useDocumentRoot.ts +++ b/src/hooks/useDocumentRoot.ts @@ -87,7 +87,7 @@ export const useDocumentRoot = ( } if (userStore.isUserSwitched) { documentRootStore.loadInNextBatch(id, meta, { - documentRoot: false, + documentRoot: 'addIfMissing', skipCreate: true }); } else { diff --git a/src/models/documents/DynamicDocumentRoots/index.ts b/src/models/documents/DynamicDocumentRoots/index.ts index a56cee11f..da808568c 100644 --- a/src/models/documents/DynamicDocumentRoots/index.ts +++ b/src/models/documents/DynamicDocumentRoots/index.ts @@ -70,7 +70,7 @@ class DynamicDocumentRoots extends iDocument<'dynami addedIds.forEach((id) => { this.store.root.documentRootStore.loadInNextBatch(id, this.defaultContainerMeta, { documentType: this.containerType, - documentRoot: true + documentRoot: 'replace' }); }); } @@ -191,7 +191,7 @@ class DynamicDocumentRoots extends iDocument<'dynami return [...this.documentRootIds].map((id) => { this.store.root.documentRootStore.loadInNextBatch(id, this.defaultContainerMeta, { documentType: this.containerType, - documentRoot: true + documentRoot: 'replace' }); }); } diff --git a/src/models/iDocumentContainer.ts b/src/models/iDocumentContainer.ts index 8e3d2a3fd..bbb4c3dbc 100644 --- a/src/models/iDocumentContainer.ts +++ b/src/models/iDocumentContainer.ts @@ -80,9 +80,9 @@ abstract class iDocumentContainer extends iDocument< this.documentRootId, undefined /* meta is only needed when you want to create a "default" document */, { - userPermissions: false /* already present from this container */, - groupPermissions: false /* already present from this container */, - documentRoot: false /* already present from this container */, + userPermissions: false /* already present for this container */, + groupPermissions: false /* already present for this container */, + documentRoot: false /* already present for this container */, skipCreate: true, documents: true } diff --git a/src/stores/ComponentStore.ts b/src/stores/ComponentStore.ts index 590702442..3bd3a76f3 100644 --- a/src/stores/ComponentStore.ts +++ b/src/stores/ComponentStore.ts @@ -62,6 +62,14 @@ class ComponentStore { this.components.set(type, component as ContainerComponent); } + @computed + get defaultMeta() { + return [ + ...[...this.components.values()].map((comp) => comp.defaultMeta), + ...[...this.editorComponents.values()].map((comp) => comp.createModelMeta({})) + ]; + } + @computed get registeredContainerTypes(): ContainerType[] { return [...this.components.keys()]; diff --git a/src/stores/DocumentRootStore.ts b/src/stores/DocumentRootStore.ts index 6ed915cbc..1c5a38daa 100644 --- a/src/stores/DocumentRootStore.ts +++ b/src/stores/DocumentRootStore.ts @@ -18,6 +18,15 @@ import { DocumentType } from '@tdev-api/document'; import _ from 'es-toolkit/compat'; import User from '@tdev-models/User'; import { NoneAccess } from '@tdev-models/helpers/accessPolicy'; +import { ModelMeta as ProgressStateMeta } from '@tdev-models/documents/ProgressState'; +import { CodeMeta } from '@tdev-models/documents/Code'; +import { ModelMeta as MdxCommentMeta } from '@tdev-models/documents/MdxComment'; +import { ModelMeta as RestrictedMeta } from '@tdev-models/documents/Restricted'; +import { ModelMeta as SolutionMeta } from '@tdev-models/documents/Solution'; +import { ModelMeta as StringMeta } from '@tdev-models/documents/String'; +import { TaskMeta as TaskStateMeta } from '@tdev-models/documents/TaskState'; + +import { CmsTextMeta } from '@tdev-models/documents/CmsText'; type LoadConfig = { /** if true, user permissions will be loaded @@ -30,11 +39,14 @@ type LoadConfig = { */ groupPermissions?: boolean; /** - * if true, the document root will be created and when already exists, - * it will replace the existing one - * @default true + * @option 'replace': the document root will be created and when already exists, + * it will replace the existing one. + * @option 'addIfMissing': when the document root does not exist in the mobx store, it will + * be added. But no new document root will be created on the api. + * @option false: the document root will not be loaded. + * @default 'replace' */ - documentRoot?: boolean; + documentRoot?: 'replace' | 'addIfMissing' | boolean; /** * if a document root should not be created when it is not found, * set `skipCreate` to true @@ -59,6 +71,17 @@ type BatchedMeta = { access: Partial; }; +const DefaultMeta: TypeMeta[] = [ + new CodeMeta({}), + new MdxCommentMeta({}), + new RestrictedMeta({}), + new SolutionMeta({}), + new StringMeta({}), + new TaskStateMeta({}), + new ProgressStateMeta({}), + new CmsTextMeta({}) +]; + export class DocumentRootStore extends iStore { readonly root: RootStore; documentRoots = observable.array>([]); @@ -75,6 +98,11 @@ export class DocumentRootStore extends iStore { return this.root.sessionStore.isLoggedIn; } + @computed + get defaultMetas(): TypeMeta[] { + return [...DefaultMeta, ...this.root.componentStore.defaultMeta]; + } + @action addDocumentRoot( documentRoot: DocumentRoot, @@ -123,7 +151,7 @@ export class DocumentRootStore extends iStore { this.queued.set(id, { meta: meta, load: { - documentRoot: true, + documentRoot: 'replace', groupPermissions: true, userPermissions: true, skipCreate: false, @@ -275,17 +303,27 @@ export class DocumentRootStore extends iStore { @action addApiResultToStore(data: ApiDocumentRoot, config: Omit) { - if (config.load.documentRoot && !config.meta) { + if (config.load.documentRoot === 'replace' && !config.meta) { return; } - const documentRoot = config.load.documentRoot - ? new DocumentRoot(data, config.meta!, this) - : this.find(data.id); + const defaultType = data.documents[0]?.type; + const meta = + config.meta || + (this.find(data.id)?.meta as TypeMeta) || + (defaultType ? this.defaultMetas.find((m) => m.type === defaultType) : undefined); + const documentRoot = + config.load.documentRoot && meta ? new DocumentRoot(data, meta, this) : this.find(data.id); if (!documentRoot) { return; } if (config.load.documentRoot) { - this.addDocumentRoot(documentRoot, { cleanup: true, deep: false }); + if (config.load.documentRoot === 'addIfMissing') { + if (!this.find(data.id)) { + this.addDocumentRoot(documentRoot); + } + } else { + this.addDocumentRoot(documentRoot, { cleanup: true, deep: false }); + } } if (config.load.groupPermissions) { data.groupPermissions.forEach((gp) => { @@ -391,7 +429,7 @@ export class DocumentRootStore extends iStore { @action reload(documentRoot: DocumentRoot) { this.loadInNextBatch(documentRoot.id, documentRoot.meta, { - documentRoot: true, + documentRoot: 'replace', documents: true, groupPermissions: true, userPermissions: true diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index eee1060af..5bff65eda 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -109,8 +109,8 @@ export class PageStore extends iStore { this.pages.forEach((page) => { page.taskableDocumentRootIds.forEach((id) => { this.root.documentRootStore.loadInNextBatch(id, undefined, { - documentRoot: false, - skipCreate: true + skipCreate: true, + documentRoot: 'addIfMissing' }); }); }); diff --git a/src/stores/SocketDataStore.ts b/src/stores/SocketDataStore.ts index dd61f4ea6..f7371789b 100644 --- a/src/stores/SocketDataStore.ts +++ b/src/stores/SocketDataStore.ts @@ -260,7 +260,7 @@ export class SocketDataStore extends iStore<'ping'> { this.root.documentRootStore.addApiResultToStore(docRoot, { meta: current.meta, load: { - documentRoot: true, + documentRoot: 'replace', documents: NoneAccess.has( current.permission ) /** only load the documents, when the current permission is None */, From e9bf794ccfb9d8c89c5c2418491fd38d076c6352 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 29 Jan 2026 13:52:07 +0100 Subject: [PATCH 21/49] debug print metas --- src/components/Demo/index.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx index acfe82cf6..4c91ed146 100644 --- a/src/components/Demo/index.tsx +++ b/src/components/Demo/index.tsx @@ -4,10 +4,14 @@ import { observer } from 'mobx-react-lite'; import { useStore } from '@tdev-hooks/useStore'; export const Comp = observer(() => { + const documentRootStore = useStore('documentRootStore'); const pageStore = useStore('pageStore'); return (
+ + {JSON.stringify(documentRootStore.defaultMetas.map((m) => m.type))} + {JSON.stringify( pageStore.pages From 66a15c95ef0fbe41d5f45c9dc8ee2425c5b50d7a Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 29 Jan 2026 15:38:17 +0100 Subject: [PATCH 22/49] update page position calculation --- src/components/Demo/index.tsx | 29 ++++++++++++++ src/models/DocumentRoot.ts | 15 +++++++ src/models/Page.ts | 39 +++++++++++++++---- src/stores/PageStore.ts | 2 +- .../DocSidebarItem/TaskableState/index.tsx | 35 +++++++++++++++++ .../TaskableState/styles.module.scss | 7 ++++ src/theme/DocSidebarItem/index.tsx | 12 +----- src/theme/DocSidebarItem/styles.module.scss | 7 +++- .../answer/progress-state/index.mdx | 8 ++-- 9 files changed, 129 insertions(+), 25 deletions(-) create mode 100644 src/theme/DocSidebarItem/TaskableState/index.tsx create mode 100644 src/theme/DocSidebarItem/TaskableState/styles.module.scss diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx index 4c91ed146..239039a48 100644 --- a/src/components/Demo/index.tsx +++ b/src/components/Demo/index.tsx @@ -9,6 +9,35 @@ export const Comp = observer(() => { return (
+ + {JSON.stringify( + pageStore.pages + .filter((p) => p.editingStateV2.length) + .map((p) => [ + p.id, + p.path, + [ + ...p.editingStateV2.map( + (s) => + `${s.type}:${s.isDone}->${p.documentRootConfigs.get(s.documentRootId)?.position ?? '?'} ${s.documentRootId}::${s.id}` + ) + ] + ]), + null, + 2 + )} + + + {JSON.stringify( + documentRootStore.documentRoots.map((d) => [ + d.id, + d.mainDocuments.map((d) => d.type), + [...d.pagePositions.entries()] + ]), + null, + 2 + )} + {JSON.stringify(documentRootStore.defaultMetas.map((m) => m.type))} diff --git a/src/models/DocumentRoot.ts b/src/models/DocumentRoot.ts index 27f1f67ad..caf8da676 100644 --- a/src/models/DocumentRoot.ts +++ b/src/models/DocumentRoot.ts @@ -101,6 +101,21 @@ class DocumentRoot { return this.store.root.permissionStore.groupPermissionsByDocumentRoot(this.id); } + @computed + get pages() { + return this.store.root.pageStore.pages.filter((p) => p.documentRootConfigs.has(this.id)); + } + + /** + * Map of page paths to their position in this document root + */ + @computed + get pagePositions() { + return new Map( + this.pages.map((p) => [p.path, p.documentRootConfigs.get(this.id)!.position]) + ); + } + @computed get permissions() { return [...this.store.currentUsersPermissions(this.id)]; diff --git a/src/models/Page.ts b/src/models/Page.ts index 23206cd2b..5a77b4191 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -10,6 +10,8 @@ import iDocument from '@tdev-models/iDocument'; import StudentGroup from '@tdev-models/StudentGroup'; import ProgressState from './documents/ProgressState'; import { DocumentType } from '@tdev-api/document'; +import type { PageIndex } from '@tdev/page-progress-state'; +import { filter } from '@mdxeditor/editor'; interface PageTree { id: string; @@ -19,6 +21,11 @@ interface PageTree { const TaskableDocument = new Set(['task_state', 'progress_state']); +interface PageConfig { + type: DocumentType; + position: number; +} + export default class Page { readonly store: PageStore; readonly id: string; @@ -27,7 +34,7 @@ export default class Page { @observable.ref accessor _primaryStudentGroupName: string | undefined = undefined; @observable.ref accessor _activeStudentGroup: StudentGroup | undefined = undefined; - documentRootConfigs: ObservableMap; + documentRootConfigs: ObservableMap; dynamicValues = observable.map(); @@ -35,7 +42,10 @@ export default class Page { this.id = id; this.path = path; this.store = store; - this.documentRootConfigs = observable.map([[id, 'mdx_comment']]); + this.documentRootConfigs = observable.map( + [[id, { type: 'mdx_comment', position: 0 }]], + { deep: false } + ); } @computed @@ -95,15 +105,19 @@ export default class Page { } @action - addDocumentRootConfig(id: string, type: DocumentType) { - this.documentRootConfigs.set(id, type); + addDocumentRootConfig(id: string, config: PageConfig) { + this.documentRootConfigs.set(id, { type: config.type, position: config.position }); } @computed get documentRoots() { - return this.store.root.documentRootStore.documentRoots.filter( - (doc) => this.documentRootConfigs.has(doc.id) && !doc.isDummy - ); + return this.store.root.documentRootStore.documentRoots + .filter((doc) => this.documentRootConfigs.has(doc.id) && !doc.isDummy) + .sort((a, b) => { + const pA = this.documentRootConfigs.get(a.id)!.position; + const pB = this.documentRootConfigs.get(b.id)!.position; + return pA - pB; + }); } @computed @@ -125,6 +139,15 @@ export default class Page { .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); } + @computed + get editingStateV2(): (TaskState | ProgressState)[] { + return this.documentRoots + .flatMap((doc) => doc.documents) + .filter( + (d): d is TaskState | ProgressState => d instanceof TaskState || d instanceof ProgressState + ); + } + @action setPrimaryStudentGroupName(name?: string) { this._primaryStudentGroupName = name; @@ -173,7 +196,7 @@ export default class Page { get taskableDocumentRootIds() { return [...this.documentRootConfigs.keys()].filter((id) => { const config = this.documentRootConfigs.get(id)!; - return TaskableDocument.has(config); + return TaskableDocument.has(config.type); }); } diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 5bff65eda..a6b7996ce 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -88,7 +88,7 @@ export class PageStore extends iStore { const doc = docs[0]!; const page = new Page(doc.page_id, doc.path, this); docs.filter((doc) => doc.position > 0).forEach((d) => - page.addDocumentRootConfig(d.id, d.type) + page.addDocumentRootConfig(d.id, d) ); return page; }); diff --git a/src/theme/DocSidebarItem/TaskableState/index.tsx b/src/theme/DocSidebarItem/TaskableState/index.tsx new file mode 100644 index 000000000..68a68c52c --- /dev/null +++ b/src/theme/DocSidebarItem/TaskableState/index.tsx @@ -0,0 +1,35 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.scss'; +import { observer } from 'mobx-react-lite'; +import Page from '@tdev-models/Page'; +import Icon from '@mdi/react'; +import { mdiCheckCircle, mdiProgressQuestion } from '@mdi/js'; + +interface Props { + page?: Page; + className?: string; +} + +const TaskableState = observer((props: Props) => { + const { page } = props; + if (!page) { + return null; + } + + return ( +
+ 0 ? mdiCheckCircle : mdiProgressQuestion} + size={0.8} + color={ + page.taskableDocuments?.length > 0 + ? 'var(--ifm-color-success)' + : 'var(--ifm-color-warning)' + } + /> +
+ ); +}); + +export default TaskableState; diff --git a/src/theme/DocSidebarItem/TaskableState/styles.module.scss b/src/theme/DocSidebarItem/TaskableState/styles.module.scss new file mode 100644 index 000000000..c2ef55ac1 --- /dev/null +++ b/src/theme/DocSidebarItem/TaskableState/styles.module.scss @@ -0,0 +1,7 @@ +.taskableState { + display: flex; + align-items: center; + justify-content: center; + height: 2em; + cursor: pointer; +} diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index 369e983b3..e02599289 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -4,10 +4,9 @@ import type DocSidebarItemType from '@theme/DocSidebarItem'; import type { WrapperProps } from '@docusaurus/types'; import { observer } from 'mobx-react-lite'; import { useStore } from '@tdev-hooks/useStore'; -import Icon from '@mdi/react'; -import { mdiCheck, mdiCheckCircle, mdiProgressQuestion } from '@mdi/js'; import clsx from 'clsx'; import styles from './styles.module.scss'; +import TaskableState from './TaskableState'; const ensureTrailingSlash = (path?: string) => { if (!path) { return ''; @@ -22,14 +21,7 @@ const DocSidebarItemWrapper = observer((props: Props): ReactNode => { const page = pageStore.pages.find((p) => p.path === path); return (
- {(page?.taskableDocuments?.length ?? 0) > 0 && ( - - )} +
); diff --git a/src/theme/DocSidebarItem/styles.module.scss b/src/theme/DocSidebarItem/styles.module.scss index 70b5b8da8..c9228be94 100644 --- a/src/theme/DocSidebarItem/styles.module.scss +++ b/src/theme/DocSidebarItem/styles.module.scss @@ -2,7 +2,10 @@ position: relative; .icon { position: absolute; - right: 0px; - top: 12px; + right: 0.5em; + top: 0; + &.category { + right: 3em; + } } } diff --git a/tdev-website/docs/gallery/persistable-documents/answer/progress-state/index.mdx b/tdev-website/docs/gallery/persistable-documents/answer/progress-state/index.mdx index 6b4d7091a..0d66574c1 100644 --- a/tdev-website/docs/gallery/persistable-documents/answer/progress-state/index.mdx +++ b/tdev-website/docs/gallery/persistable-documents/answer/progress-state/index.mdx @@ -51,7 +51,7 @@ Mit der Option `confirm` müssen die einzelnen Schritte bestätigt werden. ````md import ProgressState from '@tdev-components/documents/ProgressState'; - + 1. Hello Bello and Bella 2. World **bla** __foo__ @@ -63,7 +63,7 @@ import ProgressState from '@tdev-components/documents/ProgressState'; ```` - + 1. Hello Bello and Bella 2. World **bla** __foo__ @@ -83,7 +83,7 @@ Mit `float='right'` fährt der Bestätigungs-Button nach Rechts aus. Praktisch, ````md import ProgressState from '@tdev-components/documents/ProgressState'; - + 1. Hello Bello and Bella 2. World **bla** __foo__ @@ -95,7 +95,7 @@ import ProgressState from '@tdev-components/documents/ProgressState'; ```` - + 1. Hello Bello and Bella 2. World **bla** __foo__ From 124d5035b4189e712fa788045b4fbbf1e7a8a378 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Sat, 31 Jan 2026 11:35:36 +0100 Subject: [PATCH 23/49] add taskable doc --- src/components/EditingOverview/index.tsx | 2 +- src/models/Page.ts | 61 +++++++++++++++---- src/models/documents/ProgressState/index.ts | 3 +- src/models/documents/TaskState.ts | 3 +- src/models/iTaskableDocument.ts | 6 ++ src/theme/DocItem/Content/index.tsx | 11 ++++ .../DocSidebarItem/TaskableState/index.tsx | 17 ++---- 7 files changed, 77 insertions(+), 26 deletions(-) create mode 100644 src/models/iTaskableDocument.ts diff --git a/src/components/EditingOverview/index.tsx b/src/components/EditingOverview/index.tsx index ceb84c605..654ef4613 100644 --- a/src/components/EditingOverview/index.tsx +++ b/src/components/EditingOverview/index.tsx @@ -62,7 +62,7 @@ const EditingOverview = observer(() => { if (!isBrowser || !currentUser || !currentPage) { return null; } - const taskStates = currentPage.editingState.filter((ts) => RWAccess.has(ts.root?.permission)) || []; + const taskStates = currentPage.editingStates.filter((ts) => RWAccess.has(ts.root?.permission)) || []; if (taskStates.length === 0) { return null; } diff --git a/src/models/Page.ts b/src/models/Page.ts index 5a77b4191..fdb78063a 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -12,6 +12,9 @@ import ProgressState from './documents/ProgressState'; import { DocumentType } from '@tdev-api/document'; import type { PageIndex } from '@tdev/page-progress-state'; import { filter } from '@mdxeditor/editor'; +import { iTaskableDocument } from './iTaskableDocument'; +import { mdiCheckCircleOutline, mdiSpeedometer, mdiSpeedometerMedium, mdiSpeedometerSlow } from '@mdi/js'; +import { IfmColors } from '@tdev-components/shared/Colors'; interface PageTree { id: string; @@ -129,7 +132,7 @@ export default class Page { } @computed - get editingState(): (TaskState | ProgressState)[] { + get editingStates(): (TaskState | ProgressState)[] { return this.documentRoots .flatMap((doc) => doc.firstMainDocument) .filter( @@ -139,15 +142,6 @@ export default class Page { .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); } - @computed - get editingStateV2(): (TaskState | ProgressState)[] { - return this.documentRoots - .flatMap((doc) => doc.documents) - .filter( - (d): d is TaskState | ProgressState => d instanceof TaskState || d instanceof ProgressState - ); - } - @action setPrimaryStudentGroupName(name?: string) { this._primaryStudentGroupName = name; @@ -201,7 +195,7 @@ export default class Page { } @computed - get taskableDocuments() { + get taskableDocuments(): iTaskableDocument[] { const uid = this.store.root.userStore.viewedUserId; if (!uid) { return []; @@ -209,10 +203,53 @@ export default class Page { return this.taskableDocumentRootIds.flatMap((rid) => { return this.store.root.documentStore .findByDocumentRoot(rid) - .filter((doc) => doc.authorId === uid && TaskableDocument.has(doc.type)); + .filter( + (doc) => doc.authorId === uid && TaskableDocument.has(doc.type) + ) as iTaskableDocument[]; }); } + @computed + get totalSteps(): number { + return this.taskableDocuments.length + this.subPages.reduce((sum, page) => sum + page.totalSteps, 0); + } + + @computed + get progress(): number { + return ( + this.taskableDocuments.filter((d) => d.isDone).length + + this.subPages.reduce((sum, page) => sum + page.progress, 0) + ); + } + + @computed + get isDone(): boolean { + return this.progress > 0 && this.progress >= this.totalSteps; + } + + @computed + get editingIconState() { + if (this.isDone) { + return { path: mdiCheckCircleOutline, color: IfmColors.green }; + } + const level = this.progress / this.totalSteps; + if (this.progress === 0) { + return { path: mdiSpeedometerSlow, color: IfmColors.gray }; + } + if (level < 1 / 3) { + return { path: mdiSpeedometerSlow, color: IfmColors.red }; + } + if (level < 2 / 3) { + return { path: mdiSpeedometerMedium, color: IfmColors.orange }; + } + return { path: mdiSpeedometer, color: IfmColors.lightGreen }; + } + + @computed + get editingState(): iTaskableDocument[] { + return this.taskableDocuments; + } + @action toggleActiveStudentGroup(studentGroup: StudentGroup) { if (this._activeStudentGroup && this._activeStudentGroup.id === studentGroup.id) { diff --git a/src/models/documents/ProgressState/index.ts b/src/models/documents/ProgressState/index.ts index 00c8ec12e..a4b85381b 100644 --- a/src/models/documents/ProgressState/index.ts +++ b/src/models/documents/ProgressState/index.ts @@ -7,6 +7,7 @@ import { RWAccess } from '@tdev-models/helpers/accessPolicy'; import { mdiCheckCircleOutline, mdiSpeedometer, mdiSpeedometerMedium, mdiSpeedometerSlow } from '@mdi/js'; import { IfmColors } from '@tdev-components/shared/Colors'; import Step from './Step'; +import type { iTaskableDocument } from '@tdev-models/iTaskableDocument'; export interface MetaInit { readonly?: boolean; @@ -57,7 +58,7 @@ export class ModelMeta extends TypeMeta<'progress_state'> { } } -class ProgressState extends iDocument<'progress_state'> { +class ProgressState extends iDocument<'progress_state'> implements iTaskableDocument<'progress_state'> { @observable accessor _progress: number = 0; @observable accessor _viewedIndex: number | undefined = undefined; @observable accessor scrollTo: boolean = false; diff --git a/src/models/documents/TaskState.ts b/src/models/documents/TaskState.ts index c2a306e9f..229fb0857 100644 --- a/src/models/documents/TaskState.ts +++ b/src/models/documents/TaskState.ts @@ -12,6 +12,7 @@ import { TypeMeta } from '@tdev-models/DocumentRoot'; import { RWAccess } from '@tdev-models/helpers/accessPolicy'; import { mdiIcon } from '@tdev-components/documents/TaskState'; import { mdiColor } from '@tdev-components/EditingOverview'; +import type { iTaskableDocument } from '@tdev-models/iTaskableDocument'; export interface MetaInit { readonly?: boolean; @@ -39,7 +40,7 @@ export class TaskMeta extends TypeMeta<'task_state'> { } } -class TaskState extends iDocument<'task_state'> { +class TaskState extends iDocument<'task_state'> implements iTaskableDocument<'task_state'> { @observable accessor _taskState: StateType; @observable accessor scrollTo: boolean = false; constructor(props: DocumentProps<'task_state'>, store: DocumentStore) { diff --git a/src/models/iTaskableDocument.ts b/src/models/iTaskableDocument.ts new file mode 100644 index 000000000..8b1749d83 --- /dev/null +++ b/src/models/iTaskableDocument.ts @@ -0,0 +1,6 @@ +import { DocumentType } from '@tdev-api/document'; +import iDocument from './iDocument'; + +export interface iTaskableDocument extends iDocument { + isDone: boolean; +} diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx index 12295d8d1..9852a43d6 100644 --- a/src/theme/DocItem/Content/index.tsx +++ b/src/theme/DocItem/Content/index.tsx @@ -23,6 +23,17 @@ const ContentWrapper = observer((props: Props): React.ReactNode => { return ( <> +
+                
+                    {JSON.stringify(
+                        pageStore.current?.taskableDocuments.map(
+                            (doc) => `${doc.type}@${doc.isDone} - ${doc.id}::${doc.documentRootId}`
+                        ) || {},
+                        null,
+                        2
+                    )}
+                
+            
); diff --git a/src/theme/DocSidebarItem/TaskableState/index.tsx b/src/theme/DocSidebarItem/TaskableState/index.tsx index 68a68c52c..f602fc6a7 100644 --- a/src/theme/DocSidebarItem/TaskableState/index.tsx +++ b/src/theme/DocSidebarItem/TaskableState/index.tsx @@ -13,21 +13,16 @@ interface Props { const TaskableState = observer((props: Props) => { const { page } = props; - if (!page) { + if (!page || page.totalSteps === 0) { return null; } return ( -
- 0 ? mdiCheckCircle : mdiProgressQuestion} - size={0.8} - color={ - page.taskableDocuments?.length > 0 - ? 'var(--ifm-color-success)' - : 'var(--ifm-color-warning)' - } - /> +
+
); }); From 1c5622f115e2fafcf7e9196bcd6c7aeba36ec922 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Sat, 31 Jan 2026 16:49:38 +0100 Subject: [PATCH 24/49] use taskable --- src/api/OfflineApi/index.ts | 1 + .../EditingOverview/EditingStateList.tsx | 4 ++- src/components/EditingOverview/index.tsx | 2 +- src/models/Page.ts | 36 +++++++++---------- src/models/iTaskableDocument.ts | 2 ++ 5 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/api/OfflineApi/index.ts b/src/api/OfflineApi/index.ts index d9690c8b0..1c743fe54 100644 --- a/src/api/OfflineApi/index.ts +++ b/src/api/OfflineApi/index.ts @@ -239,6 +239,7 @@ export default class OfflineApi { ) || [] }; }) as unknown as T; + log('-> get', url, documenRoots); return resolveResponse(documenRoots); } return resolveResponse([OfflineUser] as unknown as T); diff --git a/src/components/EditingOverview/EditingStateList.tsx b/src/components/EditingOverview/EditingStateList.tsx index 8ce024e16..a17329eeb 100644 --- a/src/components/EditingOverview/EditingStateList.tsx +++ b/src/components/EditingOverview/EditingStateList.tsx @@ -6,9 +6,10 @@ import { useStore } from '@tdev-hooks/useStore'; import Icon from '@mdi/react'; import TaskState from '@tdev-models/documents/TaskState'; import ProgressState from '@tdev-models/documents/ProgressState'; +import type { iTaskableDocument } from '@tdev-models/iTaskableDocument'; interface Props { - editingStatus: (TaskState | ProgressState)[]; + editingStatus: iTaskableDocument[]; } const EditingStateList = observer((props: Props) => { @@ -28,6 +29,7 @@ const EditingStateList = observer((props: Props) => { userStore.switchUser(es.authorId); } }} + title={`${es.type}: ${es.documentRootId} - ${es.id}`} > diff --git a/src/components/EditingOverview/index.tsx b/src/components/EditingOverview/index.tsx index 654ef4613..bfdfff1b5 100644 --- a/src/components/EditingOverview/index.tsx +++ b/src/components/EditingOverview/index.tsx @@ -62,7 +62,7 @@ const EditingOverview = observer(() => { if (!isBrowser || !currentUser || !currentPage) { return null; } - const taskStates = currentPage.editingStates.filter((ts) => RWAccess.has(ts.root?.permission)) || []; + const taskStates = currentPage.taskableDocuments.filter((ts) => RWAccess.has(ts.root?.permission)) || []; if (taskStates.length === 0) { return null; } diff --git a/src/models/Page.ts b/src/models/Page.ts index fdb78063a..010a4417d 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -131,16 +131,16 @@ export default class Page { .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); } - @computed - get editingStates(): (TaskState | ProgressState)[] { - return this.documentRoots - .flatMap((doc) => doc.firstMainDocument) - .filter( - (d): d is TaskState | ProgressState => d instanceof TaskState || d instanceof ProgressState - ) - .filter((d) => d?.root?.meta.pagePosition) - .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); - } + // @computed + // get editingStates(): (TaskState | ProgressState)[] { + // return this.documentRoots + // .flatMap((doc) => doc.firstMainDocument) + // .filter( + // (d): d is TaskState | ProgressState => d instanceof TaskState || d instanceof ProgressState + // ) + // .filter((d) => d?.root?.meta.pagePosition) + // .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); + // } @action setPrimaryStudentGroupName(name?: string) { @@ -279,17 +279,15 @@ export default class Page { @computed get editingStateByUsers() { return _.groupBy( - this.documentRoots - .flatMap((dr) => dr.allDocuments) - .filter( - (d): d is TaskState | ProgressState => - d instanceof TaskState || d instanceof ProgressState - ) - .filter((doc) => doc.isMain && doc.root?.meta.pagePosition) + this.taskableDocumentRootIds + .flatMap((rid) => { + return this.store.root.documentStore + .findByDocumentRoot(rid) + .filter((doc) => TaskableDocument.has(doc.type)) as iTaskableDocument[]; + }) .filter((doc) => this.activeStudentGroup ? this.activeStudentGroup.userIds.has(doc.authorId) : true - ) - .sort((a, b) => a.root!.meta.pagePosition - b.root!.meta.pagePosition), + ), (doc) => doc.authorId ); } diff --git a/src/models/iTaskableDocument.ts b/src/models/iTaskableDocument.ts index 8b1749d83..18ee116b3 100644 --- a/src/models/iTaskableDocument.ts +++ b/src/models/iTaskableDocument.ts @@ -3,4 +3,6 @@ import iDocument from './iDocument'; export interface iTaskableDocument extends iDocument { isDone: boolean; + editingIconState: { path: string; color: string }; + setScrollTo(scroll: boolean): void; } From 0dacd417e04f8bf7f7a2b9e9d71dbb57200da944 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 2 Feb 2026 15:25:45 +0100 Subject: [PATCH 25/49] split gh deploy steps --- .github/workflows/deploy.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d5507ed49..466c65778 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,15 +19,15 @@ jobs: with: node-version: '>=24.13.0' cache: yarn - - name: Install dependencies and build website + - name: Install dependencies + run: yarn install + - name: Build Site env: APP_URL: ${{ secrets.APP_URL }} BACKEND_URL: ${{ secrets.BACKEND_URL }} GH_OAUTH_CLIENT_ID: ${{ vars.GH_OAUTH_CLIENT_ID}} SITE_CONFIG_PATH: ${{ vars.SITE_CONFIG_PATH }} - run: | - yarn install - yarn build + run: yarn build working-directory: . - name: Upload Build Artifact uses: actions/upload-pages-artifact@v3 From 480f78448423994cd1ddd88aa3e1cfc45c2edb3d Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 2 Feb 2026 15:25:52 +0100 Subject: [PATCH 26/49] use latest dependencies --- package.json | 3 - yarn.lock | 796 ++++++++++++++++++++++++++------------------------- 2 files changed, 402 insertions(+), 397 deletions(-) diff --git a/package.json b/package.json index 5187c1815..a31788590 100644 --- a/package.json +++ b/package.json @@ -117,9 +117,6 @@ "vfile": "^6.0.3", "vitest": "^2.0.5" }, - "resolutions": { - "@rspack/core": "1.6.5" - }, "peerDependencies": { "react-hook-form": "*" }, diff --git a/yarn.lock b/yarn.lock index e0ad94a83..38adad821 100644 --- a/yarn.lock +++ b/yarn.lock @@ -157,34 +157,34 @@ "@babel/highlight" "^7.25.7" picocolors "^1.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" - integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== dependencies: "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" - integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== "@babel/core@^7.18.5", "@babel/core@^7.21.3", "@babel/core@^7.25.9": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f" - integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-module-transforms" "^7.28.6" "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.28.6" + "@babel/parser" "^7.29.0" "@babel/template" "^7.28.6" - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -192,13 +192,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.9", "@babel/generator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1" - integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw== +"@babel/generator@^7.25.9", "@babel/generator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" + integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== dependencies: - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/parser" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -267,7 +267,7 @@ "@babel/traverse" "^7.28.5" "@babel/types" "^7.28.5" -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.27.1", "@babel/helper-module-imports@^7.28.6": +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== @@ -275,7 +275,7 @@ "@babel/traverse" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3", "@babel/helper-module-transforms@^7.28.6": +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== @@ -364,12 +364,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.25.4", "@babel/parser@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" - integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== +"@babel/parser@^7.25.4", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== dependencies: - "@babel/types" "^7.28.6" + "@babel/types" "^7.29.0" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" @@ -465,14 +465,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz#80cb86d3eaa2102e18ae90dd05ab87bdcad3877d" - integrity sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA== +"@babel/plugin-transform-async-generator-functions@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" + integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== dependencies: "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.6" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-async-to-generator@^7.28.6": version "7.28.6" @@ -556,10 +556,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz#e0c59ba54f1655dd682f2edf5f101b5910a8f6f3" - integrity sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" + integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.28.5" "@babel/helper-plugin-utils" "^7.28.6" @@ -654,15 +654,15 @@ "@babel/helper-module-transforms" "^7.28.6" "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-modules-systemjs@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2" - integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew== +"@babel/plugin-transform-modules-systemjs@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964" + integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ== dependencies: - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.5" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-modules-umd@^7.27.1": version "7.27.1" @@ -672,13 +672,13 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== +"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" + integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-new-target@^7.27.1": version "7.27.1" @@ -806,10 +806,10 @@ "@babel/helper-annotate-as-pure" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz#6ca2ed5b76cff87980f96eaacfc2ce833e8e7a1b" - integrity sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw== +"@babel/plugin-transform-regenerator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" + integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== dependencies: "@babel/helper-plugin-utils" "^7.28.6" @@ -829,12 +829,12 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-transform-runtime@^7.25.9": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz#ae3e21fbefe2831ebac04dfa6b463691696afe17" - integrity sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz#a5fded13cc656700804bfd6e5ebd7fffd5266803" + integrity sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" babel-plugin-polyfill-corejs2 "^0.4.14" babel-plugin-polyfill-corejs3 "^0.13.0" babel-plugin-polyfill-regenerator "^0.6.5" @@ -919,11 +919,11 @@ "@babel/helper-plugin-utils" "^7.28.6" "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.25.9": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.6.tgz#b4586bb59d8c61be6c58997f4912e7ea6bd17178" - integrity sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.0.tgz#c55db400c515a303662faaefd2d87e796efa08d0" + integrity sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w== dependencies: - "@babel/compat-data" "^7.28.6" + "@babel/compat-data" "^7.29.0" "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" @@ -937,7 +937,7 @@ "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.6" + "@babel/plugin-transform-async-generator-functions" "^7.29.0" "@babel/plugin-transform-async-to-generator" "^7.28.6" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" "@babel/plugin-transform-block-scoping" "^7.28.6" @@ -948,7 +948,7 @@ "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-dotall-regex" "^7.28.6" "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.28.6" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-dynamic-import" "^7.27.1" "@babel/plugin-transform-explicit-resource-management" "^7.28.6" "@babel/plugin-transform-exponentiation-operator" "^7.28.6" @@ -961,9 +961,9 @@ "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.28.6" - "@babel/plugin-transform-modules-systemjs" "^7.28.5" + "@babel/plugin-transform-modules-systemjs" "^7.29.0" "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-new-target" "^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" "@babel/plugin-transform-numeric-separator" "^7.28.6" @@ -975,7 +975,7 @@ "@babel/plugin-transform-private-methods" "^7.28.6" "@babel/plugin-transform-private-property-in-object" "^7.28.6" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.6" + "@babel/plugin-transform-regenerator" "^7.29.0" "@babel/plugin-transform-regexp-modifiers" "^7.28.6" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" @@ -988,10 +988,10 @@ "@babel/plugin-transform-unicode-regex" "^7.27.1" "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1027,11 +1027,11 @@ "@babel/plugin-transform-typescript" "^7.28.5" "@babel/runtime-corejs3@^7.25.9": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.28.6.tgz#f1e4a0da50f4856ceec1bb51c83f8ed0b202ed12" - integrity sha512-kz2fAQ5UzjV7X7D3ySxmj3vRq89dTpqOZWv76Z6pNPztkwb/0Yj1Mtx1xFrYj6mbIHysxtBot8J4o0JLCblcFw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.29.0.tgz#56cd28ec515364482afeb880b476936a702461b9" + integrity sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA== dependencies: - core-js-pure "^3.43.0" + core-js-pure "^3.48.0" "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.25.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.28.6" @@ -1047,23 +1047,23 @@ "@babel/parser" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/traverse@^7.25.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e" - integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== +"@babel/traverse@^7.25.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.6" + "@babel/parser" "^7.29.0" "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" -"@babel/types@^7.21.3", "@babel/types@^7.25.4", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.4.4": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" - integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== +"@babel/types@^7.21.3", "@babel/types@^7.25.4", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.4.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" @@ -1073,18 +1073,18 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@better-auth/core@1.4.17": - version "1.4.17" - resolved "https://registry.yarnpkg.com/@better-auth/core/-/core-1.4.17.tgz#975fd8cb2029835f50958cde28154d8fa62dc367" - integrity sha512-WSaEQDdUO6B1CzAmissN6j0lx9fM9lcslEYzlApB5UzFaBeAOHNUONTdglSyUs6/idiZBoRvt0t/qMXCgIU8ug== +"@better-auth/core@1.4.18": + version "1.4.18" + resolved "https://registry.yarnpkg.com/@better-auth/core/-/core-1.4.18.tgz#d424ccbf2e7754b7a7581c841dd64811b2700dd4" + integrity sha512-q+awYgC7nkLEBdx2sW0iJjkzgSHlIxGnOpsN1r/O1+a4m7osJNHtfK2mKJSL1I+GfNyIlxJF8WvD/NLuYMpmcg== dependencies: "@standard-schema/spec" "^1.0.0" zod "^4.3.5" -"@better-auth/telemetry@1.4.17": - version "1.4.17" - resolved "https://registry.yarnpkg.com/@better-auth/telemetry/-/telemetry-1.4.17.tgz#1929f103807fb9010342cbcaf32e73a45a267830" - integrity sha512-R1BC4e/bNjQbXu7lG6ubpgmsPj7IMqky5DvMlzAtnAJWJhh99pMh/n6w5gOHa0cqDZgEAuj75IPTxv+q3YiInA== +"@better-auth/telemetry@1.4.18": + version "1.4.18" + resolved "https://registry.yarnpkg.com/@better-auth/telemetry/-/telemetry-1.4.18.tgz#9290df1b20c5376cb6820ae6704f682d7c676a4e" + integrity sha512-e5rDF8S4j3Um/0LIVATL2in9dL4lfO2fr2v1Wio4qTMRbfxqnUDTa+6SZtwdeJrbc4O+a3c+IyIpjG9Q/6GpfQ== dependencies: "@better-auth/utils" "0.3.0" "@better-fetch/fetch" "1.1.21" @@ -1115,9 +1115,9 @@ integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== "@braintree/sanitize-url@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz#15e19737d946559289b915e5dad3b4c28407735e" - integrity sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw== + version "7.1.2" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz#ca2035b0fefe956a8676ff0c69af73e605fcd81f" + integrity sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA== "@chevrotain/cst-dts-gen@11.0.3": version "11.0.3" @@ -1491,9 +1491,9 @@ "@marijn/find-cluster-break" "^1.0.0" "@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.37.0", "@codemirror/view@^6.7.1": - version "6.39.11" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.39.11.tgz#200aebef2074bfbbb7a3d5f0644c1b560d876b39" - integrity sha512-bWdeR8gWM87l4DB/kYSF9A+dVackzDb/V56Tq7QVrQ7rn86W0rgZFtlL3g3pem6AeGcb9NQNoy3ao4WpW4h5tQ== + version "6.39.12" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.39.12.tgz#c61961d7107b44bd233647fc9e33d96309d627c9" + integrity sha512-f+/VsHVn/kOA9lltk/GFzuYwVVAKmOnNjxbrhkk3tPHntFqjWeI2TbIXx006YkBkqC10wZ4NsnWXCQiFPeAISQ== dependencies: "@codemirror/state" "^6.5.0" crelt "^1.0.6" @@ -3597,9 +3597,9 @@ "@lezer/lr" "^1.0.0" "@lezer/yaml@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@lezer/yaml/-/yaml-1.0.3.tgz#b23770ab42b390056da6b187d861b998fd60b1ff" - integrity sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@lezer/yaml/-/yaml-1.0.4.tgz#66a622188f1984a71d34506759b5807699043589" + integrity sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw== dependencies: "@lezer/common" "^1.2.0" "@lezer/highlight" "^1.0.0" @@ -3742,48 +3742,48 @@ dependencies: langium "3.3.1" -"@module-federation/error-codes@0.21.4": - version "0.21.4" - resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.21.4.tgz#037c15c641e67c2c5465d2d3f442724395691f55" - integrity sha512-ClpL5MereWNXh+EgDjz7w4RrC1JlisQTvXDa1gLxpviHafzNDfdViVmuhi9xXVuj+EYo8KU70Y999KHhk9424Q== +"@module-federation/error-codes@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/error-codes/-/error-codes-0.22.0.tgz#31ccc990dc240d73912ba7bd001f7e35ac751992" + integrity sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug== -"@module-federation/runtime-core@0.21.4": - version "0.21.4" - resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.21.4.tgz#3254ee1be28255f9b115fe02d462672ae0f66584" - integrity sha512-SGpmoOLGNxZofpTOk6Lxb2ewaoz5wMi93AFYuuJB04HTVcngEK+baNeUZ2D/xewrqNIJoMY6f5maUjVfIIBPUA== +"@module-federation/runtime-core@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz#7321ec792bb7d1d22bee6162ec43564b769d2a3c" + integrity sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA== dependencies: - "@module-federation/error-codes" "0.21.4" - "@module-federation/sdk" "0.21.4" + "@module-federation/error-codes" "0.22.0" + "@module-federation/sdk" "0.22.0" -"@module-federation/runtime-tools@0.21.4": - version "0.21.4" - resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.21.4.tgz#dbaf6d0a21ee72fc343f0d9dc50eeabb5fd9f5ba" - integrity sha512-RzFKaL0DIjSmkn76KZRfzfB6dD07cvID84950jlNQgdyoQFUGkqD80L6rIpVCJTY/R7LzR3aQjHnoqmq4JPo3w== +"@module-federation/runtime-tools@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz#36f2a7cb267af208a9d1a237fe9a71b4bf31431e" + integrity sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA== dependencies: - "@module-federation/runtime" "0.21.4" - "@module-federation/webpack-bundler-runtime" "0.21.4" + "@module-federation/runtime" "0.22.0" + "@module-federation/webpack-bundler-runtime" "0.22.0" -"@module-federation/runtime@0.21.4": - version "0.21.4" - resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.21.4.tgz#f07cc2dd9786b26d3af5440793693b953a818b97" - integrity sha512-wgvGqryurVEvkicufJmTG0ZehynCeNLklv8kIk5BLIsWYSddZAE+xe4xov1kgH5fIJQAoQNkRauFFjVNlHoAkA== +"@module-federation/runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/runtime/-/runtime-0.22.0.tgz#f789c9ef40d846d110711c8221ecc0ad938d43d8" + integrity sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA== dependencies: - "@module-federation/error-codes" "0.21.4" - "@module-federation/runtime-core" "0.21.4" - "@module-federation/sdk" "0.21.4" + "@module-federation/error-codes" "0.22.0" + "@module-federation/runtime-core" "0.22.0" + "@module-federation/sdk" "0.22.0" -"@module-federation/sdk@0.21.4": - version "0.21.4" - resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.21.4.tgz#4b4757b527d9a2758d01c5aadec7963348f43385" - integrity sha512-tzvhOh/oAfX++6zCDDxuvioHY4Jurf8vcfoCbKFxusjmyKr32GPbwFDazUP+OPhYCc3dvaa9oWU6X/qpUBLfJw== +"@module-federation/sdk@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/sdk/-/sdk-0.22.0.tgz#6ad4c1de85a900c3c80ff26cb87cce253e3a2770" + integrity sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g== -"@module-federation/webpack-bundler-runtime@0.21.4": - version "0.21.4" - resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.4.tgz#d8651c5bb8e7bc999300f32f0e11358a6acd0501" - integrity sha512-dusmR3uPnQh9u9ChQo3M+GLOuGFthfvnh7WitF/a1eoeTfRmXqnMFsXtZCUK+f/uXf+64874Zj/bhAgbBcVHZA== +"@module-federation/webpack-bundler-runtime@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz#dcbe8f972d722fe278e6a7c21988d4bee53d401d" + integrity sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA== dependencies: - "@module-federation/runtime" "0.21.4" - "@module-federation/sdk" "0.21.4" + "@module-federation/runtime" "0.22.0" + "@module-federation/sdk" "0.22.0" "@napi-rs/wasm-runtime@1.0.7": version "1.0.7" @@ -4822,130 +4822,130 @@ resolved "https://registry.yarnpkg.com/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz#c06dac2d011f36d61259aa1c6df4f0d5e28bc55e" integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg== -"@rollup/rollup-android-arm-eabi@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz#f762035679a6b168138c94c960fda0b0cdb00d98" - integrity sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA== - -"@rollup/rollup-android-arm64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz#1061ce0bfa6a6da361bda52a2949612769cd22ef" - integrity sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg== - -"@rollup/rollup-darwin-arm64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz#20d65f967566000d22ef6c9defb0f96d2f95ed79" - integrity sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg== - -"@rollup/rollup-darwin-x64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz#2a805303beb4cd44bfef993c39582cb0f1794f90" - integrity sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA== - -"@rollup/rollup-freebsd-arm64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz#7cf26a60d7245e9207a253ac07f11ddfcc47d622" - integrity sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g== - -"@rollup/rollup-freebsd-x64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz#2b1acc1e624b47f676f526df30bb4357ea21f9b6" - integrity sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA== - -"@rollup/rollup-linux-arm-gnueabihf@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz#1ba1ef444365a51687c7af2824b370791a1e3aaf" - integrity sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q== - -"@rollup/rollup-linux-arm-musleabihf@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz#e49863b683644bbbb9abc5b051c9b9d59774c3a0" - integrity sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA== - -"@rollup/rollup-linux-arm64-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz#fda3bfd43d2390d2d99bc7d9617c2db2941da52b" - integrity sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw== - -"@rollup/rollup-linux-arm64-musl@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz#aea6199031404f80a0ccf33d5d3a63de53819da0" - integrity sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw== - -"@rollup/rollup-linux-loong64-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz#f467333a5691f69a18295a7051e1cebb6815fdfe" - integrity sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q== - -"@rollup/rollup-linux-loong64-musl@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz#e46dffc29692caa743140636eb0d1d9a24ed0fc3" - integrity sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ== - -"@rollup/rollup-linux-ppc64-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz#be5b4494047ccbaadf1542fe9ac45b7788e73968" - integrity sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ== - -"@rollup/rollup-linux-ppc64-musl@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz#b14ce2b0fe9c37fd0646ec3095087c1d64c791f4" - integrity sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA== - -"@rollup/rollup-linux-riscv64-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz#b78357f88ee7a34f677b118714594e37a2362a8c" - integrity sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ== - -"@rollup/rollup-linux-riscv64-musl@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz#f44107ec0c30d691552c89eb3e4f287c33c56c3c" - integrity sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ== - -"@rollup/rollup-linux-s390x-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz#ddb1cf80fb21b376a45a4e93ffdbeb15205d38f3" - integrity sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg== - -"@rollup/rollup-linux-x64-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz#0da46a644c87e1d8b13da5e2901037193caea8d3" - integrity sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A== - -"@rollup/rollup-linux-x64-musl@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz#e561c93b6a23114a308396806551c25e28d3e303" - integrity sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw== - -"@rollup/rollup-openbsd-x64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz#52490600775364a0476f26be7ddc416dfa11439b" - integrity sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw== - -"@rollup/rollup-openharmony-arm64@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz#c25988aae57bd21fa7d0fcb014ef85ec8987ad2c" - integrity sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA== - -"@rollup/rollup-win32-arm64-msvc@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz#572a8cd78442441121f1a6b5ad686ab723c31ae4" - integrity sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ== - -"@rollup/rollup-win32-ia32-msvc@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz#431fa95c0be8377907fe4e7070aaa4016c7b7e3b" - integrity sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA== - -"@rollup/rollup-win32-x64-gnu@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz#19db67feb9c5fe09b1358efd1d97c5f6b299d347" - integrity sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA== - -"@rollup/rollup-win32-x64-msvc@4.57.0": - version "4.57.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz#6f38851da1123ac0380121108abd31ff21205c3d" - integrity sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ== +"@rollup/rollup-android-arm-eabi@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz#add5e608d4e7be55bc3ca3d962490b8b1890e088" + integrity sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg== + +"@rollup/rollup-android-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz#10bd0382b73592beee6e9800a69401a29da625c4" + integrity sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w== + +"@rollup/rollup-darwin-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz#1e99ab04c0b8c619dd7bbde725ba2b87b55bfd81" + integrity sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg== + +"@rollup/rollup-darwin-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz#69e741aeb2839d2e8f0da2ce7a33d8bd23632423" + integrity sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w== + +"@rollup/rollup-freebsd-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz#3736c232a999c7bef7131355d83ebdf9651a0839" + integrity sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug== + +"@rollup/rollup-freebsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz#227dcb8f466684070169942bd3998901c9bfc065" + integrity sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q== + +"@rollup/rollup-linux-arm-gnueabihf@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz#ba004b30df31b724f99ce66e7128248bea17cb0c" + integrity sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw== + +"@rollup/rollup-linux-arm-musleabihf@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz#6929f3e07be6b6da5991f63c6b68b3e473d0a65a" + integrity sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw== + +"@rollup/rollup-linux-arm64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz#06e89fd4a25d21fe5575d60b6f913c0e65297bfa" + integrity sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g== + +"@rollup/rollup-linux-arm64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz#fddabf395b90990d5194038e6cd8c00156ed8ac0" + integrity sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q== + +"@rollup/rollup-linux-loong64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz#04c10bb764bbf09a3c1bd90432e92f58d6603c36" + integrity sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA== + +"@rollup/rollup-linux-loong64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz#f2450361790de80581d8687ea19142d8a4de5c0f" + integrity sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw== + +"@rollup/rollup-linux-ppc64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz#0474f4667259e407eee1a6d38e29041b708f6a30" + integrity sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w== + +"@rollup/rollup-linux-ppc64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz#9f32074819eeb1ddbe51f50ea9dcd61a6745ec33" + integrity sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw== + +"@rollup/rollup-linux-riscv64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz#3fdb9d4b1e29fb6b6a6da9f15654d42eb77b99b2" + integrity sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A== + +"@rollup/rollup-linux-riscv64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz#1de780d64e6be0e3e8762035c22e0d8ea68df8ed" + integrity sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw== + +"@rollup/rollup-linux-s390x-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz#1da022ffd2d9e9f0fd8344ea49e113001fbcac64" + integrity sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg== + +"@rollup/rollup-linux-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz#78c16eef9520bd10e1ea7a112593bb58e2842622" + integrity sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg== + +"@rollup/rollup-linux-x64-musl@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz#a7598591b4d9af96cb3167b50a5bf1e02dfea06c" + integrity sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw== + +"@rollup/rollup-openbsd-x64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz#c51d48c07cd6c466560e5bed934aec688ce02614" + integrity sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw== + +"@rollup/rollup-openharmony-arm64@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz#f09921d0b2a0b60afbf3586d2a7a7f208ba6df17" + integrity sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ== + +"@rollup/rollup-win32-arm64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz#08d491717135376e4a99529821c94ecd433d5b36" + integrity sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ== + +"@rollup/rollup-win32-ia32-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz#b0c12aac1104a8b8f26a5e0098e5facbb3e3964a" + integrity sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew== + +"@rollup/rollup-win32-x64-gnu@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz#b9cccef26f5e6fdc013bf3c0911a3c77428509d0" + integrity sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ== + +"@rollup/rollup-win32-x64-msvc@4.57.1": + version "4.57.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz#a03348e7b559c792b6277cc58874b89ef46e1e72" + integrity sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA== "@rsdoctor/client@0.4.13": version "0.4.13" @@ -5062,81 +5062,81 @@ fs-extra "^11.1.1" lodash "^4.17.21" -"@rspack/binding-darwin-arm64@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.5.tgz#c038886401ec0ef3128e3b4a9ddb7efee063c469" - integrity sha512-DaAJTlaenqZIqFqIYcitn0SzjJ7WpC9234JpiSDZdRyXii9qJJiToVwxSPY/CmkrP0201+aC4pzN4tI9T0Ummw== - -"@rspack/binding-darwin-x64@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.5.tgz#a1527e656ac9cdace2f42bbec40a70d266e40d27" - integrity sha512-fPVfp7W/GMbHayb5hbefiMI30JxlsqPexOItHGtufHmTCrNne1aHmApspyUZIUUxG36oDRHuGPnfh+IQbHR6+g== - -"@rspack/binding-linux-arm64-gnu@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.5.tgz#c0fb16502861ec85d8faac5a9a44e5e738d294a9" - integrity sha512-K68YDoV2e4s+nlrKZxgF0HehiiRwOAGgZFUwJNRMZ7MUrTGMNlPTJlM+bNdaCjDb6GFxBVFcNwIa1sU+0tF1zg== - -"@rspack/binding-linux-arm64-musl@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.5.tgz#3d0104855c63be4092e39c523f008c94533411f9" - integrity sha512-JPtxFBOq7RRmBIwpdGIStf8iyCILehDsjQtEB0Kkhtm7TsAkVGwtC41GLcNuPxcQBKqNDmD8cy3yLYhXadH2CQ== - -"@rspack/binding-linux-x64-gnu@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.5.tgz#635f6fb87d3aa79dbe356a3fb33f6e046e7e25ed" - integrity sha512-oh4ZNo2HtizZ/E6UK3BEONu20h8VVBw9GAXuWmo1u22cJSihzg+WfRNCMjRDil82LqSsyAgBwnU+dEjEYGKyAA== - -"@rspack/binding-linux-x64-musl@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.5.tgz#fa085de6b6446866f151944c8082b23dbcf178c8" - integrity sha512-8Xebp5bvPJqjifpkFEAX5nUvoU2JvbMU3gwAkEovRRuvooCXnVT2tqkUBjkR3AhivAGgAxAr9hRzUUz/6QWt3Q== - -"@rspack/binding-wasm32-wasi@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.5.tgz#501ce81b09de2720c725fc87c3a87edfa0e370ad" - integrity sha512-oINZNqzTxM+9dSUOjAORodHXYoJYzXvpaHI2U6ecEmoWaBCs+x3V3Po8DhpNFBwotB+jGlcoVhEHjpg5uaO6pw== +"@rspack/binding-darwin-arm64@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.4.tgz#d55216bb06bd39607846227891194ae7c6b16586" + integrity sha512-d4FTW/TkqvU9R1PsaK2tbLG1uY0gAlxy3rEiQYrFRAOVTMOFkPasypmvhwD5iWrPIhkjIi79IkgrSzRJaP2ZwA== + +"@rspack/binding-darwin-x64@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.4.tgz#bf9046b2bfc6e93daa7ae26ddd88a284fa7ec24e" + integrity sha512-Oq65S5szs3+In9hVWfPksdL6EUu1+SFZK3oQINP3kMJ5zPzrdyiue+L5ClpTU/VMKVxfQTdCBsI6OVJNnaLBiA== + +"@rspack/binding-linux-arm64-gnu@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.4.tgz#9e4c85f78744708c464ee1bec7a4cdf307e6c460" + integrity sha512-sTpfCraAtYZBhdw9Xx5a19OgJ/mBELTi61utZzrO3bV6BFEulvOdmnNjpgb0xv1KATtNI8YxECohUzekk1WsOA== + +"@rspack/binding-linux-arm64-musl@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.4.tgz#86cc2b029e257d17a36d8d77f84fce280510b08f" + integrity sha512-sw8jZbUe13Ry0/tnUt1pSdwkaPtSzKuveq+b6/CUT26I3DKfJQoG0uJbjj2quMe4ks3jDmoGlxuRe4D/fWUoSg== + +"@rspack/binding-linux-x64-gnu@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.4.tgz#d092e7b742c8a197873242db0f4a684186117b0a" + integrity sha512-1W6LU0wR/TxB+8pogt0pn0WRwbQmKfu9839p/VBuSkNdWR4aljAhYO6RxsLQLCLrDAqEyrpeYWsWJBvAJ4T/pA== + +"@rspack/binding-linux-x64-musl@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.4.tgz#4d442d348dc9426383276c9c379109ee9553466e" + integrity sha512-rkmu8qLnm/q8J14ZQZ04SnPNzdRNgzAoKJCTbnhCzcuL5k5e20LUFfGuS6j7Io1/UdVMOjz/u7R6b9h/qA1Scw== + +"@rspack/binding-wasm32-wasi@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.4.tgz#1347b1ab5e0238a0d12d1b268c2b01550eaf865f" + integrity sha512-6BQvLbDtUVkTN5o1QYLYKAYuXavC4ER5Vn/amJEoecbM9F25MNAv28inrXs7BQ4cHSU4WW/F4yZPGnA+jUZLyw== dependencies: "@napi-rs/wasm-runtime" "1.0.7" -"@rspack/binding-win32-arm64-msvc@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.5.tgz#f78c90691d5da8628da02de6e972cc8de517ae60" - integrity sha512-UUmep2ayuZxWPdrzkrzAFxVgYUWTB82pa9bkAGyeDO9SNkz8vTpdtbDaTvAzjFb8Pn+ErktDEDBKT57FLjxwxQ== - -"@rspack/binding-win32-ia32-msvc@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.5.tgz#4666a868eca3d24d00405e64baa708f2c8a556b2" - integrity sha512-7nx+mMimpmCMstcW7nsyToXy5TK7N+YGPu2W/oioX7qv9ZCuJGTddjzLS84wN8DVrNIirg4mcxpBsmOQMZeHQA== - -"@rspack/binding-win32-x64-msvc@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.5.tgz#98a4196c38e9d220cde9a5047f99cf503ca46d6e" - integrity sha512-pzO7rYFu6f6stgSccolZHiXGTTwKrIGHHNV1ALY1xPRmQEdbHcbMwadeaG99JL2lRLve9iNI+Z9Pr3oDVRN46g== - -"@rspack/binding@1.6.5": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.6.5.tgz#78afbe3c9303edc39d96b57d32f33dca6a3fd75a" - integrity sha512-FzYsr5vdjaVQIlDTxZFlISOQGxl/4grpF2BeiNy60Fpw9eeADeXk55DVacbXPqpiz7Doj6cyhEyMszQOvihrqQ== +"@rspack/binding-win32-arm64-msvc@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.4.tgz#1ff4bc8b09a8ec443132965473135ad45798df74" + integrity sha512-kipggu7xVPhnAkAV7koSDVbBuuMDMA4hX60DNJKTS6fId3XNHcZqWKIsWGOt0yQ6KV7I3JRRBDotKLx6uYaRWw== + +"@rspack/binding-win32-ia32-msvc@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.4.tgz#142544e057662620a9f150754349c42ed6a06a5a" + integrity sha512-9Zdozc13AUQHqagDDHxHml1FnZZWuSj/uP+SxtlTlQaiIE9GDH3n0cUio1GUq+cBKbcXeiE3dJMGJxhiFaUsxA== + +"@rspack/binding-win32-x64-msvc@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.4.tgz#744b06dd3706d0abbcbe4f8e3be7b8f3d1ccafd2" + integrity sha512-3a/jZTUrvU340IuRcxul+ccsDtdrMaGq/vi4HNcWalL0H2xeOeuieBAV8AZqaRjmxMu8OyRcpcSrkHtN1ol/eA== + +"@rspack/binding@1.7.4": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.4.tgz#c1a6f02124f447a8df19d2e536846592174b63dd" + integrity sha512-BOACDXd9aTrdJgqa88KGxnTGdUdVLAClTCLhSvdNvQZIcaVLOB1qtW0TvqjZ19MxuQB/Cba5u/ILc5DNXxuDhg== optionalDependencies: - "@rspack/binding-darwin-arm64" "1.6.5" - "@rspack/binding-darwin-x64" "1.6.5" - "@rspack/binding-linux-arm64-gnu" "1.6.5" - "@rspack/binding-linux-arm64-musl" "1.6.5" - "@rspack/binding-linux-x64-gnu" "1.6.5" - "@rspack/binding-linux-x64-musl" "1.6.5" - "@rspack/binding-wasm32-wasi" "1.6.5" - "@rspack/binding-win32-arm64-msvc" "1.6.5" - "@rspack/binding-win32-ia32-msvc" "1.6.5" - "@rspack/binding-win32-x64-msvc" "1.6.5" - -"@rspack/core@1.6.5", "@rspack/core@^1.5.0": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.6.5.tgz#8e06a917dfbc556156d5c544cbf985b4da89dbd7" - integrity sha512-AqaOMA6MTNhqMYYwrhvPA+2uS662SkAi8Rb7B/IFOzh/Z5ooyczL4lUX+qyhAO3ymn50iwM4jikQCf9XfBiaQA== - dependencies: - "@module-federation/runtime-tools" "0.21.4" - "@rspack/binding" "1.6.5" + "@rspack/binding-darwin-arm64" "1.7.4" + "@rspack/binding-darwin-x64" "1.7.4" + "@rspack/binding-linux-arm64-gnu" "1.7.4" + "@rspack/binding-linux-arm64-musl" "1.7.4" + "@rspack/binding-linux-x64-gnu" "1.7.4" + "@rspack/binding-linux-x64-musl" "1.7.4" + "@rspack/binding-wasm32-wasi" "1.7.4" + "@rspack/binding-win32-arm64-msvc" "1.7.4" + "@rspack/binding-win32-ia32-msvc" "1.7.4" + "@rspack/binding-win32-x64-msvc" "1.7.4" + +"@rspack/core@^1.5.0": + version "1.7.4" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.4.tgz#0fc0838d4589cf565b55cdb560d8914a365310de" + integrity sha512-6QNqcsRSy1WbAGvjA2DAEx4yyAzwrvT6vd24Kv4xdZHdvF6FmcUbr5J+mLJ1jSOXvpNhZ+RzN37JQ8fSmytEtw== + dependencies: + "@module-federation/runtime-tools" "0.22.0" + "@rspack/binding" "1.7.4" "@rspack/lite-tapable" "1.1.0" "@rspack/lite-tapable@1.1.0": @@ -6135,9 +6135,9 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@*", "@types/node@>=10.0.0": - version "25.0.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.10.tgz#4864459c3c9459376b8b75fd051315071c8213e7" - integrity sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg== + version "25.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.0.tgz#015b7d228470c1dcbfc17fe9c63039d216b4d782" + integrity sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w== dependencies: undici-types "~7.16.0" @@ -6907,12 +6907,12 @@ asynckit@^0.4.0: integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== autoprefixer@^10.4.19, autoprefixer@^10.4.23: - version "10.4.23" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.23.tgz#c6aa6db8e7376fcd900f9fd79d143ceebad8c4e6" - integrity sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA== + version "10.4.24" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.24.tgz#2c29595f3abd820a79976a609d0bf40eecf212fb" + integrity sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw== dependencies: browserslist "^4.28.1" - caniuse-lite "^1.0.30001760" + caniuse-lite "^1.0.30001766" fraction.js "^5.3.4" picocolors "^1.1.1" postcss-value-parser "^4.2.0" @@ -6950,7 +6950,7 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.14: +babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz#808fa349686eea4741807cfaaa2aa3aa57ce120a" integrity sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw== @@ -6967,7 +6967,15 @@ babel-plugin-polyfill-corejs3@^0.13.0: "@babel/helper-define-polyfill-provider" "^0.6.5" core-js-compat "^3.43.0" -babel-plugin-polyfill-regenerator@^0.6.5: +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz#65b06cda48d6e447e1e926681f5a247c6ae2b9cf" + integrity sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.6" + core-js-compat "^3.48.0" + +babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz#69f5dd263cab933c42fe5ea05e83443b374bd4bf" integrity sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A== @@ -6995,9 +7003,9 @@ base64id@2.0.0, base64id@~2.0.0: integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== baseline-browser-mapping@^2.9.0: - version "2.9.18" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz#c8281693035a9261b10d662a5379650a6c2d1ff7" - integrity sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA== + version "2.9.19" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz#3e508c43c46d961eb4d7d2e5b8d1dd0f9ee4f488" + integrity sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg== batch@0.6.1: version "0.6.1" @@ -7010,12 +7018,12 @@ before-after-hook@^3.0.2: integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A== better-auth@^1.4.9: - version "1.4.17" - resolved "https://registry.yarnpkg.com/better-auth/-/better-auth-1.4.17.tgz#a6f6176042900690df880ed349ca27ec0620291c" - integrity sha512-VmHGQyKsEahkEs37qguROKg/6ypYpNF13D7v/lkbO7w7Aivz0Bv2h+VyUkH4NzrGY0QBKXi1577mGhDCVwp0ew== + version "1.4.18" + resolved "https://registry.yarnpkg.com/better-auth/-/better-auth-1.4.18.tgz#460cfa3f71d2da9ffcbfc1ad4d87977a4d51b5d5" + integrity sha512-bnyifLWBPcYVltH3RhS7CM62MoelEqC6Q+GnZwfiDWNfepXoQZBjEvn4urcERC7NTKgKq5zNBM8rvPvRBa6xcg== dependencies: - "@better-auth/core" "1.4.17" - "@better-auth/telemetry" "1.4.17" + "@better-auth/core" "1.4.18" + "@better-auth/telemetry" "1.4.18" "@better-auth/utils" "0.3.0" "@better-fetch/fetch" "1.1.21" "@noble/ciphers" "^2.0.0" @@ -7351,10 +7359,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001760: - version "1.0.30001766" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz#b6f6b55cb25a2d888d9393104d14751c6a7d6f7a" - integrity sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001766: + version "1.0.30001767" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz#0279c498e862efb067938bba0a0aabafe8d0b730" + integrity sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ== canvas-roundrect-polyfill@0.0.1: version "0.0.1" @@ -7848,14 +7856,14 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.43.0: +core-js-compat@^3.43.0, core-js-compat@^3.48.0: version "3.48.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6" integrity sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q== dependencies: browserslist "^4.28.1" -core-js-pure@^3.43.0: +core-js-pure@^3.48.0: version "3.48.0" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.48.0.tgz#7d5a3fe1ec3631b9aa76a81c843ac2ce918e5023" integrity sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw== @@ -8831,9 +8839,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.263: - version "1.5.279" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz#67dfdeb22fd81412d0d18d1d9b2c749e9b8945cb" - integrity sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg== + version "1.5.283" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz#51d492c37c2d845a0dccb113fe594880c8616de8" + integrity sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w== elkjs@^0.9.0, elkjs@^0.9.3: version "0.9.3" @@ -10112,9 +10120,9 @@ hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1, hoist-non-react- react-is "^16.7.0" hookified@^1.14.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.15.0.tgz#d51db9fe134b8bd19c1aa88f9fcd7878995e4b66" - integrity sha512-51w+ZZGt7Zw5q7rM3nC4t3aLn/xvKDETsXqMczndvwyVQhAHfUmUuFBRFcos8Iyebtk7OAE9dL26wFNzZVVOkw== + version "1.15.1" + resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.15.1.tgz#b1fafeaa5489cdc29cb85546a8f837ed4ffbbcb6" + integrity sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg== hpack.js@^2.1.6: version "2.1.6" @@ -10859,9 +10867,9 @@ known-css-properties@^0.36.0: integrity sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA== kysely@^0.28.5: - version "0.28.10" - resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.28.10.tgz#d2441080cd6c633a3c6a927c2a364c69bbb829a7" - integrity sha512-ksNxfzIW77OcZ+QWSAPC7yDqUSaIVwkTWnTPNiIy//vifNbwsSgQ57OkkncHxxpcBHM3LRfLAZVEh7kjq5twVA== + version "0.28.11" + resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.28.11.tgz#23b0d027cf59401e66d516eb23ed5e8e945fd4fd" + integrity sha512-zpGIFg0HuoC893rIjYX1BETkVWdDnzTzF5e0kWXJFg5lE0k1/LfNWBejrcnOFu8Q2Rfq/hTDTU7XLUM8QOrpzg== langium@3.3.1: version "3.3.1" @@ -14508,37 +14516,37 @@ robust-predicates@^3.0.2: integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== rollup@^4.20.0, rollup@^4.43.0: - version "4.57.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.57.0.tgz#9fa13c1fb779d480038f45708b5e01b9449b6853" - integrity sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA== + version "4.57.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.57.1.tgz#947f70baca32db2b9c594267fe9150aa316e5a88" + integrity sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A== dependencies: "@types/estree" "1.0.8" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.57.0" - "@rollup/rollup-android-arm64" "4.57.0" - "@rollup/rollup-darwin-arm64" "4.57.0" - "@rollup/rollup-darwin-x64" "4.57.0" - "@rollup/rollup-freebsd-arm64" "4.57.0" - "@rollup/rollup-freebsd-x64" "4.57.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.57.0" - "@rollup/rollup-linux-arm-musleabihf" "4.57.0" - "@rollup/rollup-linux-arm64-gnu" "4.57.0" - "@rollup/rollup-linux-arm64-musl" "4.57.0" - "@rollup/rollup-linux-loong64-gnu" "4.57.0" - "@rollup/rollup-linux-loong64-musl" "4.57.0" - "@rollup/rollup-linux-ppc64-gnu" "4.57.0" - "@rollup/rollup-linux-ppc64-musl" "4.57.0" - "@rollup/rollup-linux-riscv64-gnu" "4.57.0" - "@rollup/rollup-linux-riscv64-musl" "4.57.0" - "@rollup/rollup-linux-s390x-gnu" "4.57.0" - "@rollup/rollup-linux-x64-gnu" "4.57.0" - "@rollup/rollup-linux-x64-musl" "4.57.0" - "@rollup/rollup-openbsd-x64" "4.57.0" - "@rollup/rollup-openharmony-arm64" "4.57.0" - "@rollup/rollup-win32-arm64-msvc" "4.57.0" - "@rollup/rollup-win32-ia32-msvc" "4.57.0" - "@rollup/rollup-win32-x64-gnu" "4.57.0" - "@rollup/rollup-win32-x64-msvc" "4.57.0" + "@rollup/rollup-android-arm-eabi" "4.57.1" + "@rollup/rollup-android-arm64" "4.57.1" + "@rollup/rollup-darwin-arm64" "4.57.1" + "@rollup/rollup-darwin-x64" "4.57.1" + "@rollup/rollup-freebsd-arm64" "4.57.1" + "@rollup/rollup-freebsd-x64" "4.57.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.57.1" + "@rollup/rollup-linux-arm-musleabihf" "4.57.1" + "@rollup/rollup-linux-arm64-gnu" "4.57.1" + "@rollup/rollup-linux-arm64-musl" "4.57.1" + "@rollup/rollup-linux-loong64-gnu" "4.57.1" + "@rollup/rollup-linux-loong64-musl" "4.57.1" + "@rollup/rollup-linux-ppc64-gnu" "4.57.1" + "@rollup/rollup-linux-ppc64-musl" "4.57.1" + "@rollup/rollup-linux-riscv64-gnu" "4.57.1" + "@rollup/rollup-linux-riscv64-musl" "4.57.1" + "@rollup/rollup-linux-s390x-gnu" "4.57.1" + "@rollup/rollup-linux-x64-gnu" "4.57.1" + "@rollup/rollup-linux-x64-musl" "4.57.1" + "@rollup/rollup-openbsd-x64" "4.57.1" + "@rollup/rollup-openharmony-arm64" "4.57.1" + "@rollup/rollup-win32-arm64-msvc" "4.57.1" + "@rollup/rollup-win32-ia32-msvc" "4.57.1" + "@rollup/rollup-win32-x64-gnu" "4.57.1" + "@rollup/rollup-win32-x64-msvc" "4.57.1" fsevents "~2.3.2" rou3@^0.7.10: From cba7b7726f0bf1297d23eb127cc01f24dda329eb Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 2 Feb 2026 16:07:42 +0100 Subject: [PATCH 27/49] ensure deterministic order --- .../tdev/page-progress-state/remark-plugin/index.ts | 7 ++++++- src/models/DocumentRoot.ts | 9 ++++++--- src/models/documents/TaskState.ts | 10 ++++++++++ src/models/iTaskableDocument.ts | 2 ++ src/stores/PageStore.ts | 12 ++++++------ src/theme/DocItem/Content/index.tsx | 3 ++- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts index 267d9a3c0..d42173b60 100644 --- a/packages/tdev/page-progress-state/remark-plugin/index.ts +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -25,6 +25,11 @@ const insertDocRoot = db.prepare( ) ON CONFLICT(id, path) DO NOTHING` ); +const cleanupPage = db.prepare( + `DELETE FROM document_roots + WHERE path = ? AND page_id = ?;` +); + interface JsxConfig { /** * Component Name @@ -83,7 +88,7 @@ const remarkPlugin: Plugin = function plugin( path: filePath, position: 0 }); - + cleanupPage.run(filePath, page_id); visit(root, (node, index, parent) => { if (node.type === 'code') { const idMatch = /id=([a-zA-Z0-9-_]+)/.exec(node.meta || ''); diff --git a/src/models/DocumentRoot.ts b/src/models/DocumentRoot.ts index caf8da676..60630ff41 100644 --- a/src/models/DocumentRoot.ts +++ b/src/models/DocumentRoot.ts @@ -4,6 +4,7 @@ import { DocumentRootStore } from '@tdev-stores/DocumentRootStore'; import { Access, DocumentType, TypeDataMapping, TypeModelMapping } from '@tdev-api/document'; import { highestAccess, NoneAccess, ROAccess, RWAccess } from './helpers/accessPolicy'; import { isDummyId } from '@tdev-hooks/useDummyId'; +import { orderBy } from 'es-toolkit/array'; export abstract class TypeMeta { readonly pagePosition: number; @@ -180,9 +181,11 @@ class DocumentRoot { */ @computed get mainDocuments(): TypeModelMapping[T][] { - const docs = this.documents - .filter((d) => d.isMain) - .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime()) as TypeModelMapping[T][]; + const docs = orderBy( + this.documents.filter((d) => d.isMain), + ['createdAt', 'id'], + ['asc', 'asc'] + ) as TypeModelMapping[T][]; if (this.isDummy) { return docs; } diff --git a/src/models/documents/TaskState.ts b/src/models/documents/TaskState.ts index 229fb0857..ed3530112 100644 --- a/src/models/documents/TaskState.ts +++ b/src/models/documents/TaskState.ts @@ -79,6 +79,16 @@ class TaskState extends iDocument<'task_state'> implements iTaskableDocument<'ta return this.taskState === 'checked'; } + @computed + get progress(): number { + return this.isDone ? 1 : 0; + } + + @computed + get totalSteps(): number { + return 1; + } + @computed get editingIconState() { return { diff --git a/src/models/iTaskableDocument.ts b/src/models/iTaskableDocument.ts index 18ee116b3..2a386f8ac 100644 --- a/src/models/iTaskableDocument.ts +++ b/src/models/iTaskableDocument.ts @@ -4,5 +4,7 @@ import iDocument from './iDocument'; export interface iTaskableDocument extends iDocument { isDone: boolean; editingIconState: { path: string; color: string }; + progress: number; + totalSteps: number; setScrollTo(scroll: boolean): void; } diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index a6b7996ce..5b014a041 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -4,7 +4,7 @@ import { RootStore } from '@tdev-stores/rootStore'; import Page from '@tdev-models/Page'; import { computedFn } from 'mobx-utils'; import { allDocuments as apiAllDocuments, DocumentType } from '@tdev-api/document'; -import type { GlobalPluginData, GlobalVersion, useDocsSidebar } from '@docusaurus/plugin-content-docs/client'; +import type { GlobalPluginData } from '@docusaurus/plugin-content-docs/client'; import siteConfig from '@generated/docusaurus.config'; import { PageIndex } from '@tdev/page-progress-state'; import { groupBy } from 'es-toolkit/array'; @@ -84,12 +84,12 @@ export class PageStore extends iStore { .then( action((data) => { const grouped = groupBy(data.documentRoots, (dr) => `${dr.path}::${dr.page_id}`); - const pages = Object.values(grouped).map((docs) => { - const doc = docs[0]!; + const pages = Object.values(grouped).map((docRootDescriptors) => { + const doc = docRootDescriptors[0]!; const page = new Page(doc.page_id, doc.path, this); - docs.filter((doc) => doc.position > 0).forEach((d) => - page.addDocumentRootConfig(d.id, d) - ); + docRootDescriptors + .filter((doc) => doc.position > 0) + .forEach((d) => page.addDocumentRootConfig(d.id, d)); return page; }); this.pages.replace(pages); diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx index 9852a43d6..4447539a4 100644 --- a/src/theme/DocItem/Content/index.tsx +++ b/src/theme/DocItem/Content/index.tsx @@ -27,7 +27,8 @@ const ContentWrapper = observer((props: Props): React.ReactNode => { {JSON.stringify( pageStore.current?.taskableDocuments.map( - (doc) => `${doc.type}@${doc.isDone} - ${doc.id}::${doc.documentRootId}` + (doc) => + `[${doc.root?.pagePositions.get(pageStore.current?.path!)}] ${doc.type}@${doc.progress}/${doc.totalSteps} - ${doc.documentRootId}::${doc.id}` ) || {}, null, 2 From 3d5903e4034749f657c6d1a806e99aa9e498c95d Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 2 Feb 2026 16:47:10 +0100 Subject: [PATCH 28/49] add dev reload --- src/models/Page.ts | 10 +++------- src/theme/Root.tsx | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/models/Page.ts b/src/models/Page.ts index 010a4417d..625c4df49 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -3,15 +3,11 @@ */ import { action, computed, observable, ObservableMap } from 'mobx'; -import { PageStore, SidebarVersions } from '@tdev-stores/PageStore'; -import TaskState from '@tdev-models/documents/TaskState'; +import { PageStore } from '@tdev-stores/PageStore'; import _ from 'es-toolkit/compat'; import iDocument from '@tdev-models/iDocument'; import StudentGroup from '@tdev-models/StudentGroup'; -import ProgressState from './documents/ProgressState'; import { DocumentType } from '@tdev-api/document'; -import type { PageIndex } from '@tdev/page-progress-state'; -import { filter } from '@mdxeditor/editor'; import { iTaskableDocument } from './iTaskableDocument'; import { mdiCheckCircleOutline, mdiSpeedometer, mdiSpeedometerMedium, mdiSpeedometerSlow } from '@mdi/js'; import { IfmColors } from '@tdev-components/shared/Colors'; @@ -53,7 +49,7 @@ export default class Page { @computed get isLandingpage() { - return SidebarVersions.some((version) => version.entryPath === this.path); + return this.store.sidebarVersions.some((version) => version.entryPath === this.path); } @computed @@ -74,7 +70,7 @@ export default class Page { if (parentPage) { return parentPage.path; } - if (SidebarVersions.some((v) => v.versionPath === parentPath)) { + if (this.store.sidebarVersions.some((v) => v.versionPath === parentPath)) { return parentPath; } parts.splice(-1, 1); diff --git a/src/theme/Root.tsx b/src/theme/Root.tsx index c7be59b4f..3fba443d5 100644 --- a/src/theme/Root.tsx +++ b/src/theme/Root.tsx @@ -11,6 +11,10 @@ import LoggedOutOverlay from '@tdev-components/LoggedOutOverlay'; import { authClient } from '@tdev/auth-client'; import { getOfflineUser } from '@tdev-api/OfflineApi'; import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment'; +import type { GlobalPluginData } from '@docusaurus/plugin-content-docs/client'; +import { usePluginData } from '@docusaurus/useGlobalData'; +import { Hashery } from 'hashery'; +const hasher = new Hashery(); const { OFFLINE_API, SENTRY_DSN } = siteConfig.customFields as { SENTRY_DSN?: string; OFFLINE_API?: boolean | 'memory' | 'indexedDB'; @@ -175,6 +179,45 @@ const FullscreenHandler = observer(() => { }, []); return null; }); +let devHash: string | null = null; +const DevGlobalDataTracker = observer(() => { + if (process.env.NODE_ENV === 'production') { + return null; + } + const pageStore = useStore('pageStore'); + const global = usePluginData('docusaurus-plugin-content-docs', 'default') as GlobalPluginData; + React.useEffect(() => { + const controller = new AbortController(); + const check = async () => { + const pIndex = await fetch( + `${siteConfig.baseUrl}tdev-artifacts/page-progress-state/pageIndex.json`, + { signal: controller.signal } + ) + .then((res) => res.json()) + .catch(() => null); + if (controller.signal.aborted || !pIndex) { + return; + } + const hash = await hasher.toHash(pIndex); + if (controller.signal.aborted) { + return; + } + if (!devHash) { + devHash = hash; + return; + } + if (devHash !== hash) { + devHash = hash; + pageStore.loadPageIndex(true); + } + }; + check(); + return () => { + controller.abort(); + }; + }, [global]); + return null; +}); function Root({ children }: { children: React.ReactNode }) { const { siteConfig } = useDocusaurusContext(); @@ -202,6 +245,7 @@ function Root({ children }: { children: React.ReactNode }) { )} {SENTRY_DSN && } + {children} From c247a64db634c1aa9a0bc8ba54e42d9a7e89367f Mon Sep 17 00:00:00 2001 From: bh0fer Date: Mon, 2 Feb 2026 23:50:03 +0100 Subject: [PATCH 29/49] add totalSteps to progress_state docs --- src/api/document.ts | 1 + src/models/documents/ProgressState/index.ts | 47 ++++++++++--------- .../DocSidebarItem/TaskableState/index.tsx | 5 +- src/theme/DocSidebarItem/index.tsx | 2 +- src/theme/DocSidebarItem/styles.module.scss | 1 + 5 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/api/document.ts b/src/api/document.ts index b38a01558..a67662e3f 100644 --- a/src/api/document.ts +++ b/src/api/document.ts @@ -85,6 +85,7 @@ export interface TaskStateData { } export interface ProgressStateData { progress: number; + totalSteps: number; } export interface MdxCommentData { diff --git a/src/models/documents/ProgressState/index.ts b/src/models/documents/ProgressState/index.ts index a4b85381b..294713c9b 100644 --- a/src/models/documents/ProgressState/index.ts +++ b/src/models/documents/ProgressState/index.ts @@ -53,13 +53,15 @@ export class ModelMeta extends TypeMeta<'progress_state'> { get defaultData(): TypeDataMapping['progress_state'] { return { - progress: this.default + progress: this.default, + totalSteps: Math.max(this.default, 1) }; } } class ProgressState extends iDocument<'progress_state'> implements iTaskableDocument<'progress_state'> { @observable accessor _progress: number = 0; + @observable accessor _totalSteps: number = 0; @observable accessor _viewedIndex: number | undefined = undefined; @observable accessor scrollTo: boolean = false; @observable accessor hoveredIndex: number | undefined = undefined; @@ -70,6 +72,7 @@ class ProgressState extends iDocument<'progress_state'> implements iTaskableDocu constructor(props: DocumentProps<'progress_state'>, store: DocumentStore) { super(props, store); this._progress = props.data?.progress ?? 0; + this.setTotalSteps(Math.max(props.data?.totalSteps ?? 1, props.data?.progress ?? 0, 1), true); } get canStepBack(): boolean { @@ -92,19 +95,19 @@ class ProgressState extends iDocument<'progress_state'> implements iTaskableDocu } @action - setData(data: TypeDataMapping['progress_state'], from: Source, updatedAt?: Date): void { + setData(data: Partial, from: Source, updatedAt?: Date): void { if (!RWAccess.has(this.root?.permission)) { return; } - const { progress } = data; + const { progress, totalSteps } = data; if (progress && !this.steps[progress]?.canToggleContent && this.progress + 1 !== progress) { return; } - if (!this.canStepBack && progress < this.progress) { - return; + if (progress !== undefined && (this.canStepBack || progress > this.progress)) { + this._progress = progress; } - if (data.progress !== undefined) { - this._progress = data.progress; + if (totalSteps !== undefined) { + this.setTotalSteps(totalSteps, true); } if (from === Source.LOCAL) { @@ -117,7 +120,8 @@ class ProgressState extends iDocument<'progress_state'> implements iTaskableDocu get data(): TypeDataMapping['progress_state'] { return { - progress: this._progress + progress: this._progress, + totalSteps: this._totalSteps }; } @@ -151,21 +155,19 @@ class ProgressState extends iDocument<'progress_state'> implements iTaskableDocu @computed get totalSteps(): number { - return ( - this.steps.length || - ( - (this.root?.documents || []).find( - (ps) => ps.type === 'progress_state' && ps?.steps.length > 0 - ) as ProgressState | undefined - )?.steps?.length || - 0 - ); + return Math.max(this._totalSteps, 1, this.progress); } @action - setTotalSteps(totalSteps: number) { - if (this.totalSteps !== totalSteps && totalSteps > 0) { - this.steps.replace(Array.from({ length: totalSteps }, (_, i) => new Step(i, this))); + setTotalSteps(totalSteps: number, skipSave: boolean = false) { + const skip = this._totalSteps !== 0 && this.totalSteps === totalSteps; + if (totalSteps < 1 || skip) { + return; + } + this._totalSteps = totalSteps; + this.steps.replace(Array.from({ length: totalSteps }, (_, i) => new Step(i, this))); + if (!skipSave) { + this.saveNow(); } } @@ -176,6 +178,9 @@ class ProgressState extends iDocument<'progress_state'> implements iTaskableDocu @computed get isDone(): boolean { + if (!this.totalSteps) { + return false; + } return this.progress > 0 && this.progress >= this.totalSteps; } @@ -220,7 +225,7 @@ class ProgressState extends iDocument<'progress_state'> implements iTaskableDocu @computed get progress(): number { - return this.derivedData.progress ?? this.meta.default; + return this._progress ?? this.meta.default; } @computed diff --git a/src/theme/DocSidebarItem/TaskableState/index.tsx b/src/theme/DocSidebarItem/TaskableState/index.tsx index f602fc6a7..236dd9dd3 100644 --- a/src/theme/DocSidebarItem/TaskableState/index.tsx +++ b/src/theme/DocSidebarItem/TaskableState/index.tsx @@ -4,7 +4,7 @@ import styles from './styles.module.scss'; import { observer } from 'mobx-react-lite'; import Page from '@tdev-models/Page'; import Icon from '@mdi/react'; -import { mdiCheckCircle, mdiProgressQuestion } from '@mdi/js'; +import useIsBrowser from '@docusaurus/useIsBrowser'; interface Props { page?: Page; @@ -13,7 +13,8 @@ interface Props { const TaskableState = observer((props: Props) => { const { page } = props; - if (!page || page.totalSteps === 0) { + const isBrowser = useIsBrowser(); + if (!isBrowser || !page || page.totalSteps === 0) { return null; } diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index e02599289..43cbbd555 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -21,8 +21,8 @@ const DocSidebarItemWrapper = observer((props: Props): ReactNode => { const page = pageStore.pages.find((p) => p.path === path); return (
- +
); }); diff --git a/src/theme/DocSidebarItem/styles.module.scss b/src/theme/DocSidebarItem/styles.module.scss index c9228be94..4de42addf 100644 --- a/src/theme/DocSidebarItem/styles.module.scss +++ b/src/theme/DocSidebarItem/styles.module.scss @@ -4,6 +4,7 @@ position: absolute; right: 0.5em; top: 0; + z-index: 0; &.category { right: 3em; } From 8e2598fdbd95b1f65524cc22d5aaa5bd3a213d4c Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 3 Feb 2026 07:02:29 +0100 Subject: [PATCH 30/49] rm unused state --- src/components/EditingOverview/EditingStateList.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/EditingOverview/EditingStateList.tsx b/src/components/EditingOverview/EditingStateList.tsx index a17329eeb..1d1135dd6 100644 --- a/src/components/EditingOverview/EditingStateList.tsx +++ b/src/components/EditingOverview/EditingStateList.tsx @@ -29,7 +29,6 @@ const EditingStateList = observer((props: Props) => { userStore.switchUser(es.authorId); } }} - title={`${es.type}: ${es.documentRootId} - ${es.id}`} > From 795354153df2e8301468b450640ed5c52b2fef31 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Tue, 3 Feb 2026 07:11:15 +0100 Subject: [PATCH 31/49] rm meta display --- src/theme/DocItem/Content/index.tsx | 18 +-------------- .../answer/task-state/index.mdx | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx index 4447539a4..b8cb753cb 100644 --- a/src/theme/DocItem/Content/index.tsx +++ b/src/theme/DocItem/Content/index.tsx @@ -21,23 +21,7 @@ const ContentWrapper = observer((props: Props): React.ReactNode => { }; }, [pageStore.current, location.pathname]); - return ( - <> -
-                
-                    {JSON.stringify(
-                        pageStore.current?.taskableDocuments.map(
-                            (doc) =>
-                                `[${doc.root?.pagePositions.get(pageStore.current?.path!)}] ${doc.type}@${doc.progress}/${doc.totalSteps} - ${doc.documentRootId}::${doc.id}`
-                        ) || {},
-                        null,
-                        2
-                    )}
-                
-            
- - - ); + return ; }); export default ContentWrapper; diff --git a/tdev-website/docs/gallery/persistable-documents/answer/task-state/index.mdx b/tdev-website/docs/gallery/persistable-documents/answer/task-state/index.mdx index 87a07e9d3..32bcab97f 100644 --- a/tdev-website/docs/gallery/persistable-documents/answer/task-state/index.mdx +++ b/tdev-website/docs/gallery/persistable-documents/answer/task-state/index.mdx @@ -69,7 +69,8 @@ TaskState kann nicht verändert werden, wenn `readonly` gesetzt wurde. ```md ``` - - + + From 644e033b5b41e94befc00649b93a1683fe14f793 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 12:45:55 +0100 Subject: [PATCH 32/49] support taskable actions through frontmatter --- src/models/Page.ts | 21 ++++++- src/stores/PageStore.ts | 60 ++++++++++++++----- .../DocSidebarItem/TaskableState/index.tsx | 13 +++- src/theme/DocSidebarItem/index.tsx | 6 +- 4 files changed, 81 insertions(+), 19 deletions(-) diff --git a/src/models/Page.ts b/src/models/Page.ts index 625c4df49..ff285ae8d 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -3,7 +3,7 @@ */ import { action, computed, observable, ObservableMap } from 'mobx'; -import { PageStore } from '@tdev-stores/PageStore'; +import { AUTO_GENERATED_PAGE_PREFIX, PageStore } from '@tdev-stores/PageStore'; import _ from 'es-toolkit/compat'; import iDocument from '@tdev-models/iDocument'; import StudentGroup from '@tdev-models/StudentGroup'; @@ -47,9 +47,14 @@ export default class Page { ); } + @computed + get isAutoGenerated() { + return this.id.startsWith(AUTO_GENERATED_PAGE_PREFIX); + } + @computed get isLandingpage() { - return this.store.sidebarVersions.some((version) => version.entryPath === this.path); + return this.store.sidebarVersions.some((version) => version.rootPaths.includes(this.path)); } @computed @@ -205,9 +210,19 @@ export default class Page { }); } + @computed + get stepsOnPage(): number { + return this.taskableDocuments.length; + } + + @computed + get stepsOnDirectSubPages(): number { + return this.subPages.reduce((sum, page) => sum + page.stepsOnPage, 0); + } + @computed get totalSteps(): number { - return this.taskableDocuments.length + this.subPages.reduce((sum, page) => sum + page.totalSteps, 0); + return this.stepsOnPage + this.subPages.reduce((sum, page) => sum + page.totalSteps, 0); } @computed diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 5b014a041..481d053de 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -12,18 +12,30 @@ import globalData from '@generated/globalData'; const ensureTrailingSlash = (str: string) => { return str.endsWith('/') ? str : `${str}/`; }; +export const AUTO_GENERATED_PAGE_PREFIX = '__auto_generated__'; export const SidebarVersions = ( globalData['docusaurus-plugin-content-docs'].default as GlobalPluginData ).versions.map((version) => { - const { mainDocId } = version; - const mainDoc = version.docs.find((doc) => doc.id === mainDocId); + const versionPath = ensureTrailingSlash(version.path); + const slashCount = version.path.split('/').length + 1; + const rdocs = version.docs.filter( + (doc) => + doc.path.startsWith(version.path) && doc.path.replace(/\/$/, '').split('/').length === slashCount + ); return { name: version.name, - entryPath: ensureTrailingSlash(mainDoc!.path), - versionPath: ensureTrailingSlash(version.path) + rootPaths: rdocs.map((doc) => ensureTrailingSlash(doc.path)), + versionPath: versionPath }; }); +const getPathTree = (pagePath: string) => { + const parts = pagePath.split('/').filter((p) => p.length > 0); + return parts.map((_, idx) => { + return `/${parts.slice(0, idx + 1).join('/')}/`; + }); +}; + interface PagesIndex { documentRoots: PageIndex[]; } @@ -55,19 +67,32 @@ export class PageStore extends iStore { @computed get tree() { return SidebarVersions.map((version) => { - if (version.entryPath === version.versionPath) { - const rootLandingPage = this.pages.find((page) => page.path === version.entryPath); - return { - version: version.name, - path: version.versionPath, - pages: [rootLandingPage!.tree] - }; - } - const pages = this.pages.filter((page) => page.parentPath === version.versionPath); return { version: version.name, path: version.versionPath, - pages: pages.map((page) => page.tree) + pages: version.rootPaths.map((rootPath) => { + const rootLandingPage = this.pages.find((page) => page.path === rootPath); + console.log( + 'Looking for landing page for root path', + rootPath, + rootLandingPage, + this.pages.map((p) => p.path) + ); + if (rootLandingPage) { + console.log('Found landing page for root path', rootPath); + return { + version: version.name, + path: rootPath, + pages: [rootLandingPage.tree] + }; + } + const pages = this.pages.filter((page) => page.parentPath === rootPath); + return { + version: version.name, + path: rootPath, + pages: pages.map((page) => page.tree) + }; + }) }; }); } @@ -92,6 +117,13 @@ export class PageStore extends iStore { .forEach((d) => page.addDocumentRootConfig(d.id, d)); return page; }); + const addedPaths = new Set(pages.map((p) => p.path)); + const fullTree = new Set(pages.flatMap((p) => getPathTree(p.path))); + const missingPaths = Array.from(fullTree).filter((p) => !addedPaths.has(p)); + missingPaths.forEach((path) => { + const page = new Page(`${AUTO_GENERATED_PAGE_PREFIX}${path}`, path, this); + pages.push(page); + }); this.pages.replace(pages); this._pageIndex = data.documentRoots; }) diff --git a/src/theme/DocSidebarItem/TaskableState/index.tsx b/src/theme/DocSidebarItem/TaskableState/index.tsx index 236dd9dd3..01c6846e8 100644 --- a/src/theme/DocSidebarItem/TaskableState/index.tsx +++ b/src/theme/DocSidebarItem/TaskableState/index.tsx @@ -9,12 +9,23 @@ import useIsBrowser from '@docusaurus/useIsBrowser'; interface Props { page?: Page; className?: string; + forcedAction?: 'show' | 'hide'; } const TaskableState = observer((props: Props) => { const { page } = props; const isBrowser = useIsBrowser(); - if (!isBrowser || !page || page.totalSteps === 0) { + const forceHide = props.forcedAction === 'hide'; + if (forceHide) { + return null; + } + + if (!isBrowser || !page) { + return null; + } + const forceShow = props.forcedAction === 'show'; + + if (!forceShow && page.stepsOnPage === 0 && page.stepsOnDirectSubPages === 0) { return null; } diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index 43cbbd555..ddb97aa62 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -22,7 +22,11 @@ const DocSidebarItemWrapper = observer((props: Props): ReactNode => { return (
- +
); }); From 37c78878fa108f20f2783dbfbabe371b566e87d4 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 13:07:47 +0100 Subject: [PATCH 33/49] add docs --- packages/tdev/page-progress-state/README.mdx | 17 +++++- src/components/Demo/index.tsx | 60 -------------------- tdev-website/docs/gallery/index.mdx | 2 + 3 files changed, 18 insertions(+), 61 deletions(-) delete mode 100644 src/components/Demo/index.tsx diff --git a/packages/tdev/page-progress-state/README.mdx b/packages/tdev/page-progress-state/README.mdx index c4e9aa7f9..56ed7c643 100644 --- a/packages/tdev/page-progress-state/README.mdx +++ b/packages/tdev/page-progress-state/README.mdx @@ -3,9 +3,24 @@ page_id: cfbd9607-c2d5-4c2a-82e0-9f39c5756747 tags: - '@tdev/' --- -import { Comp } from '@tdev-components/Demo'; + +import { useStore } from '@tdev-hooks/useStore' # page-progress-state +Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann der Bearbeitungsstand in der Seitenleiste angezeigt werden. + + +export const Comp = observer(() => { + const pageStore = useStore('pageStore'); + + return ( +
+ {JSON.stringify(pageStore.tree, null, 2)}; +
+ ); +}); + + diff --git a/src/components/Demo/index.tsx b/src/components/Demo/index.tsx deleted file mode 100644 index 239039a48..000000000 --- a/src/components/Demo/index.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; -import CodeBlock from '@theme/CodeBlock'; -import { observer } from 'mobx-react-lite'; -import { useStore } from '@tdev-hooks/useStore'; - -export const Comp = observer(() => { - const documentRootStore = useStore('documentRootStore'); - const pageStore = useStore('pageStore'); - - return ( -
- - {JSON.stringify( - pageStore.pages - .filter((p) => p.editingStateV2.length) - .map((p) => [ - p.id, - p.path, - [ - ...p.editingStateV2.map( - (s) => - `${s.type}:${s.isDone}->${p.documentRootConfigs.get(s.documentRootId)?.position ?? '?'} ${s.documentRootId}::${s.id}` - ) - ] - ]), - null, - 2 - )} - - - {JSON.stringify( - documentRootStore.documentRoots.map((d) => [ - d.id, - d.mainDocuments.map((d) => d.type), - [...d.pagePositions.entries()] - ]), - null, - 2 - )} - - - {JSON.stringify(documentRootStore.defaultMetas.map((m) => m.type))} - - - {JSON.stringify( - pageStore.pages - .filter((p) => p.taskableDocumentRootIds.length > 0) - .map((p) => ({ - path: p.path, - rids: p.taskableDocumentRootIds, - docs: p.taskableDocuments.map((d) => d.id) - })), - null, - 2 - )} - - {JSON.stringify(pageStore.tree, null, 2)}; -
- ); -}); diff --git a/tdev-website/docs/gallery/index.mdx b/tdev-website/docs/gallery/index.mdx index 9db261516..8d39e922e 100644 --- a/tdev-website/docs/gallery/index.mdx +++ b/tdev-website/docs/gallery/index.mdx @@ -1,5 +1,7 @@ --- page_id: 824c958f-b229-4fae-b333-be084a939664 +sidebar_custom_props: + taskable_state: 'show' --- import DocCardList from '@theme/DocCardList'; From 85a6c32296fc990fe4017cfefb66ef2f6603ac4b Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 15:00:10 +0100 Subject: [PATCH 34/49] derive tdev root path --- packages/tdev/page-progress-state/README.mdx | 80 ++++++++++++++++++- .../remark-plugin/index.ts | 8 +- .../tdev/page-progress-state/utils/options.ts | 7 ++ src/siteConfig/markdownPluginConfigs.ts | 9 +-- 4 files changed, 92 insertions(+), 12 deletions(-) diff --git a/packages/tdev/page-progress-state/README.mdx b/packages/tdev/page-progress-state/README.mdx index 56ed7c643..4232fbb8b 100644 --- a/packages/tdev/page-progress-state/README.mdx +++ b/packages/tdev/page-progress-state/README.mdx @@ -5,10 +5,12 @@ tags: --- import { useStore } from '@tdev-hooks/useStore' +import { observer } from 'mobx-react-lite'; +import CodeBlock from '@theme/CodeBlock'; # page-progress-state -Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann der Bearbeitungsstand in der Seitenleiste angezeigt werden. +Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann bspw. der Bearbeitungsstand in der Seitenleiste angezeigt werden. export const Comp = observer(() => { @@ -21,6 +23,80 @@ export const Comp = observer(() => { ); }); + - +## Installation + + +:::details[remark config] +```ts +import pageProgressStatePlugin from '@tdev/page-progress-state/remark-plugin'; + +export const pageProgressStatePluginConfig = [ + pageProgressStatePlugin, + { + components: [ + { + name: 'Answer', + docTypeExtractor: (node: MdxJsxFlowElement) => + getAnswerDocumentType( + node.attributes.find((a) => a.type === 'mdxJsxAttribute' && a.name === 'type') + ?.value as string + ) || 'unknown' + }, + { + name: 'ProgressState', + docTypeExtractor: () => 'progress_state' + }, + { + name: 'TaskState', + docTypeExtractor: () => 'task_state' + }, + { + name: 'QuillV2', + docTypeExtractor: () => 'quill_v2' + }, + { + name: 'String', + docTypeExtractor: () => 'string' + }, + { + name: 'CmsText', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'CmsCode', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'Restricted', + docTypeExtractor: () => 'restricted' + }, + { + name: 'DynamicDocumentRoots', + docTypeExtractor: () => 'dynamic_document_roots' + } + ], + persistedCodeType: (node: Code) => { + if (node.lang === 'html') { + return 'script'; + } + const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); + const liveCode = liveLangMatch ? liveLangMatch[1] : null; + + switch (liveCode) { + case 'live_py': + case 'live_bry': + // legacy name, TODO. should be 'brython_code'? + return 'script'; + case 'live_pyo': + return 'pyodide_code'; + default: + return 'code'; + } + } + } +]; +``` +::: \ No newline at end of file diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-progress-state/remark-plugin/index.ts index d42173b60..5a67a6407 100644 --- a/packages/tdev/page-progress-state/remark-plugin/index.ts +++ b/packages/tdev/page-progress-state/remark-plugin/index.ts @@ -5,7 +5,10 @@ import path from 'path'; import db from '../utils/db'; import { exportDB } from '../utils/exportDb'; import { debounce } from 'es-toolkit/function'; +import { tdevRoot } from '../utils/options'; +const TdevRoot = `${tdevRoot === '' ? '' : '/'}${tdevRoot}`; +const TdevRootRegex = new RegExp(`^${TdevRoot}`); const projectRoot = process.cwd(); const isDev = process.env.NODE_ENV !== 'production'; @@ -63,11 +66,10 @@ const scheduleExportDb = debounce( * custom MDX components by converting the code content into attributes. */ const remarkPlugin: Plugin = function plugin( - options = { components: [], persistedCodeType: () => 'code', docsParentDir: '' } + options = { components: [], persistedCodeType: () => 'code' } ): Transformer { const { components } = options; const mdxJsxComponents = new Map(components.map((c) => [c.name, c])); - const replaceStart = new RegExp(`^${options.docsParentDir}`); return async (root, file) => { const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; if (components.length < 1 || !page_id) { @@ -77,7 +79,7 @@ const remarkPlugin: Plugin = function plugin( const filePath = `/${path.relative(projectRoot, file.path)}` .replace(/\/(index|README)\.mdx?$/i, '/') .replace(/\.mdx?$/i, '/') - .replace(replaceStart, '') + .replace(TdevRootRegex, '') .replace(/^\/versioned_docs\/version-/, '/'); slugCountMap.set(filePath, 1); diff --git a/packages/tdev/page-progress-state/utils/options.ts b/packages/tdev/page-progress-state/utils/options.ts index 420ea7416..61acd8b13 100644 --- a/packages/tdev/page-progress-state/utils/options.ts +++ b/packages/tdev/page-progress-state/utils/options.ts @@ -1,5 +1,12 @@ +require('dotenv').config(); import path from 'path'; import { PluginName } from '..'; +const cwd = process.cwd(); +export const tdevRoot = path + .relative(cwd, process.env.SITE_CONFIG_PATH ?? './siteConfig') + .split(path.sep) + .slice(0, -1) + .join(path.sep); // current file's directory: export const pluginRootDir = path.dirname(new URL(import.meta.url).pathname); diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index 79f0edeb7..b7ae26bb4 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -1,7 +1,7 @@ import type { Code, Node } from 'mdast'; import path from 'path'; import type { LeafDirective } from 'mdast-util-directive'; -import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx'; +import type { MdxJsxFlowElement } from 'mdast-util-mdx-jsx'; import strongPlugin, { transformer as captionVisitor } from '../plugins/remark-strong/plugin'; import deflistPlugin from '../plugins/remark-deflist/plugin'; import mdiPlugin from '../plugins/remark-mdi/plugin'; @@ -137,10 +137,6 @@ export const enumerateAnswersPluginConfig = [ export const pdfPluginConfig = pdfPlugin; -const cwd = process.cwd(); -const indexPath = path.resolve(cwd, './src/.page-index'); -const ComponentsWithId = new Set(['TaskState', 'ProgressState']); -const AnswerTypes = new Set(['state', 'progress']); export const pagePluginConfig = [pagePlugin, {}]; export const pageProgressStatePluginConfig = [ @@ -205,8 +201,7 @@ export const pageProgressStatePluginConfig = [ default: return 'code'; } - }, - docsParentDir: '/tdev-website' + } } ]; From 0368e23bfae09744bdaf580513fccd75ed7e06f0 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 16:11:14 +0100 Subject: [PATCH 35/49] refactor: rename to @tdev/page-index --- docusaurus.config.ts | 4 +- .../.gitignore | 0 .../README.mdx | 4 +- .../index.ts | 0 .../package.json | 2 +- .../plugin.ts | 4 +- .../remark-plugin/index.ts | 0 .../tsconfig.json | 0 .../utils/db.ts | 0 .../utils/exportDb.ts | 0 .../utils/options.ts | 0 src/siteConfig/markdownPluginConfigs.ts | 3 +- src/stores/PageStore.ts | 2 +- yarn.lock | 174 +++++++++--------- 14 files changed, 96 insertions(+), 97 deletions(-) rename packages/tdev/{page-progress-state => page-index}/.gitignore (100%) rename packages/tdev/{page-progress-state => page-index}/README.mdx (96%) rename packages/tdev/{page-progress-state => page-index}/index.ts (100%) rename packages/tdev/{page-progress-state => page-index}/package.json (87%) rename packages/tdev/{page-progress-state => page-index}/plugin.ts (90%) rename packages/tdev/{page-progress-state => page-index}/remark-plugin/index.ts (100%) rename packages/tdev/{page-progress-state => page-index}/tsconfig.json (100%) rename packages/tdev/{page-progress-state => page-index}/utils/db.ts (100%) rename packages/tdev/{page-progress-state => page-index}/utils/exportDb.ts (100%) rename packages/tdev/{page-progress-state => page-index}/utils/options.ts (100%) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 8b922d75f..29c9c051b 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -32,7 +32,7 @@ import { socketIoNoDepWarningsPluginConfig, aliasConfigurationPlugin } from './src/siteConfig/pluginConfigs'; -import persistableDocuments from './packages/tdev/page-progress-state/plugin'; +import pageIndexPlugin from './packages/tdev/page-index/plugin'; import { useTdevContentPath } from './src/siteConfig/helpers'; import path from 'path'; import { @@ -385,7 +385,7 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => { } ], ...((siteConfig.plugins as Config['plugins']) || []), - persistableDocuments + pageIndexPlugin ], themes: [ '@docusaurus/theme-mermaid', diff --git a/packages/tdev/page-progress-state/.gitignore b/packages/tdev/page-index/.gitignore similarity index 100% rename from packages/tdev/page-progress-state/.gitignore rename to packages/tdev/page-index/.gitignore diff --git a/packages/tdev/page-progress-state/README.mdx b/packages/tdev/page-index/README.mdx similarity index 96% rename from packages/tdev/page-progress-state/README.mdx rename to packages/tdev/page-index/README.mdx index 4232fbb8b..0a503f871 100644 --- a/packages/tdev/page-progress-state/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -8,7 +8,7 @@ import { useStore } from '@tdev-hooks/useStore' import { observer } from 'mobx-react-lite'; import CodeBlock from '@theme/CodeBlock'; -# page-progress-state +# page-index Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann bspw. der Bearbeitungsstand in der Seitenleiste angezeigt werden. @@ -31,7 +31,7 @@ export const Comp = observer(() => { :::details[remark config] ```ts -import pageProgressStatePlugin from '@tdev/page-progress-state/remark-plugin'; +import pageProgressStatePlugin from '@tdev/page-index/remark-plugin'; export const pageProgressStatePluginConfig = [ pageProgressStatePlugin, diff --git a/packages/tdev/page-progress-state/index.ts b/packages/tdev/page-index/index.ts similarity index 100% rename from packages/tdev/page-progress-state/index.ts rename to packages/tdev/page-index/index.ts diff --git a/packages/tdev/page-progress-state/package.json b/packages/tdev/page-index/package.json similarity index 87% rename from packages/tdev/page-progress-state/package.json rename to packages/tdev/page-index/package.json index 93c593671..bb136bfe4 100644 --- a/packages/tdev/page-progress-state/package.json +++ b/packages/tdev/page-index/package.json @@ -1,5 +1,5 @@ { - "name": "@tdev/page-progress-state", + "name": "@tdev/page-index", "version": "1.0.0", "main": "index.ts", "types": "index.ts", diff --git a/packages/tdev/page-progress-state/plugin.ts b/packages/tdev/page-index/plugin.ts similarity index 90% rename from packages/tdev/page-progress-state/plugin.ts rename to packages/tdev/page-index/plugin.ts index 1f8616c7a..6715a7a26 100644 --- a/packages/tdev/page-progress-state/plugin.ts +++ b/packages/tdev/page-index/plugin.ts @@ -7,7 +7,7 @@ import { pageIndexPath } from './utils/options'; const isDev = process.env.NODE_ENV !== 'production'; -const persistableDocuments: PluginModule = (context: LoadContext) => { +const pageIndexPlugin: PluginModule = (context: LoadContext) => { const config: Plugin<{}> = { name: PluginName, async allContentLoaded() { @@ -32,4 +32,4 @@ const persistableDocuments: PluginModule = (context: LoadContext) => { return config as Plugin; }; -export default persistableDocuments; +export default pageIndexPlugin; diff --git a/packages/tdev/page-progress-state/remark-plugin/index.ts b/packages/tdev/page-index/remark-plugin/index.ts similarity index 100% rename from packages/tdev/page-progress-state/remark-plugin/index.ts rename to packages/tdev/page-index/remark-plugin/index.ts diff --git a/packages/tdev/page-progress-state/tsconfig.json b/packages/tdev/page-index/tsconfig.json similarity index 100% rename from packages/tdev/page-progress-state/tsconfig.json rename to packages/tdev/page-index/tsconfig.json diff --git a/packages/tdev/page-progress-state/utils/db.ts b/packages/tdev/page-index/utils/db.ts similarity index 100% rename from packages/tdev/page-progress-state/utils/db.ts rename to packages/tdev/page-index/utils/db.ts diff --git a/packages/tdev/page-progress-state/utils/exportDb.ts b/packages/tdev/page-index/utils/exportDb.ts similarity index 100% rename from packages/tdev/page-progress-state/utils/exportDb.ts rename to packages/tdev/page-index/utils/exportDb.ts diff --git a/packages/tdev/page-progress-state/utils/options.ts b/packages/tdev/page-index/utils/options.ts similarity index 100% rename from packages/tdev/page-progress-state/utils/options.ts rename to packages/tdev/page-index/utils/options.ts diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index b7ae26bb4..14b188387 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -1,5 +1,4 @@ import type { Code, Node } from 'mdast'; -import path from 'path'; import type { LeafDirective } from 'mdast-util-directive'; import type { MdxJsxFlowElement } from 'mdast-util-mdx-jsx'; import strongPlugin, { transformer as captionVisitor } from '../plugins/remark-strong/plugin'; @@ -15,7 +14,7 @@ import linkAnnotationPlugin from '../plugins/remark-link-annotation/plugin'; import mediaPlugin from '../plugins/remark-media/plugin'; import detailsPlugin from '../plugins/remark-details/plugin'; import pagePlugin from '../plugins/remark-page/plugin'; -import pageProgressStatePlugin from '@tdev/page-progress-state/remark-plugin'; +import pageProgressStatePlugin from '@tdev/page-index/remark-plugin'; import graphvizPlugin from '@tdev/remark-graphviz/remark-plugin'; import pdfPlugin from '@tdev/remark-pdf/remark-plugin'; import codeAsAttributePlugin from '../plugins/remark-code-as-attribute/plugin'; diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 481d053de..158e96a61 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -6,7 +6,7 @@ import { computedFn } from 'mobx-utils'; import { allDocuments as apiAllDocuments, DocumentType } from '@tdev-api/document'; import type { GlobalPluginData } from '@docusaurus/plugin-content-docs/client'; import siteConfig from '@generated/docusaurus.config'; -import { PageIndex } from '@tdev/page-progress-state'; +import { PageIndex } from '@tdev/page-index'; import { groupBy } from 'es-toolkit/array'; import globalData from '@generated/globalData'; const ensureTrailingSlash = (str: string) => { diff --git a/yarn.lock b/yarn.lock index 38adad821..b4e17c3cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2990,9 +2990,9 @@ "@hapi/hoek" "^9.0.0" "@hpcc-js/wasm-graphviz@^1.7.0": - version "1.20.1" - resolved "https://registry.yarnpkg.com/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.20.1.tgz#f31016380418beeef9ed18837714a9046d3f0772" - integrity sha512-F4ga7c4vXfmBRwORJI9QeAW4n9Rbzqc0o+0sB0CsbL5n1E1Gxhb6EWq/M5ya0z/KpSOs3LvxLKc8yoJB9QBa6w== + version "1.21.0" + resolved "https://registry.yarnpkg.com/@hpcc-js/wasm-graphviz/-/wasm-graphviz-1.21.0.tgz#1b7dd35aae704cf063a0b2089ea5b63efc5b798a" + integrity sha512-BQ06v/foSTxtwUyIdJYRz+S++/fHQuPVsFmX+pI3G66cANi1mQvsgToaN5deZ6ALEDUHsfHVMYlowNiimoET5g== "@iconify/types@^2.0.0": version "2.0.0" @@ -3462,9 +3462,9 @@ lexical "0.35.0" "@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1", "@lezer/common@^1.3.0", "@lezer/common@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.0.tgz#db227b596260189b67ba286387d9dc81fb07c70b" - integrity sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.1.tgz#6e8c114ff5d36a41148e146a253734d3bb8807d3" + integrity sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw== "@lezer/cpp@^1.0.0": version "1.1.5" @@ -5062,81 +5062,81 @@ fs-extra "^11.1.1" lodash "^4.17.21" -"@rspack/binding-darwin-arm64@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.4.tgz#d55216bb06bd39607846227891194ae7c6b16586" - integrity sha512-d4FTW/TkqvU9R1PsaK2tbLG1uY0gAlxy3rEiQYrFRAOVTMOFkPasypmvhwD5iWrPIhkjIi79IkgrSzRJaP2ZwA== +"@rspack/binding-darwin-arm64@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.5.tgz#5adad9b17d4a29c62d239bfac653b71e7d755b61" + integrity sha512-dg2/IrF+g498NUt654N8LFWfIiUsHlTankWieE1S3GWEQM6jweeRbNuu1Py1nWIUsjR2yQtv7ziia7c9Q8UTaQ== -"@rspack/binding-darwin-x64@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.4.tgz#bf9046b2bfc6e93daa7ae26ddd88a284fa7ec24e" - integrity sha512-Oq65S5szs3+In9hVWfPksdL6EUu1+SFZK3oQINP3kMJ5zPzrdyiue+L5ClpTU/VMKVxfQTdCBsI6OVJNnaLBiA== +"@rspack/binding-darwin-x64@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.5.tgz#bfa31b9bdcea5238babf0914289ad4227a4eabdb" + integrity sha512-RQJX4boQJUu3lo1yiN344+y8W6iSO08ARXIZqFPg66coOgfX1lhsXQSRJGQEQG4PAcYuC0GmrYFzErliifbc1Q== -"@rspack/binding-linux-arm64-gnu@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.4.tgz#9e4c85f78744708c464ee1bec7a4cdf307e6c460" - integrity sha512-sTpfCraAtYZBhdw9Xx5a19OgJ/mBELTi61utZzrO3bV6BFEulvOdmnNjpgb0xv1KATtNI8YxECohUzekk1WsOA== +"@rspack/binding-linux-arm64-gnu@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.5.tgz#2f3705a444911602619f48c2aac7a92205b9de8a" + integrity sha512-R7CO1crkJQLIQpJQzf+6DMHjvcvH/VxsatS5CG897IIT2aAfBeQuQAO+ERJko/UwSZam2K8Rxjuopcu5A2jsTQ== -"@rspack/binding-linux-arm64-musl@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.4.tgz#86cc2b029e257d17a36d8d77f84fce280510b08f" - integrity sha512-sw8jZbUe13Ry0/tnUt1pSdwkaPtSzKuveq+b6/CUT26I3DKfJQoG0uJbjj2quMe4ks3jDmoGlxuRe4D/fWUoSg== +"@rspack/binding-linux-arm64-musl@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.5.tgz#ac94268f78ffd818465a2ee1d626f5d349190f39" + integrity sha512-moDVFD06ISZi+wCIjJLzQSr8WO8paViacSHk+rOKQxwKI96cPoC4JFkz0+ibT2uks4i2ecs4Op48orsoguiXxw== -"@rspack/binding-linux-x64-gnu@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.4.tgz#d092e7b742c8a197873242db0f4a684186117b0a" - integrity sha512-1W6LU0wR/TxB+8pogt0pn0WRwbQmKfu9839p/VBuSkNdWR4aljAhYO6RxsLQLCLrDAqEyrpeYWsWJBvAJ4T/pA== +"@rspack/binding-linux-x64-gnu@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.5.tgz#69414ac99b79240d0148331bfd6579c3c669b85e" + integrity sha512-LGtdsdhtA5IxdMptj2NDVEbuZF4aqM99BVn3saHp92A4Fn20mW9UtQ+19PtaOFdbQBUN1GcP+cosrJ1wY56hOg== -"@rspack/binding-linux-x64-musl@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.4.tgz#4d442d348dc9426383276c9c379109ee9553466e" - integrity sha512-rkmu8qLnm/q8J14ZQZ04SnPNzdRNgzAoKJCTbnhCzcuL5k5e20LUFfGuS6j7Io1/UdVMOjz/u7R6b9h/qA1Scw== +"@rspack/binding-linux-x64-musl@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.5.tgz#a5b14a9a90e2400b85b2d13e83f379974356bd83" + integrity sha512-V1HTvuj0XF/e4Xnixqf7FrxdCtTkYqn26EKwH7ExUFuVBh4SsLGr29EK5SOXBG0xdy5TSEUokMup7cuONPb3Hw== -"@rspack/binding-wasm32-wasi@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.4.tgz#1347b1ab5e0238a0d12d1b268c2b01550eaf865f" - integrity sha512-6BQvLbDtUVkTN5o1QYLYKAYuXavC4ER5Vn/amJEoecbM9F25MNAv28inrXs7BQ4cHSU4WW/F4yZPGnA+jUZLyw== +"@rspack/binding-wasm32-wasi@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.5.tgz#4addba33fbc8ba100cf7c963e804c9659dd87618" + integrity sha512-rGNHrk2QuLFfwOTib91skuLh2aMYeTP4lgM4zanDhtt95DLDlwioETFY7FzY1WmS+Z3qnEyrgQIRp8osy0NKTw== dependencies: "@napi-rs/wasm-runtime" "1.0.7" -"@rspack/binding-win32-arm64-msvc@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.4.tgz#1ff4bc8b09a8ec443132965473135ad45798df74" - integrity sha512-kipggu7xVPhnAkAV7koSDVbBuuMDMA4hX60DNJKTS6fId3XNHcZqWKIsWGOt0yQ6KV7I3JRRBDotKLx6uYaRWw== +"@rspack/binding-win32-arm64-msvc@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.5.tgz#a2bac95fa670738dd2850bac0f56fc490a2b6aad" + integrity sha512-eLyD9URS9M2pYa7sPICu9S0OuDAMnnGfuqrZYlrtgnEOEgimaG39gX6ENLwHvlNulaVMMFTNbDnS/2MELZ7r7g== -"@rspack/binding-win32-ia32-msvc@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.4.tgz#142544e057662620a9f150754349c42ed6a06a5a" - integrity sha512-9Zdozc13AUQHqagDDHxHml1FnZZWuSj/uP+SxtlTlQaiIE9GDH3n0cUio1GUq+cBKbcXeiE3dJMGJxhiFaUsxA== +"@rspack/binding-win32-ia32-msvc@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.5.tgz#7256001750794aa3b14815cc460c43d621ac4bdb" + integrity sha512-ZT4eC8hHWzweA6S4Tl2c/z/fvhbU7Wnh+l76z+qmDy8wuA8uNrHgIb1mHLPli/wsqcjmIy8rDO9gkIBitg5I+w== -"@rspack/binding-win32-x64-msvc@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.4.tgz#744b06dd3706d0abbcbe4f8e3be7b8f3d1ccafd2" - integrity sha512-3a/jZTUrvU340IuRcxul+ccsDtdrMaGq/vi4HNcWalL0H2xeOeuieBAV8AZqaRjmxMu8OyRcpcSrkHtN1ol/eA== +"@rspack/binding-win32-x64-msvc@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.5.tgz#eb8bafd9011139478ce79bd4924e3c0e481a2faa" + integrity sha512-a2j10QS3dZvW+gdu+FXteAkChxsK2g9BRUOmpt13w22LkiGrdmOkMQyDWRgJNxUGJTlqIUqtXxs72nTTlzo2Sw== -"@rspack/binding@1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.4.tgz#c1a6f02124f447a8df19d2e536846592174b63dd" - integrity sha512-BOACDXd9aTrdJgqa88KGxnTGdUdVLAClTCLhSvdNvQZIcaVLOB1qtW0TvqjZ19MxuQB/Cba5u/ILc5DNXxuDhg== +"@rspack/binding@1.7.5": + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/binding/-/binding-1.7.5.tgz#33efebda1596936193a6a9a8cdfb289b03c4cbba" + integrity sha512-tlZfDHfGu765FBL3hIyjrr8slJZztv7rCM+KIczZS7UlJQDl1+WsDKUe/+E1Fw9SlmorLWK40+y3rLTHmMrN2A== optionalDependencies: - "@rspack/binding-darwin-arm64" "1.7.4" - "@rspack/binding-darwin-x64" "1.7.4" - "@rspack/binding-linux-arm64-gnu" "1.7.4" - "@rspack/binding-linux-arm64-musl" "1.7.4" - "@rspack/binding-linux-x64-gnu" "1.7.4" - "@rspack/binding-linux-x64-musl" "1.7.4" - "@rspack/binding-wasm32-wasi" "1.7.4" - "@rspack/binding-win32-arm64-msvc" "1.7.4" - "@rspack/binding-win32-ia32-msvc" "1.7.4" - "@rspack/binding-win32-x64-msvc" "1.7.4" + "@rspack/binding-darwin-arm64" "1.7.5" + "@rspack/binding-darwin-x64" "1.7.5" + "@rspack/binding-linux-arm64-gnu" "1.7.5" + "@rspack/binding-linux-arm64-musl" "1.7.5" + "@rspack/binding-linux-x64-gnu" "1.7.5" + "@rspack/binding-linux-x64-musl" "1.7.5" + "@rspack/binding-wasm32-wasi" "1.7.5" + "@rspack/binding-win32-arm64-msvc" "1.7.5" + "@rspack/binding-win32-ia32-msvc" "1.7.5" + "@rspack/binding-win32-x64-msvc" "1.7.5" "@rspack/core@^1.5.0": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.4.tgz#0fc0838d4589cf565b55cdb560d8914a365310de" - integrity sha512-6QNqcsRSy1WbAGvjA2DAEx4yyAzwrvT6vd24Kv4xdZHdvF6FmcUbr5J+mLJ1jSOXvpNhZ+RzN37JQ8fSmytEtw== + version "1.7.5" + resolved "https://registry.yarnpkg.com/@rspack/core/-/core-1.7.5.tgz#d19295b5c2f137d4458701cf6dc3cbd3f73708b7" + integrity sha512-W1ChLhjBxGg6y4AHjEVjhcww/FZJ2O9obR0EOlYcfrfQGojCAUMeQjbmaF2sse5g5m0vSCaPtNYkycZ0qVRk1A== dependencies: "@module-federation/runtime-tools" "0.22.0" - "@rspack/binding" "1.7.4" + "@rspack/binding" "1.7.5" "@rspack/lite-tapable" "1.1.0" "@rspack/lite-tapable@1.1.0": @@ -5305,9 +5305,9 @@ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== "@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + version "0.27.10" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6" + integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA== "@sindresorhus/is@^4.6.0": version "4.6.0" @@ -6215,9 +6215,9 @@ integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== "@types/react@*": - version "19.2.10" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.10.tgz#f3ea799e6b4cebad6dfd231c238fc9de7652e2d2" - integrity sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw== + version "19.2.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.11.tgz#301b615ec33df67f6b0ba63f2b6aedce46cca0de" + integrity sha512-tORuanb01iEzWvMGVGv2ZDhYZVeRMrw453DCSAIn/5yvcSVnMoUMTyf33nQJLahYEnv9xqrTNbgz4qY5EfSh0g== dependencies: csstype "^3.2.2" @@ -8551,9 +8551,9 @@ default-browser-id@^5.0.0: integrity sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q== default-browser@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.4.0.tgz#b55cf335bb0b465dd7c961a02cd24246aa434287" - integrity sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg== + version "5.5.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.5.0.tgz#2792e886f2422894545947cc80e1a444496c5976" + integrity sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw== dependencies: bundle-name "^4.1.0" default-browser-id "^5.0.0" @@ -8839,9 +8839,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.263: - version "1.5.283" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz#51d492c37c2d845a0dccb113fe594880c8616de8" - integrity sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w== + version "1.5.286" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz#142be1ab5e1cd5044954db0e5898f60a4960384e" + integrity sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A== elkjs@^0.9.0, elkjs@^0.9.3: version "0.9.3" @@ -8929,13 +8929,13 @@ enhanced-resolve@5.12.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enhanced-resolve@^5.17.4: - version "5.18.4" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" - integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== +enhanced-resolve@^5.19.0: + version "5.19.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz#6687446a15e969eaa63c2fa2694510e17ae6d97c" + integrity sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg== dependencies: graceful-fs "^4.2.4" - tapable "^2.2.0" + tapable "^2.3.0" entities@^2.0.0: version "2.2.0" @@ -16110,7 +16110,7 @@ warning@^4.0.0: dependencies: loose-envify "^1.0.0" -watchpack@^2.4.4: +watchpack@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102" integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg== @@ -16233,9 +16233,9 @@ webpack-virtual-modules@^0.5.0: integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== webpack@^5.88.1, webpack@^5.95.0: - version "5.104.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.104.1.tgz#94bd41eb5dbf06e93be165ba8be41b8260d4fb1a" - integrity sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA== + version "5.105.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.105.0.tgz#38b5e6c5db8cbe81debbd16e089335ada05ea23a" + integrity sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.8" @@ -16247,7 +16247,7 @@ webpack@^5.88.1, webpack@^5.95.0: acorn-import-phases "^1.0.3" browserslist "^4.28.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.4" + enhanced-resolve "^5.19.0" es-module-lexer "^2.0.0" eslint-scope "5.1.1" events "^3.2.0" @@ -16260,7 +16260,7 @@ webpack@^5.88.1, webpack@^5.95.0: schema-utils "^4.3.3" tapable "^2.3.0" terser-webpack-plugin "^5.3.16" - watchpack "^2.4.4" + watchpack "^2.5.1" webpack-sources "^3.3.3" webpackbar@^6.0.1: From 717bd9ec7f0bfc5a52cf319cf7cae28cb3b97928 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 16:42:03 +0100 Subject: [PATCH 36/49] update page tree --- packages/tdev/page-index/README.mdx | 29 ++++++++++++++++++++++++- src/models/Page.ts | 4 +++- src/siteConfig/markdownPluginConfigs.ts | 8 +++---- src/stores/PageStore.ts | 8 +------ 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/packages/tdev/page-index/README.mdx b/packages/tdev/page-index/README.mdx index 0a503f871..7cf0c6af4 100644 --- a/packages/tdev/page-index/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -12,7 +12,13 @@ import CodeBlock from '@theme/CodeBlock'; Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann bspw. der Bearbeitungsstand in der Seitenleiste angezeigt werden. +## Page index +Der Seitenindex ist ein Baum aller speicherbaren Dokumente in der aktuellen Seite. + +Im `dev`-Modus wird er automatisch aktualisiert, wenn sich die Seite ändert. + +:::details[Page Index] export const Comp = observer(() => { const pageStore = useStore('pageStore'); @@ -24,10 +30,25 @@ export const Comp = observer(() => { }); - +::: ## Installation +:::info[`docusaurus.config.ts`] +```ts +import pageIndexPlugin from './packages/tdev/page-index/plugin'; + +export default { + // ... + plugins: [ + // ... + pageIndexPlugin + ] +}; + +``` +::: + :::details[remark config] ```ts @@ -36,6 +57,9 @@ import pageProgressStatePlugin from '@tdev/page-index/remark-plugin'; export const pageProgressStatePluginConfig = [ pageProgressStatePlugin, { + /** + * Dynamische Komponenten, die im Seitenindex erfasst werden sollen. + */ components: [ { name: 'Answer', @@ -78,6 +102,9 @@ export const pageProgressStatePluginConfig = [ docTypeExtractor: () => 'dynamic_document_roots' } ], + /** + * Code-Blöcke mit persistierten Inhalten, die im Seitenindex erfasst werden sollen. + */ persistedCodeType: (node: Code) => { if (node.lang === 'html') { return 'script'; diff --git a/src/models/Page.ts b/src/models/Page.ts index ff285ae8d..4feb929b4 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -15,6 +15,7 @@ import { IfmColors } from '@tdev-components/shared/Colors'; interface PageTree { id: string; path: string; + documentRootIds: string[]; pages: PageTree[]; } @@ -42,7 +43,7 @@ export default class Page { this.path = path; this.store = store; this.documentRootConfigs = observable.map( - [[id, { type: 'mdx_comment', position: 0 }]], + this.isAutoGenerated ? [] : [[id, { type: 'mdx_comment', position: 0 }]], { deep: false } ); } @@ -62,6 +63,7 @@ export default class Page { return { id: this.id, path: this.path, + documentRootIds: [...this.documentRootConfigs.keys()], pages: this.subPages.map((page) => page.tree) }; } diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index 14b188387..5a6089e0e 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -14,7 +14,7 @@ import linkAnnotationPlugin from '../plugins/remark-link-annotation/plugin'; import mediaPlugin from '../plugins/remark-media/plugin'; import detailsPlugin from '../plugins/remark-details/plugin'; import pagePlugin from '../plugins/remark-page/plugin'; -import pageProgressStatePlugin from '@tdev/page-index/remark-plugin'; +import pageIndexPlugin from '@tdev/page-index/remark-plugin'; import graphvizPlugin from '@tdev/remark-graphviz/remark-plugin'; import pdfPlugin from '@tdev/remark-pdf/remark-plugin'; import codeAsAttributePlugin from '../plugins/remark-code-as-attribute/plugin'; @@ -138,8 +138,8 @@ export const pdfPluginConfig = pdfPlugin; export const pagePluginConfig = [pagePlugin, {}]; -export const pageProgressStatePluginConfig = [ - pageProgressStatePlugin, +export const pageIndexPluginConfig = [ + pageIndexPlugin, { components: [ { @@ -243,7 +243,7 @@ export const recommendedRemarkPlugins = [ enumerateAnswersPluginConfig, pdfPluginConfig, pagePluginConfig, - pageProgressStatePluginConfig, + pageIndexPluginConfig, commentPluginConfig, linkAnnotationPluginConfig, codeAsAttributePluginConfig diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 158e96a61..7f2e2db95 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -72,17 +72,11 @@ export class PageStore extends iStore { path: version.versionPath, pages: version.rootPaths.map((rootPath) => { const rootLandingPage = this.pages.find((page) => page.path === rootPath); - console.log( - 'Looking for landing page for root path', - rootPath, - rootLandingPage, - this.pages.map((p) => p.path) - ); if (rootLandingPage) { - console.log('Found landing page for root path', rootPath); return { version: version.name, path: rootPath, + documentRootIds: rootLandingPage.taskableDocumentRootIds, pages: [rootLandingPage.tree] }; } From bbfd7d7d56e0e63efd6664101d1339369e6601d3 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 16:58:51 +0100 Subject: [PATCH 37/49] export default options --- .../tdev/page-index/remark-plugin/index.ts | 6 +- src/siteConfig/markdownPluginConfigs.ts | 121 +++++++++--------- 2 files changed, 65 insertions(+), 62 deletions(-) diff --git a/packages/tdev/page-index/remark-plugin/index.ts b/packages/tdev/page-index/remark-plugin/index.ts index 5a67a6407..9a31d9301 100644 --- a/packages/tdev/page-index/remark-plugin/index.ts +++ b/packages/tdev/page-index/remark-plugin/index.ts @@ -6,6 +6,7 @@ import db from '../utils/db'; import { exportDB } from '../utils/exportDb'; import { debounce } from 'es-toolkit/function'; import { tdevRoot } from '../utils/options'; +import { TypeModelMapping } from '@tdev-api/document'; const TdevRoot = `${tdevRoot === '' ? '' : '/'}${tdevRoot}`; const TdevRootRegex = new RegExp(`^${TdevRoot}`); @@ -33,7 +34,7 @@ const cleanupPage = db.prepare( WHERE path = ? AND page_id = ?;` ); -interface JsxConfig { +interface JsxConfig { /** * Component Name */ @@ -42,13 +43,12 @@ interface JsxConfig string; + docTypeExtractor: (node: MdxJsxFlowElement | MdxJsxTextElement) => keyof TypeModelMapping; } export interface PluginOptions { components: JsxConfig[]; persistedCodeType?: (code: Code) => string; - docsParentDir?: string; } const slugCountMap = new Map(); diff --git a/src/siteConfig/markdownPluginConfigs.ts b/src/siteConfig/markdownPluginConfigs.ts index 5a6089e0e..f219e8a39 100644 --- a/src/siteConfig/markdownPluginConfigs.ts +++ b/src/siteConfig/markdownPluginConfigs.ts @@ -1,6 +1,6 @@ import type { Code, Node } from 'mdast'; import type { LeafDirective } from 'mdast-util-directive'; -import type { MdxJsxFlowElement } from 'mdast-util-mdx-jsx'; +import type { MdxJsxFlowElement } from 'mdast-util-mdx'; import strongPlugin, { transformer as captionVisitor } from '../plugins/remark-strong/plugin'; import deflistPlugin from '../plugins/remark-deflist/plugin'; import mdiPlugin from '../plugins/remark-mdi/plugin'; @@ -14,7 +14,9 @@ import linkAnnotationPlugin from '../plugins/remark-link-annotation/plugin'; import mediaPlugin from '../plugins/remark-media/plugin'; import detailsPlugin from '../plugins/remark-details/plugin'; import pagePlugin from '../plugins/remark-page/plugin'; -import pageIndexPlugin from '@tdev/page-index/remark-plugin'; +import pageIndexPlugin, { + type PluginOptions as PageIndexPluginOptions +} from '@tdev/page-index/remark-plugin'; import graphvizPlugin from '@tdev/remark-graphviz/remark-plugin'; import pdfPlugin from '@tdev/remark-pdf/remark-plugin'; import codeAsAttributePlugin from '../plugins/remark-code-as-attribute/plugin'; @@ -138,71 +140,72 @@ export const pdfPluginConfig = pdfPlugin; export const pagePluginConfig = [pagePlugin, {}]; -export const pageIndexPluginConfig = [ - pageIndexPlugin, - { - components: [ - { - name: 'Answer', - docTypeExtractor: (node: MdxJsxFlowElement) => +export const PageIndexPluginDefaultOptions: PageIndexPluginOptions = { + components: [ + { + name: 'Answer', + docTypeExtractor: (node) => { + return ( getAnswerDocumentType( node.attributes.find((a) => a.type === 'mdxJsxAttribute' && a.name === 'type') ?.value as string ) || 'unknown' - }, - { - name: 'ProgressState', - docTypeExtractor: () => 'progress_state' - }, - { - name: 'TaskState', - docTypeExtractor: () => 'task_state' - }, - { - name: 'QuillV2', - docTypeExtractor: () => 'quill_v2' - }, - { - name: 'String', - docTypeExtractor: () => 'string' - }, - { - name: 'CmsText', - docTypeExtractor: () => 'cms_text' - }, - { - name: 'CmsCode', - docTypeExtractor: () => 'cms_text' - }, - { - name: 'Restricted', - docTypeExtractor: () => 'restricted' - }, - { - name: 'DynamicDocumentRoots', - docTypeExtractor: () => 'dynamic_document_roots' + ); } - ], - persistedCodeType: (node: Code) => { - if (node.lang === 'html') { + }, + { + name: 'ProgressState', + docTypeExtractor: () => 'progress_state' + }, + { + name: 'TaskState', + docTypeExtractor: () => 'task_state' + }, + { + name: 'QuillV2', + docTypeExtractor: () => 'quill_v2' + }, + { + name: 'String', + docTypeExtractor: () => 'string' + }, + { + name: 'CmsText', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'CmsCode', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'Restricted', + docTypeExtractor: () => 'restricted' + }, + { + name: 'DynamicDocumentRoots', + docTypeExtractor: () => 'dynamic_document_roots' + } + ], + persistedCodeType: (node: Code) => { + if (node.lang === 'html') { + return 'script'; + } + const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); + const liveCode = liveLangMatch ? liveLangMatch[1] : null; + + switch (liveCode) { + case 'live_py': + case 'live_bry': + // legacy name, TODO. should be 'brython_code'? return 'script'; - } - const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); - const liveCode = liveLangMatch ? liveLangMatch[1] : null; - - switch (liveCode) { - case 'live_py': - case 'live_bry': - // legacy name, TODO. should be 'brython_code'? - return 'script'; - case 'live_pyo': - return 'pyodide_code'; - default: - return 'code'; - } + case 'live_pyo': + return 'pyodide_code'; + default: + return 'code'; } } -]; +}; +export const pageIndexPluginConfig = [pageIndexPlugin, PageIndexPluginDefaultOptions]; export const graphvizPluginConfig = graphvizPlugin; From 483f8ba64c323eb244ef3ba678f168e0ba1c1b62 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 17:00:38 +0100 Subject: [PATCH 38/49] support strings as doctype too --- packages/tdev/page-index/remark-plugin/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tdev/page-index/remark-plugin/index.ts b/packages/tdev/page-index/remark-plugin/index.ts index 9a31d9301..8dea02649 100644 --- a/packages/tdev/page-index/remark-plugin/index.ts +++ b/packages/tdev/page-index/remark-plugin/index.ts @@ -43,7 +43,7 @@ interface JsxConfig { * @default id */ attributeName?: string; - docTypeExtractor: (node: MdxJsxFlowElement | MdxJsxTextElement) => keyof TypeModelMapping; + docTypeExtractor: (node: MdxJsxFlowElement | MdxJsxTextElement) => keyof TypeModelMapping | string; } export interface PluginOptions { From f5767519ed7b8be61aa3db0055d7ca44430d4ab2 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 17:06:34 +0100 Subject: [PATCH 39/49] move TaskableState to the plugin --- packages/tdev/page-index/README.mdx | 4 ++++ .../tdev/page-index/components}/TaskableState/index.tsx | 0 .../page-index/components}/TaskableState/styles.module.scss | 0 src/theme/DocSidebarItem/index.tsx | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) rename {src/theme/DocSidebarItem => packages/tdev/page-index/components}/TaskableState/index.tsx (100%) rename {src/theme/DocSidebarItem => packages/tdev/page-index/components}/TaskableState/styles.module.scss (100%) diff --git a/packages/tdev/page-index/README.mdx b/packages/tdev/page-index/README.mdx index 7cf0c6af4..4b18134ab 100644 --- a/packages/tdev/page-index/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -49,6 +49,10 @@ export default { ``` ::: +:::info[swizzle `theme/DocSidebarItem/index.tsx`] +See the swizzled component of this page. This should be synced with the `updateTdev.config.yaml` by default. +::: + :::details[remark config] ```ts diff --git a/src/theme/DocSidebarItem/TaskableState/index.tsx b/packages/tdev/page-index/components/TaskableState/index.tsx similarity index 100% rename from src/theme/DocSidebarItem/TaskableState/index.tsx rename to packages/tdev/page-index/components/TaskableState/index.tsx diff --git a/src/theme/DocSidebarItem/TaskableState/styles.module.scss b/packages/tdev/page-index/components/TaskableState/styles.module.scss similarity index 100% rename from src/theme/DocSidebarItem/TaskableState/styles.module.scss rename to packages/tdev/page-index/components/TaskableState/styles.module.scss diff --git a/src/theme/DocSidebarItem/index.tsx b/src/theme/DocSidebarItem/index.tsx index ddb97aa62..29c85cbe5 100644 --- a/src/theme/DocSidebarItem/index.tsx +++ b/src/theme/DocSidebarItem/index.tsx @@ -6,7 +6,7 @@ import { observer } from 'mobx-react-lite'; import { useStore } from '@tdev-hooks/useStore'; import clsx from 'clsx'; import styles from './styles.module.scss'; -import TaskableState from './TaskableState'; +import TaskableState from '@tdev/page-index/components/TaskableState'; const ensureTrailingSlash = (path?: string) => { if (!path) { return ''; From 4ec63cf455a5b353f55a78bad5b97e7994db59ab Mon Sep 17 00:00:00 2001 From: bh0fer Date: Wed, 4 Feb 2026 17:07:35 +0100 Subject: [PATCH 40/49] add todo --- packages/tdev/page-index/README.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/tdev/page-index/README.mdx b/packages/tdev/page-index/README.mdx index 4b18134ab..4c858aa13 100644 --- a/packages/tdev/page-index/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -12,6 +12,8 @@ import CodeBlock from '@theme/CodeBlock'; Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann bspw. der Bearbeitungsstand in der Seitenleiste angezeigt werden. +TODO: document `taskable_state: 'show' | 'hide'` + ## Page index Der Seitenindex ist ein Baum aller speicherbaren Dokumente in der aktuellen Seite. From fdf7f057f594b55a5587f3f98569ad39bcf51820 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 00:34:52 +0100 Subject: [PATCH 41/49] fix image sync in packages --- updateSync/packageDocsSync/actions.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/updateSync/packageDocsSync/actions.ts b/updateSync/packageDocsSync/actions.ts index b477d973c..e0c1182e0 100644 --- a/updateSync/packageDocsSync/actions.ts +++ b/updateSync/packageDocsSync/actions.ts @@ -27,6 +27,9 @@ const DEFAULT_README_CONFIG: Omit 'README.mdx', '_category_.yml', '_category_.json', + 'assets/', + 'images/', + 'img/', 'assets/**', 'images/**', 'img/**' From 42561177945b50a369cb0b8db117ea456fbb6959 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 00:36:44 +0100 Subject: [PATCH 42/49] document implementation for plugin authors --- packages/tdev/page-index/README.mdx | 80 ++- .../page-index/images/taskable-sidebar.png | Bin 0 -> 708844 bytes .../images/taskable-sidebar.png.excalidraw | 611 ++++++++++++++++++ packages/tdev/pyodide-code/index.ts | 3 +- src/api/document.ts | 16 +- src/models/Page.ts | 31 +- src/models/iTaskableDocument.ts | 4 +- src/stores/ComponentStore.ts | 9 +- tdev-website/docs/gallery/index.mdx | 2 - 9 files changed, 725 insertions(+), 31 deletions(-) create mode 100644 packages/tdev/page-index/images/taskable-sidebar.png create mode 100644 packages/tdev/page-index/images/taskable-sidebar.png.excalidraw diff --git a/packages/tdev/page-index/README.mdx b/packages/tdev/page-index/README.mdx index 4c858aa13..285f4fc07 100644 --- a/packages/tdev/page-index/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -7,12 +7,37 @@ tags: import { useStore } from '@tdev-hooks/useStore' import { observer } from 'mobx-react-lite'; import CodeBlock from '@theme/CodeBlock'; +import JsObjectViewer from '@tdev-components/shared/JsObject/Viewer'; # page-index Dieses Plugin ermöglicht eine Übersicht über alle speicherbaren Dokumente. So kann bspw. der Bearbeitungsstand in der Seitenleiste angezeigt werden. -TODO: document `taskable_state: 'show' | 'hide'` +Standardmässig wird in der Seitenleiste der Bearbeitungsstand in zwei Fällen angezeigt: +1. Auf einer Seite sind *Statusdokument* vorhanden, deren Fortschritt bestimmt werden kann (sog. `TaskableDocuments`, bspw. `task_state` oder `progress_state`). +2. In einer Kategorie befinden sich direkt untergeordnete Seiten mit *Statusdokumenten*. + +![--width=800px](./images/taskable-sidebar.png) + +Dieses Verhalten kann über das *Frontmatter* der Seite angepasst werden: + +:::cards{flexBasis="300px"} +```yaml +--- +sidebar_custom_props: + taskable_state: 'show' +--- +``` +Bearbeitungsstand anzeigen, auch wenn keine Statusdokumente in den direkt untergeordneten Seiten vorhanden sind. +::br +```yaml +--- +sidebar_custom_props: + taskable_state: 'hide' +--- +``` +Bearbeitungsstand nicht anzeigen, auch wenn Statusdokumente vorhanden sind. +::: ## Page index @@ -21,12 +46,13 @@ Der Seitenindex ist ein Baum aller speicherbaren Dokumente in der aktuellen Seit Im `dev`-Modus wird er automatisch aktualisiert, wenn sich die Seite ändert. :::details[Page Index] + export const Comp = observer(() => { - const pageStore = useStore('pageStore'); + const pageStore = useStore('pageStore') return (
- {JSON.stringify(pageStore.tree, null, 2)}; + {JSON.stringify(pageStore.tree, null, 2)}
); }); @@ -34,6 +60,54 @@ export const Comp = observer(() => { ::: +## FĂĽr Plugin-Autoren + +Wenn ein Plugin ein weiteres *Statusdokument* implementiert, das im Seitenindex erfasst werden soll, mĂĽssen folgende Schritte durchgefĂĽhrt werden: +1. In der `siteConfig` die neue Komponente fĂĽr das `remark`-Plugin registrieren: + ```ts title="siteConfig.ts" + import { PageIndexPluginDefaultOptions } from './src/siteConfig/markdownPluginConfigs'; + const indexPluginOptions = { + ...PageIndexPluginDefaultOptions, + components: [ + ...PageIndexPluginDefaultOptions.components, + { + name: 'MyNewTaskableDocument', + docTypeExtractor: (node: MdxJsxFlowElement) => 'my_new_taskable_document' + } + ] + }; + export const pageIndexPluginConfig = [pageIndexPlugin, indexPluginOptions]; + ``` +2. Im `index.ts` des neuen Plugins den neuen Dokumenttyp importieren: + ```ts title="packages///index.ts" + declare module '@tdev-api/document' { + export interface TaskableDocumentMapping { + ['my_new_taskable_document']: MyNewTaskableData; + } + export interface TypeModelMapping { + ['my_new_taskable_document']: MyNewTaskableDocument; + } + } + ``` + :::warning[iTaskableDocument] + Das neue `MyNewTaskableDocument`-Modell muss das Interface `iTaskableDocument<'my_new_taskable_document'>` implementieren, damit es im Seitenindex als *Statusdokument* erkannt wird. + ::: +3. Im `apiDocumentProviders` den neuen Dokumenttyp registrieren: + ```ts title="siteConfig.ts" + const getSiteConfig = () => { + apiDocumentProviders: { + ..., + require.resolve('@scope/new-plugin/register') + } + } + ``` + und den neuen Dokumenttyp im `ComponentStore` registrieren: + ```ts title="packages///register.ts" + const register = () => { + rootStore.componentStore.registerTaskableDocumentType('my_new_taskable_document'); + }; + ``` + ## Installation :::info[`docusaurus.config.ts`] diff --git a/packages/tdev/page-index/images/taskable-sidebar.png b/packages/tdev/page-index/images/taskable-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..c04c2bd0ff26b9a188846be84a3223906c68c52f GIT binary patch literal 708844 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
  • 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 +6dV&a~sg4{* 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սx#k4*=LarY>{~Fj0DT%O&+nG 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 literal 0 HcmV?d00001 diff --git a/packages/tdev/page-index/images/taskable-sidebar.png.excalidraw b/packages/tdev/page-index/images/taskable-sidebar.png.excalidraw new file mode 100644 index 000000000..6b3d53eb2 --- /dev/null +++ b/packages/tdev/page-index/images/taskable-sidebar.png.excalidraw @@ -0,0 +1,611 @@ +{ + "type": "excalidraw", + "version": 2, + "elements": [ + { + "id": "TDEV-BACKGROUND-IMAGE", + "type": "image", + "x": 0, + "y": 0, + "width": 445, + "height": 559, + "roughness": 0, + "opacity": 100, + "isDeleted": false, + "fileId": "TDEV-BACKGROUND--FILE", + "scale": [ + 1, + 1 + ], + "locked": true, + "customData": { + "exportFormatMimeType": "image/png", + "exportPadding": 4 + }, + "version": 2, + "versionNonce": 573287145, + "index": "a0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "seed": 1, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1770247548661, + "link": null, + "status": "pending", + "crop": null + }, + { + "id": "TDEV-IMAGE--RECTANGLE", + "type": "rectangle", + "x": 0, + "y": 0, + "width": 445, + "height": 559, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "dotted", + "roughness": 0, + "opacity": 100, + "locked": true, + "version": 2, + "versionNonce": 573287144, + "index": "a1", + "isDeleted": false, + "angle": 0, + "seed": 1, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1770247548661, + "link": null + }, + { + "id": "8-8yrCtx4PU0QPmyP2kGs", + "type": "text", + "x": 623.0766065968326, + "y": 357.47268348297536, + "width": 496.22381591796875, + "height": 48.6, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a2", + "roundness": null, + "seed": 814616999, + "version": 154, + "versionNonce": 714376617, + "isDeleted": false, + "boundElements": [], + "updated": 1770247741661, + "link": null, + "locked": false, + "text": "Enthalten TaskableDocuments", + "fontSize": 36, + "fontFamily": 6, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Enthalten TaskableDocuments", + "autoResize": true, + "lineHeight": 1.35 + }, + { + "id": "FgnNFsNzNRYBXy_J8pJXS", + "type": "line", + "x": 608.32582, + "y": 357.47268302254025, + "width": 0, + "height": 55.16401372086386, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a3", + "roundness": { + "type": 2 + }, + "seed": 1020752199, + "version": 92, + "versionNonce": 2059866985, + "isDeleted": false, + "boundElements": [], + "updated": 1770247593910, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 55.16401372086386 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "GGdpT5dFNrLKK0yKAY-Rc", + "type": "arrow", + "x": 608.3258196765732, + "y": 356.04437637292256, + "width": 163.28548039029647, + "height": 130.18707220307417, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a4", + "roundness": { + "type": 2 + }, + "seed": 1268936137, + "version": 77, + "versionNonce": 741454343, + "isDeleted": false, + "boundElements": [], + "updated": 1770247604539, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -163.28548039029647, + -130.18707220307417 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "elbowed": false + }, + { + "id": "DVSREq4Ef0ofOh63yTXLL", + "type": "arrow", + "x": 608.3258196765732, + "y": 413.4149505641078, + "width": 163.28548039029647, + "height": 105.17936357087831, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a5", + "roundness": { + "type": 2 + }, + "seed": 727439655, + "version": 39, + "versionNonce": 707815273, + "isDeleted": false, + "boundElements": [], + "updated": 1770247612246, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -163.28548039029647, + 105.17936357087831 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "elbowed": false + }, + { + "id": "p1ooWVetebSkJ2n7rnlaf", + "type": "arrow", + "x": 606.8548690978753, + "y": 395.7624661975892, + "width": 161.8145298115985, + "height": 26.478726549777775, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a6", + "roundness": { + "type": 2 + }, + "seed": 1818333769, + "version": 40, + "versionNonce": 1865184201, + "isDeleted": false, + "boundElements": [], + "updated": 1770247615149, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -161.8145298115985, + 26.478726549777775 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "elbowed": false + }, + { + "id": "0PzJFjvP0z7ovn-ZlJn_6", + "type": "arrow", + "x": 607.5903443872244, + "y": 374.43233602879013, + "width": 163.28548039029647, + "height": 93.41101821357131, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a7", + "roundness": { + "type": 2 + }, + "seed": 1658655401, + "version": 47, + "versionNonce": 1527276615, + "isDeleted": false, + "boundElements": [], + "updated": 1770247619837, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -163.28548039029647, + -93.41101821357131 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "elbowed": false + }, + { + "id": "Uq3G12utv_3iauKXWmGEQ", + "type": "arrow", + "x": 607.5903440978752, + "y": 168.48672863056774, + "width": 162.55000481159846, + "height": 0, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a8", + "roundness": { + "type": 2 + }, + "seed": 597904009, + "version": 98, + "versionNonce": 1875424937, + "isDeleted": false, + "boundElements": [], + "updated": 1770247754982, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -162.55000481159846, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "8NlUihPEosJeJVHpTNSNb", + "focus": -0.12298231980817184, + "gap": 15.486262678253752 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "elbowed": false + }, + { + "id": "nXpLQrCOAwx4mauafchMY", + "type": "line", + "x": 608.3258198598327, + "y": 105.23193257222115, + "width": 0, + "height": 114.74118205181236, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "a9", + "roundness": { + "type": 2 + }, + "seed": 1710221159, + "version": 103, + "versionNonce": 1439527625, + "isDeleted": false, + "boundElements": [], + "updated": 1770247723177, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 114.74118205181236 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "8NlUihPEosJeJVHpTNSNb", + "type": "text", + "x": 623.076606776129, + "y": 86.62131751655198, + "width": 602.02783203125, + "height": 145.8, + "angle": 0, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aA", + "roundness": null, + "seed": 1935552041, + "version": 186, + "versionNonce": 1353578889, + "isDeleted": false, + "boundElements": [ + { + "id": "Uq3G12utv_3iauKXWmGEQ", + "type": "arrow" + } + ], + "updated": 1770247754982, + "link": null, + "locked": false, + "text": "Kategorie mit direkt untergeordneten\nSeiten, die TaskableDocuments \nenthalten", + "fontSize": 36, + "fontFamily": 6, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Kategorie mit direkt untergeordneten\nSeiten, die TaskableDocuments \nenthalten", + "autoResize": true, + "lineHeight": 1.35 + }, + { + "id": "FxcdmPEaKJ4_IWQDA4lKc", + "type": "arrow", + "x": 608.3258196765732, + "y": 16.969560995299833, + "width": 163.28548095057124, + "height": 0, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aB", + "roundness": { + "type": 2 + }, + "seed": 1963716457, + "version": 73, + "versionNonce": 878699401, + "isDeleted": false, + "boundElements": [], + "updated": 1770247765552, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + -163.28548095057124, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "triangle", + "elbowed": false + }, + { + "id": "oYKPgOpkt7MKfcGRduSD2", + "type": "line", + "x": 608.3258198414095, + "y": -19.806459043829165, + "width": 0, + "height": 69.87439483784124, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aC", + "roundness": { + "type": 2 + }, + "seed": 1234400935, + "version": 59, + "versionNonce": 1490561863, + "isDeleted": false, + "boundElements": [], + "updated": 1770247805410, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 69.87439483784124 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "U5nrzQGZ2JNHrhPZK_EfS", + "type": "text", + "x": 623.0766072283326, + "y": -31.63043921391389, + "width": 642.52783203125, + "height": 97.2, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "index": "aD", + "roundness": null, + "seed": 522207175, + "version": 91, + "versionNonce": 609424231, + "isDeleted": false, + "boundElements": [], + "updated": 1770247826306, + "link": null, + "locked": false, + "text": "Übergeordnete Kategorie ohne Anzeige\ndes Bearbeitungsstandes", + "fontSize": 36, + "fontFamily": 6, + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Übergeordnete Kategorie ohne Anzeige\ndes Bearbeitungsstandes", + "autoResize": true, + "lineHeight": 1.35 + } + ], + "files": { + "TDEV-BACKGROUND--FILE": { + "id": "TDEV-BACKGROUND--FILE", + "mimeType": "image/png", + "dataURL": "data:image/png;base64,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" + } + } +} \ No newline at end of file diff --git a/packages/tdev/pyodide-code/index.ts b/packages/tdev/pyodide-code/index.ts index 21a02e9ff..880670449 100644 --- a/packages/tdev/pyodide-code/index.ts +++ b/packages/tdev/pyodide-code/index.ts @@ -1,4 +1,3 @@ -import type { CurrentBundler, PluginConfig, PluginModule } from '@docusaurus/types'; import type PyodideStore from './stores/PyodideStore'; import PyodideCode from './models/PyodideCode'; export interface PyodideData { @@ -13,6 +12,6 @@ declare module '@tdev-api/document' { ['pyodide_code']: PyodideCode; } export interface ViewStoreTypeMapping { - ['pyodideStore']: PyodideStore; // placeholder to avoid empty interface error + ['pyodideStore']: PyodideStore; } } diff --git a/src/api/document.ts b/src/api/document.ts index a67662e3f..5172792f6 100644 --- a/src/api/document.ts +++ b/src/api/document.ts @@ -18,6 +18,7 @@ import type DocumentStore from '@tdev-stores/DocumentStore'; import iDocumentContainer from '@tdev-models/iDocumentContainer'; import iViewStore from '@tdev-stores/ViewStores/iViewStore'; import Code from '@tdev-models/documents/Code'; +import { iTaskableDocument } from '@tdev-models/iTaskableDocument'; export enum Access { RO_DocumentRoot = 'RO_DocumentRoot', @@ -113,9 +114,12 @@ export interface ContainerTypeDataMapping { ['_container_placeholder_']: { name: string }; // placeholder to avoid empty interface error } -export interface TypeDataMapping extends ContainerTypeDataMapping { +export interface TaskableDocumentMapping { ['task_state']: TaskStateData; ['progress_state']: ProgressStateData; +} + +export interface TypeDataMapping extends TaskableDocumentMapping, ContainerTypeDataMapping { ['code']: CodeData; // TODO: rename to `code_version`? ['script_version']: ScriptVersionData; @@ -131,6 +135,7 @@ export interface TypeDataMapping extends ContainerTypeDataMapping { // Add more mappings as needed } export type ContainerType = keyof ContainerTypeDataMapping; +export type TaskableType = keyof TaskableDocumentMapping; type KeysWithCode = { [K in keyof T]: 'code' extends keyof T[K] ? K : never; @@ -142,9 +147,15 @@ export interface ContainerTypeModelMapping { ['_container_placeholder_']: iDocumentContainer; // placeholder to avoid empty interface error } -export interface TypeModelMapping extends ContainerTypeModelMapping { +export interface TaskableTypeModelMapping { ['task_state']: TaskState; ['progress_state']: ProgressState; +} +// enforce all TaskableTypeMpdels to extend iTaskableDocument: +type EnsureAllTaskable }> = T; +null as unknown as EnsureAllTaskable; + +export interface TypeModelMapping extends TaskableTypeModelMapping, ContainerTypeModelMapping { ['code']: Code; // TODO: rename to `code_version`? ['script_version']: ScriptVersion; @@ -166,6 +177,7 @@ export interface TypeModelMapping extends ContainerTypeModelMapping { } export type ContainerModelType = ContainerTypeModelMapping[ContainerType]; +export type TaskableModelType = TaskableTypeModelMapping[TaskableType]; export type DocumentType = keyof TypeModelMapping; export type DocumentModelType = TypeModelMapping[DocumentType]; diff --git a/src/models/Page.ts b/src/models/Page.ts index 4feb929b4..aa7adb33b 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -15,12 +15,10 @@ import { IfmColors } from '@tdev-components/shared/Colors'; interface PageTree { id: string; path: string; - documentRootIds: string[]; + documentRoots: (PageConfig & { documentRootId: string })[]; pages: PageTree[]; } -const TaskableDocument = new Set(['task_state', 'progress_state']); - interface PageConfig { type: DocumentType; position: number; @@ -63,7 +61,10 @@ export default class Page { return { id: this.id, path: this.path, - documentRootIds: [...this.documentRootConfigs.keys()], + documentRoots: [...this.documentRootConfigs.entries()].map(([id, config]) => ({ + documentRootId: id, + ...config + })), pages: this.subPages.map((page) => page.tree) }; } @@ -101,7 +102,6 @@ export default class Page { @action assertDocumentRoot(doc: iDocument) { - // this.documentRootIds.add(doc.documentRootId); if (process.env.NODE_ENV === 'production') { return; } @@ -134,17 +134,6 @@ export default class Page { .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); } - // @computed - // get editingStates(): (TaskState | ProgressState)[] { - // return this.documentRoots - // .flatMap((doc) => doc.firstMainDocument) - // .filter( - // (d): d is TaskState | ProgressState => d instanceof TaskState || d instanceof ProgressState - // ) - // .filter((d) => d?.root?.meta.pagePosition) - // .sort((a, b) => a!.root!.meta!.pagePosition - b!.root!.meta.pagePosition); - // } - @action setPrimaryStudentGroupName(name?: string) { this._primaryStudentGroupName = name; @@ -189,11 +178,15 @@ export default class Page { return this.store.loadAllDocuments(this); } + get TaskableDocuments() { + return this.store.root.componentStore.taskableDocuments; + } + @computed get taskableDocumentRootIds() { return [...this.documentRootConfigs.keys()].filter((id) => { const config = this.documentRootConfigs.get(id)!; - return TaskableDocument.has(config.type); + return this.TaskableDocuments.has(config.type); }); } @@ -207,7 +200,7 @@ export default class Page { return this.store.root.documentStore .findByDocumentRoot(rid) .filter( - (doc) => doc.authorId === uid && TaskableDocument.has(doc.type) + (doc) => doc.authorId === uid && this.TaskableDocuments.has(doc.type) ) as iTaskableDocument[]; }); } @@ -296,7 +289,7 @@ export default class Page { .flatMap((rid) => { return this.store.root.documentStore .findByDocumentRoot(rid) - .filter((doc) => TaskableDocument.has(doc.type)) as iTaskableDocument[]; + .filter((doc) => this.TaskableDocuments.has(doc.type)) as iTaskableDocument[]; }) .filter((doc) => this.activeStudentGroup ? this.activeStudentGroup.userIds.has(doc.authorId) : true diff --git a/src/models/iTaskableDocument.ts b/src/models/iTaskableDocument.ts index 2a386f8ac..189e56a77 100644 --- a/src/models/iTaskableDocument.ts +++ b/src/models/iTaskableDocument.ts @@ -1,7 +1,7 @@ -import { DocumentType } from '@tdev-api/document'; +import type { TaskableType } from '@tdev-api/document'; import iDocument from './iDocument'; -export interface iTaskableDocument extends iDocument { +export interface iTaskableDocument extends iDocument { isDone: boolean; editingIconState: { path: string; color: string }; progress: number; diff --git a/src/stores/ComponentStore.ts b/src/stores/ComponentStore.ts index 3bd3a76f3..8a4729b88 100644 --- a/src/stores/ComponentStore.ts +++ b/src/stores/ComponentStore.ts @@ -2,9 +2,11 @@ import { CodeMeta } from '@tdev-models/documents/Code'; import { RootStore } from './rootStore'; import { type CodeType, + type DocumentType, TypeModelMapping, type ContainerType, - type ContainerTypeModelMapping + type ContainerTypeModelMapping, + TaskableType } from '@tdev-api/document'; import { ContainerMeta } from '@tdev-models/documents/DynamicDocumentRoots/ContainerMeta'; import iCodeMeta, { MetaInit } from '@tdev-models/documents/iCode/iCodeMeta'; @@ -49,6 +51,7 @@ class ComponentStore { readonly root: RootStore; components = new Map(); editorComponents = new Map(); + taskableDocuments = new Set(['task_state', 'progress_state']); constructor(root: RootStore) { this.root = root; @@ -62,6 +65,10 @@ class ComponentStore { this.components.set(type, component as ContainerComponent); } + registerTaskableDocumentType(type: TaskableType) { + this.taskableDocuments.add(type); + } + @computed get defaultMeta() { return [ diff --git a/tdev-website/docs/gallery/index.mdx b/tdev-website/docs/gallery/index.mdx index 8d39e922e..9db261516 100644 --- a/tdev-website/docs/gallery/index.mdx +++ b/tdev-website/docs/gallery/index.mdx @@ -1,7 +1,5 @@ --- page_id: 824c958f-b229-4fae-b333-be084a939664 -sidebar_custom_props: - taskable_state: 'show' --- import DocCardList from '@theme/DocCardList'; From f2ab1cf75ef6ca6b81dbddd7d1e5b36169340e8e Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 08:39:30 +0100 Subject: [PATCH 43/49] update md plugin config --- packages/tdev/page-index/README.mdx | 121 +++++++++++++--------------- 1 file changed, 58 insertions(+), 63 deletions(-) diff --git a/packages/tdev/page-index/README.mdx b/packages/tdev/page-index/README.mdx index 285f4fc07..4eaad69d0 100644 --- a/packages/tdev/page-index/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -134,76 +134,71 @@ See the swizzled component of this page. This should be synced with the `updateT ```ts import pageProgressStatePlugin from '@tdev/page-index/remark-plugin'; -export const pageProgressStatePluginConfig = [ - pageProgressStatePlugin, - { - /** - * Dynamische Komponenten, die im Seitenindex erfasst werden sollen. - */ - components: [ - { - name: 'Answer', - docTypeExtractor: (node: MdxJsxFlowElement) => +export const PageIndexPluginDefaultOptions: PageIndexPluginOptions = { + components: [ + { + name: 'Answer', + docTypeExtractor: (node) => { + return ( getAnswerDocumentType( node.attributes.find((a) => a.type === 'mdxJsxAttribute' && a.name === 'type') ?.value as string ) || 'unknown' - }, - { - name: 'ProgressState', - docTypeExtractor: () => 'progress_state' - }, - { - name: 'TaskState', - docTypeExtractor: () => 'task_state' - }, - { - name: 'QuillV2', - docTypeExtractor: () => 'quill_v2' - }, - { - name: 'String', - docTypeExtractor: () => 'string' - }, - { - name: 'CmsText', - docTypeExtractor: () => 'cms_text' - }, - { - name: 'CmsCode', - docTypeExtractor: () => 'cms_text' - }, - { - name: 'Restricted', - docTypeExtractor: () => 'restricted' - }, - { - name: 'DynamicDocumentRoots', - docTypeExtractor: () => 'dynamic_document_roots' + ); } - ], - /** - * Code-Blöcke mit persistierten Inhalten, die im Seitenindex erfasst werden sollen. - */ - persistedCodeType: (node: Code) => { - if (node.lang === 'html') { + }, + { + name: 'ProgressState', + docTypeExtractor: () => 'progress_state' + }, + { + name: 'TaskState', + docTypeExtractor: () => 'task_state' + }, + { + name: 'QuillV2', + docTypeExtractor: () => 'quill_v2' + }, + { + name: 'String', + docTypeExtractor: () => 'string' + }, + { + name: 'CmsText', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'CmsCode', + docTypeExtractor: () => 'cms_text' + }, + { + name: 'Restricted', + docTypeExtractor: () => 'restricted' + }, + { + name: 'DynamicDocumentRoots', + docTypeExtractor: () => 'dynamic_document_roots' + } + ], + persistedCodeType: (node: Code) => { + if (node.lang === 'html') { + return 'script'; + } + const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); + const liveCode = liveLangMatch ? liveLangMatch[1] : null; + + switch (liveCode) { + case 'live_py': + case 'live_bry': + // legacy name, TODO. should be 'brython_code'? return 'script'; - } - const liveLangMatch = /(live_[a-zA-Z0-9-_]+)/.exec(node.meta || ''); - const liveCode = liveLangMatch ? liveLangMatch[1] : null; - - switch (liveCode) { - case 'live_py': - case 'live_bry': - // legacy name, TODO. should be 'brython_code'? - return 'script'; - case 'live_pyo': - return 'pyodide_code'; - default: - return 'code'; - } + case 'live_pyo': + return 'pyodide_code'; + default: + return 'code'; } } -]; +}; +export const pageIndexPluginConfig = [pageIndexPlugin, PageIndexPluginDefaultOptions]; ``` ::: \ No newline at end of file From 0c941bb491bd102c20e4762d805cb46090df441f Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 09:08:09 +0100 Subject: [PATCH 44/49] rm gitignore --- packages/tdev/page-index/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 packages/tdev/page-index/.gitignore diff --git a/packages/tdev/page-index/.gitignore b/packages/tdev/page-index/.gitignore deleted file mode 100644 index 3a03a092e..000000000 --- a/packages/tdev/page-index/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.assets \ No newline at end of file From 7e74c66a1aafc70e419306cf40440d327988efef Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 09:11:59 +0100 Subject: [PATCH 45/49] move dependencies to page-index plugin --- package.json | 2 -- packages/tdev/page-index/package.json | 9 +++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index a31788590..0bb7a6d2a 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,6 @@ "@docusaurus/plugin-rsdoctor": "^3.9.2", "@docusaurus/tsconfig": "^3.9.2", "@docusaurus/types": "^3.9.2", - "@types/better-sqlite3": "^7.6.13", "@types/exceljs": "^1.3.0", "@types/fs-extra": "^11.0.4", "@types/js-yaml": "^4.0.9", @@ -105,7 +104,6 @@ "@types/uuid": "^10.0.0", "@types/wicg-file-system-access": "^2023.10.6", "@vitest/coverage-v8": "^2.0.5", - "better-sqlite3": "^12.6.2", "concurrently": "^9.2.1", "fs-extra": "^11.2.0", "prettier": "^3.3.2", diff --git a/packages/tdev/page-index/package.json b/packages/tdev/page-index/package.json index bb136bfe4..7f66b6b3c 100644 --- a/packages/tdev/page-index/package.json +++ b/packages/tdev/page-index/package.json @@ -3,13 +3,14 @@ "version": "1.0.0", "main": "index.ts", "types": "index.ts", - "dependencies": { }, + "dependencies": {}, "devDependencies": { - "vitest": "*", + "@docusaurus/core": "*", "@docusaurus/module-type-aliases": "*", - "@docusaurus/core": "*" + "@types/better-sqlite3": "^7.6.13", + "better-sqlite3": "^12.6.2" }, "peerDependencies": { "@tdev/core": "1.0.0" } -} \ No newline at end of file +} From 41a9700760437721271b3b1e974ee88dc0512272 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 14:32:52 +0100 Subject: [PATCH 46/49] undo useless change --- src/plugins/remark-page/plugin.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/remark-page/plugin.ts b/src/plugins/remark-page/plugin.ts index 90d748676..18d797035 100644 --- a/src/plugins/remark-page/plugin.ts +++ b/src/plugins/remark-page/plugin.ts @@ -1,6 +1,6 @@ import type { Plugin, Transformer } from 'unified'; import type { MdxJsxFlowElement } from 'mdast-util-mdx'; -import type { Node, Root } from 'mdast'; +import type { Root } from 'mdast'; import { toJsxAttribute } from '../helpers'; /** @@ -8,7 +8,7 @@ import { toJsxAttribute } from '../helpers'; * This is useful to initialize a page model on page load and to trigger side-effects on page display, * as to load models attached to the `page_id`'s root document. */ -const plugin: Plugin = function plugin(): Transformer { +const plugin: Plugin = function plugin(): Transformer { return async (root, file) => { const { visit, EXIT } = await import('unist-util-visit'); const { page_id } = (file.data?.frontMatter || {}) as { page_id?: string }; From 000ca975f8c041eac7a76293ac834f7c58c59cf9 Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 14:39:54 +0100 Subject: [PATCH 47/49] display generated page index --- packages/tdev/page-index/README.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tdev/page-index/README.mdx b/packages/tdev/page-index/README.mdx index 4eaad69d0..7f6c93007 100644 --- a/packages/tdev/page-index/README.mdx +++ b/packages/tdev/page-index/README.mdx @@ -51,8 +51,8 @@ export const Comp = observer(() => { const pageStore = useStore('pageStore') return ( -

    - {JSON.stringify(pageStore.tree, null, 2)} +
    + {JSON.stringify(pageStore._pageIndex, null, 2)}
    ); }); From c8551de8b9404c5e8d82f6944fe44f4ad0a3a6cb Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 14:42:04 +0100 Subject: [PATCH 48/49] remove unused page tree --- src/models/Page.ts | 21 --------------------- src/stores/PageStore.ts | 27 --------------------------- 2 files changed, 48 deletions(-) diff --git a/src/models/Page.ts b/src/models/Page.ts index aa7adb33b..c72527a3d 100644 --- a/src/models/Page.ts +++ b/src/models/Page.ts @@ -11,14 +11,6 @@ import { DocumentType } from '@tdev-api/document'; import { iTaskableDocument } from './iTaskableDocument'; import { mdiCheckCircleOutline, mdiSpeedometer, mdiSpeedometerMedium, mdiSpeedometerSlow } from '@mdi/js'; import { IfmColors } from '@tdev-components/shared/Colors'; - -interface PageTree { - id: string; - path: string; - documentRoots: (PageConfig & { documentRootId: string })[]; - pages: PageTree[]; -} - interface PageConfig { type: DocumentType; position: number; @@ -56,19 +48,6 @@ export default class Page { return this.store.sidebarVersions.some((version) => version.rootPaths.includes(this.path)); } - @computed - get tree(): PageTree { - return { - id: this.id, - path: this.path, - documentRoots: [...this.documentRootConfigs.entries()].map(([id, config]) => ({ - documentRootId: id, - ...config - })), - pages: this.subPages.map((page) => page.tree) - }; - } - @computed get parentPath() { const parts = this.path.split('/').slice(0, -2); diff --git a/src/stores/PageStore.ts b/src/stores/PageStore.ts index 7f2e2db95..18e50e2ab 100644 --- a/src/stores/PageStore.ts +++ b/src/stores/PageStore.ts @@ -64,33 +64,6 @@ export class PageStore extends iStore { return this.pages.filter((page) => page.isLandingpage); } - @computed - get tree() { - return SidebarVersions.map((version) => { - return { - version: version.name, - path: version.versionPath, - pages: version.rootPaths.map((rootPath) => { - const rootLandingPage = this.pages.find((page) => page.path === rootPath); - if (rootLandingPage) { - return { - version: version.name, - path: rootPath, - documentRootIds: rootLandingPage.taskableDocumentRootIds, - pages: [rootLandingPage.tree] - }; - } - const pages = this.pages.filter((page) => page.parentPath === rootPath); - return { - version: version.name, - path: rootPath, - pages: pages.map((page) => page.tree) - }; - }) - }; - }); - } - @action loadPageIndex(force: boolean = false) { if (!force && this._pageIndex.length > 0) { From 41da3dcf10c22383c885134c2431cbe44cd1fbde Mon Sep 17 00:00:00 2001 From: bh0fer Date: Thu, 5 Feb 2026 15:13:50 +0100 Subject: [PATCH 49/49] cleanup ux experience --- .../page-index/components/TaskableState/index.tsx | 11 ++++++++++- .../components/TaskableState/styles.module.scss | 5 +++++ src/theme/DocSidebarItem/styles.module.scss | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/tdev/page-index/components/TaskableState/index.tsx b/packages/tdev/page-index/components/TaskableState/index.tsx index 01c6846e8..3133b4d04 100644 --- a/packages/tdev/page-index/components/TaskableState/index.tsx +++ b/packages/tdev/page-index/components/TaskableState/index.tsx @@ -33,8 +33,17 @@ const TaskableState = observer((props: Props) => {
    { + const thisElement = e.currentTarget; + thisElement.parentElement?.querySelector('a')?.click(); + }} > - +
    ); }); diff --git a/packages/tdev/page-index/components/TaskableState/styles.module.scss b/packages/tdev/page-index/components/TaskableState/styles.module.scss index c2ef55ac1..8bd004f2f 100644 --- a/packages/tdev/page-index/components/TaskableState/styles.module.scss +++ b/packages/tdev/page-index/components/TaskableState/styles.module.scss @@ -3,5 +3,10 @@ align-items: center; justify-content: center; height: 2em; + width: 2em; cursor: pointer; + border-radius: 1em; + &:hover { + background-color: var(--ifm-hover-overlay); + } } diff --git a/src/theme/DocSidebarItem/styles.module.scss b/src/theme/DocSidebarItem/styles.module.scss index 4de42addf..2df830a7a 100644 --- a/src/theme/DocSidebarItem/styles.module.scss +++ b/src/theme/DocSidebarItem/styles.module.scss @@ -9,4 +9,12 @@ right: 3em; } } + &:has(> .icon:hover) { + > li:has(+ .icon:hover) { + > a, + > div { + background: var(--ifm-menu-color-background-hover); + } + } + } }

    a%HO$(?N%1A#n|IF@&FGE$om|nlM9#9$h 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 z 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%0A7ghdP6`lv3_@}s|#sFw^WjCu*8c+ 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