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,143 @@
1
+ // Generate a unique ID for the user (if not already generated)
2
+ const generateUserID = () => {
3
+ // Check if the user ID is already stored in cookies or local storage
4
+ const storedUserID = getStoredUserID();
5
+
6
+ if (storedUserID) {
7
+ return storedUserID;
8
+ }
9
+
10
+ // Example: Generating a random string
11
+ const characters =
12
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
13
+ let id = "";
14
+ for (let i = 0; i < 10; i++) {
15
+ id += characters.charAt(Math.floor(Math.random() * characters.length));
16
+ }
17
+
18
+ // Store the generated user ID in cookies or local storage
19
+ storeUserID(id);
20
+
21
+ return id;
22
+ };
23
+
24
+ // Get the stored user ID from cookies or local storage
25
+ const getStoredUserID = () => {
26
+ return localStorage.getItem("userID");
27
+ };
28
+
29
+ // Store the user ID in cookies or local storage
30
+ const storeUserID = (userID) => {
31
+ localStorage.setItem("userID", userID);
32
+ };
33
+
34
+ // Get the current date in YYYY-MM-DD format
35
+ const getCurrentDate = () => {
36
+ const today = new Date();
37
+ const year = today.getFullYear();
38
+ const month = String(today.getMonth() + 1).padStart(2, "0");
39
+ const day = String(today.getDate()).padStart(2, "0");
40
+ return `${year}-${month}-${day}`;
41
+ };
42
+
43
+ let userTrackingCountLimit = "20";
44
+ const checkUsage = () => {
45
+ const today = new Date().toDateString();
46
+ const usageCount = getCookie("featureUsageCount");
47
+
48
+ if (usageCount) {
49
+ // User has already used the feature today
50
+ if (usageCount >= Number(userTrackingCountLimit)) {
51
+ showShareModal();
52
+ } else {
53
+ incrementUsageCount(usageCount);
54
+ }
55
+ } else {
56
+ // First usage of the day
57
+ setCookie("featureUsageCount", 1, getExpirationDate());
58
+ }
59
+ const userID = generateUserID();
60
+ try {
61
+ if ((usageCount + 1) % 5 === 0) {
62
+ gtag("event", `feature_used_${usageCount + 1}_times`, {
63
+ user_id: userID,
64
+ userID: userID,
65
+ feature: window.location.pathname + location.search,
66
+ });
67
+ }
68
+ } catch (error) {
69
+ console.log(error);
70
+ }
71
+
72
+ try {
73
+ gtag("event", "feature_used", {
74
+ user_id: userID,
75
+ userID: userID,
76
+ feature: window.location.pathname + location.search,
77
+ });
78
+ } catch (error) {
79
+ console.log(error);
80
+ }
81
+ };
82
+ const incrementUsageCount = (count) => {
83
+ const today = new Date().toDateString();
84
+
85
+ if (count >= Number(userTrackingCountLimit)) {
86
+ showShareModal();
87
+ } else {
88
+ count++;
89
+ setCookie("featureUsageCount", count, getExpirationDate());
90
+ }
91
+ };
92
+
93
+ const showShareModal = () => {
94
+ document.getElementById("shareModal").style.display = "block";
95
+ };
96
+
97
+ const handleShare = () => {
98
+ const usageCount = getCookie("featureUsageCount");
99
+ if (usageCount) {
100
+ setCookie("featureUsageCount", 0, getExpirationDate());
101
+ }
102
+ document.getElementById("shareModal").style.display = "none";
103
+ try {
104
+ const userID = generateUserID();
105
+ gtag("event", "feature_shared", {
106
+ user_id: userID,
107
+ userID: userID,
108
+ feature: window.location.pathname + location.search,
109
+ });
110
+ } catch (error) {
111
+ console.log(error);
112
+ }
113
+ };
114
+
115
+ const getCookie = (name) => {
116
+ const cookies = document.cookie.split(";");
117
+ for (let i = 0; i < cookies.length; i++) {
118
+ const cookie = cookies[i].trim();
119
+ if (cookie.indexOf(name + "=") === 0) {
120
+ return parseInt(cookie.substring((name + "=").length, cookie.length));
121
+ }
122
+ }
123
+ return null;
124
+ };
125
+
126
+ const setCookie = (name, value, expires) => {
127
+ document.cookie = `${name}=${value};expires=${expires};path=/`;
128
+ };
129
+
130
+ const getExpirationDate = () => {
131
+ const date = new Date();
132
+ date.setTime(date.getTime() + 24 * 60 * 60 * 1000); // 24 hours in milliseconds
133
+ return date.toUTCString();
134
+ };
135
+ const socialShare = document.querySelectorAll(".social-share");
136
+
137
+ if (socialShare) {
138
+ Array.from(socialShare).map((item) => {
139
+ item.addEventListener("click", () => {
140
+ handleShare();
141
+ });
142
+ });
143
+ }
@@ -0,0 +1,6 @@
1
+ const inputBoxOfFeatureFile = document.querySelector("#inputbox");
2
+ if (inputBoxOfFeatureFile) {
3
+ inputBoxOfFeatureFile.addEventListener("click", () => {
4
+ checkUsage();
5
+ });
6
+ }
File without changes
@@ -0,0 +1,5 @@
1
+
2
+ webVitals.onCLS(console.log);
3
+ webVitals.onFID(console.log);
4
+ webVitals.onLCP(console.log);
5
+ webVitals.onINP(console.log);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appscms-tools-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - vivek-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-30 00:00:00.000000000 Z
11
+ date: 2025-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -168,6 +168,7 @@ files:
168
168
  - _includes/Usp/usp.html
169
169
  - _includes/adblocker.html
170
170
  - _includes/adsense/adsense.html
171
+ - _includes/aitools/instagram-hashtag-generator.html
171
172
  - _includes/alternates/alternates.html
172
173
  - _includes/appscms/.DS_Store
173
174
  - _includes/appscms/category-tabs/category-tabs.html
@@ -595,6 +596,65 @@ files:
595
596
  - assets/images/vectorpaint.svg
596
597
  - assets/images/video.png
597
598
  - assets/instagram.svg
599
+ - assets/js/TopScroll.js
600
+ - assets/js/adBlocker.js
601
+ - assets/js/ads.js
602
+ - assets/js/append-div.js
603
+ - assets/js/appscms-infographics.js
604
+ - assets/js/appscms-login.js
605
+ - assets/js/appscms-search-home1.js
606
+ - assets/js/appscms-search.js
607
+ - assets/js/appscms-theme.js
608
+ - assets/js/batch.js
609
+ - assets/js/calculator-tooltip.js
610
+ - assets/js/devtools.js
611
+ - assets/js/face-api.js
612
+ - assets/js/face-detection.js
613
+ - assets/js/faceSystem.js
614
+ - assets/js/featureResult.js
615
+ - assets/js/frame.js
616
+ - assets/js/googledrive.js
617
+ - assets/js/homeResult.js
618
+ - assets/js/manifest.json
619
+ - assets/js/models/age_gender_model-shard1
620
+ - assets/js/models/age_gender_model-weights_manifest.json
621
+ - assets/js/models/face_expression_model-shard1
622
+ - assets/js/models/face_expression_model-weights_manifest.json
623
+ - assets/js/models/face_landmark_68_model-shard1
624
+ - assets/js/models/face_landmark_68_model-weights_manifest.json
625
+ - assets/js/models/face_landmark_68_tiny_model-shard1
626
+ - assets/js/models/face_landmark_68_tiny_model-weights_manifest.json
627
+ - assets/js/models/face_recognition_model-shard1
628
+ - assets/js/models/face_recognition_model-shard2
629
+ - assets/js/models/face_recognition_model-weights_manifest.json
630
+ - assets/js/models/mtcnn_model-shard1
631
+ - assets/js/models/mtcnn_model-weights_manifest.json
632
+ - assets/js/models/ssd_mobilenetv1_model-shard1
633
+ - assets/js/models/ssd_mobilenetv1_model-shard2
634
+ - assets/js/models/ssd_mobilenetv1_model-weights_manifest.json
635
+ - assets/js/models/tiny_face_detector_model-shard1
636
+ - assets/js/models/tiny_face_detector_model-weights_manifest.json
637
+ - assets/js/multiselect.js
638
+ - assets/js/partytown/debug/partytown-atomics.js
639
+ - assets/js/partytown/debug/partytown-media.js
640
+ - assets/js/partytown/debug/partytown-sandbox-sw.js
641
+ - assets/js/partytown/debug/partytown-sw.js
642
+ - assets/js/partytown/debug/partytown-ww-atomics.js
643
+ - assets/js/partytown/debug/partytown-ww-sw.js
644
+ - assets/js/partytown/debug/partytown.js
645
+ - assets/js/partytown/partytown-atomics.js
646
+ - assets/js/partytown/partytown-media.js
647
+ - assets/js/partytown/partytown-sw.js
648
+ - assets/js/perspective.min.js
649
+ - assets/js/photo-effects.json
650
+ - assets/js/redirectResult.js
651
+ - assets/js/sharePage.js
652
+ - assets/js/testing-batch.js
653
+ - assets/js/theme.js
654
+ - assets/js/usageTracking.js
655
+ - assets/js/usageTrackingEvents.js
656
+ - assets/js/userUsageCount.js
657
+ - assets/js/webvitals.js
598
658
  - assets/like.svg
599
659
  - assets/linkdin.svg
600
660
  - assets/noserverupload.svg