aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-04-06 08:56:56 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-04-06 08:58:32 +0530
commitd26988f5bbd147ef230676446e687eb527a7d7ad (patch)
tree99f9437c6787c48b5a539f845e1b15c50cd3b0ce
parent975891246c3ab61e48b1c74fc88e1fd8f25600f1 (diff)
downloadbanglar-bhumi-utils-d26988f5bbd147ef230676446e687eb527a7d7ad.tar.gz
banglar-bhumi-utils-d26988f5bbd147ef230676446e687eb527a7d7ad.zip
Added "Download PDF" button to khatian information.
-rw-r--r--config/tsconfig.json3
-rw-r--r--config/webpack.config.js18
-rw-r--r--config/webpack/loader/arrange-shared-module-loader.js37
-rw-r--r--config/webpack/utils/get-injection-code.js11
-rw-r--r--package.json3
-rw-r--r--scripts/install.sh75
-rw-r--r--src/scripts/functionality/view-khatian.ts31
-rw-r--r--src/shared/download-pdf.ts22
-rw-r--r--src/types/html2pdf.js.d.ts1
-rw-r--r--yarn.lock146
10 files changed, 273 insertions, 74 deletions
diff --git a/config/tsconfig.json b/config/tsconfig.json
index 120bfcb..8615fcb 100644
--- a/config/tsconfig.json
+++ b/config/tsconfig.json
@@ -1,4 +1,7 @@
{
+ "files": [
+ "../src/types/html2pdf.js.d.ts"
+ ],
"compilerOptions": {
"outDir": "dist",
"sourceMap": true,
diff --git a/config/webpack.config.js b/config/webpack.config.js
index 15cae74..629a373 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -1,5 +1,6 @@
const path = require("path");
const fs = require("fs");
+const webpack = require("webpack");
const { merge } = require("webpack-merge");
const CopyPlugin = require("copy-webpack-plugin");
@@ -75,6 +76,7 @@ for (const sharedModule of sharedModules) {
const commonOptions = {
mode: "production",
+ target: "web",
resolve: {
extensions: [".ts", ".js"],
alias: {
@@ -93,11 +95,17 @@ const commonOptions = {
]
},
optimization: {
- minimize: process.env.NODE_ENV === "production"
+ minimize: process.env.NODE_ENV === "production",
+ runtimeChunk: false
},
output: {
iife: true
- }
+ },
+ plugins: [
+ new webpack.optimize.LimitChunkCountPlugin({
+ maxChunks: 1
+ })
+ ]
};
const sharedModuleOptions = {
@@ -106,7 +114,7 @@ const sharedModuleOptions = {
module: {
rules: [
{
- test: /\.(j|t)s$/,
+ test: /banglar-bhumi-utils\/src\/.*.(^.?|\.[^d]|[^.]d|[^.][^d])\.(t|j)s$/,
loader: path.resolve(CONFIG_DIR, "webpack/loader/count-imports-loader.js"),
options: {
sharedModulesImportedCount
@@ -114,7 +122,7 @@ const sharedModuleOptions = {
enforce: "post"
}
]
- },
+ }
};
const uninjectedScriptConfiguration = merge(
@@ -170,7 +178,7 @@ const sharedModulesConfiguration = merge(
module: {
rules: [
{
- test: /\.(j|t)s$/,
+ test: /banglar-bhumi-utils\/src\/.*.(^.?|\.[^d]|[^.]d|[^.][^d])\.(t|j)s$/,
loader: path.resolve(CONFIG_DIR, "webpack/loader/arrange-shared-module-loader.js"),
options: {
sortedSharedModules
diff --git a/config/webpack/loader/arrange-shared-module-loader.js b/config/webpack/loader/arrange-shared-module-loader.js
index 9e21b23..1669a64 100644
--- a/config/webpack/loader/arrange-shared-module-loader.js
+++ b/config/webpack/loader/arrange-shared-module-loader.js
@@ -5,22 +5,39 @@ const { ImportManager } = require("import-manager");
const sharedModules = webpackRequire("utils/shared-modules.js");
module.exports = function(source) {
- const { sortedSharedModules } = this.getOptions();
- const manager = new ImportManager(source);
+ const currentSharedModuleName = path.basename(this.resourcePath.substring(0, this.resourcePath.length - 3));
- for (const unit of manager.imports.es6.units) {
- const moduleIndex = sharedModules.indexOf(unit.module.name);
+ if (sharedModules.includes(currentSharedModuleName)) {
+ const { sortedSharedModules } = this.getOptions();
+ const manager = new ImportManager(source);
+ const modulesToBeIncluded = [];
- if (moduleIndex >= 0) {
- const currentSharedModuleName = sharedModules[moduleIndex];
+ for (const unit of manager.imports.es6.units) {
+ const moduleIndex = sharedModules.indexOf(unit.module.name);
- if (!sortedSharedModules.includes(currentSharedModuleName)) {
- sortedSharedModules.push(currentSharedModuleName);
+ if (moduleIndex >= 0) {
+ const currentSharedModuleName = sharedModules[moduleIndex];
+
+ if (!(sortedSharedModules.includes(currentSharedModuleName) || modulesToBeIncluded.includes(currentSharedModuleName))) {
+ modulesToBeIncluded.push(currentSharedModuleName);
+ }
}
}
- }
- sortedSharedModules.push(path.basename(this.resourcePath.substring(0, this.resourcePath.length - 3)));
+ const currentModuleIndex = sortedSharedModules.indexOf(currentSharedModuleName);
+
+ if (currentModuleIndex >= 0) {
+ for (const sharedModule of modulesToBeIncluded) {
+ sortedSharedModules.splice(currentModuleIndex, 0, sharedModule);
+ }
+ } else {
+ for (const sharedModule of modulesToBeIncluded) {
+ sortedSharedModules.push(sharedModule);
+ }
+
+ sortedSharedModules.push(currentSharedModuleName);
+ }
+ }
return source;
};
diff --git a/config/webpack/utils/get-injection-code.js b/config/webpack/utils/get-injection-code.js
index 6333a6a..ec969c1 100644
--- a/config/webpack/utils/get-injection-code.js
+++ b/config/webpack/utils/get-injection-code.js
@@ -1,11 +1,8 @@
module.exports.getInjectionCode = (code, front) => {
- const escapeSequences = ["b", "f", "n", "r", "t", "v"];
- let finalCode = code.replaceAll("`","\\`");
-
- for (const escapeSequence of escapeSequences) {
- finalCode = finalCode
- .replaceAll("\\" + escapeSequence, "\\\\" + escapeSequence)
- }
+ let finalCode = code
+ .replaceAll("\\", "\\\\")
+ .replaceAll("`","\\`")
+ .replaceAll("${", "\\${");
const concatenationCode = front
? "t.innerHTML=i+t.innerHTML"
diff --git a/package.json b/package.json
index e49a2dd..b10cbdc 100644
--- a/package.json
+++ b/package.json
@@ -21,5 +21,8 @@
"webpack": "^5.75.0",
"webpack-cli": "^5.0.1",
"webpack-merge": "^5.8.0"
+ },
+ "dependencies": {
+ "html2pdf.js": "^0.10.1"
}
}
diff --git a/scripts/install.sh b/scripts/install.sh
index 66dde7d..dddd67e 100644
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -1,8 +1,11 @@
+$MyPath = $MyInvocation.MyCommand.Path
+$CurrentPath = Split-Path $MyPath -Parent
+
function Custom-Remove-Item
{
param
(
- [string]$FileName
+ [string] $FileName
)
if (test-path $FileName)
@@ -11,62 +14,30 @@ function Custom-Remove-Item
}
}
-echo "Downloading extension."
+echo "Updating install script."
-Custom-Remove-Item $HOME\banglar-bhumi-utils.zip
-Invoke-WebRequest -OutFile $HOME\banglar-bhumi-utils.zip "https://drive.google.com/uc?export=download&id=1OmdtVwRsEFrxAQ78gSsrh-qOi5ApUSTB"
-Custom-Remove-Item $HOME\banglar-bhumi-utils
-Expand-Archive $HOME\banglar-bhumi-utils.zip -DestinationPath $HOME\banglar-bhumi-utils
-Custom-Remove-Item $HOME\banglar-bhumi-utils.zip
+Custom-Remove-Item $CurrentPath\banglar-bhumi-install-1.ps1
+Invoke-WebRequest -OutFile $CurrentPath\banglar-bhumi-install-1.ps1 "https://drive.google.com/uc?export=download&id=1iRBnaGFt2wknC0nUcstWNByTO7E7Fa3i&confirm=t&confirm=t&at=ANzk5s5RKHyRj87kkNq0vw1tiI6V:1680658605664" -Method POST
-function Find-PSFilePathInRegistry
+if ((Get-FileHash $CurrentPath\banglar-bhumi-install-1.ps1).Hash -eq (Get-FileHash $CurrentPath\banglar-bhumi-install.ps1).Hash)
{
- param
- (
- [string]$FileName
- )
+ Custom-Remove-Item $CurrentPath\banglar-bhumi-install-1.ps1
+ echo "Downloading extension."
- $str = reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ /s /f \$FileName | findstr Default
+ Custom-Remove-Item $HOME\Documents\banglar-bhumi-utils.zip
+ Invoke-WebRequest -OutFile $HOME\Documents\banglar-bhumi-utils.zip "https://drive.google.com/uc?export=download&id=1OmdtVwRsEFrxAQ78gSsrh-qOi5ApUSTB"
+ Custom-Remove-Item $HOME\Documents\banglar-bhumi-utils
+ Expand-Archive $HOME\Documents\banglar-bhumi-utils.zip -DestinationPath $HOME\Documents\banglar-bhumi-utils
+ Custom-Remove-Item $HOME\Documents\banglar-bhumi-utils.zip
- if ($str -match "[A-Z]\:.+$FileName") {
- return @{
- success = $true
- path = $Matches[0]
- }
- }
- else {
- return @{
- success = $false
- path = ""
- }
- }
-}
+ echo "Done. Now add the extension manually."
-function HandleInstall
+ pause
+}
+else
{
- param
- (
- [string]$Browser
- )
-
- $Res = Find-PSFilePathInRegistry ($Browser + ".exe")
-
- if ($Res.success)
- {
- echo ($Browser + " browser found. Installing extension.")
- Stop-Process -ErrorAction "silentlycontinue" -Name $Browser
- &$Res.path --disable-extensions="$HOME\banglar-bhumi-utils"
- Stop-Process -ErrorAction "silentlycontinue" -Name $Browser
- &$Res.path --load-extension="$HOME\banglar-bhumi-utils"
- echo ("Installed on " + $Browser + ".")
- }
+ Custom-Remove-Item $CurrentPath\banglar-bhumi-install.ps1
+ Move-Item -Path $CurrentPath\banglar-bhumi-install-1.ps1 -Destination $CurrentPath\banglar-bhumi-install.ps1 -Force
+ Clear-Host
+ .\banglar-bhumi-install.ps1
}
-
-echo "Searching for browsers."
-
-HandleInstall brave
-HandleInstall chrome
-
-echo "Done"
-
-pause
diff --git a/src/scripts/functionality/view-khatian.ts b/src/scripts/functionality/view-khatian.ts
index e1d3831..e81613b 100644
--- a/src/scripts/functionality/view-khatian.ts
+++ b/src/scripts/functionality/view-khatian.ts
@@ -1,8 +1,26 @@
+import { downloadPDF } from "@/shared/download-pdf";
+
declare function loadKhatian(): void;
document.addEventListener("DOMContentLoaded", () => {
const proxiedPost = $.post;
+ const submitButtonElement = document.querySelector("#khbutton") as HTMLButtonElement;
+ const separatorElement = document.querySelector("#bodycover > div > form > hr:nth-child(2)") as HTMLElement;
+ const formElement = document.querySelector("#bodycover > div > form") as HTMLElement;
+ let downloadPDFButton: HTMLButtonElement | null = null;
+
+ const submitButtonElementComputedStyles = window.getComputedStyle(submitButtonElement);
+ const styles = Array.from(submitButtonElementComputedStyles)
+ .reduce(
+ (str, property) => `${str}${property}:${submitButtonElementComputedStyles.getPropertyValue(property)};`,
+ ""
+ );
+
+ const downloadKhatianInformationPDF = () => {
+ downloadPDF(document.querySelector("html") as HTMLElement, "khatian-details.pdf");
+ };
+
$.post = function() {
if (arguments[0].startsWith("khDetailsAction_LandInfo.action")) {
const callback = arguments[2];
@@ -13,6 +31,19 @@ document.addEventListener("DOMContentLoaded", () => {
if (tableElement) {
tableElement.style.height = "auto";
tableElement.style.width = "100%";
+
+ if (!downloadPDFButton) {
+ downloadPDFButton = document.createElement("button");
+ downloadPDFButton.innerHTML = "Download PDF";
+ downloadPDFButton.style.cssText = styles;
+ downloadPDFButton.style.width = "auto";
+ downloadPDFButton.addEventListener("click", downloadKhatianInformationPDF);
+ formElement.insertBefore(downloadPDFButton, separatorElement);
+ }
+ } else if (downloadPDFButton) {
+ downloadPDFButton.removeEventListener("click", downloadKhatianInformationPDF);
+ formElement.removeChild(downloadPDFButton);
+ downloadPDFButton = null;
}
}
}
diff --git a/src/shared/download-pdf.ts b/src/shared/download-pdf.ts
new file mode 100644
index 0000000..a034e44
--- /dev/null
+++ b/src/shared/download-pdf.ts
@@ -0,0 +1,22 @@
+import html2pdf from "html2pdf.js";
+
+export const downloadPDF = (element: HTMLElement, filename: string = "banglarbhumi.pdf") => {
+ html2pdf().set({
+ margin: 0,
+ filename: filename,
+ image: {
+ type: "jpeg",
+ quality: 0.98
+ },
+ html2canvas: {
+ scale: 1
+ },
+ jsPDF: {
+ unit: "in",
+ format: "letter",
+ orientation: "portrait"
+ }
+ })
+ .from(element)
+ .save();
+};
diff --git a/src/types/html2pdf.js.d.ts b/src/types/html2pdf.js.d.ts
new file mode 100644
index 0000000..c9a972e
--- /dev/null
+++ b/src/types/html2pdf.js.d.ts
@@ -0,0 +1 @@
+declare module "html2pdf.js";
diff --git a/yarn.lock b/yarn.lock
index 54c1e16..fc204d6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,13 @@
# yarn lockfile v1
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
+ integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
"@discoveryjs/json-ext@^0.5.0":
version "0.5.7"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
@@ -136,6 +143,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f"
integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==
+"@types/raf@^3.4.0":
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/@types/raf/-/raf-3.4.0.tgz#2b72cbd55405e071f1c4d29992638e022b20acc2"
+ integrity sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==
+
"@types/sizzle@*":
version "2.3.3"
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
@@ -348,6 +360,16 @@ ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+base64-arraybuffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
+ integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
+
braces@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
@@ -365,6 +387,11 @@ browserslist@^4.14.5:
node-releases "^2.0.8"
update-browserslist-db "^1.0.10"
+btoa@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73"
+ integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -375,6 +402,20 @@ caniuse-lite@^1.0.30001449:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz#a8d11f6a814c75c9ce9d851dc53eb1d1dfbcd657"
integrity sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==
+canvg@^3.0.6:
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/canvg/-/canvg-3.0.10.tgz#8e52a2d088b6ffa23ac78970b2a9eebfae0ef4b3"
+ integrity sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@types/raf" "^3.4.0"
+ core-js "^3.8.3"
+ raf "^3.4.1"
+ regenerator-runtime "^0.13.7"
+ rgbcolor "^1.0.1"
+ stackblur-canvas "^2.0.0"
+ svg-pathdata "^6.0.3"
+
chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
@@ -436,6 +477,11 @@ copy-webpack-plugin@^11.0.0:
schema-utils "^4.0.0"
serialize-javascript "^6.0.0"
+core-js@^3.6.0, core-js@^3.8.3:
+ version "3.30.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.0.tgz#64ac6f83bc7a49fd42807327051701d4b1478dea"
+ integrity sha512-hQotSSARoNh1mYPi9O2YaWeiq/cEB95kOrFb4NCrO4RIFt1qqNpKsaE+vy/L3oiqvND5cThqXzUU3r9F7Efztg==
+
cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -445,6 +491,13 @@ cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
+css-line-break@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
+ integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
+ dependencies:
+ utrie "^1.0.2"
+
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@@ -452,6 +505,11 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
+dompurify@^2.2.0:
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.5.tgz#0e89a27601f0bad978f9a924e7a05d5d2cccdd87"
+ integrity sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==
+
electron-to-chromium@^1.4.284:
version "1.4.284"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
@@ -475,6 +533,11 @@ es-module-lexer@^0.9.0:
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es6-promise@^4.2.5:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -543,6 +606,11 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+fflate@^0.4.8:
+ version "0.4.8"
+ resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae"
+ integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==
+
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -610,6 +678,23 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
+html2canvas@^1.0.0, html2canvas@^1.0.0-rc.5:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
+ integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
+ dependencies:
+ css-line-break "^2.1.0"
+ text-segmentation "^1.0.3"
+
+html2pdf.js@^0.10.1:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/html2pdf.js/-/html2pdf.js-0.10.1.tgz#9363910cca52a54113633e552a726722209a8eed"
+ integrity sha512-3onwwhOWsZfNjIZwV6YIJ6FVhXk+X9YxHSqzeS6hup+1dGi2DHI+zZYUJ+iFnvtaYcjlhyrILL1fvRCUOa8Fcg==
+ dependencies:
+ es6-promise "^4.2.5"
+ html2canvas "^1.0.0"
+ jspdf "^2.3.1"
+
ignore@^5.2.0:
version "5.2.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
@@ -703,6 +788,21 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+jspdf@^2.3.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-2.5.1.tgz#00c85250abf5447a05f3b32ab9935ab4a56592cc"
+ integrity sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==
+ dependencies:
+ "@babel/runtime" "^7.14.0"
+ atob "^2.1.2"
+ btoa "^1.2.1"
+ fflate "^0.4.8"
+ optionalDependencies:
+ canvg "^3.0.6"
+ core-js "^3.6.0"
+ dompurify "^2.2.0"
+ html2canvas "^1.0.0-rc.5"
+
kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
@@ -818,6 +918,11 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -845,6 +950,13 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+raf@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
+ integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
+ dependencies:
+ performance-now "^2.1.0"
+
randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -859,6 +971,11 @@ rechoir@^0.8.0:
dependencies:
resolve "^1.20.0"
+regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.7:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
require-from-string@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
@@ -890,6 +1007,11 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+rgbcolor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d"
+ integrity sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==
+
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -972,6 +1094,11 @@ source-map@^0.6.0:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+stackblur-canvas@^2.0.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz#aa87bbed1560fdcd3138fff344fc6a1c413ebac4"
+ integrity sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==
+
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
@@ -991,6 +1118,11 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+svg-pathdata@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz#80b0e0283b652ccbafb69ad4f8f73e8d3fbf2cac"
+ integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==
+
tapable@^2.1.1, tapable@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
@@ -1017,6 +1149,13 @@ terser@^5.14.1:
commander "^2.20.0"
source-map-support "~0.5.20"
+text-segmentation@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
+ integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
+ dependencies:
+ utrie "^1.0.2"
+
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -1054,6 +1193,13 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
+utrie@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
+ integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
+ dependencies:
+ base64-arraybuffer "^1.0.2"
+
watchpack@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"