appscms-tools-theme 5.2.5 → 5.2.7

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 (631) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -0
  3. data/README.md +50 -0
  4. data/_data/.DS_Store +0 -0
  5. data/_data/about/en/about.json +17 -0
  6. data/_data/aitools/en/ai-article-writer.json +184 -0
  7. data/_data/aitools/en/all-in-one-social-post.json +217 -0
  8. data/_data/aitools/en/amazon-product-bullet-points-generator.json +224 -0
  9. data/_data/aitools/en/amazon-product-description-generator.json +237 -0
  10. data/_data/aitools/en/blog-conclusion-generator.json +253 -0
  11. data/_data/aitools/en/blog-content-calendar.json +232 -0
  12. data/_data/aitools/en/blog-introduction-generator.json +246 -0
  13. data/_data/aitools/en/blog-outline-generator.json +232 -0
  14. data/_data/aitools/en/blog-section-generator.json +253 -0
  15. data/_data/aitools/en/blog-title-generator.json +232 -0
  16. data/_data/aitools/en/blog-topic-ideas.json +232 -0
  17. data/_data/aitools/en/brand-name-generator.json +215 -0
  18. data/_data/aitools/en/caption-generator.json +271 -0
  19. data/_data/aitools/en/engagement-post-generator.json +251 -0
  20. data/_data/aitools/en/facebook-post.json +232 -0
  21. data/_data/aitools/en/hidden-fact-finder.json +232 -0
  22. data/_data/aitools/en/human-written-blog-post.json +232 -0
  23. data/_data/aitools/en/instagram-bio-generator.json +246 -0
  24. data/_data/aitools/en/instagram-caption.json +232 -0
  25. data/_data/aitools/en/instagram-carousel.json +250 -0
  26. data/_data/aitools/en/instagram-hashtag-generator.json +231 -0
  27. data/_data/aitools/en/instagram-name-generator.json +239 -0
  28. data/_data/aitools/en/instagram-threads-generator.json +239 -0
  29. data/_data/aitools/en/interactive-content-creator.json +252 -0
  30. data/_data/aitools/en/linkedin-hashtag-generator.json +239 -0
  31. data/_data/aitools/en/linkedin-post.json +232 -0
  32. data/_data/aitools/en/motivational-posts.json +239 -0
  33. data/_data/aitools/en/pinterest-pin.json +217 -0
  34. data/_data/aitools/en/platform-specific-content-generator.json +246 -0
  35. data/_data/aitools/en/product-description.json +222 -0
  36. data/_data/aitools/en/quick-article-writer.json +253 -0
  37. data/_data/aitools/en/replies-for-facebook.json +239 -0
  38. data/_data/aitools/en/replies-for-instagram.json +239 -0
  39. data/_data/aitools/en/replies-for-linkedin.json +239 -0
  40. data/_data/aitools/en/replies-for-twitter.json +239 -0
  41. data/_data/aitools/en/rewrite-article-with-keywords.json +246 -0
  42. data/_data/aitools/en/script-for-instagram-reel.json +246 -0
  43. data/_data/aitools/en/script-for-tiktok-video.json +246 -0
  44. data/_data/aitools/en/seo-optimized-blog-post.json +239 -0
  45. data/_data/aitools/en/snapchat-caption-maker.json +245 -0
  46. data/_data/aitools/en/social-media-bio-creator.json +274 -0
  47. data/_data/aitools/en/social-media-bio-generator.json +246 -0
  48. data/_data/aitools/en/social-media-calendar.json +250 -0
  49. data/_data/aitools/en/tiktok-caption.json +232 -0
  50. data/_data/aitools/en/tiktok-username-generator.json +239 -0
  51. data/_data/aitools/en/twitter-poll-generator.json +250 -0
  52. data/_data/aitools/en/twitter-post.json +272 -0
  53. data/_data/blog/alertbar.yml +3 -0
  54. data/_data/blog/authors.yml +11 -0
  55. data/_data/blog/blog.yml +4 -0
  56. data/_data/blog/nav.json +14 -0
  57. data/_data/blog/relatedblogs.json +2816 -0
  58. data/_data/blog/share.yml +28 -0
  59. data/_data/contact/en/contact.json +39 -0
  60. data/_data/contenttool/en/features.json +18 -0
  61. data/_data/contenttool/en/mainfeatures.json +12 -0
  62. data/_data/customcdns/customcdns.yml +0 -0
  63. data/_data/disclaimer/en/disclaimer.json +38 -0
  64. data/_data/download/en/download.json +1 -0
  65. data/_data/feature/.DS_Store +0 -0
  66. data/_data/feature/en/3_shop_posters.json +456 -0
  67. data/_data/feature/en/allele-frequency.json +349 -0
  68. data/_data/feature/en/batch-conversion.json +193 -0
  69. data/_data/feature/en/compress-pdf.json +231 -0
  70. data/_data/feature/en/devtools.json +322 -0
  71. data/_data/feature/en/face-detection.json +157 -0
  72. data/_data/feature/en/split-pdf.json +222 -0
  73. data/_data/feature/en/theframe.json +161 -0
  74. data/_data/feature/hi/compress-pdf.json +1 -0
  75. data/_data/feature/tr/compress-pdf.json +1 -0
  76. data/_data/filecomparison/en/filecomparison.json +39 -0
  77. data/_data/fileinfo/en/fileinfo.json +16 -0
  78. data/_data/footer/.DS_Store +0 -0
  79. data/_data/footer/en/data.json +265 -0
  80. data/_data/footer/hi/data.json +69 -0
  81. data/_data/footer/networksites.json +16 -0
  82. data/_data/header/.DS_Store +0 -0
  83. data/_data/header/en/data.json +1396 -0
  84. data/_data/header/hi/data.json +145 -0
  85. data/_data/help/en/help.json +0 -0
  86. data/_data/home/.DS_Store +0 -0
  87. data/_data/home/de/da.json +0 -0
  88. data/_data/home/de/de.json +0 -0
  89. data/_data/home/en/en.json +249 -0
  90. data/_data/home/en/ens.json +143 -0
  91. data/_data/home/en/photoeffects.json +1 -0
  92. data/_data/home/en/posters.json +322 -0
  93. data/_data/home/hi/hi.json +87 -0
  94. data/_data/home-1/en/en.json +237 -0
  95. data/_data/languagesupport/compress-pdf-langs.json +12 -0
  96. data/_data/languagesupport/index-langs.json +14 -0
  97. data/_data/noindexURLs.json +23 -0
  98. data/_data/photo-categories.json +105 -0
  99. data/_data/photoeffects.json +32 -0
  100. data/_data/privacy/en/privacyPolicy.json +266 -0
  101. data/_data/rating/rating.json +1 -0
  102. data/_data/review/trustpilot.json +29 -0
  103. data/_data/templates.json +17459 -0
  104. data/_data/termAndCondition/en/termAndCondition.json +1 -0
  105. data/_data/vintage/en/test.json +142 -0
  106. data/_includes/.DS_Store +0 -0
  107. data/_includes/Atest.html +248 -0
  108. data/_includes/Rating/rating.html +93 -0
  109. data/_includes/Rating/structureddata.html +53 -0
  110. data/_includes/Usp/usp.html +96 -0
  111. data/_includes/adblocker.html +240 -0
  112. data/_includes/adsense/adsense.html +7 -0
  113. data/_includes/aitools/instagram-hashtag-generator.html +0 -0
  114. data/_includes/alternates/alternates.html +64 -0
  115. data/_includes/appscms/.DS_Store +0 -0
  116. data/_includes/appscms/category-tabs/category-tabs.html +145 -0
  117. data/_includes/appscms/customblog/contenttool-recent-posts.html +94 -0
  118. data/_includes/appscms/customblog/pageRelatedPosts.html +79 -0
  119. data/_includes/appscms/customblog/recentposts.html +68 -0
  120. data/_includes/appscms/customblog/relatedBlogs.html +83 -0
  121. data/_includes/appscms/customblog/relatedposts.html +194 -0
  122. data/_includes/appscms/extras/appscms-postbox.html +57 -0
  123. data/_includes/appscms/extras/ratings.html +349 -0
  124. data/_includes/appscms/extras/recent-posts.html +1 -0
  125. data/_includes/appscms/extras/traffic-count.html +21 -0
  126. data/_includes/appscms/faq/faq.html +40 -0
  127. data/_includes/appscms/featurePageAuthors/featurePageAuthors.html +86 -0
  128. data/_includes/appscms/featurehighlight/featurehighlight.html +48 -0
  129. data/_includes/appscms/footer/ai-image-tools-footer.html +14 -0
  130. data/_includes/appscms/footer/footer.html +438 -0
  131. data/_includes/appscms/footer/products.html +24 -0
  132. data/_includes/appscms/footer/static-footer.html +81 -0
  133. data/_includes/appscms/head/bloghead.html +129 -0
  134. data/_includes/appscms/head/head.html +516 -0
  135. data/_includes/appscms/headings/ai-image-tools-headings.html +24 -0
  136. data/_includes/appscms/headings/contenttool-headings.html +33 -0
  137. data/_includes/appscms/headings/devtool-headings.html +38 -0
  138. data/_includes/appscms/headings/headings.html +24 -0
  139. data/_includes/appscms/home/contenttool-feature-boxes.html +20 -0
  140. data/_includes/appscms/home/devtool-feature-boxes.html +71 -0
  141. data/_includes/appscms/home/feature-boxes.html +58 -0
  142. data/_includes/appscms/howto/howto.html +89 -0
  143. data/_includes/appscms/infographics/infographics.html +217 -0
  144. data/_includes/appscms/loaders/loader.html +4 -0
  145. data/_includes/appscms/navbars/ai-image-tools-navbar.html +454 -0
  146. data/_includes/appscms/navbars/devtool-navbar.html +50 -0
  147. data/_includes/appscms/navbars/devtool-toolbar.html +100 -0
  148. data/_includes/appscms/navbars/navbar.html +334 -0
  149. data/_includes/appscms/navbars/toolbar.html +303 -0
  150. data/_includes/appscms/recent-posts/recent_posts.html +90 -0
  151. data/_includes/appscms/recent-posts/related_categories_post.html +195 -0
  152. data/_includes/appscms/reviews/trustpilot.html +377 -0
  153. data/_includes/appscms/scripts/script.html +168 -0
  154. data/_includes/appscms/searchbar/devtool-searchbar.html +63 -0
  155. data/_includes/appscms/searchbar/searchbar.html +17 -0
  156. data/_includes/appscms/uploadbutton/uploadbutton.html +68 -0
  157. data/_includes/appscms/usp/usp.html +91 -0
  158. data/_includes/author_bio.html +41 -0
  159. data/_includes/authorpagehead/index.html +47 -0
  160. data/_includes/authors/authors.html +40 -0
  161. data/_includes/batch-conversion.html +141 -0
  162. data/_includes/bookmark.html +7 -0
  163. data/_includes/contenttool_banner.html +266 -0
  164. data/_includes/contenttool_result_banner.html +135 -0
  165. data/_includes/cssfile/links.html +54 -0
  166. data/_includes/custom-head.html +139 -0
  167. data/_includes/customCode.html +1 -0
  168. data/_includes/customScripts.html +1 -0
  169. data/_includes/customblog/pageRelatedPosts.html +88 -0
  170. data/_includes/customblog/recentposts.html +68 -0
  171. data/_includes/customblog/relatedBlogs.html +87 -0
  172. data/_includes/customblog/relatedposts.html +202 -0
  173. data/_includes/disqus_comments.html +11 -0
  174. data/_includes/dropdown/langdropdown.html +32 -0
  175. data/_includes/feature.html +40 -0
  176. data/_includes/featurePageAuthors/featurePageAuthors.html +101 -0
  177. data/_includes/fileformat/Tabularcompariosn.html +159 -0
  178. data/_includes/fileformat/comparisonfiles.html +152 -0
  179. data/_includes/fileformat/fileformatdetail.html +102 -0
  180. data/_includes/fileformat/fileinfoformat.html +94 -0
  181. data/_includes/footer/index.html +538 -0
  182. data/_includes/google-analytics.html +32 -0
  183. data/_includes/head/index.html +642 -0
  184. data/_includes/header/blogHeader.html +35 -0
  185. data/_includes/header/index.html +153 -0
  186. data/_includes/infographics/infographics.html +244 -0
  187. data/_includes/internationalization-section.html +67 -0
  188. data/_includes/languages/languages.html +61 -0
  189. data/_includes/monumetric/ads.html +58 -0
  190. data/_includes/monumetric/monumetric.html +58 -0
  191. data/_includes/monumetric/profitablecpmgate.html +52 -0
  192. data/_includes/nofiletransfer/nofiletransfer.html +38 -0
  193. data/_includes/paginationBlogPage.html +70 -0
  194. data/_includes/paginationPostPage.html +15 -0
  195. data/_includes/postauthorbio.html +18 -0
  196. data/_includes/postbox.html +65 -0
  197. data/_includes/script.html +560 -0
  198. data/_includes/section/alertbar.html +12 -0
  199. data/_includes/section/count.html +33 -0
  200. data/_includes/section/recent_posts.html +94 -0
  201. data/_includes/section/related_categories_post.html +197 -0
  202. data/_includes/share/socialshare.html +21 -0
  203. data/_includes/staticfooter.html +70 -0
  204. data/_includes/userTracking.html +15 -0
  205. data/_layouts/aboutUs.html +180 -0
  206. data/_layouts/ai-image-generator.html +307 -0
  207. data/_layouts/ai-image-home.html +160 -0
  208. data/_layouts/ai-image-pricing.html +642 -0
  209. data/_layouts/ai-image-profile.html +434 -0
  210. data/_layouts/allAuthors.html +136 -0
  211. data/_layouts/appscms-about.html +168 -0
  212. data/_layouts/appscms-audio.html +33 -0
  213. data/_layouts/appscms-author.html +440 -0
  214. data/_layouts/appscms-authors.html +150 -0
  215. data/_layouts/appscms-batch.html +136 -0
  216. data/_layouts/appscms-blog.html +122 -0
  217. data/_layouts/appscms-calculator.html +158 -0
  218. data/_layouts/appscms-categories.html +26 -0
  219. data/_layouts/appscms-contact.html +137 -0
  220. data/_layouts/appscms-disclaimer.html +129 -0
  221. data/_layouts/appscms-download.html +304 -0
  222. data/_layouts/appscms-feature-result.html +101 -0
  223. data/_layouts/appscms-feature.html +101 -0
  224. data/_layouts/appscms-help.html +32 -0
  225. data/_layouts/appscms-home.html +61 -0
  226. data/_layouts/appscms-imagekit.html +96 -0
  227. data/_layouts/appscms-post.html +247 -0
  228. data/_layouts/appscms-privacy-policy.html +786 -0
  229. data/_layouts/appscms-terms-and-conditions.html +650 -0
  230. data/_layouts/appscms-video.html +33 -0
  231. data/_layouts/audio.html +33 -0
  232. data/_layouts/author.html +413 -0
  233. data/_layouts/batch.html +177 -0
  234. data/_layouts/blog-1.html +121 -0
  235. data/_layouts/blog.html +136 -0
  236. data/_layouts/calculator.html +99 -0
  237. data/_layouts/categories.html +34 -0
  238. data/_layouts/contactUs.html +128 -0
  239. data/_layouts/content-tool-ai copy 2.html +6611 -0
  240. data/_layouts/content-tool-ai copy.html +261 -0
  241. data/_layouts/content-tool-ai-2.html +353 -0
  242. data/_layouts/content-tool-ai.html +566 -0
  243. data/_layouts/contenttool-feature.html +47 -0
  244. data/_layouts/contenttool-home.html +58 -0
  245. data/_layouts/default.html +1 -0
  246. data/_layouts/devtool-blog.html +137 -0
  247. data/_layouts/devtool-feature.html +59 -0
  248. data/_layouts/devtool-home.html +58 -0
  249. data/_layouts/devtools.html +58 -0
  250. data/_layouts/disclaimer.html +129 -0
  251. data/_layouts/download.html +305 -0
  252. data/_layouts/feature-1.html +412 -0
  253. data/_layouts/feature-download.html +315 -0
  254. data/_layouts/feature.html +499 -0
  255. data/_layouts/featureResultPage.html +87 -0
  256. data/_layouts/fileInfo.html +46 -0
  257. data/_layouts/filecomparison.html +130 -0
  258. data/_layouts/frame.html +223 -0
  259. data/_layouts/help.html +25 -0
  260. data/_layouts/home-1.html +260 -0
  261. data/_layouts/home.html +380 -0
  262. data/_layouts/homeResultPage.html +51 -0
  263. data/_layouts/imagekit.html +309 -0
  264. data/_layouts/page.html +5 -0
  265. data/_layouts/photo-effects-home.html +191 -0
  266. data/_layouts/post.html +237 -0
  267. data/_layouts/privacyPolicy.html +786 -0
  268. data/_layouts/profile.html +566 -0
  269. data/_layouts/termAndCondition.html +650 -0
  270. data/_layouts/video.html +33 -0
  271. data/assets/.DS_Store +0 -0
  272. data/assets/app.js +75 -0
  273. data/assets/bulb.svg +1 -0
  274. data/assets/cloud.svg +1 -0
  275. data/assets/cross.svg +5 -0
  276. data/assets/css/adblocker.css +185 -0
  277. data/assets/css/ai-image-generator.css +547 -0
  278. data/assets/css/ai-image-home.css +763 -0
  279. data/assets/css/appscms-blog.css +505 -0
  280. data/assets/css/appscms-calculator.css +97 -0
  281. data/assets/css/appscms-contenttool.css +1384 -0
  282. data/assets/css/appscms-feature.css +0 -0
  283. data/assets/css/appscms-home.css +5 -0
  284. data/assets/css/appscms-imagekit.css +855 -0
  285. data/assets/css/appscms-theme.css +3934 -0
  286. data/assets/css/appscms-variables.css +24 -0
  287. data/assets/css/batch.css +501 -0
  288. data/assets/css/blog-1.css +66 -0
  289. data/assets/css/blog.css +510 -0
  290. data/assets/css/bootstrap.min.css +7 -0
  291. data/assets/css/calculators.css +46 -0
  292. data/assets/css/common.css +945 -0
  293. data/assets/css/content-tool-ai.css +1192 -0
  294. data/assets/css/devtool-main.css +1351 -0
  295. data/assets/css/devtools.css +106 -0
  296. data/assets/css/feature-1.css +294 -0
  297. data/assets/css/filecomparison.css +25 -0
  298. data/assets/css/frame.css +781 -0
  299. data/assets/css/home-1.css +188 -0
  300. data/assets/css/imagekit copy.css +849 -0
  301. data/assets/css/imagekit.css +849 -0
  302. data/assets/css/responsive.css +0 -0
  303. data/assets/css/tools.css +2209 -0
  304. data/assets/document.png +0 -0
  305. data/assets/dropbox.png +0 -0
  306. data/assets/easy-to-use.svg +7 -0
  307. data/assets/easy.svg +1 -0
  308. data/assets/facebook.svg +5 -0
  309. data/assets/fileimg/0RX6D8V.jpeg +0 -0
  310. data/assets/fileimg/11To9CR.jpeg +0 -0
  311. data/assets/fileimg/16q77H1.jpeg +0 -0
  312. data/assets/fileimg/1o2rNBD.jpeg +0 -0
  313. data/assets/fileimg/2DVHHaP.jpeg +0 -0
  314. data/assets/fileimg/38J4iOl.jpeg +0 -0
  315. data/assets/fileimg/38SErjW.jpeg +0 -0
  316. data/assets/fileimg/3JbciOH.jpeg +0 -0
  317. data/assets/fileimg/51PJjGr.jpeg +0 -0
  318. data/assets/fileimg/5938cLE.jpeg +0 -0
  319. data/assets/fileimg/5hGiNf7.jpeg +0 -0
  320. data/assets/fileimg/69oMRM0.jpeg +0 -0
  321. data/assets/fileimg/6WTDOAw.jpeg +0 -0
  322. data/assets/fileimg/6hQNdGk.jpeg +0 -0
  323. data/assets/fileimg/6uyiajm.jpeg +0 -0
  324. data/assets/fileimg/6z9n45v.jpeg +0 -0
  325. data/assets/fileimg/7Z9sNdy.jpeg +0 -0
  326. data/assets/fileimg/7eQehmc.jpeg +0 -0
  327. data/assets/fileimg/7xNWYRA.jpeg +0 -0
  328. data/assets/fileimg/82vepge.jpeg +0 -0
  329. data/assets/fileimg/8A6rYqw.jpeg +0 -0
  330. data/assets/fileimg/8aN9yEj.jpeg +0 -0
  331. data/assets/fileimg/99jo0FJ.jpeg +0 -0
  332. data/assets/fileimg/A2QFJgs.jpeg +0 -0
  333. data/assets/fileimg/AuNqAKT.jpeg +0 -0
  334. data/assets/fileimg/BV8ML15.jpeg +0 -0
  335. data/assets/fileimg/Cc9amsH.jpeg +0 -0
  336. data/assets/fileimg/Cjoa7OB.jpeg +0 -0
  337. data/assets/fileimg/Dh0nFk6.jpeg +0 -0
  338. data/assets/fileimg/EuFgmVh.jpeg +0 -0
  339. data/assets/fileimg/F87GDJM.jpeg +0 -0
  340. data/assets/fileimg/FAo0QEL.jpeg +0 -0
  341. data/assets/fileimg/FSHZ7pW.jpeg +0 -0
  342. data/assets/fileimg/FYEygcW.jpeg +0 -0
  343. data/assets/fileimg/FdqTl1x.jpeg +0 -0
  344. data/assets/fileimg/H7CZmss.jpeg +0 -0
  345. data/assets/fileimg/HAhjqEA.jpeg +0 -0
  346. data/assets/fileimg/HmizpGb.jpeg +0 -0
  347. data/assets/fileimg/IKdU9NN.jpeg +0 -0
  348. data/assets/fileimg/JEuwwVE.jpeg +0 -0
  349. data/assets/fileimg/JeFS57j.jpeg +0 -0
  350. data/assets/fileimg/KXTzTK7.jpeg +0 -0
  351. data/assets/fileimg/Kp0egqG.jpeg +0 -0
  352. data/assets/fileimg/MX9qrvZ.jpeg +0 -0
  353. data/assets/fileimg/Mny97V6.jpeg +0 -0
  354. data/assets/fileimg/Mt9PAUF.jpeg +0 -0
  355. data/assets/fileimg/NY9GTXm.jpeg +0 -0
  356. data/assets/fileimg/O1HqazZ.jpeg +0 -0
  357. data/assets/fileimg/P6WGAMN.jpeg +0 -0
  358. data/assets/fileimg/PLx4Opv.jpeg +0 -0
  359. data/assets/fileimg/PePZ5cb.jpeg +0 -0
  360. data/assets/fileimg/PtakFU2.jpeg +0 -0
  361. data/assets/fileimg/QdcouPN.jpeg +0 -0
  362. data/assets/fileimg/RUVWLwB.jpeg +0 -0
  363. data/assets/fileimg/SJ29L8A.jpeg +0 -0
  364. data/assets/fileimg/TmHdEAq.jpeg +0 -0
  365. data/assets/fileimg/TnwKQd9.jpeg +0 -0
  366. data/assets/fileimg/U6hLUgu.jpeg +0 -0
  367. data/assets/fileimg/V2G1SGL.jpeg +0 -0
  368. data/assets/fileimg/WBNj13N.jpeg +0 -0
  369. data/assets/fileimg/WofJU7C.jpeg +0 -0
  370. data/assets/fileimg/XLdMM90.jpeg +0 -0
  371. data/assets/fileimg/XYvKzO9.jpeg +0 -0
  372. data/assets/fileimg/Xa1wjEf.jpeg +0 -0
  373. data/assets/fileimg/XxsKREw.jpeg +0 -0
  374. data/assets/fileimg/YaqCA2d.jpeg +0 -0
  375. data/assets/fileimg/YmBdG16.jpeg +0 -0
  376. data/assets/fileimg/ZTI2NTv.jpeg +0 -0
  377. data/assets/fileimg/acdsee.png +0 -0
  378. data/assets/fileimg/b18tt3b.jpeg +0 -0
  379. data/assets/fileimg/bC8ZzSs.jpeg +0 -0
  380. data/assets/fileimg/c2PuNRk.jpeg +0 -0
  381. data/assets/fileimg/c5Zl0O1.jpeg +0 -0
  382. data/assets/fileimg/cPO8bqH.jpeg +0 -0
  383. data/assets/fileimg/cfwD39J.jpeg +0 -0
  384. data/assets/fileimg/d5byEov.jpeg +0 -0
  385. data/assets/fileimg/diIDQ4M.jpeg +0 -0
  386. data/assets/fileimg/e9cgmZo.jpeg +0 -0
  387. data/assets/fileimg/fClLkgM.jpeg +0 -0
  388. data/assets/fileimg/fVyIEs4.jpeg +0 -0
  389. data/assets/fileimg/ffv3iNy.jpeg +0 -0
  390. data/assets/fileimg/hJWCII5.jpeg +0 -0
  391. data/assets/fileimg/hnkzD4T.jpeg +0 -0
  392. data/assets/fileimg/hodO9zz.jpeg +0 -0
  393. data/assets/fileimg/irCSU4s.jpeg +0 -0
  394. data/assets/fileimg/jcTagMw.jpeg +0 -0
  395. data/assets/fileimg/jsU9KjR.jpeg +0 -0
  396. data/assets/fileimg/kXyPDCs.jpeg +0 -0
  397. data/assets/fileimg/lWFl5mc.jpeg +0 -0
  398. data/assets/fileimg/mF1gtxb.jpeg +0 -0
  399. data/assets/fileimg/mSrHgSp.jpeg +0 -0
  400. data/assets/fileimg/nrsG7Ys.jpeg +0 -0
  401. data/assets/fileimg/ovQYI78.jpeg +0 -0
  402. data/assets/fileimg/p5rWIzT.jpeg +0 -0
  403. data/assets/fileimg/p64BUbi.jpeg +0 -0
  404. data/assets/fileimg/pgXaxjb.jpeg +0 -0
  405. data/assets/fileimg/pqcWQ2F.jpeg +0 -0
  406. data/assets/fileimg/qwnEy06.jpeg +0 -0
  407. data/assets/fileimg/rElyIoV.jpeg +0 -0
  408. data/assets/fileimg/rawD7q8.jpeg +0 -0
  409. data/assets/fileimg/rrCOBeO.jpeg +0 -0
  410. data/assets/fileimg/sOBpiyF.jpeg +0 -0
  411. data/assets/fileimg/t2WljZe.jpeg +0 -0
  412. data/assets/fileimg/uoX9gqI.jpeg +0 -0
  413. data/assets/fileimg/upbts7y.jpeg +0 -0
  414. data/assets/fileimg/vyEg9wb.jpeg +0 -0
  415. data/assets/fileimg/wAHKc6t.jpeg +0 -0
  416. data/assets/fileimg/wJy7aoh.jpeg +0 -0
  417. data/assets/fileimg/wK1B8lS.jpeg +0 -0
  418. data/assets/fileimg/wcqHWtb.jpeg +0 -0
  419. data/assets/fileimg/xbfyrdU.jpeg +0 -0
  420. data/assets/fileimg/xeDZX8x.jpeg +0 -0
  421. data/assets/flag.svg +7 -0
  422. data/assets/fonts/Calligraphy.ttf +0 -0
  423. data/assets/free.svg +7 -0
  424. data/assets/gdrive.png +0 -0
  425. data/assets/guaranty.svg +1 -0
  426. data/assets/homeimages/3_shop_posters-main.png +0 -0
  427. data/assets/images/.DS_Store +0 -0
  428. data/assets/images/1.png +0 -0
  429. data/assets/images/1.webp +0 -0
  430. data/assets/images/2.png +0 -0
  431. data/assets/images/2.webp +0 -0
  432. data/assets/images/3.png +0 -0
  433. data/assets/images/3.webp +0 -0
  434. data/assets/images/3_shop_posters.png +0 -0
  435. data/assets/images/Ankita.webp +0 -0
  436. data/assets/images/Anushka.webp +0 -0
  437. data/assets/images/Arjyahi.webp +0 -0
  438. data/assets/images/Nikita.webp +0 -0
  439. data/assets/images/abp.svg +41 -0
  440. data/assets/images/adblock.svg +266 -0
  441. data/assets/images/add-image.png +0 -0
  442. data/assets/images/add.png +0 -0
  443. data/assets/images/add.svg +1 -0
  444. data/assets/images/addimg.svg +3 -0
  445. data/assets/images/alka.webp +0 -0
  446. data/assets/images/arrow-left.svg +7 -0
  447. data/assets/images/arrow-right.svg +7 -0
  448. data/assets/images/audio-upload.svg +1 -0
  449. data/assets/images/avatar.jpeg +0 -0
  450. data/assets/images/avatar.png +0 -0
  451. data/assets/images/avatar.webp +0 -0
  452. data/assets/images/balark.jpeg +0 -0
  453. data/assets/images/balark.webp +0 -0
  454. data/assets/images/bandana.jpeg +0 -0
  455. data/assets/images/bandana.webp +0 -0
  456. data/assets/images/bgimg1.png +0 -0
  457. data/assets/images/bulb.png +0 -0
  458. data/assets/images/bulb.svg +1 -0
  459. data/assets/images/bunnies.png +0 -0
  460. data/assets/images/close-button.svg +32 -0
  461. data/assets/images/cloud-computing.png +0 -0
  462. data/assets/images/cloud_new.svg +1 -0
  463. data/assets/images/content-tool-logo.png +0 -0
  464. data/assets/images/contenttool-main.svg +66 -0
  465. data/assets/images/contributor.webp +0 -0
  466. data/assets/images/convert.png +0 -0
  467. data/assets/images/convert.svg +9 -0
  468. data/assets/images/cross.svg +1 -0
  469. data/assets/images/debosmita.jpeg +0 -0
  470. data/assets/images/debosmita.webp +0 -0
  471. data/assets/images/digiball.jpg +0 -0
  472. data/assets/images/digipaint.svg +7 -0
  473. data/assets/images/document.png +0 -0
  474. data/assets/images/download.png +0 -0
  475. data/assets/images/drive.svg +25 -0
  476. data/assets/images/dropbox.svg +17 -0
  477. data/assets/images/easy-to-use.svg +7 -0
  478. data/assets/images/faceframe.png +0 -0
  479. data/assets/images/fast.svg +1 -0
  480. data/assets/images/file.png +0 -0
  481. data/assets/images/fileformat.webp +0 -0
  482. data/assets/images/flag.svg +7 -0
  483. data/assets/images/free.svg +7 -0
  484. data/assets/images/gallary.png +0 -0
  485. data/assets/images/google-drive.svg +6 -0
  486. data/assets/images/iconn.svg +13 -0
  487. data/assets/images/idea.svg +95 -0
  488. data/assets/images/image.png +0 -0
  489. data/assets/images/karuna.1.webp +0 -0
  490. data/assets/images/karuna.jpeg +0 -0
  491. data/assets/images/karuna.png +0 -0
  492. data/assets/images/karuna.webp +0 -0
  493. data/assets/images/keshav.webp +0 -0
  494. data/assets/images/krutika.jpeg +0 -0
  495. data/assets/images/krutika.webp +0 -0
  496. data/assets/images/lakshmi.svg +1 -0
  497. data/assets/images/left-arrow.svg +9 -0
  498. data/assets/images/lightbulb.svg +1 -0
  499. data/assets/images/like.svg +7 -0
  500. data/assets/images/loader.gif +0 -0
  501. data/assets/images/logo.png +0 -0
  502. data/assets/images/logo.svg +3 -0
  503. data/assets/images/mahika.jpeg +0 -0
  504. data/assets/images/mahika.webp +0 -0
  505. data/assets/images/manthink.svg +3552 -0
  506. data/assets/images/mega.png +0 -0
  507. data/assets/images/menu.svg +1 -0
  508. data/assets/images/paavan.webp +0 -0
  509. data/assets/images/pallavi.jpeg +0 -0
  510. data/assets/images/pallavi.webp +0 -0
  511. data/assets/images/privacy.svg +7 -0
  512. data/assets/images/rating.png +0 -0
  513. data/assets/images/right-arrow.svg +9 -0
  514. data/assets/images/safeimagekit. (2).png +0 -0
  515. data/assets/images/safeimagekit. (3).png +0 -0
  516. data/assets/images/safeimagekit..png +0 -0
  517. data/assets/images/safeimagekit.png +0 -0
  518. data/assets/images/safety.svg +7 -0
  519. data/assets/images/safevideoconverter.svg +23 -0
  520. data/assets/images/search-icon.svg +3 -0
  521. data/assets/images/shield.svg +1 -0
  522. data/assets/images/siddhika.jpeg +0 -0
  523. data/assets/images/siddhika.webp +0 -0
  524. data/assets/images/sona.jpeg +0 -0
  525. data/assets/images/sona.webp +0 -0
  526. data/assets/images/speed.svg +7 -0
  527. data/assets/images/spinner.gif +0 -0
  528. data/assets/images/suchita.1.webp +0 -0
  529. data/assets/images/suchita.jpeg +0 -0
  530. data/assets/images/suchita.png +0 -0
  531. data/assets/images/suchita.webp +0 -0
  532. data/assets/images/target.svg +1 -0
  533. data/assets/images/taufik.1.webp +0 -0
  534. data/assets/images/taufik.jpeg +0 -0
  535. data/assets/images/taufik.png +0 -0
  536. data/assets/images/taufik.webp +0 -0
  537. data/assets/images/test.svg +1 -0
  538. data/assets/images/time.svg +16 -0
  539. data/assets/images/together_foreve (2).png +0 -0
  540. data/assets/images/together_foreve.png +0 -0
  541. data/assets/images/together_forever.png +0 -0
  542. data/assets/images/trust.svg +1 -0
  543. data/assets/images/udit.1.webp +0 -0
  544. data/assets/images/udit.2.webp +0 -0
  545. data/assets/images/udit.jpeg +0 -0
  546. data/assets/images/udit.jpg +0 -0
  547. data/assets/images/udit.png +0 -0
  548. data/assets/images/udit.webp +0 -0
  549. data/assets/images/uo.svg +41 -0
  550. data/assets/images/user-friendly.svg +7 -0
  551. data/assets/images/vectorpaint.svg +6 -0
  552. data/assets/images/video.png +0 -0
  553. data/assets/instagram.svg +5 -0
  554. data/assets/js/TopScroll.js +8 -0
  555. data/assets/js/adBlocker.js +68 -0
  556. data/assets/js/ads.js +8 -0
  557. data/assets/js/append-div.js +10 -0
  558. data/assets/js/appscms-infographics.js +0 -0
  559. data/assets/js/appscms-login.js +447 -0
  560. data/assets/js/appscms-search-home1.js +136 -0
  561. data/assets/js/appscms-search.js +133 -0
  562. data/assets/js/appscms-theme.js +516 -0
  563. data/assets/js/batch.js +219 -0
  564. data/assets/js/calculator-tooltip.js +3 -0
  565. data/assets/js/devtools.js +82 -0
  566. data/assets/js/face-api.js +38064 -0
  567. data/assets/js/face-detection.js +303 -0
  568. data/assets/js/faceSystem.js +0 -0
  569. data/assets/js/featureResult.js +48 -0
  570. data/assets/js/frame.js +264 -0
  571. data/assets/js/get-credits.js +0 -0
  572. data/assets/js/googledrive.js +158 -0
  573. data/assets/js/homeResult.js +37 -0
  574. data/assets/js/manifest.json +17 -0
  575. data/assets/js/models/age_gender_model-shard1 +0 -0
  576. data/assets/js/models/age_gender_model-weights_manifest.json +1 -0
  577. data/assets/js/models/face_expression_model-shard1 +0 -0
  578. data/assets/js/models/face_expression_model-weights_manifest.json +1 -0
  579. data/assets/js/models/face_landmark_68_model-shard1 +0 -0
  580. data/assets/js/models/face_landmark_68_model-weights_manifest.json +1 -0
  581. data/assets/js/models/face_landmark_68_tiny_model-shard1 +0 -0
  582. data/assets/js/models/face_landmark_68_tiny_model-weights_manifest.json +1 -0
  583. data/assets/js/models/face_recognition_model-shard1 +0 -0
  584. data/assets/js/models/face_recognition_model-shard2 +6 -0
  585. data/assets/js/models/face_recognition_model-weights_manifest.json +1 -0
  586. data/assets/js/models/mtcnn_model-shard1 +0 -0
  587. data/assets/js/models/mtcnn_model-weights_manifest.json +1 -0
  588. data/assets/js/models/ssd_mobilenetv1_model-shard1 +0 -0
  589. data/assets/js/models/ssd_mobilenetv1_model-shard2 +145 -0
  590. data/assets/js/models/ssd_mobilenetv1_model-weights_manifest.json +1 -0
  591. data/assets/js/models/tiny_face_detector_model-shard1 +0 -0
  592. data/assets/js/models/tiny_face_detector_model-weights_manifest.json +1 -0
  593. data/assets/js/multiselect.js +185 -0
  594. data/assets/js/partytown/debug/partytown-atomics.js +929 -0
  595. data/assets/js/partytown/debug/partytown-media.js +374 -0
  596. data/assets/js/partytown/debug/partytown-sandbox-sw.js +920 -0
  597. data/assets/js/partytown/debug/partytown-sw.js +59 -0
  598. data/assets/js/partytown/debug/partytown-ww-atomics.js +2699 -0
  599. data/assets/js/partytown/debug/partytown-ww-sw.js +2691 -0
  600. data/assets/js/partytown/debug/partytown.js +114 -0
  601. data/assets/js/partytown/partytown-atomics.js +600 -0
  602. data/assets/js/partytown/partytown-media.js +2 -0
  603. data/assets/js/partytown/partytown-sw.js +50 -0
  604. data/assets/js/perspective.min.js +182 -0
  605. data/assets/js/photo-effects.json +85 -0
  606. data/assets/js/redirectResult.js +10 -0
  607. data/assets/js/sharePage.js +65 -0
  608. data/assets/js/testing-batch.js +39 -0
  609. data/assets/js/theme.js +104 -0
  610. data/assets/js/usageTracking.js +143 -0
  611. data/assets/js/usageTrackingEvents.js +6 -0
  612. data/assets/js/userUsageCount.js +0 -0
  613. data/assets/js/webvitals.js +5 -0
  614. data/assets/like.svg +7 -0
  615. data/assets/linkdin.svg +5 -0
  616. data/assets/noserverupload.svg +4 -0
  617. data/assets/pdf.svg +20 -0
  618. data/assets/privacy.svg +7 -0
  619. data/assets/protect.svg +1 -0
  620. data/assets/secure.svg +43 -0
  621. data/assets/shield.svg +7 -0
  622. data/assets/skks.svg +1 -0
  623. data/assets/speed.svg +7 -0
  624. data/assets/star.svg +5 -0
  625. data/assets/support.svg +1 -0
  626. data/assets/time.svg +16 -0
  627. data/assets/twitter.svg +5 -0
  628. data/assets/user-friendly.svg +7 -0
  629. data/assets/youtube.svg +5 -0
  630. data/robots.txt +34 -0
  631. metadata +631 -2
@@ -0,0 +1,920 @@
1
+ /* Partytown 0.7.5 - MIT builder.io */
2
+ ((window) => {
3
+ const isPromise = (v) => "object" == typeof v && v && v.then;
4
+ const noop = () => {};
5
+ const len = (obj) => obj.length;
6
+ const getConstructorName = (obj) => {
7
+ var _a, _b, _c;
8
+ try {
9
+ const constructorName =
10
+ null === (_a = null == obj ? void 0 : obj.constructor) || void 0 === _a
11
+ ? void 0
12
+ : _a.name;
13
+ if (constructorName) {
14
+ return constructorName;
15
+ }
16
+ } catch (e) {}
17
+ try {
18
+ const zoneJsConstructorName =
19
+ null ===
20
+ (_c =
21
+ null ===
22
+ (_b =
23
+ null == obj ? void 0 : obj.__zone_symbol__originalInstance) ||
24
+ void 0 === _b
25
+ ? void 0
26
+ : _b.constructor) || void 0 === _c
27
+ ? void 0
28
+ : _c.name;
29
+ if (zoneJsConstructorName) {
30
+ return zoneJsConstructorName;
31
+ }
32
+ } catch (e) {}
33
+ return "";
34
+ };
35
+ const startsWith = (str, val) => str.startsWith(val);
36
+ const isValidMemberName = (memberName) =>
37
+ !(
38
+ startsWith(memberName, "webkit") ||
39
+ startsWith(memberName, "toJSON") ||
40
+ startsWith(memberName, "constructor") ||
41
+ startsWith(memberName, "toString") ||
42
+ startsWith(memberName, "_")
43
+ );
44
+ const getNodeName = (node) =>
45
+ 11 === node.nodeType && node.host ? "#s" : node.nodeName;
46
+ const randomId = () =>
47
+ Math.round(Math.random() * Number.MAX_SAFE_INTEGER).toString(36);
48
+ const defineConstructorName = (Cstr, value) =>
49
+ ((obj, memberName, descriptor) =>
50
+ Object.defineProperty(obj, memberName, {
51
+ ...descriptor,
52
+ configurable: true,
53
+ }))(Cstr, "name", {
54
+ value: value,
55
+ });
56
+ const htmlConstructorTags = {
57
+ Anchor: "a",
58
+ DList: "dl",
59
+ Image: "img",
60
+ OList: "ol",
61
+ Paragraph: "p",
62
+ Quote: "q",
63
+ TableCaption: "caption",
64
+ TableCell: "td",
65
+ TableCol: "colgroup",
66
+ TableRow: "tr",
67
+ TableSection: "tbody",
68
+ UList: "ul",
69
+ };
70
+ const svgConstructorTags = {
71
+ Graphics: "g",
72
+ SVG: "svg",
73
+ };
74
+ const InstanceIdKey = Symbol();
75
+ const CreatedKey = Symbol();
76
+ const instances = new Map();
77
+ const mainRefs = new Map();
78
+ const winCtxs = {};
79
+ const windowIds = new WeakMap();
80
+ const getAndSetInstanceId = (instance, instanceId) => {
81
+ if (instance) {
82
+ if ((instanceId = windowIds.get(instance))) {
83
+ return instanceId;
84
+ }
85
+ (instanceId = instance[InstanceIdKey]) ||
86
+ setInstanceId(instance, (instanceId = randomId()));
87
+ return instanceId;
88
+ }
89
+ };
90
+ const getInstance = (winId, instanceId, win, doc, docId) => {
91
+ if ((win = winCtxs[winId]) && win.$window$) {
92
+ if (winId === instanceId) {
93
+ return win.$window$;
94
+ }
95
+ doc = win.$window$.document;
96
+ docId = instanceId.split(".").pop();
97
+ if ("d" === docId) {
98
+ return doc;
99
+ }
100
+ if ("e" === docId) {
101
+ return doc.documentElement;
102
+ }
103
+ if ("h" === docId) {
104
+ return doc.head;
105
+ }
106
+ if ("b" === docId) {
107
+ return doc.body;
108
+ }
109
+ }
110
+ return instances.get(instanceId);
111
+ };
112
+ const setInstanceId = (instance, instanceId, now) => {
113
+ if (instance) {
114
+ instances.set(instanceId, instance);
115
+ instance[InstanceIdKey] = instanceId;
116
+ instance[CreatedKey] = now = Date.now();
117
+ if (now > lastCleanup + 5e3) {
118
+ instances.forEach((storedInstance, instanceId) => {
119
+ storedInstance[CreatedKey] < lastCleanup &&
120
+ storedInstance.nodeType &&
121
+ !storedInstance.isConnected &&
122
+ instances.delete(instanceId);
123
+ });
124
+ lastCleanup = now;
125
+ }
126
+ }
127
+ };
128
+ let lastCleanup = 0;
129
+ const mainWindow = window.parent;
130
+ const docImpl = document.implementation.createHTMLDocument();
131
+ const config = mainWindow.partytown || {};
132
+ const libPath = (config.lib || "/partytown/") + "debug/";
133
+ const logMain = (msg) => {
134
+ console.debug.apply(console, [
135
+ "%cMain 🌎",
136
+ "background: #717171; color: white; padding: 2px 3px; border-radius: 2px; font-size: 0.8em;",
137
+ msg,
138
+ ]);
139
+ };
140
+ const winIds = [];
141
+ const normalizedWinId = (winId) => {
142
+ winIds.includes(winId) || winIds.push(winId);
143
+ return winIds.indexOf(winId) + 1;
144
+ };
145
+ const defineCustomElement = (winId, worker, ceData) => {
146
+ const Cstr = defineConstructorName(
147
+ class extends winCtxs[winId].$window$.HTMLElement {},
148
+ ceData[0]
149
+ );
150
+ const ceCallbackMethods =
151
+ "connectedCallback,disconnectedCallback,attributeChangedCallback,adoptedCallback".split(
152
+ ","
153
+ );
154
+ ceCallbackMethods.map(
155
+ (callbackMethodName) =>
156
+ (Cstr.prototype[callbackMethodName] = function (...args) {
157
+ worker.postMessage([
158
+ 15,
159
+ winId,
160
+ getAndSetInstanceId(this),
161
+ callbackMethodName,
162
+ args,
163
+ ]);
164
+ })
165
+ );
166
+ Cstr.observedAttributes = ceData[1];
167
+ return Cstr;
168
+ };
169
+ const serializeForWorker = ($winId$, value, added, type, cstrName) =>
170
+ void 0 !== value && (type = typeof value)
171
+ ? "string" === type ||
172
+ "number" === type ||
173
+ "boolean" === type ||
174
+ null == value
175
+ ? [0, value]
176
+ : "function" === type
177
+ ? [6]
178
+ : (added = added || new Set()) && Array.isArray(value)
179
+ ? added.has(value)
180
+ ? [1, []]
181
+ : added.add(value) && [
182
+ 1,
183
+ value.map((v) => serializeForWorker($winId$, v, added)),
184
+ ]
185
+ : "object" === type
186
+ ? serializedValueIsError(value)
187
+ ? [
188
+ 14,
189
+ {
190
+ name: value.name,
191
+ message: value.message,
192
+ stack: value.stack,
193
+ },
194
+ ]
195
+ : "" === (cstrName = getConstructorName(value))
196
+ ? [2, {}]
197
+ : "Window" === cstrName
198
+ ? [3, [$winId$, $winId$]]
199
+ : "HTMLCollection" === cstrName || "NodeList" === cstrName
200
+ ? [
201
+ 7,
202
+ Array.from(value).map(
203
+ (v) => serializeForWorker($winId$, v, added)[1]
204
+ ),
205
+ ]
206
+ : cstrName.endsWith("Event")
207
+ ? [5, serializeObjectForWorker($winId$, value, added)]
208
+ : "CSSRuleList" === cstrName
209
+ ? [12, Array.from(value).map(serializeCssRuleForWorker)]
210
+ : startsWith(cstrName, "CSS") && cstrName.endsWith("Rule")
211
+ ? [11, serializeCssRuleForWorker(value)]
212
+ : "CSSStyleDeclaration" === cstrName
213
+ ? [13, serializeObjectForWorker($winId$, value, added)]
214
+ : "Attr" === cstrName
215
+ ? [10, [value.name, value.value]]
216
+ : value.nodeType
217
+ ? [3, [$winId$, getAndSetInstanceId(value), getNodeName(value)]]
218
+ : [2, serializeObjectForWorker($winId$, value, added, true, true)]
219
+ : void 0
220
+ : value;
221
+ const serializeObjectForWorker = (
222
+ winId,
223
+ obj,
224
+ added,
225
+ includeFunctions,
226
+ includeEmptyStrings,
227
+ serializedObj,
228
+ propName,
229
+ propValue
230
+ ) => {
231
+ serializedObj = {};
232
+ if (!added.has(obj)) {
233
+ added.add(obj);
234
+ for (propName in obj) {
235
+ if (isValidMemberName(propName)) {
236
+ propValue =
237
+ "path" === propName && getConstructorName(obj).endsWith("Event")
238
+ ? obj.composedPath()
239
+ : obj[propName];
240
+ (includeFunctions || "function" != typeof propValue) &&
241
+ (includeEmptyStrings || "" !== propValue) &&
242
+ (serializedObj[propName] = serializeForWorker(
243
+ winId,
244
+ propValue,
245
+ added
246
+ ));
247
+ }
248
+ }
249
+ }
250
+ return serializedObj;
251
+ };
252
+ const serializeCssRuleForWorker = (cssRule) => {
253
+ let obj = {};
254
+ let key;
255
+ for (key in cssRule) {
256
+ validCssRuleProps.includes(key) && (obj[key] = String(cssRule[key]));
257
+ }
258
+ return obj;
259
+ };
260
+ const serializedValueIsError = (value) => value instanceof window.top.Error;
261
+ const deserializeFromWorker = (
262
+ worker,
263
+ serializedTransfer,
264
+ serializedType,
265
+ serializedValue
266
+ ) => {
267
+ if (serializedTransfer) {
268
+ serializedType = serializedTransfer[0];
269
+ serializedValue = serializedTransfer[1];
270
+ return 0 === serializedType
271
+ ? serializedValue
272
+ : 4 === serializedType
273
+ ? deserializeRefFromWorker(worker, serializedValue)
274
+ : 1 === serializedType
275
+ ? serializedValue.map((v) => deserializeFromWorker(worker, v))
276
+ : 3 === serializedType
277
+ ? getInstance(serializedValue[0], serializedValue[1])
278
+ : 5 === serializedType
279
+ ? constructEvent(deserializeObjectFromWorker(worker, serializedValue))
280
+ : 2 === serializedType
281
+ ? deserializeObjectFromWorker(worker, serializedValue)
282
+ : 8 === serializedType
283
+ ? serializedValue
284
+ : 9 === serializedType
285
+ ? new window[serializedTransfer[2]](serializedValue)
286
+ : void 0;
287
+ }
288
+ };
289
+ const deserializeRefFromWorker = (
290
+ worker,
291
+ { $winId$: $winId$, $instanceId$: $instanceId$, $refId$: $refId$ },
292
+ ref
293
+ ) => {
294
+ ref = mainRefs.get($refId$);
295
+ if (!ref) {
296
+ ref = function (...args) {
297
+ worker.postMessage([
298
+ 9,
299
+ {
300
+ $winId$: $winId$,
301
+ $instanceId$: $instanceId$,
302
+ $refId$: $refId$,
303
+ $thisArg$: serializeForWorker($winId$, this),
304
+ $args$: serializeForWorker($winId$, args),
305
+ },
306
+ ]);
307
+ };
308
+ mainRefs.set($refId$, ref);
309
+ }
310
+ return ref;
311
+ };
312
+ const constructEvent = (eventProps) =>
313
+ new ("detail" in eventProps ? CustomEvent : Event)(
314
+ eventProps.type,
315
+ eventProps
316
+ );
317
+ const deserializeObjectFromWorker = (worker, serializedValue, obj, key) => {
318
+ obj = {};
319
+ for (key in serializedValue) {
320
+ obj[key] = deserializeFromWorker(worker, serializedValue[key]);
321
+ }
322
+ return obj;
323
+ };
324
+ const validCssRuleProps =
325
+ "cssText,selectorText,href,media,namespaceURI,prefix,name,conditionText".split(
326
+ ","
327
+ );
328
+ const mainAccessHandler = async (worker, accessReq) => {
329
+ let accessRsp = {
330
+ $msgId$: accessReq.$msgId$,
331
+ };
332
+ let totalTasks = len(accessReq.$tasks$);
333
+ let i = 0;
334
+ let task;
335
+ let winId;
336
+ let applyPath;
337
+ let instance;
338
+ let rtnValue;
339
+ let isLast;
340
+ for (; i < totalTasks; i++) {
341
+ try {
342
+ isLast = i === totalTasks - 1;
343
+ task = accessReq.$tasks$[i];
344
+ winId = task.$winId$;
345
+ applyPath = task.$applyPath$;
346
+ !winCtxs[winId] &&
347
+ winId.startsWith("f_") &&
348
+ (await new Promise((resolve) => {
349
+ let check = 0;
350
+ let callback = () => {
351
+ winCtxs[winId] || check++ > 1e3
352
+ ? resolve()
353
+ : requestAnimationFrame(callback);
354
+ };
355
+ callback();
356
+ }));
357
+ if (1 === applyPath[0] && applyPath[1] in winCtxs[winId].$window$) {
358
+ setInstanceId(
359
+ new winCtxs[winId].$window$[applyPath[1]](
360
+ ...deserializeFromWorker(worker, applyPath[2])
361
+ ),
362
+ task.$instanceId$
363
+ );
364
+ } else {
365
+ instance = getInstance(winId, task.$instanceId$);
366
+ if (instance) {
367
+ rtnValue = applyToInstance(
368
+ worker,
369
+ winId,
370
+ instance,
371
+ applyPath,
372
+ isLast,
373
+ task.$groupedGetters$
374
+ );
375
+ task.$assignInstanceId$ &&
376
+ ("string" == typeof task.$assignInstanceId$
377
+ ? setInstanceId(rtnValue, task.$assignInstanceId$)
378
+ : (winCtxs[task.$assignInstanceId$.$winId$] = {
379
+ $winId$: task.$assignInstanceId$.$winId$,
380
+ $window$: {
381
+ document: rtnValue,
382
+ },
383
+ }));
384
+ if (isPromise(rtnValue)) {
385
+ rtnValue = await rtnValue;
386
+ isLast && (accessRsp.$isPromise$ = true);
387
+ }
388
+ isLast &&
389
+ (accessRsp.$rtnValue$ = serializeForWorker(winId, rtnValue));
390
+ } else {
391
+ accessRsp.$error$ = `Error finding instance "${
392
+ task.$instanceId$
393
+ }" on window ${normalizedWinId(winId)}`;
394
+ console.error(accessRsp.$error$, task);
395
+ }
396
+ }
397
+ } catch (e) {
398
+ isLast ? (accessRsp.$error$ = String(e.stack || e)) : console.error(e);
399
+ }
400
+ }
401
+ return accessRsp;
402
+ };
403
+ const applyToInstance = (
404
+ worker,
405
+ winId,
406
+ instance,
407
+ applyPath,
408
+ isLast,
409
+ groupedGetters
410
+ ) => {
411
+ let i = 0;
412
+ let l = len(applyPath);
413
+ let next;
414
+ let current;
415
+ let previous;
416
+ let args;
417
+ let groupedRtnValues;
418
+ for (; i < l; i++) {
419
+ current = applyPath[i];
420
+ next = applyPath[i + 1];
421
+ previous = applyPath[i - 1];
422
+ try {
423
+ if (!Array.isArray(next)) {
424
+ if ("string" == typeof current || "number" == typeof current) {
425
+ if (i + 1 === l && groupedGetters) {
426
+ groupedRtnValues = {};
427
+ groupedGetters.map(
428
+ (propName) => (groupedRtnValues[propName] = instance[propName])
429
+ );
430
+ return groupedRtnValues;
431
+ }
432
+ instance = instance[current];
433
+ } else {
434
+ if (0 === next) {
435
+ instance[previous] = deserializeFromWorker(worker, current);
436
+ return;
437
+ }
438
+ if ("function" == typeof instance[previous]) {
439
+ args = deserializeFromWorker(worker, current);
440
+ "define" === previous &&
441
+ "CustomElementRegistry" === getConstructorName(instance) &&
442
+ (args[1] = defineCustomElement(winId, worker, args[1]));
443
+ "insertRule" === previous &&
444
+ args[1] > len(instance.cssRules) &&
445
+ (args[1] = len(instance.cssRules));
446
+ instance = instance[previous].apply(instance, args);
447
+ if ("play" === previous) {
448
+ return Promise.resolve();
449
+ }
450
+ }
451
+ }
452
+ }
453
+ } catch (err) {
454
+ if (isLast) {
455
+ throw err;
456
+ }
457
+ console.debug("Non-blocking setter error:", err);
458
+ }
459
+ }
460
+ return instance;
461
+ };
462
+ const readNextScript = (worker, winCtx) => {
463
+ let $winId$ = winCtx.$winId$;
464
+ let win = winCtx.$window$;
465
+ let doc = win.document;
466
+ let scriptSelector =
467
+ 'script[type="text/partytown"]:not([data-ptid]):not([data-pterror])';
468
+ let scriptElm;
469
+ let $instanceId$;
470
+ let scriptData;
471
+ if (doc && doc.body) {
472
+ scriptElm = doc.querySelector(
473
+ 'script[type="text/partytown"]:not([data-ptid]):not([data-pterror]):not([async]):not([defer])'
474
+ );
475
+ scriptElm || (scriptElm = doc.querySelector(scriptSelector));
476
+ if (scriptElm) {
477
+ scriptElm.dataset.ptid = $instanceId$ = getAndSetInstanceId(
478
+ scriptElm,
479
+ $winId$
480
+ );
481
+ scriptData = {
482
+ $winId$: $winId$,
483
+ $instanceId$: $instanceId$,
484
+ };
485
+ if (scriptElm.src) {
486
+ scriptData.$url$ = scriptElm.src;
487
+ scriptData.$orgUrl$ = scriptElm.dataset.ptsrc || scriptElm.src;
488
+ } else {
489
+ scriptData.$content$ = scriptElm.innerHTML;
490
+ }
491
+ worker.postMessage([7, scriptData]);
492
+ } else {
493
+ if (!winCtx.$isInitialized$) {
494
+ winCtx.$isInitialized$ = 1;
495
+ ((worker, $winId$, win) => {
496
+ let queuedForwardCalls = win._ptf;
497
+ let forwards = (win.partytown || {}).forward || [];
498
+ let i;
499
+ let mainForwardFn;
500
+ let forwardCall = ($forward$, args) =>
501
+ worker.postMessage([
502
+ 10,
503
+ {
504
+ $winId$: $winId$,
505
+ $forward$: $forward$,
506
+ $args$: serializeForWorker($winId$, Array.from(args)),
507
+ },
508
+ ]);
509
+ win._ptf = void 0;
510
+ forwards.map((forwardProps) => {
511
+ mainForwardFn = win;
512
+ forwardProps.split(".").map((_, i, arr) => {
513
+ mainForwardFn = mainForwardFn[arr[i]] =
514
+ i + 1 < len(arr)
515
+ ? mainForwardFn[arr[i]] || ("push" === arr[i + 1] ? [] : {})
516
+ : (...args) => forwardCall(arr, args);
517
+ });
518
+ });
519
+ if (queuedForwardCalls) {
520
+ for (i = 0; i < len(queuedForwardCalls); i += 2) {
521
+ forwardCall(queuedForwardCalls[i], queuedForwardCalls[i + 1]);
522
+ }
523
+ }
524
+ })(worker, $winId$, win);
525
+ doc.dispatchEvent(new CustomEvent("pt0"));
526
+ {
527
+ const winType = win === win.top ? "top" : "input";
528
+ logMain(
529
+ `Executed ${winType} window ${normalizedWinId(
530
+ $winId$
531
+ )} environment scripts in ${(
532
+ performance.now() - winCtx.$startTime$
533
+ ).toFixed(1)}ms`
534
+ );
535
+ }
536
+ }
537
+ worker.postMessage([8, $winId$]);
538
+ }
539
+ } else {
540
+ requestAnimationFrame(() => readNextScript(worker, winCtx));
541
+ }
542
+ };
543
+ const registerWindow = (worker, $winId$, $window$) => {
544
+ if (!windowIds.has($window$)) {
545
+ windowIds.set($window$, $winId$);
546
+ const doc = $window$.document;
547
+ const history = $window$.history;
548
+ const $parentWinId$ = windowIds.get($window$.parent);
549
+ let initialised = false;
550
+ const onInitialisedQueue = [];
551
+ const onInitialised = (callback) => {
552
+ initialised ? callback() : onInitialisedQueue.push(callback);
553
+ };
554
+ const sendInitEnvData = () => {
555
+ worker.postMessage([
556
+ 5,
557
+ {
558
+ $winId$: $winId$,
559
+ $parentWinId$: $parentWinId$,
560
+ $url$: doc.baseURI,
561
+ $visibilityState$: doc.visibilityState,
562
+ },
563
+ ]);
564
+ setTimeout(() => {
565
+ initialised = true;
566
+ onInitialisedQueue.forEach((callback) => {
567
+ callback();
568
+ });
569
+ });
570
+ };
571
+ const pushState = history.pushState.bind(history);
572
+ const replaceState = history.replaceState.bind(history);
573
+ const onLocationChange = (type, state, newUrl, oldUrl) => () => {
574
+ setTimeout(() => {
575
+ worker.postMessage([
576
+ 13,
577
+ {
578
+ $winId$: $winId$,
579
+ type: type,
580
+ state: state,
581
+ url: doc.baseURI,
582
+ newUrl: newUrl,
583
+ oldUrl: oldUrl,
584
+ },
585
+ ]);
586
+ });
587
+ };
588
+ history.pushState = (state, _, newUrl) => {
589
+ pushState(state, _, newUrl);
590
+ onInitialised(
591
+ onLocationChange(
592
+ 0,
593
+ state,
594
+ null == newUrl ? void 0 : newUrl.toString()
595
+ )
596
+ );
597
+ };
598
+ history.replaceState = (state, _, newUrl) => {
599
+ replaceState(state, _, newUrl);
600
+ onInitialised(
601
+ onLocationChange(
602
+ 1,
603
+ state,
604
+ null == newUrl ? void 0 : newUrl.toString()
605
+ )
606
+ );
607
+ };
608
+ $window$.addEventListener("popstate", (event) => {
609
+ onInitialised(onLocationChange(2, event.state));
610
+ });
611
+ $window$.addEventListener("hashchange", (event) => {
612
+ onInitialised(onLocationChange(3, {}, event.newURL, event.oldURL));
613
+ });
614
+ $window$.addEventListener("ptupdate", () => {
615
+ readNextScript(worker, winCtxs[$winId$]);
616
+ });
617
+ doc.addEventListener("visibilitychange", () =>
618
+ worker.postMessage([14, $winId$, doc.visibilityState])
619
+ );
620
+ winCtxs[$winId$] = {
621
+ $winId$: $winId$,
622
+ $window$: $window$,
623
+ };
624
+ winCtxs[$winId$].$startTime$ = performance.now();
625
+ {
626
+ const winType = $winId$ === $parentWinId$ ? "top" : "input";
627
+ logMain(`Registered ${winType} window ${normalizedWinId($winId$)}`);
628
+ }
629
+ "complete" === doc.readyState
630
+ ? sendInitEnvData()
631
+ : $window$.addEventListener("load", sendInitEnvData);
632
+ }
633
+ };
634
+ const onMessageFromWebWorker = (worker, msg, winCtx) => {
635
+ if (4 === msg[0]) {
636
+ registerWindow(worker, randomId(), mainWindow);
637
+ } else {
638
+ winCtx = winCtxs[msg[1]];
639
+ winCtx &&
640
+ (7 === msg[0]
641
+ ? requestAnimationFrame(() => readNextScript(worker, winCtx))
642
+ : 6 === msg[0] &&
643
+ ((worker, winCtx, instanceId, errorMsg, scriptElm) => {
644
+ scriptElm = winCtx.$window$.document.querySelector(
645
+ `[data-ptid="${instanceId}"]`
646
+ );
647
+ if (scriptElm) {
648
+ errorMsg
649
+ ? (scriptElm.dataset.pterror = errorMsg)
650
+ : (scriptElm.type += "-x");
651
+ delete scriptElm.dataset.ptid;
652
+ }
653
+ readNextScript(worker, winCtx);
654
+ })(worker, winCtx, msg[2], msg[3]));
655
+ }
656
+ };
657
+ const readMainPlatform = () => {
658
+ const elm = docImpl.createElement("i");
659
+ const textNode = docImpl.createTextNode("");
660
+ const comment = docImpl.createComment("");
661
+ const frag = docImpl.createDocumentFragment();
662
+ const shadowRoot = docImpl.createElement("p").attachShadow({
663
+ mode: "open",
664
+ });
665
+ const intersectionObserver = getGlobalConstructor(
666
+ mainWindow,
667
+ "IntersectionObserver"
668
+ );
669
+ const mutationObserver = getGlobalConstructor(
670
+ mainWindow,
671
+ "MutationObserver"
672
+ );
673
+ const resizeObserver = getGlobalConstructor(mainWindow, "ResizeObserver");
674
+ const perf = mainWindow.performance;
675
+ const screen = mainWindow.screen;
676
+ const impls = [
677
+ [mainWindow.history],
678
+ [perf],
679
+ [perf.navigation],
680
+ [perf.timing],
681
+ [screen],
682
+ [screen.orientation],
683
+ [mainWindow.visualViewport],
684
+ [intersectionObserver, 12],
685
+ [mutationObserver, 12],
686
+ [resizeObserver, 12],
687
+ [textNode],
688
+ [comment],
689
+ [frag],
690
+ [shadowRoot],
691
+ [elm],
692
+ [elm.attributes],
693
+ [elm.classList],
694
+ [elm.dataset],
695
+ [elm.style],
696
+ [docImpl],
697
+ [docImpl.doctype],
698
+ ];
699
+ const initialInterfaces = [
700
+ readImplementation("Window", mainWindow),
701
+ readImplementation("Node", textNode),
702
+ ];
703
+ const $config$ = JSON.stringify(config, (k, v) => {
704
+ if ("function" == typeof v) {
705
+ v = String(v);
706
+ v.startsWith(k + "(") && (v = "function " + v);
707
+ }
708
+ return v;
709
+ });
710
+ const initWebWorkerData = {
711
+ $config$: $config$,
712
+ $interfaces$: readImplementations(impls, initialInterfaces),
713
+ $libPath$: new URL(libPath, mainWindow.location) + "",
714
+ $origin$: origin,
715
+ $localStorage$: readStorage("localStorage"),
716
+ $sessionStorage$: readStorage("sessionStorage"),
717
+ };
718
+ addGlobalConstructorUsingPrototype(
719
+ initWebWorkerData.$interfaces$,
720
+ mainWindow,
721
+ "IntersectionObserverEntry"
722
+ );
723
+ return initWebWorkerData;
724
+ };
725
+ const readMainInterfaces = () => {
726
+ const elms = Object.getOwnPropertyNames(mainWindow)
727
+ .map((interfaceName) =>
728
+ ((doc, interfaceName, r, tag) => {
729
+ r = interfaceName.match(/^(HTML|SVG)(.+)Element$/);
730
+ if (r) {
731
+ tag = r[2];
732
+ return "S" == interfaceName[0]
733
+ ? doc.createElementNS(
734
+ "http://www.w3.org/2000/svg",
735
+ svgConstructorTags[tag] ||
736
+ tag.slice(0, 2).toLowerCase() + tag.slice(2)
737
+ )
738
+ : doc.createElement(htmlConstructorTags[tag] || tag);
739
+ }
740
+ })(docImpl, interfaceName)
741
+ )
742
+ .filter((elm) => elm)
743
+ .map((elm) => [elm]);
744
+ return readImplementations(elms, []);
745
+ };
746
+ const cstrs = new Set(["Object"]);
747
+ const readImplementations = (impls, interfaces) => {
748
+ const cstrImpls = impls
749
+ .filter((implData) => implData[0])
750
+ .map((implData) => {
751
+ const impl = implData[0];
752
+ const interfaceType = implData[1];
753
+ const cstrName = getConstructorName(impl);
754
+ const CstrPrototype = mainWindow[cstrName].prototype;
755
+ return [cstrName, CstrPrototype, impl, interfaceType];
756
+ });
757
+ cstrImpls.map(([cstrName, CstrPrototype, impl, intefaceType]) =>
758
+ readOwnImplementation(
759
+ cstrs,
760
+ interfaces,
761
+ cstrName,
762
+ CstrPrototype,
763
+ impl,
764
+ intefaceType
765
+ )
766
+ );
767
+ return interfaces;
768
+ };
769
+ const readImplementation = (cstrName, impl, memberName) => {
770
+ let interfaceMembers = [];
771
+ let interfaceInfo = [cstrName, "Object", interfaceMembers];
772
+ for (memberName in impl) {
773
+ readImplementationMember(interfaceMembers, impl, memberName);
774
+ }
775
+ return interfaceInfo;
776
+ };
777
+ const readOwnImplementation = (
778
+ cstrs,
779
+ interfaces,
780
+ cstrName,
781
+ CstrPrototype,
782
+ impl,
783
+ interfaceType
784
+ ) => {
785
+ if (!cstrs.has(cstrName)) {
786
+ cstrs.add(cstrName);
787
+ const SuperCstr = Object.getPrototypeOf(CstrPrototype);
788
+ const superCstrName = getConstructorName(SuperCstr);
789
+ const interfaceMembers = [];
790
+ const propDescriptors = Object.getOwnPropertyDescriptors(CstrPrototype);
791
+ readOwnImplementation(
792
+ cstrs,
793
+ interfaces,
794
+ superCstrName,
795
+ SuperCstr,
796
+ impl,
797
+ interfaceType
798
+ );
799
+ for (const memberName in propDescriptors) {
800
+ readImplementationMember(interfaceMembers, impl, memberName);
801
+ }
802
+ interfaces.push([
803
+ cstrName,
804
+ superCstrName,
805
+ interfaceMembers,
806
+ interfaceType,
807
+ getNodeName(impl),
808
+ ]);
809
+ }
810
+ };
811
+ const readImplementationMember = (
812
+ interfaceMembers,
813
+ implementation,
814
+ memberName,
815
+ value,
816
+ memberType,
817
+ cstrName
818
+ ) => {
819
+ try {
820
+ if (
821
+ isValidMemberName(memberName) &&
822
+ isNaN(memberName[0]) &&
823
+ "all" !== memberName
824
+ ) {
825
+ value = implementation[memberName];
826
+ memberType = typeof value;
827
+ if ("function" === memberType) {
828
+ (String(value).includes("[native") ||
829
+ Object.getPrototypeOf(implementation)[memberName]) &&
830
+ interfaceMembers.push([memberName, 5]);
831
+ } else if ("object" === memberType && null != value) {
832
+ cstrName = getConstructorName(value);
833
+ "Object" !== cstrName &&
834
+ self[cstrName] &&
835
+ interfaceMembers.push([memberName, value.nodeType || cstrName]);
836
+ } else {
837
+ "symbol" !== memberType &&
838
+ (memberName.toUpperCase() === memberName
839
+ ? interfaceMembers.push([memberName, 6, value])
840
+ : interfaceMembers.push([memberName, 6]));
841
+ }
842
+ }
843
+ } catch (e) {
844
+ console.warn(e);
845
+ }
846
+ };
847
+ const readStorage = (storageName) => {
848
+ let items = [];
849
+ let i = 0;
850
+ let l = len(mainWindow[storageName]);
851
+ let key;
852
+ for (; i < l; i++) {
853
+ key = mainWindow[storageName].key(i);
854
+ items.push([key, mainWindow[storageName].getItem(key)]);
855
+ }
856
+ return items;
857
+ };
858
+ const getGlobalConstructor = (mainWindow, cstrName) =>
859
+ void 0 !== mainWindow[cstrName] ? new mainWindow[cstrName](noop) : 0;
860
+ const addGlobalConstructorUsingPrototype = (
861
+ $interfaces$,
862
+ mainWindow,
863
+ cstrName
864
+ ) => {
865
+ void 0 !== mainWindow[cstrName] &&
866
+ $interfaces$.push([
867
+ cstrName,
868
+ "Object",
869
+ Object.keys(mainWindow[cstrName].prototype).map((propName) => [
870
+ propName,
871
+ 6,
872
+ ]),
873
+ 12,
874
+ ]);
875
+ };
876
+ let worker;
877
+ ((receiveMessage) => {
878
+ const swContainer = window.navigator.serviceWorker;
879
+ return swContainer.getRegistration().then((swRegistration) => {
880
+ swContainer.addEventListener("message", (ev) =>
881
+ receiveMessage(
882
+ ev.data,
883
+ (accessRsp) =>
884
+ swRegistration.active &&
885
+ swRegistration.active.postMessage(accessRsp)
886
+ )
887
+ );
888
+ return (worker, msg) => {
889
+ 0 === msg[0]
890
+ ? worker.postMessage([1, readMainPlatform()])
891
+ : 2 === msg[0]
892
+ ? worker.postMessage([3, readMainInterfaces()])
893
+ : onMessageFromWebWorker(worker, msg);
894
+ };
895
+ });
896
+ })((accessReq, responseCallback) =>
897
+ mainAccessHandler(worker, accessReq).then(responseCallback)
898
+ ).then((onMessageHandler) => {
899
+ if (onMessageHandler) {
900
+ worker = new Worker(libPath + "partytown-ww-sw.js?v=0.7.5", {
901
+ name: "Partytown 🎉",
902
+ });
903
+ worker.onmessage = (ev) => {
904
+ const msg = ev.data;
905
+ 12 === msg[0]
906
+ ? mainAccessHandler(worker, msg[1])
907
+ : onMessageHandler(worker, msg);
908
+ };
909
+ logMain("Created Partytown web worker (0.7.5)");
910
+ worker.onerror = (ev) => console.error("Web Worker Error", ev);
911
+ mainWindow.addEventListener("pt1", (ev) =>
912
+ registerWindow(
913
+ worker,
914
+ getAndSetInstanceId(ev.detail.frameElement),
915
+ ev.detail
916
+ )
917
+ );
918
+ }
919
+ });
920
+ })(window);