{"version":3,"sources":["webpack:///./node_modules/@chatwoot/utils/dist/utils.esm.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/modules/es.string.replace.js"],"names":["debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","clearTimeout","window","setTimeout","getContrastingTextColor","bgColor","color","replace","parseInt","slice","formatTime","timeInSeconds","formattedTime","minutes","Math","floor","seconds","hours","_minutes","days","_hours","trimContent","content","maxLength","ellipsis","trimmedContent","length","substring","convertSecondsToTimeUnit","unitNames","time","unit","Number","toFixed","minute","hour","day","parseBoolean","candidate","candidateString","String","toLowerCase","Boolean","JSON","parse","error","sortAsc","arr","sort","a","b","_quantileForSorted","sorted","q","min","max","value","clamped","pos","base","rest","undefined","getQuantileIntervals","data","intervals","map","interval","_extends","Object","assign","target","i","source","key","prototype","hasOwnProperty","call","this","MESSAGE_VARIABLES_REGEX","capitalizeName","name","s","toUpperCase","getFirstName","_ref","user","firstName","split","shift","getLastName","_ref2","lastName","pop","getMessageVariables","_ref3","_assignee$email","conversation","contact","_conversation$meta","meta","assignee","sender","id","_conversation$custom_","custom_attributes","conversationCustomAttributes","contactCustomAttributes","email","phone_number","entries","reduce","acc","_ref5","_ref6","replaceVariablesInMessage","_ref7","message","variables","_","trim","getUndefinedVariablesInMessage","_ref8","matches","match","filter","variable","createTypingIndicator","onStartTyping","onStopTyping","idleTime","timer","stop","reset","start","calculateThreshold","timeOffset","threshold","Date","now","formatSLATime","units","y","mo","d","h","m","parts","keys","forEach","push","join","evaluateSLAConditions","appliedSla","chat","type","frtThreshold","sla_first_response_time_threshold","nrtThreshold","sla_next_response_time_threshold","rtThreshold","sla_resolution_time_threshold","createdAt","created_at","firstReplyCreatedAt","first_reply_created_at","waitingSince","waiting_since","status","SLAStatus","FRT","condition","NRT","RT","createSLAObject","icon","isSlaMissed","evaluateSLAStatus","mostUrgent","SLAStatuses","sla1","sla2","abs","findMostUrgentSLAStatus","toObject","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","module","exports","matched","str","position","captures","namedCaptures","replacement","tailPos","symbols","ch","capture","charAt","n","f","fixRegExpWellKnownSymbolLogic","anObject","toLength","toInteger","requireObjectCoercible","advanceStringIndex","getSubstitution","regExpExec","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","O","replacer","regexp","indexOf","res","done","rx","S","functionalReplace","global","fullUnicode","unicode","lastIndex","results","result","it","accumulatedResult","nextSourcePosition","index","j","groups","replacerArgs","concat"],"mappings":"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","file":"js/92-7d68a1af9f4b581527b1.chunk.js","sourcesContent":["import isToday from 'date-fns/isToday';\nimport isYesterday from 'date-fns/isYesterday'; // Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\n/**\r\n * @func Callback function to be called after delay\r\n * @delay Delay for debounce in ms\r\n * @immediate should execute immediately\r\n * @returns debounced callback function\r\n */\n\nvar debounce = function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = null;\n var args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = window.setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n/**\r\n * @name Get contrasting text color\r\n * @description Get contrasting text color from a text color\r\n * @param bgColor Background color of text.\r\n * @returns contrasting text color\r\n */\n\n\nvar getContrastingTextColor = function getContrastingTextColor(bgColor) {\n var color = bgColor.replace('#', '');\n var r = parseInt(color.slice(0, 2), 16);\n var g = parseInt(color.slice(2, 4), 16);\n var b = parseInt(color.slice(4, 6), 16); // http://stackoverflow.com/a/3943023/112731\n\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? '#000000' : '#FFFFFF';\n};\n/**\r\n * @name Get formatted date\r\n * @description Get date in today, yesterday or any other date format\r\n * @param date date\r\n * @param todayText Today text\r\n * @param yesterdayText Yesterday text\r\n * @returns formatted date\r\n */\n\n\nvar formatDate = function formatDate(_ref) {\n var date = _ref.date,\n todayText = _ref.todayText,\n yesterdayText = _ref.yesterdayText;\n var dateValue = new Date(date);\n if (isToday(dateValue)) return todayText;\n if (isYesterday(dateValue)) return yesterdayText;\n return date;\n};\n/**\r\n * @name formatTime\r\n * @description Format time to Hour, Minute and Second\r\n * @param timeInSeconds number\r\n * @returns formatted time\r\n */\n\n\nvar formatTime = function formatTime(timeInSeconds) {\n var formattedTime = '';\n\n if (timeInSeconds >= 60 && timeInSeconds < 3600) {\n var minutes = Math.floor(timeInSeconds / 60);\n formattedTime = minutes + \" Min\";\n var seconds = minutes === 60 ? 0 : Math.floor(timeInSeconds % 60);\n return formattedTime + (\"\" + (seconds > 0 ? ' ' + seconds + ' Sec' : ''));\n }\n\n if (timeInSeconds >= 3600 && timeInSeconds < 86400) {\n var hours = Math.floor(timeInSeconds / 3600);\n formattedTime = hours + \" Hr\";\n\n var _minutes = timeInSeconds % 3600 < 60 || hours === 24 ? 0 : Math.floor(timeInSeconds % 3600 / 60);\n\n return formattedTime + (\"\" + (_minutes > 0 ? ' ' + _minutes + ' Min' : ''));\n }\n\n if (timeInSeconds >= 86400) {\n var days = Math.floor(timeInSeconds / 86400);\n formattedTime = days + \" Day\";\n\n var _hours = timeInSeconds % 86400 < 3600 || days >= 364 ? 0 : Math.floor(timeInSeconds % 86400 / 3600);\n\n return formattedTime + (\"\" + (_hours > 0 ? ' ' + _hours + ' Hr' : ''));\n }\n\n return Math.floor(timeInSeconds) + \" Sec\";\n};\n/**\r\n * @name trimContent\r\n * @description Trim a string to max length\r\n * @param content String to trim\r\n * @param maxLength Length of the string to trim, default 1024\r\n * @param ellipsis Boolean to add dots at the end of the string, default false\r\n * @returns trimmed string\r\n */\n\n\nvar trimContent = function trimContent(content, maxLength, ellipsis) {\n if (content === void 0) {\n content = '';\n }\n\n if (maxLength === void 0) {\n maxLength = 1024;\n }\n\n if (ellipsis === void 0) {\n ellipsis = false;\n }\n\n var trimmedContent = content;\n\n if (content.length > maxLength) {\n trimmedContent = content.substring(0, maxLength);\n }\n\n if (ellipsis) {\n trimmedContent = trimmedContent + '...';\n }\n\n return trimmedContent;\n};\n/**\r\n * @name convertSecondsToTimeUnit\r\n * @description Convert seconds to time unit\r\n * @param seconds number\r\n * @param unitNames object\r\n * @returns time and unit\r\n * @example\r\n * convertToUnit(60, { minute: 'm', hour: 'h', day: 'd' }); // { time: 1, unit: 'm' }\r\n * convertToUnit(60, { minute: 'Minutes', hour: 'Hours', day: 'Days' }); // { time: 1, unit: 'Minutes' }\r\n */\n\n\nvar convertSecondsToTimeUnit = function convertSecondsToTimeUnit(seconds, unitNames) {\n if (seconds === null || seconds === 0) return {\n time: '',\n unit: ''\n };\n if (seconds < 3600) return {\n time: Number((seconds / 60).toFixed(1)),\n unit: unitNames.minute\n };\n if (seconds < 86400) return {\n time: Number((seconds / 3600).toFixed(1)),\n unit: unitNames.hour\n };\n return {\n time: Number((seconds / 86400).toFixed(1)),\n unit: unitNames.day\n };\n};\n/**\r\n * Function that parses a string boolean value and returns the corresponding boolean value\r\n * @param {string | number} candidate - The string boolean value to be parsed\r\n * @return {boolean} - The parsed boolean value\r\n */\n\n\nfunction parseBoolean(candidate) {\n try {\n // lowercase the string, so TRUE becomes true\n var candidateString = String(candidate).toLowerCase(); // wrap in boolean to ensure that the return value\n // is a boolean even if values like 0 or 1 are passed\n\n return Boolean(JSON.parse(candidateString));\n } catch (error) {\n return false;\n }\n}\n/**\r\n * Sorts an array of numbers in ascending order.\r\n * @param {number[]} arr - The array of numbers to be sorted.\r\n * @returns {number[]} - The sorted array.\r\n */\n\n\nfunction sortAsc(arr) {\n // .slice() is used to create a copy of the array so that the original array is not mutated\n return arr.slice().sort(function (a, b) {\n return a - b;\n });\n}\n/**\r\n * Calculates the quantile value of an array at a specified percentile.\r\n * @param {number[]} arr - The array of numbers to calculate the quantile value from.\r\n * @param {number} q - The percentile to calculate the quantile value for.\r\n * @returns {number} - The quantile value.\r\n */\n\n\nfunction quantile(arr, q) {\n var sorted = sortAsc(arr); // Sort the array in ascending order\n\n return _quantileForSorted(sorted, q); // Calculate the quantile value\n}\n/**\r\n * Clamps a value between a minimum and maximum range.\r\n * @param {number} min - The minimum range.\r\n * @param {number} max - The maximum range.\r\n * @param {number} value - The value to be clamped.\r\n * @returns {number} - The clamped value.\r\n */\n\n\nfunction clamp(min, max, value) {\n if (value < min) {\n return min;\n }\n\n if (value > max) {\n return max;\n }\n\n return value;\n}\n/**\r\n * This method assumes the the array provided is already sorted in ascending order.\r\n * It's a helper method for the quantile method and should not be exported as is.\r\n *\r\n * @param {number[]} arr - The array of numbers to calculate the quantile value from.\r\n * @param {number} q - The percentile to calculate the quantile value for.\r\n * @returns {number} - The quantile value.\r\n */\n\n\nfunction _quantileForSorted(sorted, q) {\n var clamped = clamp(0, 1, q); // Clamp the percentile between 0 and 1\n\n var pos = (sorted.length - 1) * clamped; // Calculate the index of the element at the specified percentile\n\n var base = Math.floor(pos); // Find the index of the closest element to the specified percentile\n\n var rest = pos - base; // Calculate the decimal value between the closest elements\n // Interpolate the quantile value between the closest elements\n // Most libraries don't to the interpolation, but I'm just having fun here\n // also see https://en.wikipedia.org/wiki/Quantile#Estimating_quantiles_from_a_sample\n\n if (sorted[base + 1] !== undefined) {\n // in case the position was a integer, the rest will be 0 and the interpolation will be skipped\n return sorted[base] + rest * (sorted[base + 1] - sorted[base]);\n } // Return the closest element if there is no interpolation possible\n\n\n return sorted[base];\n}\n/**\r\n * Calculates the quantile values for an array of intervals.\r\n * @param {number[]} data - The array of numbers to calculate the quantile values from.\r\n * @param {number[]} intervals - The array of intervals to calculate the quantile values for.\r\n * @returns {number[]} - The array of quantile values for the intervals.\r\n */\n\n\nvar getQuantileIntervals = function getQuantileIntervals(data, intervals) {\n // Sort the array in ascending order before looping through the intervals.\n // depending on the size of the array and the number of intervals, this can speed up the process by at least twice\n // for a random array of 100 numbers and 5 intervals, the speedup is 3x\n var sorted = sortAsc(data);\n return intervals.map(function (interval) {\n return _quantileForSorted(sorted, interval);\n });\n};\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar MESSAGE_VARIABLES_REGEX = /{{(.*?)}}/g;\n\nvar skipCodeBlocks = function skipCodeBlocks(str) {\n return str.replace(/```(?:.|\\n)+?```/g, '');\n};\n\nvar capitalizeName = function capitalizeName(name) {\n return (name || '').replace(/\\b(\\w)/g, function (s) {\n return s.toUpperCase();\n });\n};\n\nvar getFirstName = function getFirstName(_ref) {\n var user = _ref.user;\n var firstName = user != null && user.name ? user.name.split(' ').shift() : '';\n return capitalizeName(firstName);\n};\n\nvar getLastName = function getLastName(_ref2) {\n var user = _ref2.user;\n\n if (user && user.name) {\n var lastName = user.name.split(' ').length > 1 ? user.name.split(' ').pop() : '';\n return capitalizeName(lastName);\n }\n\n return '';\n};\n\nvar getMessageVariables = function getMessageVariables(_ref3) {\n var _assignee$email;\n\n var conversation = _ref3.conversation,\n contact = _ref3.contact;\n var _conversation$meta = conversation.meta,\n assignee = _conversation$meta.assignee,\n sender = _conversation$meta.sender,\n id = conversation.id,\n _conversation$custom_ = conversation.custom_attributes,\n conversationCustomAttributes = _conversation$custom_ === void 0 ? {} : _conversation$custom_;\n\n var _ref4 = contact || {},\n contactCustomAttributes = _ref4.custom_attributes;\n\n var standardVariables = {\n 'contact.name': capitalizeName((sender == null ? void 0 : sender.name) || ''),\n 'contact.first_name': getFirstName({\n user: sender\n }),\n 'contact.last_name': getLastName({\n user: sender\n }),\n 'contact.email': sender == null ? void 0 : sender.email,\n 'contact.phone': sender == null ? void 0 : sender.phone_number,\n 'contact.id': sender == null ? void 0 : sender.id,\n 'conversation.id': id,\n 'agent.name': capitalizeName((assignee == null ? void 0 : assignee.name) || ''),\n 'agent.first_name': getFirstName({\n user: assignee\n }),\n 'agent.last_name': getLastName({\n user: assignee\n }),\n 'agent.email': (_assignee$email = assignee == null ? void 0 : assignee.email) != null ? _assignee$email : ''\n };\n var conversationCustomAttributeVariables = Object.entries(conversationCustomAttributes != null ? conversationCustomAttributes : {}).reduce(function (acc, _ref5) {\n var key = _ref5[0],\n value = _ref5[1];\n acc[\"conversation.custom_attribute.\" + key] = value;\n return acc;\n }, {});\n var contactCustomAttributeVariables = Object.entries(contactCustomAttributes != null ? contactCustomAttributes : {}).reduce(function (acc, _ref6) {\n var key = _ref6[0],\n value = _ref6[1];\n acc[\"contact.custom_attribute.\" + key] = value;\n return acc;\n }, {});\n\n var variables = _extends({}, standardVariables, conversationCustomAttributeVariables, contactCustomAttributeVariables);\n\n return variables;\n};\n\nvar replaceVariablesInMessage = function replaceVariablesInMessage(_ref7) {\n var message = _ref7.message,\n variables = _ref7.variables; // @ts-ignore\n\n return message == null ? void 0 : message.replace(MESSAGE_VARIABLES_REGEX, function (_, replace) {\n return variables[replace.trim()] ? variables[replace.trim().toLowerCase()] : '';\n });\n};\n\nvar getUndefinedVariablesInMessage = function getUndefinedVariablesInMessage(_ref8) {\n var message = _ref8.message,\n variables = _ref8.variables;\n var messageWithOutCodeBlocks = skipCodeBlocks(message);\n var matches = messageWithOutCodeBlocks.match(MESSAGE_VARIABLES_REGEX);\n if (!matches) return [];\n return matches.map(function (match) {\n return match.replace('{{', '').replace('}}', '').trim();\n }).filter(function (variable) {\n return variables[variable] === undefined;\n });\n};\n/**\r\n * Creates a typing indicator utility.\r\n * @param onStartTyping Callback function to be called when typing starts\r\n * @param onStopTyping Callback function to be called when typing stops after delay\r\n * @param idleTime Delay for idle time in ms before considering typing stopped\r\n * @returns An object with start and stop methods for typing indicator\r\n */\n\n\nvar createTypingIndicator = function createTypingIndicator(onStartTyping, onStopTyping, idleTime) {\n var timer = null;\n\n var start = function start() {\n if (!timer) {\n onStartTyping();\n }\n\n reset();\n };\n\n var stop = function stop() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n onStopTyping();\n }\n };\n\n var reset = function reset() {\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(function () {\n stop();\n }, idleTime);\n };\n\n return {\n start: start,\n stop: stop\n };\n};\n/**\r\n * Calculates the threshold for an SLA based on the current time and the provided threshold.\r\n * @param timeOffset - The time offset in seconds.\r\n * @param threshold - The threshold in seconds or null if not applicable.\r\n * @returns The calculated threshold in seconds or null if the threshold is null.\r\n */\n\n\nvar calculateThreshold = function calculateThreshold(timeOffset, threshold) {\n // Calculate the time left for the SLA to breach or the time since the SLA has missed\n if (threshold === null) return null;\n var currentTime = Math.floor(Date.now() / 1000);\n return timeOffset + threshold - currentTime;\n};\n/**\r\n * Finds the most urgent SLA status based on the threshold.\r\n * @param SLAStatuses - An array of SLAStatus objects.\r\n * @returns The most urgent SLAStatus object.\r\n */\n\n\nvar findMostUrgentSLAStatus = function findMostUrgentSLAStatus(SLAStatuses) {\n // Sort the SLAs based on the threshold and return the most urgent SLA\n SLAStatuses.sort(function (sla1, sla2) {\n return Math.abs(sla1.threshold) - Math.abs(sla2.threshold);\n });\n return SLAStatuses[0];\n};\n/**\r\n * Formats the SLA time in a human-readable format.\r\n * @param seconds - The time in seconds.\r\n * @returns A formatted string representing the time.\r\n */\n\n\nvar formatSLATime = function formatSLATime(seconds) {\n var units = {\n y: 31536000,\n mo: 2592000,\n d: 86400,\n h: 3600,\n m: 60\n };\n\n if (seconds < 60) {\n return '1m';\n } // we will only show two parts, two max granularity's, h-m, y-d, d-h, m, but no seconds\n\n\n var parts = [];\n Object.keys(units).forEach(function (unit) {\n var value = Math.floor(seconds / units[unit]);\n if (seconds < 60 && parts.length > 0) return;\n if (parts.length === 2) return;\n\n if (value > 0) {\n parts.push(value + unit);\n seconds -= value * units[unit];\n }\n });\n return parts.join(' ');\n};\n/**\r\n * Creates an SLA object based on the type, applied SLA, and chat details.\r\n * @param type - The type of SLA (FRT, NRT, RT).\r\n * @param appliedSla - The applied SLA details.\r\n * @param chat - The chat details.\r\n * @returns An object containing the SLA status or null if conditions are not met.\r\n */\n\n\nvar createSLAObject = function createSLAObject(type, appliedSla, chat) {\n var frtThreshold = appliedSla.sla_first_response_time_threshold,\n nrtThreshold = appliedSla.sla_next_response_time_threshold,\n rtThreshold = appliedSla.sla_resolution_time_threshold,\n createdAt = appliedSla.created_at;\n var firstReplyCreatedAt = chat.first_reply_created_at,\n waitingSince = chat.waiting_since,\n status = chat.status;\n var SLATypes = {\n FRT: {\n threshold: calculateThreshold(createdAt, frtThreshold),\n // Check FRT only if threshold is not null and first reply hasn't been made\n condition: frtThreshold !== null && (!firstReplyCreatedAt || firstReplyCreatedAt === 0)\n },\n NRT: {\n threshold: calculateThreshold(waitingSince, nrtThreshold),\n // Check NRT only if threshold is not null, first reply has been made and we are waiting since\n condition: nrtThreshold !== null && !!firstReplyCreatedAt && !!waitingSince\n },\n RT: {\n threshold: calculateThreshold(createdAt, rtThreshold),\n // Check RT only if the conversation is open and threshold is not null\n condition: status === 'open' && rtThreshold !== null\n }\n };\n var SLAStatus = SLATypes[type];\n return SLAStatus ? _extends({}, SLAStatus, {\n type: type\n }) : null;\n};\n/**\r\n * Evaluates SLA conditions and returns an array of SLAStatus objects.\r\n * @param appliedSla - The applied SLA details.\r\n * @param chat - The chat details.\r\n * @returns An array of SLAStatus objects.\r\n */\n\n\nvar evaluateSLAConditions = function evaluateSLAConditions(appliedSla, chat) {\n // Filter out the SLA based on conditions and update the object with the breach status(icon, isSlaMissed)\n var SLATypes = ['FRT', 'NRT', 'RT'];\n return SLATypes.map(function (type) {\n return createSLAObject(type, appliedSla, chat);\n }).filter(function (SLAStatus) {\n return !!SLAStatus && SLAStatus.condition;\n }).map(function (SLAStatus) {\n return _extends({}, SLAStatus, {\n icon: SLAStatus.threshold <= 0 ? 'flame' : 'alarm',\n isSlaMissed: SLAStatus.threshold <= 0\n });\n });\n};\n/**\r\n * Evaluates the SLA status for a given chat and applied SLA.\r\n * @param {Object} params - The parameters object.\r\n * @param params.appliedSla - The applied SLA details.\r\n * @param params.chat - The chat details.\r\n * @returns An object containing the most urgent SLA status.\r\n */\n\n\nvar evaluateSLAStatus = function evaluateSLAStatus(_ref) {\n var appliedSla = _ref.appliedSla,\n chat = _ref.chat;\n if (!appliedSla || !chat) return {\n type: '',\n threshold: '',\n icon: '',\n isSlaMissed: false\n }; // Filter out the SLA and create the object for each breach\n\n var SLAStatuses = evaluateSLAConditions(appliedSla, chat); // Return the most urgent SLA which is latest to breach or has missed\n\n var mostUrgent = findMostUrgentSLAStatus(SLAStatuses);\n return mostUrgent ? {\n type: mostUrgent == null ? void 0 : mostUrgent.type,\n threshold: formatSLATime(mostUrgent.threshold <= 0 ? -mostUrgent.threshold : mostUrgent.threshold),\n icon: mostUrgent.icon,\n isSlaMissed: mostUrgent.isSlaMissed\n } : {\n type: '',\n threshold: '',\n icon: '',\n isSlaMissed: false\n };\n};\n\nexport { clamp, convertSecondsToTimeUnit, createTypingIndicator, debounce, evaluateSLAStatus, formatDate, formatTime, getContrastingTextColor, getMessageVariables, getQuantileIntervals, getUndefinedVariablesInMessage, parseBoolean, quantile, replaceVariablesInMessage, sortAsc, trimContent };","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n"],"sourceRoot":""}