appscms-tools-theme 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/_data/calculators/en/biology-calc/bulb-spacing.json +79 -1
  3. data/_data/calculators/en/biology-calc/cat-chocolate-toxicity.json +53 -1
  4. data/_data/calculators/en/chemistry-calc/activation-energy.json +45 -1
  5. data/_data/feature/en/allele-frequency.json +242 -242
  6. data/_data/feature/en/batch-conversion.json +78 -0
  7. data/_data/feature/en/compress-pdf.json +11 -5
  8. data/_data/feature/en/theframe.json +64 -64
  9. data/_data/photo-categories.json +10 -10
  10. data/_includes/batch-conversion.html +70 -0
  11. data/_includes/monumetric/ads.html +57 -57
  12. data/_includes/monumetric/profitablecpmgate.html +51 -51
  13. data/_layouts/batch.html +97 -0
  14. data/_layouts/calculator.html +69 -69
  15. data/_layouts/frame.html +128 -128
  16. data/assets/css/batch.css +423 -0
  17. data/assets/css/calculators.css +40 -40
  18. data/assets/css/frame.css +431 -431
  19. data/assets/images/add-image.png +0 -0
  20. data/assets/images/add.png +0 -0
  21. data/assets/images/cloud-computing.png +0 -0
  22. data/assets/images/convert.png +0 -0
  23. data/assets/images/download.png +0 -0
  24. data/assets/images/file.png +0 -0
  25. data/assets/images/safeimagekit. (2).png +0 -0
  26. data/assets/images/safeimagekit. (3).png +0 -0
  27. data/assets/images/safeimagekit..png +0 -0
  28. data/assets/images/safeimagekit.png +0 -0
  29. data/assets/images/spinner.gif +0 -0
  30. data/assets/images/trust.svg +1 -0
  31. data/assets/images/vectorpaint.svg +6 -0
  32. data/assets/js/ads.js +8 -8
  33. data/assets/js/append-div.js +10 -10
  34. data/assets/js/batch.js +190 -0
  35. data/assets/js/frame.js +251 -251
  36. data/assets/js/photo-effects.json +55 -55
  37. data/assets/js/testing-batch.js +36 -0
  38. data/assets/js/theme.js +11 -11
  39. metadata +26 -7
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m408.42 213.557c-.581.3-1.235.458-1.893.458s-1.313-.159-1.894-.458c-49.456-25.54-79.495-65.46-86.293-113.851-27.401-13.379-58.188-20.897-90.734-20.897-114.36 0-207.066 92.707-207.066 207.066s92.707 207.066 207.066 207.066 207.066-92.707 207.066-207.066c0-27.738-5.468-54.195-15.362-78.371-3.519 2.097-7.145 4.119-10.89 6.053z" fill="#d8ecfe"/><g><g><path d="m57.701 343.045c2.901-2.901 7.604-2.901 10.505 0l3.018 3.018c-5.778-19.048-8.898-39.252-8.898-60.188 0-107.307 81.626-195.547 186.174-206.022-6.871-.688-13.84-1.044-20.893-1.044-114.36 0-207.066 92.707-207.066 207.066 0 27.9 5.531 54.504 15.535 78.795z" fill="#c4e2ff"/></g></g><g><path d="m321.188 360.306c-11.462 11.461-26.702 17.774-42.909 17.774-.747 0-1.496-.014-2.245-.042l-14.704-.543c-.775-.028-1.547-.042-2.319-.042-11.381 0-22.296 3.02-31.84 8.669l59.088 59.088 92.922-92.922-24.987-24.987z" fill="#ffe5c2"/><path d="m275.997 379.038-14.705-.544c-11.802-.436-23.362 2.526-33.378 8.372l57.636 57.636 32.075-32.075-33.633-33.633c-2.643.247-5.311.344-7.995.244z" fill="#fed2a4"/><g><path d="m312.176 509.824-40.721-40.721c-2.901-2.901-2.901-7.604 0-10.505l115.554-115.554c2.901-2.901 7.604-2.901 10.505 0l40.721 40.721c2.901 2.901 2.901 7.604 0 10.505l-115.554 115.554c-2.901 2.901-7.604 2.901-10.505 0z" fill="#fe646f"/></g><g><path d="m314.715 469.104c-2.901-2.901-2.901-7.604 0-10.505l99.177-99.177-16.377-16.378c-2.901-2.901-7.604-2.901-10.505 0l-115.555 115.555c-2.901 2.901-2.901 7.604 0 10.505l40.721 40.721c2.901 2.901 7.604 2.901 10.505 0l16.377-16.378z" fill="#fd4755"/></g><path d="m392.295 260.223c-7.089-7.579-18.123-9.061-26.755-4.444-.864.462-1.823-.462-1.36-1.325 4.518-8.423 3.223-19.141-3.884-26.247-7.105-7.105-17.82-8.401-26.242-3.887-.852.457-1.797-.488-1.34-1.34 4.514-8.422 3.218-19.136-3.887-26.242-7.107-7.107-17.825-8.401-26.248-3.884-.863.463-1.787-.496-1.325-1.36 4.624-8.645 3.131-19.701-4.48-26.789-8.829-8.223-22.729-7.591-31.261.941l-1.951 1.951-1.679.265-27.012 27.011.184 1.23 16.349 16.349c4.247 4.247 6.784 10.011 6.622 16.015-.157 5.809-2.609 11.171-6.911 15.111-3.802 3.48-8.796 5.396-14.063 5.396-.001 0-.001 0-.002 0-5.866 0-11.62-2.39-15.786-6.555l-1.414 1.414 5.968 5.968c3.977 3.977 6.455 9.294 6.573 14.917.147 7.029-3.073 13.548-8.892 17.769-2.727 1.978-5.929 3.264-9.265 3.731-6.805.952-13.381-1.273-18.116-6.008l-10.273-10.273-1.414 1.414c5.007 5.007 7.201 12.05 5.817 19.261-.48 2.501-1.434 4.907-2.81 7.05-4.439 6.915-12.009 10.581-19.955 9.882-5.093-.448-9.819-2.85-13.434-6.466l-11.984-11.984-1.418 1.418c4.403 4.453 6.603 10.488 6.06 16.82-.338 3.941-1.783 7.746-4.179 10.893-4.13 5.425-10.347 8.474-16.99 8.474-5.635 0-10.934-2.184-14.937-6.142l-33.149 33.149 90.376 90.376 47.563-47.563c12.128-12.128 28.758-18.659 45.899-18.026l14.705.544c17.14.634 33.77-5.897 45.898-18.025l69.457-69.457c8.554-8.551 9.206-22.5.945-31.332z" fill="#d88a55"/><g fill="#c57a44"><path d="m252.52 212.151c3.786 3.786 5.904 8.597 6.391 13.539l44.954-44.954c-.067-5.605-2.228-11.19-6.505-15.467-8.69-8.69-22.779-8.69-31.468 0l-30.127 30.127z"/><path d="m147.977 336.624 29.513-29.512c-7.984 3.109-17.388 1.433-23.82-5l-12.31-12.31-.005.005c8.698 8.793 8.562 23.003-.331 31.622-8.697 8.429-22.528 8.344-31.128-.162l-31.735 31.733 90.376 90.376 28.528-28.527-49.088-49.087c-8.046-8.046-8.046-21.092 0-29.138z"/></g><path d="m252.52 212.151-51.568-51.568c-8.69-8.69-22.779-8.69-31.468 0-8.69 8.69-8.69 22.779 0 31.468-8.69-8.69-22.778-8.69-31.468 0-8.69 8.69-8.69 22.779 0 31.468-8.69-8.69-22.779-8.69-31.469 0s-8.69 22.779 0 31.468l9.631 9.631c-8.69-8.69-22.778-8.69-31.468 0s-8.69 22.779 0 31.468l25.096 25.096c8.594 8.594 22.492 8.703 31.22.245 8.923-8.647 9.035-22.927.249-31.713l12.397 12.397c8.594 8.594 22.492 8.703 31.22.245 8.923-8.647 9.035-22.927.249-31.713l10.274 10.273c8.594 8.594 22.492 8.703 31.22.245 8.923-8.647 9.035-22.927.249-31.713l-6.322-6.322c8.5 8.499 22.368 9.306 31.234 1.189 9.407-8.615 9.65-23.238.724-32.164z" fill="#ffe5c2"/><g><path d="m242.046 150.992h-39.732c-6.724 0-12.175 5.451-12.175 12.175v5.054c0 15.063 12.211 27.274 27.274 27.274l18.352-.098 27.799-27.8c-2.497-9.54-11.168-16.605-21.518-16.605z" fill="#ffbd86"/></g><g><path d="m239.808 234.058-51.075-51.075c-7.872-7.872-8.588-20.162-2.197-28.868-6.126-.362-12.373 1.787-17.053 6.468-8.69 8.69-8.69 22.778 0 31.468l51.075 51.075c8.5 8.5 22.368 9.307 31.234 1.19 1.167-1.069 2.179-2.237 3.058-3.471-5.489-.349-10.902-2.648-15.042-6.787z" fill="#fed2a4"/><g><path d="m216.984 270.086-57.397-57.397c-7.327-7.327-8.45-18.481-3.422-27.012-6.471-.703-13.19 1.414-18.15 6.374-8.69 8.69-8.69 22.779 0 31.468l57.397 57.397c8.594 8.594 22.493 8.703 31.22.245 1.471-1.425 2.678-3.014 3.669-4.695-4.867-.529-9.591-2.654-13.317-6.38z" fill="#fed2a4"/></g><g><path d="m174.746 291.72-47.124-47.124c-7.462-7.462-8.497-18.896-3.144-27.483-6.403-.632-13.028 1.501-17.933 6.406-8.69 8.69-8.69 22.779 0 31.469l47.124 47.124c8.594 8.594 22.492 8.703 31.22.245 1.335-1.293 2.447-2.724 3.388-4.232-4.942-.489-9.75-2.624-13.531-6.405z" fill="#fed2a4"/></g><g><path d="m131.026 310.84-25.096-25.096c-7.469-7.469-8.499-18.919-3.129-27.508-6.453-.684-13.147 1.437-18.093 6.383-8.69 8.69-8.69 22.779 0 31.468l25.096 25.096c8.594 8.594 22.492 8.702 31.22.245 1.325-1.284 2.432-2.703 3.368-4.2-4.884-.52-9.628-2.649-13.366-6.388z" fill="#fed2a4"/></g></g><g><path d="m183.76 469.104-40.721 40.721c-2.901 2.901-7.604 2.901-10.505 0l-115.554-115.555c-2.901-2.901-2.901-7.604 0-10.505l40.721-40.721c2.901-2.901 7.604-2.901 10.505 0l115.554 115.555c2.901 2.901 2.901 7.604 0 10.505z" fill="#97d729"/></g><g><path d="m59.351 394.27c-2.901-2.901-2.901-7.604 0-10.505l24.788-24.788-15.933-15.933c-2.901-2.901-7.604-2.901-10.505 0l-40.721 40.721c-2.901 2.901-2.901 7.604 0 10.505l115.554 115.554c2.901 2.901 7.604 2.901 10.505 0l15.933-15.933z" fill="#8bc727"/></g></g><g><g><path d="m406.527 0c-26.888 0-52.254 26.844-74.646 19.542-2.619-.854-5.45.608-6.382 3.2-6.231 17.328-9.64 36.001-9.64 55.475 0 63.284 35.836 109.127 88.317 136.229 1.471.76 3.233.76 4.704 0 52.481-27.102 88.317-72.945 88.317-136.229 0-19.474-3.41-38.147-9.64-55.475-.932-2.592-3.763-4.054-6.382-3.2-22.394 7.302-47.761-19.542-74.648-19.542z" fill="#fed402"/></g><g><path d="m393.086 156.285c-27.157-6.139-47.503-30.446-47.503-59.432 0-15.04 5.487-28.814 14.55-39.455.558-15.729 3.339-30.889 8.025-45.187-12.734 5.927-24.891 11.044-36.277 7.331-2.619-.854-5.45.608-6.382 3.2-6.231 17.328-9.64 36.001-9.64 55.475 0 63.284 35.836 109.127 88.317 136.229 1.471.76 3.233.76 4.704 0 11.08-5.722 21.407-12.289 30.823-19.67-18.108-10.455-33.935-23.309-46.617-38.491z" fill="#fac600"/></g><g><g><circle cx="406.527" cy="96.852" fill="#97d729" r="53.444"/></g><g><path d="m390.954 96.852c0-22.847 14.341-42.335 34.509-49.98-5.887-2.232-12.266-3.464-18.935-3.464-29.516 0-53.444 23.928-53.444 53.444s23.928 53.444 53.444 53.444c6.669 0 13.048-1.232 18.935-3.464-20.168-7.645-34.509-27.133-34.509-49.98z" fill="#8bc727"/></g><g><path d="m406.526 157.796c-33.604 0-60.943-27.339-60.943-60.944s27.339-60.944 60.943-60.944 60.944 27.339 60.944 60.944-27.339 60.944-60.944 60.944zm0-106.887c-25.333 0-45.943 20.61-45.943 45.944s20.61 45.944 45.943 45.944c25.334 0 45.944-20.61 45.944-45.944s-20.61-45.944-45.944-45.944z" fill="#e8b800"/></g><g><path d="m402.913 120.352c-1.989 0-3.896-.79-5.304-2.197l-22.096-22.096c-2.929-2.929-2.929-7.678 0-10.606 2.931-2.929 7.679-2.929 10.607 0l16.792 16.793 24.02-24.02c2.93-2.929 7.678-2.929 10.607 0s2.929 7.678 0 10.606l-29.323 29.323c-1.406 1.407-3.314 2.197-5.303 2.197z" fill="#fff"/></g></g></g></g></svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="512.000000" height="512.000000" preserveAspectRatio="xMidYMid meet" style=""><rect id="backgroundrect" width="100%" height="100%" x="0" y="0" fill="none" stroke="none"/>
2
+
3
+
4
+ <g class="currentLayer" style=""><title>Layer 1</title><g transform="translate(0,512) scale(0.10000000149011612,-0.10000000149011612) " fill="#ffffff" stroke="none" id="svg_1" class="selected" fill-opacity="1">
5
+ <path d="M0 2560 l0 -2560 2560 0 2560 0 0 2560 0 2560 -2560 0 -2560 0 0 -2560z m2653 1407 c69 -53 67 -31 67 -671 l0 -576 576 0 c641 0 618 2 672 -68 39 -51 39 -133 0 -184 -54 -70 -31 -68 -672 -68 l-576 0 0 -576 c0 -641 2 -618 -68 -672 -51 -39 -133 -39 -184 0 -70 54 -68 31 -68 672 l0 576 -576 0 c-641 0 -618 -2 -672 68 -39 51 -39 133 0 184 54 70 31 68 672 68 l576 0 2 588 3 589 27 35 c55 72 152 88 221 35z" id="svg_2" fill="#ffffff" fill-opacity="1"/>
6
+ </g></g></svg>
data/assets/js/ads.js CHANGED
@@ -1,8 +1,8 @@
1
- ;(function (s, u, z, p) {
2
- ;(s.src = u), s.setAttribute('data-zone', z), p.appendChild(s)
3
- })(
4
- document.createElement('script'),
5
- 'https://inklinkor.com/tag.min.js',
6
- 5225477,
7
- document.body || document.documentElement
8
- )
1
+ ;(function (s, u, z, p) {
2
+ ;(s.src = u), s.setAttribute('data-zone', z), p.appendChild(s)
3
+ })(
4
+ document.createElement('script'),
5
+ 'https://inklinkor.com/tag.min.js',
6
+ 5225477,
7
+ document.body || document.documentElement
8
+ )
@@ -1,10 +1,10 @@
1
- ---
2
- ---
3
- function insertAfter(referenceNode, newNode) {
4
- referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling)
5
- }
6
- let themeContentBox = document.getElementById('theme-content-box')
7
- const div = document.createElement('div')
8
- const profitablecpmgateId = '{{site.profitablecpmgateId}}'
9
- div.setAttribute('id', `container-${profitablecpmgateId}`)
10
- insertAfter(themeContentBox, div)
1
+ ---
2
+ ---
3
+ function insertAfter(referenceNode, newNode) {
4
+ referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling)
5
+ }
6
+ let themeContentBox = document.getElementById('theme-content-box')
7
+ const div = document.createElement('div')
8
+ const profitablecpmgateId = '{{site.profitablecpmgateId}}'
9
+ div.setAttribute('id', `container-${profitablecpmgateId}`)
10
+ insertAfter(themeContentBox, div)
@@ -0,0 +1,190 @@
1
+ const getScript = document.currentScript
2
+ const pageTool = getScript.dataset.tool
3
+ const lang = getScript.dataset.lang
4
+ const inputBox = document.querySelector('#Inputbox')
5
+ const addFiles = document.querySelector(".add-more-files")
6
+ const gdrive = document.querySelector('#filepicker')
7
+ const fileDropBox = document.querySelector('.custom-box')
8
+ const workspace = document.querySelector(".workspace")
9
+ const selectedFilesList = document.querySelector('.selectedFilesList')
10
+ const downloadButton = document.querySelector('#download-button')
11
+ const submitButton = document.querySelector("#submit-button")
12
+ const showProcessingFiles = document.querySelector(".files-processing-list")
13
+
14
+ let root = document.querySelector(':root')
15
+ root.style.setProperty('--maincolor', fileDropBox.dataset.color)
16
+
17
+ const getFile = (file) => {
18
+ handleFile(file)
19
+ }
20
+ fileDropBox.addEventListener('dragover', (e) => {
21
+ e.preventDefault()
22
+ })
23
+ fileDropBox.addEventListener('drop', (e) => {
24
+ e.preventDefault()
25
+ handleFile(e.dataTransfer.files[0])
26
+ })
27
+ const fileOnChange = () => {
28
+ handleFile(file.files)
29
+ }
30
+ inputBox.onclick = function () {
31
+ document.querySelector('#file').click()
32
+ }
33
+ const fileOnChange2 = () => {
34
+ addMoreFiles(document.querySelector('#file2').files)
35
+ }
36
+ addFiles.onclick = function () {
37
+ document.querySelector('#file2').click()
38
+ }
39
+ var files = []
40
+ let fileName = "";
41
+ let blobList = []
42
+ const addMoreFiles = (addFiles) => {
43
+ handleFile(addFiles)
44
+ }
45
+ const onSubmit = (files) => {
46
+ blobList = []
47
+ Promise.all(
48
+ files.map((item, index) => {
49
+ document.querySelector(`#loader-${index}`).innerHTML = `<span class="processing">processing</span>
50
+ <div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>`
51
+ return new Promise((resolve, reject) => {
52
+ batchConversion(item, index).then(([indexValue, blob, type]) => {
53
+ blobList.push(blob)
54
+ document.querySelector(`#loader-${indexValue}`).innerHTML = `<span class="done">finished</span>`
55
+ document.querySelector(`#download-${indexValue}`).style.display = "inline-block"
56
+ resolve()
57
+ })
58
+ }).catch((error) => {
59
+ console.log(error)
60
+ })
61
+ })).then(() => {
62
+ document.querySelector('#download-zip').style.display = "block"
63
+ let zip = new JSZip()
64
+ let zipFiles = zip.folder(`safeimagekit-batch`)
65
+ blobList.map((file, index) => {
66
+ zipFiles.file(
67
+ `safeimagekit-${index + 1}.png`,
68
+ getBase64String(file),
69
+ { base64: true }
70
+ )
71
+ })
72
+ document.querySelector('#download-zip').addEventListener('click', () => {
73
+ zip.generateAsync({ type: 'blob' }).then(function (content) {
74
+ saveAs(content, `safeimagekit-batch.zip`)
75
+ if (lang === 'en') {
76
+ window.location.href = `/download?tool=${pageTool}`
77
+ } else {
78
+ window.location.href = `/${lang}/download?tool=${pageTool}`
79
+ }
80
+ })
81
+ })
82
+ })
83
+ }
84
+ const renderFiles = (files) => {
85
+ files.map((file, index) => {
86
+ if (file) {
87
+ let loader = "Ready"
88
+ showProcessingFiles.innerHTML += `
89
+ <tr>
90
+ <th scope="row" class="file-icon-row">
91
+ <img src="/assets/images/file.png" alt="file" class="file-icon">
92
+ </th>
93
+ <td class="fileName">${file.name}</td>
94
+ <td id=loader-${index} class="file-processing"><span class="ready">${loader}</span></td>
95
+ <td class="file-download-button text-right">
96
+ <button style="display:none;" id=download-${index} data-type="image" onclick="handleDownload(this)" class="btn download-file-btn">
97
+ <svg class="download-icon" width="16px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"
98
+ fill="currentColor">
99
+ <path
100
+ d="M18 20H5V15H6V19H17V15H18V20ZM12 4V15.19L14.3 13L15 13.6667L11.5 17L8 13.6667L8.7 13L11 15.19V4H12Z">
101
+ </path>
102
+ </svg> Download
103
+ </button>
104
+ </td>
105
+ </tr>
106
+ `
107
+ }
108
+ })
109
+ }
110
+ const handleFile = (file) => {
111
+ showProcessingFiles.innerHTML = ""
112
+ if (file) {
113
+ for (let i = 0; i < file.length; i++) {
114
+ files.push(file[i])
115
+ stopLoading()
116
+ workspace.style.display = 'block'
117
+ document.querySelector('#file').style.display = "block"
118
+ let listItem = document.createElement('li')
119
+ listItem.style.listStyle = "none"
120
+ let getFileSize = formatBytes(file[i].size)
121
+ listItem.innerHTML = `${file[i].name} (${getFileSize})`
122
+ selectedFilesList.appendChild(listItem)
123
+ }
124
+ }
125
+ renderFiles(files)
126
+ submitButton.addEventListener("click", () => onSubmit(files))
127
+ }
128
+ function formatBytes(bytes, decimals = 2) {
129
+ if (bytes === 0) return '0 Bytes';
130
+
131
+ const k = 1024;
132
+ const dm = decimals < 0 ? 0 : decimals;
133
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
134
+
135
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
136
+
137
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
138
+ }
139
+ const handleDownload = (e) => {
140
+ let find = blobList[Number(e.id.replace(/^\D+/g, ''))]
141
+ switch (e.dataset.type) {
142
+ case "image":
143
+ let a = document.createElement('a')
144
+ a.href = find
145
+ a.download = `safeimagekit.png`
146
+ document.body.appendChild(a)
147
+ a.click()
148
+ break;
149
+ default:
150
+ break;
151
+ }
152
+ }
153
+ const showLoading = () => {
154
+ document.querySelector('#file-loader').style.display = 'flex'
155
+ document.querySelector('.file-input').style.display = 'none'
156
+ }
157
+ const stopLoading = () => {
158
+ fileDropBox.style.display = 'none'
159
+ }
160
+ const showDropDown = document.querySelector('.file-pick-dropdown')
161
+ const icon = document.querySelector('.arrow-sign')
162
+ const dropDown = document.querySelector('.file-picker-dropdown')
163
+ showDropDown.addEventListener('click', () => {
164
+ addScripts()
165
+ if (dropDown.style.display !== 'none') {
166
+ dropDown.style.display = 'none'
167
+ icon.classList.remove('fa-angle-up')
168
+ icon.classList.add('fa-angle-down')
169
+ } else {
170
+ dropDown.style.display = 'block'
171
+ icon.classList.remove('fa-angle-down')
172
+ icon.classList.add('fa-angle-up')
173
+ }
174
+ })
175
+
176
+ const getBase64String = (dataURL) => {
177
+ const idx = dataURL.indexOf('base64,') + 'base64,'.length
178
+ return dataURL.substring(idx)
179
+ }
180
+ const dataURLtoBlob = (dataurl) => {
181
+ let arr = dataurl.split(','),
182
+ mime = arr[0].match(/:(.*?);/)[1],
183
+ bstr = atob(arr[1]),
184
+ n = bstr.length,
185
+ u8arr = new Uint8Array(n)
186
+ while (n--) {
187
+ u8arr[n] = bstr.charCodeAt(n)
188
+ }
189
+ return new Blob([u8arr], { type: mime })
190
+ }