1 |
- {"version":3,"file":"25869.js","mappings":";;;;;;;;;;;;;;;;;;AAAA;AAA0B;AAES;AAGa;AAUhD,MAAMG,cAAc,GAAoB,CAACC,KAAK,GAAK;IACjD,MAAM,EAAEC,GAAG,GAAEC,KAAK,GAAEC,QAAQ,GAAEC,WAAW,GAAEC,UAAU,GAAEC,SAAS,GAAEC,WAAW,GAAE,GAAGC,IAAI,EAAE,GAAGR,KAAK;IAChG,MAAMS,eAAe,GAAG;QACtB,GAAIH,SAAS,IAAI;YAAEA,SAAS;SAAE;QAC9B,GAAIL,GAAG,IAAI;YAAEA,GAAG;SAAE;QAClB,GAAIC,KAAK,IAAI;YACXQ,MAAM,EAAE;gBAAC;oBAAET,GAAG,EAAEC,KAAK;oBAAES,KAAK,EAAEN,UAAU;oBAAEO,MAAM,EAAER,WAAW;oBAAES,GAAG,EAAEV,QAAQ;iBAAE;aAAC;SAChF;KACF;IACD,MAAMW,MAAM,GAAG;QACb,GAAGN,IAAI;QACP,GAAID,WAAW,IAAI;YAAEA,WAAW,EAAET,uEAAc,CAACS,WAAW,EAAE,GAAG,CAAC;SAAE;KACrE;IACD,qBAAO,mDAACV,6CAAO;QAAE,GAAGiB,MAAM;QAAER,SAAS,EAAEG,eAAe;MAAI,CAAC;AAC7D,CAAC;AAED,iEAAeV,cAAc,EAAC;;;;;;;;;;;;;AC/B9B;;;;;;;;CAQC,GACM,MAAMD,cAAc,GAAG,CAACiB,SAAiB,EAAEC,MAAc,EAAEC,MAAM,GAAG,KAAK,GAAa;IAC3F,MAAMC,UAAU,GAAGH,SAAS,CAACI,KAAK,CAAC,EAAE,EAAEH,MAAM,CAAC;IAC9C,IAAII,aAAa,GAAG,EAAE;IACtB,IAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,UAAU,CAACF,MAAM,EAAEK,KAAK,IAAI,CAAC,CAAE;QACzD,MAAMC,SAAS,GAAGJ,UAAU,CAACG,KAAK,CAAC;QACnC,IAAID,aAAa,CAACJ,MAAM,KAAKA,MAAM,GAAG,CAAC,EAAE;YACvCI,aAAa,GAAG,CAAC,EAAEA,aAAa,CAAC,EAAEE,SAAS,CAAC,EAAEL,MAAM,CAAC,CAAC,CAAC;YACxD,MAAM;QACR,CAAC;QACDG,aAAa,GAAG,CAAC,EAAEA,aAAa,CAAC,EAAEE,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAOF,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF;;;;;CAKC,GACM,MAAMG,aAAa,GAAG,CAACR,SAAiB,GAAaA,SAAS,CAACS,OAAO,kBAAkB,EAAE,CAAC,CAAC;AAEnG;;;;;;CAMC,GACM,MAAMC,mCAAmC,GAAG,CAACC,qBAA6B,GAAa;IAC5F,IAAI,CAACA,qBAAqB,EAAE;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAMC,MAAM,GAAGD,qBAAqB,CAACP,KAAK,CAAC,GAAG,CAAC;IAC/C,mGAAmG;IACnG,IAAIQ,MAAM,CAACX,MAAM,KAAK,CAAC,EAAE;QACvB,OAAOW,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAOA,MAAM,CAACA,MAAM,CAACX,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC","sources":["webpack://quran.com/./src/components/NextSeoWrapper.tsx","webpack://quran.com/./src/utils/string.ts"],"sourcesContent":["import React from 'react';\n\nimport { NextSeo } from 'next-seo';\n\nimport { SEOProps } from '@/utils/seo';\nimport { truncateString } from '@/utils/string';\n\ninterface Props extends SEOProps {\n url?: string;\n image?: string;\n imageAlt?: string;\n imageWidth?: number;\n imageHeight?: number;\n}\n\nconst NextSeoWrapper: React.FC<Props> = (props) => {\n const { url, image, imageAlt, imageHeight, imageWidth, openGraph, description, ...rest } = props;\n const openGraphParams = {\n ...(openGraph && { openGraph }),\n ...(url && { url }),\n ...(image && {\n images: [{ url: image, width: imageWidth, height: imageHeight, alt: imageAlt }],\n }),\n };\n const params = {\n ...rest,\n ...(description && { description: truncateString(description, 150) }),\n };\n return <NextSeo {...params} openGraph={openGraphParams} />;\n};\n\nexport default NextSeoWrapper;\n","/**\n * Shorten a text by setting the maximum number of characters\n * by the value of the parameter and adding \"...\" at the end.\n *\n * @param {string} rawString\n * @param {number} length\n * @param {string} suffix\n * @returns {string}\n */\nexport const truncateString = (rawString: string, length: number, suffix = '...'): string => {\n const characters = rawString.split('', length);\n let shortenedText = '';\n for (let index = 0; index < characters.length; index += 1) {\n const character = characters[index];\n if (shortenedText.length === length - 1) {\n shortenedText = `${shortenedText}${character}${suffix}`;\n break;\n }\n shortenedText = `${shortenedText}${character}`;\n }\n return shortenedText;\n};\n\n/**\n * Strip HTML tags from a string.\n *\n * @param {string} rawString\n * @returns {string}\n */\nexport const stripHTMLTags = (rawString: string): string => rawString.replace(/(<([^>]+)>)/gi, '');\n\n/**\n * Convert a slugified collection id to collection id only after\n * removing the slug.\n *\n * @param {string} slugifiedCollectionId\n * @returns {string}\n */\nexport const slugifiedCollectionIdToCollectionId = (slugifiedCollectionId: string): string => {\n if (!slugifiedCollectionId) {\n return '';\n }\n const splits = slugifiedCollectionId.split('-');\n // if there is no slug in the url (collections with a name that cannot be slugified e.g. emoticons)\n if (splits.length === 1) {\n return splits[0];\n }\n return splits[splits.length - 1];\n};\n"],"names":["React","NextSeo","truncateString","NextSeoWrapper","props","url","image","imageAlt","imageHeight","imageWidth","openGraph","description","rest","openGraphParams","images","width","height","alt","params","rawString","length","suffix","characters","split","shortenedText","index","character","stripHTMLTags","replace","slugifiedCollectionIdToCollectionId","slugifiedCollectionId","splits"],"sourceRoot":""}
|