diff --git a/Dockerfile b/Dockerfile index b80e9fd78f..09757b983b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20.18 as build +FROM node:22.11 as build ENV NODE_VERSION=20.14.0 WORKDIR /app diff --git a/Dockerfile.dev b/Dockerfile.dev index 1ee19e5718..480d9aefad 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:20.18-alpine +FROM node:22.11-alpine ENV NODE_VERSION=20.14.0 RUN apk add --no-cache git diff --git a/client/package-lock.json b/client/package-lock.json index f316e29b2c..1c40b2bf2b 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9,44 +9,44 @@ "version": "4.1.x-dev", "license": "MIT", "dependencies": { - "@angular/animations": "^18.2.8", - "@angular/cdk": "^18.2.8", - "@angular/common": "^18.2.8", - "@angular/compiler": "^18.2.8", - "@angular/core": "^18.2.8", - "@angular/forms": "^18.2.8", - "@angular/material": "^18.2.8", - "@angular/material-date-fns-adapter": "^18.2.8", - "@angular/platform-browser": "^18.2.8", - "@angular/platform-browser-dynamic": "^18.2.8", - "@angular/router": "^18.2.8", - "@angular/service-worker": "^18.2.8", + "@angular/animations": "^18.2.11", + "@angular/cdk": "^18.2.12", + "@angular/common": "^18.2.11", + "@angular/compiler": "^18.2.11", + "@angular/core": "^18.2.11", + "@angular/forms": "^18.2.11", + "@angular/material": "^18.2.12", + "@angular/material-date-fns-adapter": "^18.2.12", + "@angular/platform-browser": "^18.2.11", + "@angular/platform-browser-dynamic": "^18.2.11", + "@angular/router": "^18.2.11", + "@angular/service-worker": "^18.2.11", "@material/typography": "^14.0.0", "@ngx-pwa/local-storage": "^18.0.0", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "@tiptap/core": "^2.8.0", - "@tiptap/extension-color": "^2.8.0", - "@tiptap/extension-highlight": "^2.8.0", - "@tiptap/extension-image": "^2.8.0", - "@tiptap/extension-link": "^2.8.0", - "@tiptap/extension-subscript": "^2.8.0", - "@tiptap/extension-superscript": "^2.8.0", - "@tiptap/extension-table": "^2.8.0", - "@tiptap/extension-table-cell": "^2.8.0", - "@tiptap/extension-table-header": "^2.8.0", - "@tiptap/extension-table-row": "^2.8.0", - "@tiptap/extension-text-align": "^2.8.0", - "@tiptap/extension-text-style": "^2.8.0", - "@tiptap/extension-underline": "^2.8.0", - "@tiptap/pm": "^2.8.0", - "@tiptap/starter-kit": "^2.8.0", + "@tiptap/core": "^2.9.1", + "@tiptap/extension-color": "^2.9.1", + "@tiptap/extension-highlight": "^2.9.1", + "@tiptap/extension-image": "^2.9.1", + "@tiptap/extension-link": "^2.9.1", + "@tiptap/extension-subscript": "^2.9.1", + "@tiptap/extension-superscript": "^2.9.1", + "@tiptap/extension-table": "^2.9.1", + "@tiptap/extension-table-cell": "^2.9.1", + "@tiptap/extension-table-header": "^2.9.1", + "@tiptap/extension-table-row": "^2.9.1", + "@tiptap/extension-text-align": "^2.9.1", + "@tiptap/extension-text-style": "^2.9.1", + "@tiptap/extension-underline": "^2.9.1", + "@tiptap/pm": "^2.9.1", + "@tiptap/starter-kit": "^2.9.1", "@tsparticles/angular": "^3.0.0", "@tsparticles/engine": "^3.5.0", "@tsparticles/plugin-emitters": "^3.5.0", "@tsparticles/shape-text": "^3.5.0", "@tsparticles/slim": "^3.5.0", - "chart.js": "^4.4.4", + "chart.js": "^4.4.6", "cm-chess": "^3.5.1", "cm-chessboard": "^8.7.4", "date-fns": "^3.6.0", @@ -56,7 +56,7 @@ "jszip": "^3.10.1", "material-design-icons-iconfont": "^6.7.0", "ng2-charts": "^6.0.1", - "ng2-pdf-viewer": "^10.3.3", + "ng2-pdf-viewer": "^10.3.4", "ngx-cookie-service": "^18.0.0", "ngx-date-fns": "^11.0.0", "ngx-device-detector": "^8.0.0", @@ -64,28 +64,28 @@ "ngx-material-timepicker": "^13.1.1", "ngx-papaparse": "^8.0.0", "pdfjs-dist": "^4.6.82", - "pdfmake": "^0.2.14", + "pdfmake": "^0.2.15", "pofile": "^1.1.4", "qrcode": "^1.5.4", "rxjs": "^7.8.1", "tinycolor2": "1.6.0", - "video.js": "^8.18.1", + "video.js": "^8.19.1", "zone.js": "^0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "^18.2.8", - "@angular-eslint/builder": "^18.3.1", - "@angular-eslint/eslint-plugin": "^18.3.1", - "@angular-eslint/eslint-plugin-template": "^18.3.1", - "@angular-eslint/schematics": "^18.3.1", - "@angular-eslint/template-parser": "^18.3.1", - "@angular/cli": "^18.2.8", - "@angular/compiler-cli": "^18.2.8", - "@colsen1991/ngx-translate-extract-marker": "^2.0.8", + "@angular-devkit/build-angular": "^18.2.11", + "@angular-eslint/builder": "^18.4.0", + "@angular-eslint/eslint-plugin": "^18.4.0", + "@angular-eslint/eslint-plugin-template": "^18.4.0", + "@angular-eslint/schematics": "^18.4.0", + "@angular-eslint/template-parser": "^18.4.0", + "@angular/cli": "^18.2.11", + "@angular/compiler-cli": "^18.2.11", + "@colsen1991/ngx-translate-extract-marker": "^3.0.1", "@types/file-saver": "^2.0.7", "@types/jasmine": "~5.1.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.16.11", + "@types/node": "^20.17.6", "@types/pdfmake": "^0.2.9", "@types/qrcode": "^1.5.5", "@types/tinycolor2": "^1.4.6", @@ -129,12 +129,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1802.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.8.tgz", - "integrity": "sha512-/rtFQEKgS7LlB9oHr4NCBSdKnvP5kr8L5Hbd3Vl8hZOYK9QWjxKPEXnryA2d5+PCE98bBzZswCNXqELZCPTgIQ==", + "version": "0.1802.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.11.tgz", + "integrity": "sha512-p+XIc/j51aI83ExNdeZwvkm1F4wkuKMGUUoj0MVUUi5E6NoiMlXYm6uU8+HbRvPBzGy5+3KOiGp3Fks0UmDSAA==", "dev": true, "dependencies": { - "@angular-devkit/core": "18.2.8", + "@angular-devkit/core": "18.2.11", "rxjs": "7.8.1" }, "engines": { @@ -144,16 +144,16 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.8.tgz", - "integrity": "sha512-qK/iLk7A8vQp1CyiJV4DpwfLjPKoiOlTtFqoO5vD8Tyxmc+R06FQp6GJTsZ7JtrTLYSiH+QAWiY6NgF/Rj/hHg==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.11.tgz", + "integrity": "sha512-09Ln3NAdlMw/wMLgnwYU5VgWV5TPBEHolZUIvE9D8b6SFWBCowk3B3RWeAMgg7Peuf9SKwqQHBz2b1C7RTP/8g==", "dev": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.8", - "@angular-devkit/build-webpack": "0.1802.8", - "@angular-devkit/core": "18.2.8", - "@angular/build": "18.2.8", + "@angular-devkit/architect": "0.1802.11", + "@angular-devkit/build-webpack": "0.1802.11", + "@angular-devkit/core": "18.2.11", + "@angular/build": "18.2.11", "@babel/core": "7.25.2", "@babel/generator": "7.25.0", "@babel/helper-annotate-as-pure": "7.24.7", @@ -164,7 +164,7 @@ "@babel/preset-env": "7.25.3", "@babel/runtime": "7.25.0", "@discoveryjs/json-ext": "0.6.1", - "@ngtools/webpack": "18.2.8", + "@ngtools/webpack": "18.2.11", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", @@ -175,7 +175,7 @@ "css-loader": "7.1.2", "esbuild-wasm": "0.23.0", "fast-glob": "3.3.2", - "http-proxy-middleware": "3.0.0", + "http-proxy-middleware": "3.0.3", "https-proxy-agent": "7.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", @@ -317,12 +317,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1802.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.8.tgz", - "integrity": "sha512-uPpopkXkO66SSdjtVr7xCyQCPs/x6KUC76xkDc4j0b8EEHifTbi/fNpbkcZ6wBmoAfjKLWXfKvtkh0TqKK5Hkw==", + "version": "0.1802.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.11.tgz", + "integrity": "sha512-G76rNsyn1iQk7qjyr+K4rnDzfalmEswmwXQorypSDGaHYzIDY1SZXMoP4225WMq5fJNBOJrk82FA0PSfnPE+zQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1802.8", + "@angular-devkit/architect": "0.1802.11", "rxjs": "7.8.1" }, "engines": { @@ -336,9 +336,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.8.tgz", - "integrity": "sha512-4o2T6wsmXGE/v53+F8L7kGoN2+qzt03C9rtjLVQpOljzpJVttQ8bhvfWxyYLWwcl04RWqRa+82fpIZtBkOlZJw==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.11.tgz", + "integrity": "sha512-H9P1shRGigORWJHUY2BRa2YurT+DVminrhuaYHsbhXBRsPmgB2Dx/30YLTnC1s5XmR9QIRUCsg/d3kyT1wd5Zg==", "dev": true, "dependencies": { "ajv": "8.17.1", @@ -392,12 +392,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.8.tgz", - "integrity": "sha512-i/h2Oji5FhJMC7wDSnIl5XUe/qym+C1ZwScaATJwDyRLCUIynZkj5rLgdG/uK6l+H0PgvxigkF+akWpokkwW6w==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.11.tgz", + "integrity": "sha512-efRK3FotTFp4KD5u42jWfXpHUALXB9kJNsWiB4wEImKFH6CN+vjBspJQuLqk2oeBFh/7D2qRMc5P+2tZHM5hdw==", "dev": true, "dependencies": { - "@angular-devkit/core": "18.2.8", + "@angular-devkit/core": "18.2.11", "jsonc-parser": "3.3.1", "magic-string": "0.30.11", "ora": "5.4.1", @@ -410,9 +410,9 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-18.3.1.tgz", - "integrity": "sha512-cPc7Ye9zDs5M4i+feL6vob+mh7yX5vxvOS5KQIhneUrp5e9D+IGuNFMmBLlOPpmklSc9XJBtuvI5Zjuh4z1ETw==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-18.4.0.tgz", + "integrity": "sha512-FOzGHX/nHSV1wSduSsabsx3aqC1nfde0opEpEDSOJhxExDxKCwoS1XPy1aERGyKip4ZVA6phC3dLtoBH3QMkVQ==", "dev": true, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", @@ -420,19 +420,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", - "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.4.0.tgz", + "integrity": "sha512-HlFHt2qgdd+jqyVIkCXmrjHauXo/XY3Rp0UNabk83ejGi/raM/6lEFI7iFWzHxLyiAKk4OgGI5W26giSQw991A==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.1.tgz", - "integrity": "sha512-MP4Nm+SHboF8KdnN0KpPEGAaTTzDLPm3+S/4W3Mg8onqWCyadyd4mActh9mK/pvCj8TVlb/SW1zeTtdMYhwonw==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.4.0.tgz", + "integrity": "sha512-Saz9lkWPN3da7ZKW17UsOSN7DeY+TPh+wz/6GCNZCh67Uw2wvMC9agb+4hgpZNXYCP5+u7erqzxQmBoWnS/A+A==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.1", - "@angular-eslint/utils": "18.3.1" + "@angular-eslint/bundled-angular-compiler": "18.4.0", + "@angular-eslint/utils": "18.4.0" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -441,16 +441,45 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.3.1.tgz", - "integrity": "sha512-hBJ3+f7VSidvrtYaXH7Vp0sWvblA9jLK2c6uQzhYGWdEDUcTg7g7VI9ThW39WvMbHqkyzNE4PPOynK69cBEDGg==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.4.0.tgz", + "integrity": "sha512-n3uZFCy76DnggPqjSVFV3gYD1ik7jCG28o2/HO4kobcMNKnwW8XAlFUagQ4TipNQh7fQiAefsEqvv2quMsYDVw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.1", - "@angular-eslint/utils": "18.3.1", - "aria-query": "5.3.0", + "@angular-eslint/bundled-angular-compiler": "18.4.0", + "@angular-eslint/utils": "18.4.0", + "aria-query": "5.3.2", "axobject-query": "4.1.0" }, + "peerDependencies": { + "@typescript-eslint/types": "^7.11.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@angular-eslint/utils": { + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.4.0.tgz", + "integrity": "sha512-At1yS8GRviGBoaupiQwEOL4/IcZJCE/+2vpXdItMWPGB1HWetxlKAUZTMmIBX/r5Z7CoXxl+LbqpGhrhyzIQAg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.4.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/utils": { + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.4.0.tgz", + "integrity": "sha512-At1yS8GRviGBoaupiQwEOL4/IcZJCE/+2vpXdItMWPGB1HWetxlKAUZTMmIBX/r5Z7CoXxl+LbqpGhrhyzIQAg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.4.0" + }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0", @@ -458,13 +487,13 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.3.1.tgz", - "integrity": "sha512-BTsQHDu7LjvXannJTb5BqMPCFIHRNN94eRyb60VfjJxB/ZFtsbAQDFFOi5lEZsRsd4mBeUMuL9mW4IMcPtUQ9Q==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.4.0.tgz", + "integrity": "sha512-ssqe+0YCfekbWIXNdCrHfoPK/bPZAWybs0Bn/b99dfd8h8uyXkERo9AzIOx4Uyj/08SkP9aPL/0uOOEHDsRGwQ==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "18.3.1", - "@angular-eslint/eslint-plugin-template": "18.3.1", + "@angular-eslint/eslint-plugin": "18.4.0", + "@angular-eslint/eslint-plugin-template": "18.4.0", "ignore": "5.3.2", "semver": "7.6.3", "strip-json-comments": "3.1.1" @@ -475,12 +504,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.3.1.tgz", - "integrity": "sha512-JUUkfWH1G+u/Uk85ZYvJSt/qwN/Ko+jlXFtzBEcknJZsTWTwBcp36v77gPZe5FmKSziJZpyPUd+7Kiy6tuSCTw==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.4.0.tgz", + "integrity": "sha512-VTep3Xd3IOaRIPL+JN/TV4/2DqUPbjtF3TNY15diD/llnrEhqFnmsvMihexbQyTqzOG+zU554oK44YfvAtHOrw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/bundled-angular-compiler": "18.4.0", "eslint-scope": "^8.0.2" }, "peerDependencies": { @@ -504,24 +533,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@angular-eslint/utils": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", - "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.1" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" - } - }, "node_modules/@angular/animations": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.8.tgz", - "integrity": "sha512-dMSn2hg70siv3lhP+vqhMbgc923xw6XBUvnpCPEzhZqFHvPXfh/LubmsD5RtqHmjWebXtgVcgS+zg3Gq3jB2lg==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.11.tgz", + "integrity": "sha512-ghgXa2VhtyJJnTMuH2NYxCMsveQbZno44AZGygPqrcW8UQMQe9GulFaTXCH5s6/so2CLy2ZviIwSZQRgK0ZlDw==", "dependencies": { "tslib": "^2.3.0" }, @@ -529,17 +544,17 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.8" + "@angular/core": "18.2.11" } }, "node_modules/@angular/build": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.8.tgz", - "integrity": "sha512-ufuA4vHJSrL9SQW7bKV61DOoN1mm0t0ILTHaxSoCG3YF70cZJOX7+HNp3cK2uoldRMwbTOKSvCWBw54KKDRd5Q==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.11.tgz", + "integrity": "sha512-AgirvSCmqUKiDE3C0rl3JA68OkOqQWDKUvjqRHXCkhxldLVOVoeIl87+jBYK/v9gcmk+K+ju+5wbGEfu1FjhiQ==", "dev": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.8", + "@angular-devkit/architect": "0.1802.11", "@babel/core": "7.25.2", "@babel/helper-annotate-as-pure": "7.24.7", "@babel/helper-split-export-declaration": "7.24.7", @@ -630,9 +645,9 @@ } }, "node_modules/@angular/cdk": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.8.tgz", - "integrity": "sha512-J8A2FkwTBzLleAEWz6EgW73dEoeq87GREBPjTv8+2JV09LX+V3hnbgNk6zWq5k4OXtQNg9WrWP9QyRbUyA597g==", + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.12.tgz", + "integrity": "sha512-FOklA6KatPtb0yO0doRhBI/UVY23A8ZhOSws5VuZTQl/6r/jXEXGV9n5JQj4rm8t/6IrReO55hdyw9XfHfZFjQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -646,17 +661,17 @@ } }, "node_modules/@angular/cli": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.8.tgz", - "integrity": "sha512-GKXG7F7z5rxwZ8/bnW/Bp8/zsfE/BpHmIP/icLfUIOwv2kaY5OD2tfQssWXPEuqZzYq2AYz+wjVSbWjxGoja8A==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.11.tgz", + "integrity": "sha512-0JI1xjOLRemBPjdT/yVlabxc3Zkjqa/lhvVxxVC1XhKoW7yGxIGwNrQ4pka4CcQtCuktO6KPMmTGIu8YgC3cpw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1802.8", - "@angular-devkit/core": "18.2.8", - "@angular-devkit/schematics": "18.2.8", + "@angular-devkit/architect": "0.1802.11", + "@angular-devkit/core": "18.2.11", + "@angular-devkit/schematics": "18.2.11", "@inquirer/prompts": "5.3.8", "@listr2/prompt-adapter-inquirer": "2.0.15", - "@schematics/angular": "18.2.8", + "@schematics/angular": "18.2.11", "@yarnpkg/lockfile": "1.1.0", "ini": "4.1.3", "jsonc-parser": "3.3.1", @@ -679,9 +694,9 @@ } }, "node_modules/@angular/common": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.8.tgz", - "integrity": "sha512-TYsKtE5nVaIScWSLGSO34Skc+s3hB/BujSddnfQHoNFvPT/WR0dfmdlpVCTeLj+f50htFoMhW11tW99PbK+whQ==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.11.tgz", + "integrity": "sha512-bamJeISl2zUlvjPYebQWazUjhjXU9nrot42cQJng94SkvNENT9LTWfPYgc+Bd972Kg+31jG4H41rgFNs7zySmw==", "dependencies": { "tslib": "^2.3.0" }, @@ -689,14 +704,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.8", + "@angular/core": "18.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.8.tgz", - "integrity": "sha512-JRedHNfK1CCPVyeGQB5w3WBYqMA6X8Q240CkvjlGfn0pVXihf9DWk3nkSQJVgYxpvpHfxdgjaYZ5IpMzlkmkhw==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.11.tgz", + "integrity": "sha512-PSVL1YXUhTzkgJNYXiWk9eAZxNV6laQJRGdj9++C1q9m2S9/GlehZGzkt5GtC5rlUweJucCNvBC1+2D5FAt9vA==", "dependencies": { "tslib": "^2.3.0" }, @@ -704,7 +719,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.8" + "@angular/core": "18.2.11" }, "peerDependenciesMeta": { "@angular/core": { @@ -713,9 +728,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.8.tgz", - "integrity": "sha512-OksDE4LWQUCcIvMjtZF7eiDCdIMrcMMpC1+Q0PIYi7KmnqXFGs4/Y0NdJvtn/LrQznzz5WaKM3ZDVNZTRX4wmw==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.11.tgz", + "integrity": "sha512-YJlAOiXZUYP6/RK9isu5AOucmNZhFB9lpY/beMzkkWgDku+va8szm4BZbLJFz176IUteyLWF3IP4aE7P9OBlXw==", "dev": true, "dependencies": { "@babel/core": "7.25.2", @@ -736,7 +751,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.8", + "@angular/compiler": "18.2.11", "typescript": ">=5.4 <5.6" } }, @@ -769,9 +784,9 @@ } }, "node_modules/@angular/core": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.8.tgz", - "integrity": "sha512-NwIuX/Iby1jT6Iv1/s6S3wOFf8xfuQR3MPGvKhGgNtjXLbHG+TXceK9+QPZC0s9/Z8JR/hz+li34B79GrIKgUg==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.11.tgz", + "integrity": "sha512-/AGAFyZN8KR+kW5FUFCCBCj3qHyDDum7G0lJe5otrT9AqF6+g7PjF8yLha/6wPkJG7ri5xGLhini1sEivVeq/g==", "dependencies": { "tslib": "^2.3.0" }, @@ -784,9 +799,9 @@ } }, "node_modules/@angular/forms": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.8.tgz", - "integrity": "sha512-JCLki7KC6D5vF6dE6yGlBmW33khIgpHs8N9SzuiJtkQqNDTIQA8cPsGV6qpLpxflxASynQOX5lDkWYdQyfm77Q==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.11.tgz", + "integrity": "sha512-QjxayOxDTqsTJGBzfWd3nms1LZIXj2f1+wIPxxUNXyNS5ZaM7hBWkz2BTFYeewlD/HdNj0alNVCYK3M8ElLWYw==", "dependencies": { "tslib": "^2.3.0" }, @@ -794,22 +809,22 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.8", - "@angular/core": "18.2.8", - "@angular/platform-browser": "18.2.8", + "@angular/common": "18.2.11", + "@angular/core": "18.2.11", + "@angular/platform-browser": "18.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.8.tgz", - "integrity": "sha512-wQGMVsfQ9lQfih2VsWAvV4z3S3uBxrxc61owlE+K0T1BxH9u/jo3A/rnRitIdvR/L4NnYlfhCnmrW9K+Pl+WCg==", + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.12.tgz", + "integrity": "sha512-5q8Os6i3D1e3qN+RqP95UgIR+Kx3goncSSYDeT6yPNrdrcqcWdyDPXGK6UsZqTTx/CJee/I7ZxgVVK1YDoVASQ==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^18.0.0 || ^19.0.0", - "@angular/cdk": "18.2.8", + "@angular/cdk": "18.2.12", "@angular/common": "^18.0.0 || ^19.0.0", "@angular/core": "^18.0.0 || ^19.0.0", "@angular/forms": "^18.0.0 || ^19.0.0", @@ -818,22 +833,22 @@ } }, "node_modules/@angular/material-date-fns-adapter": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-18.2.8.tgz", - "integrity": "sha512-+x/xXUsati4q/KleRSS9H2x8hmNmGJgDRGX0ytF8et2PGlfvIWwiIyXAA8JjXwseVUx+sUyo3gGV7iZQRX2HYA==", + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-18.2.12.tgz", + "integrity": "sha512-Rb9CaHA6RAKWFKKA7yiYLKSmH3kNats3ovFJ/7kTIZy65D0k9nqtSXidiDaCcWMazcLxtF8sgvR2gZuv0B/9bg==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "^18.0.0 || ^19.0.0", - "@angular/material": "18.2.8", + "@angular/material": "18.2.12", "date-fns": ">2.20.0 <4.0" } }, "node_modules/@angular/platform-browser": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.8.tgz", - "integrity": "sha512-EPai4ZPqSq3ilLJUC85kPi9wo5j5suQovwtgRyjM/75D9Qy4TV19g8hkVM5Co/zrltO8a2G6vDscCNI5BeGw2A==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.11.tgz", + "integrity": "sha512-bzcP0QdPT/ncTxOx0t7901z5m0wDmkraTo/es4g8reV6VK9Ptv0QDuD8aDvrHh7sLCX5VgwDF9ohc6S2TpYUCA==", "dependencies": { "tslib": "^2.3.0" }, @@ -841,9 +856,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.8", - "@angular/common": "18.2.8", - "@angular/core": "18.2.8" + "@angular/animations": "18.2.11", + "@angular/common": "18.2.11", + "@angular/core": "18.2.11" }, "peerDependenciesMeta": { "@angular/animations": { @@ -852,9 +867,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.8.tgz", - "integrity": "sha512-poZoapDqyN/rxGKQ3C6esdPiPLMkSpP2v12hoEa12KHgfPk7T1e+a+NMyJjV8HeOY3WyvL7tGRhW0NPTajTkhw==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.11.tgz", + "integrity": "sha512-a30U4ZdTZSvL17xWwOq6xh9ToCDP2K7/j1HTJFREObbuAtZTa/6IVgBUM6oOMNQ43kHkT6Mr9Emkgf9iGtWwfw==", "dependencies": { "tslib": "^2.3.0" }, @@ -862,16 +877,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.8", - "@angular/compiler": "18.2.8", - "@angular/core": "18.2.8", - "@angular/platform-browser": "18.2.8" + "@angular/common": "18.2.11", + "@angular/compiler": "18.2.11", + "@angular/core": "18.2.11", + "@angular/platform-browser": "18.2.11" } }, "node_modules/@angular/router": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.8.tgz", - "integrity": "sha512-L+olYgxIiBq+tbfayVI0cv1yOuymsw33msnGC2l/vpc9sSVfqGzESFnB4yMVU3vHtE9v6v2Y6O+iV44/b79W/g==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.11.tgz", + "integrity": "sha512-xh4+t4pNBWxeH1a6GIoEGVSRZO4NDKK8q6b+AzB5GBgKsYgOz2lc74RXIPA//pK3aHrS9qD4sJLlodwgE/1+bA==", "dependencies": { "tslib": "^2.3.0" }, @@ -879,16 +894,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.8", - "@angular/core": "18.2.8", - "@angular/platform-browser": "18.2.8", + "@angular/common": "18.2.11", + "@angular/core": "18.2.11", + "@angular/platform-browser": "18.2.11", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.2.8.tgz", - "integrity": "sha512-LQktgS2Hn845ASWNyjde18V+CHkkPeCzORfh0ChYKiOmXYFtj/myEik5o/QI/G13Kaymy+vcuwQKiUuZjZiD1w==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.2.11.tgz", + "integrity": "sha512-FZ1yHCAmmbg+NYNFtvrZE8RzgsSnWgsL2ef+mvlfC/fxyu4pyoZT4+ZshwN7k55L++6M/RgdV7cZevPN4qGNrA==", "dependencies": { "tslib": "^2.3.0" }, @@ -899,8 +914,8 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.8", - "@angular/core": "18.2.8" + "@angular/common": "18.2.11", + "@angular/core": "18.2.11" } }, "node_modules/@babel/code-frame": { @@ -2666,20 +2681,16 @@ } }, "node_modules/@colsen1991/ngx-translate-extract-marker": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@colsen1991/ngx-translate-extract-marker/-/ngx-translate-extract-marker-2.0.8.tgz", - "integrity": "sha512-nYcjHifvXHtF3J4thQE6Lmu+AGNORgpCLYx55PY+XxzWRWfziuKIHhoIbNf9vwc9mMOZakJqfAjvpO+pN9AWdw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@colsen1991/ngx-translate-extract-marker/-/ngx-translate-extract-marker-3.0.1.tgz", + "integrity": "sha512-faQeH8zTKB8U+7kdsL54Mj48uJuMKhZ0/t2qONrxyBE5GwWGWxTf778cBi4UR23nOmBzo8A2fyEXCY0gtdkOVQ==", "dev": true, "dependencies": { "tslib": "^2.3.0" }, - "engines": { - "node": ">=16", - "npm": ">=8" - }, "peerDependencies": { - "@angular/common": ">=13.0.0", - "@angular/core": ">=13.0.0" + "@angular/common": ">=14.2.0", + "@angular/core": ">=14.2.0" } }, "node_modules/@cspotcode/source-map-support": { @@ -3269,13 +3280,14 @@ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "node_modules/@foliojs-fork/pdfkit": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.14.0.tgz", - "integrity": "sha512-nMOiQAv6id89MT3tVTCgc7HxD5ZMANwio2o5yvs5sexQkC0KI3BLaLakpsrHmFfeGFAhqPmZATZGbJGXTUebpg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.15.1.tgz", + "integrity": "sha512-4Cq2onHZAhThIfzv3/AFTPALqHzbmV8uNvgRELULWNbsZATgVeqEL4zHOzCyblLfX6tMXVO2BVaPcXboIxGjiw==", "dependencies": { - "@foliojs-fork/fontkit": "^1.9.1", + "@foliojs-fork/fontkit": "^1.9.2", "@foliojs-fork/linebreak": "^1.1.1", "crypto-js": "^4.2.0", + "jpeg-exif": "^1.1.4", "png-js": "^1.0.0" } }, @@ -4074,9 +4086,9 @@ ] }, "node_modules/@ngtools/webpack": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.8.tgz", - "integrity": "sha512-sq0kI8gEen4QlM6X8XqOYy7j4B8iLCYNo+iKxatV36ts4AXH0MuVkP56+oMaoH5oZNoSqd0RlfnotEHfvJAr8A==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.11.tgz", + "integrity": "sha512-iTdUGJ5O7yMm1DyCzyoMDMxBJ68emUSSXPWbQzEEdcqmtifRebn+VAq4vHN8OmtGM1mtuKeLEsbiZP8ywrw7Ug==", "dev": true, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0", @@ -4683,13 +4695,13 @@ ] }, "node_modules/@schematics/angular": { - "version": "18.2.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.8.tgz", - "integrity": "sha512-62Sr7/j/dlhZorxH4GzQgpJy0s162BVts0Q7knZuEacP4VL+IWOUE1NS9OFkh/cbomoyXBdoewkZ5Zd1dVX78w==", + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.11.tgz", + "integrity": "sha512-jT54mc9+hPOwie9bji/g2krVuK1kkNh2PNFGwfgCg3Ofmt3hcyOBai1DKuot5uLTX4VCCbvfwiVR/hJniQl2SA==", "dev": true, "dependencies": { - "@angular-devkit/core": "18.2.8", - "@angular-devkit/schematics": "18.2.8", + "@angular-devkit/core": "18.2.11", + "@angular-devkit/schematics": "18.2.11", "jsonc-parser": "3.3.1" }, "engines": { @@ -4791,9 +4803,9 @@ "dev": true }, "node_modules/@tiptap/core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.8.0.tgz", - "integrity": "sha512-xsqDI4BNzYRWRtBq7+/38ThhqEr7uG9Njip1x+9/wgR3vWPBFnBkYJTz6jSxS35NRE6BSnERm4/B/vrLuY1Hdw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.9.1.tgz", + "integrity": "sha512-tifnLL/ARzQ6/FGEJjVwj9UT3v+pENdWHdk9x6F3X0mB1y0SeCjV21wpFLYESzwNdBPAj8NMp8Behv7dBnhIfw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4803,9 +4815,9 @@ } }, "node_modules/@tiptap/extension-blockquote": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.8.0.tgz", - "integrity": "sha512-m3CKrOIvV7fY1Ak2gYf5LkKiz6AHxHpg6wxfVaJvdBqXgLyVtHo552N+A4oSHOSRbB4AG9EBQ2NeBM8cdEQ4MA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.9.1.tgz", + "integrity": "sha512-Y0jZxc/pdkvcsftmEZFyG+73um8xrx6/DMfgUcNg3JAM63CISedNcr+OEI11L0oFk1KFT7/aQ9996GM6Kubdqg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4815,9 +4827,9 @@ } }, "node_modules/@tiptap/extension-bold": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.8.0.tgz", - "integrity": "sha512-U1YkZBxDkSLNvPNiqxB5g42IeJHr27C7zDb/yGQN2xL4UBeg4O9xVhCFfe32f6tLwivSL0dar4ScElpaCJuqow==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.9.1.tgz", + "integrity": "sha512-e2P1zGpnnt4+TyxTC5pX/lPxPasZcuHCYXY0iwQ3bf8qRQQEjDfj3X7EI+cXqILtnhOiviEOcYmeu5op2WhQDg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4827,23 +4839,21 @@ } }, "node_modules/@tiptap/extension-bullet-list": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.8.0.tgz", - "integrity": "sha512-H4O2X0ozbc/ce9/XF1H98sqWVUdtt7jzy7hMBunwmY8ZxI4dHtcRkeg81CZbpKTqOqRrMCLWjE3M2tgiDXrDkA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.9.1.tgz", + "integrity": "sha512-0hizL/0j9PragJObjAWUVSuGhN1jKjCFnhLQVRxtx4HutcvS/lhoWMvFg6ZF8xqWgIa06n6A7MaknQkqhTdhKA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/extension-list-item": "^2.7.0", - "@tiptap/extension-text-style": "^2.7.0" + "@tiptap/core": "^2.7.0" } }, "node_modules/@tiptap/extension-code": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.8.0.tgz", - "integrity": "sha512-VSFn3sFF6qPpOGkXFhik8oYRH5iByVJpFEFd/duIEftmS0MdPzkbSItOpN3mc9xsJ5dCX80LYaResSj5hr5zkA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.9.1.tgz", + "integrity": "sha512-WQqcVGe7i/E+yO3wz5XQteU1ETNZ00euUEl4ylVVmH2NM4Dh0KDjEhbhHlCM0iCfLUo7jhjC7dmS+hMdPUb+Tg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4853,9 +4863,9 @@ } }, "node_modules/@tiptap/extension-code-block": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.8.0.tgz", - "integrity": "sha512-POuA5Igx+Dto0DTazoBFAQTj/M/FCdkqRVD9Uhsxhv49swPyANTJRr05vgbgtHB+NDDsZfCawVh7pI0IAD/O0w==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.9.1.tgz", + "integrity": "sha512-A/50wPWDqEUUUPhrwRKILP5gXMO5UlQ0F6uBRGYB9CEVOREam9yIgvONOnZVJtszHqOayjIVMXbH/JMBeq11/g==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4866,9 +4876,9 @@ } }, "node_modules/@tiptap/extension-color": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-color/-/extension-color-2.8.0.tgz", - "integrity": "sha512-b0ZIDaZKTDVdTb0PMgtOiPzgCkYhvDldjzdWyPLsjWup5x9/zPasH5X/2SfMuwtjt+cKj6YBPveJjF7w5ApK7w==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-color/-/extension-color-2.9.1.tgz", + "integrity": "sha512-9h4FcCDenOmr8x8/Vfzg9PBYrgXIXTi2x8JiaTbrQX+Ufea1SMx+Ko/Vowp7SGMnBAsB+sXkTVhAhiXDQbtWcQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4879,9 +4889,9 @@ } }, "node_modules/@tiptap/extension-document": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.8.0.tgz", - "integrity": "sha512-mp7Isx1sVc/ifeW4uW/PexGQ9exN3NRUOebSpnLfqXeWYk4y1RS1PA/3+IHkOPVetbnapgPjFx/DswlCP3XLjA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.9.1.tgz", + "integrity": "sha512-1a+HCoDPnBttjqExfYLwfABq8MYdiowhy/wp8eCxVb6KGFEENO53KapstISvPzqH7eOi+qRjBB1KtVYb/ZXicg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4891,9 +4901,9 @@ } }, "node_modules/@tiptap/extension-dropcursor": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.8.0.tgz", - "integrity": "sha512-rAFvx44YuT6dtS1c+ALw0ROAGI16l5L1HxquL4hR1gtxDcTieST5xhw5bkshXlmrlfotZXPrhokzqA7qjhZtJw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.9.1.tgz", + "integrity": "sha512-wJZspSmJRkDBtPkzFz1g7gvZOEOayk8s93UHsgbJxcV4VWHYleZ5XhT74sZunSjefNDm3qC6v2BSgLp3vNHVKQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4904,9 +4914,9 @@ } }, "node_modules/@tiptap/extension-gapcursor": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.8.0.tgz", - "integrity": "sha512-Be1LWCmvteQInOnNVN+HTqc1XWsj1bCl+Q7et8qqNjtGtTaCbdCp8ppcH1SKJxNTM/RLUtPyJ8FDgOTj51ixCA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.9.1.tgz", + "integrity": "sha512-jsRBmX01vr+5H02GljiHMo0n5H1vzoMLmFarxe0Yq2d2l9G/WV2VWX2XnGliqZAYWd1bI0phs7uLQIN3mxGQTw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4917,9 +4927,9 @@ } }, "node_modules/@tiptap/extension-hard-break": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.8.0.tgz", - "integrity": "sha512-vqiIfviNiCmy/pJTHuDSCAGL2O4QDEdDmAvGJu8oRmElUrnlg8DbJUfKvn6DWQHNSQwRb+LDrwWlzAYj1K9u6A==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.9.1.tgz", + "integrity": "sha512-fCuaOD/b7nDjm47PZ58oanq7y4ccS2wjPh42Qm0B0yipu/1fmC8eS1SmaXmk28F89BLtuL6uOCtR1spe+lZtlQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4929,9 +4939,9 @@ } }, "node_modules/@tiptap/extension-heading": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.8.0.tgz", - "integrity": "sha512-4inWgrTPiqlivPmEHFOM5ck2UsmOsbKKPtqga6bALvWPmCv24S6/EBwFp8Jz4YABabXDnkviihmGu0LpP9D69w==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.9.1.tgz", + "integrity": "sha512-SjZowzLixOFaCrV2cMaWi1mp8REK0zK1b3OcVx7bCZfVSmsOETJyrAIUpCKA8o60NwF7pwhBg0MN8oXlNKMeFw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4941,9 +4951,9 @@ } }, "node_modules/@tiptap/extension-highlight": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.8.0.tgz", - "integrity": "sha512-vyqX7D449nuARhI0AyRqtIZReFg3sfc/U/q1p3JOjtUoW6z2jmDTzshiKRrSg+Jf7Hhzj1pqwU+6+CpelPPDpA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.9.1.tgz", + "integrity": "sha512-ro3bARRgxb4v8w6fPVfG1kO2UWtLgKI5ESfsQ9CqiZuRkZdRKhM5ZpXPIky28Pn7CxhDUSXBXS/MhvP0VuhMJQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4953,9 +4963,9 @@ } }, "node_modules/@tiptap/extension-history": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.8.0.tgz", - "integrity": "sha512-u5YS0J5Egsxt8TUWMMAC3QhPZaak+IzQeyHch4gtqxftx96tprItY7AD/A3pGDF2uCSnN+SZrk6yVexm6EncDw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.9.1.tgz", + "integrity": "sha512-wp9qR1NM+LpvyLZFmdNaAkDq0d4jDJ7z7Fz7icFQPu31NVxfQYO3IXNmvJDCNu8hFAbImpA5aG8MBuwzRo0H9w==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4966,9 +4976,9 @@ } }, "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.8.0.tgz", - "integrity": "sha512-Sn/MI8WVFBoIYSIHA9NJryJIyCEzZdRysau8pC5TFnfifre0QV1ksPz2bgF+DyCD69ozQiRdBBHDEwKe47ZbfQ==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.9.1.tgz", + "integrity": "sha512-ydUhABeaBI1CoJp+/BBqPhXINfesp1qMNL/jiDcMsB66fsD4nOyphpAJT7FaRFZFtQVF06+nttBtFZVkITQVqg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4979,9 +4989,9 @@ } }, "node_modules/@tiptap/extension-image": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.8.0.tgz", - "integrity": "sha512-5CReomgHGTUgxaX8P3i6qiC9VRWcWQgVoYtds4ZM52LVx/oGwMxQ4ECyzdVYKaRW+6PrNnAe6ew3Qpd5Wk0cIg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.9.1.tgz", + "integrity": "sha512-aGqJnsuS8oagIhsx7wetm8jw4NEDsOV0OSx4FQ4VPlUqWlnzK0N+erFKKJmXTdAxL8PGzoPSlITFH63MV3eV3Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -4991,9 +5001,9 @@ } }, "node_modules/@tiptap/extension-italic": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.8.0.tgz", - "integrity": "sha512-PwwSE2LTYiHI47NJnsfhBmPiLE8IXZYqaSoNPU6flPrk1KxEzqvRI1joKZBmD9wuqzmHJ93VFIeZcC+kfwi8ZA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.9.1.tgz", + "integrity": "sha512-VkNA6Vz96+/+7uBlsgM7bDXXx4b62T1fDam/3UKifA72aD/fZckeWrbT7KrtdUbzuIniJSbA0lpTs5FY29+86Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5003,9 +5013,9 @@ } }, "node_modules/@tiptap/extension-link": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.8.0.tgz", - "integrity": "sha512-p67hCG/pYCiOK/oCTPZnlkw9Ei7KJ7kCKFaluTcAmr5j8IBdYfDqSMDNCT4vGXBvKFh4X6xD7S7QvOqcH0Gn9A==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.9.1.tgz", + "integrity": "sha512-yG+e3e8cCCN9dZjX4ttEe3e2xhh58ryi3REJV4MdiEkOT9QF75Bl5pUbMIS4tQ8HkOr04QBFMHKM12kbSxg1BA==", "dependencies": { "linkifyjs": "^4.1.0" }, @@ -5019,9 +5029,9 @@ } }, "node_modules/@tiptap/extension-list-item": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.8.0.tgz", - "integrity": "sha512-o7OGymGxB0B9x3x2prp3KBDYFuBYGc5sW69O672jk8G52DqhzzndgPnkk0qUn8nXAUKuDGbJmpmHVA2kagqnRg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.9.1.tgz", + "integrity": "sha512-6O4NtYNR5N2Txi4AC0/4xMRJq9xd4+7ShxCZCDVL0WDVX37IhaqMO7LGQtA6MVlYyNaX4W1swfdJaqrJJ5HIUw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5031,23 +5041,21 @@ } }, "node_modules/@tiptap/extension-ordered-list": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.8.0.tgz", - "integrity": "sha512-sCvNbcTS1+5QTTXwUPFa10vf5I1pr8sGcOTIh0G+a5ZkS5+6FxT12k7VLzPt39QyNbOi+77U2o4Xr4XyaEkfSg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.9.1.tgz", + "integrity": "sha512-6J9jtv1XP8dW7/JNSH/K4yiOABc92tBJtgCsgP8Ep4+fjfjdj4HbjS1oSPWpgItucF2Fp/VF8qg55HXhjxHjTw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/extension-list-item": "^2.7.0", - "@tiptap/extension-text-style": "^2.7.0" + "@tiptap/core": "^2.7.0" } }, "node_modules/@tiptap/extension-paragraph": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.8.0.tgz", - "integrity": "sha512-XgxxNNbuBF48rAGwv7/s6as92/xjm/lTZIGTq9aG13ClUKFtgdel7C33SpUCcxg3cO2WkEyllXVyKUiauFZw/A==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.9.1.tgz", + "integrity": "sha512-JOmT0xd4gd3lIhLwrsjw8lV+ZFROKZdIxLi0Ia05XSu4RLrrvWj0zdKMSB+V87xOWfSB3Epo95zAvnPox5Q16A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5057,9 +5065,9 @@ } }, "node_modules/@tiptap/extension-strike": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.8.0.tgz", - "integrity": "sha512-ezkDiXxQ3ME/dDMMM7tAMkKRi6UWw7tIu+Mx7Os0z8HCGpVBk1gFhLlhEd8I5rJaPZr4tK1wtSehMA9bscFGQw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.9.1.tgz", + "integrity": "sha512-V5aEXdML+YojlPhastcu7w4biDPwmzy/fWq0T2qjfu5Te/THcqDmGYVBKESBm5x6nBy5OLkanw2O+KHu2quDdg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5069,9 +5077,9 @@ } }, "node_modules/@tiptap/extension-subscript": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-2.8.0.tgz", - "integrity": "sha512-m14K5M7E+SqqrBul+B9t5sjN4zqTddV+Q+vd+RIm+OHG6AQhwewNoFyghZz5dGZ2Xj7HqiEyusBN+iHwfgJpmg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-2.9.1.tgz", + "integrity": "sha512-jjfuHmF2dCUAtHmJH2K/7HhOCleM3aPVOI/UsBBYa8xM4mDU4xuW1O5sLAr2JWcB1xxyk9YKcBWwyRq+b1ENFA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5081,9 +5089,9 @@ } }, "node_modules/@tiptap/extension-superscript": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-2.8.0.tgz", - "integrity": "sha512-3rAVyRvzhoM51vaeIAEXmr2PkucIwv7ptgyxg6zx6STxcyzMchafGee0LJL7Kcn9uE/n7Yt7ek6bDqo8jU8CtA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-2.9.1.tgz", + "integrity": "sha512-7cgAPpUNgO/3QdvCN9/6dWP6JQC641o8dSgkyv0XzVv0nxISck4SU+2eADRYQLyP2s4M3xuSEFhCCiKZleK2yA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5093,9 +5101,9 @@ } }, "node_modules/@tiptap/extension-table": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.8.0.tgz", - "integrity": "sha512-dm9CitjacXyJuE5SZfV2lUc3uOiP2sxo6fygIzMz7iuxHqQueyONWG+TBkK7HjqzXOiMPsvOf/25NazzIG8HMg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.9.1.tgz", + "integrity": "sha512-OmWZFZOSZwSSEvoVUkDsRFyCXTYei/pV396Xjv9pfFzXQkVbfq/CjTp61zvb/9mmEz3rcfvfG7G39eRlZTvBNg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5106,9 +5114,9 @@ } }, "node_modules/@tiptap/extension-table-cell": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.8.0.tgz", - "integrity": "sha512-IZpxONWyOd474L8+k4bHrFNRhbsl9eRwbNs5O877JkVFItc2WUz1DIhbJzjmBRsqExtWQJuOsiqWFab1kpiwGQ==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.9.1.tgz", + "integrity": "sha512-/wrcniLdhMhs5M2NDetFcfq510N5to7YKK+52KOXNotBI8K/GjMmGmtwWEKPITD0/RgYrXzpMcta/O+/0OCOPQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5118,9 +5126,9 @@ } }, "node_modules/@tiptap/extension-table-header": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.8.0.tgz", - "integrity": "sha512-B67A96yMQlG96IFzZBc7D5dnn7O29hcjuDLtjyZkKvU5D/RlFKPMmC9nVphCV3CnbkvEOZUdK9pNaOpen64naw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.9.1.tgz", + "integrity": "sha512-KtI01636Du1IB/I3pe9ZJWKkOc6INqAaIw+RFirRCnd8Xnik7tJfAwdhXzoPRcer6ViZmlzSrM2dkwaZCF7gcw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5130,9 +5138,9 @@ } }, "node_modules/@tiptap/extension-table-row": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.8.0.tgz", - "integrity": "sha512-Iezej6l7X+WqKzGLmCgAwmpL+QsfjFv1g8yVH5d0/3Pkcj3G9nDn+GSm4bZnbfYFyqInHG94PZ5PMReiALrJtA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.9.1.tgz", + "integrity": "sha512-Wq7QlI/S5iX4UCAdX+ok/szegVMbvrM3H8o6jwO+G4p8JJt6iv7ZmEnJ19xIINhmiKsrdanqH9FFK4tQ3yvQ0A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5142,9 +5150,9 @@ } }, "node_modules/@tiptap/extension-text": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.8.0.tgz", - "integrity": "sha512-EDAdFFzWOvQfVy7j3qkKhBpOeE5thkJaBemSWfXI93/gMVc0ZCdLi24mDvNNgUHlT+RjlIoQq908jZaaxLKN2A==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.9.1.tgz", + "integrity": "sha512-3wo9uCrkLVLQFgbw2eFU37QAa1jq1/7oExa+FF/DVxdtHRS9E2rnUZ8s2hat/IWzvPUHXMwo3Zg2XfhoamQpCA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5154,9 +5162,9 @@ } }, "node_modules/@tiptap/extension-text-align": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.8.0.tgz", - "integrity": "sha512-Y6s/DF+P4lxpAnvSrnmt4xGwQT/AJJJm0aA1wu5GuPKpAQ+K4C7K6rE6uGNAXtR39GlewC7KdmcvA+CYhL8xlw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.9.1.tgz", + "integrity": "sha512-oUp0XnwJpAImcOVV68vsY2CpkHpRZ3gzWfIRTuy+aYitQim3xDKis/qfWQUWZsANp9/TZ0VyjtkZxNMwOfcu1g==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5166,9 +5174,9 @@ } }, "node_modules/@tiptap/extension-text-style": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.8.0.tgz", - "integrity": "sha512-jJp0vcZ2Ty7RvIL0VU6dm1y+fTfXq1lN2GwtYzYM0ueFuESa+Qo8ticYOImyWZ3wGJGVrjn7OV9r0ReW0/NYkQ==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.9.1.tgz", + "integrity": "sha512-LAxc0SeeiPiAVBwksczeA7BJSZb6WtVpYhy5Esvy9K0mK5kttB4KxtnXWeQzMIJZQbza65yftGKfQlexf/Y7yg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5178,9 +5186,9 @@ } }, "node_modules/@tiptap/extension-underline": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.8.0.tgz", - "integrity": "sha512-1ouuHwZJphT8OosAmp6x8e+Wly3cUd1pNWBiOutJX+6QRGBXJnIKFCzn8YOTlWhg1YQigisG7dNF3YdlyuRNHw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.9.1.tgz", + "integrity": "sha512-IrUsIqKPgD7GcAjr4D+RC0WvLHUDBTMkD8uPNEoeD1uH9t9zFyDfMRPnx/z3/6Gf6fTh3HzLcHGibiW2HiMi2A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -5190,9 +5198,9 @@ } }, "node_modules/@tiptap/pm": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.8.0.tgz", - "integrity": "sha512-eMGpRooUMvKz/vOpnKKppApMSoNM325HxTdAJvTlVAmuHp5bOY5kyY1kfUlePRiVx1t1UlFcXs3kecFwkkBD3Q==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.9.1.tgz", + "integrity": "sha512-mvV86fr7kEuDYEApQ2uMPCKL2uagUE0BsXiyyz3KOkY1zifyVm1fzdkscb24Qy1GmLzWAIIihA+3UHNRgYdOlQ==", "dependencies": { "prosemirror-changeset": "^2.2.1", "prosemirror-collab": "^1.3.1", @@ -5211,7 +5219,7 @@ "prosemirror-tables": "^1.4.0", "prosemirror-trailing-node": "^3.0.0", "prosemirror-transform": "^1.10.0", - "prosemirror-view": "^1.33.10" + "prosemirror-view": "^1.34.3" }, "funding": { "type": "github", @@ -5219,30 +5227,31 @@ } }, "node_modules/@tiptap/starter-kit": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.8.0.tgz", - "integrity": "sha512-r7UwaTrECkQoheWVZKFDqtL5tBx07x7IFT+prfgnsVlYFutGWskVVqzCDvD3BDmrg5PzeCWYZrQGlPaLib7tjg==", - "dependencies": { - "@tiptap/core": "^2.8.0", - "@tiptap/extension-blockquote": "^2.8.0", - "@tiptap/extension-bold": "^2.8.0", - "@tiptap/extension-bullet-list": "^2.8.0", - "@tiptap/extension-code": "^2.8.0", - "@tiptap/extension-code-block": "^2.8.0", - "@tiptap/extension-document": "^2.8.0", - "@tiptap/extension-dropcursor": "^2.8.0", - "@tiptap/extension-gapcursor": "^2.8.0", - "@tiptap/extension-hard-break": "^2.8.0", - "@tiptap/extension-heading": "^2.8.0", - "@tiptap/extension-history": "^2.8.0", - "@tiptap/extension-horizontal-rule": "^2.8.0", - "@tiptap/extension-italic": "^2.8.0", - "@tiptap/extension-list-item": "^2.8.0", - "@tiptap/extension-ordered-list": "^2.8.0", - "@tiptap/extension-paragraph": "^2.8.0", - "@tiptap/extension-strike": "^2.8.0", - "@tiptap/extension-text": "^2.8.0", - "@tiptap/pm": "^2.8.0" + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.9.1.tgz", + "integrity": "sha512-nsw6UF/7wDpPfHRhtGOwkj1ipIEiWZS1VGw+c14K61vM1CNj0uQ4jogbHwHZqN1dlL5Hh+FCqUHDPxG6ECbijg==", + "dependencies": { + "@tiptap/core": "^2.9.1", + "@tiptap/extension-blockquote": "^2.9.1", + "@tiptap/extension-bold": "^2.9.1", + "@tiptap/extension-bullet-list": "^2.9.1", + "@tiptap/extension-code": "^2.9.1", + "@tiptap/extension-code-block": "^2.9.1", + "@tiptap/extension-document": "^2.9.1", + "@tiptap/extension-dropcursor": "^2.9.1", + "@tiptap/extension-gapcursor": "^2.9.1", + "@tiptap/extension-hard-break": "^2.9.1", + "@tiptap/extension-heading": "^2.9.1", + "@tiptap/extension-history": "^2.9.1", + "@tiptap/extension-horizontal-rule": "^2.9.1", + "@tiptap/extension-italic": "^2.9.1", + "@tiptap/extension-list-item": "^2.9.1", + "@tiptap/extension-ordered-list": "^2.9.1", + "@tiptap/extension-paragraph": "^2.9.1", + "@tiptap/extension-strike": "^2.9.1", + "@tiptap/extension-text": "^2.9.1", + "@tiptap/extension-text-style": "^2.9.1", + "@tiptap/pm": "^2.9.1" }, "funding": { "type": "github", @@ -5840,9 +5849,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", - "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz", + "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==", "dev": true, "dependencies": { "@types/node": "*", @@ -5882,9 +5891,9 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -5930,9 +5939,9 @@ } }, "node_modules/@types/node": { - "version": "20.16.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz", - "integrity": "sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==", + "version": "20.17.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", + "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", "dev": true, "dependencies": { "undici-types": "~6.19.2" @@ -5976,9 +5985,9 @@ } }, "node_modules/@types/qs": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", - "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", "dev": true }, "node_modules/@types/range-parser": { @@ -6063,9 +6072,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", - "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", "dev": true, "dependencies": { "@types/node": "*" @@ -6371,16 +6380,16 @@ } }, "node_modules/@videojs/http-streaming": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.14.2.tgz", - "integrity": "sha512-c+sg+rrrSrRekBZxd+sNpzjRteIcOEQRJllqCBcz6MrgSaGJGDzV1xhGSAFnxX8E/xfqQeF060us5474WwYi3Q==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.15.0.tgz", + "integrity": "sha512-6rjaqEa87gVFqDFsHaLKXGrDqL3NhNZRNi6wkMw+uyt1lrLD2OFY0SfRQRNl7Vmmx0pt5FRJoRJYlnKsowyElA==", "dependencies": { "@babel/runtime": "^7.12.5", "@videojs/vhs-utils": "^4.1.1", "aes-decrypter": "^4.0.2", "global": "^4.4.0", "m3u8-parser": "^7.2.0", - "mpd-parser": "^1.3.0", + "mpd-parser": "^1.3.1", "mux.js": "7.0.3", "video.js": "^7 || ^8" }, @@ -6389,7 +6398,23 @@ "npm": ">=5" }, "peerDependencies": { - "video.js": "^8.14.0" + "video.js": "^8.19.0" + } + }, + "node_modules/@videojs/http-streaming/node_modules/mux.js": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-7.0.3.tgz", + "integrity": "sha512-gzlzJVEGFYPtl2vvEiJneSWAWD4nfYRHD5XgxmB2gWvXraMPOYk+sxfvexmNfjQUFpmk6hwLR5C6iSFmuwCHdQ==", + "dependencies": { + "@babel/runtime": "^7.11.2", + "global": "^4.4.0" + }, + "bin": { + "muxjs-transmux": "bin/transmux.js" + }, + "engines": { + "node": ">=8", + "npm": ">=5" } }, "node_modules/@videojs/vhs-utils": { @@ -6933,12 +6958,12 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/array-flatten": { @@ -7553,9 +7578,9 @@ "dev": true }, "node_modules/chart.js": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", - "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.6.tgz", + "integrity": "sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==", "dependencies": { "@kurkle/color": "^0.3.0" }, @@ -7918,32 +7943,23 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", + "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", "dev": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", + "negotiator": "~0.6.4", "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7959,11 +7975,14 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -8043,9 +8062,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "engines": { "node": ">= 0.6" @@ -8244,6 +8263,7 @@ "version": "0.0.24", "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", + "deprecated": "Ownership of Critters has moved to the Nuxt team, who will be maintaining the project going forward. If you'd like to keep using Critters, please switch to the actively-maintained fork at https://github.com/danielroe/beasties", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -8449,12 +8469,12 @@ "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "devOptional": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -8895,9 +8915,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -8905,7 +8925,7 @@ "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", @@ -8916,9 +8936,9 @@ } }, "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, "engines": { "node": ">=10.0.0" @@ -10645,22 +10665,31 @@ } }, "node_modules/http-proxy-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", - "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", + "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.10", - "debug": "^4.3.4", + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.5" + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/http-proxy-middleware/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/https-proxy-agent": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", @@ -11367,6 +11396,11 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "node_modules/jpeg-exif": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/jpeg-exif/-/jpeg-exif-1.1.4.tgz", + "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ==" + }, "node_modules/jquery-extend": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/jquery-extend/-/jquery-extend-2.0.3.tgz", @@ -12715,9 +12749,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -13017,9 +13051,9 @@ } }, "node_modules/mpd-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-1.3.0.tgz", - "integrity": "sha512-WgeIwxAqkmb9uTn4ClicXpEQYCEduDqRKfmUdp4X8vmghKfBNXZLYpREn9eqrDx/Tf5LhzRcJLSpi4ohfV742Q==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-1.3.1.tgz", + "integrity": "sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==", "dependencies": { "@babel/runtime": "^7.12.5", "@videojs/vhs-utils": "^4.0.0", @@ -13040,15 +13074,15 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "devOptional": true }, "node_modules/msgpackr": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", - "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "dev": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" @@ -13099,9 +13133,9 @@ } }, "node_modules/mux.js": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-7.0.3.tgz", - "integrity": "sha512-gzlzJVEGFYPtl2vvEiJneSWAWD4nfYRHD5XgxmB2gWvXraMPOYk+sxfvexmNfjQUFpmk6hwLR5C6iSFmuwCHdQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-7.1.0.tgz", + "integrity": "sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==", "dependencies": { "@babel/runtime": "^7.11.2", "global": "^4.4.0" @@ -13202,9 +13236,9 @@ } }, "node_modules/ng2-pdf-viewer": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-10.3.3.tgz", - "integrity": "sha512-eam4AWvycg30XoepPydEgkZ86JrLHFw12+k4VUKH/6Fxw6gkhNM8ZiaSgRAI9b6VyT4F7wZmaARobDSzy6MjKA==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-10.3.4.tgz", + "integrity": "sha512-YcMT52612LRHky82POLnyPx32Gk8PcCU+bmSatRje7zi655F+HT2HYAbOY+gG2PDH96R22oQCF8fAgKzlJl64w==", "dependencies": { "pdfjs-dist": "4.6.82", "tslib": "^2.3.0" @@ -13931,9 +13965,9 @@ } }, "node_modules/ordered-binary": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.2.tgz", - "integrity": "sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", + "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", "dev": true }, "node_modules/orderedmap": { @@ -14259,23 +14293,23 @@ } }, "node_modules/pdfmake": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.14.tgz", - "integrity": "sha512-x9gXFAY37/CAC/WaZB/683E4Pi0cVW/RMTTNxMpe4I2kRsKv8AE3Pz6+n7iTfn+84/GtSg99BjZkYh7oGFCKmg==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.15.tgz", + "integrity": "sha512-Ryef9mjxo6q8dthhbssAK0zwCsPZ6Pl7kCHnIEXOvQdd79LUGZD6SHGi21YryFXczPjvw6V009uxQwp5iritcA==", "dependencies": { - "@foliojs-fork/linebreak": "^1.1.1", - "@foliojs-fork/pdfkit": "^0.14.0", + "@foliojs-fork/linebreak": "^1.1.2", + "@foliojs-fork/pdfkit": "^0.15.1", "iconv-lite": "^0.6.3", - "xmldoc": "^1.1.2" + "xmldoc": "^1.3.0" }, "engines": { "node": ">=18" } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -15298,14 +15332,14 @@ "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15782,12 +15816,6 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -16128,16 +16156,16 @@ } }, "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -17417,18 +17445,18 @@ } }, "node_modules/video.js": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.18.1.tgz", - "integrity": "sha512-oQ4M/HD2fFgEPHfmVMWxGykRFIpOmVhK0XZ4PSsPTgN2jH6E6+92f/RI2mDXDb0yu+Fxv9fxMUm0M7Z2K3Zo9w==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.19.1.tgz", + "integrity": "sha512-MVuayhXpzTBv5Jk3nYEU2akawPhuBBlizEbpQGx2i+6FiBmqxGjkrkLdDLOzG54ut7xapjp26IfWQLGSpeLmcQ==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/http-streaming": "^3.14.2", + "@videojs/http-streaming": "^3.15.0", "@videojs/vhs-utils": "^4.1.1", "@videojs/xhr": "2.7.0", "aes-decrypter": "^4.0.2", "global": "4.4.0", "m3u8-parser": "^7.2.0", - "mpd-parser": "^1.2.2", + "mpd-parser": "^1.3.1", "mux.js": "^7.0.1", "videojs-contrib-quality-levels": "4.1.0", "videojs-font": "4.2.0", @@ -17929,9 +17957,9 @@ } }, "node_modules/vite/node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.48", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.48.tgz", + "integrity": "sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==", "dev": true, "funding": [ { @@ -17949,7 +17977,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { diff --git a/client/package.json b/client/package.json index 9ae35bb9f4..c75c49956e 100644 --- a/client/package.json +++ b/client/package.json @@ -36,44 +36,44 @@ "get-available-languages": "npm run ts -- cli/get-available-languages.ts" }, "dependencies": { - "@angular/animations": "^18.2.8", - "@angular/cdk": "^18.2.8", - "@angular/common": "^18.2.8", - "@angular/compiler": "^18.2.8", - "@angular/core": "^18.2.8", - "@angular/forms": "^18.2.8", - "@angular/material": "^18.2.8", - "@angular/material-date-fns-adapter": "^18.2.8", - "@angular/platform-browser": "^18.2.8", - "@angular/platform-browser-dynamic": "^18.2.8", - "@angular/router": "^18.2.8", - "@angular/service-worker": "^18.2.8", + "@angular/animations": "^18.2.11", + "@angular/cdk": "^18.2.12", + "@angular/common": "^18.2.11", + "@angular/compiler": "^18.2.11", + "@angular/core": "^18.2.11", + "@angular/forms": "^18.2.11", + "@angular/material": "^18.2.12", + "@angular/material-date-fns-adapter": "^18.2.12", + "@angular/platform-browser": "^18.2.11", + "@angular/platform-browser-dynamic": "^18.2.11", + "@angular/router": "^18.2.11", + "@angular/service-worker": "^18.2.11", "@material/typography": "^14.0.0", "@ngx-pwa/local-storage": "^18.0.0", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "@tiptap/core": "^2.8.0", - "@tiptap/extension-color": "^2.8.0", - "@tiptap/extension-highlight": "^2.8.0", - "@tiptap/extension-image": "^2.8.0", - "@tiptap/extension-link": "^2.8.0", - "@tiptap/extension-subscript": "^2.8.0", - "@tiptap/extension-superscript": "^2.8.0", - "@tiptap/extension-table": "^2.8.0", - "@tiptap/extension-table-cell": "^2.8.0", - "@tiptap/extension-table-header": "^2.8.0", - "@tiptap/extension-table-row": "^2.8.0", - "@tiptap/extension-text-align": "^2.8.0", - "@tiptap/extension-text-style": "^2.8.0", - "@tiptap/extension-underline": "^2.8.0", - "@tiptap/pm": "^2.8.0", - "@tiptap/starter-kit": "^2.8.0", + "@tiptap/core": "^2.9.1", + "@tiptap/extension-color": "^2.9.1", + "@tiptap/extension-highlight": "^2.9.1", + "@tiptap/extension-image": "^2.9.1", + "@tiptap/extension-link": "^2.9.1", + "@tiptap/extension-subscript": "^2.9.1", + "@tiptap/extension-superscript": "^2.9.1", + "@tiptap/extension-table": "^2.9.1", + "@tiptap/extension-table-cell": "^2.9.1", + "@tiptap/extension-table-header": "^2.9.1", + "@tiptap/extension-table-row": "^2.9.1", + "@tiptap/extension-text-align": "^2.9.1", + "@tiptap/extension-text-style": "^2.9.1", + "@tiptap/extension-underline": "^2.9.1", + "@tiptap/pm": "^2.9.1", + "@tiptap/starter-kit": "^2.9.1", "@tsparticles/angular": "^3.0.0", "@tsparticles/engine": "^3.5.0", "@tsparticles/plugin-emitters": "^3.5.0", "@tsparticles/shape-text": "^3.5.0", "@tsparticles/slim": "^3.5.0", - "chart.js": "^4.4.4", + "chart.js": "^4.4.6", "cm-chess": "^3.5.1", "cm-chessboard": "^8.7.4", "date-fns": "^3.6.0", @@ -83,7 +83,7 @@ "jszip": "^3.10.1", "material-design-icons-iconfont": "^6.7.0", "ng2-charts": "^6.0.1", - "ng2-pdf-viewer": "^10.3.3", + "ng2-pdf-viewer": "^10.3.4", "ngx-cookie-service": "^18.0.0", "ngx-date-fns": "^11.0.0", "ngx-device-detector": "^8.0.0", @@ -91,28 +91,28 @@ "ngx-material-timepicker": "^13.1.1", "ngx-papaparse": "^8.0.0", "pdfjs-dist": "^4.6.82", - "pdfmake": "^0.2.14", + "pdfmake": "^0.2.15", "pofile": "^1.1.4", "qrcode": "^1.5.4", "rxjs": "^7.8.1", "tinycolor2": "1.6.0", - "video.js": "^8.18.1", + "video.js": "^8.19.1", "zone.js": "^0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "^18.2.8", - "@angular-eslint/builder": "^18.3.1", - "@angular-eslint/eslint-plugin": "^18.3.1", - "@angular-eslint/eslint-plugin-template": "^18.3.1", - "@angular-eslint/schematics": "^18.3.1", - "@angular-eslint/template-parser": "^18.3.1", - "@angular/cli": "^18.2.8", - "@angular/compiler-cli": "^18.2.8", - "@colsen1991/ngx-translate-extract-marker": "^2.0.8", + "@angular-devkit/build-angular": "^18.2.11", + "@angular-eslint/builder": "^18.4.0", + "@angular-eslint/eslint-plugin": "^18.4.0", + "@angular-eslint/eslint-plugin-template": "^18.4.0", + "@angular-eslint/schematics": "^18.4.0", + "@angular-eslint/template-parser": "^18.4.0", + "@angular/cli": "^18.2.11", + "@angular/compiler-cli": "^18.2.11", + "@colsen1991/ngx-translate-extract-marker": "^3.0.1", "@types/file-saver": "^2.0.7", "@types/jasmine": "~5.1.4", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.16.11", + "@types/node": "^20.17.6", "@types/pdfmake": "^0.2.9", "@types/qrcode": "^1.5.5", "@types/tinycolor2": "^1.4.6", diff --git a/client/src/app/gateways/repositories/mediafiles/mediafile-repository.service.ts b/client/src/app/gateways/repositories/mediafiles/mediafile-repository.service.ts index a37fe6b258..ac13c01c1a 100644 --- a/client/src/app/gateways/repositories/mediafiles/mediafile-repository.service.ts +++ b/client/src/app/gateways/repositories/mediafiles/mediafile-repository.service.ts @@ -11,7 +11,6 @@ import { Fieldsets } from 'src/app/site/services/model-request-builder'; import { TypedFieldset } from '../../../site/services/model-request-builder/model-request-builder.service'; import { BaseRepository } from '../base-repository'; import { MeetingMediafileRepositoryService } from '../meeting-mediafile/meeting-mediafile-repository.service'; -import { ProjectionRepositoryService } from '../projections/projection-repository.service'; import { RepositoryServiceCollectorService } from '../repository-service-collector.service'; import { MediafileAction } from './mediafile.action'; @@ -26,7 +25,6 @@ export class MediafileRepositoryService extends BaseRepository this.activeMeetingId; viewModel.getEnsuredActiveMeeting = (): ViewMeeting => this.activeMeetingService.meeting; - viewModel.getProjectedContentObjects = (): string[] => - this.projectionRepo.getViewModelList().map(p => p.content_object_id); viewModel.getMeetingMediafile = (): ViewMeetingMediafile => this.getMeetingMediafile(model); return viewModel; } diff --git a/client/src/app/gateways/repositories/meeting-mediafile/meeting-mediafile-repository.service.ts b/client/src/app/gateways/repositories/meeting-mediafile/meeting-mediafile-repository.service.ts index 5e775270f6..99cfefb0ed 100644 --- a/client/src/app/gateways/repositories/meeting-mediafile/meeting-mediafile-repository.service.ts +++ b/client/src/app/gateways/repositories/meeting-mediafile/meeting-mediafile-repository.service.ts @@ -5,7 +5,6 @@ import { ViewMeetingMediafile } from 'src/app/site/pages/meetings/pages/mediafil import { ActiveMeetingIdService } from '../../../site/pages/meetings/services/active-meeting-id.service'; import { BaseRepository } from '../base-repository'; -import { ProjectionRepositoryService } from '../projections/projection-repository.service'; import { RepositoryServiceCollectorService } from '../repository-service-collector.service'; @Injectable({ @@ -16,8 +15,7 @@ export class MeetingMediafileRepositoryService extends BaseRepository this.activeMeetingIdService.meetingId; - viewModel.getProjectedContentObjects = (): string[] => - this.projectionRepo.getViewModelList().map(p => p.content_object_id); return viewModel; } } diff --git a/client/src/app/gateways/repositories/users/user-repository.service.ts b/client/src/app/gateways/repositories/users/user-repository.service.ts index 90ae8b7e1c..e37a25e73e 100644 --- a/client/src/app/gateways/repositories/users/user-repository.service.ts +++ b/client/src/app/gateways/repositories/users/user-repository.service.ts @@ -364,6 +364,9 @@ export class UserRepositoryService extends BaseRepository { viewModel.getEnsuredActiveMeetingId = (): Id => this.activeMeetingIdService.meetingId; viewModel.getDelegationSettingEnabled = (): boolean => this.meetingSettingsService.instant(`users_enable_vote_delegations`); + viewModel.isSelfVotingAllowedDespiteDelegation = (): boolean => + !this.meetingSettingsService.instant(`users_enable_vote_delegations`) || + !this.meetingSettingsService.instant(`users_forbid_delegator_to_vote`); return viewModel; } diff --git a/client/src/app/site/base/base-view-model.ts b/client/src/app/site/base/base-view-model.ts index 28fa4b26ee..ed0e9519a7 100644 --- a/client/src/app/site/base/base-view-model.ts +++ b/client/src/app/site/base/base-view-model.ts @@ -70,6 +70,7 @@ export interface BaseViewModel extends Displayable, Identifiable, HasCollection getTitle: () => string; getListTitle: () => string; getDelegationSettingEnabled: () => boolean; + isSelfVotingAllowedDespiteDelegation: () => boolean; /** * Returns the verbose name. diff --git a/client/src/app/site/modules/global-headbar/components/global-search/global-search.component.html b/client/src/app/site/modules/global-headbar/components/global-search/global-search.component.html index b166017d93..aadfac8e8f 100644 --- a/client/src/app/site/modules/global-headbar/components/global-search/global-search.component.html +++ b/client/src/app/site/modules/global-headbar/components/global-search/global-search.component.html @@ -60,11 +60,11 @@
} @if (!settings.isSplitSingleOption && option.isListOption) { -
+
@if (option.content_object) { {{ option.content_object.getTitle() | translate }} diff --git a/client/src/app/site/pages/meetings/modules/projector/components/projector/projector.component.html b/client/src/app/site/pages/meetings/modules/projector/components/projector/projector.component.html index cb4fac75e9..e6a66668fe 100644 --- a/client/src/app/site/pages/meetings/modules/projector/components/projector/projector.component.html +++ b/client/src/app/site/pages/meetings/modules/projector/components/projector/projector.component.html @@ -44,7 +44,7 @@ @if (projector!.show_clock) { } - @for (slide of slides | async; track slide) { + @for (slide of slides | async; track slide.id) {
[]> = new Observable[]>(); + public slides: Observable<(SlideData & { id: Id })[]> = new Observable< + (SlideData & { id: Id })[] + >(); /** * Info about if the user is offline. @@ -160,13 +162,14 @@ export class ProjectorComponent extends BaseUiComponent implements OnDestroy { (projector?.current_projections || []).map( projection => ({ + id: projection.id, collection: projection.content?.collection, data: projection.content, stable: !!projection.stable, type: projection.type || ``, options: projection.options || {}, ...(!!projection.content?.[`error`] && { error: projection.content[`error`] }) - }) as SlideData + }) as SlideData & { id: Id } ) ) ) diff --git a/client/src/app/site/pages/meetings/pages/agenda/agenda.subscription.ts b/client/src/app/site/pages/meetings/pages/agenda/agenda.subscription.ts index 9aa9056fbd..410441fb84 100644 --- a/client/src/app/site/pages/meetings/pages/agenda/agenda.subscription.ts +++ b/client/src/app/site/pages/meetings/pages/agenda/agenda.subscription.ts @@ -128,13 +128,13 @@ export const listOfSpeakersSpeakerCountSubscription = { follow: [ { idField: `speaker_ids`, + fieldset: [`begin_time`, `end_time`], follow: [ { idField: `point_of_order_category_id`, fieldset: FULL_FIELDSET } - ], - fieldset: [`begin_time`, `end_time`] + ] } ] }; @@ -151,11 +151,11 @@ export const getListOfSpeakersDetailSubscriptionConfig: SubscriptionConfigGenera follow: [ { idField: `meeting_user_id`, + fieldset: [`number`, `vote_weight`], follow: [ { idField: `user_id`, ...UserFieldsets.FullNameSubscription }, { idField: `structure_level_ids`, fieldset: [`name`] } - ], - fieldset: [`number`, `vote_weight`] + ] }, { idField: `structure_level_list_of_speakers_id`, diff --git a/client/src/app/site/pages/meetings/pages/chat/pages/chat-group-list/components/chat-group-list/chat-group-list.component.scss b/client/src/app/site/pages/meetings/pages/chat/pages/chat-group-list/components/chat-group-list/chat-group-list.component.scss index 87d43b3c00..4e822d9230 100644 --- a/client/src/app/site/pages/meetings/pages/chat/pages/chat-group-list/components/chat-group-list/chat-group-list.component.scss +++ b/client/src/app/site/pages/meetings/pages/chat/pages/chat-group-list/components/chat-group-list/chat-group-list.component.scss @@ -3,7 +3,6 @@ max-width: 1000px; max-height: calc(100vh - 160px); // 160px is almost the summary of top bar and livestream header height: 95%; - margin-bottom: 350px !important; &.fit-height { height: fit-content; diff --git a/client/src/app/site/pages/meetings/pages/mediafiles/mediafiles.subscription.ts b/client/src/app/site/pages/meetings/pages/mediafiles/mediafiles.subscription.ts index 20573b4f5d..8d028f95cb 100644 --- a/client/src/app/site/pages/meetings/pages/mediafiles/mediafiles.subscription.ts +++ b/client/src/app/site/pages/meetings/pages/mediafiles/mediafiles.subscription.ts @@ -43,7 +43,7 @@ export const getMediafilesListMinimalSubscriptionConfig: SubscriptionConfigGener modelRequest: { viewModelCtor: ViewMeeting, ids: [id], - follow: [`mediafile_ids`, `meeting_mediafile_ids`] + follow: [{ idField: `mediafile_ids` }, { idField: `meeting_mediafile_ids` }] }, subscriptionName: MEDIAFILES_LIST_MINIMAL_SUBSCRIPTION }); diff --git a/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-mediafile.ts b/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-mediafile.ts index 051987cdaf..e8079fd69f 100644 --- a/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-mediafile.ts +++ b/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-mediafile.ts @@ -1,4 +1,4 @@ -import { Fqid, Id } from 'src/app/domain/definitions/key-types'; +import { Id } from 'src/app/domain/definitions/key-types'; import { HasProperties } from 'src/app/domain/interfaces/has-properties'; import { ViewMediafileMeetingUsageKey } from 'src/app/domain/models/mediafiles/mediafile.constants'; import { Meeting } from 'src/app/domain/models/meetings/meeting'; @@ -74,7 +74,6 @@ export class ViewMediafile extends BaseProjectableViewModel { */ public getEnsuredActiveMeetingId!: () => Id; public getEnsuredActiveMeeting!: () => ViewMeeting; - public getProjectedContentObjects!: () => Fqid[]; public getMeetingMediafile!: (meetingId?: Id) => ViewMeetingMediafile; public override canAccess(): boolean { @@ -87,11 +86,7 @@ export class ViewMediafile extends BaseProjectableViewModel { } return !this.getEnsuredActiveMeetingId(); - } else if ( - this.meeting_mediafiles.some( - mm => this.getProjectedContentObjects().indexOf(`meeting_mediafile/${mm.id}`) !== -1 - ) - ) { + } else if (this.meeting_mediafiles.some(mm => !!mm.projection_ids?.length)) { return true; } diff --git a/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-meeting-mediafile.ts b/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-meeting-mediafile.ts index eafa4db378..98dd2e5e58 100644 --- a/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-meeting-mediafile.ts +++ b/client/src/app/site/pages/meetings/pages/mediafiles/view-models/view-meeting-mediafile.ts @@ -1,4 +1,4 @@ -import { Fqid, Id } from 'src/app/domain/definitions/key-types'; +import { Id } from 'src/app/domain/definitions/key-types'; import { HasProperties } from 'src/app/domain/interfaces/has-properties'; import { ViewMediafileMeetingUsageKey } from 'src/app/domain/models/mediafiles/mediafile.constants'; import { PROJECTIONDEFAULT, ProjectiondefaultValue } from 'src/app/domain/models/projector/projection-default'; @@ -42,7 +42,6 @@ export class ViewMeetingMediafile extends BaseProjectableViewModel Id; - public getProjectedContentObjects!: () => Fqid[]; public override canAccess(): boolean { return this.getEnsuredActiveMeetingId() === this.meeting_id || !this.getEnsuredActiveMeetingId(); diff --git a/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.html b/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.html index 34cee03cea..19f56cb608 100644 --- a/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.html +++ b/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.html @@ -95,7 +95,14 @@
{{ setting.label | translate }} @if (setting.helpText) { - {{ setting.helpText | translate }} + + {{ setting.helpText | translate }} + + } + @if (getWarning()) { + + {{ setting.warnText | translate }} + } @if (error) {
{{ error }}
diff --git a/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.ts b/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.ts index 79b76f94be..7c3d0b6772 100644 --- a/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.ts +++ b/client/src/app/site/pages/meetings/pages/meeting-settings/pages/meeting-settings-group-detail/components/meeting-settings-group-detail-field/meeting-settings-group-detail-field.component.ts @@ -274,6 +274,18 @@ export class MeetingSettingsGroupDetailFieldComponent extends BaseComponent impl this.cd.detach(); } + /** + * Checks if a warning should be given + * + */ + public getWarning(): boolean { + if (this.setting.warn) { + return this.setting.warn(this.orgaSettings); + } else { + return false; + } + } + public getRestrictedValue(value: T): T { if (this.setting.restrictionFn) { return this.setting.restrictionFn(this.orgaSettings, value); diff --git a/client/src/app/site/pages/meetings/pages/motions/components/motion-forward-dialog/services/motion-forward-dialog.service.ts b/client/src/app/site/pages/meetings/pages/motions/components/motion-forward-dialog/services/motion-forward-dialog.service.ts index 3ae7d60adf..cac8ba9e8d 100644 --- a/client/src/app/site/pages/meetings/pages/motions/components/motion-forward-dialog/services/motion-forward-dialog.service.ts +++ b/client/src/app/site/pages/meetings/pages/motions/components/motion-forward-dialog/services/motion-forward-dialog.service.ts @@ -99,7 +99,7 @@ export class MotionForwardDialogService extends BaseDialogService id !== undefined)) ); const meetings = - this.operator.hasPerms(Permission.motionCanManageMetadata) && !!meetingId + this.operator.hasPerms(Permission.motionCanForward) && !!meetingId ? await this.presenter.call({ meeting_id: meetingId }) : []; this._forwardingMeetings = meetings; diff --git a/client/src/app/site/pages/meetings/pages/motions/motions.subscription.ts b/client/src/app/site/pages/meetings/pages/motions/motions.subscription.ts index 2bdbb50b76..d2d08e86bd 100644 --- a/client/src/app/site/pages/meetings/pages/motions/motions.subscription.ts +++ b/client/src/app/site/pages/meetings/pages/motions/motions.subscription.ts @@ -119,12 +119,12 @@ export const getMotionWorkflowDetailSubscriptionConfig: SubscriptionConfigGenera modelRequest: { ids: [id], viewModelCtor: ViewMotionWorkflow, + fieldset: [], follow: [ { idField: `state_ids` } - ], - fieldset: `` + ] }, subscriptionName: MOTION_WORKFLOW_DETAIL_SUBSCRIPTION }); @@ -189,13 +189,13 @@ export const getMotionDetailSubscriptionConfig: SubscriptionConfigGenerator = (. { idField: `comment_ids`, fieldset: FULL_FIELDSET }, { idField: `supporter_meeting_user_ids`, + fieldset: `participantListMinimal`, follow: [ { idField: `user_id`, fieldset: `participantList` } - ], - fieldset: `participantListMinimal` + ] } ], fieldset: [ diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-form/components/motion-form/motion-form.component.ts b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-form/components/motion-form/motion-form.component.ts index 1a6b73cea9..921ae0e65c 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-form/components/motion-form/motion-form.component.ts +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-form/components/motion-form/motion-form.component.ts @@ -509,7 +509,7 @@ export class MotionFormComponent extends BaseMeetingComponent implements OnInit } else { delete this._motionContent[controlName]; } - this.propagateChanges(); + setTimeout(() => this.propagateChanges()); }); this._editSubscriptions.push(subscription); this.subscriptions.push(subscription); diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.html b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.html index 39c4a0bc59..3f2ce3d65a 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.html +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.html @@ -55,7 +55,7 @@
- @if (motion.reason) { + @if (showReason) {

{{ 'Reason' | translate }}

diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.ts b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.ts index ee17a34d5e..ef7a0d8150 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.ts +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-content/motion-content.component.ts @@ -73,6 +73,10 @@ export class MotionContentComponent extends BaseMotionDetailChildComponent { return this.motion.showPreamble; } + public get showReason(): boolean { + return !!this.motion.reason?.replace(/

/, ``).replace(/<\/p>/, ``).trim(); + } + public get canChangeMetadata(): boolean { return this.perms.isAllowed(`change_metadata`, this.motion); } diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.html b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.html index ee6d55df7e..68330239c0 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.html +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.html @@ -26,6 +26,7 @@ class="primary-accent-by-theme" mat-icon-button matTooltipPosition="right" + [hidden]="publicAccess" matTooltip="{{ 'Mark as personal favorite' | translate }}" (click)="setFavorite(!isFavorite)" > diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.ts b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.ts index ab5cbe55cb..d84f844229 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.ts +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-manage-title/motion-manage-title.component.ts @@ -31,6 +31,9 @@ export class MotionManageTitleComponent extends BaseMotionDetailChildComponent { return this._changeRecoMode; } + @Input() + public publicAccess: boolean; + @Output() public updateCrMode = new EventEmitter(); diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-view/motion-view.component.html b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-view/motion-view.component.html index 17c53385cd..15da866340 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-view/motion-view.component.html +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-detail/pages/motion-view/components/motion-view/motion-view.component.html @@ -140,6 +140,7 @@

diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html index 6bcaed3869..0442a70c00 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html @@ -278,10 +278,20 @@

{{ 'Voting right delegated to (proxy)' | translate }}

@if (showVoteDelegations && user!.vote_delegations_from().length > 0) {
-

{{ 'Voting right received from (principals)' | translate }}

- - {{ voteDelegationsFrom }} - +

+ {{ 'Principals' | translate }} +

+ +
    + @for (delegation of user!.vote_delegations_from(); track delegation) { +
  • {{ delegation }}
  • + } +
+
} @@ -324,10 +334,10 @@

{{ 'Comment' | translate }}

@if (isAllowed('seeSensitiveData')) { - {{ user!.isLockedOutOfMeeting() ? 'visibility_off' : 'check_box_outline_blank' }} + {{ user!.isLockedOutOfMeeting() ? 'visibility_off' : '' }} - {{ (user?.isLockedOutOfMeeting() ? 'Is locked out' : 'Is not locked out') | translate }} + {{ (user?.isLockedOutOfMeeting() ? 'Is locked out' : '') | translate }} }
diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.ts b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.ts index 3123c8ff90..7496fe7dd4 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.ts +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.ts @@ -101,6 +101,16 @@ export class ParticipantDetailViewComponent extends BaseMeetingComponent { return userOML ? this.operator.hasOrganizationPermissions(userOML as OML) : true; } + private _disableExpandControl: boolean = false; + + public get disableExpandControl(): boolean { + return this._disableExpandControl; + } + + public set disableExpandControl(delegationLongEnough: boolean) { + this._disableExpandControl = delegationLongEnough; + } + public isFormValid = false; public personalInfoFormValue: any = {}; public formErrors: { [name: string]: boolean } | null = null; @@ -223,6 +233,8 @@ export class ParticipantDetailViewComponent extends BaseMeetingComponent { // TODO: Open groups subscription this.groups = this.groupRepo.getViewModelListWithoutSystemGroupsObservable(); + + this.disableExpandControl = this.user?.vote_delegations_from().length < 10; } public isAllowed(action: string): boolean { diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/participant-detail.module.ts b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/participant-detail.module.ts index bd5eae52db..9a5f25bcb5 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/participant-detail.module.ts +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/participant-detail.module.ts @@ -13,6 +13,7 @@ import { UserComponentsModule } from 'src/app/site/modules/user-components'; import { DirectivesModule } from 'src/app/ui/directives'; import { CommaSeparatedListingModule } from 'src/app/ui/modules/comma-separated-listing'; import { EditorModule } from 'src/app/ui/modules/editor'; +import { ExpandableContentWrapperModule } from 'src/app/ui/modules/expandable-content-wrapper'; import { HeadBarModule } from 'src/app/ui/modules/head-bar'; import { SearchSelectorModule } from 'src/app/ui/modules/search-selector'; import { PipesModule } from 'src/app/ui/pipes/pipes.module'; @@ -44,7 +45,8 @@ import { ParticipantDetailRoutingModule } from './participant-detail-routing.mod MatFormFieldModule, ReactiveFormsModule, DirectivesModule, - PipesModule + PipesModule, + ExpandableContentWrapperModule ] }) export class ParticipantDetailModule {} diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html b/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html index 4bb3a55360..af39fed402 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html @@ -33,10 +33,19 @@

{{ 'Participants' | translate }}

[(selectedRows)]="selectedRows" > - @if (showVoteWeight) { + @if (showVoteWeight || isFilteringCanVoteForGroups) {
  - ({{ 'Vote weight' | translate }} {{ totalVoteWeight }}) + @if (showVoteWeight && !isFilteringCanVoteForGroups) { + ({{ 'Vote weight' | translate }} {{ totalVoteWeight }}) + } @else if (showVoteWeight) { + + ({{ 'Voting rights' | translate }} {{ totalEligibleVoteWeights.length }}, + {{ 'Vote weight' | translate }} {{ totalEligibleVoteWeight }}) + + } @else { + ({{ 'Voting rights' | translate }} {{ totalEligibleVoteWeights.length }}) + }
} @@ -67,7 +76,14 @@

{{ 'Participants' | translate }}

{{ user.member_number }} }
-
{{ 'Vote weight' | translate }}: {{ user.vote_weight() }}
+
+ @if (isInPolldefaultGroup(user)) { + {{ 'Vote weight' | translate }}: {{ user.vote_weight() }} + @if (user.hasVoteRightFromOthers()) { + + {{ sumOfDelegatedVoteWeight(user) }} {{ 'from delegated votes' | translate }} + } + } +
} @if (canSeeSensitiveData && !showVoteWeight) {
@@ -141,6 +157,7 @@

{{ 'Participants' | translate }}

matTooltip="{{ 'Voting right received from (principals)' | translate }}" > + {{ user.vote_delegations_from().length }}: {{ user.vote_delegations_from() }}
diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.ts b/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.ts index c00cad34d3..4d02189b6c 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.ts +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.ts @@ -10,6 +10,7 @@ import { Permission } from 'src/app/domain/definitions/permission'; import { GENDERS } from 'src/app/domain/models/users/user'; import { UserStateField } from 'src/app/gateways/repositories/users'; import { mediumDialogSettings } from 'src/app/infrastructure/utils/dialog-settings'; +import { OsFilterOption } from 'src/app/site/base/base-filter.service'; import { BaseMeetingListViewComponent } from 'src/app/site/pages/meetings/base/base-meeting-list-view.component'; import { ParticipantControllerService } from 'src/app/site/pages/meetings/pages/participants/services/common/participant-controller.service/participant-controller.service'; import { ViewMeeting } from 'src/app/site/pages/meetings/view-models/view-meeting'; @@ -108,6 +109,57 @@ export class ParticipantListComponent extends BaseMeetingListViewComponent flt.property === `canVoteForGroups` && flt.options.some((opt: OsFilterOption) => opt.isActive) + ).length; + } + + public get totalEligibleVoteWeights(): number[] { + const voters: { [key: number]: number } = {}; + const checkGroups = this.filterService.activeFilters + .filter(flt => flt.property === `canVoteForGroups`) + .flatMap(flt => + flt.options.filter((opt: OsFilterOption) => opt.isActive).map((opt: OsFilterOption) => opt.condition) + ); + if (this.listComponent) { + for (const user of this.listComponent.source ?? []) { + if (checkGroups.intersect(user.group_ids()).length > 0) { + voters[user.id] = user.vote_weight(); + } + for (const principal of user.vote_delegations_from()) { + if (checkGroups.intersect(principal.group_ids()).length > 0) { + voters[principal.id] = principal.vote_weight(); + } + } + } + } + const weights = Object.values(voters); + return weights; + } + + public get totalEligibleVoteWeight(): number { + return this.totalEligibleVoteWeights.reduce((partialSum, a) => partialSum + a, 0); + } + + public isInPolldefaultGroup(user: ViewUser): boolean { + let isInDefaultGroup = false; + user.group_ids().forEach(id => { + if (this._poll_default_group_ids.indexOf(id) > -1) { + isInDefaultGroup = true; + return; + } + }); + return isInDefaultGroup; + } + + public sumOfDelegatedVoteWeight(user: ViewUser): number { + let voteWeights: number = 0; + user.vote_delegations_from().forEach(user => (voteWeights += user.vote_weight())); + + return voteWeights; + } + public get isUserInScope(): boolean { return this._isUserInScope; } @@ -132,6 +184,8 @@ export class ParticipantListComponent extends BaseMeetingListViewComponent (this.voteDelegationEnabled = enabled)), this.meetingSettingsService .get(`users_allow_self_set_present`) - .subscribe(allowed => (this._allowSelfSetPresent = allowed)) + .subscribe(allowed => (this._allowSelfSetPresent = allowed)), + this.meetingSettingsService + .get(`assignment_poll_default_group_ids`) + .subscribe(group_ids => (this._poll_default_group_ids = group_ids)), + this.meetingSettingsService.get(`motion_poll_default_group_ids`).subscribe(group_ids => + group_ids?.forEach(id => { + if (this._poll_default_group_ids.indexOf(id) === -1) { + this._poll_default_group_ids.push(id); + } + }) + ), + this.meetingSettingsService.get(`topic_poll_default_group_ids`).subscribe(group_ids => + group_ids?.forEach(id => { + if (this._poll_default_group_ids.indexOf(id) === -1) { + this._poll_default_group_ids.push(id); + } + }) + ) ); } diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/services/participant-list-filter/participant-list-filter.service.ts b/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/services/participant-list-filter/participant-list-filter.service.ts index 18e868f419..06570992fa 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/services/participant-list-filter/participant-list-filter.service.ts +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-list/services/participant-list-filter/participant-list-filter.service.ts @@ -29,6 +29,12 @@ export class ParticipantListFilterService extends BaseMeetingFilterListService = { + property: `canVoteForGroups`, + label: `Voting rights`, + options: [] + }; + private userStructureLevelFilterOptions: OsFilter = { property: `structure_level_ids`, label: `Structure level`, @@ -57,6 +63,10 @@ export class ParticipantListFilterService extends BaseMeetingFilterListService { + return !this._voteDelegationEnabled; + } + }, { property: `delegationType`, shouldHideFn: (): boolean => { diff --git a/client/src/app/site/pages/meetings/pages/participants/participants.subscription.ts b/client/src/app/site/pages/meetings/pages/participants/participants.subscription.ts index 66709e2d1d..e27715331f 100644 --- a/client/src/app/site/pages/meetings/pages/participants/participants.subscription.ts +++ b/client/src/app/site/pages/meetings/pages/participants/participants.subscription.ts @@ -37,8 +37,8 @@ export const getParticipantVoteInfoSubscriptionConfig: SubscriptionConfigGenerat }, { idField: `vote_delegated_to_id`, - follow: [{ idField: `user_id`, fieldset: [`is_present_in_meeting_ids`] }], - fieldset: [`meeting_id`] + fieldset: [`meeting_id`], + follow: [{ idField: `user_id`, fieldset: [`is_present_in_meeting_ids`] }] } ] } diff --git a/client/src/app/site/pages/meetings/pages/projectors/projectors.subscription.ts b/client/src/app/site/pages/meetings/pages/projectors/projectors.subscription.ts index b7a3917aed..7de8451119 100644 --- a/client/src/app/site/pages/meetings/pages/projectors/projectors.subscription.ts +++ b/client/src/app/site/pages/meetings/pages/projectors/projectors.subscription.ts @@ -24,6 +24,7 @@ export const getProjectorListSubscriptionConfig: SubscriptionConfigGenerator = ( modelRequest: { viewModelCtor: ViewMeeting, ids: [id], + additionalFields: [`reference_projector_id`], follow: [ { idField: `projector_ids`, @@ -61,14 +62,13 @@ export const getProjectorListSubscriptionConfig: SubscriptionConfigGenerator = ( } ] }, - `projector_countdown_ids`, - `projector_message_ids`, - ...MEETING_DEFAULT_PROJECTOR_IDS_KEYS, + { idField: `projector_countdown_ids` }, + { idField: `projector_message_ids` }, { idField: `speaker_ids`, additionalFields: [`meeting_user_id`] }, - `list_of_speakers_ids`, - { idField: `agenda_item_ids`, fieldset: [`item_number`, `content_object_id`] } - ], - additionalFields: [`reference_projector_id`] + { idField: `list_of_speakers_ids` }, + { idField: `agenda_item_ids`, fieldset: [`item_number`, `content_object_id`] }, + ...MEETING_DEFAULT_PROJECTOR_IDS_KEYS + ] }, subscriptionName: PROJECTOR_LIST_SUBSCRIPTION }); diff --git a/client/src/app/site/pages/meetings/services/active-meeting.subscription.ts b/client/src/app/site/pages/meetings/services/active-meeting.subscription.ts index f367190409..e9b6321a0b 100644 --- a/client/src/app/site/pages/meetings/services/active-meeting.subscription.ts +++ b/client/src/app/site/pages/meetings/services/active-meeting.subscription.ts @@ -54,14 +54,14 @@ export function getActiveMeetingSubscriptionConfig(id: Id, settingsKeys: string[ }, // TODO: Remove and count unread messages by chat_group_ids/chat_message_ids { idField: `poll_ids`, + fieldset: [`title`, `state`, `entitled_group_ids`], follow: [ { idField: `content_object_id`, fieldset: [`title`], follow: [{ idField: `agenda_item_id`, fieldset: [`item_number`, `content_object_id`] }] } - ], - fieldset: [`title`, `state`, `entitled_group_ids`] + ] }, { idField: `point_of_order_category_ids`, diff --git a/client/src/app/site/pages/meetings/services/meeting-settings-definition.service/meeting-settings-definitions.ts b/client/src/app/site/pages/meetings/services/meeting-settings-definition.service/meeting-settings-definitions.ts index b19ee5ef25..d5fdb3775f 100644 --- a/client/src/app/site/pages/meetings/services/meeting-settings-definition.service/meeting-settings-definitions.ts +++ b/client/src/app/site/pages/meetings/services/meeting-settings-definition.service/meeting-settings-definitions.ts @@ -60,6 +60,7 @@ export interface SettingsInput { // alternative to `choices`; overwrites `choices` if both are given choicesFunc?: ChoicesFunctionDefinition; helpText?: string; // default: "" + warnText?: string; // default: "" indentation?: number; // default: 0. Indents the input field by the given amount to simulate nested settings validators?: ValidatorFn[]; // default: [] automaticChangesSetting?: SettingsItemAutomaticChangeSetting; @@ -88,6 +89,13 @@ export interface SettingsInput { * @returns whether to disable the setting or not */ forbidden?: (meetingView: ViewMeeting) => boolean; + /** + * A function to conditionally give a warning depending on used organization's settings + * + * @param orgaSettings: The `OrganizationSettingsService` has to be passed, because it is not injected in the + * settings definitions + */ + warn?: (orgaSettings: OrganizationSettingsService) => boolean; hide?: boolean; // Hide the setting in the settings view } @@ -207,7 +215,11 @@ export const meetingSettings: SettingsGroup[] = fillInSettingsDefaults([ type: `boolean`, helpText: _( `Enables public access to this meeting without login data. Permissions can be set after activation in the new group 'Public'.` - ) + ), + warnText: _( + `The public access setting is deactivated for the organization. Please contact your admins or hosting providers to activate the setting.` + ), + warn: orgaSettings => !orgaSettings.instant(`enable_anonymous`) } ] }, @@ -1006,14 +1018,16 @@ export const meetingSettings: SettingsGroup[] = fillInSettingsDefaults([ { key: `users_email_subject`, label: _(`Email subject`), - helpText: _(`You can use {event_name} and {username} as placeholder.`) + helpText: _( + `Possible placeholders for email subject and body: {title}, {first_name}, {last_name}, {groups}, {structure_levels}, {event_name}, {url}, {username} and {password}` + ) }, { key: `users_email_body`, label: _(`Email body`), type: `text`, helpText: _( - `Use these placeholders: {name}, {event_name}, {url}, {username}, {password}. The url referrs to the system url.` + `Possible placeholders for email subject and body: {title}, {first_name}, {last_name}, {groups}, {structure_levels}, {event_name}, {url}, {username} and {password}` ) } ] diff --git a/client/src/app/site/pages/meetings/view-models/view-user.ts b/client/src/app/site/pages/meetings/view-models/view-user.ts index df379aab02..783c9f4c98 100644 --- a/client/src/app/site/pages/meetings/view-models/view-user.ts +++ b/client/src/app/site/pages/meetings/view-models/view-user.ts @@ -270,7 +270,7 @@ export class ViewUser extends BaseViewModel /* implements Searchable */ { } public structure_levels(meetingId?: Id): ViewStructureLevel[] { - return this.getMeetingUser(meetingId)?.structure_levels ?? []; + return (this.getMeetingUser(meetingId)?.structure_levels ?? []).sort((a, b) => a.name.localeCompare(b.name)); } public structure_level(meetingId?: Id): string { @@ -297,13 +297,36 @@ export class ViewUser extends BaseViewModel /* implements Searchable */ { public get isVoteCountable(): boolean { const delegate = this.vote_delegated_to(this.getEnsuredActiveMeetingId()); + const present = this.isPresentInMeeting(); + if (this.isSelfVotingAllowedDespiteDelegation() && present) { + return true; + } if (this.getDelegationSettingEnabled() && delegate) { return delegate.isPresentInMeeting(); } - return this.isPresentInMeeting(); + return present; } // ### block end. + public canVoteForGroups(): Id[] { + const delegate = this.vote_delegated_to(this.getEnsuredActiveMeetingId()); + const present = this.isPresentInMeeting(); + if ( + !( + present && + (this.isSelfVotingAllowedDespiteDelegation() || !(this.getDelegationSettingEnabled() && delegate)) + ) + ) { + return []; + } + return Array.from( + new Set([ + ...this.group_ids(), + ...(this.vote_delegations_from() ?? []).flatMap(delegation => delegation.group_ids()) + ]) + ); + } + public override getDetailStateUrl(): string { if (this.getEnsuredActiveMeetingId && this.getEnsuredActiveMeetingId()) { return `/${this.getEnsuredActiveMeetingId()}/participants/${this.id}`; diff --git a/client/src/app/site/pages/organization/organization.subscription.ts b/client/src/app/site/pages/organization/organization.subscription.ts index f4748dca32..2d633a8e89 100644 --- a/client/src/app/site/pages/organization/organization.subscription.ts +++ b/client/src/app/site/pages/organization/organization.subscription.ts @@ -56,11 +56,11 @@ function getMeetingListFollowConfig( ): any { return { idField: idField, + fieldset: `list`, follow: [ { idField: `committee_id`, fieldset: `name` }, { idField: `organization_tag_ids`, fieldset: FULL_FIELDSET } - ], - fieldset: `list` + ] }; } diff --git a/client/src/app/site/pages/organization/pages/accounts/accounts.subscription.ts b/client/src/app/site/pages/organization/pages/accounts/accounts.subscription.ts index 05a6e96736..37d31e8cb4 100644 --- a/client/src/app/site/pages/organization/pages/accounts/accounts.subscription.ts +++ b/client/src/app/site/pages/organization/pages/accounts/accounts.subscription.ts @@ -16,8 +16,8 @@ export const getAccountDetailSubscriptionConfig: SubscriptionConfigGenerator = ( { idField: `committee_ids`, fieldset: [`name`, `manager_ids`] }, { idField: `meeting_ids`, - follow: [{ idField: `group_ids`, fieldset: [`name`], isFullList: false }], - fieldset: [`name`, `committee_id`] + fieldset: [`name`, `committee_id`], + follow: [{ idField: `group_ids`, fieldset: [`name`], isFullList: false }] }, { idField: `gender_id`, fieldset: [`name`] } ] diff --git a/client/src/app/site/pages/organization/pages/organization-tags/organization-tags.subscription.ts b/client/src/app/site/pages/organization/pages/organization-tags/organization-tags.subscription.ts index 17082e45aa..86b233b8e3 100644 --- a/client/src/app/site/pages/organization/pages/organization-tags/organization-tags.subscription.ts +++ b/client/src/app/site/pages/organization/pages/organization-tags/organization-tags.subscription.ts @@ -9,6 +9,6 @@ export const getOrganizationTagListSubscriptionConfig: SubscriptionConfigGenerat modelRequest: { viewModelCtor: ViewOrganization, ids: [ORGANIZATION_ID], - follow: [`organization_tag_ids`] + follow: [{ idField: `organization_tag_ids` }] } }); diff --git a/client/src/app/site/pages/organization/pages/settings/modules/settings-detail/components/organization-settings/organization-settings.component.html b/client/src/app/site/pages/organization/pages/settings/modules/settings-detail/components/organization-settings/organization-settings.component.html index bd7a6f81ba..1e30f05c00 100644 --- a/client/src/app/site/pages/organization/pages/settings/modules/settings-detail/components/organization-settings/organization-settings.component.html +++ b/client/src/app/site/pages/organization/pages/settings/modules/settings-detail/components/organization-settings/organization-settings.component.html @@ -107,7 +107,7 @@

{{ 'Superadmin settings' | translate }}

- {{ 'Meetings can be public' | translate }} + {{ 'Enable public meetings' | translate }}
diff --git a/client/src/app/site/services/auth-check.service.ts b/client/src/app/site/services/auth-check.service.ts index 36c42aab37..8514bd9ff6 100644 --- a/client/src/app/site/services/auth-check.service.ts +++ b/client/src/app/site/services/auth-check.service.ts @@ -97,7 +97,7 @@ export class AuthCheckService { if (typeof info === `string`) { meetingIdString = this.osRouter.getMeetingId(info); } - if (Number.isNaN(Number(meetingIdString))) { + if (Number.isNaN(Number(meetingIdString)) || +meetingIdString <= 0) { return false; } await this.fetchMeetingIfNotExists(+meetingIdString); diff --git a/client/src/app/site/services/autoupdate/autoupdate-communication.service.ts b/client/src/app/site/services/autoupdate/autoupdate-communication.service.ts index 8d00f2e86f..c0ae037ec0 100644 --- a/client/src/app/site/services/autoupdate/autoupdate-communication.service.ts +++ b/client/src/app/site/services/autoupdate/autoupdate-communication.service.ts @@ -36,7 +36,7 @@ import { SUBSCRIPTION_SUFFIX } from '../model-request.service'; }) export class AutoupdateCommunicationService { private autoupdateDataObservable: Observable; - private openResolvers = new Map) => void>(); + private openResolvers = new Map) => void)[]>(); private endpointName: string; private autoupdateEndpointStatus: 'healthy' | 'unhealthy' = `healthy`; private unhealtyTimeout: any; @@ -130,7 +130,11 @@ export class AutoupdateCommunicationService { public open(streamId: Id | null, description: string, request: ModelRequest, params = {}): Promise { return new Promise((resolve, reject) => { const requestHash = djb2hash(JSON.stringify(request)); - this.openResolvers.set(requestHash, resolve); + if (this.openResolvers.has(requestHash)) { + this.openResolvers.get(requestHash).push(resolve); + } else { + this.openResolvers.set(requestHash, [resolve]); + } this.sharedWorker .sendMessage(`autoupdate`, { action: `open`, @@ -298,7 +302,7 @@ export class AutoupdateCommunicationService { return; } - this.openResolvers.get(data.content.requestHash)(data.content?.streamId); + this.openResolvers.get(data.content.requestHash).forEach(r => r(data.content?.streamId)); this.openResolvers.delete(data.content.requestHash); } diff --git a/client/src/app/site/services/autoupdate/autoupdate.service.ts b/client/src/app/site/services/autoupdate/autoupdate.service.ts index d8644f9c7f..58556c129a 100644 --- a/client/src/app/site/services/autoupdate/autoupdate.service.ts +++ b/client/src/app/site/services/autoupdate/autoupdate.service.ts @@ -71,7 +71,7 @@ export class AutoupdateService { private _activeRequestObjects: AutoupdateSubscriptionMap = {}; private _mutex = new Mutex(); private _currentQueryParams: QueryParams | null = null; - private _resolveDataReceived: ((value: ModelData) => void)[] = []; + private _resolveDataReceived: { [key: number]: ((value: ModelData) => void)[] } = []; public constructor( private httpEndpointService: HttpStreamEndpointService, @@ -224,8 +224,13 @@ export class AutoupdateService { ); let rejectReceivedData: any; + let resolveIdx: number; const receivedData = new Promise((resolve, reject) => { - this._resolveDataReceived[id] = resolve; + if (this._resolveDataReceived[id]) { + resolveIdx = this._resolveDataReceived[id].push(resolve) - 1; + } else { + this._resolveDataReceived[id] = [resolve]; + } rejectReceivedData = reject; }); receivedData.catch((e: Error) => { @@ -238,9 +243,9 @@ export class AutoupdateService { close: (): void => { this.communication.close(id); delete this._activeRequestObjects[id]; - if (this._resolveDataReceived[id]) { + if (this._resolveDataReceived[id] && this._resolveDataReceived[id][resolveIdx]) { rejectReceivedData(new Error(`Connection canceled`)); - delete this._resolveDataReceived[id]; + delete this._resolveDataReceived[id][resolveIdx]; } console.debug(`[autoupdate] stream closed:`, description); @@ -323,7 +328,12 @@ export class AutoupdateService { this.communication.cleanupCollections(requestId, deletedModels); if (this._resolveDataReceived[requestId]) { - this._resolveDataReceived[requestId](modelData); + for (let i = 0; i < this._resolveDataReceived[requestId].length; i++) { + if (this._resolveDataReceived[requestId][i]) { + this._resolveDataReceived[requestId][i](modelData); + delete this._resolveDataReceived[requestId][i]; + } + } delete this._resolveDataReceived[requestId]; } } diff --git a/client/src/app/site/services/model-request-builder/model-request-builder.service.ts b/client/src/app/site/services/model-request-builder/model-request-builder.service.ts index e216ffaa22..b4b65b2310 100644 --- a/client/src/app/site/services/model-request-builder/model-request-builder.service.ts +++ b/client/src/app/site/services/model-request-builder/model-request-builder.service.ts @@ -64,10 +64,14 @@ class UnknownRelationError extends Error {} class UnknownFieldsetError extends Error {} /** + * @deprecated Naming of this in unclear. Use `FULL_FIELDSET` instead + * * Fieldset used if no fieldset is specified */ export const DEFAULT_FIELDSET = `detail`; /** + * @deprecated Use ROUTING_FIELDSET from `app/domain/fieldsets/mist.ts` instead + * * Fieldset used for navigation purposes */ export const ROUTING_FIELDSET = `routing`; diff --git a/client/src/app/ui/modules/editor/components/editor/editor.component.ts b/client/src/app/ui/modules/editor/components/editor/editor.component.ts index ab64af22e2..65b24776cf 100644 --- a/client/src/app/ui/modules/editor/components/editor/editor.component.ts +++ b/client/src/app/ui/modules/editor/components/editor/editor.component.ts @@ -437,6 +437,10 @@ export class EditorComponent extends BaseFormControlComponent implements unwrapNode(listParagraphs.item(i)); } + if (!this.editor.getText()) { + return ``; + } + return dom.body.innerHTML; } } diff --git a/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.html b/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.html index d2cb9d92d2..177b3545ba 100644 --- a/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.html +++ b/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.html @@ -3,14 +3,18 @@ #contentBox class="content" osResized - [ngClass]="showCollapsed ? 'collapsed collapsed-card-content' : ''" + [ngClass]="[ + isCollapsed ? 'collapsed' : '', + isCollapsed && biggerHeight ? 'collapsed-delegations' : '', + isCollapsed && !biggerHeight ? 'collapsed-card-content' : '' + ]" (osResizedHeight)="onResizedHeight($event)" > @if (canExpand && !disableExpandControl) { -
+
{{ isExpanded ? ('Hide more text' | translate) : ('Show full text' | translate) }} diff --git a/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.scss b/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.scss index 36895a0d8a..edd9ccec64 100644 --- a/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.scss +++ b/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.scss @@ -17,6 +17,12 @@ } } + .content { + &.collapsed-delegations { + max-height: 255px; + } + } + .show-entire-text { margin-top: 4px; a { @@ -24,6 +30,10 @@ } } + .margin-top-8 { + margin-top: 10px !important; + } + .show-entire-text { a:focus { outline: none; diff --git a/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.ts b/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.ts index 4cf05b22d3..bf1d250327 100644 --- a/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.ts +++ b/client/src/app/ui/modules/expandable-content-wrapper/components/expandable-content-wrapper/expandable-content-wrapper.component.ts @@ -30,6 +30,24 @@ export class ExpandableContentWrapperComponent { return this._disableExpandControl; } + @Input() + public set biggerHeight(biggerHeight: boolean) { + this._biggerHeight = biggerHeight; + } + + public get biggerHeight(): boolean { + return this._biggerHeight; + } + + @Input() + public set isCollapsed(isCollapsed: boolean) { + this._isCollapsed = isCollapsed; + } + + public get isCollapsed(): boolean { + return this._isCollapsed; + } + /** * Boolean, whether the control to expand the element should be disabled or not. */ @@ -43,11 +61,14 @@ export class ExpandableContentWrapperComponent { /** * Boolean to see, if the content is currently expanded. */ - public isExpanded = false; + public isExpanded: boolean = false; + + public _isCollapsed: boolean = false; - public showCollapsed: boolean; + public _biggerHeight: boolean = false; public constructor(private cd: ChangeDetectorRef) { + this.isCollapsed = false; this.update(); } @@ -79,7 +100,7 @@ export class ExpandableContentWrapperComponent { } private update(): void { - this.showCollapsed = !this.isExpanded && !this.disableExpandControl && this.canExpand; + this.isCollapsed = !this.isExpanded && !this.disableExpandControl && this.canExpand; this.cd.markForCheck(); } } diff --git a/client/src/assets/i18n/de.po b/client/src/assets/i18n/de.po index c62c261670..eddddf6d77 100644 --- a/client/src/assets/i18n/de.po +++ b/client/src/assets/i18n/de.po @@ -830,10 +830,10 @@ msgid "Ballot reset" msgstr "Wahlgang zurückgesetzt" msgid "Ballot started" -msgstr "Wahlgang gestarted" +msgstr "Wahlgang gestartet" msgid "Ballot stopped" -msgstr "Wahlgeang beendet" +msgstr "Wahlgang beendet" msgid "Ballot stopped/published" msgstr "Wahlgang beendet/veröffentlicht" @@ -2059,6 +2059,9 @@ msgstr "Geschäftsordnungsanträge aktivieren" msgid "Enable point of orders for other participants" msgstr "Stellen eines GO-Antrags für andere Teilnehmende erlauben" +msgid "Enable public meetings" +msgstr "Öffentliche Veranstaltungen aktivieren" + msgid "Enable specifications and ranking for possible motions" msgstr "Vorgaben und Reihung für mögliche GO-Anträge aktivieren" @@ -3951,6 +3954,15 @@ msgstr "GO-Antrag" msgid "Polls" msgstr "Umfragen" +msgid "" +"Possible placeholders for email subject and body: {title}, {first_name}, " +"{last_name}, {groups}, {structure_levels}, {event_name}, {url}, {username} " +"and {password}" +msgstr "" +"Mögliche Platzhalter für E-Mail-Betreff und -Inhalt: {title}, {first_name}, " +"{last_name}, {groups}, {structure_levels}, {event_name}, {url}, {username} " +"und {password}" + msgid "Possible points of order" msgstr "Mögliche GO-Anträge" @@ -5347,13 +5359,6 @@ msgstr "Farbe verwenden" msgid "Use the following custom number" msgstr "Verwende die folgende benutzerdefinierte Anzahl" -msgid "" -"Use these placeholders: {name}, {event_name}, {url}, {username}, {password}." -" The url referrs to the system url." -msgstr "" -"Verwendbare Platzhalter: {name}, {event_name}, {url}, {username}, " -"{password}. Die URL bezieht sich auf die System-URL." - msgid "Used for WLAN QRCode projection." msgstr "Wird für die Projektion des WLAN-QR-Codes verwendet." @@ -5479,6 +5484,9 @@ msgstr "Stimmrecht für" msgid "Voting right received from (principals)" msgstr "Stimmrecht erhalten von (Vollmachtgeber*in)" +msgid "Voting rights" +msgstr "Stimmrechte" + msgid "Voting started" msgstr "Abstimmung gestartet" @@ -5667,9 +5675,6 @@ msgstr "" msgid "You can only anonymize named polls." msgstr "Sie können nur namentliche Stimmabgaben anonymisieren." -msgid "You can use {event_name} and {username} as placeholder." -msgstr "Sie können {event_name} und {username} als Platzhalter verwenden." - msgid "" "You cannot change the recommendation of motions in different workflows!" msgstr "" @@ -5890,6 +5895,9 @@ msgstr "weiblich" msgid "finished (unpublished)" msgstr "abgeschlossen (unveröffentlicht)" +msgid "from delegated votes" +msgstr "aus Stimmrechtsübertragungen" + msgid "fullscreen" msgstr "Vollbild" diff --git a/client/src/assets/i18n/template-en.pot b/client/src/assets/i18n/template-en.pot index 013d25c8ab..08a0bb8eb6 100644 --- a/client/src/assets/i18n/template-en.pot +++ b/client/src/assets/i18n/template-en.pot @@ -1994,6 +1994,10 @@ msgstr "" msgid "Enable point of orders for other participants" msgstr "" +#: /app/src/app/site/pages/organization/pages/settings/modules/settings-detail/components/organization-settings/organization-settings.component.html +msgid "Enable public meetings" +msgstr "" + msgid "Enable specifications and ranking for possible motions" msgstr "" @@ -3941,6 +3945,13 @@ msgstr "" msgid "Polls" msgstr "" +#: /app/src/app/site/pages/meetings/services/meeting-settings-definition.service/meeting-settings-definitions.ts +msgid "" +"Possible placeholders for email subject and body: {title}, {first_name}, " +"{last_name}, {groups}, {structure_levels}, {event_name}, {url}, {username} " +"and {password}" +msgstr "" + msgid "Possible points of order" msgstr "" @@ -5323,11 +5334,6 @@ msgstr "" msgid "Use the following custom number" msgstr "" -msgid "" -"Use these placeholders: {name}, {event_name}, {url}, {username}, " -"{password}. The url referrs to the system url." -msgstr "" - msgid "Used for WLAN QRCode projection." msgstr "" @@ -5450,6 +5456,11 @@ msgstr "" msgid "Voting right received from (principals)" msgstr "" +#: /app/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html +#: /app/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html +msgid "Voting rights" +msgstr "" + msgid "Voting started" msgstr "" @@ -5623,9 +5634,6 @@ msgstr "" msgid "You can only anonymize named polls." msgstr "" -msgid "You can use {event_name} and {username} as placeholder." -msgstr "" - msgid "You cannot change the recommendation of motions in different workflows!" msgstr "" @@ -5832,6 +5840,10 @@ msgstr "" msgid "finished (unpublished)" msgstr "" +#: /app/src/app/site/pages/meetings/pages/participants/pages/participant-list/components/participant-list/participant-list.component.html +msgid "from delegated votes" +msgstr "" + msgid "fullscreen" msgstr "" diff --git a/client/src/meta b/client/src/meta index 21bc4fd12a..0c7ea66ede 160000 --- a/client/src/meta +++ b/client/src/meta @@ -1 +1 @@ -Subproject commit 21bc4fd12a604933cd8732a130e973e34835f541 +Subproject commit 0c7ea66edebd9902e1223446e70a22aab0222c3d