diff --git a/package-lock.json b/package-lock.json index 2de02c0b..c4c48d93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4496,17 +4496,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.2.tgz", - "integrity": "sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.0.tgz", + "integrity": "sha512-HyAZtpdkgZwpq8Sz3FSUvCR4c+ScbuWa9AksK2Jweub7w4M3yTz4O11AqVJzLYjy/B9ZWPyc81I+mOdJU/bDQw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/type-utils": "8.58.2", - "@typescript-eslint/utils": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/type-utils": "8.59.0", + "@typescript-eslint/utils": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -4519,7 +4519,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.58.2", + "@typescript-eslint/parser": "^8.59.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } @@ -4535,16 +4535,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.2.tgz", - "integrity": "sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.0.tgz", + "integrity": "sha512-TI1XGwKbDpo9tRW8UDIXCOeLk55qe9ZFGs8MTKU6/M08HWTw52DD/IYhfQtOEhEdPhLMT26Ka/x7p70nd3dzDg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3" }, "engines": { @@ -4560,14 +4560,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.2.tgz", - "integrity": "sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.0.tgz", + "integrity": "sha512-Lw5ITrR5s5TbC19YSvlr63ZfLaJoU6vtKTHyB0GQOpX0W7d5/Ir6vUahWi/8Sps/nOukZQ0IB3SmlxZnjaKVnw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.2", - "@typescript-eslint/types": "^8.58.2", + "@typescript-eslint/tsconfig-utils": "^8.59.0", + "@typescript-eslint/types": "^8.59.0", "debug": "^4.4.3" }, "engines": { @@ -4582,14 +4582,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.2.tgz", - "integrity": "sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.0.tgz", + "integrity": "sha512-UzR16Ut8IpA3Mc4DbgAShlPPkVm8xXMWafXxB0BocaVRHs8ZGakAxGRskF7FId3sdk9lgGD73GSFaWmWFDE4dg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2" + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4600,9 +4600,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.2.tgz", - "integrity": "sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.0.tgz", + "integrity": "sha512-91Sbl3s4Kb3SybliIY6muFBmHVv+pYXfybC4Oolp3dvk8BvIE3wOPc+403CWIT7mJNkfQRGtdqghzs2+Z91Tqg==", "dev": true, "license": "MIT", "engines": { @@ -4617,15 +4617,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.2.tgz", - "integrity": "sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.0.tgz", + "integrity": "sha512-3TRiZaQSltGqGeNrJzzr1+8YcEobKH9rHnqIp/1psfKFmhRQDNMGP5hBufanYTGznwShzVLs3Mz+gDN7HkWfXg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/utils": "8.58.2", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -4642,9 +4642,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.2.tgz", - "integrity": "sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.0.tgz", + "integrity": "sha512-nLzdsT1gdOgFxxxwrlNVUBzSNBEEHJ86bblmk4QAS6stfig7rcJzWKqCyxFy3YRRHXDWEkb2NralA1nOYkkm/A==", "dev": true, "license": "MIT", "engines": { @@ -4656,16 +4656,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.2.tgz", - "integrity": "sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.0.tgz", + "integrity": "sha512-O9Re9P1BmBLFJyikRbQpLku/QA3/AueZNO9WePLBwQrvkixTmDe8u76B6CYUAITRl/rHawggEqUGn5QIkVRLMw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.58.2", - "@typescript-eslint/tsconfig-utils": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/visitor-keys": "8.58.2", + "@typescript-eslint/project-service": "8.59.0", + "@typescript-eslint/tsconfig-utils": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/visitor-keys": "8.59.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -4697,16 +4697,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.2.tgz", - "integrity": "sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.0.tgz", + "integrity": "sha512-I1R/K7V07XsMJ12Oaxg/O9GfrysGTmCRhvZJBv0RE0NcULMzjqVpR5kRRQjHsz3J/bElU7HwCO7zkqL+MSUz+g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.2", - "@typescript-eslint/types": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2" + "@typescript-eslint/scope-manager": "8.59.0", + "@typescript-eslint/types": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4721,13 +4721,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.2.tgz", - "integrity": "sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.0.tgz", + "integrity": "sha512-/uejZt4dSere1bx12WLlPfv8GktzcaDtuJ7s42/HEZ5zGj9oxRaD4bj7qwSunXkf+pbAhFt2zjpHYUiT5lHf0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.2", + "@typescript-eslint/types": "8.59.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -4851,6 +4851,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4865,6 +4868,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4879,6 +4885,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4893,6 +4902,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4907,6 +4919,9 @@ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4921,6 +4936,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4935,6 +4953,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4949,6 +4970,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5369,9 +5393,9 @@ } }, "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -5404,9 +5428,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -5689,14 +5713,14 @@ "license": "MIT" }, "node_modules/asn1js": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", - "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", + "pvutils": "^1.1.5", "tslib": "^2.8.1" }, "engines": { @@ -5961,9 +5985,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.20.tgz", - "integrity": "sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==", + "version": "2.10.21", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.21.tgz", + "integrity": "sha512-Q+rUQ7Uz8AHM7DEaNdwvfFCTq7a43lNTzuS94eiWqwyxfV/wJv+oUivef51T91mmRY4d4A1u9rcSvkeufCVXlA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6011,9 +6035,9 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", "dev": true, "license": "MIT", "dependencies": { @@ -6025,7 +6049,7 @@ "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", - "qs": "~6.14.0", + "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" @@ -6052,22 +6076,6 @@ "dev": true, "license": "MIT" }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", @@ -6481,9 +6489,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001788", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", - "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", + "version": "1.0.30001790", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001790.tgz", + "integrity": "sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==", "dev": true, "funding": [ { @@ -7624,9 +7632,9 @@ } }, "node_modules/dompurify": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.0.tgz", - "integrity": "sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.1.tgz", + "integrity": "sha512-JahakDAIg1gyOm7dlgWSDjV4n7Ip2PKR55NIT6jrMfIgLFgWo81vdr1/QGqWtFNRqXP9UV71oVePtjqS2ebnPw==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -7688,9 +7696,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.340", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.340.tgz", - "integrity": "sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==", + "version": "1.5.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", "dev": true, "license": "ISC" }, @@ -7757,14 +7765,14 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" @@ -12291,9 +12299,9 @@ } }, "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "dev": true, "license": "MIT", "engines": { @@ -13025,9 +13033,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", "dev": true, "license": "MIT" }, @@ -14890,15 +14898,15 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, @@ -15011,9 +15019,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -16014,9 +16022,9 @@ } }, "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "engines": { @@ -16028,9 +16036,9 @@ } }, "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -16047,9 +16055,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==", "dev": true, "license": "MIT", "dependencies": { @@ -16790,16 +16798,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.58.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.2.tgz", - "integrity": "sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==", + "version": "8.59.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.0.tgz", + "integrity": "sha512-BU3ONW9X+v90EcCH9ZS6LMackcVtxRLlI3XrYyqZIwVSHIk7Qf7bFw1z0M9Q0IUxhTMZCf8piY9hTYaNEIASrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.58.2", - "@typescript-eslint/parser": "8.58.2", - "@typescript-eslint/typescript-estree": "8.58.2", - "@typescript-eslint/utils": "8.58.2" + "@typescript-eslint/eslint-plugin": "8.59.0", + "@typescript-eslint/parser": "8.59.0", + "@typescript-eslint/typescript-estree": "8.59.0", + "@typescript-eslint/utils": "8.59.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -17379,9 +17387,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.0.tgz", + "integrity": "sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==", "dev": true, "license": "MIT", "engines": { diff --git a/src/dataContentPane.js b/src/dataContentPane.js index 749ebc75..269af8a8 100644 --- a/src/dataContentPane.js +++ b/src/dataContentPane.js @@ -11,6 +11,7 @@ import * as UI from 'solid-ui' import * as $rdf from 'rdflib' +import './styles/dataContentPane.css' const ns = UI.ns @@ -42,6 +43,21 @@ export const dataContentPane = { return store.whether(subject, UI.ns.rdf('type'), UI.ns.link('RDFDocument')) }, */ + /* This code was generated by Generative AI (GPT-5.3-Codex in GitHub Copilot) based on the following prompt: + Only the class assignments of dataContentPaneNestedLight and dataContentPaneNestedDark + are the only things added by AI. + + This is the comment I got from copilot, but suggested fix remove the dark + class as well The nested table shading logic checks + UI.utils.ancestor(newTable, 'TABLE') immediately after + creating newTable, but at that moment newTable typically has no + parent in the DOM yet. This makes parentTable null and will + always apply dataContentPaneNestedLight, preventing the + intended alternating light/dark nested backgrounds. + Consider assigning the class after appending newTable into + its parent table, or pass the parent table (or current nesting + depth) into objectTree() so the decision can be made reliably. + can you help me fix this without removing the dark altering */ statementsAsTables: function statementsAsTables (sts, context, initialRoots) { const myDocument = context.dom // const outliner = context.getOutliner(myDocument) @@ -58,7 +74,7 @@ export const dataContentPane = { const referencedBnodes = {} // Bnodes which need to be named alas // The property tree for a single subject or anonymous node - function propertyTree (subject) { + function propertyTree (subject, nestingLevel = 0) { // print('Proprty tree for '+subject) const rep = myDocument.createElement('table') let lastPred = null @@ -74,6 +90,7 @@ export const dataContentPane = { for (let i = 0; i < sts.length; i++) { const st = sts[i] const tr = myDocument.createElement('tr') + tr.classList.add('dataContentPaneTopAlignedRow') if (st.predicate.uri !== lastPred) { if (lastPred && same > 1) { predicateTD.setAttribute('rowspan', '' + same) @@ -99,7 +116,7 @@ export const dataContentPane = { } same++ const objectTD = myDocument.createElement('td') - objectTD.appendChild(objectTree(st.object)) + objectTD.appendChild(objectTree(st.object, nestingLevel + 1)) tr.appendChild(objectTD) rep.appendChild(tr) } @@ -108,7 +125,7 @@ export const dataContentPane = { } // Convert a set of statements into a nested tree of tables - function objectTree (obj) { + function objectTree (obj, nestingLevel = 0) { let res, anchor switch (obj.termType) { case 'NamedNode': @@ -125,7 +142,7 @@ export const dataContentPane = { case 'Literal': if (!obj.datatype || !obj.datatype.uri) { res = myDocument.createElement('div') - res.setAttribute('style', 'white-space: pre-wrap;') + res.classList.add('contentPaneLiteral') res.textContent = obj.value return res } else if ( @@ -133,7 +150,7 @@ export const dataContentPane = { 'http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral' ) { res = myDocument.createElement('div') - res.setAttribute('class', 'embeddedXHTML') + res.classList.add('embeddedXHTML') res.innerHTML = obj.value // Try that @@@ beware embedded dangerous code return res } @@ -150,16 +167,12 @@ export const dataContentPane = { return anchor } doneBnodes[obj.toNT()] = true // Flag to prevent infinite recursion in propertyTree - const newTable = propertyTree(obj) + const newTable = propertyTree(obj, nestingLevel) doneBnodes[obj.toNT()] = newTable // Track where we mentioned it first - if ( - UI.utils.ancestor(newTable, 'TABLE') && - UI.utils.ancestor(newTable, 'TABLE').style.backgroundColor === - 'white' - ) { - newTable.style.backgroundColor = '#eee' + if (nestingLevel % 2 === 1) { + newTable.classList.add('dataContentPaneNestedLight') } else { - newTable.style.backgroundColor = 'white' + newTable.classList.add('dataContentPaneNestedDark') } return newTable } @@ -169,7 +182,7 @@ export const dataContentPane = { for (let i = 0; i < obj.elements.length; i++) { const tr = myDocument.createElement('tr') res.appendChild(tr) - tr.appendChild(objectTree(obj.elements[i])) + tr.appendChild(objectTree(obj.elements[i], nestingLevel + 1)) } return res case 'Graph': @@ -200,7 +213,7 @@ export const dataContentPane = { } for (let i = 0; i < roots.length; i++) { const tr = myDocument.createElement('tr') - tr.setAttribute('style', `background-color: ${i % 2 === 0 ? '#f0f0f0' : 'white'};`) + tr.classList.add(i % 2 === 0 ? 'dataContentPaneRowEven' : 'dataContentPaneRowOdd') rep.appendChild(tr) const subjectTD = myDocument.createElement('td') tr.appendChild(subjectTD) @@ -210,9 +223,9 @@ export const dataContentPane = { if (root.termType === 'BlankNode') { subjectTD.appendChild(myDocument.createTextNode(UI.utils.label(root))) // Don't recurse! } else { - subjectTD.appendChild(objectTree(root)) // won't have tree + subjectTD.appendChild(objectTree(root, 0)) // won't have tree } - TDTree.appendChild(propertyTree(root)) + TDTree.appendChild(propertyTree(root, 0)) } for (const bNT in referencedBnodes) { // Add number to refer to @@ -248,9 +261,9 @@ export const dataContentPane = { return div } for (let i = 0; i < roots.length; i++) { - const tr = myDocument.createElement('TR') + const tr = myDocument.createElement('tr') + tr.classList.add('dataContentPaneTopAlignedRow') const root = roots[i] - tr.style.verticalAlign = 'top' const td = outliner.outlineObjectTD(root, undefined, tr) tr.appendChild(td) div.appendChild(tr) diff --git a/src/imagePane.js b/src/imagePane.js index a8b3f819..d26cbf4c 100644 --- a/src/imagePane.js +++ b/src/imagePane.js @@ -3,6 +3,7 @@ ** This outline pane contains the document contents for an Image document */ import * as UI from 'solid-ui' +import './styles/imagePane.css' export const imagePane = { icon: UI.icons.originalIconBase + 'tango/22-image-x-generic.png', @@ -50,7 +51,7 @@ export const imagePane = { const store = context.session.store const div = myDocument.createElement('div') div.setAttribute('class', 'imageView') - const img = myDocument.createElement('IMG') + const img = myDocument.createElement('img') // get image with authenticated fetch store.fetcher._fetch(subject.uri) @@ -61,13 +62,8 @@ export const imagePane = { const objectURL = URL.createObjectURL(myBlob) img.setAttribute('src', objectURL) // w640 h480 // }) - - img.setAttribute('style', 'max-width: 100%; max-height: 100%;') - // div.style['max-width'] = '640' - // div.style['max-height'] = '480' - const tr = myDocument.createElement('TR') // why need tr? - tr.appendChild(img) - div.appendChild(tr) + img.classList.add('imagePaneViewImage') + div.appendChild(img) return div } } diff --git a/src/internal/internalPane.ts b/src/internal/internalPane.ts index a73aa584..8066e1a8 100644 --- a/src/internal/internalPane.ts +++ b/src/internal/internalPane.ts @@ -8,6 +8,7 @@ import { icons, ns, widgets } from 'solid-ui' import { BlankNode, IndexedFormula, literal, NamedNode, st, sym, Variable, Store } from 'rdflib' import { PaneDefinition } from 'pane-registry' +import '../styles/internalPane.css' const pane: PaneDefinition = { icon: icons.originalIconBase + 'tango/22-emblem-system.png', @@ -36,11 +37,7 @@ const pane: PaneDefinition = { } const div = dom.createElement('div') - div.setAttribute('class', 'internalPane') - div.setAttribute( - 'style', - 'background-color: #ddddff; padding: 0.5em; border-radius: 1em;' - ) + div.classList.add('internalPane', 'internalPaneContent') function deleteRecursive (kb: IndexedFormula, folder: NamedNode) { const fetcher = (kb as any).fetcher @@ -86,8 +83,7 @@ const pane: PaneDefinition = { const isDocument = subject.uri && !subject.uri.includes('#') if (isDocument) { const controls = div.appendChild(dom.createElement('table')) - controls.style.width = '100%' - controls.style.margin = '1em' + controls.classList.add('internalPaneControls') const controlRow = controls.appendChild(dom.createElement('tr')) const deleteCell = controlRow.appendChild(dom.createElement('td')) @@ -128,8 +124,9 @@ const pane: PaneDefinition = { }) } ) - deleteButton.style = 'height: 2em;' - deleteButton.class = '' // Remove hover hide + + deleteButton.removeAttribute('class') // Remove hover hide + deleteButton.classList.add('internalPaneDeleteButton') deleteCell.appendChild(deleteButton) } diff --git a/src/schedule/schedulePane.js b/src/schedule/schedulePane.js index bb49951b..4f88894f 100644 --- a/src/schedule/schedulePane.js +++ b/src/schedule/schedulePane.js @@ -8,6 +8,8 @@ import * as UI from 'solid-ui' import { authn } from 'solid-logic' import * as $rdf from 'rdflib' import formText from './formsForSchedule.ttl' +import '../styles/schedulePane.css' +import '../styles/utilities.css' const ns = UI.ns @@ -347,10 +349,6 @@ export const schedulePane = { $rdf.parse(formText, kb, formsURI, 'text/turtle') // Load forms directly - const inputStyle = - 'background-color: #eef; padding: 0.5em; border: .5em solid white; font-size: 100%' // font-size: 120% - const buttonIconStyle = 'width: 1.8em; height: 1.8em;' - // Utility functions const complainIfBad = function (ok, message) { @@ -369,9 +367,10 @@ export const schedulePane = { const refreshCellColor = function (cell, value) { const bg = kb.any(value, UI.ns.ui('backgroundColor')) if (bg) { + cell.classList.add('schedulePaneCell') cell.setAttribute( 'style', - 'padding: 0.3em; text-align: center; background-color: ' + bg + ';' + 'background-color: ' + bg + ';' ) } } @@ -402,7 +401,7 @@ export const schedulePane = { { noun: 'scheduler' }, initializeNewInstanceInWorkspace ) - b.firstChild.setAttribute('style', inputStyle) + b.firstChild.classList.add('schedulePaneButton') return b } // newInstanceButton @@ -539,7 +538,7 @@ export const schedulePane = { div.appendChild(dom.createElement('br')) // @@ const button = div.appendChild(dom.createElement('button')) - button.setAttribute('style', inputStyle) + button.classList.add('schedulePaneButton') button.textContent = 'Start new poll at this URI' button.addEventListener('click', function (_e) { let newBase = baseField.value @@ -649,7 +648,7 @@ export const schedulePane = { } } const b1 = clearElement(naviLeft).appendChild(dom.createElement('button')) - b1.setAttribute('style', inputStyle) + b1.classList.add('schedulePaneButton') b1.textContent = '<- go back' b1.addEventListener( 'click', @@ -665,7 +664,7 @@ export const schedulePane = { const b2 = clearElement(naviRight).appendChild( dom.createElement('button') ) - b2.setAttribute('style', inputStyle) + b2.classList.add('schedulePaneButton') b2.textContent = 'continue ->' b2.addEventListener( 'click', @@ -730,7 +729,7 @@ export const schedulePane = { $rdf.st(subject, ns.sched('results'), resultsDoc, detailsDoc) ) // @@ also link in results - doneButton.setAttribute('style', inputStyle) + doneButton.classList.add('schedulePaneButton') doneButton.textContent = 'Go to poll' doneButton.addEventListener( 'click', @@ -759,10 +758,10 @@ export const schedulePane = { ) const emailButton = dom.createElement('button') - emailButton.setAttribute('style', inputStyle) + emailButton.classList.add('schedulePaneButton') const emailIcon = emailButton.appendChild(dom.createElement('img')) emailIcon.setAttribute('src', UI.icons.iconBase + 'noun_480183.svg') // noun_480183.svg - emailIcon.setAttribute('style', buttonIconStyle) + emailIcon.classList.add('schedulePaneButtonIcon') // emailButton.textContent = 'email invitations' emailButton.addEventListener( 'click', @@ -1054,11 +1053,11 @@ export const schedulePane = { matrix.setAttribute('class', 'matrix') const refreshButton = dom.createElement('button') - refreshButton.setAttribute('style', inputStyle) + refreshButton.classList.add('schedulePaneButton') // refreshButton.textContent = 'refresh' // noun_479395.svg const refreshIcon = dom.createElement('img') refreshIcon.setAttribute('src', UI.icons.iconBase + 'noun_479395.svg') - refreshIcon.setAttribute('style', buttonIconStyle) + refreshIcon.classList.add('schedulePaneButtonIcon') refreshButton.appendChild(refreshIcon) refreshButton.addEventListener( 'click', @@ -1191,11 +1190,11 @@ export const schedulePane = { const instanceCreator = kb.any(subject, ns.foaf('maker')) // owner? if (!instanceCreator || instanceCreator.sameTerm(me)) { const editButton = dom.createElement('button') - editButton.setAttribute('style', inputStyle) + editButton.classList.add('schedulePaneButton') // editButton.textContent = '(Modify the poll)' // noun_344563.svg const editIcon = dom.createElement('img') editIcon.setAttribute('src', UI.icons.iconBase + 'noun_344563.svg') - editIcon.setAttribute('style', buttonIconStyle) + editIcon.classList.add('schedulePaneButtonIcon') editButton.appendChild(editIcon) editButton.addEventListener( 'click', @@ -1217,10 +1216,7 @@ export const schedulePane = { const div = dom.createElement('div') const structure = div.appendChild(dom.createElement('table')) // @@ make responsive style - structure.setAttribute( - 'style', - 'background-color: white; min-width: 40em; min-height: 13em;' - ) + structure.classList.add('schedulePaneTable') const naviLoginoutTR = structure.appendChild(dom.createElement('tr')) naviLoginoutTR.appendChild(dom.createElement('td')) @@ -1241,12 +1237,7 @@ export const schedulePane = { naviMain.setAttribute('colspan', '3') const naviMenu = structure.appendChild(dom.createElement('tr')) - naviMenu.setAttribute('class', 'naviMenu') - naviMenu.setAttribute( - 'style', - ' text-align: middle; vertical-align: middle; padding-top: 4em; ' - ) - // naviMenu.setAttribute('style', 'margin-top: 3em;') + naviMenu.classList.add('naviMenu', 'schedulePaneNaviMenu') const naviLeft = naviMenu.appendChild(dom.createElement('td')) const naviCenter = naviMenu.appendChild(dom.createElement('td')) const naviRight = naviMenu.appendChild(dom.createElement('td')) diff --git a/src/styles/dataContentPane.css b/src/styles/dataContentPane.css new file mode 100644 index 00000000..586d8136 --- /dev/null +++ b/src/styles/dataContentPane.css @@ -0,0 +1,23 @@ +.contentPaneLiteral { + white-space: pre-wrap; +} + +.dataContentPaneRowEven { + background-color: #f0f0f0; +} + +.dataContentPaneRowOdd { + background-color: var(--color-background, white); +} + +.dataContentPaneTopAlignedRow { + vertical-align: top; +} + +.dataContentPaneNestedLight { + background-color: var(--color-background, white); +} + +.dataContentPaneNestedDark { + background-color: #eee; +} \ No newline at end of file diff --git a/src/styles/formPane.css b/src/styles/formPane.css new file mode 100644 index 00000000..b99f1128 --- /dev/null +++ b/src/styles/formPane.css @@ -0,0 +1,19 @@ +.formPaneMessage { + color: #666; + margin: var(--spacing-xs, 0.5em) 0; + padding: var(--spacing-xs, 0.35em) var(--spacing-xs, 0.5em); +} + +.formPaneMessageInfo { + background-color: var(--color-main-block-bg, #eee); +} + +.formPaneMessageError { + background-color: var(--color-log-error-bg, #fee); +} +.formPaneEditButton { + padding: var(--spacing-xs, 0.5em); + border: .5em solid white; + font-size: 100%; + float: right; +} diff --git a/src/styles/humanReadablePane.css b/src/styles/humanReadablePane.css new file mode 100644 index 00000000..42a23545 --- /dev/null +++ b/src/styles/humanReadablePane.css @@ -0,0 +1,8 @@ +.humanReadableFrame { + border: 1px solid; + padding: var(--spacing-md, 1em); + height: var(--human-readable-height, 30em); + width: 800px; + resize: both; + overflow: auto; +} diff --git a/src/styles/imagePane.css b/src/styles/imagePane.css new file mode 100644 index 00000000..a049633f --- /dev/null +++ b/src/styles/imagePane.css @@ -0,0 +1,4 @@ +.imagePaneViewImage { + max-width: 100%; + max-height: 100%; +} diff --git a/src/styles/internalPane.css b/src/styles/internalPane.css new file mode 100644 index 00000000..eac9bcff --- /dev/null +++ b/src/styles/internalPane.css @@ -0,0 +1,12 @@ +.internalPaneContent { + background-color: #ddddff; + padding: var(--spacing-xs, 0.5em); + border-radius: 1em; +} +.internalPaneControls { + width: 100%; + margin: var(--spacing-sm, 1em); +} +.internalPaneDeleteButton { + height: var(--icon-base, 2em); +} \ No newline at end of file diff --git a/src/styles/padPane.css b/src/styles/padPane.css new file mode 100644 index 00000000..3d6ee1f2 --- /dev/null +++ b/src/styles/padPane.css @@ -0,0 +1,13 @@ +.padPaneTable { + border-collapse: collapse; + width: 100%; + background-color: white; + min-width: 94%; + margin-right: 3%; + margin-left: 3%; + min-height: 13em; +} + +.padPaneSuccess { + font-size: 140%; +} \ No newline at end of file diff --git a/src/styles/schedulePane.css b/src/styles/schedulePane.css new file mode 100644 index 00000000..cb3fd671 --- /dev/null +++ b/src/styles/schedulePane.css @@ -0,0 +1,28 @@ +.schedulePaneTable { + border-collapse: collapse; + background-color: white; + min-width: 40em; + min-height: 13em; +} + +.schedulePaneButton { + background-color: #eef; + padding: var(--spacing-xs, 0.5em); + border: .5em solid white; + font-size: 100%; +} + +.schedulePaneButtonIcon { + width: var(--icon-sm, 1.8em); + height: var(--icon-sm, 1.8em); +} + +.schedulePaneNaviMenu { + text-align: center; + vertical-align: middle; + padding-top: 4em; +} +.schedulePaneCell { + padding: var(--spacing-xs, 0.3em); + text-align: center; +} diff --git a/src/style/tabbedtab.css b/src/styles/tabbedtab.css similarity index 100% rename from src/style/tabbedtab.css rename to src/styles/tabbedtab.css diff --git a/src/styles/utilities.css b/src/styles/utilities.css new file mode 100644 index 00000000..47e14e3d --- /dev/null +++ b/src/styles/utilities.css @@ -0,0 +1,5 @@ +:root { + --icon-sm: 1.8em; + --color-background-row-default: white; + --color-background-row-alternate: #f0f0f0; +} \ No newline at end of file diff --git a/test/unit/outline/manager.test.ts b/test/unit/outline/manager.test.ts index 33f471c1..37f08bd1 100644 --- a/test/unit/outline/manager.test.ts +++ b/test/unit/outline/manager.test.ts @@ -40,8 +40,12 @@ describe('manager', () => { it('is selectable', () => { expect(result).toHaveAttribute('notselectable', 'false') }) - it('has style', () => { - expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;') + it('uses main inline layout styles', () => { + expect(result).toHaveStyle({ + margin: '0.2em', + padding: '0px', + verticalAlign: 'top' + }) }) it('shows an expand icon', () => { const img = result.firstChild @@ -94,8 +98,12 @@ describe('manager', () => { it('is selectable', () => { expect(result).toHaveAttribute('notselectable', 'false') }) - it('has style', () => { - expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;') + it('uses main inline layout styles', () => { + expect(result).toHaveStyle({ + margin: '0.2em', + padding: '0px', + verticalAlign: 'top' + }) }) it('shows an expand icon', () => { const img = result.firstChild @@ -141,8 +149,12 @@ describe('manager', () => { it('is selectable', () => { expect(result).toHaveAttribute('notselectable', 'false') }) - it('has style', () => { - expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;') + it('uses main inline layout styles', () => { + expect(result).toHaveStyle({ + margin: '0.2em', + padding: '0px', + verticalAlign: 'top' + }) }) it('shows the literal text', () => { expect(result).toHaveTextContent('some text') @@ -171,8 +183,12 @@ describe('manager', () => { it('is selectable', () => { expect(result).toHaveAttribute('notselectable', 'false') }) - it('has style', () => { - expect(result).toHaveStyle('margin: 0.2em; border: none; padding: 0; vertical-align: top;') + it('uses main inline layout styles', () => { + expect(result).toHaveStyle({ + margin: '0.2em', + padding: '0px', + verticalAlign: 'top' + }) }) it('shows 3 dots', () => { expect(result).toHaveTextContent('...')