diff --git a/package-lock.json b/package-lock.json index da348c4a3..6ce577f4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,15 +24,6 @@ "vitest": "^2.0.3" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -60,21 +51,21 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -707,9 +698,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.2.tgz", - "integrity": "sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", + "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", "cpu": [ "arm" ], @@ -720,9 +711,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.2.tgz", - "integrity": "sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", + "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", "cpu": [ "arm64" ], @@ -733,9 +724,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.2.tgz", - "integrity": "sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", + "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", "cpu": [ "arm64" ], @@ -746,9 +737,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.2.tgz", - "integrity": "sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", + "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", "cpu": [ "x64" ], @@ -759,9 +750,22 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.2.tgz", - "integrity": "sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", + "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", + "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", "cpu": [ "arm" ], @@ -772,9 +776,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.2.tgz", - "integrity": "sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", + "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", "cpu": [ "arm64" ], @@ -785,9 +789,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.2.tgz", - "integrity": "sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", + "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", "cpu": [ "arm64" ], @@ -798,11 +802,11 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.13.2.tgz", - "integrity": "sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", + "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", "cpu": [ - "ppc64le" + "ppc64" ], "dev": true, "optional": true, @@ -811,9 +815,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.2.tgz", - "integrity": "sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", + "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", "cpu": [ "riscv64" ], @@ -824,9 +828,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.13.2.tgz", - "integrity": "sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", + "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", "cpu": [ "s390x" ], @@ -837,9 +841,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.2.tgz", - "integrity": "sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", + "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", "cpu": [ "x64" ], @@ -850,9 +854,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.2.tgz", - "integrity": "sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", + "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", "cpu": [ "x64" ], @@ -863,9 +867,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.2.tgz", - "integrity": "sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", + "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", "cpu": [ "arm64" ], @@ -876,9 +880,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.2.tgz", - "integrity": "sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", + "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", "cpu": [ "ia32" ], @@ -889,9 +893,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.2.tgz", - "integrity": "sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", + "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", "cpu": [ "x64" ], @@ -1371,12 +1375,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2176,9 +2180,9 @@ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -3036,17 +3040,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -3535,9 +3539,9 @@ } }, "node_modules/rollup": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.2.tgz", - "integrity": "sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", + "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -3550,21 +3554,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.13.2", - "@rollup/rollup-android-arm64": "4.13.2", - "@rollup/rollup-darwin-arm64": "4.13.2", - "@rollup/rollup-darwin-x64": "4.13.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.2", - "@rollup/rollup-linux-arm64-gnu": "4.13.2", - "@rollup/rollup-linux-arm64-musl": "4.13.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.13.2", - "@rollup/rollup-linux-riscv64-gnu": "4.13.2", - "@rollup/rollup-linux-s390x-gnu": "4.13.2", - "@rollup/rollup-linux-x64-gnu": "4.13.2", - "@rollup/rollup-linux-x64-musl": "4.13.2", - "@rollup/rollup-win32-arm64-msvc": "4.13.2", - "@rollup/rollup-win32-ia32-msvc": "4.13.2", - "@rollup/rollup-win32-x64-msvc": "4.13.2", + "@rollup/rollup-android-arm-eabi": "4.17.2", + "@rollup/rollup-android-arm64": "4.17.2", + "@rollup/rollup-darwin-arm64": "4.17.2", + "@rollup/rollup-darwin-x64": "4.17.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", + "@rollup/rollup-linux-arm-musleabihf": "4.17.2", + "@rollup/rollup-linux-arm64-gnu": "4.17.2", + "@rollup/rollup-linux-arm64-musl": "4.17.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", + "@rollup/rollup-linux-riscv64-gnu": "4.17.2", + "@rollup/rollup-linux-s390x-gnu": "4.17.2", + "@rollup/rollup-linux-x64-gnu": "4.17.2", + "@rollup/rollup-linux-x64-musl": "4.17.2", + "@rollup/rollup-win32-arm64-msvc": "4.17.2", + "@rollup/rollup-win32-ia32-msvc": "4.17.2", + "@rollup/rollup-win32-x64-msvc": "4.17.2", "fsevents": "~2.3.2" } }, @@ -3619,13 +3624,10 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4366,6 +4368,15 @@ "node": ">=8" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/src/CSS/themes.css b/src/CSS/themes.css index 1c7879e74..a4e26a58c 100644 --- a/src/CSS/themes.css +++ b/src/CSS/themes.css @@ -2,34 +2,11 @@ * @author James Oswald */ -/* Default Theme, Huda-Tiwari Nature Theme*/ -:root { - --global-background : #ffffff; - --p-text : #000000; - --canvas-items : #000000; - --good-placement : #00FF00; - --bad-placement : #FF0000; - --header-border: 2px solid #000000; - --header-bg : #a6b6d9; - --toolbar-border: 2px solid black; - --toolbar-bg: #94b09c; - --subbar-border: 2px solid black; - --subbar-bg: #bed7be; - --sidebar-border: 2px solid #000000; - --sidebar-bg: #526D82; - --mode-btn-border: 2px solid #000000; - --mode-btn-bg: buttonface; - --mode-btn-icon-color : #000000; - --mode-btn-radius: 25%; - --mode-btn-hover-bg: #d4e8f5; - --mode-btn-shadow: 1px 2px 1px #000000; - --mode-btn-press-shadow: inset 0px 0px 5px #000000; -} - -[data-theme="Wireframe"] { +[data-theme="Light-Wireframe"] { --global-background : #ffffff; --p-text : #000000; --canvas-bg : #ffffff; + --canvas-odd-bg : #c3c3c3; --canvas-items : #000000; --good-placement : #00FF00; --bad-placement : #FF0000; @@ -57,6 +34,7 @@ --global-background : #000000; --p-text : var(--dark-highlights); --canvas-bg : #000000; + --canvas-odd-bg : #6b6b6b; --canvas-items : var(--dark-highlights); --good-placement : #00ff00; --bad-placement : #ff0000; @@ -77,125 +55,55 @@ --mode-btn-press-shadow: none; } -[data-theme="vs-code"] { - --p-text : #dcdcaa; - --canvas-bg : #1f1f1f; - --canvas-items : #9cdcfe; - --good-placement : #73c991; - --bad-placement : #f44747; - --header-border: 1px solid #cccccc; - --header-bg : #2b2b2b; - --toolbar-border: 1px solid #cccccc; - --toolbar-bg: #2b2b2b; - --subbar-border: 1px solid #cccccc; - --subbar-bg: #2b2b2b; - --sidebar-border: 1px solid #cccccc; - --sidebar-bg: #2b2b2b; - --mode-btn-border: 1px solid #cccccc; - --mode-btn-bg: #2b2b2b; - --mode-btn-icon-color : #868686; - --mode-btn-radius: 10%; - --mode-btn-hover-bg: none; - --mode-btn-shadow: none; - --mode-btn-press-shadow: none; -} - -/* Ryan Theme */ -[data-theme="Peirced-from-Within"] { - --dark-highlights : #b11d20; - --p-text : #f5d51d; - --canvas-bg : #07140e; - --canvas-items : #f4f3cd; - --good-placement : #46ff00; - --bad-placement : #c60003; - --header-border: 1px solid #0a1e0a; - --header-bg : #151715; - --toolbar-border: 1px solid #02281c; - --toolbar-bg: #150f12; - --subbar-border: 1px solid #05281c; - --subbar-bg: #201412; - --sidebar-border: 1px solid #05281c; - --sidebar-bg: #05141d; - --mode-btn-border: 1px solid #05281c; - --mode-btn-bg: r#2b2b2b; - --mode-btn-icon-color : #868686; - --mode-btn-radius: 0%; - --mode-btn-hover-bg: none; - --mode-btn-shadow: none; - --mode-btn-press-shadow: none; -} - -/* Dawn Theme */ -[data-theme="Vampire-Core"] { +/* Following two schemes altered according this link: +https://davidmathlogic.com/colorblind/#%23000000-%23E69F00-%2356B4E9-%23009E73-%23F0E442-%230072B2-%23D55E00-%23CC79A7 */ +[data-theme="Light-Colorblind"] { --global-background : #ffffff; - --p-text : #ffffff; - --canvas-bg : #a00404; + --p-text : #000000; + --canvas-bg : #ffffff; + --canvas-odd-bg : #c3c3c3; --canvas-items : #000000; - --good-placement : #ffffff; - --bad-placement : #e480c6; - --header-border: 2px solid #ffffff; - --header-bg : #000000; - --toolbar-border: 2px solid #ffffff; - --toolbar-bg: #000000; - --subbar-border: 2px solid #ffffff; - --subbar-bg: #000000; - --sidebar-border: 2px solid #ffffff; - --sidebar-bg: #000000; - --mode-btn-border: 2px solid #a00404; - --mode-btn-bg: #a00404;; - --mode-btn-icon-color :#ffffff; - --mode-btn-radius: 25%; - --mode-btn-hover-bg: none; - --mode-btn-shadow: none; - --mode-btn-press-shadow: inset 0px 0px 5px #ffffff; -} - -/* Anusha Theme */ -[data-theme="Peircing-the-Galaxy"] { - --global-background : #ffffff; - --p-text : #85d8ff; - --canvas-bg : #34034a; - --canvas-items : #ffffff; - --good-placement : #85d8ff; - --bad-placement : #f59696; + --good-placement : #009E73; + --bad-placement : #D55E00; --header-border: 2px solid #000000; - --header-bg : #270968; + --header-bg : #ffffff; --toolbar-border: 2px solid #000000; - --toolbar-bg: #2b0962; + --toolbar-bg: #ffffff; --subbar-border: 2px solid #000000; - --subbar-bg: #350953; + --subbar-bg: #ffffff; --sidebar-border: 2px solid #000000; - --sidebar-bg: #470d60; + --sidebar-bg: #ffffff; --mode-btn-border: 2px solid #000000; - --mode-btn-bg: #6c2da2;; - --mode-btn-icon-color :#ffffff; - --mode-btn-radius: 25%; + --mode-btn-bg: buttonface; + --mode-btn-icon-color : #000000; + --mode-btn-radius: 0%; --mode-btn-hover-bg: none; - --mode-btn-shadow: 1px 2px 1px #000000; - --mode-btn-press-shadow: inset 0px 0px 5px #000000; + --mode-btn-shadow: none; + --mode-btn-press-shadow: inset 0px 0px 5px #552898; } -/* Subrina Theme */ -[data-theme="Ocean-Pearl"] { - --global-background : #ffffff; - --p-text : #ffffff; - --canvas-bg : #e2b3ef; - --canvas-items : #5d95a3; - --good-placement : #ffffff; - --bad-placement : #8dc4d2; - --header-border: 2px solid #ffffff; - --header-bg : #8dc4d2; - --toolbar-border: 2px solid #ffffff; - --toolbar-bg: #8dc4d2; - --subbar-border: 2px solid #ffffff; - --subbar-bg: #8dc4d2; - --sidebar-border: 2px solid #ffffff; - --sidebar-bg: #8dc4d2; - --mode-btn-border: 2px solid #bb77ce; - --mode-btn-bg: #bb77ce;; - --mode-btn-icon-color :#ffffff; - --mode-btn-radius: 25%; +[data-theme="Dark-Colorblind"] { + --dark-highlights : #762eac; + --global-background : #000000; + --p-text : var(--dark-highlights); + --canvas-bg : #000000; + --canvas-odd-bg : #6b6b6b; + --canvas-items : var(--dark-highlights); + --good-placement : #009E73; + --bad-placement : #D55E00; + --header-border: 2px solid var(--dark-highlights); + --header-bg : #000000; + --toolbar-border: 2px solid var(--dark-highlights); + --toolbar-bg: #000000; + --subbar-border: 2px solid var(--dark-highlights); + --subbar-bg: #000000; + --sidebar-border: 2px solid var(--dark-highlights); + --sidebar-bg: #000000; + --mode-btn-border: 2px solid var(--dark-highlights); + --mode-btn-bg: #000000; + --mode-btn-icon-color : var(--dark-highlights); + --mode-btn-radius: 50%; --mode-btn-hover-bg: none; --mode-btn-shadow: none; - --mode-btn-press-shadow: inset 0px 0px 5px #ffffff; + --mode-btn-press-shadow: none; } \ No newline at end of file diff --git a/src/ProofTools/DeiterationTool.ts b/src/ProofTools/DeiterationTool.ts index c1d2afcd5..bc8347199 100644 --- a/src/ProofTools/DeiterationTool.ts +++ b/src/ProofTools/DeiterationTool.ts @@ -9,7 +9,7 @@ import {AEGTree} from "../AEG/AEGTree"; import {AtomNode} from "../AEG/AtomNode"; import {CutNode} from "../AEG/CutNode"; import {getCurrentProofTree} from "./ProofToolUtils"; -import {highlightNode, redrawProof, redrawTree} from "../SharedToolUtils/DrawUtils"; +import {highlightNode, redrawProof} from "../SharedToolUtils/DrawUtils"; import {illegalColor} from "../Themes"; import {offset} from "../SharedToolUtils/DragTool"; import {Point} from "../AEG/Point"; @@ -118,7 +118,6 @@ function determineLegalityAndHighlightAsIllegal(): void { if (tempParent !== null) { tempParent.remove(currentPoint); } - redrawTree(tempTree); highlightNode(currentNode, illegalColor()); tempTree.insert(currentNode); } else { diff --git a/src/ProofTools/DoubleCutDeletionTool.ts b/src/ProofTools/DoubleCutDeletionTool.ts index 0fdf3466b..6796086e9 100644 --- a/src/ProofTools/DoubleCutDeletionTool.ts +++ b/src/ProofTools/DoubleCutDeletionTool.ts @@ -8,7 +8,7 @@ import {AEGTree} from "../AEG/AEGTree"; import {AtomNode} from "../AEG/AtomNode"; import {CutNode} from "../AEG/CutNode"; -import {drawCut, redrawProof, redrawTree} from "../SharedToolUtils/DrawUtils"; +import {drawCut, redrawProof} from "../SharedToolUtils/DrawUtils"; import {getCurrentProofTree} from "./ProofToolUtils"; import {illegalColor} from "../Themes"; import {offset} from "../SharedToolUtils/DragTool"; @@ -152,7 +152,6 @@ function determineLegalityAndHighlightAsIllegal(): void { tempLower.children = []; } - redrawTree(tempTree); highlightDoubleCutAsIllegal(currentNode); } else { legalNode = false; diff --git a/src/ProofTools/ErasureTool.ts b/src/ProofTools/ErasureTool.ts index 8b62344dd..30f3c6128 100644 --- a/src/ProofTools/ErasureTool.ts +++ b/src/ProofTools/ErasureTool.ts @@ -10,7 +10,7 @@ import {AEGTree} from "../AEG/AEGTree"; import {AtomNode} from "../AEG/AtomNode"; import {CutNode} from "../AEG/CutNode"; import {getCurrentProofTree} from "./ProofToolUtils"; -import {highlightNode, redrawProof, redrawTree} from "../SharedToolUtils/DrawUtils"; +import {highlightNode, redrawProof} from "../SharedToolUtils/DrawUtils"; import {illegalColor} from "../Themes"; import {offset} from "../SharedToolUtils/DragTool"; import {Point} from "../AEG/Point"; @@ -122,7 +122,6 @@ function determineLegalityAndHighlightAsIllegal(): void { tempParent.remove(currentPoint); } - redrawTree(tempTree); highlightNode(currentNode, illegalColor()); tempTree.insert(currentNode); } else { diff --git a/src/ProofTools/ProofMoveMultiTool.ts b/src/ProofTools/ProofMoveMultiTool.ts index c54ffdc58..8ef1b9ede 100644 --- a/src/ProofTools/ProofMoveMultiTool.ts +++ b/src/ProofTools/ProofMoveMultiTool.ts @@ -61,7 +61,7 @@ export function proofMoveMultiMouseDown(event: MouseEvent): void { currentParent.remove(startingPoint); } legalNode = true; - redrawTree(currentProofTree); + redrawTree(TreeContext.currentProofStep!.tree); highlightNode(currentNode, legalColor()); } else { legalNode = false; @@ -84,7 +84,7 @@ export function proofMoveMultiMouseMove(event: MouseEvent): void { event.y - startingPoint.y ); - redrawTree(currentProofTree); + redrawTree(TreeContext.currentProofStep!.tree); if (currentNode instanceof CutNode) { const tempCut: CutNode = alterCutChildren(currentNode, moveDifference); const color = isMoveLegal(currentProofTree, tempCut) ? legalColor() : illegalColor(); diff --git a/src/ProofTools/ProofMoveSingleTool.ts b/src/ProofTools/ProofMoveSingleTool.ts index dd9f58354..4ff48029a 100644 --- a/src/ProofTools/ProofMoveSingleTool.ts +++ b/src/ProofTools/ProofMoveSingleTool.ts @@ -70,7 +70,7 @@ export function proofMoveSingleMouseDown(event: MouseEvent): void { } legalNode = true; - redrawTree(currentProofTree); + redrawTree(TreeContext.currentProofStep!.tree); if (currentNode instanceof AtomNode) { drawAtom(currentNode, legalColor(), true); } else { @@ -94,7 +94,7 @@ export function proofMoveSingleMouseMove(event: MouseEvent): void { event.y - startingPoint.y ); - redrawTree(currentProofTree); + redrawTree(TreeContext.currentProofStep!.tree); if (currentNode instanceof CutNode) { const tempCut: CutNode = alterCut(currentNode, moveDifference); const color = isMoveLegal(currentProofTree, tempCut) ? legalColor() : illegalColor(); diff --git a/src/ProofTools/ProofResizeTool.ts b/src/ProofTools/ProofResizeTool.ts index 67297c3a3..d9e147956 100644 --- a/src/ProofTools/ProofResizeTool.ts +++ b/src/ProofTools/ProofResizeTool.ts @@ -19,7 +19,6 @@ import { determineDirection, drawCut, redrawProof, - redrawTree, } from "../SharedToolUtils/DrawUtils"; import {CutNode} from "../AEG/CutNode"; import {ellipseLargeEnough, resizeCut} from "../SharedToolUtils/EditModeUtils"; @@ -94,7 +93,7 @@ export function proofResizeMouseMove(event: MouseEvent): void { if (currentNode instanceof CutNode) { const tempCut: CutNode = resizeCut(currentNode, moveDifference, direction); if (tempCut.ellipse !== null) { - redrawTree(currentProofTree); + redrawProof(); const color = isValid(tempCut) ? legalColor() : illegalColor(); drawCut(tempCut, color); determineAndChangeCursorStyle(color, "cursor: crosshair", "cursor: no-drop"); diff --git a/src/SharedToolUtils/DrawUtils.ts b/src/SharedToolUtils/DrawUtils.ts index 9fc8a152d..198a3a1d4 100644 --- a/src/SharedToolUtils/DrawUtils.ts +++ b/src/SharedToolUtils/DrawUtils.ts @@ -11,7 +11,7 @@ import {AtomNode} from "../AEG/AtomNode"; import {CutNode} from "../AEG/CutNode"; import {Ellipse} from "../AEG/Ellipse"; import {offset} from "./DragTool"; -import {legalColor, placedColor} from "../Themes"; +import {cssVar, legalColor, placedColor} from "../Themes"; import {Point} from "../AEG/Point"; import {TreeContext} from "../TreeContext"; @@ -184,7 +184,7 @@ export function redrawTree(tree: AEGTree, color?: string): void { * @param color Incoming color string. Defaults to the color of a valid placement if not passed in. */ function redrawCut(incomingNode: CutNode, color?: string): void { - for (let i = 0; incomingNode.children.length > i; i++) { + for (let i = 0; i < incomingNode.children.length; i++) { if (incomingNode.children[i] instanceof AtomNode) { redrawAtom(incomingNode.children[i]); } else { @@ -203,6 +203,17 @@ function redrawCut(incomingNode: CutNode, color?: string): void { 0, 2 * Math.PI ); + ctx.globalCompositeOperation = "destination-over"; + + ctx.fillStyle = + (TreeContext.modeState === "Draw" && + TreeContext.tree.getLevel(incomingNode) % 2 === 0) || + (TreeContext.modeState === "Proof" && + TreeContext.currentProofStep!.tree.getLevel(incomingNode) % 2 === 0) + ? cssVar("--canvas-odd-bg") + : cssVar("--canvas-bg"); + ctx.fill(); + ctx.globalCompositeOperation = "source-over"; ctx.stroke(); } } diff --git a/src/Themes.ts b/src/Themes.ts index 4b80d08be..87988571a 100644 --- a/src/Themes.ts +++ b/src/Themes.ts @@ -25,7 +25,7 @@ let placedColorStr: string = cssVar("--canvas-items"); * @param varName Variable from a CSS Style Sheet. * @returns Property value of varName in string form. */ -function cssVar(varName: string): string { +export function cssVar(varName: string): string { return getComputedStyle(document.body).getPropertyValue(varName); } diff --git a/src/index.html b/src/index.html index 351871c6f..c0cd91ae7 100644 --- a/src/index.html +++ b/src/index.html @@ -142,14 +142,10 @@

Theme: