diff --git a/extensions/src/platform-scripture-editor/package-lock.json b/extensions/src/platform-scripture-editor/package-lock.json index 19007646f4c..990c4fee1aa 100644 --- a/extensions/src/platform-scripture-editor/package-lock.json +++ b/extensions/src/platform-scripture-editor/package-lock.json @@ -10,9 +10,11 @@ "license": "MIT", "dependencies": { "@sillsdev/scripture": "^2.0.3", - "platform-bible-utils": "file:../paranext-core/lib/platform-bible-utils" + "platform-bible-utils": "file:../../../lib/platform-bible-utils" }, "devDependencies": { + "@eten-tech-foundation/platform-editor": "~0.8.13", + "@eten-tech-foundation/scripture-utilities": "~0.1.6", "@stylistic/eslint-plugin-ts": "^2.13.0", "@swc/core": "1.13.3", "@tailwindcss/typography": "^0.5.16", @@ -43,12 +45,13 @@ "eslint-plugin-react-hooks": "^4.6.2", "glob": "^10.5.0", "lucide-react": "^0.475.0", - "papi-dts": "file:../paranext-core/lib/papi-dts", - "platform-bible-react": "file:../paranext-core/lib/platform-bible-react", + "papi-dts": "file:../../../lib/papi-dts", + "platform-bible-react": "file:../../../lib/platform-bible-react", "postcss": "^8.5.3", "postcss-loader": "^8.1.1", "prettier": "^3.5.2", "prettier-plugin-jsdoc": "^1.3.2", + "react-reverse-portal": "^2.2.0", "sass": "^1.85.0", "sass-loader": "^16.0.5", "stylelint": "^16.11.0", @@ -61,7 +64,7 @@ "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "tsconfig-paths-webpack-plugin": "^4.2.0", - "typescript": "^5.4.5", + "typescript": "^5.8.3", "webpack": "^5.105.2", "webpack-cli": "^5.1.4", "webpack-merge": "^6.0.1", @@ -72,7 +75,7 @@ "react-dom": ">=18.3.1" } }, - "../paranext-core/lib/papi-dts": { + "../../../lib/papi-dts": { "version": "0.0.1", "dev": true, "license": "MIT", @@ -85,44 +88,17 @@ "typescript": "^5.8.3" } }, - "../paranext-core/lib/papi-dts/node_modules/escape-string-regexp": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../paranext-core/lib/papi-dts/node_modules/platform-bible-utils": { - "resolved": "../paranext-core/lib/platform-bible-utils", - "link": true - }, - "../paranext-core/lib/papi-dts/node_modules/typescript": { - "version": "5.1.6", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "../paranext-core/lib/platform-bible-react": { + "../../../lib/platform-bible-react": { "version": "0.0.1", "dev": true, "license": "MIT", "dependencies": { "@eten-tech-foundation/platform-editor": "~0.8.13", "@eten-tech-foundation/scripture-utilities": "~0.1.6", - "@lexical/headless": "~0.40.0", - "@lexical/react": "~0.40.0", - "@lexical/rich-text": "~0.40.0", - "@lexical/table": "~0.40.0", + "@lexical/headless": "~0.41.0", + "@lexical/react": "~0.41.0", + "@lexical/rich-text": "~0.41.0", + "@lexical/table": "~0.41.0", "@radix-ui/react-avatar": "^1.1.9", "@radix-ui/react-checkbox": "^1.3.1", "@radix-ui/react-context-menu": "^2.2.15", @@ -149,7 +125,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.0.4", - "lexical": "~0.40.0", + "lexical": "~0.41.0", "lucide-react": "^0.475.0", "markdown-to-jsx": "^7.7.4", "next-themes": "^0.4.4", @@ -174,8 +150,8 @@ "@types/jest": "^29.5.14", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "@vitejs/plugin-react-swc": "^3.8.0", "@vitest/browser": "^3.2.4", "@vitest/coverage-v8": "^3.2.4", @@ -209,7 +185,7 @@ "react-dom": ">=18.3.1" } }, - "../paranext-core/lib/platform-bible-utils": { + "../../../lib/platform-bible-utils": { "version": "0.0.1", "license": "MIT", "dependencies": { @@ -220,16 +196,142 @@ "stringz": "^2.1.0" }, "devDependencies": { + "@types/dompurify": "^3.0.5", + "@types/jest": "^29.5.14", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", + "dts-bundle-generator": "^9.5.1", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.3", + "prettier": "^3.5.2", + "prettier-plugin-jsdoc": "^1.3.2", + "tslib": "^2.8.1", + "typedoc": "^0.28.3", + "typescript": "^5.8.3", + "vite": "^6.4.1", + "vitest": "^3.2.4" + } + }, + "../paranext-core/lib/papi-dts": { + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "electron-log": "^5.0.3", + "escape-string-regexp": "^5.0.0", + "platform-bible-utils": "file:../platform-bible-utils", + "typescript": "^5.8.3" + } + }, + "../paranext-core/lib/platform-bible-react": { + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "@babel/preset-env": "^7.26.9", + "@babel/preset-react": "^7.26.3", + "@babel/preset-typescript": "^7.26.0", + "@eten-tech-foundation/platform-editor": "~0.8.13", + "@eten-tech-foundation/scripture-utilities": "~0.1.6", + "@lexical/headless": "~0.40.0", + "@lexical/react": "~0.40.0", + "@lexical/rich-text": "~0.40.0", + "@lexical/table": "~0.40.0", + "@radix-ui/react-avatar": "^1.1.9", + "@radix-ui/react-checkbox": "^1.3.1", + "@radix-ui/react-context-menu": "^2.2.15", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.14", + "@radix-ui/react-label": "^2.1.6", + "@radix-ui/react-menubar": "^1.1.14", + "@radix-ui/react-popover": "^1.1.13", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.6", + "@radix-ui/react-select": "^2.2.4", + "@radix-ui/react-separator": "^1.1.6", + "@radix-ui/react-slider": "^1.3.4", + "@radix-ui/react-slot": "^1.2.4", + "@radix-ui/react-switch": "^1.2.4", + "@radix-ui/react-tabs": "^1.1.11", + "@radix-ui/react-toast": "^1.2.13", + "@radix-ui/react-toggle": "^1.1.10", + "@radix-ui/react-toggle-group": "^1.1.9", + "@radix-ui/react-tooltip": "^1.2.6", + "@senojs/rollup-plugin-style-inject": "^0.2.3", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/typography": "^0.5.16", + "@tanstack/react-table": "^8.21.3", + "@testing-library/dom": "^10.4.0", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", + "@testing-library/user-event": "^14.6.1", + "@types/jest": "^29.5.14", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "@vitejs/plugin-react-swc": "^3.8.0", + "@vitest/browser": "^3.2.4", + "@vitest/coverage-v8": "^3.2.4", + "autoprefixer": "^10.4.20", + "axe-playwright": "^2.1.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.0.4", + "dts-bundle-generator": "^9.5.1", + "eslint": "^8.57.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.3", + "lexical": "~0.40.0", + "lucide-react": "^0.475.0", + "markdown-to-jsx": "^7.7.4", + "next-themes": "^0.4.4", + "platform-bible-utils": "file:../platform-bible-utils", + "playwright": "^1.55.1", + "prettier": "^3.5.2", + "prettier-plugin-jsdoc": "^1.3.2", + "prettier-plugin-tailwindcss": "^0.6.11", + "react-hotkeys-hook": "^4.6.1", + "react-resizable-panels": "^3.0.6", + "remark-cli": "^12.0.1", + "remark-gfm": "^4.0.1", + "remark-mdx": "^3.1.0", + "sonner": "^1.7.4", + "stylelint": "^16.11.0", + "stylelint-config-recommended": "^14.0.1", + "stylelint-config-sass-guidelines": "^12.1.0", + "stylelint-config-tailwindcss": "^0.0.7", + "tailwind-merge": "^2.6.0", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "tailwindcss-scoped-preflight": "^2.2.4", + "tslib": "^2.8.1", + "typedoc": "^0.28.2", + "typescript": "^5.8.3", + "vaul": "^1.1.2", + "vite": "^6.4.1", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.2.4" + } + }, + "../paranext-core/lib/platform-bible-utils": { + "version": "0.0.1", + "extraneous": true, + "dependencies": { + "@eten-tech-foundation/scripture-utilities": "~0.1.6", "@types/dompurify": "^3.0.5", "@types/jest": "^29.5.14", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", + "async-mutex": "^0.5.0", + "dompurify": "^3.3.2", "dts-bundle-generator": "^9.5.1", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.3", + "jsonpath-plus": "^10.3.0", "prettier": "^3.5.2", "prettier-plugin-jsdoc": "^1.3.2", + "stringz": "^2.1.0", "tslib": "^2.8.1", "typedoc": "^0.28.3", "typescript": "^5.8.3", @@ -474,6 +576,97 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eten-tech-foundation/platform-editor": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@eten-tech-foundation/platform-editor/-/platform-editor-0.8.13.tgz", + "integrity": "sha512-BBdG3J6j6EMQ2H7NGzMmJv6ftefeo3GvfTKMwuYOOpGEdLv6JzkvDxzKG4SE6DeoLTU+1gACDQWWaCbre4qOuA==", + "dev": true, + "dependencies": { + "@eten-tech-foundation/scripture-utilities": "~0.1.6", + "@floating-ui/dom": "^1.7.4", + "@lexical/react": "^0.40.0", + "@lexical/selection": "^0.40.0", + "@lexical/text": "^0.40.0", + "@lexical/utils": "^0.40.0", + "@lexical/yjs": "^0.40.0", + "@sillsdev/scripture": "^2.0.2", + "fast-equals": "^5.2.2", + "lexical": "^0.40.0", + "quill-delta": "^5.1.0" + }, + "peerDependencies": { + "react": ">=18.3.1", + "react-dom": ">=18.3.1", + "yjs": ">=13.5.22" + }, + "peerDependenciesMeta": { + "yjs": { + "optional": true + } + } + }, + "node_modules/@eten-tech-foundation/scripture-utilities": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@eten-tech-foundation/scripture-utilities/-/scripture-utilities-0.1.6.tgz", + "integrity": "sha512-FNGpt2WK6qc+Et3lE5oH1M7mD17pLdJuqFXsIgTU8EqJKo/Fq1/EGydJOmD3Jh0/Tk4x3K/L10t/aWRUcaHe5w==", + "dev": true, + "dependencies": { + "@xmldom/xmldom": "^0.9.8" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.27.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.19.tgz", + "integrity": "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==", + "dev": true, + "dependencies": { + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "dev": true, + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "dev": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -622,6 +815,279 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@lexical/clipboard": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.40.0.tgz", + "integrity": "sha512-FWyAKwbGbmwLbG6biyxB/MQkELzcbd6E89Xufarbx/1VZ2pX/BMaeVD4J7ojHgIZ4omTNI6nKH26K4wWySCIGQ==", + "dev": true, + "dependencies": { + "@lexical/html": "0.40.0", + "@lexical/list": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/code": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.40.0.tgz", + "integrity": "sha512-xbo3lW3OC7sz0UnoME0tXQcgnekmuvsGAb1HZpFHAF0ZUCquB6/yK0+9QzknrTBH9y3Urqx0vM54xAqNQISOtg==", + "dev": true, + "dependencies": { + "@lexical/utils": "0.40.0", + "lexical": "0.40.0", + "prismjs": "^1.30.0" + } + }, + "node_modules/@lexical/devtools-core": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.40.0.tgz", + "integrity": "sha512-qOlN4CYXHkdVxAzrZ1Cdu7bAYf1se+R3y7MfjWa6WFFukf7n6+RAoNIWTzpTLM7h7fOrsJLyP0Goi5IZI9wAOQ==", + "dev": true, + "dependencies": { + "@lexical/html": "0.40.0", + "@lexical/link": "0.40.0", + "@lexical/mark": "0.40.0", + "@lexical/table": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + }, + "peerDependencies": { + "react": ">=17.x", + "react-dom": ">=17.x" + } + }, + "node_modules/@lexical/dragon": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.40.0.tgz", + "integrity": "sha512-QWBZw89CAkw2b3Fl942DxJ7M8/XxFFvVubw9Z7Ac6wgUkGgtF2wrK9F0H8cPZ3pzbUqL1v1EtwW1/XhlLfmQqw==", + "dev": true, + "dependencies": { + "@lexical/extension": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/extension": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/extension/-/extension-0.40.0.tgz", + "integrity": "sha512-kipdm0f+xe8ctxHt9S3NPZazMX3ILqIk5xMWxX2svdsRc7qIeMkl+5SLWnBqQA+e5ztLJqa7GSA4WMqu/dBZDQ==", + "dev": true, + "dependencies": { + "@lexical/utils": "0.40.0", + "@preact/signals-core": "^1.11.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/hashtag": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.40.0.tgz", + "integrity": "sha512-k4PKWa8xyMHnnh+ewUboeFr8wKemk1GoMZ6LKN4qnqNKGCHANyJKeHRVUzyLjbiSwcXTrBqtUTV4ZrJXGRIkEw==", + "dev": true, + "dependencies": { + "@lexical/text": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/history": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.40.0.tgz", + "integrity": "sha512-Jo/9Z1fPlv+IpBkUaVstyKminXWjM1A1yR9UPZv4a3B3e8Rn0gqa+EaY5CXSvscnmh2EHSD8I4s59D4rirUy8Q==", + "dev": true, + "dependencies": { + "@lexical/extension": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/html": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.40.0.tgz", + "integrity": "sha512-5EZeHbp9Q3Op2KRoVfFvX4QyMizYW5SJkrWkGG6h6g/Z9EDNjb3C7Wjqx7ZosCHcFze6Pgic/0yEaCc2fSUcEg==", + "dev": true, + "dependencies": { + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/link": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.40.0.tgz", + "integrity": "sha512-4EVMJQ6tKJR+1+YAJ2mhVsRR6Edk6b81hWKjnMZITKhEOKjylxO7bwuXYVYPEckBzL2mXkEhYX5aFnig5+HkMQ==", + "dev": true, + "dependencies": { + "@lexical/extension": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/list": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.40.0.tgz", + "integrity": "sha512-YHStiN56DOc6tDu/3LwalPtHH8/1R+peiDF+/ePpla9aSDJclAqhxRBYsqSZhO6Hu5QhAEIi2Me7Gi+uZdmCTw==", + "dev": true, + "dependencies": { + "@lexical/extension": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/mark": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.40.0.tgz", + "integrity": "sha512-9XJ0PQmeq5tDSgathAQs1ePMM5zaCBCbD4ShMXJf3fW1udI7e/Swn0Loxw9/VnER9fnVkyejGMC2oMWDQ80FVw==", + "dev": true, + "dependencies": { + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/markdown": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.40.0.tgz", + "integrity": "sha512-J0vO4jSPZaazBgFafJhLYaJPBxSMk1nhGnNiu6+TojqOe3tx/0vukCafowNxBDruZFns+r7HsSs+vkmGJtGsrA==", + "dev": true, + "dependencies": { + "@lexical/code": "0.40.0", + "@lexical/link": "0.40.0", + "@lexical/list": "0.40.0", + "@lexical/rich-text": "0.40.0", + "@lexical/text": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/offset": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.40.0.tgz", + "integrity": "sha512-USytxiqB/mU6tKy2nXs4jhgCES90l8N5lCYxVbho2L/cVXAzBCp1epG///B6Vgm+twSj+jQjhGZioktILnG+FQ==", + "dev": true, + "dependencies": { + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/overflow": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.40.0.tgz", + "integrity": "sha512-T1LE8R7LloV9t8m+5IQ7Djkqcbd4mOoX85Jh8cKQ58TFHbkwi8nSe+FJUi3fucOI2atDq9QZCJnpRUCHw4eEwQ==", + "dev": true, + "dependencies": { + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/plain-text": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.40.0.tgz", + "integrity": "sha512-mr6J1Fu34MwUNOPkzn3l/fZBpD91HLAxs6RBAQ6mfSW7jLXBVDlvhiB4ez9ud/jZ0bgLaY8EG7ooT7htdlkBUQ==", + "dev": true, + "dependencies": { + "@lexical/clipboard": "0.40.0", + "@lexical/dragon": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/react": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.40.0.tgz", + "integrity": "sha512-+J73I21LNT659f1IMTbxe055mKnt4H2SkHp3UDxrmWmkWmDaPcq7XG07i8/xCPtYz15aEXUQycqaWQc5pAqF5g==", + "dev": true, + "dependencies": { + "@floating-ui/react": "^0.27.16", + "@lexical/devtools-core": "0.40.0", + "@lexical/dragon": "0.40.0", + "@lexical/extension": "0.40.0", + "@lexical/hashtag": "0.40.0", + "@lexical/history": "0.40.0", + "@lexical/link": "0.40.0", + "@lexical/list": "0.40.0", + "@lexical/mark": "0.40.0", + "@lexical/markdown": "0.40.0", + "@lexical/overflow": "0.40.0", + "@lexical/plain-text": "0.40.0", + "@lexical/rich-text": "0.40.0", + "@lexical/table": "0.40.0", + "@lexical/text": "0.40.0", + "@lexical/utils": "0.40.0", + "@lexical/yjs": "0.40.0", + "lexical": "0.40.0", + "react-error-boundary": "^6.0.0" + }, + "peerDependencies": { + "react": ">=17.x", + "react-dom": ">=17.x" + } + }, + "node_modules/@lexical/rich-text": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.40.0.tgz", + "integrity": "sha512-aHW9gSYGzEfZNxx14j2xJhihrnKaWA1aoudteP4r7TkNlbfJ3xG9dxp7ItwrAKJlfvI0gkMc1/aZOUIqESbAkw==", + "dev": true, + "dependencies": { + "@lexical/clipboard": "0.40.0", + "@lexical/dragon": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/selection": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.40.0.tgz", + "integrity": "sha512-iFwZufMlIx9fZ+K3NQip9oxoHzuP+V9rVdkLnfUWC7aO4HNxVPSryEfUnbAs+F5xlOzyVHsu7Xa+CMHfIL8/gQ==", + "dev": true, + "dependencies": { + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/table": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.40.0.tgz", + "integrity": "sha512-pn5T7Uc80dH8LR2d/sepKc8SjiKKir40AF+5hW0MJAOYfoizd10x72AxPcM6iBYvI0rdW7rD7Lhko1qLmZ0pOw==", + "dev": true, + "dependencies": { + "@lexical/clipboard": "0.40.0", + "@lexical/extension": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/text": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.40.0.tgz", + "integrity": "sha512-cTMBrHPzlIRQUkopIUhPwSzcqQDGsCEdjpStylJficwMav9vG+/sJNSG4PFO+4ss5BZ/x7AoM3KH/P2SOzqdbw==", + "dev": true, + "dependencies": { + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/utils": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.40.0.tgz", + "integrity": "sha512-3wkzgQxeb137GtaGWZI23XYB+omGjfYlrvAPJOqcb5z8yS7iAiuHwWULdmi1/jPBClS7z9N8pkNzq06BP8QlZA==", + "dev": true, + "dependencies": { + "@lexical/selection": "0.40.0", + "lexical": "0.40.0" + } + }, + "node_modules/@lexical/yjs": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.40.0.tgz", + "integrity": "sha512-wpasbrlfzBnHhyuUunxZcGwOH+bqfxUuavGgwxDlTTlHJMnyF5bUG7ADcuqd3gFLB+dpABL0lWo6VxdSOo7fdg==", + "dev": true, + "dependencies": { + "@lexical/offset": "0.40.0", + "@lexical/selection": "0.40.0", + "lexical": "0.40.0" + }, + "peerDependencies": { + "yjs": ">=13.5.22" + } + }, "node_modules/@mdn/browser-compat-data": { "version": "5.3.14", "dev": true, @@ -962,7 +1428,17 @@ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/pkgr" + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@preact/signals-core": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.14.0.tgz", + "integrity": "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" } }, "node_modules/@rtsao/scc": { @@ -1942,6 +2418,15 @@ } } }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", + "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", + "dev": true, + "engines": { + "node": ">=14.6" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -4444,6 +4929,15 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/fast-equals": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz", + "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -5767,6 +6261,17 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", + "dev": true, + "peer": true, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -5968,6 +6473,34 @@ "node": ">= 0.8.0" } }, + "node_modules/lexical": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.40.0.tgz", + "integrity": "sha512-wNvd/AY13h/QJYvx565M/FSdRjy0l99W5/MFA2x+mbK3KnKa5BifZbHZ1J4/YssCkdyZhSlLwFkyDaYi7l2Dsw==", + "dev": true + }, + "node_modules/lib0": { + "version": "0.2.117", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.117.tgz", + "integrity": "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==", + "dev": true, + "peer": true, + "dependencies": { + "isomorphic.js": "^0.2.4" + }, + "bin": { + "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js", + "0gentesthtml": "bin/gentesthtml.js", + "0serve": "bin/0serve.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -6027,6 +6560,12 @@ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", "dev": true }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, "node_modules/lodash.defaults": { "version": "4.2.0", "dev": true, @@ -6042,6 +6581,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "dev": true + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "dev": true, @@ -7147,7 +7693,7 @@ "dev": true }, "node_modules/papi-dts": { - "resolved": "../paranext-core/lib/papi-dts", + "resolved": "../../../lib/papi-dts", "link": true }, "node_modules/parent-module": { @@ -7246,9 +7792,10 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -7334,11 +7881,11 @@ } }, "node_modules/platform-bible-react": { - "resolved": "../paranext-core/lib/platform-bible-react", + "resolved": "../../../lib/platform-bible-react", "link": true }, "node_modules/platform-bible-utils": { - "resolved": "../paranext-core/lib/platform-bible-utils", + "resolved": "../../../lib/platform-bible-utils", "link": true }, "node_modules/possible-typed-array-names": { @@ -7714,6 +8261,15 @@ "prettier": "^3.0.0" } }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "dev": true, @@ -7761,6 +8317,20 @@ ], "license": "MIT" }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "dev": true, + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -7786,6 +8356,25 @@ "react": "^18.3.1" } }, + "node_modules/react-error-boundary": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-6.1.1.tgz", + "integrity": "sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w==", + "dev": true, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-reverse-portal": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-reverse-portal/-/react-reverse-portal-2.3.0.tgz", + "integrity": "sha512-kvbPfLPKg6Y3S6tVq83us2RghvDpOS4GcJxbI7cZ0V0tuzUaSzblRIhVnKLOucfqF4lN/i9oWvEmpEi6bAOYlQ==", + "dev": true, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -9177,6 +9766,12 @@ "url": "https://opencollective.com/synckit" } }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "dev": true + }, "node_modules/table": { "version": "6.8.2", "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", @@ -9512,11 +10107,10 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -9805,9 +10399,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10384,6 +10978,24 @@ "node": ">=12" } }, + "node_modules/yjs": { + "version": "13.6.30", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.30.tgz", + "integrity": "sha512-vv/9h42eCMC81ZHDFswuu/MKzkl/vyq1BhaNGfHyOonwlG4CJbQF4oiBBJPvfdeCt/PlVDWh7Nov9D34YY09uQ==", + "dev": true, + "peer": true, + "dependencies": { + "lib0": "^0.2.99" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + }, + "funding": { + "type": "GitHub Sponsors ❤", + "url": "https://github.com/sponsors/dmonad" + } + }, "node_modules/yn": { "version": "3.1.1", "dev": true, @@ -10659,6 +11271,79 @@ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true }, + "@eten-tech-foundation/platform-editor": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@eten-tech-foundation/platform-editor/-/platform-editor-0.8.13.tgz", + "integrity": "sha512-BBdG3J6j6EMQ2H7NGzMmJv6ftefeo3GvfTKMwuYOOpGEdLv6JzkvDxzKG4SE6DeoLTU+1gACDQWWaCbre4qOuA==", + "dev": true, + "requires": { + "@eten-tech-foundation/scripture-utilities": "~0.1.6", + "@floating-ui/dom": "^1.7.4", + "@lexical/react": "^0.40.0", + "@lexical/selection": "^0.40.0", + "@lexical/text": "^0.40.0", + "@lexical/utils": "^0.40.0", + "@lexical/yjs": "^0.40.0", + "@sillsdev/scripture": "^2.0.2", + "fast-equals": "^5.2.2", + "lexical": "^0.40.0", + "quill-delta": "^5.1.0" + } + }, + "@eten-tech-foundation/scripture-utilities": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@eten-tech-foundation/scripture-utilities/-/scripture-utilities-0.1.6.tgz", + "integrity": "sha512-FNGpt2WK6qc+Et3lE5oH1M7mD17pLdJuqFXsIgTU8EqJKo/Fq1/EGydJOmD3Jh0/Tk4x3K/L10t/aWRUcaHe5w==", + "dev": true, + "requires": { + "@xmldom/xmldom": "^0.9.8" + } + }, + "@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "dev": true, + "requires": { + "@floating-ui/utils": "^0.2.11" + } + }, + "@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "dev": true, + "requires": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "@floating-ui/react": { + "version": "0.27.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.19.tgz", + "integrity": "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==", + "dev": true, + "requires": { + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", + "tabbable": "^6.0.0" + } + }, + "@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "dev": true, + "requires": { + "@floating-ui/dom": "^1.7.6" + } + }, + "@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "dev": true + }, "@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -10761,6 +11446,268 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@lexical/clipboard": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.40.0.tgz", + "integrity": "sha512-FWyAKwbGbmwLbG6biyxB/MQkELzcbd6E89Xufarbx/1VZ2pX/BMaeVD4J7ojHgIZ4omTNI6nKH26K4wWySCIGQ==", + "dev": true, + "requires": { + "@lexical/html": "0.40.0", + "@lexical/list": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/code": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.40.0.tgz", + "integrity": "sha512-xbo3lW3OC7sz0UnoME0tXQcgnekmuvsGAb1HZpFHAF0ZUCquB6/yK0+9QzknrTBH9y3Urqx0vM54xAqNQISOtg==", + "dev": true, + "requires": { + "@lexical/utils": "0.40.0", + "lexical": "0.40.0", + "prismjs": "^1.30.0" + } + }, + "@lexical/devtools-core": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.40.0.tgz", + "integrity": "sha512-qOlN4CYXHkdVxAzrZ1Cdu7bAYf1se+R3y7MfjWa6WFFukf7n6+RAoNIWTzpTLM7h7fOrsJLyP0Goi5IZI9wAOQ==", + "dev": true, + "requires": { + "@lexical/html": "0.40.0", + "@lexical/link": "0.40.0", + "@lexical/mark": "0.40.0", + "@lexical/table": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/dragon": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.40.0.tgz", + "integrity": "sha512-QWBZw89CAkw2b3Fl942DxJ7M8/XxFFvVubw9Z7Ac6wgUkGgtF2wrK9F0H8cPZ3pzbUqL1v1EtwW1/XhlLfmQqw==", + "dev": true, + "requires": { + "@lexical/extension": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/extension": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/extension/-/extension-0.40.0.tgz", + "integrity": "sha512-kipdm0f+xe8ctxHt9S3NPZazMX3ILqIk5xMWxX2svdsRc7qIeMkl+5SLWnBqQA+e5ztLJqa7GSA4WMqu/dBZDQ==", + "dev": true, + "requires": { + "@lexical/utils": "0.40.0", + "@preact/signals-core": "^1.11.0", + "lexical": "0.40.0" + } + }, + "@lexical/hashtag": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.40.0.tgz", + "integrity": "sha512-k4PKWa8xyMHnnh+ewUboeFr8wKemk1GoMZ6LKN4qnqNKGCHANyJKeHRVUzyLjbiSwcXTrBqtUTV4ZrJXGRIkEw==", + "dev": true, + "requires": { + "@lexical/text": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/history": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.40.0.tgz", + "integrity": "sha512-Jo/9Z1fPlv+IpBkUaVstyKminXWjM1A1yR9UPZv4a3B3e8Rn0gqa+EaY5CXSvscnmh2EHSD8I4s59D4rirUy8Q==", + "dev": true, + "requires": { + "@lexical/extension": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/html": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.40.0.tgz", + "integrity": "sha512-5EZeHbp9Q3Op2KRoVfFvX4QyMizYW5SJkrWkGG6h6g/Z9EDNjb3C7Wjqx7ZosCHcFze6Pgic/0yEaCc2fSUcEg==", + "dev": true, + "requires": { + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/link": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.40.0.tgz", + "integrity": "sha512-4EVMJQ6tKJR+1+YAJ2mhVsRR6Edk6b81hWKjnMZITKhEOKjylxO7bwuXYVYPEckBzL2mXkEhYX5aFnig5+HkMQ==", + "dev": true, + "requires": { + "@lexical/extension": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/list": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.40.0.tgz", + "integrity": "sha512-YHStiN56DOc6tDu/3LwalPtHH8/1R+peiDF+/ePpla9aSDJclAqhxRBYsqSZhO6Hu5QhAEIi2Me7Gi+uZdmCTw==", + "dev": true, + "requires": { + "@lexical/extension": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/mark": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.40.0.tgz", + "integrity": "sha512-9XJ0PQmeq5tDSgathAQs1ePMM5zaCBCbD4ShMXJf3fW1udI7e/Swn0Loxw9/VnER9fnVkyejGMC2oMWDQ80FVw==", + "dev": true, + "requires": { + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/markdown": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.40.0.tgz", + "integrity": "sha512-J0vO4jSPZaazBgFafJhLYaJPBxSMk1nhGnNiu6+TojqOe3tx/0vukCafowNxBDruZFns+r7HsSs+vkmGJtGsrA==", + "dev": true, + "requires": { + "@lexical/code": "0.40.0", + "@lexical/link": "0.40.0", + "@lexical/list": "0.40.0", + "@lexical/rich-text": "0.40.0", + "@lexical/text": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/offset": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.40.0.tgz", + "integrity": "sha512-USytxiqB/mU6tKy2nXs4jhgCES90l8N5lCYxVbho2L/cVXAzBCp1epG///B6Vgm+twSj+jQjhGZioktILnG+FQ==", + "dev": true, + "requires": { + "lexical": "0.40.0" + } + }, + "@lexical/overflow": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.40.0.tgz", + "integrity": "sha512-T1LE8R7LloV9t8m+5IQ7Djkqcbd4mOoX85Jh8cKQ58TFHbkwi8nSe+FJUi3fucOI2atDq9QZCJnpRUCHw4eEwQ==", + "dev": true, + "requires": { + "lexical": "0.40.0" + } + }, + "@lexical/plain-text": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.40.0.tgz", + "integrity": "sha512-mr6J1Fu34MwUNOPkzn3l/fZBpD91HLAxs6RBAQ6mfSW7jLXBVDlvhiB4ez9ud/jZ0bgLaY8EG7ooT7htdlkBUQ==", + "dev": true, + "requires": { + "@lexical/clipboard": "0.40.0", + "@lexical/dragon": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/react": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.40.0.tgz", + "integrity": "sha512-+J73I21LNT659f1IMTbxe055mKnt4H2SkHp3UDxrmWmkWmDaPcq7XG07i8/xCPtYz15aEXUQycqaWQc5pAqF5g==", + "dev": true, + "requires": { + "@floating-ui/react": "^0.27.16", + "@lexical/devtools-core": "0.40.0", + "@lexical/dragon": "0.40.0", + "@lexical/extension": "0.40.0", + "@lexical/hashtag": "0.40.0", + "@lexical/history": "0.40.0", + "@lexical/link": "0.40.0", + "@lexical/list": "0.40.0", + "@lexical/mark": "0.40.0", + "@lexical/markdown": "0.40.0", + "@lexical/overflow": "0.40.0", + "@lexical/plain-text": "0.40.0", + "@lexical/rich-text": "0.40.0", + "@lexical/table": "0.40.0", + "@lexical/text": "0.40.0", + "@lexical/utils": "0.40.0", + "@lexical/yjs": "0.40.0", + "lexical": "0.40.0", + "react-error-boundary": "^6.0.0" + } + }, + "@lexical/rich-text": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.40.0.tgz", + "integrity": "sha512-aHW9gSYGzEfZNxx14j2xJhihrnKaWA1aoudteP4r7TkNlbfJ3xG9dxp7ItwrAKJlfvI0gkMc1/aZOUIqESbAkw==", + "dev": true, + "requires": { + "@lexical/clipboard": "0.40.0", + "@lexical/dragon": "0.40.0", + "@lexical/selection": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/selection": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.40.0.tgz", + "integrity": "sha512-iFwZufMlIx9fZ+K3NQip9oxoHzuP+V9rVdkLnfUWC7aO4HNxVPSryEfUnbAs+F5xlOzyVHsu7Xa+CMHfIL8/gQ==", + "dev": true, + "requires": { + "lexical": "0.40.0" + } + }, + "@lexical/table": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.40.0.tgz", + "integrity": "sha512-pn5T7Uc80dH8LR2d/sepKc8SjiKKir40AF+5hW0MJAOYfoizd10x72AxPcM6iBYvI0rdW7rD7Lhko1qLmZ0pOw==", + "dev": true, + "requires": { + "@lexical/clipboard": "0.40.0", + "@lexical/extension": "0.40.0", + "@lexical/utils": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/text": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.40.0.tgz", + "integrity": "sha512-cTMBrHPzlIRQUkopIUhPwSzcqQDGsCEdjpStylJficwMav9vG+/sJNSG4PFO+4ss5BZ/x7AoM3KH/P2SOzqdbw==", + "dev": true, + "requires": { + "lexical": "0.40.0" + } + }, + "@lexical/utils": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.40.0.tgz", + "integrity": "sha512-3wkzgQxeb137GtaGWZI23XYB+omGjfYlrvAPJOqcb5z8yS7iAiuHwWULdmi1/jPBClS7z9N8pkNzq06BP8QlZA==", + "dev": true, + "requires": { + "@lexical/selection": "0.40.0", + "lexical": "0.40.0" + } + }, + "@lexical/yjs": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.40.0.tgz", + "integrity": "sha512-wpasbrlfzBnHhyuUunxZcGwOH+bqfxUuavGgwxDlTTlHJMnyF5bUG7ADcuqd3gFLB+dpABL0lWo6VxdSOo7fdg==", + "dev": true, + "requires": { + "@lexical/offset": "0.40.0", + "@lexical/selection": "0.40.0", + "lexical": "0.40.0" + } + }, "@mdn/browser-compat-data": { "version": "5.3.14", "dev": true @@ -10913,6 +11860,12 @@ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true }, + "@preact/signals-core": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.14.0.tgz", + "integrity": "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==", + "dev": true + }, "@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -11552,6 +12505,12 @@ "dev": true, "requires": {} }, + "@xmldom/xmldom": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", + "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", + "dev": true + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -13169,6 +14128,12 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, + "fast-equals": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz", + "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", + "dev": true + }, "fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -13996,6 +14961,13 @@ "version": "3.0.1", "dev": true }, + "isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", + "dev": true, + "peer": true + }, "iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -14147,6 +15119,22 @@ "type-check": "~0.4.0" } }, + "lexical": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.40.0.tgz", + "integrity": "sha512-wNvd/AY13h/QJYvx565M/FSdRjy0l99W5/MFA2x+mbK3KnKa5BifZbHZ1J4/YssCkdyZhSlLwFkyDaYi7l2Dsw==", + "dev": true + }, + "lib0": { + "version": "0.2.117", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.117.tgz", + "integrity": "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==", + "dev": true, + "peer": true, + "requires": { + "isomorphic.js": "^0.2.4" + } + }, "lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -14182,6 +15170,12 @@ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", "dev": true }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, "lodash.defaults": { "version": "4.2.0", "dev": true @@ -14194,6 +15188,12 @@ "version": "4.4.0", "dev": true }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, "lodash.isplainobject": { "version": "4.0.6", "dev": true @@ -14861,47 +15861,12 @@ "dev": true }, "papi-dts": { - "version": "file:../paranext-core/lib/papi-dts", + "version": "file:../../../lib/papi-dts", "requires": { "electron-log": "^5.0.3", "escape-string-regexp": "^5.0.0", "platform-bible-utils": "file:../platform-bible-utils", "typescript": "^5.8.3" - }, - "dependencies": { - "escape-string-regexp": { - "version": "5.0.0", - "dev": true - }, - "platform-bible-utils": { - "version": "file:../paranext-core/lib/platform-bible-utils", - "requires": { - "@eten-tech-foundation/scripture-utilities": "~0.1.6", - "@types/dompurify": "^3.0.5", - "@types/jest": "^29.5.14", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "async-mutex": "^0.5.0", - "dompurify": "^3.3.2", - "dts-bundle-generator": "^9.5.1", - "eslint": "^8.57.1", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.2.3", - "jsonpath-plus": "^10.3.0", - "prettier": "^3.5.2", - "prettier-plugin-jsdoc": "^1.3.2", - "stringz": "^2.1.0", - "tslib": "^2.8.1", - "typedoc": "^0.28.3", - "typescript": "^5.8.3", - "vite": "^6.4.1", - "vitest": "^3.2.4" - } - }, - "typescript": { - "version": "5.1.6", - "dev": true - } } }, "parent-module": { @@ -14968,7 +15933,9 @@ "dev": true }, "picomatch": { - "version": "2.3.1", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true }, "pify": { @@ -15022,17 +15989,17 @@ } }, "platform-bible-react": { - "version": "file:../paranext-core/lib/platform-bible-react", + "version": "file:../../../lib/platform-bible-react", "requires": { "@babel/preset-env": "^7.26.9", "@babel/preset-react": "^7.26.3", "@babel/preset-typescript": "^7.26.0", "@eten-tech-foundation/platform-editor": "~0.8.13", "@eten-tech-foundation/scripture-utilities": "~0.1.6", - "@lexical/headless": "~0.40.0", - "@lexical/react": "~0.40.0", - "@lexical/rich-text": "~0.40.0", - "@lexical/table": "~0.40.0", + "@lexical/headless": "~0.41.0", + "@lexical/react": "~0.41.0", + "@lexical/rich-text": "~0.41.0", + "@lexical/table": "~0.41.0", "@radix-ui/react-avatar": "^1.1.9", "@radix-ui/react-checkbox": "^1.3.1", "@radix-ui/react-context-menu": "^2.2.15", @@ -15064,8 +16031,8 @@ "@types/jest": "^29.5.14", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "@vitejs/plugin-react-swc": "^3.8.0", "@vitest/browser": "^3.2.4", "@vitest/coverage-v8": "^3.2.4", @@ -15078,7 +16045,7 @@ "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.3", - "lexical": "~0.40.0", + "lexical": "~0.41.0", "lucide-react": "^0.475.0", "markdown-to-jsx": "^7.7.4", "next-themes": "^0.4.4", @@ -15111,13 +16078,13 @@ } }, "platform-bible-utils": { - "version": "file:../paranext-core/lib/platform-bible-utils", + "version": "file:../../../lib/platform-bible-utils", "requires": { "@eten-tech-foundation/scripture-utilities": "~0.1.6", "@types/dompurify": "^3.0.5", "@types/jest": "^29.5.14", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^8.0.0", + "@typescript-eslint/parser": "^8.0.0", "async-mutex": "^0.5.0", "dompurify": "^3.3.2", "dts-bundle-generator": "^9.5.1", @@ -15314,6 +16281,12 @@ "mdast-util-from-markdown": "^2.0.0" } }, + "prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "dev": true @@ -15341,6 +16314,17 @@ "version": "1.2.3", "dev": true }, + "quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "dev": true, + "requires": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + } + }, "react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -15360,6 +16344,20 @@ "scheduler": "^0.23.2" } }, + "react-error-boundary": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-6.1.1.tgz", + "integrity": "sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w==", + "dev": true, + "requires": {} + }, + "react-reverse-portal": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-reverse-portal/-/react-reverse-portal-2.3.0.tgz", + "integrity": "sha512-kvbPfLPKg6Y3S6tVq83us2RghvDpOS4GcJxbI7cZ0V0tuzUaSzblRIhVnKLOucfqF4lN/i9oWvEmpEi6bAOYlQ==", + "dev": true, + "requires": {} + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -16253,6 +17251,12 @@ "@pkgr/core": "^0.2.9" } }, + "tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "dev": true + }, "table": { "version": "6.8.2", "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", @@ -16494,9 +17498,9 @@ "requires": {} }, "picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true } } @@ -16679,9 +17683,9 @@ } }, "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true }, "unbox-primitive": { @@ -17052,6 +18056,16 @@ "version": "20.2.9", "dev": true }, + "yjs": { + "version": "13.6.30", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.30.tgz", + "integrity": "sha512-vv/9h42eCMC81ZHDFswuu/MKzkl/vyq1BhaNGfHyOonwlG4CJbQF4oiBBJPvfdeCt/PlVDWh7Nov9D34YY09uQ==", + "dev": true, + "peer": true, + "requires": { + "lib0": "^0.2.99" + } + }, "yn": { "version": "3.1.1", "dev": true