appscms-tools-theme 5.1.9 → 5.2.0

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 (129) hide show
  1. checksums.yaml +4 -4
  2. data/_data/.DS_Store +0 -0
  3. data/_data/aitools/en/all-in-one-social-post.json +217 -0
  4. data/_data/aitools/en/amazon-product-bullet-points-generator.json +2 -0
  5. data/_data/aitools/en/amazon-product-description-generator.json +15 -0
  6. data/_data/aitools/en/blog-conclusion-generator.json +253 -0
  7. data/_data/aitools/en/blog-content-calendar.json +232 -0
  8. data/_data/aitools/en/blog-introduction-generator.json +246 -0
  9. data/_data/aitools/en/blog-outline-generator.json +232 -0
  10. data/_data/aitools/en/blog-section-generator.json +253 -0
  11. data/_data/aitools/en/blog-title-generator.json +232 -0
  12. data/_data/aitools/en/blog-topic-ideas.json +232 -0
  13. data/_data/aitools/en/caption-generator.json +271 -0
  14. data/_data/aitools/en/engagement-post-generator.json +251 -0
  15. data/_data/aitools/en/facebook-post.json +232 -0
  16. data/_data/aitools/en/hidden-fact-finder.json +232 -0
  17. data/_data/aitools/en/human-written-blog-post.json +232 -0
  18. data/_data/aitools/en/instagram-bio-generator.json +246 -0
  19. data/_data/aitools/en/instagram-caption.json +232 -0
  20. data/_data/aitools/en/instagram-carousel.json +250 -0
  21. data/_data/aitools/en/instagram-hashtag-generator.json +246 -0
  22. data/_data/aitools/en/instagram-name-generator.json +239 -0
  23. data/_data/aitools/en/instagram-threads-generator.json +239 -0
  24. data/_data/aitools/en/interactive-content-creator.json +252 -0
  25. data/_data/aitools/en/linkedin-hashtag-generator.json +239 -0
  26. data/_data/aitools/en/linkedin-post.json +232 -0
  27. data/_data/aitools/en/motivational-posts.json +239 -0
  28. data/_data/aitools/en/pinterest-pin.json +217 -0
  29. data/_data/aitools/en/platform-specific-content-generator.json +246 -0
  30. data/_data/aitools/en/quick-article-writer.json +253 -0
  31. data/_data/aitools/en/replies-for-facebook.json +239 -0
  32. data/_data/aitools/en/replies-for-instagram.json +239 -0
  33. data/_data/aitools/en/replies-for-linkedin.json +239 -0
  34. data/_data/aitools/en/replies-for-twitter.json +239 -0
  35. data/_data/aitools/en/rewrite-article-with-keywords.json +246 -0
  36. data/_data/aitools/en/script-for-instagram-reel.json +246 -0
  37. data/_data/aitools/en/script-for-tiktok-video.json +246 -0
  38. data/_data/aitools/en/seo-optimized-blog-post.json +239 -0
  39. data/_data/aitools/en/snapchat-caption-maker.json +245 -0
  40. data/_data/aitools/en/social-media-bio-creator.json +274 -0
  41. data/_data/aitools/en/social-media-bio-generator.json +246 -0
  42. data/_data/aitools/en/social-media-calendar.json +250 -0
  43. data/_data/aitools/en/tiktok-caption.json +232 -0
  44. data/_data/aitools/en/tiktok-username-generator.json +239 -0
  45. data/_data/aitools/en/twitter-poll-generator.json +250 -0
  46. data/_data/aitools/en/twitter-post.json +272 -0
  47. data/_data/contenttool/en/features.json +217 -10
  48. data/_includes/.DS_Store +0 -0
  49. data/_layouts/appscms-feature.html +1 -1
  50. data/_layouts/content-tool-ai.html +38 -156
  51. data/assets/.DS_Store +0 -0
  52. data/assets/css/content-tool-ai.css +42 -12
  53. metadata +44 -78
  54. data/_includes/aitools/ai-article-writer.html +0 -0
  55. data/_includes/aitools/amazon-product-bullet-points-generator.html +0 -0
  56. data/_includes/aitools/amazon-product-description-generator.html +0 -0
  57. data/_includes/aitools/brand-name-generator.html +0 -0
  58. data/_includes/aitools/product-description.html +0 -0
  59. data/assets/js/.DS_Store +0 -0
  60. data/assets/js/TopScroll.js +0 -8
  61. data/assets/js/adBlocker.js +0 -68
  62. data/assets/js/ads.js +0 -8
  63. data/assets/js/ai-article-writer.js +0 -0
  64. data/assets/js/amazon-product-bullet-points-generator.js +0 -464
  65. data/assets/js/amazon-product-bullet-points-generator3.js +0 -176
  66. data/assets/js/amazon-product-description-generator.js +0 -309
  67. data/assets/js/append-div.js +0 -10
  68. data/assets/js/appscms-infographics.js +0 -0
  69. data/assets/js/appscms-login.js +0 -447
  70. data/assets/js/appscms-search-home1.js +0 -136
  71. data/assets/js/appscms-search.js +0 -133
  72. data/assets/js/appscms-theme.js +0 -459
  73. data/assets/js/batch.js +0 -219
  74. data/assets/js/blog-topic-ideas.js +0 -57
  75. data/assets/js/brand-name-generator.js +0 -127
  76. data/assets/js/calculator-tooltip.js +0 -3
  77. data/assets/js/devtools.js +0 -82
  78. data/assets/js/face-api.js +0 -38064
  79. data/assets/js/face-detection.js +0 -303
  80. data/assets/js/faceSystem.js +0 -0
  81. data/assets/js/featureResult.js +0 -48
  82. data/assets/js/frame.js +0 -264
  83. data/assets/js/googledrive.js +0 -158
  84. data/assets/js/homeResult.js +0 -37
  85. data/assets/js/human-written-blog-post.js +0 -57
  86. data/assets/js/instagram-caption.js +0 -57
  87. data/assets/js/instagram-hashtag-generator.js +0 -10
  88. data/assets/js/instagram-name-generator.js +0 -61
  89. data/assets/js/manifest.json +0 -17
  90. data/assets/js/models/age_gender_model-shard1 +0 -0
  91. data/assets/js/models/age_gender_model-weights_manifest.json +0 -1
  92. data/assets/js/models/face_expression_model-shard1 +0 -0
  93. data/assets/js/models/face_expression_model-weights_manifest.json +0 -1
  94. data/assets/js/models/face_landmark_68_model-shard1 +0 -0
  95. data/assets/js/models/face_landmark_68_model-weights_manifest.json +0 -1
  96. data/assets/js/models/face_landmark_68_tiny_model-shard1 +0 -0
  97. data/assets/js/models/face_landmark_68_tiny_model-weights_manifest.json +0 -1
  98. data/assets/js/models/face_recognition_model-shard1 +0 -0
  99. data/assets/js/models/face_recognition_model-shard2 +0 -6
  100. data/assets/js/models/face_recognition_model-weights_manifest.json +0 -1
  101. data/assets/js/models/mtcnn_model-shard1 +0 -0
  102. data/assets/js/models/mtcnn_model-weights_manifest.json +0 -1
  103. data/assets/js/models/ssd_mobilenetv1_model-shard1 +0 -0
  104. data/assets/js/models/ssd_mobilenetv1_model-shard2 +8 -137
  105. data/assets/js/models/ssd_mobilenetv1_model-weights_manifest.json +0 -1
  106. data/assets/js/models/tiny_face_detector_model-shard1 +0 -0
  107. data/assets/js/models/tiny_face_detector_model-weights_manifest.json +0 -1
  108. data/assets/js/multiselect.js +0 -185
  109. data/assets/js/partytown/debug/partytown-atomics.js +0 -929
  110. data/assets/js/partytown/debug/partytown-media.js +0 -374
  111. data/assets/js/partytown/debug/partytown-sandbox-sw.js +0 -920
  112. data/assets/js/partytown/debug/partytown-sw.js +0 -59
  113. data/assets/js/partytown/debug/partytown-ww-atomics.js +0 -2699
  114. data/assets/js/partytown/debug/partytown-ww-sw.js +0 -2691
  115. data/assets/js/partytown/debug/partytown.js +0 -114
  116. data/assets/js/partytown/partytown-atomics.js +0 -600
  117. data/assets/js/partytown/partytown-media.js +0 -2
  118. data/assets/js/partytown/partytown-sw.js +0 -50
  119. data/assets/js/perspective.min.js +0 -182
  120. data/assets/js/photo-effects.json +0 -85
  121. data/assets/js/product-description.js +0 -299
  122. data/assets/js/redirectResult.js +0 -10
  123. data/assets/js/sharePage.js +0 -65
  124. data/assets/js/testing-batch.js +0 -39
  125. data/assets/js/theme.js +0 -104
  126. data/assets/js/usageTracking.js +0 -143
  127. data/assets/js/usageTrackingEvents.js +0 -6
  128. data/assets/js/userUsageCount.js +0 -0
  129. data/assets/js/webvitals.js +0 -5
@@ -1,309 +0,0 @@
1
- // Auto-generated JS for Amazon Product Description Generator
2
- document.addEventListener("DOMContentLoaded", function () {
3
- const form = document.getElementById("contentToolForm");
4
- const tool = "amazon_product_description_generator";
5
-
6
- // Wait for Quill to be initialized
7
- let quill;
8
- const checkQuill = setInterval(() => {
9
- if (window.quill) {
10
- quill = window.quill;
11
- clearInterval(checkQuill);
12
- }
13
- }, 100);
14
-
15
- let input0 = form.querySelector('[name="input0"]');
16
- let input1 = form.querySelector('[name="input1"]');
17
- let language = form.querySelector('[name="language"]');
18
- let tone = form.querySelector('[name="tone"]');
19
-
20
- form.addEventListener("submit", async function (e) {
21
- e.preventDefault();
22
-
23
- // Check if Quill is available
24
- if (!quill) {
25
- console.error("Quill editor not found");
26
- return;
27
- }
28
-
29
- // Show loading state
30
- const submitButton = form.querySelector('button[type="submit"]');
31
- const originalText = submitButton ? submitButton.textContent : "";
32
- if (submitButton) {
33
- submitButton.textContent = "Generating...";
34
- submitButton.disabled = true;
35
- }
36
-
37
- const options = {};
38
-
39
- options["product_name"] = input0.value;
40
- options["key_features"] = input1.value;
41
- options["language"] = language.value;
42
- options["tone"] = tone.value;
43
-
44
- const body = {
45
- tool: tool,
46
- llm: "gemini",
47
- model_name: "gemini-2.0-flash",
48
- options: options,
49
- };
50
-
51
- try {
52
- const response = await fetch(
53
- "http://localhost:8000/api/v1/ecommerce-tools/amazon-product-description-generator",
54
- {
55
- method: "POST",
56
- headers: {
57
- "Content-Type": "application/json",
58
- },
59
- body: JSON.stringify(body),
60
- }
61
- );
62
-
63
- const data = await response.json();
64
-
65
- if (data.result) {
66
- // Clear the editor first
67
- quill.setText("");
68
-
69
- // Parse and render markdown content
70
- renderMarkdownToQuill(data.result, quill);
71
-
72
- console.log("✅ Content generated successfully");
73
- } else {
74
- quill.setText("No output received from server.");
75
- }
76
- } catch (err) {
77
- console.error("❌ API Error:", err);
78
- quill.setText("Error: " + err.message);
79
- } finally {
80
- // Reset button state
81
- if (submitButton) {
82
- submitButton.textContent = originalText;
83
- submitButton.disabled = false;
84
- }
85
- }
86
- });
87
- });
88
-
89
- // Function to render markdown content to Quill editor
90
- function renderMarkdownToQuill(markdownText, quill) {
91
- // Clear editor
92
- quill.setText("");
93
-
94
- let index = 0;
95
- const lines = markdownText.split("\n");
96
-
97
- lines.forEach((line, lineIndex) => {
98
- if (line.trim() === "") {
99
- // Empty line - add line break
100
- if (lineIndex < lines.length - 1) {
101
- quill.insertText(index, "\n");
102
- index += 1;
103
- }
104
- return;
105
- }
106
-
107
- // Handle different markdown patterns
108
- if (line.startsWith("**") && line.endsWith("**") && line.length > 4) {
109
- // Bold text (like **Product Title:** or **Key Features:**)
110
- const text = line.replace(/^\*\*(.*?)\*\*$/, "$1");
111
- quill.insertText(index, text, { bold: true });
112
- index += text.length;
113
- } else if (line.includes("**")) {
114
- // Mixed bold and normal text (like **Product Title:** Coffee Mug)
115
- const parts = line.split("**");
116
- for (let i = 0; i < parts.length; i++) {
117
- if (parts[i]) {
118
- if (i % 2 === 1) {
119
- // Odd index = bold text
120
- quill.insertText(index, parts[i], { bold: true });
121
- index += parts[i].length;
122
- } else {
123
- // Even index = normal text
124
- quill.insertText(index, parts[i]);
125
- index += parts[i].length;
126
- }
127
- }
128
- }
129
- } else if (line.startsWith("- ")) {
130
- // Bullet points
131
- const text = line.substring(2); // Remove '- '
132
- quill.insertText(index, "• " + text);
133
- index += text.length + 2;
134
- } else if (line.match(/^\d+\.\s/)) {
135
- // Numbered lists
136
- const match = line.match(/^(\d+\.\s)(.*)$/);
137
- if (match) {
138
- const number = match[1];
139
- const content = match[2];
140
-
141
- // Insert number in bold
142
- quill.insertText(index, number, { bold: true });
143
- index += number.length;
144
-
145
- // Insert content in normal text
146
- quill.insertText(index, content);
147
- index += content.length;
148
- } else {
149
- quill.insertText(index, line);
150
- index += line.length;
151
- }
152
- } else if (line.startsWith("### ")) {
153
- // Headers (H3)
154
- const text = line.substring(4);
155
- quill.insertText(index, text, { bold: true });
156
- index += text.length;
157
- } else if (line.startsWith("## ")) {
158
- // Headers (H2)
159
- const text = line.substring(3);
160
- quill.insertText(index, text, { bold: true, size: "large" });
161
- index += text.length;
162
- } else if (line.startsWith("# ")) {
163
- // Headers (H1)
164
- const text = line.substring(2);
165
- quill.insertText(index, text, { bold: true, size: "huge" });
166
- index += text.length;
167
- } else if (line.startsWith("*") && line.endsWith("*") && line.length > 2) {
168
- // Italic text
169
- const text = line.replace(/^\*(.*?)\*$/, "$1");
170
- quill.insertText(index, text, { italic: true });
171
- index += text.length;
172
- } else {
173
- // Normal text
174
- quill.insertText(index, line);
175
- index += line.length;
176
- }
177
-
178
- // Add line break if not the last line
179
- if (lineIndex < lines.length - 1) {
180
- quill.insertText(index, "\n");
181
- index += 1;
182
- }
183
- });
184
- }
185
-
186
- // Alternative function using marked.js if available
187
- function renderMarkdownToQuillWithMarked(markdownText, quill) {
188
- if (typeof marked !== "undefined") {
189
- try {
190
- // Convert markdown to HTML
191
- const html = marked.parse(markdownText);
192
-
193
- // Create a temporary div to parse HTML
194
- const tempDiv = document.createElement("div");
195
- tempDiv.innerHTML = html;
196
-
197
- // Clear editor
198
- quill.setText("");
199
-
200
- let index = 0;
201
-
202
- // Process each child element
203
- tempDiv.childNodes.forEach((node) => {
204
- if (node.nodeType === Node.TEXT_NODE) {
205
- const text = node.textContent.trim();
206
- if (text) {
207
- quill.insertText(index, text);
208
- index += text.length;
209
- }
210
- } else if (node.nodeType === Node.ELEMENT_NODE) {
211
- switch (node.tagName.toLowerCase()) {
212
- case "h1":
213
- quill.insertText(index, node.textContent, {
214
- bold: true,
215
- size: "huge",
216
- });
217
- index += node.textContent.length;
218
- break;
219
- case "h2":
220
- quill.insertText(index, node.textContent, {
221
- bold: true,
222
- size: "large",
223
- });
224
- index += node.textContent.length;
225
- break;
226
- case "h3":
227
- case "h4":
228
- case "h5":
229
- case "h6":
230
- quill.insertText(index, node.textContent, { bold: true });
231
- index += node.textContent.length;
232
- break;
233
- case "strong":
234
- case "b":
235
- quill.insertText(index, node.textContent, { bold: true });
236
- index += node.textContent.length;
237
- break;
238
- case "em":
239
- case "i":
240
- quill.insertText(index, node.textContent, { italic: true });
241
- index += node.textContent.length;
242
- break;
243
- case "ul":
244
- node.querySelectorAll("li").forEach((li) => {
245
- quill.insertText(index, "• " + li.textContent + "\n");
246
- index += li.textContent.length + 3;
247
- });
248
- break;
249
- case "ol":
250
- node.querySelectorAll("li").forEach((li, i) => {
251
- const number = `${i + 1}. `;
252
- quill.insertText(index, number, { bold: true });
253
- index += number.length;
254
- quill.insertText(index, li.textContent + "\n");
255
- index += li.textContent.length + 1;
256
- });
257
- break;
258
- case "p":
259
- const pText = node.textContent.trim();
260
- if (pText) {
261
- quill.insertText(index, pText + "\n");
262
- index += pText.length + 1;
263
- }
264
- break;
265
- case "br":
266
- quill.insertText(index, "\n");
267
- index += 1;
268
- break;
269
- default:
270
- const defaultText = node.textContent.trim();
271
- if (defaultText) {
272
- quill.insertText(index, defaultText);
273
- index += defaultText.length;
274
- }
275
- }
276
- }
277
- });
278
-
279
- // Add final formatting cleanup
280
- if (index > 0) {
281
- quill.insertText(index, "\n");
282
- }
283
- } catch (error) {
284
- console.error("Error parsing markdown with marked.js:", error);
285
- // Fallback to basic markdown parsing
286
- renderMarkdownToQuill(markdownText, quill);
287
- }
288
- } else {
289
- // Fallback to basic markdown parsing
290
- renderMarkdownToQuill(markdownText, quill);
291
- }
292
- }
293
-
294
- // Enhanced function that tries marked.js first, then falls back to basic parsing
295
- function renderContentToQuill(content, quill) {
296
- // Try to detect if content is markdown
297
- const hasMarkdownPatterns = /\*\*|\*|#{1,6}\s|^\s*[-*+]\s|^\s*\d+\.\s/m.test(
298
- content
299
- );
300
-
301
- if (hasMarkdownPatterns && typeof marked !== "undefined") {
302
- renderMarkdownToQuillWithMarked(content, quill);
303
- } else if (hasMarkdownPatterns) {
304
- renderMarkdownToQuill(content, quill);
305
- } else {
306
- // Plain text
307
- quill.setText(content);
308
- }
309
- }
@@ -1,10 +0,0 @@
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)
File without changes