{ "version": 3, "sources": ["../../../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js", "../../../../../node_modules/date-fns/is_date/index.js", "../../../../../node_modules/date-fns/parse/index.js", "../../../../../node_modules/date-fns/difference_in_milliseconds/index.js", "../../../../../node_modules/date-fns/difference_in_hours/index.js", "../../../../../node_modules/date-fns/difference_in_minutes/index.js", "../../src/modern/models/user.js", "../../src/modern/utils/text.js", "../../src/modern/models/profile.js", "../../src/modern/utils/prop-types.ts", "../../src/modern/models/projects.js", "../../src/modern/components/InteractiveCountdown/InteractiveCountdown.js", "../../src/modern/models/model.js"], "sourcesContent": ["var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nmodule.exports = function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n", "/**\n * @category Common Helpers\n * @summary Is the given argument an instance of Date?\n *\n * @description\n * Is the given argument an instance of Date?\n *\n * @param {*} argument - the argument to check\n * @returns {Boolean} the given argument is an instance of Date\n *\n * @example\n * // Is 'mayonnaise' a Date?\n * var result = isDate('mayonnaise')\n * //=> false\n */\nfunction isDate (argument) {\n return argument instanceof Date\n}\n\nmodule.exports = isDate\n", "var getTimezoneOffsetInMilliseconds = require('../_lib/getTimezoneOffsetInMilliseconds/index.js')\nvar isDate = require('../is_date/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar parseTokenDateTimeDelimeter = /[T ]/\nvar parseTokenPlainTime = /:/\n\n// year tokens\nvar parseTokenYY = /^(\\d{2})$/\nvar parseTokensYYY = [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n]\n\nvar parseTokenYYYY = /^(\\d{4})/\nvar parseTokensYYYYY = [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n]\n\n// date tokens\nvar parseTokenMM = /^-(\\d{2})$/\nvar parseTokenDDD = /^-?(\\d{3})$/\nvar parseTokenMMDD = /^-?(\\d{2})-?(\\d{2})$/\nvar parseTokenWww = /^-?W(\\d{2})$/\nvar parseTokenWwwD = /^-?W(\\d{2})-?(\\d{1})$/\n\n// time tokens\nvar parseTokenHH = /^(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMM = /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMMSS = /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\n\n// timezone tokens\nvar parseTokenTimezone = /([Z+-].*)$/\nvar parseTokenTimezoneZ = /^(Z)$/\nvar parseTokenTimezoneHH = /^([+-])(\\d{2})$/\nvar parseTokenTimezoneHHMM = /^([+-])(\\d{2}):?(\\d{2})$/\n\n/**\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Object} [options] - the object with options\n * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parse('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Parse string '+02014101',\n * // if the additional number of digits in the extended year format is 1:\n * var result = parse('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parse (argument, dirtyOptions) {\n if (isDate(argument)) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument !== 'string') {\n return new Date(argument)\n }\n\n var options = dirtyOptions || {}\n var additionalDigits = options.additionalDigits\n if (additionalDigits == null) {\n additionalDigits = DEFAULT_ADDITIONAL_DIGITS\n } else {\n additionalDigits = Number(additionalDigits)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone) * MILLISECONDS_IN_MINUTE\n } else {\n var fullTime = timestamp + time\n var fullTimeDate = new Date(fullTime)\n\n offset = getTimezoneOffsetInMilliseconds(fullTimeDate)\n\n // Adjust time when it's coming from DST\n var fullTimeDateNextDay = new Date(fullTime)\n fullTimeDateNextDay.setDate(fullTimeDate.getDate() + 1)\n var offsetDiff =\n getTimezoneOffsetInMilliseconds(fullTimeDateNextDay) -\n getTimezoneOffsetInMilliseconds(fullTimeDate)\n if (offsetDiff > 0) {\n offset += offsetDiff\n }\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(parseTokenDateTimeDelimeter)\n var timeString\n\n if (parseTokenPlainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n }\n\n if (timeString) {\n var token = parseTokenTimezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var parseTokenYYY = parseTokensYYY[additionalDigits]\n var parseTokenYYYYY = parseTokensYYYYY[additionalDigits]\n\n var token\n\n // YYYY or \u00B1YYYYY\n token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or \u00B1YYY\n token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = parseTokenMM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = parseTokenDDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = parseTokenMMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = parseTokenWww.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = parseTokenWwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = parseTokenHH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = parseTokenHHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = parseTokenHHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = parseTokenTimezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n // \u00B1hh\n token = parseTokenTimezoneHH.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // \u00B1hh:mm or \u00B1hhmm\n token = parseTokenTimezoneHHMM.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\nmodule.exports = parse\n", "var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nfunction differenceInMilliseconds (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getTime() - dateRight.getTime()\n}\n\nmodule.exports = differenceInMilliseconds\n", "var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nfunction differenceInHours (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInHours\n", "var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nfunction differenceInMinutes (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInMinutes\n", "import { capitalize } from '$utils/text'\n\nimport { profile as profileModel } from './profile.js'\n\nexport const getUser = () => {\n return window.UFE.user\n}\n\nexport const getFullName = (user = {}, short = false) => {\n if (short) {\n if (user && user.first_name && user.first_name !== '') {\n return user.first_name\n }\n }\n\n if (user && user.screenname) {\n return user.screenname\n }\n\n if (user && user.first_name && user.first_name !== '' && user.last_name && user.last_name !== '') {\n return user.first_name + ' ' + user.last_name\n }\n\n if (user && user.username) {\n return user.username\n }\n\n return user && user.name\n}\n\n// if there is no first name we fallback on full name\nconst getFirstName = user => {\n if (user.first_name) {\n return user.first_name\n }\n\n return getFullName(user)\n}\n\nconst getShortName = (user = {}) => {\n let shortname\n\n if (user.first_name && user.last_name) {\n shortname = `${capitalize(user.first_name)} ${capitalize(user.last_name.substr(0, 1))}.`\n } else {\n shortname = user.screenname || user.name\n }\n\n return shortname\n}\n\nconst getAvatar = user => (size = 'full') => {\n if (user.avatar && user.avatar.versions) {\n return user.avatar.versions[size]\n }\n}\n\nconst getTotalProjectCreates = owner => {\n if (owner && owner.stats) {\n const stats = Object.values(owner.stats)\n return stats.reduce((acc, curr) => acc + curr)\n }\n\n return null\n}\n\nfunction isAuthenticated(user) {\n return user && user.is_authenticated\n}\n\nconst user = (user = {}) => {\n return {\n ...user,\n fullname: getFullName(user),\n shortname: getShortName(user),\n getAvatar: getAvatar(user),\n firstName: getFirstName(user),\n isAuthenticated: isAuthenticated(user),\n totalProjectCreated: getTotalProjectCreates(user),\n profile: profileModel(user)\n }\n}\n\nexport default user\n", "import linkifyHtml from 'linkify-html'\n\nexport const capitalize = (str = '') => {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport const shorten = (str, maxLength) => {\n if (!str) return ''\n\n if (str.length < maxLength) return str\n\n return str.substring(0, maxLength + 3).replace(/...$/, '...')\n}\n\nexport const caretReplace = (content) => {\n return content.replace(/\\r/g, '<br/>')\n}\n\nexport const linkify = (content, length = 30) => {\n const options = {\n attributes: null,\n className: 'b-list__link',\n defaultProtocol: 'http',\n events: null,\n format: (value) => {\n return value.length > length ? value.slice(0, length) + '\u2026' : value\n },\n formatHref: (href) => {\n return href\n },\n nl2br: true,\n tagName: 'a',\n target: {\n url: '_blank',\n },\n }\n\n return linkifyHtml(content, options)\n}\n\nexport const formatSuffix = (number) => {\n let suffix = ''\n\n switch (number % 10) {\n case 1:\n suffix = number % 100 === 11 ? 'th' : 'st'\n break\n case 2:\n suffix = number % 100 === 12 ? 'th' : 'nd'\n break\n case 3:\n suffix = number % 100 === 13 ? 'th' : 'rd'\n break\n default:\n suffix = 'th'\n break\n }\n return number + suffix\n}\n\nexport const slugify = (text) => {\n const specialChars = '\u00E1\u00E0\u00E3\u00E4\u00E2\u00E9\u00E8\u1EBD\u00EB\u00EA\u00ED\u00EC\u00EF\u00EE\u00F3\u00F2\u00F5\u00F6\u00F4\u00FA\u00F9\u00FC\u00FB\u00F1\u00E7\u00B7/_,:;'\n const substitutes = 'aaaaaeeeeeiiiiooooouuuunc------'\n const specialCharsRegExp = new RegExp(specialChars.split('').join('|'), 'g')\n\n return text\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(specialCharsRegExp, (character) => substitutes.charAt(specialChars.indexOf(character)))\n .replace(/[^\\w\\-]+/g, '')\n .replace(/^-+/, '')\n .replace(/-+$/, '')\n}\n", "import { t } from '@ulule/localize'\n\nfunction getAvatar(profile, size) {\n if (size) {\n return (\n profile &&\n profile.avatar &&\n profile.avatar.versions &&\n profile.avatar.versions[size] &&\n profile.avatar.versions[size].url\n )\n }\n\n return (\n profile &&\n profile.avatar &&\n profile.avatar.versions &&\n profile.avatar.versions.full &&\n profile.avatar.versions.full.url\n )\n}\n\nfunction getCover(profile) {\n return (\n profile && profile.cover && profile.cover.versions && profile.cover.versions.full && profile.cover.versions.full.url\n )\n}\n\nexport function getLabel(profile) {\n const labels = {\n team: {\n name: t('team'),\n color: 'secondary-green-500',\n },\n official: {\n name: t('official'),\n color: 'secondary-yellow-500',\n },\n connector: {\n name: t('connector'),\n color: 'primary-red-900',\n },\n captain: {\n name: t('captain'),\n color: 'brand-indigo',\n },\n expert: {\n name: t('expert'),\n color: 'primary-blue-500',\n },\n }\n\n if (profile && (profile.labels === null || !profile.labels)) return null\n\n const profileLabels =\n profile &&\n profile.labels.find((label, index) => {\n if (labels[label]) {\n return labels[label]\n }\n })\n\n return labels[profileLabels]\n}\n\nexport const profile = (profile) => {\n return {\n ...profile,\n getAvatar: (size) => getAvatar(profile, size),\n getLabel: getLabel(profile),\n getCover: getCover(profile),\n }\n}\n", "import PropTypes from 'prop-types'\nimport * as api from '@owl-nest/api-client/latest'\n\nexport const statsShape = PropTypes.shape({\n created_projects_online_count: PropTypes.number,\n followed_projects_count: PropTypes.number,\n projects_created_count: PropTypes.number,\n projects_currently_funding_count: PropTypes.number,\n projects_failed_count: PropTypes.number,\n projects_orders_count: PropTypes.number,\n projects_succeeded_count: PropTypes.number,\n proposals_created_count: PropTypes.number,\n proposals_refused_count: PropTypes.number,\n proposals_validated_count: PropTypes.number,\n supported_projects_count: PropTypes.number,\n})\n\nexport const userShape = PropTypes.shape({\n absolute_url: PropTypes.string,\n avatar: PropTypes.object,\n firstName: PropTypes.string,\n first_name: PropTypes.string,\n fullname: PropTypes.string,\n getAvatar: PropTypes.func,\n id: PropTypes.number,\n isAuthenticated: PropTypes.bool,\n is_authenticated: PropTypes.bool,\n is_staff: PropTypes.bool,\n last_name: PropTypes.string,\n name: PropTypes.string,\n nb_projects: PropTypes.number,\n project_list_url: PropTypes.string,\n screenname: PropTypes.string,\n settings_url: PropTypes.string,\n shortname: PropTypes.string,\n transactions_url: PropTypes.string,\n})\n\nexport type UserShape = {\n absolute_url: string,\n avatar: unknown,\n contact_lang?: string,\n firstName: string,\n first_name: string,\n fullname: string,\n getAvatar: (s: string) => { url: string },\n id: number,\n isAuthenticated: boolean,\n is_authenticated: boolean,\n is_staff: boolean,\n last_login: string,\n last_name: string,\n lang?: string,\n name: string,\n nb_projects: number,\n project_list_url: string,\n screenname: string,\n settings_url: string,\n shortname: string,\n stats?: {\n projects_created_count: number,\n proposals_created_count: number,\n projects_succeeded_count: number,\n proposals_validated_count: number,\n },\n transactions_url: string,\n}\n\nexport const langShape = PropTypes.shape({\n ca: PropTypes.string,\n de: PropTypes.string,\n en: PropTypes.string,\n es: PropTypes.string,\n fr: PropTypes.string,\n it: PropTypes.string,\n nl: PropTypes.string,\n pt: PropTypes.string,\n})\n\nexport const categoryShape = PropTypes.shape({\n absolute_url: PropTypes.string.isRequired,\n id: PropTypes.number.isRequired,\n name: langShape,\n position: PropTypes.number.isRequired,\n slug: PropTypes.string.isRequired,\n})\n\nexport const partnershipsShape = PropTypes.shape({\n id: PropTypes.number,\n is_default: PropTypes.bool,\n is_support: PropTypes.bool,\n partner: PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n slug: PropTypes.string,\n url: PropTypes.string,\n user_id: PropTypes.number,\n }),\n project_id: PropTypes.number,\n})\n\nexport const urlsShape = PropTypes.shape({\n web: PropTypes.shape({\n checkout: PropTypes.string,\n edit: PropTypes.shape({\n address: PropTypes.string,\n main: PropTypes.string,\n media: PropTypes.string,\n news: PropTypes.shape({\n add: PropTypes.string,\n index: PropTypes.string,\n }),\n orders: PropTypes.string,\n products: PropTypes.string,\n rib: PropTypes.string,\n ticket: PropTypes.string,\n }),\n detail: PropTypes.string,\n }),\n})\n\nexport const projectShape = PropTypes.shape({\n get: PropTypes.func,\n manager: userShape,\n props: PropTypes.shape({\n absolute_url: PropTypes.string,\n amountLeft: PropTypes.number,\n amount_raised: PropTypes.number,\n analytics_count: PropTypes.number,\n comments_count: PropTypes.number,\n committed: PropTypes.number,\n countdown: PropTypes.number,\n country: PropTypes.string,\n currency: PropTypes.string,\n date_end: PropTypes.string,\n date_start: PropTypes.string,\n description: langShape,\n description_funding: langShape,\n description_yourself: langShape,\n discussions_thread_id: PropTypes.number,\n finished: PropTypes.bool,\n getMainImage: PropTypes.func,\n getUrl: PropTypes.func,\n goal: PropTypes.number,\n goal_raised: PropTypes.bool,\n id: PropTypes.number,\n isFailed: PropTypes.bool,\n isFinished: PropTypes.bool,\n isFunded: PropTypes.bool,\n isPresale: PropTypes.bool,\n isSuccess: PropTypes.bool,\n is_cancelled: PropTypes.bool,\n is_online: PropTypes.bool,\n lang: PropTypes.string,\n location: PropTypes.shape({\n city: PropTypes.string,\n country: PropTypes.string,\n full_name: PropTypes.string,\n name: PropTypes.string,\n region: PropTypes.string,\n }),\n lowest_contribution_amount: PropTypes.number,\n manager: userShape,\n name: langShape,\n nb_products_sold: PropTypes.number,\n news_count: PropTypes.number,\n note: PropTypes.string,\n orders_count: PropTypes.number,\n owner: userShape,\n partnerships: PropTypes.arrayOf(partnershipsShape),\n percent: PropTypes.number,\n required_personal_id_number: PropTypes.bool,\n resource_uri: PropTypes.string,\n slug: PropTypes.string,\n sponsorships_count: PropTypes.number,\n status: PropTypes.string,\n subtitle: langShape,\n supporters_count: PropTypes.number,\n timeLeft: PropTypes.string,\n timezone: PropTypes.string,\n type: PropTypes.string,\n urls: PropTypes.shape({\n urlsShape,\n }),\n video: PropTypes.shape({\n author_name: PropTypes.string,\n author_url: PropTypes.string,\n height: PropTypes.number,\n html: PropTypes.string,\n id: PropTypes.number,\n language: PropTypes.string,\n provider_name: PropTypes.string,\n provider_url: PropTypes.string,\n thumbnail_height: PropTypes.number,\n thumbnail_url: PropTypes.string,\n thumbnail_width: PropTypes.number,\n title: PropTypes.string,\n type: PropTypes.string,\n url: PropTypes.string,\n version: PropTypes.string,\n width: PropTypes.number,\n }),\n visible: PropTypes.bool,\n }),\n user: userShape,\n})\n\ntype Exemple = {\n main_image: {\n versions: {\n small: {\n url: string,\n },\n },\n },\n}\nexport type ProjectShape = {\n get: (name: string, tag?: api.TagBase) => string,\n isLoadingProject: boolean,\n isUpdatingManagerType: boolean,\n manager: UserShape,\n props: api.Project & {\n account: {\n status: string,\n edit_url: string,\n },\n countdown: number,\n currency: string,\n date_start: string,\n isFinished: boolean,\n isSelected: boolean,\n latest_news: string,\n billing_blocked: boolean,\n manager_type: 'specialist' | 'success',\n news_count: number,\n note: string,\n notes: {\n manager: string,\n billing: string,\n },\n percent: string,\n proposal: ProposalShape,\n recommendable: boolean,\n start_date: string,\n slug: string,\n timeLeft: number,\n },\n user: UserShape,\n validator: { fullname?: string | undefined },\n}\n\nexport const symbolsShape = PropTypes.shape({\n AUD: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n CAD: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n CHF: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n DKK: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n EUR: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n GBP: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n NOK: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n NZD: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n SEK: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n USD: PropTypes.shape({\n separator: PropTypes.string,\n symbol: PropTypes.string,\n trigram: PropTypes.string,\n }),\n})\n\nexport const proposalShape = PropTypes.shape({\n city: PropTypes.string,\n country: PropTypes.string,\n date_creation: PropTypes.string,\n description: PropTypes.string,\n goal_range: PropTypes.shape({\n max: PropTypes.number,\n min: PropTypes.number,\n }),\n id: PropTypes.number,\n legal_entity_type: PropTypes.string,\n partner: PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n slug: PropTypes.string,\n }),\n phone_number: PropTypes.string,\n rewards_type: PropTypes.string,\n score: PropTypes.number,\n score_entries: PropTypes.shape({\n description: PropTypes.number,\n goal_range: PropTypes.number,\n legal_entity_type: PropTypes.number,\n links: PropTypes.number,\n rewards_type: PropTypes.number,\n user: PropTypes.number,\n }),\n})\n\nexport type ProposalShape = {\n city: string,\n country: string,\n date_creation: string,\n description: string,\n goal_range: {\n max: number,\n min: number,\n },\n id: number,\n legal_entity_type: string,\n links: [\n {\n followers_count: number,\n id: number,\n url: string,\n views_count: number,\n },\n ],\n partner: {\n id: number,\n name: string,\n slug: string,\n },\n phone_number: string,\n rewards_type: string,\n score: number,\n score_entries: {\n description: number,\n goal_range: number,\n legal_entity_type: number,\n links: number,\n rewards_type: number,\n user: number,\n },\n}\n\nexport const mainUrlsShape = PropTypes.shape({\n refresh_token: PropTypes.string,\n join: PropTypes.string,\n signin: PropTypes.string,\n signout: PropTypes.string,\n home: PropTypes.string,\n forbidden: PropTypes.string,\n discover: PropTypes.string,\n discussions: PropTypes.string,\n proposal: PropTypes.string,\n about: PropTypes.string,\n cookiePolicy: PropTypes.string,\n support: PropTypes.string,\n community: PropTypes.string,\n mobile: PropTypes.string,\n brandSiteUrl: langShape,\n okpalUrl: PropTypes.string,\n})\n\nexport const locationShape = PropTypes.shape({\n hash: PropTypes.string,\n key: PropTypes.string,\n pathname: PropTypes.string,\n search: PropTypes.string,\n})\n\nexport const historyShape = PropTypes.shape({\n action: PropTypes.string,\n block: PropTypes.func,\n createHref: PropTypes.func,\n go: PropTypes.func,\n goBack: PropTypes.func,\n goForward: PropTypes.func,\n length: PropTypes.number,\n listen: PropTypes.func,\n location: locationShape,\n push: PropTypes.func,\n replace: PropTypes.func,\n})\n\nexport const matchShape = PropTypes.shape({\n isExact: PropTypes.bool,\n params: PropTypes.shape({\n filter: PropTypes.string,\n status: PropTypes.string,\n }),\n path: PropTypes.string,\n url: PropTypes.string,\n})\n\nexport const imageShape = PropTypes.shape({\n '1x': PropTypes.string.isRequired,\n '2x': PropTypes.string.isRequired,\n '3x': PropTypes.string.isRequired,\n})\n\nexport const dataUTMPageContextShape = PropTypes.shape({\n isFeaturedProject: PropTypes.bool,\n type: PropTypes.string.isRequired, // 'channel' | 'category'\u2026\n value: PropTypes.string.isRequired, // 'Le titre de ma cha\u00EEne', 'La cat\u00E9gorie'\u2026\n})\n\nexport const orderShape = PropTypes.shape({\n id: PropTypes.number,\n})\n", "import React from 'react'\nimport { t } from '@ulule/localize'\nimport * as models from '@owl-nest/models'\nimport differenceInHours from 'date-fns-legacy/difference_in_hours'\nimport differenceInMinutes from 'date-fns-legacy/difference_in_minutes'\n\nimport InteractiveCountdown from '../components/InteractiveCountdown/InteractiveCountdown.js'\nimport get from './model.js'\nimport userModel from './user.js'\n\nfunction getUrl(project, urlName) {\n return project.urls.web[urlName]\n}\n\nfunction isPresale(project) {\n return project.type === 'presale' ? true : false\n}\n\nfunction isFinished(project) {\n return project.finished && !project.is_in_extra_time\n}\n\nfunction isOkpalOffboardingAvailable(project) {\n return project.currency && (project.currency === 'EUR' || project.currency === 'CAD')\n}\n\nfunction timeLeft(project) {\n if (!project.is_online) return\n\n if (project.date_end === null) return\n\n if (project.date_end) {\n const delta = project.date_end_extra_time\n ? +new Date(project.date_end_extra_time) - +new Date()\n : +new Date(project.date_end) - +new Date()\n\n if (delta > 48 * 3600000) {\n return t('days left')\n }\n\n if (delta >= 3600000) {\n return t('hours left')\n }\n\n if (delta === 3600000) {\n return t('hour left')\n }\n\n if (delta > 60000) {\n return t('minutes left')\n }\n\n if (delta === 60000) {\n return t('minute left')\n }\n\n if (delta === 1) {\n return t('second left')\n }\n\n return t('seconds left')\n }\n\n return\n}\n\nfunction getCountdown(project) {\n if (project.date_end === null) return\n\n const timestamp = project.date_end_extra_time ? +new Date(project.date_end_extra_time) : +new Date(project.date_end)\n const currentTimestamp = +new Date()\n const diff = timestamp - currentTimestamp\n let countdown\n\n if (diff > 48 * 3600000) {\n // > 48h\n const lastDays = Math.ceil(diff / (24 * 3600000))\n countdown = lastDays\n return countdown\n }\n\n if (diff >= 3600000) {\n // > 1h // 60 * 60 * 1 * 1000\n const lastHours = Math.round(diff / 3600000)\n countdown = lastHours\n\n return countdown\n }\n\n if (diff >= 60000) {\n // >= 60s //60 * 1 * 1000\n const lastMinutes = Math.round(diff / 60000)\n countdown = lastMinutes\n\n return countdown\n }\n\n // seconds\n const lastSeconds = Math.round(diff / 1000)\n countdown = lastSeconds\n\n return countdown\n}\n\nfunction success(project) {\n if (isFinished(project) && project.percent >= 100) {\n return true\n }\n return false\n}\n\nfunction failed(project) {\n if (isFinished(project) && project.percent < 100) {\n return true\n }\n return false\n}\n\nfunction funded(project) {\n if (isFinished(project) === false && project.percent >= 100) {\n return true\n }\n return false\n}\n\nfunction amountLeft(project) {\n if (isPresale) {\n return project.goal - project.comitted\n }\n\n if (project.goal) {\n const result = project.goal - (project.amount_raised || 0)\n\n if (result > 0) {\n return result\n }\n }\n return 0\n}\n\nfunction getShippingPrices(project) {\n const projectShippings = project && project.delivery && project.delivery.shippings\n\n const projectShippingsPrices = projectShippings && projectShippings.map((shipping) => shipping.amount)\n\n return projectShippingsPrices\n}\n\nfunction getMinShipping(project) {\n let projectShippings = getShippingPrices(project) || []\n const internationalShipping = project && project.delivery && project.delivery.shipping_int\n const nationalShipping = project && project.delivery && project.delivery.shipping_nat\n\n if (internationalShipping || internationalShipping === 0) {\n projectShippings.push(internationalShipping)\n }\n if (nationalShipping || nationalShipping === 0) {\n projectShippings.push(nationalShipping)\n }\n return projectShippings.length > 0 ? Math.min(...projectShippings) : null\n}\n\nfunction getMaxShipping(project) {\n let projectShippings = getShippingPrices(project) || []\n const internationalShipping = project && project.delivery && project.delivery.shipping_int\n const nationalShipping = project && project.delivery && project.delivery.shipping_nat\n\n if (internationalShipping || internationalShipping === 0) {\n projectShippings.push(internationalShipping)\n }\n if (nationalShipping || nationalShipping === 0) {\n projectShippings.push(nationalShipping)\n }\n\n return projectShippings.length > 0 ? Math.max(...projectShippings) : null\n}\n\nexport const isOrdersEnabled = (project) => {\n return project.orders_enabled !== undefined ? project.orders_enabled : true\n}\n\n/* Returns the project main image at a given size */\nexport const getMainImage = (project, size = 'large') => {\n if (project && project.main_image && project.main_image.versions && project.main_image.versions[size]) {\n return project.main_image.versions[size].url\n }\n return ''\n}\n\nexport const getProgress = (project) => {\n const value = project.type === 'presale' ? project.nb_products_sold : project.amount_raised\n\n return Math.floor((value * 100) / project.goal)\n}\n\n/* Returns left time in milliseconds */\nexport const getTimeleft = (startDate, endDate) => {\n const firstDate = new Date(startDate)\n const secondDate = new Date(endDate)\n\n return secondDate.getTime() - firstDate.getTime()\n}\n\nexport const getFinishTrad = (endDate) => {\n const secondDate = new Date(endDate)\n const localDate = new Date()\n const timePassed = differenceInHours(localDate, secondDate)\n const minutePassed = differenceInMinutes(localDate, secondDate)\n\n if (timePassed === 0) {\n return t('Just ended %(hours)d min ago!', { hours: minutePassed })\n }\n\n if (timePassed < 12 && timePassed > 0) {\n return t('Just ended %(hours)dh ago!', { hours: timePassed })\n }\n\n return t('Finished')\n}\n\n/* Returns text for countdown */\nexport const getShortCountdown = (project) => {\n return models.project.getCountDown(project, true)\n}\n\nexport const rawProgress = (project) => {\n const value = project.type === 'presale' ? project.nb_products_sold : project.amount_raised\n return (value * 100) / project.goal\n}\n\nexport const progress = (project) => {\n return Math.floor(rawProgress(project))\n}\n\nexport const project = (currLang) => (project) => {\n const validator = project && project.proposal && project.proposal.validator\n const owner = project && project.owner\n const manager = project && project.manager\n const delivery = project && project.delivery\n\n if (currLang === undefined || currLang === '') currLang = 'en'\n\n const projectProps = {\n props: {\n ...project,\n getMainImage: (size) => getMainImage(project, size),\n getUrl: (project, urlName) => getUrl(project, urlName),\n percent: progress(project),\n isPresale: isPresale(project),\n isFinished: isFinished(project),\n isFunded: funded(project),\n isSuccess: success(project),\n isFailed: failed(project),\n timeLeft: timeLeft(project),\n countdown: getCountdown(project),\n amountLeft: amountLeft(project),\n isOkpalOffboardingAvailable: isOkpalOffboardingAvailable(project),\n isOrdersEnabled: isOrdersEnabled(project),\n delivery: {\n ...delivery,\n minimalShipping: getMinShipping(project),\n maximalShipping: getMaxShipping(project),\n shippingsPrices: getShippingPrices(project),\n },\n },\n user: owner && userModel(owner),\n manager: manager && userModel(manager),\n validator: validator !== null ? userModel(validator) : {},\n }\n projectProps.get = get(projectProps, currLang, project.lang)\n\n return projectProps\n}\n\nexport const getComingSoonLabel = (project, isStaff = true) => {\n if (isStaff || (project.user_role && ['editor', 'moderator', 'owner'].includes(project.user_role))) {\n return project.status === 'validated' ? t('Ready to go online') : t('In progress')\n }\n return t('Online shortly, sign up now!')\n}\n\nexport function getStatus({ extraTime, finished, endDate, isOnline }) {\n if (extraTime) {\n return t('Extension')\n } else if (finished) {\n return t('Finished')\n } else if (isOnline && !endDate) {\n return ''\n }\n}\n", "import React from 'react'\n\nimport { t } from '@ulule/localize'\n\nclass InteractiveCountdown extends React.Component {\n state = {\n finished: false,\n days: 0,\n hours: 0,\n min: 0,\n sec: 0\n }\n\n calculateCountdown(endDate) {\n let diff = (Date.parse(new Date(endDate)) - Date.parse(new Date())) / 1000\n\n // clear countdown when date is reached\n if (diff <= 0) return false\n\n const timeLeft = {\n years: 0,\n days: 0,\n hours: 0,\n min: 0,\n sec: 0,\n millisec: 0\n }\n\n // calculate time difference between now and expected date\n if (diff >= 365.25 * 86400) {\n // 365.25 * 24 * 60 * 60\n timeLeft.years = Math.floor(diff / (365.25 * 86400))\n diff -= timeLeft.years * 365.25 * 86400\n }\n if (diff >= 86400) {\n // 24 * 60 * 60\n timeLeft.days = Math.floor(diff / 86400)\n diff -= timeLeft.days * 86400\n }\n if (diff >= 3600) {\n // 60 * 60\n timeLeft.hours = Math.floor(diff / 3600)\n diff -= timeLeft.hours * 3600\n }\n if (diff >= 60) {\n timeLeft.min = Math.floor(diff / 60)\n diff -= timeLeft.min * 60\n }\n\n timeLeft.sec = diff\n\n return timeLeft\n }\n\n tick(date) {\n if (!date) return\n\n this.setState(date)\n }\n\n stop() {\n clearInterval(this.interval)\n this.setState({ finished: true })\n }\n\n componentDidMount() {\n const date = this.calculateCountdown(this.props.date)\n this.tick(date)\n\n // update every second\n this.interval = setInterval(() => {\n const date = this.calculateCountdown(this.props.date)\n\n if (date) {\n this.tick(date)\n } else {\n this.stop()\n }\n }, 1000)\n }\n\n componentWillUnmount() {\n this.stop()\n }\n\n addLeadingZeros(value) {\n value = String(value)\n while (value.length < 2) {\n value = '0' + value\n }\n return value\n }\n\n render() {\n const { fallback } = this.state\n const { finished, min, sec } = this.state\n\n if (finished) {\n return <span>{fallback}</span>\n }\n\n return (\n <span>\n {t('%(min)s min %(sec)s sec', {\n min: this.addLeadingZeros(min),\n sec: this.addLeadingZeros(sec)\n })}\n </span>\n )\n }\n}\n\nexport default InteractiveCountdown\n", "export default function get(_ctx = [], currentLang, projectLang) {\n return function(key, source) {\n if (typeof _ctx === 'undefined') {\n return\n }\n\n const ctx = source || (_ctx && _ctx.props) || []\n\n if (ctx && typeof ctx === 'object') {\n if (ctx && ctx[key]) {\n return ctx[key][currentLang] === '' || ctx[key][currentLang] === undefined\n ? ctx[key][projectLang]\n : ctx[key][currentLang]\n }\n return\n }\n }\n}\n"], "mappings": "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", "names": ["require_getTimezoneOffsetInMilliseconds", "__commonJSMin", "exports", "module", "init_define_process_env", "MILLISECONDS_IN_MINUTE", "dirtyDate", "date", "baseTimezoneOffset", "millisecondsPartOfTimezoneOffset", "require_is_date", "__commonJSMin", "exports", "module", "init_define_process_env", "isDate", "argument", "require_parse", "__commonJSMin", "exports", "module", "init_define_process_env", "getTimezoneOffsetInMilliseconds", "isDate", "MILLISECONDS_IN_HOUR", "MILLISECONDS_IN_MINUTE", "DEFAULT_ADDITIONAL_DIGITS", "parseTokenDateTimeDelimeter", "parseTokenPlainTime", "parseTokenYY", "parseTokensYYY", "parseTokenYYYY", "parseTokensYYYYY", "parseTokenMM", "parseTokenDDD", "parseTokenMMDD", "parseTokenWww", "parseTokenWwwD", "parseTokenHH", "parseTokenHHMM", "parseTokenHHMMSS", "parseTokenTimezone", "parseTokenTimezoneZ", "parseTokenTimezoneHH", "parseTokenTimezoneHHMM", "parse", "argument", "dirtyOptions", "options", "additionalDigits", "dateStrings", "splitDateString", "parseYearResult", "parseYear", "year", "restDateString", "date", "parseDate", "timestamp", "time", "offset", "parseTime", "parseTimezone", "fullTime", "fullTimeDate", "fullTimeDateNextDay", "offsetDiff", "dateString", "array", "timeString", "token", "parseTokenYYY", "parseTokenYYYYY", "yearString", "centuryString", "month", "week", "dayOfYear", "day", "dayOfISOYear", "dayOfWeek", "hours", "minutes", "seconds", "timezoneString", "absoluteOffset", "isoYear", "fourthOfJanuaryDay", "diff", "require_difference_in_milliseconds", "__commonJSMin", "exports", "module", "init_define_process_env", "parse", "differenceInMilliseconds", "dirtyDateLeft", "dirtyDateRight", "dateLeft", "dateRight", "require_difference_in_hours", "__commonJSMin", "exports", "module", "init_define_process_env", "differenceInMilliseconds", "MILLISECONDS_IN_HOUR", "differenceInHours", "dirtyDateLeft", "dirtyDateRight", "diff", "require_difference_in_minutes", "__commonJSMin", "exports", "module", "init_define_process_env", "differenceInMilliseconds", "MILLISECONDS_IN_MINUTE", "differenceInMinutes", "dirtyDateLeft", "dirtyDateRight", "diff", "init_define_process_env", "init_define_process_env", "capitalize", "str", "shorten", "maxLength", "linkify", "content", "length", "linkifyHtml", "value", "href", "init_define_process_env", "import_localize", "getAvatar", "profile", "size", "getCover", "getLabel", "labels", "profileLabels", "label", "index", "__spreadProps", "__spreadValues", "getFullName", "user", "short", "getFirstName", "getShortName", "shortname", "capitalize", "getAvatar", "size", "getTotalProjectCreates", "owner", "acc", "curr", "isAuthenticated", "__spreadProps", "__spreadValues", "profile", "user_default", "init_define_process_env", "import_prop_types", "statsShape", "PropTypes", "userShape", "langShape", "categoryShape", "partnershipsShape", "urlsShape", "projectShape", "symbolsShape", "proposalShape", "mainUrlsShape", "locationShape", "historyShape", "matchShape", "imageShape", "dataUTMPageContextShape", "orderShape", "init_define_process_env", "import_react", "import_localize", "import_difference_in_hours", "import_difference_in_minutes", "init_define_process_env", "import_react", "import_localize", "InteractiveCountdown", "React", "__publicField", "endDate", "diff", "timeLeft", "date", "value", "fallback", "finished", "min", "sec", "init_define_process_env", "get", "_ctx", "currentLang", "projectLang", "key", "source", "ctx", "getUrl", "project", "urlName", "isPresale", "isFinished", "isOkpalOffboardingAvailable", "timeLeft", "delta", "getCountdown", "timestamp", "currentTimestamp", "diff", "countdown", "success", "failed", "funded", "amountLeft", "result", "getShippingPrices", "projectShippings", "shipping", "getMinShipping", "internationalShipping", "nationalShipping", "getMaxShipping", "isOrdersEnabled", "getMainImage", "size", "getProgress", "value", "getFinishTrad", "endDate", "secondDate", "localDate", "timePassed", "differenceInHours", "minutePassed", "differenceInMinutes", "getShortCountdown", "project", "project_exports", "rawProgress", "progress", "currLang", "validator", "owner", "manager", "delivery", "projectProps", "__spreadProps", "__spreadValues", "size", "getMainImage", "urlName", "getUrl", "isPresale", "isFinished", "funded", "success", "failed", "timeLeft", "getCountdown", "amountLeft", "isOkpalOffboardingAvailable", "isOrdersEnabled", "getMinShipping", "getMaxShipping", "getShippingPrices", "user_default", "get", "getComingSoonLabel", "isStaff", "getStatus", "extraTime", "finished", "isOnline"] }