From f076581bed3e597bb67f3ab7a62496bc07fb7697 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 6 Sep 2025 18:48:58 +0300 Subject: [PATCH] chore(react/collections/table): get table to render --- apps/client/package.json | 1 + .../src/widgets/collections/NoteList.tsx | 3 + .../table}/columns.spec.ts | 0 .../table}/columns.ts | 4 +- .../table}/formatters.ts | 0 .../src/widgets/collections/table/index.css | 67 +++++ .../src/widgets/collections/table/index.tsx | 52 ++++ .../table}/relation_editor.ts | 0 .../table_view => collections/table}/rows.ts | 0 apps/client/src/widgets/react/hooks.tsx | 9 + .../widgets/view_widgets/table_view/index.ts | 88 +------ pnpm-lock.yaml | 239 ++++++++++++------ 12 files changed, 291 insertions(+), 172 deletions(-) rename apps/client/src/widgets/{view_widgets/table_view => collections/table}/columns.spec.ts (100%) rename apps/client/src/widgets/{view_widgets/table_view => collections/table}/columns.ts (98%) rename apps/client/src/widgets/{view_widgets/table_view => collections/table}/formatters.ts (100%) create mode 100644 apps/client/src/widgets/collections/table/index.css create mode 100644 apps/client/src/widgets/collections/table/index.tsx rename apps/client/src/widgets/{view_widgets/table_view => collections/table}/relation_editor.ts (100%) rename apps/client/src/widgets/{view_widgets/table_view => collections/table}/rows.ts (100%) diff --git a/apps/client/package.json b/apps/client/package.json index ca26c0b29..438a85707 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -58,6 +58,7 @@ "panzoom": "9.4.3", "preact": "10.27.1", "react-i18next": "15.7.3", + "react-tabulator": "0.21.0", "split.js": "1.6.5", "svg-pan-zoom": "3.6.2", "tabulator-tables": "6.3.1", diff --git a/apps/client/src/widgets/collections/NoteList.tsx b/apps/client/src/widgets/collections/NoteList.tsx index a963c50ef..0c17fd1f3 100644 --- a/apps/client/src/widgets/collections/NoteList.tsx +++ b/apps/client/src/widgets/collections/NoteList.tsx @@ -7,6 +7,7 @@ import { useEffect, useMemo, useRef, useState } from "preact/hooks"; import GeoView from "./geomap"; import ViewModeStorage from "../view_widgets/view_mode_storage"; import CalendarView from "./calendar"; +import TableView from "./table"; interface NoteListProps { note?: FNote | null; @@ -85,6 +86,8 @@ function getComponentByViewType(viewType: ViewTypeOptions, props: ViewModeProps< return ; case "calendar": return + case "table": + return } } diff --git a/apps/client/src/widgets/view_widgets/table_view/columns.spec.ts b/apps/client/src/widgets/collections/table/columns.spec.ts similarity index 100% rename from apps/client/src/widgets/view_widgets/table_view/columns.spec.ts rename to apps/client/src/widgets/collections/table/columns.spec.ts diff --git a/apps/client/src/widgets/view_widgets/table_view/columns.ts b/apps/client/src/widgets/collections/table/columns.ts similarity index 98% rename from apps/client/src/widgets/view_widgets/table_view/columns.ts rename to apps/client/src/widgets/collections/table/columns.ts index 39047fa70..2d99cc768 100644 --- a/apps/client/src/widgets/view_widgets/table_view/columns.ts +++ b/apps/client/src/widgets/collections/table/columns.ts @@ -1,7 +1,7 @@ -import { RelationEditor } from "./relation_editor.js"; import { MonospaceFormatter, NoteFormatter, NoteTitleFormatter, RowNumberFormatter } from "./formatters.js"; -import type { ColumnDefinition } from "tabulator-tables"; +import type { ColumnDefinition } from "react-tabulator"; import { LabelType } from "../../../services/promoted_attribute_definition_parser.js"; +import { RelationEditor } from "./relation_editor.js"; type ColumnType = LabelType | "relation"; diff --git a/apps/client/src/widgets/view_widgets/table_view/formatters.ts b/apps/client/src/widgets/collections/table/formatters.ts similarity index 100% rename from apps/client/src/widgets/view_widgets/table_view/formatters.ts rename to apps/client/src/widgets/collections/table/formatters.ts diff --git a/apps/client/src/widgets/collections/table/index.css b/apps/client/src/widgets/collections/table/index.css new file mode 100644 index 000000000..cc1eb1329 --- /dev/null +++ b/apps/client/src/widgets/collections/table/index.css @@ -0,0 +1,67 @@ +.table-view { + overflow: hidden; + position: relative; + height: 100%; + user-select: none; + padding: 0 5px 0 10px; +} + +.table-view-container { + height: 100%; +} + +.search-result-widget-content .table-view { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.tabulator-cell .autocomplete { + position: absolute; + top: 50%; + transform: translateY(-50%); + background: transparent; + outline: none !important; +} + +.tabulator .tabulator-header { + border-top: unset; + border-bottom-width: 1px; +} + +.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left, +.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left { + border-right-width: 1px; +} + +.tabulator .tabulator-footer { + background-color: unset; + padding: 5px 0; +} + +.tabulator .tabulator-footer .tabulator-footer-contents { + justify-content: left; + gap: 0.5em; +} + +.tabulator button.tree-expand, +.tabulator button.tree-collapse { + display: inline-block; + appearance: none; + border: 0; + background: transparent; + width: 1.5em; + position: relative; + vertical-align: middle; +} + +.tabulator button.tree-expand span, +.tabulator button.tree-collapse span { + position: absolute; + top: 0; + left: 0; + font-size: 1.5em; + transform: translateY(-50%); +} \ No newline at end of file diff --git a/apps/client/src/widgets/collections/table/index.tsx b/apps/client/src/widgets/collections/table/index.tsx new file mode 100644 index 000000000..b071c8716 --- /dev/null +++ b/apps/client/src/widgets/collections/table/index.tsx @@ -0,0 +1,52 @@ +import { useEffect, useState } from "preact/hooks"; +import { ViewModeProps } from "../interface"; +import "./index.css"; +import { ReactTabulator, ColumnDefinition } from "react-tabulator"; +import { buildColumnDefinitions } from "./columns"; +import getAttributeDefinitionInformation, { buildRowDefinitions, TableData } from "./rows"; +import { useNoteLabelInt } from "../../react/hooks"; +import { canReorderRows } from "../../view_widgets/table_view/dragging"; +import "react-tabulator/css/tabulator.css"; +import "../../../../src/stylesheets/table.css"; + +interface TableConfig { + tableData?: { + columns?: ColumnDefinition[]; + }; +} + +export default function TableView({ note, viewConfig }: ViewModeProps) { + const [ maxDepth ] = useNoteLabelInt(note, "maxNestingDepth") ?? -1; + const [ columnDefs, setColumnDefs ] = useState(); + const [ rowData, setRowData ] = useState(); + + useEffect(() => { + const info = getAttributeDefinitionInformation(note); + buildRowDefinitions(note, info, maxDepth).then(({ definitions: rowData, hasSubtree: hasChildren, rowNumber }) => { + const movableRows = canReorderRows(note) && !hasChildren; + const columnDefs = buildColumnDefinitions({ + info, + movableRows, + existingColumnData: viewConfig?.tableData?.columns, + rowNumberHint: rowNumber + }); + setColumnDefs(columnDefs); + setRowData(rowData); + }); + }, [ note ]); + + return ( +
+
+ {columnDefs && ( + + )} +
+
+ ) +} diff --git a/apps/client/src/widgets/view_widgets/table_view/relation_editor.ts b/apps/client/src/widgets/collections/table/relation_editor.ts similarity index 100% rename from apps/client/src/widgets/view_widgets/table_view/relation_editor.ts rename to apps/client/src/widgets/collections/table/relation_editor.ts diff --git a/apps/client/src/widgets/view_widgets/table_view/rows.ts b/apps/client/src/widgets/collections/table/rows.ts similarity index 100% rename from apps/client/src/widgets/view_widgets/table_view/rows.ts rename to apps/client/src/widgets/collections/table/rows.ts diff --git a/apps/client/src/widgets/react/hooks.tsx b/apps/client/src/widgets/react/hooks.tsx index c86fa544d..4e7200328 100644 --- a/apps/client/src/widgets/react/hooks.tsx +++ b/apps/client/src/widgets/react/hooks.tsx @@ -352,6 +352,15 @@ export function useNoteLabelBoolean(note: FNote | undefined | null, labelName: s return [ labelValue, setter ] as const; } +export function useNoteLabelInt(note: FNote | undefined | null, labelName: string): [ number | undefined, (newValue: number) => void] { + const [ value, setValue ] = useNoteLabel(note, labelName); + useDebugValue(labelName); + return [ + (value ? parseInt(value, 10) : undefined), + (newValue) => setValue(String(newValue)) + ] +} + export function useNoteBlob(note: FNote | null | undefined): [ FBlob | null | undefined ] { const [ blob, setBlob ] = useState(); diff --git a/apps/client/src/widgets/view_widgets/table_view/index.ts b/apps/client/src/widgets/view_widgets/table_view/index.ts index 0dd47b27a..0b3ac20af 100644 --- a/apps/client/src/widgets/view_widgets/table_view/index.ts +++ b/apps/client/src/widgets/view_widgets/table_view/index.ts @@ -3,8 +3,7 @@ import attributes from "../../../services/attributes.js"; import SpacedUpdate from "../../../services/spaced_update.js"; import type { EventData } from "../../../components/app_context.js"; import {Tabulator, SortModule, FormatModule, InteractionModule, EditModule, ResizeColumnsModule, FrozenColumnsModule, PersistenceModule, MoveColumnsModule, MoveRowsModule, ColumnDefinition, DataTreeModule, Options, RowComponent, ColumnComponent} from 'tabulator-tables'; -import "tabulator-tables/dist/css/tabulator.css"; -import "../../../../src/stylesheets/table.css"; + import { canReorderRows, configureReorderingRows } from "./dragging.js"; import buildFooter from "./footer.js"; import getAttributeDefinitionInformation, { buildRowDefinitions } from "./rows.js"; @@ -14,85 +13,13 @@ import TableColumnEditing from "./col_editing.js"; import TableRowEditing from "./row_editing.js"; const TPL = /*html*/` -
- -
-
`; export interface StateInfo { - tableData?: { - columns?: ColumnDefinition[]; - }; + } export default class TableView extends ViewMode { @@ -124,7 +51,6 @@ export default class TableView extends ViewMode { } private async renderTable(el: HTMLElement) { - const info = getAttributeDefinitionInformation(this.parentNote); const modules = [ SortModule, FormatModule, InteractionModule, EditModule, ResizeColumnsModule, FrozenColumnsModule, PersistenceModule, MoveColumnsModule, MoveRowsModule, DataTreeModule ]; for (const module of modules) { Tabulator.registerModule(module); @@ -137,16 +63,6 @@ export default class TableView extends ViewMode { const viewStorage = await this.viewStorage.restore(); this.persistentData = viewStorage?.tableData || {}; - this.maxDepth = parseInt(this.parentNote.getLabelValue("maxNestingDepth") ?? "-1", 10); - const { definitions: rowData, hasSubtree: hasChildren, rowNumber } = await buildRowDefinitions(this.parentNote, info, this.maxDepth); - this.rowNumberHint = rowNumber; - const movableRows = canReorderRows(this.parentNote) && !hasChildren; - const columnDefs = buildColumnDefinitions({ - info, - movableRows, - existingColumnData: this.persistentData.columns, - rowNumberHint: this.rowNumberHint - }); let opts: Options = { layout: "fitDataFill", index: "branchId", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 958e78a77..a04bf989d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,7 +131,7 @@ importers: version: 9.34.0 '@excalidraw/excalidraw': specifier: 0.18.0 - version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@fullcalendar/core': specifier: 6.1.19 version: 6.1.19 @@ -254,7 +254,10 @@ importers: version: 10.27.1 react-i18next: specifier: 15.7.3 - version: 15.7.3(i18next@25.4.2(typescript@5.9.2))(react-dom@19.1.0(react@16.14.0))(react@16.14.0)(typescript@5.9.2) + version: 15.7.3(i18next@25.4.2(typescript@5.9.2))(react@16.14.0)(typescript@5.9.2) + react-tabulator: + specifier: 0.21.0 + version: 0.21.0(prop-types@15.8.1)(react@16.14.0) split.js: specifier: 1.6.5 version: 1.6.5 @@ -1651,6 +1654,10 @@ packages: resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -4668,6 +4675,9 @@ packages: '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/better-sqlite3@7.6.13': resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} @@ -4997,6 +5007,9 @@ packages: peerDependencies: '@types/react': ^19.0.0 + '@types/react-tag-autocomplete@5.12.6': + resolution: {integrity: sha512-7TH9bghG+O3fwiyUrpriUs9wrOs744ilay+omshoH9ZzzDOSrNDoGmE0SfFtsxxOe5si93riFc3KHCptzzNQFQ==} + '@types/react@19.1.7': resolution: {integrity: sha512-BnsPLV43ddr05N71gaGzyZ5hzkCmGwhMvYc8zmvI8Ci1bRkkDSzDDVfAXfN2tk748OwI7ediiPX6PfT9p0QGVg==} @@ -7139,6 +7152,10 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + dotenv@17.2.2: resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==} engines: {node: '>=12'} @@ -8282,6 +8299,10 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + html-attributes@1.1.0: + resolution: {integrity: sha512-reT/KK6Ju+DZqAbAn3sIkpMH+658kEsaEjpNrej2O5XSUsH5SzVHX7NGZk5RiZcVi7l+RsV+5q3C6TqM5vxsVA==} + engines: {node: '>= 0.10.26', npm: '>=1.4.3'} + html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -10423,6 +10444,9 @@ packages: pica@7.1.1: resolution: {integrity: sha512-WY73tMvNzXWEld2LicT9Y260L43isrZ85tPuqRyvtkljSDLmnNFQmZICt4xUJMVulmcc6L9O7jbBrtx3DOz/YQ==} + pick-react-known-prop@0.1.5: + resolution: {integrity: sha512-SnDf64AVdvqoAFpHeZUKT9kdn40Ellj84CPALRxYWqNJ6r6f44eAAT+Jtkb0Suhiw7yg5BdOFAQ25OJnjG+afw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -11493,11 +11517,6 @@ packages: peerDependencies: react: ^16.14.0 - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} - peerDependencies: - react: ^19.1.0 - react-i18next@15.7.3: resolution: {integrity: sha512-AANws4tOE+QSq/IeMF/ncoHlMNZaVLxpa5uUGW1wjike68elVYr0018L9xYoqBr1OFO7G7boDPrbn0HpMCJxTw==} peerDependencies: @@ -11569,6 +11588,19 @@ packages: '@types/react': optional: true + react-tabulator@0.21.0: + resolution: {integrity: sha512-CMsxG3hRDay+sXt1RBdmeslQnXLtrHN8PtM0TiN6I15pJ/xIt+x8Vt9nWPm76BD22hucMuw/RHmaoRaoA2xOMQ==} + peerDependencies: + react: '>=15.6.2 || ^16.0.0 || ^17.0.0' + react-dom: '>=15.6.2 || ^16.0.0 || ^17.0.0' + + react-tag-autocomplete@5.13.1: + resolution: {integrity: sha512-ECcQnizAxw8VnEDUfCKuA2ZDQ0Fyxds3kVtE4NVAhJvBYOMMgkRNAM3UwyEXAQ0h7nnCwmIA+czJiwso07Mrqw==} + peerDependencies: + prop-types: ^15.0.0 + react: ^15.0.0 || ^16.0.0 + react-dom: ^15.0.0 || ^16.0.0 + react@16.14.0: resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} engines: {node: '>=0.10.0'} @@ -12025,9 +12057,6 @@ packages: scheduler@0.19.1: resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} - schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -12692,6 +12721,10 @@ packages: resolution: {integrity: sha512-ltBPlkvqk3bgCK7/N323atUpP3O3Y+DrGV4dcULrsSn4fZaaNnOmdplNznwfdWclAgvSr5rxjtzn/zJhRm6TKg==} engines: {node: '>=18'} + svg-attributes@1.0.0: + resolution: {integrity: sha512-opDCROGf0kXDKJFg0so8Ydg2jewgaWRuF/35Xxuqox54Rg12rR7pLnRaru06NfJ5WCxjUSRjT5AGcikxMmzG6g==} + engines: {node: '>= 0.10.26', npm: '>=1.4.3'} + svg-pan-zoom@3.6.2: resolution: {integrity: sha512-JwnvRWfVKw/Xzfe6jriFyfey/lWJLq4bUh2jwoR5ChWQuQoOH8FEh1l/bEp46iHHKHEJWIyFJETbazraxNWECg==} @@ -12746,6 +12779,9 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} + tabulator-tables@5.6.1: + resolution: {integrity: sha512-DsmaZqEmlQS/NL5ZJbVtoaeYjJgofEFp+2er7+uwKerGwd/E2rZbeQgux4+Ab1dxNJcbptiX7oUiTwogOnUdgQ==} + tabulator-tables@6.3.1: resolution: {integrity: sha512-qFW7kfadtcaISQIibKAIy0f3eeIXUVi8242Vly1iJfMD79kfEGzfczNuPBN/80hDxHzQJXYbmJ8VipI40hQtfA==} @@ -14562,6 +14598,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@1.0.2': {} '@braintree/sanitize-url@6.0.2': {} @@ -14677,6 +14718,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-block-quote@46.0.2': dependencies: @@ -14751,6 +14794,8 @@ snapshots: '@ckeditor/ckeditor5-core': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@46.0.2(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -14810,8 +14855,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 '@ckeditor/ckeditor5-watchdog': 46.0.2 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-dev-build-tools@43.1.0(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.2)': dependencies: @@ -14976,6 +15019,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-classic@46.0.2': dependencies: @@ -14985,18 +15030,18 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 - - '@ckeditor/ckeditor5-editor-decoupled@46.0.2': - dependencies: - '@ckeditor/ckeditor5-core': 46.0.2 - '@ckeditor/ckeditor5-engine': 46.0.2 - '@ckeditor/ckeditor5-ui': 46.0.2 - '@ckeditor/ckeditor5-utils': 46.0.2 - ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - es-toolkit: 1.39.5 transitivePeerDependencies: - supports-color + '@ckeditor/ckeditor5-editor-decoupled@46.0.2': + dependencies: + '@ckeditor/ckeditor5-core': 46.0.2 + '@ckeditor/ckeditor5-engine': 46.0.2 + '@ckeditor/ckeditor5-ui': 46.0.2 + '@ckeditor/ckeditor5-utils': 46.0.2 + ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + es-toolkit: 1.39.5 + '@ckeditor/ckeditor5-editor-inline@46.0.2': dependencies: '@ckeditor/ckeditor5-core': 46.0.2 @@ -15005,6 +15050,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-multi-root@46.0.2': dependencies: @@ -15027,6 +15074,8 @@ snapshots: '@ckeditor/ckeditor5-table': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-emoji@46.0.2': dependencies: @@ -15198,6 +15247,8 @@ snapshots: '@ckeditor/ckeditor5-widget': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-icons@46.0.2': {} @@ -15496,6 +15547,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-restricted-editing@46.0.2': dependencies: @@ -15539,6 +15592,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-slash-command@46.0.2': dependencies: @@ -15579,6 +15634,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 46.0.2 '@ckeditor/ckeditor5-utils': 46.0.2 ckeditor5: 46.0.2(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-special-characters@46.0.2': dependencies: @@ -16507,14 +16564,14 @@ snapshots: '@eslint/core': 0.15.2 levn: 0.4.1 - '@excalidraw/excalidraw@0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@excalidraw/excalidraw@0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: '@braintree/sanitize-url': 6.0.2 '@excalidraw/laser-pointer': 1.3.1 '@excalidraw/mermaid-to-excalidraw': 1.1.2 '@excalidraw/random-username': 1.1.0 - '@radix-ui/react-popover': 1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-tabs': 1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-popover': 1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-tabs': 1.0.2(react@16.14.0) browser-fs-access: 0.29.1 canvas-roundrect-polyfill: 0.0.1 clsx: 1.1.1 @@ -16538,7 +16595,6 @@ snapshots: points-on-curve: 1.0.1 pwacompat: 2.0.17 react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) roughjs: 4.6.6 sass: 1.51.0 tunnel-rat: 0.1.2(@types/react@19.1.7)(react@16.14.0) @@ -16578,11 +16634,10 @@ snapshots: '@floating-ui/core': 1.6.9 '@floating-ui/utils': 0.2.9 - '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@floating-ui/react-dom@2.1.2(react@16.14.0)': dependencies: '@floating-ui/dom': 1.6.13 react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) '@floating-ui/utils@0.2.9': {} @@ -17677,24 +17732,22 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-arrow@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-arrow@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-collection@1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-collection@1.0.1(react@16.14.0)': dependencies: '@babel/runtime': 7.27.6 '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) '@radix-ui/react-context': 1.0.0(react@16.14.0) - '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 1.0.1(react@16.14.0) '@radix-ui/react-slot': 1.0.1(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) '@radix-ui/react-compose-refs@1.0.0(react@16.14.0)': dependencies: @@ -17723,15 +17776,14 @@ snapshots: '@babel/runtime': 7.27.6 react: 16.14.0 - '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.1.7)(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) @@ -17742,13 +17794,12 @@ snapshots: optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) @@ -17766,105 +17817,97 @@ snapshots: optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-popover@1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-popover@1.1.6(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-context': 1.1.1(@types/react@19.1.7)(react@16.14.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.1.7)(react@16.14.0) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-id': 1.1.0(@types/react@19.1.7)(react@16.14.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-slot': 1.1.2(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.1.7)(react@16.14.0) aria-hidden: 1.2.4 react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) react-remove-scroll: 2.6.3(@types/react@19.1.7)(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-popper@1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-popper@1.2.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-arrow': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@floating-ui/react-dom': 2.1.2(react@16.14.0) + '@radix-ui/react-arrow': 1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-context': 1.1.1(@types/react@19.1.7)(react@16.14.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-rect': 1.1.0(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-size': 1.1.0(@types/react@19.1.7)(react@16.14.0) '@radix-ui/rect': 1.1.0 react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-portal@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-portal@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-presence@1.0.0(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-presence@1.0.0(react@16.14.0)': dependencies: '@babel/runtime': 7.27.6 '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) '@radix-ui/react-use-layout-effect': 1.0.0(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.1.7)(react@16.14.0) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.1.7)(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-primitive@1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-primitive@1.0.1(react@16.14.0)': dependencies: '@babel/runtime': 7.27.6 '@radix-ui/react-slot': 1.0.1(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) - '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react@16.14.0)': dependencies: '@radix-ui/react-slot': 1.1.2(@types/react@19.1.7)(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) optionalDependencies: '@types/react': 19.1.7 '@types/react-dom': 19.1.6(@types/react@19.1.7) - '@radix-ui/react-roving-focus@1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-roving-focus@1.0.2(react@16.14.0)': dependencies: '@babel/runtime': 7.27.6 '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-collection': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-collection': 1.0.1(react@16.14.0) '@radix-ui/react-compose-refs': 1.0.0(react@16.14.0) '@radix-ui/react-context': 1.0.0(react@16.14.0) '@radix-ui/react-direction': 1.0.0(react@16.14.0) '@radix-ui/react-id': 1.0.0(react@16.14.0) - '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-primitive': 1.0.1(react@16.14.0) '@radix-ui/react-use-callback-ref': 1.0.0(react@16.14.0) '@radix-ui/react-use-controllable-state': 1.0.0(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) '@radix-ui/react-slot@1.0.1(react@16.14.0)': dependencies: @@ -17879,19 +17922,18 @@ snapshots: optionalDependencies: '@types/react': 19.1.7 - '@radix-ui/react-tabs@1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0)': + '@radix-ui/react-tabs@1.0.2(react@16.14.0)': dependencies: '@babel/runtime': 7.27.6 '@radix-ui/primitive': 1.0.0 '@radix-ui/react-context': 1.0.0(react@16.14.0) '@radix-ui/react-direction': 1.0.0(react@16.14.0) '@radix-ui/react-id': 1.0.0(react@16.14.0) - '@radix-ui/react-presence': 1.0.0(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-primitive': 1.0.1(react-dom@19.1.0(react@16.14.0))(react@16.14.0) - '@radix-ui/react-roving-focus': 1.0.2(react-dom@19.1.0(react@16.14.0))(react@16.14.0) + '@radix-ui/react-presence': 1.0.0(react@16.14.0) + '@radix-ui/react-primitive': 1.0.1(react@16.14.0) + '@radix-ui/react-roving-focus': 1.0.2(react@16.14.0) '@radix-ui/react-use-controllable-state': 1.0.0(react@16.14.0) react: 16.14.0 - react-dom: 19.1.0(react@16.14.0) '@radix-ui/react-use-callback-ref@1.0.0(react@16.14.0)': dependencies: @@ -18940,6 +18982,10 @@ snapshots: '@types/aria-query@5.0.4': {} + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + '@types/better-sqlite3@7.6.13': dependencies: '@types/node': 22.15.21 @@ -19332,10 +19378,13 @@ snapshots: '@types/react': 19.1.7 optional: true + '@types/react-tag-autocomplete@5.12.6': + dependencies: + '@types/react': 19.1.7 + '@types/react@19.1.7': dependencies: csstype: 3.1.3 - optional: true '@types/readdir-glob@1.1.5': dependencies: @@ -21538,8 +21587,7 @@ snapshots: '@asamuzakjp/css-color': 3.1.4 rrweb-cssom: 0.8.0 - csstype@3.1.3: - optional: true + csstype@3.1.3: {} cytoscape-cose-bilkent@4.1.0(cytoscape@3.31.2): dependencies: @@ -22010,6 +22058,8 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + dotenv@16.6.1: {} + dotenv@17.2.2: {} dotignore@0.1.2: @@ -23572,6 +23622,8 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 + html-attributes@1.1.0: {} + html-encoding-sniffer@2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -26100,6 +26152,12 @@ snapshots: object-assign: 4.1.1 webworkify: 1.5.0 + pick-react-known-prop@0.1.5: + dependencies: + html-attributes: 1.1.0 + lodash.isplainobject: 4.0.6 + svg-attributes: 1.0.0 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -27174,19 +27232,13 @@ snapshots: react: 16.14.0 scheduler: 0.19.1 - react-dom@19.1.0(react@16.14.0): - dependencies: - react: 16.14.0 - scheduler: 0.26.0 - - react-i18next@15.7.3(i18next@25.4.2(typescript@5.9.2))(react-dom@19.1.0(react@16.14.0))(react@16.14.0)(typescript@5.9.2): + react-i18next@15.7.3(i18next@25.4.2(typescript@5.9.2))(react@16.14.0)(typescript@5.9.2): dependencies: '@babel/runtime': 7.27.6 html-parse-stringify: 3.0.1 i18next: 25.4.2(typescript@5.9.2) react: 16.14.0 optionalDependencies: - react-dom: 19.1.0(react@16.14.0) typescript: 5.9.2 react-interactive@0.8.3(react@16.14.0): @@ -27250,6 +27302,23 @@ snapshots: optionalDependencies: '@types/react': 19.1.7 + react-tabulator@0.21.0(prop-types@15.8.1)(react@16.14.0): + dependencies: + '@types/babel__traverse': 7.28.0 + '@types/react-tag-autocomplete': 5.12.6 + dotenv: 16.6.1 + pick-react-known-prop: 0.1.5 + react: 16.14.0 + react-tag-autocomplete: 5.13.1(prop-types@15.8.1)(react@16.14.0) + tabulator-tables: 5.6.1 + transitivePeerDependencies: + - prop-types + + react-tag-autocomplete@5.13.1(prop-types@15.8.1)(react@16.14.0): + dependencies: + prop-types: 15.8.1 + react: 16.14.0 + react@16.14.0: dependencies: loose-envify: 1.4.0 @@ -27828,8 +27897,6 @@ snapshots: loose-envify: 1.4.0 object-assign: 4.1.1 - scheduler@0.26.0: {} - schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 @@ -28708,6 +28775,8 @@ snapshots: magic-string: 0.30.18 zimmerframe: 1.1.2 + svg-attributes@1.0.0: {} + svg-pan-zoom@3.6.2: {} svg-tags@1.0.0: {} @@ -28786,6 +28855,8 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + tabulator-tables@5.6.1: {} + tabulator-tables@6.3.1: {} tailwindcss@4.1.12: {}