@salla.sa/twilight-components 2.13.53 → 2.13.54
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.
- package/dist/cjs/{Helper-134c96cd.js → Helper-11c2f7a7.js} +2 -2
- package/dist/cjs/Helper-11c2f7a7.js.map +1 -0
- package/dist/cjs/{app-globals-8f8d8f50.js → app-globals-db36c588.js} +5 -5
- package/dist/cjs/app-globals-db36c588.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-add-product-button_47.cjs.entry.js +1 -1
- package/dist/cjs/salla-add-product-button_47.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +1 -1
- package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
- package/dist/cjs/salla-orders.cjs.entry.js +1 -1
- package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
- package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews.cjs.entry.js +11 -5
- package/dist/cjs/salla-reviews.cjs.entry.js.map +1 -1
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/collection/Helpers/Helper.js +1 -1
- package/dist/collection/Helpers/Helper.js.map +1 -1
- package/dist/collection/components/salla-reviews/interfaces.js.map +1 -1
- package/dist/collection/components/salla-reviews/salla-reviews.js +97 -14
- package/dist/collection/components/salla-reviews/salla-reviews.js.map +1 -1
- package/dist/components/Helper.js +1 -1
- package/dist/components/Helper.js.map +1 -1
- package/dist/components/index.js +4 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-quick-buy2.js.map +1 -1
- package/dist/components/salla-reviews.js +14 -5
- package/dist/components/salla-reviews.js.map +1 -1
- package/dist/esm/{Helper-6e1f8269.js → Helper-e84a53b2.js} +2 -2
- package/dist/esm/Helper-e84a53b2.js.map +1 -0
- package/dist/esm/{app-globals-c3c69e17.js → app-globals-29abf3e3.js} +5 -5
- package/dist/esm/app-globals-29abf3e3.js.map +1 -0
- package/dist/esm/loader.js +2 -2
- package/dist/esm/salla-add-product-button_47.entry.js +1 -1
- package/dist/esm/salla-add-product-button_47.entry.js.map +1 -1
- package/dist/esm/salla-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-notifications.entry.js +1 -1
- package/dist/esm/salla-orders.entry.js +1 -1
- package/dist/esm/salla-products-list.entry.js +1 -1
- package/dist/esm/salla-products-slider.entry.js +1 -1
- package/dist/esm/salla-reviews.entry.js +11 -5
- package/dist/esm/salla-reviews.entry.js.map +1 -1
- package/dist/esm/twilight.js +2 -2
- package/dist/esm-es5/{Helper-6e1f8269.js → Helper-e84a53b2.js} +2 -2
- package/dist/esm-es5/Helper-e84a53b2.js.map +1 -0
- package/dist/esm-es5/{app-globals-c3c69e17.js → app-globals-29abf3e3.js} +3 -3
- package/dist/esm-es5/app-globals-29abf3e3.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/salla-add-product-button_47.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_47.entry.js.map +1 -1
- package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js +1 -1
- package/dist/esm-es5/salla-notifications.entry.js +1 -1
- package/dist/esm-es5/salla-orders.entry.js +1 -1
- package/dist/esm-es5/salla-products-list.entry.js +1 -1
- package/dist/esm-es5/salla-products-slider.entry.js +1 -1
- package/dist/esm-es5/salla-reviews.entry.js +1 -1
- package/dist/esm-es5/salla-reviews.entry.js.map +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/esm-es5/twilight.js.map +1 -1
- package/dist/twilight/p-06221496.js +25 -0
- package/dist/twilight/p-06221496.js.map +1 -0
- package/dist/twilight/{p-868c776b.system.entry.js → p-1079c870.system.entry.js} +2 -2
- package/dist/twilight/{p-e7d5c03c.entry.js → p-20a47e29.entry.js} +2 -2
- package/dist/twilight/p-2866def3.system.entry.js +5 -0
- package/dist/twilight/p-2866def3.system.entry.js.map +1 -0
- package/dist/twilight/{p-d08d5f11.entry.js → p-508a9dbf.entry.js} +2 -2
- package/dist/twilight/p-546db59b.entry.js +5 -0
- package/dist/twilight/p-546db59b.entry.js.map +1 -0
- package/dist/twilight/{p-b0585915.system.entry.js → p-5be05a17.system.entry.js} +2 -2
- package/dist/twilight/{p-b0585915.system.entry.js.map → p-5be05a17.system.entry.js.map} +1 -1
- package/dist/twilight/{p-f629ebf3.js → p-5de9ca19.js} +2 -2
- package/dist/twilight/p-5de9ca19.js.map +1 -0
- package/dist/twilight/{p-49a5b997.entry.js → p-60d513b0.entry.js} +2 -2
- package/dist/twilight/{p-38e9e758.system.entry.js → p-69539ba8.system.entry.js} +2 -2
- package/dist/twilight/{p-7d3b8a00.entry.js → p-708b7673.entry.js} +2 -2
- package/dist/twilight/p-a7b263b2.system.js +25 -0
- package/dist/twilight/p-a7b263b2.system.js.map +1 -0
- package/dist/twilight/{p-b0c8cac2.entry.js → p-a859e3fc.entry.js} +2 -2
- package/dist/twilight/{p-e3444194.system.js → p-af17aa74.system.js} +2 -2
- package/dist/twilight/p-af17aa74.system.js.map +1 -0
- package/dist/twilight/{p-429870cc.entry.js → p-bc7cb3df.entry.js} +2 -2
- package/dist/twilight/{p-429870cc.entry.js.map → p-bc7cb3df.entry.js.map} +1 -1
- package/dist/twilight/{p-3e19dd7e.system.entry.js → p-dcb268c2.system.entry.js} +2 -2
- package/dist/twilight/{p-5e7ea64b.system.entry.js → p-e56c026b.system.entry.js} +2 -2
- package/dist/twilight/{p-09f168ed.system.entry.js → p-eed0af43.system.entry.js} +2 -2
- package/dist/twilight/{p-e8c4822f.system.entry.js → p-f493ef81.system.entry.js} +2 -2
- package/dist/twilight/p-f51c9acb.system.js +5 -0
- package/dist/twilight/{p-64d97ea7.system.js.map → p-f51c9acb.system.js.map} +1 -1
- package/dist/twilight/{p-9d552606.entry.js → p-f5e0d239.entry.js} +2 -2
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.esm.js.map +1 -1
- package/dist/twilight/twilight.js +1 -1
- package/dist/types/Helpers/Helper.d.ts +1 -1
- package/dist/types/components/salla-reviews/interfaces.d.ts +4 -2
- package/dist/types/components/salla-reviews/salla-reviews.d.ts +32 -6
- package/dist/types/components.d.ts +41 -9
- package/package.json +5 -5
- package/dist/cjs/Helper-134c96cd.js.map +0 -1
- package/dist/cjs/app-globals-8f8d8f50.js.map +0 -1
- package/dist/esm/Helper-6e1f8269.js.map +0 -1
- package/dist/esm/app-globals-c3c69e17.js.map +0 -1
- package/dist/esm-es5/Helper-6e1f8269.js.map +0 -1
- package/dist/esm-es5/app-globals-c3c69e17.js.map +0 -1
- package/dist/twilight/p-43badfba.js +0 -25
- package/dist/twilight/p-43badfba.js.map +0 -1
- package/dist/twilight/p-52f673f6.system.js +0 -25
- package/dist/twilight/p-52f673f6.system.js.map +0 -1
- package/dist/twilight/p-64d97ea7.system.js +0 -5
- package/dist/twilight/p-6b99863e.system.entry.js +0 -5
- package/dist/twilight/p-6b99863e.system.entry.js.map +0 -1
- package/dist/twilight/p-e3444194.system.js.map +0 -1
- package/dist/twilight/p-f209fb12.entry.js +0 -5
- package/dist/twilight/p-f209fb12.entry.js.map +0 -1
- package/dist/twilight/p-f629ebf3.js.map +0 -1
- /package/dist/twilight/{p-868c776b.system.entry.js.map → p-1079c870.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-e7d5c03c.entry.js.map → p-20a47e29.entry.js.map} +0 -0
- /package/dist/twilight/{p-d08d5f11.entry.js.map → p-508a9dbf.entry.js.map} +0 -0
- /package/dist/twilight/{p-49a5b997.entry.js.map → p-60d513b0.entry.js.map} +0 -0
- /package/dist/twilight/{p-38e9e758.system.entry.js.map → p-69539ba8.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-7d3b8a00.entry.js.map → p-708b7673.entry.js.map} +0 -0
- /package/dist/twilight/{p-b0c8cac2.entry.js.map → p-a859e3fc.entry.js.map} +0 -0
- /package/dist/twilight/{p-3e19dd7e.system.entry.js.map → p-dcb268c2.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5e7ea64b.system.entry.js.map → p-e56c026b.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-09f168ed.system.entry.js.map → p-eed0af43.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-e8c4822f.system.entry.js.map → p-f493ef81.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-9d552606.entry.js.map → p-f5e0d239.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["salla","event","setMaxListeners","Helper","prototype","toggleElementClassIf","element","classes1","classes2","callback","Array","isArray","split","isClasses1","_c","classList","remove","apply","_d","add","this","toggleClassIf","selector","_this","document","querySelectorAll","forEach","isValidEmail","email","re","test","String","toLowerCase","filterEmojies","text","characterFilter","replace","debounce","fn","data","_i","arguments","length","debounce_","helpers","innerData","__spreadArray","getProductsSource","source","config","get","getPageTitleForSource","brands","latest","offers","sales","lang","getProductsSourceValue","sourceValue","parsedSource","parsedSourceValue","JSON","parse","error","console","includes","URLSearchParams","window","location","search","extractFiltersFromUrl","searchParams","filters","value","key","matchesNested","match","filterName","nestedKey","matchesSimple","onSallaReadyPromise","Promise","resolve","onReady","fetchProducts","source_value","limit","product","api","fetch","getProductSchemaMarkupScript","scriptElement","createElement","type","jsonData","name","image","_a","url","thumbnail","description","brand","logo","_b","price","stringify","createProductSchema","position","ProductSchema","productID","concat","id","subtitle","priceCurrency","currency","itemCondition","availability","is_available","priceValidUntil","discount_ends","Date","setDate","getDate","toISOString","priceSpecification","regular_price","valueAddedTaxIncluded","is_taxable","seller","rating","stars","aggregateRating","ratingValue","reviewCount","count","item","generateProductSchema","productList","schemaId","getElementById","logger","warn","script","schema","itemListElement","map","indxe","textContent","head","appendChild","formatDateFromString","dateString","numberCb","dateObject","errors","en","ar","isNaN","getTime","daysOfWeek","months","dayOfWeek","getDay","dayOfMonth","month","getMonth","year","getFullYear","copyToClipboard","textToCopy","target","innerText","navigator","clipboard","writeText","then","log","catch","err","animateItems","items","anime","targets","opacity","duration","translateY","delay","_el","i","easing","complete","_anim","createReviewObject","reviewData","author","datePublished","created_at","date","toString","content","reviewRating","bestRating","worstRating","generateReviewSchema","reviews","review","Helper$1"],"sources":["src/Helpers/Helper.ts"],"sourcesContent":["import { ProductDetail, ProductResponse } from \"@salla.sa/twilight/types/api/product\";\nimport { Review } from \"../../src/components/salla-reviews/interfaces\";\nimport { Product as SallaProduct } from \"@salla.sa/twilight/types/common\";\nimport { ListItem, ItemList, Product as SchemaProduct, WithContext } from 'schema-dts';\nimport anime from 'animejs';\n\n//TODO::reduce it to 10\nsalla.event.setMaxListeners(100);\n\nclass Helper {\n private debounce_: any;\n\n toggleElementClassIf(element, classes1, classes2, callback) {\n classes1 = Array.isArray(classes1) ? classes1 : classes1.split(' ');\n classes2 = Array.isArray(classes2) ? classes2 : classes2.split(' ');\n let isClasses1 = callback(element);\n element?.classList.remove(...(isClasses1 ? classes2 : classes1));\n element?.classList.add(...(isClasses1 ? classes1 : classes2));\n return this;\n }\n\n toggleClassIf(selector, classes1, classes2, callback) {\n document.querySelectorAll(selector).forEach(element => this.toggleElementClassIf(element, classes1, classes2, callback));\n return this;\n }\n\n isValidEmail(email) {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n filterEmojies(text) {\n var characterFilter = /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|\\ud83c[\\udd70-\\udd71]|\\ud83c[\\udd7e-\\udd7f]|\\ud83c\\udd8e|\\ud83c[\\udd91-\\udd9a]|\\ud83c[\\udde6-\\uddff]|\\ud83c[\\ude01-\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|\\ud83c[\\ude32-\\ude3a]|\\ud83c[\\ude50-\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff])/g;\n return text.replace(characterFilter, \"\");\n }\n\n debounce(fn, ...data) {\n if (!this.debounce_) {\n this.debounce_ = salla.helpers.debounce((callback, ...innerData) => callback(...innerData), 500);\n }\n //@ts-ignore\n return this.debounce_(fn, ...data);\n }\n\n getProductsSource(source) {\n return {\n 'brands.single': 'brands',\n 'product.index': 'categories',\n 'product.index.latest': 'latest',\n 'product.index.offers': 'offers',\n 'product.index.search': 'search',\n 'customer.wishlist': 'wishlist',\n 'landing-page': 'landing-page',\n 'product.index.tag': 'tags',\n 'product.index.sales': 'sales',\n 'components.most_sales_products': 'sales',//temporary, delete it after two days from now\n }[source || salla.config.get('page.slug')] || source || 'latest';\n }\n\n getPageTitleForSource(source) {\n\n source = {\n 'brands': 'common.titles.brands',\n // 'categories':'',\n 'latest': 'blocks.home.latest_products',\n 'offers': 'common.titles.discounts',\n // 'search':'',\n // 'landing-page':'',\n // 'tags':'',\n 'sales': 'common.titles.most_sales',\n }[source];\n\n return source ? salla.lang.get(source) : '';\n }\n\n getProductsSourceValue(source, sourceValue) {\n const parsedSource = this.getProductsSource(source);\n\n // Validate if the source value is a valid JSON string\n let parsedSourceValue: any = null;\n if (sourceValue) {\n try {\n parsedSourceValue = JSON.parse(sourceValue);\n } catch (error) {\n console.error('Invalid JSON string in sourceValue:', error);\n }\n }\n\n // Handle different source types\n if (!['search', 'json', 'offers', 'latest', 'sales', 'related'].includes(parsedSource)) {\n\n if (Array.isArray(parsedSourceValue) && parsedSourceValue.length) {\n return parsedSourceValue;\n }\n\n\n if (Array.isArray(parsedSourceValue) && !parsedSourceValue.length) {\n return '';\n }\n\n if (typeof parsedSourceValue === 'number') {\n return [parsedSourceValue];\n }\n\n if (!sourceValue && ['categories', 'tags', 'brands'].includes(source)) {\n return [salla.config.get('page.id')];\n }\n }\n\n // Return sourceValue if it exists and is a valid JSON object/array\n if (parsedSourceValue || sourceValue) {\n return parsedSourceValue || sourceValue;\n }\n\n if (parsedSource === 'search') {\n return new URLSearchParams(window.location.search).get('q') || '';\n }\n\n // Return page id as default value\n return salla.config.get('page.id');\n }\n\n extractFiltersFromUrl(searchParams) {\n let filters = {};\n searchParams.forEach((value, key) => {\n // Handle filters[xxx] format\n const matchesNested = key.match(/^filters\\[(.*?)\\](\\[(.*?)\\])?$/u);\n\n if (matchesNested) {\n const filterName = matchesNested[1];\n const nestedKey = matchesNested[3];\n\n if (nestedKey) {\n // Handle nested object\n filters[filterName] = filters[filterName] || {};\n filters[filterName][nestedKey] = value;\n } else {\n // Handle regular key\n filters[filterName] = value;\n }\n } else {\n // Handle simple key-value pairs\n const matchesSimple = key.match(/^(.*?)$/u);\n\n if (matchesSimple) {\n filters[matchesSimple[1]] = value;\n }\n }\n });\n return filters;\n }\n\n /**\n * We needed this function to help us avoid requesting the products list before salla is ready,\n * was causing a strange issues in live for the bad connections ex: not loading the dom, requesting api without storeIdentefire\n */\n onSallaReadyPromise(callback): Promise<any> {\n return new Promise((resolve) => salla.onReady(() => callback(resolve)));\n }\n\n /**\n * \n * let's make sure to send the request only when salla is ready\n * we will return the data and the resolve callback, to give the component the green light (by resolving the Promise in onSallaReadyPromise) to render only when we have the data\n * we will return the data and the resolve callback, to give the component the green light (by resolving the Promise in onSallaReadyPromise) to render only when we have the data\n */\n fetchProducts(source, source_value, limit): Promise<ProductResponse.lists> {\n return this.onSallaReadyPromise((resolve) => resolve(salla.product.api.fetch({ source: source, source_value: source_value, limit: limit })));\n }\n\n getProductSchemaMarkupScript(product: any): HTMLScriptElement {\n const scriptElement = document.createElement('script');\n scriptElement.type = 'application/ld+json';\n // TODO: This json object MIGHT need mode data or properties.\n const jsonData = {\n \"@context\": \"http://schema.org\",\n \"@type\": \"Product\",\n \"name\": product?.name,\n \"image\": product?.image?.url || product?.thumbnail,\n \"description\": product?.description,\n \"brand\": {\n \"@type\": \"Brand\",\n \"logo\": product?.brand?.logo\n },\n \"offers\": {\n \"@type\": \"Offer\",\n \"price\": product?.price\n }\n };\n scriptElement.text = JSON.stringify(jsonData);\n return scriptElement\n }\n\n createProductSchema(product: SallaProduct | ProductDetail, position: number): ListItem {\n let ProductSchema: SchemaProduct = {\n \"productID\": `${product.id}`,\n \"@type\": 'Product',\n \"name\": product.name,\n \"url\": product.url,\n \"image\": product.image.url || (product.image as string),\n \"description\": product.description || product.subtitle || product.name,\n \"offers\": {\n \"@type\": \"Offer\",\n \"url\": product.url,\n \"priceCurrency\": product.currency,\n \"price\": product.price,\n \"itemCondition\": \"NewCondition\",\n \"availability\": product.is_available ? \"InStock\" : \"OutOfStock\",\n //if there is no product.discount_ends, will set it to be valid until the end of this week\n \"priceValidUntil\": product.discount_ends || (new Date(new Date().setDate(new Date().getDate() + 7)).toISOString().split('T')[0]),\n \"priceSpecification\": {\n \"@type\": \"PriceSpecification\",\n \"price\": product.regular_price,\n \"priceCurrency\": product.currency,\n \"valueAddedTaxIncluded\": product.is_taxable,\n },\n \"seller\": {\n \"@type\": \"Organization\",\n \"name\": salla.config.get('store.name'),\n },\n }\n };\n //@ts-ignore\n if (product.rating?.stars) {\n ProductSchema.aggregateRating = {\n \"@type\": \"AggregateRating\",\n //@ts-ignore\n \"ratingValue\": product.rating.stars,\n \"reviewCount\": product.rating.count,\n };\n }\n\n\n return {\n \"@type\": \"ListItem\",\n \"position\": position,\n \"item\": ProductSchema,\n\n };\n }\n \n generateProductSchema(productList: Array<SallaProduct | ProductDetail>) {\n const schemaId = 'salla-product-schema-script';\n if (document.getElementById(schemaId)) {\n salla.logger.warn(`already added schema-script with id (${schemaId})!`)\n return;\n }\n\n const script = document.createElement('script');\n script.type = 'application/ld+json';\n script.id = schemaId;\n\n\n const schema: WithContext<ItemList> = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"ItemList\",\n \"name\": salla.config.get('page.title'),\n \"itemListElement\": productList.map((product, indxe) => this.createProductSchema(product, indxe + 1)),\n };\n\n script.textContent = JSON.stringify(schema);\n document.head.appendChild(script);\n }\n\n /**\n * Format date in the form of `Monday 13 November 2023`\n */\n formatDateFromString(dateString: string, numberCb: Function, lang: string = 'en'): string {\n const dateObject = new Date(dateString);\n\n const errors = {\n en: \"Invalid Date\",\n ar: \"تاريخ غير صالح\"\n }\n\n if (isNaN(dateObject.getTime())) {\n return errors[lang];\n }\n\n const daysOfWeek = {\n en: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n ar: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت']\n };\n const months = {\n en: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n ar: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر']\n };\n\n const dayOfWeek = daysOfWeek[lang][dateObject.getDay()];\n const dayOfMonth = numberCb(dateObject.getDate(), lang === 'en');\n const month = months[lang][dateObject.getMonth()];\n const year = numberCb(dateObject.getFullYear(), lang === 'en');\n\n return `${dayOfWeek} ${dayOfMonth} ${month} ${year}`;\n }\n\n /**\n * Copy text into clipboard.\n * @param event \n */\n copyToClipboard(event) {\n // Get the text content from the clicked div\n var textToCopy = event.target.innerText;\n\n // Use the Clipboard API to copy text to the clipboard\n navigator.clipboard.writeText(textToCopy)\n .then(() => {\n console.log('Text copied to clipboard: ' + textToCopy);\n })\n .catch(err => {\n console.error('Unable to copy text to clipboard', err);\n });\n\n }\n\n animateItems(items: NodeListOf<Element>) {\n if (!items) return;\n anime({\n targets: items,\n opacity: [0, 1],\n duration: 1200,\n translateY: [20, 0],\n delay: function (_el, i) {\n return i * 100;\n },\n easing: 'easeOutExpo',\n complete: function (_anim) {\n items.forEach((item: Element) => {\n item.classList.add('animated');\n })\n }\n\n })\n }\n\n createReviewObject(reviewData: Review) {\n return {\n \"@type\": \"Review\",\n \"author\": reviewData.name,\n \"datePublished\": Date.parse(reviewData.created_at.date).toString(),\n \"description\": reviewData.content,\n \"reviewRating\": {\n \"@type\": \"Rating\",\n \"bestRating\": \"5\",\n \"ratingValue\": \"5\",\n \"worstRating\": \"1\"\n }\n };\n }\n\n generateReviewSchema(reviews: Array<Review>){\n const script = document.createElement('script');\n script.type = 'application/ld+json';\n\n\n const schema = {\n \"@context\": \"http://schema.org/\",\n \"@type\": \"CollectionPage\",\n \"name\": \"Category Name\", // TODO: check for the correct value here\n \"description\": \"Description of the category\", // TODO: here too\n \"review\": reviews.map((review) => this.createReviewObject(review))\n }\n\n script.textContent = JSON.stringify(schema);\n document.head.appendChild(script);\n }\n}\n\nexport default new Helper;\n"],"mappings":"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"}
|