{"version":3,"file":"static/chunks/pages/blog-grid-minimal-763311cb9a9eb6b1.js","mappings":"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","sources":["webpack://_N_E/?713c","webpack://_N_E/./components/Common/Banner.js","webpack://_N_E/./components/Common/Pagination.js","webpack://_N_E/./pages/Head.js","webpack://_N_E/./pages/backToTop.js","webpack://_N_E/./components/Blogs/BlogGridMinimal.js","webpack://_N_E/./pages/blog-grid-minimal/index.js","webpack://_N_E/./constants/Constants.js","webpack://_N_E/./utils/Utils.js","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/blog-grid-minimal\",\n function () {\n return require(\"private-next-pages/blog-grid-minimal/index.js\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/blog-grid-minimal\"])\n });\n }\n ","import Link from \"next/link\";\r\nimport React from \"react\";\r\n\r\nconst Banner = ({ text, col, getBlog }) => {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n Home\r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • {text}
  • \r\n
\r\n\r\n
\r\n

{text}

\r\n \r\n
🎉
{\" \"}\r\n {getBlog ? `${getBlog.length} Articles` : \"50 Articles\"}\r\n \r\n
\r\n\r\n

\r\n Blog that help beginner designers become true unicorns.{\" \"}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Banner;\r\n","import Link from \"next/link\";\n\nconst Pagination = ({ totalPages, pageNumber, handleClick }) => {\n const pages = [...Array(totalPages).keys()].map((num) => num + 1);\n\n const handlePreviousClick = () => {\n handleClick(pageNumber - 1);\n };\n\n const handleNextClick = () => {\n handleClick(pageNumber + 1);\n };\n\n return (\n \n );\n};\n\nexport default Pagination;\n","import Head from \"next/head\";\r\n\r\nconst PageHead = ({ title }) => {\r\n return (\r\n <>\r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PageHead;\r\n","import React, { useEffect, useRef } from \"react\";\n\nconst BackToTop = () => {\n const progressRef = useRef(null);\n\n useEffect(() => {\n const progressPath = progressRef.current?.querySelector(\"path\");\n if (!progressPath) return;\n\n const pathLength = progressPath.getTotalLength();\n progressPath.style.transition = \"none\";\n progressPath.style.strokeDasharray = `${pathLength} ${pathLength}`;\n progressPath.style.strokeDashoffset = pathLength;\n progressPath.getBoundingClientRect();\n progressPath.style.transition = \"stroke-dashoffset 10ms linear\";\n\n const updateProgress = () => {\n const scroll = window.pageYOffset || document.documentElement.scrollTop;\n const height =\n document.documentElement.scrollHeight -\n document.documentElement.clientHeight;\n const progress = pathLength - (scroll * pathLength) / height;\n progressPath.style.strokeDashoffset = progress;\n\n const rbtProgressParent = progressRef.current;\n if (rbtProgressParent) {\n if (scroll > 50) {\n rbtProgressParent.classList.add(\"rbt-backto-top-active\");\n } else {\n rbtProgressParent.classList.remove(\"rbt-backto-top-active\");\n }\n }\n };\n\n updateProgress();\n window.addEventListener(\"scroll\", updateProgress);\n\n progressRef.current?.addEventListener(\"click\", (event) => {\n event.preventDefault();\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n });\n\n return () => {\n window.removeEventListener(\"scroll\", updateProgress);\n };\n }, []);\n\n return (\n
\n \n \n \n
\n );\n};\n\nexport default BackToTop;\n","import Link from \"next/link\";\nimport { useEffect, useState } from \"react\";\n\nimport Pagination from \"../Common/Pagination\";\nimport { toReadableDate } from \"@/utils/Utils\";\n\nconst BlogGridMinimal = ({ isPagination, fetchedBlogs = [], start, end }) => {\n const [blogs, setBlogs] = useState(fetchedBlogs);\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n\n const blogsPerPage = 10;\n const startIndex = (page - 1) * blogsPerPage;\n const endIndex = startIndex + blogsPerPage;\n\n const handleClick = (num) => {\n setPage(num);\n window.scrollTo({\n top: 0,\n behavior: \"smooth\",\n });\n };\n\n useEffect(() => {\n setTotalPages(Math.ceil(fetchedBlogs.length / blogsPerPage));\n setBlogs(fetchedBlogs);\n }, [fetchedBlogs]);\n\n\n return (\n <>\n
\n {blogs.slice(start, end).map((data, index) => (\n \n
\n
\n
    \n
  • \n \n {toReadableDate(data?.dateCreated)}\n
  • \n
\n

\n {data.title}\n

\n
\n \n Learn More\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n ))}\n \n\n {isPagination ? (\n
\n
\n \n
\n
\n ) : (\n \"\"\n )}\n \n );\n};\n\nexport default BlogGridMinimal;\n","import { useEffect, useState } from \"react\";\r\nimport { Provider } from \"react-redux\";\r\nimport sal from \"sal.js\";\r\n\r\n\r\nimport PageHead from \"../Head\";\r\nimport Store from \"@/redux/store\";\r\nimport Context from \"@/context/Context\";\r\nimport MobileMenu from \"@/components/Header/MobileMenu\";\r\nimport HeaderStyleTen from \"@/components/Header/HeaderStyle-Ten\";\r\nimport Cart from \"@/components/Header/Offcanvas/Cart\";\r\nimport Banner from \"@/components/Common/Banner\";\r\nimport BackToTop from \"../backToTop\";\r\nimport Separator from \"@/components/Common/Separator\";\r\nimport FooterOne from \"@/components/Footer/Footer-One\";\r\nimport BlogGridMinimal from \"@/components/Blogs/BlogGridMinimal\";\r\nimport { BaseApiService } from \"@/utils/BaseApiService\";\r\n\r\nconst BlogGridMinimalLayout = () => {\r\n const [blogs, setBlogs] = useState([]);\r\n\r\n useEffect(() => {\r\n sal({\r\n threshold: 0.01,\r\n once: true,\r\n });\r\n }, []);\r\n\r\n const fetchArticles = async () => {\r\n let searchParameters = { searchTerm: \"\", offset: 0, limit: 0, type: 'RESEARCH' };\r\n try {\r\n const response = await new BaseApiService(\"/articles\").getRequestWithJsonResponse(\r\n searchParameters\r\n );\r\n console.log(\"Articles Response:\", response);\r\n if (response && response.records) {\r\n setBlogs(response.records);\r\n console.log(\"Articles set:\", response.records); // Log the state update\r\n } else {\r\n console.error(\"Unexpected response structure:\", response);\r\n }\r\n } catch (error) {\r\n console.error(\"fetchEvents:fetchDataFromServer>>>>\", error);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchArticles();\r\n }, [setBlogs]);\r\n\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default BlogGridMinimalLayout;\r\n","export const STORAGE_URL = \"https://storage.bunnycdn.com/materialdesignnative\";\nexport const ACCESS_KEY = \"ba8dd74c-5844-4d83-8523b4a5f50d-a128-4190\";\nexport const MAXIMUM_RECORDS_PER_PAGE = 50;\n\nexport const EmailRegex = \"\";\nexport const SupportedTerritories = \"\";\n\nexport const LOCALITY_TYPES = [\n {\n id: 0,\n name: \"International\",\n },\n {\n id: 1,\n name: \"Local\",\n },\n];\n\nexport const COMPLEXITY_TYPES = [\n {\n id: 0,\n name: \"Starter\",\n },\n {\n id: 1,\n name: \"Intemediate\",\n },\n {\n id: 2,\n name: \"Advanced\",\n },\n];\n\nexport const TASK_VERIFICATION_TYPES = [\n {\n id: 0,\n name: \"Manual\",\n },\n {\n id: 1,\n name: \"Automatic\",\n },\n];","import { DateTime } from \"luxon\";\nimport { EmailRegex, SupportedTerritories } from \"../constants/Constants\";\nimport { UserSessionUtils } from \"./UserSessionUtils\";\n//import { isValidPhoneNumber, parsePhoneNumber } from \"libphonenumber-js\";\nimport { FAILED_TO_LOAD_MESSAGE, INTERNAL_SERVER_ERROR } from \"../constants/ErrorMessages\";\n//import { Badge } from \"react-bootstrap\";\n\n/**\n * This formats a date from the Calendar object into the yyyy-mm-dd format\n * @param {*} date\n * @returns\n */\nexport function formatJSDate(date, showTime = false) {\n if (date == null) return null;\n if (!showTime) {\n var d = new Date(date),\n month = \"\" + (d.getMonth() + 1),\n day = \"\" + d.getDate(),\n year = d.getFullYear();\n\n if (month.length < 2) month = \"0\" + month;\n if (day.length < 2) day = \"0\" + day;\n\n return [year, month, day].join(\"-\");\n } else {\n return new Date(date).toISOString();\n }\n}\n\nexport function formatToStandardDate(date) {\n date = new Date(date);\n\n const day = date.toLocaleString(\"default\", { day: \"2-digit\" });\n const month = date.toLocaleString(\"default\", { month: \"short\" });\n const year = date.toLocaleString(\"default\", { year: \"numeric\" });\n return day + \"/\" + month + \"/\" + year;\n}\n\n/**\n * This converts a number to the en-us locale to put commas in the string\n *\n * @param {Number} amount\n * @returns\n */\nexport function formatAmountWithCommas(amount, currency) {\n if (amount) {\n var formattedAmount = amount.toLocaleString();\n return currency == null ? formattedAmount : currency + \" \" + formattedAmount;\n } else return \"0\";\n}\n\n/**\n * This converts a number to the en-us locale to put commas in the number\n *\n * @param {Number} number\n * @returns {String}\n */\nexport function formatNumberWithCommas(number, defaultNumber = \"-\") {\n if (number) {\n return number.toLocaleString();\n } else {\n return defaultNumber;\n }\n}\n\n/**\n * This converts a string of a date time instance to a date time string using the\n * luxon DateTime library\n *\n * @param {string} date_value\n * @returns {string}\n */\nexport function toReadableDate(date_value, date_only = false) {\n if (date_value == null) {\n return \"-\";\n } else if (date_value && date_only) {\n return DateTime.fromISO(date_value).toLocaleString(DateTime.DATE_MED_WITH_WEEKDAY);\n } else if (date_value && !date_only) {\n return DateTime.fromISO(date_value).toLocaleString(DateTime.DATETIME_MED_WITH_WEEKDAY);\n }\n}\n\nexport function convertEpochToReadableDateTime(epoch_time) {\n return new Date(epoch_time * 1000);\n}\n\n/**\n * This returns the current date time into an ISO string\n */\nexport function getCurrentDateTimeISOFormat() {\n return DateTime.now().toISO();\n}\n\n/**\n * This returns the first date of the current month\n */\nexport function getFirstDateOfMonth() {\n return DateTime.local().startOf(\"month\").toISODate();\n}\n\n/**\n * This returns the current date into an ISO string\n */\nexport function getCurrentDateISOFormat() {\n return DateTime.now().toISODate();\n}\n\nexport function getDateFromString(dateString) {\n return DateTime.fromISO(dateString);\n}\n\n/**\n * This method is used to get a date object from all passed date string.\n *\n * @param dateString\n * @returns\n */\nexport function getDateWithAnyString(dateString) {\n console.log(dateString);\n if (dateString == null) return null;\n console.log(dateString);\n return new Date(dateString);\n}\n\n/**\n * This gets the date before by subtracting the number of days from the current date\n * @param numberOfDays\n * @returns\n */\nexport function getDateBeforeByDays(numberOfDays) {\n const currentDate = new Date();\n return new Date(\n currentDate.getFullYear(),\n currentDate.getMonth(),\n currentDate.getDate() - numberOfDays\n );\n}\n\n/**\n * Check if the dictionary is empty\n * @param obj\n * @returns\n */\nexport function isDictEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function replaceWithUnderscore(value) {\n return value.replace(/\\s+/g, \"_\").toLowerCase();\n}\n\n/**\n * This converts a boolean to a Yes or No string\n *\n * @param {Boolean} field\n * @returns\n */\nexport function formatBooleanFields(field) {\n if (field === null) return \"-\";\n else if (field === true) return \"Yes\";\n else if (field === false) return \"No\";\n}\n\nexport function sanitizeValue(recordValue) {\n return recordValue === null || recordValue === undefined ? \"-\" : recordValue;\n}\n\n/**\n * Generate random Id to be used as a device Id.\n *\n * @param length\n * @returns\n */\nexport function generateId(length) {\n var result = \"\";\n var characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\n/**\n * This formats a string to replace string contents with the arguments index e.g.\n * formatString(\"{0} is {1} and {2}\", \"This\", \"Great\", \"Wonderful\") would return\n * \"This is Great and Wonderful\".\n */\nexport function formatString(str, ...replacements) {\n for (let index = 0; index < replacements.length; index++) {\n str = str.replace(`{${index}}`, replacements[index]);\n }\n return str;\n}\n\n/**\n * This splits the supplied string by commas and returns a valid string\n * @param {string} commaSeparatedString\n * @returns {Array} an array of strings\n */\nexport function splitCommaSeparatedString(commaSeparatedString) {\n if (commaSeparatedString !== null) {\n return commaSeparatedString.split(\",\").map((item) => {\n return item.trim();\n });\n }\n return [];\n}\n\n/**\n * This validates a string using the libphonenumber js lib through the supported territories\n *\n * @param {string} phoneNumber\n * @returns\n */\nexport function validatePhoneNumber(phoneNumber) {\n var result = false;\n SupportedTerritories.forEach((territory) => {\n if (isValidPhoneNumber(phoneNumber, territory.countryIsoCode)) {\n result = true;\n }\n });\n return result;\n}\n\n/**\n * This adds a plus character to a phone number string after checking if the first character is a +\n *\n * @param {string} phoneNumber\n */\nexport function addPlusCharacterToPhoneNumber(phoneNumber) {\n if (phoneNumber.charAt(0) !== \"+\") {\n return \"+\" + phoneNumber;\n }\n return phoneNumber;\n}\n\n/**\n * This validates a string using the libphonenumber js lib to make sure it is in an international format\n *\n * @param {string} phoneNumber\n */\nexport function validateInternationalPhoneNumber(phoneNumber) {\n var result = false;\n try {\n var parsedPhoneNumber = parsePhoneNumber(addPlusCharacterToPhoneNumber(phoneNumber));\n if (\n parsedPhoneNumber != null &&\n SupportedTerritories.filter((e) => e.countryIsoCode === parsedPhoneNumber.country).length >\n 0 &&\n parsedPhoneNumber.isValid()\n ) {\n result = true;\n }\n } catch (error) {\n result = false;\n }\n return result;\n}\n\n/**\n * This validates an email string using a regular expression\n *\n * @param {string} email\n * @returns\n */\nexport function validateEmail(email) {\n return email.match(EmailRegex);\n}\n\n/**\n * This returns the value from a key value list of dictionaries\n * @param arr\n * @param key\n * @returns\n */\nexport function getArrayKeyValue(arr, key) {\n let value = null;\n\n for (const element of arr) {\n if (element?.key === key) {\n value = element?.value;\n break;\n }\n }\n\n return value;\n}\n\n/**\n * This checks whether a user has a specific permission\n * @param permission\n * @returns boolean\n */\nexport function userHasPermission(permissionName) {\n let userDetails = UserSessionUtils.getUserDetails();\n if (userDetails?.isASuperAdmin) {\n return true;\n }\n return userDetails?.permissionLists?.some(\n (userPermission) => userPermission.permissionName === permissionName\n );\n}\n\n/**\n * This checks whether a user has a specific permission using the permission Id. This is better since it is an enum\n * value in the back office. Use a combination of permission Id and Module\n * @param permission\n * @returns boolean\n */\nexport function userHasPermissionId(module, permissionId) {\n let userDetails = UserSessionUtils.getUserDetails();\n if (userDetails?.isASuperAdmin) {\n return true;\n }\n return userDetails?.permissionLists?.some(\n (userPermission) =>\n userPermission.module === module && userPermission.permissionId === permissionId\n );\n}\n\n/**\n * This checks whether a user has a list of permissions by cross referencing the module id and permission id.\n * It uses the permission id and module id because they are enum values in the back office with least likely\n * chance to change.\n * @param module\n * @param permissions\n * @returns\n */\nexport function userHasModulePermissions(module, permissions) {\n let userDetails = UserSessionUtils.getUserDetails();\n if (userDetails?.isASuperAdmin) {\n return true;\n }\n return userPermissionsContains(userDetails?.permissionLists, module, permissions);\n}\n\nexport function userPermissionsContains(userPermissionsList, module, permissionsArray) {\n return userPermissionsList?.some(\n (userPermission) =>\n userPermission.module === module && permissionsArray.includes(userPermission.permissionId)\n );\n}\n\nexport function arrayContains(arrayObject, value) {\n return arrayObject?.some((object) => value === object);\n}\n\nexport function getGoogleMapsURL(latitude, longitude) {\n return `https://www.google.com/maps/search/?api=1&query=${latitude},${longitude}`;\n}\n\n/**\n * This gets the default year range for the date picker to display when selecting a date in the past.\n * @returns\n */\nexport function getDefaultYearRange() {\n return `1900:${new Date().getFullYear() + 1}`;\n}\n\n/**\n * This gets the year range for a datepicker when selecting a date in the past and future\n * @param numberOfYearsBefore\n * @param numberOfYearsAfter\n * @returns\n */\nexport function getYearRange(numberOfYearsBefore, numberOfYearsAfter) {\n return `${new Date().getFullYear() - numberOfYearsBefore}:${\n new Date().getFullYear() + numberOfYearsAfter\n }`;\n}\n\n/**\n * This converts a string to all lower cases using the typescript fn of toLowerCase\n * @param stringToConvert\n * @returns\n */\nexport function convertToLowerCase(stringToConvert) {\n try {\n return stringToConvert?.toLowerCase();\n } catch (error) {\n return stringToConvert;\n }\n}\n\n/**\n * This templates returns formated text hyperlinked to the google maps page with the supplied coordinates\n * @param data :{ latitude; longitude }\n * @returns\n */\nexport const googleMapsLinkTemplate = (data) => {\n if (\n data?.latitude !== null &&\n data?.latitude !== undefined &&\n data?.longitude !== null &&\n data?.longitude !== undefined\n ) {\n return (\n {`${data?.latitude}, ${data?.longitude}`}\n );\n }\n};\n\n/**\n * Use this function to replace the default internal server error message with a\n * specific message of the object that failed to load\n * @param error\n * @param objectName\n * @returns\n */\nexport const sanitizeErrorMessage = (error, objectName) => {\n return error.message === INTERNAL_SERVER_ERROR\n ? formatString(FAILED_TO_LOAD_MESSAGE, objectName)\n : error.message;\n};\n\n/**\n * Truncates a string based on the max string size supplied\n * @param str\n * @param maxSize\n * @returns\n */\nexport const truncate = (str, maxSize) => {\n if (str === null || str === undefined) {\n return \"\";\n }\n return str.length > maxSize ? str.substring(0, maxSize) + \"...\" : str;\n};\n\n/**\n * Gives the status string custom styles\n * @param rowData\n * @returns\n */\nexport const statusBodyTemplate = (status) => {\n const bgName = \"secondary\";\n const knownStyle = toStyleClassName(status);\n return (\n \n {status}\n \n );\n};\n\nexport const renderPlainHtml = (content) => {\n return
;\n};\n/**\n * Replace underscore with space and capitalize each word.\n *\n * @param value\n * @returns\n */\nexport const replaceUnderscoreWithSpace = (value) => {\n if (value == null) return null;\n return value\n .toLowerCase()\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n};\n\n/**\n * To perform the binary-to-Base64 conversion of a file:\n * @param buffer\n * @returns\n */\nexport function arrayBufferToBase64(buffer) {\n var binary = \"\";\n var bytes = new Uint8Array(buffer);\n var len = bytes.byteLength;\n for (var i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\n/**\n * This converts a number string to an integer using parseInt. If the nu\n * @param numberString\n * @returns\n */\nexport function convertStringToNumber(numberString) {\n if (numberString !== null) return parseInt(numberString);\n return numberString;\n}\n/**\n * Removes white spaces from a string\n * @param anyString\n * @returns\n */\nexport function removeWhiteSpaces(anyString) {\n if (isEmpty(anyString)) {\n return null;\n }\n return anyString.replace(/\\s/g, \"\").toLocaleLowerCase();\n}\n\n/**\n * Cleans a string into the css style class name format\n * @param anyString\n * @returns\n */\nexport function toStyleClassName(anyString) {\n if (isEmpty(anyString)) {\n return null;\n }\n return removeWhiteSpaces(anyString)?.toLocaleLowerCase();\n}\n\nexport function genericDateBodyTemplate(displayDate) {\n return

{toReadableDate(displayDate, true)}

;\n}\n\nexport function genericAmountBodyTemplate(displayAmount) {\n return formatAmountWithCommas(displayAmount, null);\n}\n\n/**\n *\n * @param anyValue Returns true if a given object is null or undefined\n * @returns\n */\nexport function isEmpty(anyValue) {\n if (anyValue == undefined || anyValue == null || anyValue == \"null\") {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n *\n * @param {*} anyValue\n * @returns\n */\nexport function isNotEmpty(anyValue) {\n return !isEmpty(anyValue);\n}\n\n/**\n * Converts a JSON object into a form data object\n * @param jsonData\n * @returns FormData object\n */\nexport function jsonToFormData(jsonData) {\n let accountProfileFormData = new FormData();\n for (var itemKey in jsonData) {\n if (jsonData[itemKey] !== undefined && jsonData[itemKey] !== null) {\n accountProfileFormData.append(itemKey, jsonData[itemKey]);\n }\n }\n return accountProfileFormData;\n}\n\nexport function sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"],"names":["window","__NEXT_P","push","__webpack_require__","__webpack_exports__","Z","text","col","getBlog","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Fragment","jsxs","div","className","ul","li","Link","href","i","h1","concat","length","p","totalPages","pageNumber","handleClick","pages","Array","keys","map","num","handlePreviousClick","handleNextClick","nav","aria-label","onClick","title","Head","meta","name","content","link","rel","progressRef","useRef","useEffect","progressPath","current","querySelector","pathLength","getTotalLength","style","transition","strokeDasharray","strokeDashoffset","getBoundingClientRect","updateProgress","scroll","pageYOffset","document","documentElement","scrollTop","progress","scrollHeight","clientHeight","rbtProgressParent","classList","add","remove","addEventListener","event","preventDefault","scrollTo","top","behavior","removeEventListener","ref","svg","width","height","viewBox","path","d","Blogs_BlogGridMinimal","isPagination","fetchedBlogs","start","end","blogs","setBlogs","useState","page","setPage","setTotalPages","Math","ceil","jsx_runtime","slice","data","index","span","toReadableDate","dateCreated","h4","id","xmlns","g","stroke","fill","fillRule","strokeLinecap","Pagination","blog_grid_minimal","sal","threshold","once","fetchArticles","response","BaseApiService","getRequestWithJsonResponse","searchTerm","offset","limit","type","console","log","records","error","PageHead","Provider","store","Store","Context","MobileMenu","HeaderStyleTen","headerSticky","headerType","Cart","Banner","BlogGridMinimal","BackToTop","Separator","FooterOne","bgColor","date_value","date_only","DateTime","fromISO","toLocaleString","DATE_MED_WITH_WEEKDAY","DATETIME_MED_WITH_WEEKDAY","isNotEmpty","anyValue","undefined"],"sourceRoot":""}