diff --git a/.gitignore b/.gitignore index 8f322f0d..2702b6eb 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# Intellij +.idea diff --git a/package-lock.json b/package-lock.json index 4cb0ec16..a2c6516d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "dependencies": { "@heroicons/react": "^2.0.18", - "@react-pdf/renderer": "^3.1.10", + "@react-pdf/renderer": "^3.1.17", "@reduxjs/toolkit": "^1.9.5", "@types/node": "20.2.5", "@types/react": "18.2.7", @@ -1470,114 +1470,116 @@ } }, "node_modules/@react-pdf/fns": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.0.1.tgz", - "integrity": "sha512-/vgecczzFYBQFkgUupH+sxXhLWQtBwdwCgweyh25XOlR4NZuaMD/UVUDl4loFHhRQqDMQq37lkTcchh7zzW6ug==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", + "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", "dependencies": { "@babel/runtime": "^7.20.13" } }, "node_modules/@react-pdf/font": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.3.5.tgz", - "integrity": "sha512-mffmm/6PYYn0qPNxIyK1u65HlwzbQgD01YvkySmTRpnNwoGz8vpy3k01roPj6UXzcxbp/RgEUyDMexjFlRNl8g==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.4.4.tgz", + "integrity": "sha512-yjK5eSY+LcbxS0m+sOYln8GdgIbUgti4xjwf14kx8OSsOMJQJyHFALHMh2cLcKJR9yZeqVDo1FwCsY6gw1yCkg==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/types": "^2.3.2", + "@react-pdf/types": "^2.4.1", "cross-fetch": "^3.1.5", "fontkit": "^2.0.2", "is-url": "^1.2.4" } }, "node_modules/@react-pdf/image": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.2.1.tgz", - "integrity": "sha512-f0+cEP6pSBmk8eS/wP2tMsJcv2c7xjzca6cr1kwcapr1nzkPrh6fMdEeFl6kR2/HlJK/JoHo+xxlzRiQ8V2lrw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.4.tgz", + "integrity": "sha512-IE34l7gfTdaxXe3XR9240xMZsFdxF1myIwmEWK28XoeTaucUPAUyOiNcFSGRT59vNuZVBuakYz3BlGGrkvAPVQ==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^2.2.0", - "cross-fetch": "^3.1.5" + "@react-pdf/png-js": "^2.3.1", + "cross-fetch": "^3.1.5", + "jay-peg": "^1.0.0" } }, "node_modules/@react-pdf/layout": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.6.1.tgz", - "integrity": "sha512-ETRlvZS41EmUOLNcpDOWNwxLyKf0nMW+TL+H0f9rOz9ryes4jNC8gPFJsU6F7pegWMbISgyiM8aFjk+yFlt+Sg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.11.2.tgz", + "integrity": "sha512-5EiHJ+Eb0odqnkWll9pWbTp+dwH1QRm7mOXDMiklqIWK98eI7e3cEae5Dgr0TtdnB7KgPW9Tvul2CwRJTwq54A==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", - "@react-pdf/image": "^2.2.1", - "@react-pdf/pdfkit": "^3.0.2", - "@react-pdf/primitives": "^3.0.0", - "@react-pdf/stylesheet": "^4.1.6", - "@react-pdf/textkit": "^4.2.0", - "@react-pdf/types": "^2.3.2", - "@react-pdf/yoga": "^4.1.2", + "@react-pdf/fns": "2.2.1", + "@react-pdf/image": "^2.3.4", + "@react-pdf/pdfkit": "^3.1.6", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/stylesheet": "^4.2.4", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", "cross-fetch": "^3.1.5", - "emoji-regex": "^10.2.1", - "queue": "^6.0.1" + "emoji-regex": "^10.3.0", + "queue": "^6.0.1", + "yoga-layout": "^2.0.1" } }, "node_modules/@react-pdf/layout/node_modules/emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" }, "node_modules/@react-pdf/pdfkit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.0.2.tgz", - "integrity": "sha512-+m5rwNCwyEH6lmnZWpsQJvdqb6YaCCR0nMWrc/KKDwznuPMrGmGWyNxqCja+bQPORcHZyl6Cd/iFL0glyB3QGw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.6.tgz", + "integrity": "sha512-U96VVhphniDBsLbmeJHgEml15nng8cr90mmEfPATh98gsqg6wev0avBr4k9XPjLdaN1f2xTXD4VdlaMYJZ+n7Q==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^2.2.0", + "@react-pdf/png-js": "^2.3.1", "browserify-zlib": "^0.2.0", - "crypto-js": "^4.0.0", + "crypto-js": "^4.2.0", "fontkit": "^2.0.2", + "jay-peg": "^1.0.0", "vite-compatible-readable-stream": "^3.6.1" } }, "node_modules/@react-pdf/png-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.2.0.tgz", - "integrity": "sha512-csZU5lfNW73tq7s7zB/1rWXGro+Z9cQhxtsXwxS418TSszHUiM6PwddouiKJxdGhbVLjRIcuuFVa0aR5cDOC6w==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", + "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", "dependencies": { "browserify-zlib": "^0.2.0" } }, "node_modules/@react-pdf/primitives": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.0.1.tgz", - "integrity": "sha512-0HGcknrLNwyhxe+SZCBL29JY4M85mXKdvTZE9uhjNbADGgTc8wVnkc5+e4S/lDvugbVISXyuIhZnYwtK9eDnyQ==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" }, "node_modules/@react-pdf/render": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.2.5.tgz", - "integrity": "sha512-qscQa7ElhdTzAJnMoERQ/6wK8BWbee6pz8OZilxU1IhjeF6IloSkW+QLocBjHs6ZDgd/Rh73FKG6P1WzklF0oA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.3.tgz", + "integrity": "sha512-9LL059vfwrK1gA0uIA4utpQ/pUH9EW/yia4bb7pCoARs8IlupY5UP265jgax15ua0p+MdUwShZzQ9rilu7kGsw==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", - "@react-pdf/primitives": "^3.0.0", - "@react-pdf/textkit": "^4.2.0", - "@react-pdf/types": "^2.3.2", + "@react-pdf/fns": "2.2.1", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", "abs-svg-path": "^0.1.1", - "color-string": "^1.5.3", + "color-string": "^1.9.1", "normalize-svg-path": "^1.1.0", "parse-svg-path": "^0.1.2", "svg-arc-to-cubic-bezier": "^3.2.0" } }, "node_modules/@react-pdf/renderer": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.1.10.tgz", - "integrity": "sha512-81mhtgHRYQzvhXUKXRBVjJrX8hGd8rrE5FSiXxgPL71OLHbjgPrpVX3fpxDQal7kE6nBU6L7jKy/IhqIxTEKPw==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.3.8.tgz", + "integrity": "sha512-wJESEZCNNbog4MxDjRgKtgdmyGm+lDce9cMX2THRs1Jltckq3M8N0yt/fkvGyB8nwiDPtEBOsz9JKlw5vLidbw==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/font": "^2.3.5", - "@react-pdf/layout": "^3.6.1", - "@react-pdf/pdfkit": "^3.0.2", - "@react-pdf/primitives": "^3.0.0", - "@react-pdf/render": "^3.2.5", - "@react-pdf/types": "^2.3.2", + "@react-pdf/font": "^2.4.4", + "@react-pdf/layout": "^3.11.2", + "@react-pdf/pdfkit": "^3.1.6", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/render": "^3.4.3", + "@react-pdf/types": "^2.4.1", "events": "^3.3.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -1585,7 +1587,7 @@ "scheduler": "^0.17.0" }, "peerDependencies": { - "react": "^16.8.6 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@react-pdf/renderer/node_modules/scheduler": { @@ -1598,42 +1600,35 @@ } }, "node_modules/@react-pdf/stylesheet": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.1.6.tgz", - "integrity": "sha512-1TWpxyTDJXiihfIsIoWta7Pp1eJmmtI+Qo9YDk5L0JS2b1amOpg4+mdq5rptiug7V2zTvSUMfK9XZ8p81CXsqA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.4.tgz", + "integrity": "sha512-CgRfDzeMtnV0GL7zSn381NubmgwqKhFKcK1YrWX3azl/KWVh52jjFd3HWi6dvcETNT862mjWz5MnExe4WOBJXA==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", - "@react-pdf/types": "^2.3.2", - "color-string": "^1.5.3", + "@react-pdf/fns": "2.2.1", + "@react-pdf/types": "^2.4.1", + "color-string": "^1.9.1", "hsl-to-hex": "^1.0.0", "media-engine": "^1.0.3", "postcss-value-parser": "^4.1.0" } }, "node_modules/@react-pdf/textkit": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.2.0.tgz", - "integrity": "sha512-R90pEOW6NdhUx4p99iROvKmwB06IRYdXMhh0QcmUeoPOLe64ZdMfs3LZliNUWgI5fCmq71J+nv868i/EakFPDg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", + "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", "dependencies": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", + "@react-pdf/fns": "2.2.1", + "bidi-js": "^1.0.2", "hyphen": "^1.6.4", "unicode-properties": "^1.4.1" } }, "node_modules/@react-pdf/types": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.3.2.tgz", - "integrity": "sha512-pFOLqSWp8esMitKKENk8Pi4pBk0NS1LLUYzbbEHeWTU2X5debuvjbcgzfgJw4lj/ZhIK9ji1WfypOjngKGKFdg==" - }, - "node_modules/@react-pdf/yoga": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@react-pdf/yoga/-/yoga-4.1.2.tgz", - "integrity": "sha512-OlMZkFrJDj4GyKZ70thiObwwPVZ52B7mlPyfzwa+sgwsioqHXg9nMWOO+7SQFNUbbOGagMUu0bCuTv+iXYZuaQ==", - "dependencies": { - "@babel/runtime": "^7.20.13" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.4.1.tgz", + "integrity": "sha512-w8pk7svhjVj5f7d7kjEGXSk26ffCqRSQcgWR4DwcFltNpSM18ZJmzmM6WrNeeP437y48LlykLnmGDA3oATakgw==" }, "node_modules/@reduxjs/toolkit": { "version": "1.9.5", @@ -2589,6 +2584,14 @@ } ] }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -3000,11 +3003,11 @@ "dev": true }, "node_modules/cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dependencies": { - "node-fetch": "^2.6.11" + "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { @@ -3021,9 +3024,9 @@ } }, "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "node_modules/css.escape": { "version": "1.5.1", @@ -4245,10 +4248,11 @@ } }, "node_modules/fontkit/node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "version": "0.4.36", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", + "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", "dependencies": { + "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", "tslib": "^2.4.0" } }, @@ -4709,9 +4713,9 @@ } }, "node_modules/hyphen": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.6.5.tgz", - "integrity": "sha512-MZbhHutRaHCUxjvJBYqL51Ntjbq16LemuJr2u+LpKd3UwyNHZsZAKh5uD+KmdAHtWpteupOqQTTezVGR/al43w==" + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.4.tgz", + "integrity": "sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==" }, "node_modules/iconv-lite": { "version": "0.6.3", @@ -5286,6 +5290,14 @@ "node": ">=8" } }, + "node_modules/jay-peg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.1.tgz", + "integrity": "sha512-zBfjkGbuuNXk8JW+rEePpPEbRRjupS8q+5yPak7kjy3e2GvvNwsLle9okEFvfGyZA6HvtSSiYrVd1/jgnYebaQ==", + "dependencies": { + "restructure": "^3.0.0" + } + }, "node_modules/jest": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", @@ -6433,6 +6445,15 @@ "language-subtag-registry": "~0.3.2" } }, + "node_modules/legacy-swc-helpers": { + "name": "@swc/helpers", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -6820,9 +6841,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -7851,6 +7872,14 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -9278,6 +9307,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoga-layout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + }, "node_modules/zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", @@ -10331,116 +10365,118 @@ } }, "@react-pdf/fns": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.0.1.tgz", - "integrity": "sha512-/vgecczzFYBQFkgUupH+sxXhLWQtBwdwCgweyh25XOlR4NZuaMD/UVUDl4loFHhRQqDMQq37lkTcchh7zzW6ug==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", + "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", "requires": { "@babel/runtime": "^7.20.13" } }, "@react-pdf/font": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.3.5.tgz", - "integrity": "sha512-mffmm/6PYYn0qPNxIyK1u65HlwzbQgD01YvkySmTRpnNwoGz8vpy3k01roPj6UXzcxbp/RgEUyDMexjFlRNl8g==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.4.4.tgz", + "integrity": "sha512-yjK5eSY+LcbxS0m+sOYln8GdgIbUgti4xjwf14kx8OSsOMJQJyHFALHMh2cLcKJR9yZeqVDo1FwCsY6gw1yCkg==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/types": "^2.3.2", + "@react-pdf/types": "^2.4.1", "cross-fetch": "^3.1.5", "fontkit": "^2.0.2", "is-url": "^1.2.4" } }, "@react-pdf/image": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.2.1.tgz", - "integrity": "sha512-f0+cEP6pSBmk8eS/wP2tMsJcv2c7xjzca6cr1kwcapr1nzkPrh6fMdEeFl6kR2/HlJK/JoHo+xxlzRiQ8V2lrw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.4.tgz", + "integrity": "sha512-IE34l7gfTdaxXe3XR9240xMZsFdxF1myIwmEWK28XoeTaucUPAUyOiNcFSGRT59vNuZVBuakYz3BlGGrkvAPVQ==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^2.2.0", - "cross-fetch": "^3.1.5" + "@react-pdf/png-js": "^2.3.1", + "cross-fetch": "^3.1.5", + "jay-peg": "^1.0.0" } }, "@react-pdf/layout": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.6.1.tgz", - "integrity": "sha512-ETRlvZS41EmUOLNcpDOWNwxLyKf0nMW+TL+H0f9rOz9ryes4jNC8gPFJsU6F7pegWMbISgyiM8aFjk+yFlt+Sg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.11.2.tgz", + "integrity": "sha512-5EiHJ+Eb0odqnkWll9pWbTp+dwH1QRm7mOXDMiklqIWK98eI7e3cEae5Dgr0TtdnB7KgPW9Tvul2CwRJTwq54A==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", - "@react-pdf/image": "^2.2.1", - "@react-pdf/pdfkit": "^3.0.2", - "@react-pdf/primitives": "^3.0.0", - "@react-pdf/stylesheet": "^4.1.6", - "@react-pdf/textkit": "^4.2.0", - "@react-pdf/types": "^2.3.2", - "@react-pdf/yoga": "^4.1.2", + "@react-pdf/fns": "2.2.1", + "@react-pdf/image": "^2.3.4", + "@react-pdf/pdfkit": "^3.1.6", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/stylesheet": "^4.2.4", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", "cross-fetch": "^3.1.5", - "emoji-regex": "^10.2.1", - "queue": "^6.0.1" + "emoji-regex": "^10.3.0", + "queue": "^6.0.1", + "yoga-layout": "^2.0.1" }, "dependencies": { "emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" } } }, "@react-pdf/pdfkit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.0.2.tgz", - "integrity": "sha512-+m5rwNCwyEH6lmnZWpsQJvdqb6YaCCR0nMWrc/KKDwznuPMrGmGWyNxqCja+bQPORcHZyl6Cd/iFL0glyB3QGw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.1.6.tgz", + "integrity": "sha512-U96VVhphniDBsLbmeJHgEml15nng8cr90mmEfPATh98gsqg6wev0avBr4k9XPjLdaN1f2xTXD4VdlaMYJZ+n7Q==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/png-js": "^2.2.0", + "@react-pdf/png-js": "^2.3.1", "browserify-zlib": "^0.2.0", - "crypto-js": "^4.0.0", + "crypto-js": "^4.2.0", "fontkit": "^2.0.2", + "jay-peg": "^1.0.0", "vite-compatible-readable-stream": "^3.6.1" } }, "@react-pdf/png-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.2.0.tgz", - "integrity": "sha512-csZU5lfNW73tq7s7zB/1rWXGro+Z9cQhxtsXwxS418TSszHUiM6PwddouiKJxdGhbVLjRIcuuFVa0aR5cDOC6w==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", + "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", "requires": { "browserify-zlib": "^0.2.0" } }, "@react-pdf/primitives": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.0.1.tgz", - "integrity": "sha512-0HGcknrLNwyhxe+SZCBL29JY4M85mXKdvTZE9uhjNbADGgTc8wVnkc5+e4S/lDvugbVISXyuIhZnYwtK9eDnyQ==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" }, "@react-pdf/render": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.2.5.tgz", - "integrity": "sha512-qscQa7ElhdTzAJnMoERQ/6wK8BWbee6pz8OZilxU1IhjeF6IloSkW+QLocBjHs6ZDgd/Rh73FKG6P1WzklF0oA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.4.3.tgz", + "integrity": "sha512-9LL059vfwrK1gA0uIA4utpQ/pUH9EW/yia4bb7pCoARs8IlupY5UP265jgax15ua0p+MdUwShZzQ9rilu7kGsw==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", - "@react-pdf/primitives": "^3.0.0", - "@react-pdf/textkit": "^4.2.0", - "@react-pdf/types": "^2.3.2", + "@react-pdf/fns": "2.2.1", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.4.1", "abs-svg-path": "^0.1.1", - "color-string": "^1.5.3", + "color-string": "^1.9.1", "normalize-svg-path": "^1.1.0", "parse-svg-path": "^0.1.2", "svg-arc-to-cubic-bezier": "^3.2.0" } }, "@react-pdf/renderer": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.1.10.tgz", - "integrity": "sha512-81mhtgHRYQzvhXUKXRBVjJrX8hGd8rrE5FSiXxgPL71OLHbjgPrpVX3fpxDQal7kE6nBU6L7jKy/IhqIxTEKPw==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-3.3.8.tgz", + "integrity": "sha512-wJESEZCNNbog4MxDjRgKtgdmyGm+lDce9cMX2THRs1Jltckq3M8N0yt/fkvGyB8nwiDPtEBOsz9JKlw5vLidbw==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/font": "^2.3.5", - "@react-pdf/layout": "^3.6.1", - "@react-pdf/pdfkit": "^3.0.2", - "@react-pdf/primitives": "^3.0.0", - "@react-pdf/render": "^3.2.5", - "@react-pdf/types": "^2.3.2", + "@react-pdf/font": "^2.4.4", + "@react-pdf/layout": "^3.11.2", + "@react-pdf/pdfkit": "^3.1.6", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/render": "^3.4.3", + "@react-pdf/types": "^2.4.1", "events": "^3.3.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -10460,42 +10496,35 @@ } }, "@react-pdf/stylesheet": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.1.6.tgz", - "integrity": "sha512-1TWpxyTDJXiihfIsIoWta7Pp1eJmmtI+Qo9YDk5L0JS2b1amOpg4+mdq5rptiug7V2zTvSUMfK9XZ8p81CXsqA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.2.4.tgz", + "integrity": "sha512-CgRfDzeMtnV0GL7zSn381NubmgwqKhFKcK1YrWX3azl/KWVh52jjFd3HWi6dvcETNT862mjWz5MnExe4WOBJXA==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", - "@react-pdf/types": "^2.3.2", - "color-string": "^1.5.3", + "@react-pdf/fns": "2.2.1", + "@react-pdf/types": "^2.4.1", + "color-string": "^1.9.1", "hsl-to-hex": "^1.0.0", "media-engine": "^1.0.3", "postcss-value-parser": "^4.1.0" } }, "@react-pdf/textkit": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.2.0.tgz", - "integrity": "sha512-R90pEOW6NdhUx4p99iROvKmwB06IRYdXMhh0QcmUeoPOLe64ZdMfs3LZliNUWgI5fCmq71J+nv868i/EakFPDg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", + "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", "requires": { "@babel/runtime": "^7.20.13", - "@react-pdf/fns": "2.0.1", + "@react-pdf/fns": "2.2.1", + "bidi-js": "^1.0.2", "hyphen": "^1.6.4", "unicode-properties": "^1.4.1" } }, "@react-pdf/types": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.3.2.tgz", - "integrity": "sha512-pFOLqSWp8esMitKKENk8Pi4pBk0NS1LLUYzbbEHeWTU2X5debuvjbcgzfgJw4lj/ZhIK9ji1WfypOjngKGKFdg==" - }, - "@react-pdf/yoga": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@react-pdf/yoga/-/yoga-4.1.2.tgz", - "integrity": "sha512-OlMZkFrJDj4GyKZ70thiObwwPVZ52B7mlPyfzwa+sgwsioqHXg9nMWOO+7SQFNUbbOGagMUu0bCuTv+iXYZuaQ==", - "requires": { - "@babel/runtime": "^7.20.13" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.4.1.tgz", + "integrity": "sha512-w8pk7svhjVj5f7d7kjEGXSk26ffCqRSQcgWR4DwcFltNpSM18ZJmzmM6WrNeeP437y48LlykLnmGDA3oATakgw==" }, "@reduxjs/toolkit": { "version": "1.9.5", @@ -11235,6 +11264,14 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "requires": { + "require-from-string": "^2.0.2" + } + }, "big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -11520,11 +11557,11 @@ "dev": true }, "cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "requires": { - "node-fetch": "^2.6.11" + "node-fetch": "^2.6.12" } }, "cross-spawn": { @@ -11538,9 +11575,9 @@ } }, "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "css.escape": { "version": "1.5.1", @@ -12472,10 +12509,11 @@ }, "dependencies": { "@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "version": "0.4.36", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", + "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", "requires": { + "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", "tslib": "^2.4.0" } } @@ -12806,9 +12844,9 @@ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==" }, "hyphen": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.6.5.tgz", - "integrity": "sha512-MZbhHutRaHCUxjvJBYqL51Ntjbq16LemuJr2u+LpKd3UwyNHZsZAKh5uD+KmdAHtWpteupOqQTTezVGR/al43w==" + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.4.tgz", + "integrity": "sha512-SejXzIpv9gOVdDWXd4suM1fdF1k2dxZGvuTdkOVLoazYfK7O4DykIQbdrvuyG+EaTNlXAGhMndtKrhykgbt0gg==" }, "iconv-lite": { "version": "0.6.3", @@ -13191,6 +13229,14 @@ "istanbul-lib-report": "^3.0.0" } }, + "jay-peg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.0.1.tgz", + "integrity": "sha512-zBfjkGbuuNXk8JW+rEePpPEbRRjupS8q+5yPak7kjy3e2GvvNwsLle9okEFvfGyZA6HvtSSiYrVd1/jgnYebaQ==", + "requires": { + "restructure": "^3.0.0" + } + }, "jest": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", @@ -14065,6 +14111,14 @@ "language-subtag-registry": "~0.3.2" } }, + "legacy-swc-helpers": { + "version": "npm:@swc/helpers@0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", + "requires": { + "tslib": "^2.4.0" + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14326,9 +14380,9 @@ } }, "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "requires": { "whatwg-url": "^5.0.0" } @@ -15008,6 +15062,11 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -16032,6 +16091,11 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, + "yoga-layout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + }, "zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", diff --git a/package.json b/package.json index 49258b93..3d55398f 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@heroicons/react": "^2.0.18", - "@react-pdf/renderer": "^3.1.10", + "@react-pdf/renderer": "^3.1.17", "@reduxjs/toolkit": "^1.9.5", "@types/node": "20.2.5", "@types/react": "18.2.7", diff --git a/src/app/components/fonts/hooks.tsx b/src/app/components/fonts/hooks.tsx index 9ae86b12..73fcac55 100644 --- a/src/app/components/fonts/hooks.tsx +++ b/src/app/components/fonts/hooks.tsx @@ -34,13 +34,29 @@ export const useRegisterReactPDFHyphenationCallback = (fontFamily: string) => { Font.registerHyphenationCallback((word) => [word]); } else { // React PDF doesn't understand how to wrap non-english word on line break - // A workaround is to add an empty character after each word + // A workaround is to add an empty character after each non-english word // Reference https://github.com/diegomura/react-pdf/issues/1568 - Font.registerHyphenationCallback((word) => - word - .split("") - .map((char) => [char, ""]) - .flat() + Font.registerHyphenationCallback((word) => { + const ans: string[] = [] + let s = "" + for (let c of word.split("")) { + const code = c.charCodeAt(0); + if (code < 128) { + s += c + } else { + ans.push(s) + ans.push("") + s = "" + ans.push(c) + ans.push("") + } + } + if (s != "") { + ans.push(s) + ans.push("") + } + return ans + } ); } }, [fontFamily]);