appscms-tools-theme 5.2.0 → 5.2.1

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/_data/.DS_Store +0 -0
  3. data/_data/aitools/en/instagram-hashtag-generator.json +2 -17
  4. data/_data/contenttool/en/features.json +18 -243
  5. data/_includes/.DS_Store +0 -0
  6. data/_includes/aitools/instagram-hashtag-generator.html +0 -0
  7. data/assets/.DS_Store +0 -0
  8. data/assets/js/TopScroll.js +8 -0
  9. data/assets/js/adBlocker.js +68 -0
  10. data/assets/js/ads.js +8 -0
  11. data/assets/js/append-div.js +10 -0
  12. data/assets/js/appscms-infographics.js +0 -0
  13. data/assets/js/appscms-login.js +447 -0
  14. data/assets/js/appscms-search-home1.js +136 -0
  15. data/assets/js/appscms-search.js +133 -0
  16. data/assets/js/appscms-theme.js +459 -0
  17. data/assets/js/batch.js +219 -0
  18. data/assets/js/calculator-tooltip.js +3 -0
  19. data/assets/js/devtools.js +82 -0
  20. data/assets/js/face-api.js +38064 -0
  21. data/assets/js/face-detection.js +303 -0
  22. data/assets/js/faceSystem.js +0 -0
  23. data/assets/js/featureResult.js +48 -0
  24. data/assets/js/frame.js +264 -0
  25. data/assets/js/googledrive.js +158 -0
  26. data/assets/js/homeResult.js +37 -0
  27. data/assets/js/manifest.json +17 -0
  28. data/assets/js/models/age_gender_model-shard1 +0 -0
  29. data/assets/js/models/age_gender_model-weights_manifest.json +1 -0
  30. data/assets/js/models/face_expression_model-shard1 +0 -0
  31. data/assets/js/models/face_expression_model-weights_manifest.json +1 -0
  32. data/assets/js/models/face_landmark_68_model-shard1 +0 -0
  33. data/assets/js/models/face_landmark_68_model-weights_manifest.json +1 -0
  34. data/assets/js/models/face_landmark_68_tiny_model-shard1 +0 -0
  35. data/assets/js/models/face_landmark_68_tiny_model-weights_manifest.json +1 -0
  36. data/assets/js/models/face_recognition_model-shard1 +0 -0
  37. data/assets/js/models/face_recognition_model-shard2 +6 -0
  38. data/assets/js/models/face_recognition_model-weights_manifest.json +1 -0
  39. data/assets/js/models/mtcnn_model-shard1 +0 -0
  40. data/assets/js/models/mtcnn_model-weights_manifest.json +1 -0
  41. data/assets/js/models/ssd_mobilenetv1_model-shard1 +0 -0
  42. data/assets/js/models/ssd_mobilenetv1_model-shard2 +145 -0
  43. data/assets/js/models/ssd_mobilenetv1_model-weights_manifest.json +1 -0
  44. data/assets/js/models/tiny_face_detector_model-shard1 +0 -0
  45. data/assets/js/models/tiny_face_detector_model-weights_manifest.json +1 -0
  46. data/assets/js/multiselect.js +185 -0
  47. data/assets/js/partytown/debug/partytown-atomics.js +929 -0
  48. data/assets/js/partytown/debug/partytown-media.js +374 -0
  49. data/assets/js/partytown/debug/partytown-sandbox-sw.js +920 -0
  50. data/assets/js/partytown/debug/partytown-sw.js +59 -0
  51. data/assets/js/partytown/debug/partytown-ww-atomics.js +2699 -0
  52. data/assets/js/partytown/debug/partytown-ww-sw.js +2691 -0
  53. data/assets/js/partytown/debug/partytown.js +114 -0
  54. data/assets/js/partytown/partytown-atomics.js +600 -0
  55. data/assets/js/partytown/partytown-media.js +2 -0
  56. data/assets/js/partytown/partytown-sw.js +50 -0
  57. data/assets/js/perspective.min.js +182 -0
  58. data/assets/js/photo-effects.json +85 -0
  59. data/assets/js/redirectResult.js +10 -0
  60. data/assets/js/sharePage.js +65 -0
  61. data/assets/js/testing-batch.js +39 -0
  62. data/assets/js/theme.js +104 -0
  63. data/assets/js/usageTracking.js +143 -0
  64. data/assets/js/usageTrackingEvents.js +6 -0
  65. data/assets/js/userUsageCount.js +0 -0
  66. data/assets/js/webvitals.js +5 -0
  67. metadata +62 -2
@@ -0,0 +1,219 @@
1
+ const getScript = document.currentScript;
2
+ const pageTool = getScript.dataset.tool;
3
+ const lang = getScript.dataset.lang;
4
+ const inputBox = document.querySelector(".upload-btn");
5
+ const addFiles = document.querySelector(".add-more-files");
6
+ const fileDropBox = document.querySelector(".box");
7
+ const workspace = document.querySelector(".workspace");
8
+ const selectedFilesList = document.querySelector(".selectedFilesList");
9
+ const downloadButton = document.querySelector("#download-button");
10
+ const submitButton = document.querySelector("#submit-button");
11
+ const showProcessingFiles = document.querySelector(".files-processing-list");
12
+ let zipFileType = null;
13
+ let renderFileTypes = null;
14
+
15
+ const showLoader = () => {
16
+ showLoading();
17
+ };
18
+ const closeLoader = () => {};
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
+ let 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(
50
+ `#loader-${index}`
51
+ ).innerHTML = `<span class="processing">processing</span>
52
+ <div class="spinner-border" role="status"><span class="sr-only">Loading...</span></div>`;
53
+ return new Promise((resolve, reject) => {
54
+ batchConversion(item, index).then(([indexValue, blob, type]) => {
55
+ blobList.push({ blob: blob, fileName: item });
56
+ document.querySelector(
57
+ `#loader-${indexValue}`
58
+ ).innerHTML = `<span class="done">finished</span>`;
59
+ document.querySelector(`#download-${indexValue}`).style.display =
60
+ "inline-block";
61
+ resolve();
62
+ });
63
+ }).catch((error) => {
64
+ console.log(error);
65
+ });
66
+ })
67
+ ).then(() => {
68
+ document.querySelector(".bottom-section-container").style.display = "flex";
69
+ document.querySelector(".bottom-section-container").style.padding =
70
+ "20px .75rem";
71
+ document.querySelector("#download-zip").style.display = "block";
72
+ let zip = new JSZip();
73
+ let zipFiles = zip.folder(`safeimagekit-batch-images`);
74
+ blobList.map((item) => {
75
+ zipFiles.file(
76
+ `safeimagekit-batch-${item.fileName.name.split(".")[0]}.${
77
+ zipFileType ? zipFileType : "png"
78
+ }`,
79
+ getBase64String(item.blob),
80
+ { base64: true }
81
+ );
82
+ });
83
+
84
+ document.querySelector("#download-zip").addEventListener("click", () => {
85
+ zip.generateAsync({ type: "blob" }).then(function (content) {
86
+ saveAs(content, `safeimagekit-batch-conversion.zip`);
87
+ if (lang === "en") {
88
+ window.location.href = `/download?tool=${pageTool}`;
89
+ } else {
90
+ window.location.href = `/${lang}/download?tool=${pageTool}`;
91
+ }
92
+ });
93
+ });
94
+ });
95
+ };
96
+ let renderFileTypesHtml = ` <option value="png">png</option>
97
+ <option value="jpg">jpg</option>
98
+ <option value="jpeg">jpeg</option>
99
+ <option value="webp">webp</option>
100
+ `;
101
+
102
+ const renderFiles = (files) => {
103
+ if (renderFileTypes !== null) {
104
+ renderFileTypesHtml = "";
105
+ renderFileTypes.map((i) => {
106
+ renderFileTypesHtml += `<option value="${i}">${i}</option>`;
107
+ });
108
+ }
109
+ files.map((file, index) => {
110
+ if (file) {
111
+ let filename = file.name;
112
+ if (file.name.split(".")[0].length > 10) {
113
+ let fName = file.name.split(".")[0];
114
+ let fExtention = file.name.split(".")[1];
115
+ filename =
116
+ fName.substr(0, 9) + "..." + fName.substr(-3) + "." + fExtention;
117
+ }
118
+ let loader = "Ready";
119
+ showProcessingFiles.innerHTML += `
120
+ <tr>
121
+ <th scope="row" class="file-icon-row">
122
+ <img src="/assets/images/file.png" alt="file" class="file-icon">
123
+ </th>
124
+ <td class="fileName">${filename}</td>
125
+ <td id=loader-${index} class="file-processing"><span class="ready">${loader}</span></td>
126
+ <td>
127
+ <div class="download-format ">
128
+ <select name="image-format" id="image-format">
129
+ ${renderFileTypesHtml}
130
+ </select>
131
+ </div>
132
+
133
+ </td>
134
+ <td class="file-download-button text-right">
135
+ <button style="display:none;" id=download-${index} data-type="image" onclick="handleDownload(this)" class="btn download-file-btn">
136
+ <svg class="download-icon" width="16px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"
137
+ fill="currentColor">
138
+ <path
139
+ d="M18 20H5V15H6V19H17V15H18V20ZM12 4V15.19L14.3 13L15 13.6667L11.5 17L8 13.6667L8.7 13L11 15.19V4H12Z">
140
+ </path>
141
+ </svg> Download
142
+ </button>
143
+ </td>
144
+ </tr>
145
+ `;
146
+ }
147
+ });
148
+ };
149
+
150
+ const handleFile = (file) => {
151
+ showProcessingFiles.innerHTML = "";
152
+ if (file) {
153
+ for (let i = 0; i < file.length; i++) {
154
+ files.push(file[i]);
155
+ stopLoading();
156
+ workspace.style.display = "block";
157
+ document.querySelector("#file").style.display = "block";
158
+ let listItem = document.createElement("li");
159
+ listItem.style.listStyle = "none";
160
+ let getFileSize = formatBytes(file[i].size);
161
+ listItem.innerHTML = `${file[i].name} (${getFileSize})`;
162
+ // selectedFilesList.appendChild(listItem)
163
+ }
164
+ }
165
+ renderFiles(files);
166
+ submitButton.addEventListener("click", () => onSubmit(files));
167
+ };
168
+ const formatBytes = (bytes, decimals = 2) => {
169
+ if (bytes === 0) return "0 Bytes";
170
+
171
+ const k = 1024;
172
+ const dm = decimals < 0 ? 0 : decimals;
173
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
174
+
175
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
176
+
177
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
178
+ };
179
+ const handleDownload = (e) => {
180
+ let find = blobList[Number(e.id.replace(/^\D+/g, ""))].blob;
181
+ let fileName = blobList[Number(e.id.replace(/^\D+/g, ""))].fileName.name;
182
+
183
+ let format = document.querySelector("#image-format").value;
184
+
185
+ switch (e.dataset.type) {
186
+ case "image":
187
+ let a = document.createElement("a");
188
+ a.href = find;
189
+ a.download = `safeimagekit-batch-${fileName.split(".")[0]}.${format}`;
190
+ document.body.appendChild(a);
191
+ a.click();
192
+ break;
193
+ default:
194
+ break;
195
+ }
196
+ };
197
+ const showLoading = () => {
198
+ document.querySelector("#file-loader").style.display = "flex";
199
+ document.querySelector(".file-input").style.display = "none";
200
+ };
201
+ const stopLoading = () => {
202
+ fileDropBox.style.display = "none";
203
+ };
204
+
205
+ const getBase64String = (dataURL) => {
206
+ const idx = dataURL.indexOf("base64,") + "base64,".length;
207
+ return dataURL.substring(idx);
208
+ };
209
+ const dataURLtoBlob = (dataurl) => {
210
+ let arr = dataurl.split(","),
211
+ mime = arr[0].match(/:(.*?);/)[1],
212
+ bstr = atob(arr[1]),
213
+ n = bstr.length,
214
+ u8arr = new Uint8Array(n);
215
+ while (n--) {
216
+ u8arr[n] = bstr.charCodeAt(n);
217
+ }
218
+ return new Blob([u8arr], { type: mime });
219
+ };
@@ -0,0 +1,3 @@
1
+ $(function () {
2
+ $('[data-toggle="tooltip"]').tooltip()
3
+ })
@@ -0,0 +1,82 @@
1
+ let input_editor, output_editor, data;
2
+ output_editor = ace.edit("output_editor");
3
+ output_editor.setReadOnly(true)
4
+ output_editor.session.setMode("ace/mode/json");
5
+ input_editor = ace.edit("input_editor");
6
+ input_editor.session.setMode("ace/mode/json");
7
+ let upload_div_inner = document.getElementById("upload_div_inner")
8
+ let file_upload = document.getElementById("file_upload")
9
+ let format_btn = document.getElementById("format_btn")
10
+ let inputcopyButton = document.querySelector("#inputcopy");
11
+ let outputcopyButton = document.querySelector("#outputcopy");
12
+ let deleteEditorInputTxt = document.querySelector(".input_editor_bar .cross_icon");
13
+ let deleteEditorOuputTxt = document.querySelector(".output_editor_bar .cross_icon");
14
+ const siteName = file_upload.dataset.sitename
15
+ let selectedFile
16
+
17
+ upload_div_inner.onclick = function () {
18
+ document.querySelector("#file_upload").click();
19
+ };
20
+ file_upload.onchange = function (e) {
21
+ var input = e.target.files[0];
22
+ selectedFile = input
23
+ input_editor = ace.edit("input_editor");
24
+ input_editor.session.setMode("ace/mode/json");
25
+ var reader = new FileReader();
26
+ reader.onload = function () {
27
+ input_editor.setValue(reader.result);
28
+ }
29
+ reader.readAsText(input);
30
+ };
31
+ document.querySelector("#input_editor_bar .save_icon").onclick = function () {
32
+ file_saving_decision(1);
33
+ };
34
+ editorActions();
35
+ function editorActions() {
36
+ deleteEditorInputTxt.onclick = function () {
37
+ input_editor.setValue("");
38
+ }
39
+ deleteEditorOuputTxt.onclick = function () {
40
+ output_editor.setValue("");
41
+ }
42
+ inputcopyButton.addEventListener("click", (e) => {
43
+ const el = document.createElement("textarea");
44
+ el.value = input_editor.getValue();
45
+ document.body.appendChild(el);
46
+ el.select();
47
+ document.execCommand("copy");
48
+ e.target.setAttribute('data-original-title', 'Copied !')
49
+ })
50
+ outputcopyButton.addEventListener("click", (e) => {
51
+ const el = document.createElement("textarea");
52
+ el.value = output_editor.getValue();
53
+ document.body.appendChild(el);
54
+ el.select();
55
+ document.execCommand("copy");
56
+ e.target.setAttribute('data-original-title', 'Copied !')
57
+ })
58
+ }
59
+ function file_saving_decision(flag) {
60
+ if (flag == 1) {
61
+ if (input_editor.getValue == "" || input_editor.getValue == undefined) {
62
+ return false;
63
+ } else {
64
+ file_download(input_editor.getValue(), "application/json", "json");
65
+ }
66
+ } else if (flag == 0) {
67
+ if (output_editor.getValue == "" || output_editor.getValue == undefined) {
68
+ return false;
69
+ } else {
70
+ file_download(output_editor.getValue(), "text/plain", "txt");
71
+ }
72
+ }
73
+ }
74
+ function file_download(code, mimetype, extension) {
75
+ var a = document.createElement("a");
76
+ var data = new Blob([code], {
77
+ type: mimetype,
78
+ });
79
+ a.href = window.URL.createObjectURL(data);
80
+ a.download = `${siteName}.` + extension;
81
+ a.click();
82
+ }