(self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["vendors-node_modules_react-query_devtools_index_js"],{ /***/ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": /*!**********************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***! \**********************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _objectWithoutPropertiesLoose) /* harmony export */ }); function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } /***/ }), /***/ "../node_modules/match-sorter/dist/match-sorter.esm.js": /*!*************************************************************!*\ !*** ../node_modules/match-sorter/dist/match-sorter.esm.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ defaultBaseSortFn: () => (/* binding */ defaultBaseSortFn), /* harmony export */ matchSorter: () => (/* binding */ matchSorter), /* harmony export */ rankings: () => (/* binding */ rankings) /* harmony export */ }); /* harmony import */ var remove_accents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! remove-accents */ "../node_modules/match-sorter/node_modules/remove-accents/index.js"); /* harmony import */ var remove_accents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(remove_accents__WEBPACK_IMPORTED_MODULE_0__); /** * @name match-sorter * @license MIT license. * @copyright (c) 2020 Kent C. Dodds * @author Kent C. Dodds (https://kentcdodds.com) */ const rankings = { CASE_SENSITIVE_EQUAL: 7, EQUAL: 6, STARTS_WITH: 5, WORD_STARTS_WITH: 4, CONTAINS: 3, ACRONYM: 2, MATCHES: 1, NO_MATCH: 0 }; const defaultBaseSortFn = (a, b) => String(a.rankedValue).localeCompare(String(b.rankedValue)); /** * Takes an array of items and a value and returns a new array with the items that match the given value * @param {Array} items - the items to sort * @param {String} value - the value to use for ranking * @param {Object} options - Some options to configure the sorter * @return {Array} - the new sorted array */ function matchSorter(items, value, options) { if (options === void 0) { options = {}; } const { keys, threshold = rankings.MATCHES, baseSort = defaultBaseSortFn, sorter = matchedItems => matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort)) } = options; const matchedItems = items.reduce(reduceItemsToRanked, []); return sorter(matchedItems).map(_ref => { let { item } = _ref; return item; }); function reduceItemsToRanked(matches, item, index) { const rankingInfo = getHighestRanking(item, keys, value, options); const { rank, keyThreshold = threshold } = rankingInfo; if (rank >= keyThreshold) { matches.push({ ...rankingInfo, item, index }); } return matches; } } matchSorter.rankings = rankings; /** * Gets the highest ranking for value for the given item based on its values for the given keys * @param {*} item - the item to rank * @param {Array} keys - the keys to get values from the item for the ranking * @param {String} value - the value to rank against * @param {Object} options - options to control the ranking * @return {{rank: Number, keyIndex: Number, keyThreshold: Number}} - the highest ranking */ function getHighestRanking(item, keys, value, options) { if (!keys) { // if keys is not specified, then we assume the item given is ready to be matched const stringItem = item; return { // ends up being duplicate of 'item' in matches but consistent rankedValue: stringItem, rank: getMatchRanking(stringItem, value, options), keyIndex: -1, keyThreshold: options.threshold }; } const valuesToRank = getAllValuesToRank(item, keys); return valuesToRank.reduce((_ref2, _ref3, i) => { let { rank, rankedValue, keyIndex, keyThreshold } = _ref2; let { itemValue, attributes } = _ref3; let newRank = getMatchRanking(itemValue, value, options); let newRankedValue = rankedValue; const { minRanking, maxRanking, threshold } = attributes; if (newRank < minRanking && newRank >= rankings.MATCHES) { newRank = minRanking; } else if (newRank > maxRanking) { newRank = maxRanking; } if (newRank > rank) { rank = newRank; keyIndex = i; keyThreshold = threshold; newRankedValue = itemValue; } return { rankedValue: newRankedValue, rank, keyIndex, keyThreshold }; }, { rankedValue: item, rank: rankings.NO_MATCH, keyIndex: -1, keyThreshold: options.threshold }); } /** * Gives a rankings score based on how well the two strings match. * @param {String} testString - the string to test against * @param {String} stringToRank - the string to rank * @param {Object} options - options for the match (like keepDiacritics for comparison) * @returns {Number} the ranking for how well stringToRank matches testString */ function getMatchRanking(testString, stringToRank, options) { testString = prepareValueForComparison(testString, options); stringToRank = prepareValueForComparison(stringToRank, options); // too long if (stringToRank.length > testString.length) { return rankings.NO_MATCH; } // case sensitive equals if (testString === stringToRank) { return rankings.CASE_SENSITIVE_EQUAL; } // Lower casing before further comparison testString = testString.toLowerCase(); stringToRank = stringToRank.toLowerCase(); // case insensitive equals if (testString === stringToRank) { return rankings.EQUAL; } // starts with if (testString.startsWith(stringToRank)) { return rankings.STARTS_WITH; } // word starts with if (testString.includes(` ${stringToRank}`)) { return rankings.WORD_STARTS_WITH; } // contains if (testString.includes(stringToRank)) { return rankings.CONTAINS; } else if (stringToRank.length === 1) { // If the only character in the given stringToRank // isn't even contained in the testString, then // it's definitely not a match. return rankings.NO_MATCH; } // acronym if (getAcronym(testString).includes(stringToRank)) { return rankings.ACRONYM; } // will return a number between rankings.MATCHES and // rankings.MATCHES + 1 depending on how close of a match it is. return getClosenessRanking(testString, stringToRank); } /** * Generates an acronym for a string. * * @param {String} string the string for which to produce the acronym * @returns {String} the acronym */ function getAcronym(string) { let acronym = ''; const wordsInString = string.split(' '); wordsInString.forEach(wordInString => { const splitByHyphenWords = wordInString.split('-'); splitByHyphenWords.forEach(splitByHyphenWord => { acronym += splitByHyphenWord.substr(0, 1); }); }); return acronym; } /** * Returns a score based on how spread apart the * characters from the stringToRank are within the testString. * A number close to rankings.MATCHES represents a loose match. A number close * to rankings.MATCHES + 1 represents a tighter match. * @param {String} testString - the string to test against * @param {String} stringToRank - the string to rank * @returns {Number} the number between rankings.MATCHES and * rankings.MATCHES + 1 for how well stringToRank matches testString */ function getClosenessRanking(testString, stringToRank) { let matchingInOrderCharCount = 0; let charNumber = 0; function findMatchingCharacter(matchChar, string, index) { for (let j = index, J = string.length; j < J; j++) { const stringChar = string[j]; if (stringChar === matchChar) { matchingInOrderCharCount += 1; return j + 1; } } return -1; } function getRanking(spread) { const spreadPercentage = 1 / spread; const inOrderPercentage = matchingInOrderCharCount / stringToRank.length; const ranking = rankings.MATCHES + inOrderPercentage * spreadPercentage; return ranking; } const firstIndex = findMatchingCharacter(stringToRank[0], testString, 0); if (firstIndex < 0) { return rankings.NO_MATCH; } charNumber = firstIndex; for (let i = 1, I = stringToRank.length; i < I; i++) { const matchChar = stringToRank[i]; charNumber = findMatchingCharacter(matchChar, testString, charNumber); const found = charNumber > -1; if (!found) { return rankings.NO_MATCH; } } const spread = charNumber - firstIndex; return getRanking(spread); } /** * Sorts items that have a rank, index, and keyIndex * @param {Object} a - the first item to sort * @param {Object} b - the second item to sort * @return {Number} -1 if a should come first, 1 if b should come first, 0 if equal */ function sortRankedValues(a, b, baseSort) { const aFirst = -1; const bFirst = 1; const { rank: aRank, keyIndex: aKeyIndex } = a; const { rank: bRank, keyIndex: bKeyIndex } = b; const same = aRank === bRank; if (same) { if (aKeyIndex === bKeyIndex) { // use the base sort function as a tie-breaker return baseSort(a, b); } else { return aKeyIndex < bKeyIndex ? aFirst : bFirst; } } else { return aRank > bRank ? aFirst : bFirst; } } /** * Prepares value for comparison by stringifying it, removing diacritics (if specified) * @param {String} value - the value to clean * @param {Object} options - {keepDiacritics: whether to remove diacritics} * @return {String} the prepared value */ function prepareValueForComparison(value, _ref4) { let { keepDiacritics } = _ref4; // value might not actually be a string at this point (we don't get to choose) // so part of preparing the value for comparison is ensure that it is a string value = `${value}`; // toString if (!keepDiacritics) { value = remove_accents__WEBPACK_IMPORTED_MODULE_0___default()(value); } return value; } /** * Gets value for key in item at arbitrarily nested keypath * @param {Object} item - the item * @param {Object|Function} key - the potentially nested keypath or property callback * @return {Array} - an array containing the value(s) at the nested keypath */ function getItemValues(item, key) { if (typeof key === 'object') { key = key.key; } let value; if (typeof key === 'function') { value = key(item); } else if (item == null) { value = null; } else if (Object.hasOwnProperty.call(item, key)) { value = item[key]; } else if (key.includes('.')) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call return getNestedValues(key, item); } else { value = null; } // because `value` can also be undefined if (value == null) { return []; } if (Array.isArray(value)) { return value; } return [String(value)]; } /** * Given path: "foo.bar.baz" * And item: {foo: {bar: {baz: 'buzz'}}} * -> 'buzz' * @param path a dot-separated set of keys * @param item the item to get the value from */ function getNestedValues(path, item) { const keys = path.split('.'); let values = [item]; for (let i = 0, I = keys.length; i < I; i++) { const nestedKey = keys[i]; let nestedValues = []; for (let j = 0, J = values.length; j < J; j++) { const nestedItem = values[j]; if (nestedItem == null) continue; if (Object.hasOwnProperty.call(nestedItem, nestedKey)) { const nestedValue = nestedItem[nestedKey]; if (nestedValue != null) { nestedValues.push(nestedValue); } } else if (nestedKey === '*') { // ensure that values is an array nestedValues = nestedValues.concat(nestedItem); } } values = nestedValues; } if (Array.isArray(values[0])) { // keep allowing the implicit wildcard for an array of strings at the end of // the path; don't use `.flat()` because that's not available in node.js v10 const result = []; return result.concat(...values); } // Based on our logic it should be an array of strings by now... // assuming the user's path terminated in strings return values; } /** * Gets all the values for the given keys in the given item and returns an array of those values * @param item - the item from which the values will be retrieved * @param keys - the keys to use to retrieve the values * @return objects with {itemValue, attributes} */ function getAllValuesToRank(item, keys) { const allValues = []; for (let j = 0, J = keys.length; j < J; j++) { const key = keys[j]; const attributes = getKeyAttributes(key); const itemValues = getItemValues(item, key); for (let i = 0, I = itemValues.length; i < I; i++) { allValues.push({ itemValue: itemValues[i], attributes }); } } return allValues; } const defaultKeyAttributes = { maxRanking: Infinity, minRanking: -Infinity }; /** * Gets all the attributes for the given key * @param key - the key from which the attributes will be retrieved * @return object containing the key's attributes */ function getKeyAttributes(key) { if (typeof key === 'string') { return defaultKeyAttributes; } return { ...defaultKeyAttributes, ...key }; } /* eslint no-continue: "off", */ /***/ }), /***/ "../node_modules/match-sorter/node_modules/remove-accents/index.js": /*!*************************************************************************!*\ !*** ../node_modules/match-sorter/node_modules/remove-accents/index.js ***! \*************************************************************************/ /***/ ((module) => { var characterMap = { "À": "A", "Á": "A", "Â": "A", "Ã": "A", "Ä": "A", "Å": "A", "Ấ": "A", "Ắ": "A", "Ẳ": "A", "Ẵ": "A", "Ặ": "A", "Æ": "AE", "Ầ": "A", "Ằ": "A", "Ȃ": "A", "Ả": "A", "Ạ": "A", "Ẩ": "A", "Ẫ": "A", "Ậ": "A", "Ç": "C", "Ḉ": "C", "È": "E", "É": "E", "Ê": "E", "Ë": "E", "Ế": "E", "Ḗ": "E", "Ề": "E", "Ḕ": "E", "Ḝ": "E", "Ȇ": "E", "Ẻ": "E", "Ẽ": "E", "Ẹ": "E", "Ể": "E", "Ễ": "E", "Ệ": "E", "Ì": "I", "Í": "I", "Î": "I", "Ï": "I", "Ḯ": "I", "Ȋ": "I", "Ỉ": "I", "Ị": "I", "Ð": "D", "Ñ": "N", "Ò": "O", "Ó": "O", "Ô": "O", "Õ": "O", "Ö": "O", "Ø": "O", "Ố": "O", "Ṍ": "O", "Ṓ": "O", "Ȏ": "O", "Ỏ": "O", "Ọ": "O", "Ổ": "O", "Ỗ": "O", "Ộ": "O", "Ờ": "O", "Ở": "O", "Ỡ": "O", "Ớ": "O", "Ợ": "O", "Ù": "U", "Ú": "U", "Û": "U", "Ü": "U", "Ủ": "U", "Ụ": "U", "Ử": "U", "Ữ": "U", "Ự": "U", "Ý": "Y", "à": "a", "á": "a", "â": "a", "ã": "a", "ä": "a", "å": "a", "ấ": "a", "ắ": "a", "ẳ": "a", "ẵ": "a", "ặ": "a", "æ": "ae", "ầ": "a", "ằ": "a", "ȃ": "a", "ả": "a", "ạ": "a", "ẩ": "a", "ẫ": "a", "ậ": "a", "ç": "c", "ḉ": "c", "è": "e", "é": "e", "ê": "e", "ë": "e", "ế": "e", "ḗ": "e", "ề": "e", "ḕ": "e", "ḝ": "e", "ȇ": "e", "ẻ": "e", "ẽ": "e", "ẹ": "e", "ể": "e", "ễ": "e", "ệ": "e", "ì": "i", "í": "i", "î": "i", "ï": "i", "ḯ": "i", "ȋ": "i", "ỉ": "i", "ị": "i", "ð": "d", "ñ": "n", "ò": "o", "ó": "o", "ô": "o", "õ": "o", "ö": "o", "ø": "o", "ố": "o", "ṍ": "o", "ṓ": "o", "ȏ": "o", "ỏ": "o", "ọ": "o", "ổ": "o", "ỗ": "o", "ộ": "o", "ờ": "o", "ở": "o", "ỡ": "o", "ớ": "o", "ợ": "o", "ù": "u", "ú": "u", "û": "u", "ü": "u", "ủ": "u", "ụ": "u", "ử": "u", "ữ": "u", "ự": "u", "ý": "y", "ÿ": "y", "Ā": "A", "ā": "a", "Ă": "A", "ă": "a", "Ą": "A", "ą": "a", "Ć": "C", "ć": "c", "Ĉ": "C", "ĉ": "c", "Ċ": "C", "ċ": "c", "Č": "C", "č": "c", "C̆": "C", "c̆": "c", "Ď": "D", "ď": "d", "Đ": "D", "đ": "d", "Ē": "E", "ē": "e", "Ĕ": "E", "ĕ": "e", "Ė": "E", "ė": "e", "Ę": "E", "ę": "e", "Ě": "E", "ě": "e", "Ĝ": "G", "Ǵ": "G", "ĝ": "g", "ǵ": "g", "Ğ": "G", "ğ": "g", "Ġ": "G", "ġ": "g", "Ģ": "G", "ģ": "g", "Ĥ": "H", "ĥ": "h", "Ħ": "H", "ħ": "h", "Ḫ": "H", "ḫ": "h", "Ĩ": "I", "ĩ": "i", "Ī": "I", "ī": "i", "Ĭ": "I", "ĭ": "i", "Į": "I", "į": "i", "İ": "I", "ı": "i", "IJ": "IJ", "ij": "ij", "Ĵ": "J", "ĵ": "j", "Ķ": "K", "ķ": "k", "Ḱ": "K", "ḱ": "k", "K̆": "K", "k̆": "k", "Ĺ": "L", "ĺ": "l", "Ļ": "L", "ļ": "l", "Ľ": "L", "ľ": "l", "Ŀ": "L", "ŀ": "l", "Ł": "l", "ł": "l", "Ḿ": "M", "ḿ": "m", "M̆": "M", "m̆": "m", "Ń": "N", "ń": "n", "Ņ": "N", "ņ": "n", "Ň": "N", "ň": "n", "ʼn": "n", "N̆": "N", "n̆": "n", "Ō": "O", "ō": "o", "Ŏ": "O", "ŏ": "o", "Ő": "O", "ő": "o", "Œ": "OE", "œ": "oe", "P̆": "P", "p̆": "p", "Ŕ": "R", "ŕ": "r", "Ŗ": "R", "ŗ": "r", "Ř": "R", "ř": "r", "R̆": "R", "r̆": "r", "Ȓ": "R", "ȓ": "r", "Ś": "S", "ś": "s", "Ŝ": "S", "ŝ": "s", "Ş": "S", "Ș": "S", "ș": "s", "ş": "s", "Š": "S", "š": "s", "Ţ": "T", "ţ": "t", "ț": "t", "Ț": "T", "Ť": "T", "ť": "t", "Ŧ": "T", "ŧ": "t", "T̆": "T", "t̆": "t", "Ũ": "U", "ũ": "u", "Ū": "U", "ū": "u", "Ŭ": "U", "ŭ": "u", "Ů": "U", "ů": "u", "Ű": "U", "ű": "u", "Ų": "U", "ų": "u", "Ȗ": "U", "ȗ": "u", "V̆": "V", "v̆": "v", "Ŵ": "W", "ŵ": "w", "Ẃ": "W", "ẃ": "w", "X̆": "X", "x̆": "x", "Ŷ": "Y", "ŷ": "y", "Ÿ": "Y", "Y̆": "Y", "y̆": "y", "Ź": "Z", "ź": "z", "Ż": "Z", "ż": "z", "Ž": "Z", "ž": "z", "ſ": "s", "ƒ": "f", "Ơ": "O", "ơ": "o", "Ư": "U", "ư": "u", "Ǎ": "A", "ǎ": "a", "Ǐ": "I", "ǐ": "i", "Ǒ": "O", "ǒ": "o", "Ǔ": "U", "ǔ": "u", "Ǖ": "U", "ǖ": "u", "Ǘ": "U", "ǘ": "u", "Ǚ": "U", "ǚ": "u", "Ǜ": "U", "ǜ": "u", "Ứ": "U", "ứ": "u", "Ṹ": "U", "ṹ": "u", "Ǻ": "A", "ǻ": "a", "Ǽ": "AE", "ǽ": "ae", "Ǿ": "O", "ǿ": "o", "Þ": "TH", "þ": "th", "Ṕ": "P", "ṕ": "p", "Ṥ": "S", "ṥ": "s", "X́": "X", "x́": "x", "Ѓ": "Г", "ѓ": "г", "Ќ": "К", "ќ": "к", "A̋": "A", "a̋": "a", "E̋": "E", "e̋": "e", "I̋": "I", "i̋": "i", "Ǹ": "N", "ǹ": "n", "Ồ": "O", "ồ": "o", "Ṑ": "O", "ṑ": "o", "Ừ": "U", "ừ": "u", "Ẁ": "W", "ẁ": "w", "Ỳ": "Y", "ỳ": "y", "Ȁ": "A", "ȁ": "a", "Ȅ": "E", "ȅ": "e", "Ȉ": "I", "ȉ": "i", "Ȍ": "O", "ȍ": "o", "Ȑ": "R", "ȑ": "r", "Ȕ": "U", "ȕ": "u", "B̌": "B", "b̌": "b", "Č̣": "C", "č̣": "c", "Ê̌": "E", "ê̌": "e", "F̌": "F", "f̌": "f", "Ǧ": "G", "ǧ": "g", "Ȟ": "H", "ȟ": "h", "J̌": "J", "ǰ": "j", "Ǩ": "K", "ǩ": "k", "M̌": "M", "m̌": "m", "P̌": "P", "p̌": "p", "Q̌": "Q", "q̌": "q", "Ř̩": "R", "ř̩": "r", "Ṧ": "S", "ṧ": "s", "V̌": "V", "v̌": "v", "W̌": "W", "w̌": "w", "X̌": "X", "x̌": "x", "Y̌": "Y", "y̌": "y", "A̧": "A", "a̧": "a", "B̧": "B", "b̧": "b", "Ḑ": "D", "ḑ": "d", "Ȩ": "E", "ȩ": "e", "Ɛ̧": "E", "ɛ̧": "e", "Ḩ": "H", "ḩ": "h", "I̧": "I", "i̧": "i", "Ɨ̧": "I", "ɨ̧": "i", "M̧": "M", "m̧": "m", "O̧": "O", "o̧": "o", "Q̧": "Q", "q̧": "q", "U̧": "U", "u̧": "u", "X̧": "X", "x̧": "x", "Z̧": "Z", "z̧": "z", "й":"и", "Й":"И", "ё":"е", "Ё":"Е", }; var chars = Object.keys(characterMap).join('|'); var allAccents = new RegExp(chars, 'g'); var firstAccent = new RegExp(chars, ''); function matcher(match) { return characterMap[match]; } var removeAccents = function(string) { return string.replace(allAccents, matcher); }; var hasAccents = function(string) { return !!string.match(firstAccent); }; module.exports = removeAccents; module.exports.has = hasAccents; module.exports.remove = removeAccents; /***/ }), /***/ "../node_modules/react-query/devtools/index.js": /*!*****************************************************!*\ !*** ../node_modules/react-query/devtools/index.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { if (false) // removed by dead control flow {} else { module.exports = __webpack_require__(/*! ./development */ "../node_modules/react-query/es/devtools/index.js") } /***/ }), /***/ "../node_modules/react-query/es/devtools/Explorer.js": /*!***********************************************************!*\ !*** ../node_modules/react-query/es/devtools/Explorer.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ DefaultRenderer: () => (/* binding */ DefaultRenderer), /* harmony export */ Entry: () => (/* binding */ Entry), /* harmony export */ ExpandButton: () => (/* binding */ ExpandButton), /* harmony export */ Expander: () => (/* binding */ Expander), /* harmony export */ Info: () => (/* binding */ Info), /* harmony export */ Label: () => (/* binding */ Label), /* harmony export */ LabelButton: () => (/* binding */ LabelButton), /* harmony export */ SubEntries: () => (/* binding */ SubEntries), /* harmony export */ Value: () => (/* binding */ Value), /* harmony export */ chunkArray: () => (/* binding */ chunkArray), /* harmony export */ "default": () => (/* binding */ Explorer) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/devtools/utils.js"); var Entry = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('div', { fontFamily: 'Menlo, monospace', fontSize: '1em', lineHeight: '1.7', outline: 'none', wordBreak: 'break-word' }); var Label = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('span', { color: 'white' }); var LabelButton = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('button', { cursor: 'pointer', color: 'white' }); var ExpandButton = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('button', { cursor: 'pointer', color: 'inherit', font: 'inherit', outline: 'inherit', background: 'transparent', border: 'none', padding: 0 }); var Value = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('span', function (_props, theme) { return { color: theme.danger }; }); var SubEntries = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('div', { marginLeft: '.1em', paddingLeft: '1em', borderLeft: '2px solid rgba(0,0,0,.15)' }); var Info = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.styled)('span', { color: 'grey', fontSize: '.7em' }); var Expander = function Expander(_ref) { var expanded = _ref.expanded, _ref$style = _ref.style, style = _ref$style === void 0 ? {} : _ref$style; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("span", { style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({ display: 'inline-block', transition: 'all .1s ease', transform: "rotate(" + (expanded ? 90 : 0) + "deg) " + (style.transform || '') }, style) }, "\u25B6"); }; /** * Chunk elements in the array by size * * when the array cannot be chunked evenly by size, the last chunk will be * filled with the remaining elements * * @example * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']] */ function chunkArray(array, size) { if (size < 1) return []; var i = 0; var result = []; while (i < array.length) { result.push(array.slice(i, i + size)); i = i + size; } return result; } var DefaultRenderer = function DefaultRenderer(_ref2) { var HandleEntry = _ref2.HandleEntry, label = _ref2.label, value = _ref2.value, _ref2$subEntries = _ref2.subEntries, subEntries = _ref2$subEntries === void 0 ? [] : _ref2$subEntries, _ref2$subEntryPages = _ref2.subEntryPages, subEntryPages = _ref2$subEntryPages === void 0 ? [] : _ref2$subEntryPages, type = _ref2.type, _ref2$expanded = _ref2.expanded, expanded = _ref2$expanded === void 0 ? false : _ref2$expanded, toggleExpanded = _ref2.toggleExpanded, pageSize = _ref2.pageSize; var _React$useState = react__WEBPACK_IMPORTED_MODULE_2___default().useState([]), expandedPages = _React$useState[0], setExpandedPages = _React$useState[1]; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Entry, { key: label }, (subEntryPages == null ? void 0 : subEntryPages.length) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ExpandButton, { onClick: function onClick() { return toggleExpanded(); } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Expander, { expanded: expanded }), " ", label, ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Info, null, String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : '', subEntries.length, " ", subEntries.length > 1 ? "items" : "item")), expanded ? subEntryPages.length === 1 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SubEntries, null, subEntries.map(function (entry) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(HandleEntry, { key: entry.label, entry: entry }); })) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SubEntries, null, subEntryPages.map(function (entries, index) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { key: index }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Entry, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(LabelButton, { onClick: function onClick() { return setExpandedPages(function (old) { return old.includes(index) ? old.filter(function (d) { return d !== index; }) : [].concat(old, [index]); }); } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Expander, { expanded: expanded }), " [", index * pageSize, " ...", ' ', index * pageSize + pageSize - 1, "]"), expandedPages.includes(index) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SubEntries, null, entries.map(function (entry) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(HandleEntry, { key: entry.label, entry: entry }); })) : null)); })) : null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Label, null, label, ":"), " ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Value, null, (0,_utils__WEBPACK_IMPORTED_MODULE_3__.displayValue)(value)))); }; function isIterable(x) { return Symbol.iterator in x; } function Explorer(_ref3) { var value = _ref3.value, defaultExpanded = _ref3.defaultExpanded, _ref3$renderer = _ref3.renderer, renderer = _ref3$renderer === void 0 ? DefaultRenderer : _ref3$renderer, _ref3$pageSize = _ref3.pageSize, pageSize = _ref3$pageSize === void 0 ? 100 : _ref3$pageSize, rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(_ref3, ["value", "defaultExpanded", "renderer", "pageSize"]); var _React$useState2 = react__WEBPACK_IMPORTED_MODULE_2___default().useState(Boolean(defaultExpanded)), expanded = _React$useState2[0], setExpanded = _React$useState2[1]; var toggleExpanded = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(function () { return setExpanded(function (old) { return !old; }); }, []); var type = typeof value; var subEntries = []; var makeProperty = function makeProperty(sub) { var _ref4; var subDefaultExpanded = defaultExpanded === true ? (_ref4 = {}, _ref4[sub.label] = true, _ref4) : defaultExpanded == null ? void 0 : defaultExpanded[sub.label]; return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({}, sub, { defaultExpanded: subDefaultExpanded }); }; if (Array.isArray(value)) { type = 'array'; subEntries = value.map(function (d, i) { return makeProperty({ label: i.toString(), value: d }); }); } else if (value !== null && typeof value === 'object' && isIterable(value) && typeof value[Symbol.iterator] === 'function') { type = 'Iterable'; subEntries = Array.from(value, function (val, i) { return makeProperty({ label: i.toString(), value: val }); }); } else if (typeof value === 'object' && value !== null) { type = 'object'; subEntries = Object.entries(value).map(function (_ref5) { var key = _ref5[0], val = _ref5[1]; return makeProperty({ label: key, value: val }); }); } var subEntryPages = chunkArray(subEntries, pageSize); return renderer((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({ HandleEntry: function HandleEntry(_ref6) { var entry = _ref6.entry; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Explorer, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({ value: value, renderer: renderer }, rest, entry)); }, type: type, subEntries: subEntries, subEntryPages: subEntryPages, value: value, expanded: expanded, toggleExpanded: toggleExpanded, pageSize: pageSize }, rest)); } /***/ }), /***/ "../node_modules/react-query/es/devtools/Logo.js": /*!*******************************************************!*\ !*** ../node_modules/react-query/es/devtools/Logo.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Logo) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); function Logo(props) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("svg", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ width: "40px", height: "40px", viewBox: "0 0 190 190", version: "1.1" }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("g", { stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("g", { transform: "translate(-33.000000, 0.000000)" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("path", { d: "M72.7239712,61.3436237 C69.631224,46.362877 68.9675112,34.8727722 70.9666331,26.5293551 C72.1555965,21.5671678 74.3293088,17.5190846 77.6346064,14.5984631 C81.1241394,11.5150478 85.5360327,10.0020122 90.493257,10.0020122 C98.6712013,10.0020122 107.26826,13.7273214 116.455725,20.8044264 C120.20312,23.6910458 124.092437,27.170411 128.131651,31.2444746 C128.45314,30.8310265 128.816542,30.4410453 129.22143,30.0806152 C140.64098,19.9149716 150.255245,13.5989272 158.478408,11.1636507 C163.367899,9.715636 167.958526,9.57768202 172.138936,10.983031 C176.551631,12.4664684 180.06766,15.5329489 182.548314,19.8281091 C186.642288,26.9166735 187.721918,36.2310983 186.195595,47.7320243 C185.573451,52.4199112 184.50985,57.5263831 183.007094,63.0593153 C183.574045,63.1277086 184.142416,63.2532808 184.705041,63.4395297 C199.193932,68.2358678 209.453582,73.3937462 215.665021,79.2882839 C219.360669,82.7953831 221.773972,86.6998434 222.646365,91.0218204 C223.567176,95.5836746 222.669313,100.159332 220.191548,104.451297 C216.105211,111.529614 208.591643,117.11221 197.887587,121.534031 C193.589552,123.309539 188.726579,124.917559 183.293259,126.363748 C183.541176,126.92292 183.733521,127.516759 183.862138,128.139758 C186.954886,143.120505 187.618598,154.61061 185.619477,162.954027 C184.430513,167.916214 182.256801,171.964297 178.951503,174.884919 C175.46197,177.968334 171.050077,179.48137 166.092853,179.48137 C157.914908,179.48137 149.31785,175.756061 140.130385,168.678956 C136.343104,165.761613 132.410866,162.238839 128.325434,158.108619 C127.905075,158.765474 127.388968,159.376011 126.77857,159.919385 C115.35902,170.085028 105.744755,176.401073 97.5215915,178.836349 C92.6321009,180.284364 88.0414736,180.422318 83.8610636,179.016969 C79.4483686,177.533532 75.9323404,174.467051 73.4516862,170.171891 C69.3577116,163.083327 68.2780823,153.768902 69.8044053,142.267976 C70.449038,137.410634 71.56762,132.103898 73.1575891,126.339009 C72.5361041,126.276104 71.9120754,126.144816 71.2949591,125.940529 C56.8060684,121.144191 46.5464184,115.986312 40.3349789,110.091775 C36.6393312,106.584675 34.2260275,102.680215 33.3536352,98.3582381 C32.4328237,93.7963839 33.3306866,89.2207269 35.8084524,84.9287618 C39.8947886,77.8504443 47.4083565,72.2678481 58.1124133,67.8460273 C62.5385143,66.0176154 67.5637208,64.366822 73.1939394,62.8874674 C72.9933393,62.3969171 72.8349374,61.8811235 72.7239712,61.3436237 Z", fill: "#002C4B", fillRule: "nonzero", transform: "translate(128.000000, 95.000000) scale(-1, 1) translate(-128.000000, -95.000000) " }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("path", { d: "M113.396882,64 L142.608177,64 C144.399254,64 146.053521,64.958025 146.944933,66.5115174 L161.577138,92.0115174 C162.461464,93.5526583 162.461464,95.4473417 161.577138,96.9884826 L146.944933,122.488483 C146.053521,124.041975 144.399254,125 142.608177,125 L113.396882,125 C111.605806,125 109.951539,124.041975 109.060126,122.488483 L94.4279211,96.9884826 C93.543596,95.4473417 93.543596,93.5526583 94.4279211,92.0115174 L109.060126,66.5115174 C109.951539,64.958025 111.605806,64 113.396882,64 Z M138.987827,70.2765273 C140.779849,70.2765273 142.434839,71.2355558 143.325899,72.7903404 L154.343038,92.0138131 C155.225607,93.5537825 155.225607,95.4462175 154.343038,96.9861869 L143.325899,116.20966 C142.434839,117.764444 140.779849,118.723473 138.987827,118.723473 L117.017233,118.723473 C115.225211,118.723473 113.570221,117.764444 112.67916,116.20966 L101.662022,96.9861869 C100.779452,95.4462175 100.779452,93.5537825 101.662022,92.0138131 L112.67916,72.7903404 C113.570221,71.2355558 115.225211,70.2765273 117.017233,70.2765273 L138.987827,70.2765273 Z M135.080648,77.1414791 L120.924411,77.1414791 C119.134228,77.1414791 117.480644,78.0985567 116.5889,79.6508285 L116.5889,79.6508285 L109.489217,92.0093494 C108.603232,93.5515958 108.603232,95.4484042 109.489217,96.9906506 L109.489217,96.9906506 L116.5889,109.349172 C117.480644,110.901443 119.134228,111.858521 120.924411,111.858521 L120.924411,111.858521 L135.080648,111.858521 C136.870831,111.858521 138.524416,110.901443 139.41616,109.349172 L139.41616,109.349172 L146.515843,96.9906506 C147.401828,95.4484042 147.401828,93.5515958 146.515843,92.0093494 L146.515843,92.0093494 L139.41616,79.6508285 C138.524416,78.0985567 136.870831,77.1414791 135.080648,77.1414791 L135.080648,77.1414791 Z M131.319186,83.7122186 C133.108028,83.7122186 134.760587,84.6678753 135.652827,86.2183156 L138.983552,92.0060969 C139.87203,93.5500005 139.87203,95.4499995 138.983552,96.9939031 L135.652827,102.781684 C134.760587,104.332125 133.108028,105.287781 131.319186,105.287781 L124.685874,105.287781 C122.897032,105.287781 121.244473,104.332125 120.352233,102.781684 L117.021508,96.9939031 C116.13303,95.4499995 116.13303,93.5500005 117.021508,92.0060969 L120.352233,86.2183156 C121.244473,84.6678753 122.897032,83.7122186 124.685874,83.7122186 L131.319186,83.7122186 Z M128.003794,90.1848875 C126.459294,90.1848875 125.034382,91.0072828 124.263005,92.3424437 C123.491732,93.6774232 123.491732,95.3225768 124.263005,96.6575563 C125.034382,97.9927172 126.459294,98.8151125 128.001266,98.8151125 L128.001266,98.8151125 C129.545766,98.8151125 130.970678,97.9927172 131.742055,96.6575563 C132.513327,95.3225768 132.513327,93.6774232 131.742055,92.3424437 C130.970678,91.0072828 129.545766,90.1848875 128.003794,90.1848875 L128.003794,90.1848875 Z M93,94.5009646 L100.767764,94.5009646", fill: "#FFD94C" }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("path", { d: "M87.8601729,108.357758 C89.1715224,107.608286 90.8360246,108.074601 91.5779424,109.399303 L91.5779424,109.399303 L92.0525843,110.24352 C95.8563392,116.982993 99.8190116,123.380176 103.940602,129.435068 C108.807881,136.585427 114.28184,143.82411 120.362479,151.151115 C121.316878,152.30114 121.184944,154.011176 120.065686,154.997937 L120.065686,154.997937 L119.454208,155.534625 C99.3465389,173.103314 86.2778188,176.612552 80.2480482,166.062341 C74.3500652,155.742717 76.4844915,136.982888 86.6513274,109.782853 C86.876818,109.179582 87.3045861,108.675291 87.8601729,108.357758 Z M173.534177,129.041504 C174.986131,128.785177 176.375496,129.742138 176.65963,131.194242 L176.65963,131.194242 L176.812815,131.986376 C181.782365,157.995459 178.283348,171 166.315764,171 C154.609745,171 139.708724,159.909007 121.612702,137.727022 C121.211349,137.235047 120.994572,136.617371 121,135.981509 C121.013158,134.480686 122.235785,133.274651 123.730918,133.287756 L123.730918,133.287756 L124.684654,133.294531 C132.305698,133.335994 139.714387,133.071591 146.910723,132.501323 C155.409039,131.82788 164.283523,130.674607 173.534177,129.041504 Z M180.408726,73.8119663 C180.932139,72.4026903 182.508386,71.6634537 183.954581,72.149012 L183.954581,72.149012 L184.742552,72.4154854 C210.583763,81.217922 220.402356,90.8916805 214.198332,101.436761 C208.129904,111.751366 190.484347,119.260339 161.26166,123.963678 C160.613529,124.067994 159.948643,123.945969 159.382735,123.618843 C158.047025,122.846729 157.602046,121.158214 158.388848,119.847438 L158.388848,119.847438 L158.889328,119.0105 C162.877183,112.31633 166.481358,105.654262 169.701854,99.0242957 C173.50501,91.1948179 177.073967,82.7907081 180.408726,73.8119663 Z M94.7383398,66.0363218 C95.3864708,65.9320063 96.0513565,66.0540315 96.6172646,66.3811573 C97.9529754,67.153271 98.3979538,68.8417862 97.6111517,70.1525615 L97.6111517,70.1525615 L97.1106718,70.9895001 C93.1228168,77.6836699 89.5186416,84.3457379 86.2981462,90.9757043 C82.49499,98.8051821 78.9260328,107.209292 75.5912744,116.188034 C75.0678608,117.59731 73.4916142,118.336546 72.045419,117.850988 L72.045419,117.850988 L71.2574475,117.584515 C45.4162372,108.782078 35.597644,99.1083195 41.8016679,88.5632391 C47.8700957,78.2486335 65.515653,70.7396611 94.7383398,66.0363218 Z M136.545792,34.4653746 C156.653461,16.8966864 169.722181,13.3874478 175.751952,23.9376587 C181.649935,34.2572826 179.515508,53.0171122 169.348673,80.2171474 C169.123182,80.8204179 168.695414,81.324709 168.139827,81.6422422 C166.828478,82.3917144 165.163975,81.9253986 164.422058,80.6006966 L164.422058,80.6006966 L163.947416,79.7564798 C160.143661,73.0170065 156.180988,66.6198239 152.059398,60.564932 C147.192119,53.4145727 141.71816,46.1758903 135.637521,38.8488847 C134.683122,37.6988602 134.815056,35.9888243 135.934314,35.0020629 L135.934314,35.0020629 Z M90.6842361,18 C102.390255,18 117.291276,29.0909926 135.387298,51.2729777 C135.788651,51.7649527 136.005428,52.3826288 136,53.0184911 C135.986842,54.5193144 134.764215,55.7253489 133.269082,55.7122445 L133.269082,55.7122445 L132.315346,55.7054689 C124.694302,55.6640063 117.285613,55.9284091 110.089277,56.4986773 C101.590961,57.17212 92.7164767,58.325393 83.4658235,59.9584962 C82.0138691,60.2148231 80.6245044,59.2578618 80.3403697,57.805758 L80.3403697,57.805758 L80.1871846,57.0136235 C75.2176347,31.0045412 78.7166519,18 90.6842361,18 Z", fill: "#FF4154" })))); } /***/ }), /***/ "../node_modules/react-query/es/devtools/devtools.js": /*!***********************************************************!*\ !*** ../node_modules/react-query/es/devtools/devtools.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ReactQueryDevtools: () => (/* binding */ ReactQueryDevtools), /* harmony export */ ReactQueryDevtoolsPanel: () => (/* binding */ ReactQueryDevtoolsPanel) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-query */ "../node_modules/react-query/es/index.js"); /* harmony import */ var match_sorter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! match-sorter */ "../node_modules/match-sorter/dist/match-sorter.esm.js"); /* harmony import */ var _useLocalStorage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useLocalStorage */ "../node_modules/react-query/es/devtools/useLocalStorage.js"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/devtools/utils.js"); /* harmony import */ var _styledComponents__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styledComponents */ "../node_modules/react-query/es/devtools/styledComponents.js"); /* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./theme */ "../node_modules/react-query/es/devtools/theme.js"); /* harmony import */ var _Explorer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Explorer */ "../node_modules/react-query/es/devtools/Explorer.js"); /* harmony import */ var _Logo__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Logo */ "../node_modules/react-query/es/devtools/Logo.js"); /* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../core/utils */ "../node_modules/react-query/es/core/utils.js"); var isServer = typeof window === 'undefined'; function ReactQueryDevtools(_ref) { var initialIsOpen = _ref.initialIsOpen, _ref$panelProps = _ref.panelProps, panelProps = _ref$panelProps === void 0 ? {} : _ref$panelProps, _ref$closeButtonProps = _ref.closeButtonProps, closeButtonProps = _ref$closeButtonProps === void 0 ? {} : _ref$closeButtonProps, _ref$toggleButtonProp = _ref.toggleButtonProps, toggleButtonProps = _ref$toggleButtonProp === void 0 ? {} : _ref$toggleButtonProp, _ref$position = _ref.position, position = _ref$position === void 0 ? 'bottom-left' : _ref$position, _ref$containerElement = _ref.containerElement, Container = _ref$containerElement === void 0 ? 'aside' : _ref$containerElement, styleNonce = _ref.styleNonce; var rootRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(null); var panelRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(null); var _useLocalStorage = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsOpen', initialIsOpen), isOpen = _useLocalStorage[0], setIsOpen = _useLocalStorage[1]; var _useLocalStorage2 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsHeight', null), devtoolsHeight = _useLocalStorage2[0], setDevtoolsHeight = _useLocalStorage2[1]; var _useSafeState = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useSafeState)(false), isResolvedOpen = _useSafeState[0], setIsResolvedOpen = _useSafeState[1]; var _useSafeState2 = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useSafeState)(false), isResizing = _useSafeState2[0], setIsResizing = _useSafeState2[1]; var isMounted = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useIsMounted)(); var _handleDragStart = function handleDragStart(panelElement, startEvent) { var _panelElement$getBoun; if (startEvent.button !== 0) return; // Only allow left click for drag setIsResizing(true); var dragInfo = { originalHeight: (_panelElement$getBoun = panelElement == null ? void 0 : panelElement.getBoundingClientRect().height) != null ? _panelElement$getBoun : 0, pageY: startEvent.pageY }; var run = function run(moveEvent) { var delta = dragInfo.pageY - moveEvent.pageY; var newHeight = (dragInfo == null ? void 0 : dragInfo.originalHeight) + delta; setDevtoolsHeight(newHeight); if (newHeight < 70) { setIsOpen(false); } else { setIsOpen(true); } }; var unsub = function unsub() { setIsResizing(false); document.removeEventListener('mousemove', run); document.removeEventListener('mouseUp', unsub); }; document.addEventListener('mousemove', run); document.addEventListener('mouseup', unsub); }; react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(function () { setIsResolvedOpen(isOpen != null ? isOpen : false); }, [isOpen, isResolvedOpen, setIsResolvedOpen]); // Toggle panel visibility before/after transition (depending on direction). // Prevents focusing in a closed panel. react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(function () { var ref = panelRef.current; if (ref) { var handlePanelTransitionStart = function handlePanelTransitionStart() { if (ref && isResolvedOpen) { ref.style.visibility = 'visible'; } }; var handlePanelTransitionEnd = function handlePanelTransitionEnd() { if (ref && !isResolvedOpen) { ref.style.visibility = 'hidden'; } }; ref.addEventListener('transitionstart', handlePanelTransitionStart); ref.addEventListener('transitionend', handlePanelTransitionEnd); return function () { ref.removeEventListener('transitionstart', handlePanelTransitionStart); ref.removeEventListener('transitionend', handlePanelTransitionEnd); }; } }, [isResolvedOpen]); (react__WEBPACK_IMPORTED_MODULE_2___default())[isServer ? 'useEffect' : 'useLayoutEffect'](function () { if (isResolvedOpen) { var _rootRef$current, _rootRef$current$pare; var previousValue = (_rootRef$current = rootRef.current) == null ? void 0 : (_rootRef$current$pare = _rootRef$current.parentElement) == null ? void 0 : _rootRef$current$pare.style.paddingBottom; var run = function run() { var _panelRef$current, _rootRef$current2; var containerHeight = (_panelRef$current = panelRef.current) == null ? void 0 : _panelRef$current.getBoundingClientRect().height; if ((_rootRef$current2 = rootRef.current) == null ? void 0 : _rootRef$current2.parentElement) { rootRef.current.parentElement.style.paddingBottom = containerHeight + "px"; } }; run(); if (typeof window !== 'undefined') { window.addEventListener('resize', run); return function () { var _rootRef$current3; window.removeEventListener('resize', run); if (((_rootRef$current3 = rootRef.current) == null ? void 0 : _rootRef$current3.parentElement) && typeof previousValue === 'string') { rootRef.current.parentElement.style.paddingBottom = previousValue; } }; } } }, [isResolvedOpen]); var _panelProps$style = panelProps.style, panelStyle = _panelProps$style === void 0 ? {} : _panelProps$style, otherPanelProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(panelProps, ["style"]); var _closeButtonProps$sty = closeButtonProps.style, closeButtonStyle = _closeButtonProps$sty === void 0 ? {} : _closeButtonProps$sty, onCloseClick = closeButtonProps.onClick, otherCloseButtonProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(closeButtonProps, ["style", "onClick"]); var _toggleButtonProps$st = toggleButtonProps.style, toggleButtonStyle = _toggleButtonProps$st === void 0 ? {} : _toggleButtonProps$st, onToggleClick = toggleButtonProps.onClick, otherToggleButtonProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(toggleButtonProps, ["style", "onClick"]); // Do not render on the server if (!isMounted()) return null; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(Container, { ref: rootRef, className: "ReactQueryDevtools", "aria-label": "React Query Devtools" }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_theme__WEBPACK_IMPORTED_MODULE_8__.ThemeProvider, { theme: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ReactQueryDevtoolsPanel, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ ref: panelRef, styleNonce: styleNonce }, otherPanelProps, { style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ position: 'fixed', bottom: '0', right: '0', zIndex: 99999, width: '100%', height: devtoolsHeight != null ? devtoolsHeight : 500, maxHeight: '90%', boxShadow: '0 0 20px rgba(0,0,0,.3)', borderTop: "1px solid " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.gray, transformOrigin: 'top', // visibility will be toggled after transitions, but set initial state here visibility: isOpen ? 'visible' : 'hidden' }, panelStyle, isResizing ? { transition: "none" } : { transition: "all .2s ease" }, isResolvedOpen ? { opacity: 1, pointerEvents: 'all', transform: "translateY(0) scale(1)" } : { opacity: 0, pointerEvents: 'none', transform: "translateY(15px) scale(1.02)" }), isOpen: isResolvedOpen, setIsOpen: setIsOpen, handleDragStart: function handleDragStart(e) { return _handleDragStart(panelRef.current, e); } })), isResolvedOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ type: "button", "aria-controls": "ReactQueryDevtoolsPanel", "aria-haspopup": "true", "aria-expanded": "true" }, otherCloseButtonProps, { onClick: function onClick(e) { setIsOpen(false); onCloseClick && onCloseClick(e); }, style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ position: 'fixed', zIndex: 99999, margin: '.5em', bottom: 0 }, position === 'top-right' ? { right: '0' } : position === 'top-left' ? { left: '0' } : position === 'bottom-right' ? { right: '0' } : { left: '0' }, closeButtonStyle) }), "Close") : null), !isResolvedOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("button", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ type: "button" }, otherToggleButtonProps, { "aria-label": "Open React Query Devtools", "aria-controls": "ReactQueryDevtoolsPanel", "aria-haspopup": "true", "aria-expanded": "false", onClick: function onClick(e) { setIsOpen(true); onToggleClick && onToggleClick(e); }, style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ background: 'none', border: 0, padding: 0, position: 'fixed', zIndex: 99999, display: 'inline-flex', fontSize: '1.5em', margin: '.5em', cursor: 'pointer', width: 'fit-content' }, position === 'top-right' ? { top: '0', right: '0' } : position === 'top-left' ? { top: '0', left: '0' } : position === 'bottom-right' ? { bottom: '0', right: '0' } : { bottom: '0', left: '0' }, toggleButtonStyle) }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Logo__WEBPACK_IMPORTED_MODULE_10__["default"], { "aria-hidden": true })) : null); } var getStatusRank = function getStatusRank(q) { return q.state.isFetching ? 0 : !q.getObserversCount() ? 3 : q.isStale() ? 2 : 1; }; var sortFns = { 'Status > Last Updated': function StatusLastUpdated(a, b) { var _sortFns$LastUpdated; return getStatusRank(a) === getStatusRank(b) ? (_sortFns$LastUpdated = sortFns['Last Updated']) == null ? void 0 : _sortFns$LastUpdated.call(sortFns, a, b) : getStatusRank(a) > getStatusRank(b) ? 1 : -1; }, 'Query Hash': function QueryHash(a, b) { return a.queryHash > b.queryHash ? 1 : -1; }, 'Last Updated': function LastUpdated(a, b) { return a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1; } }; var ReactQueryDevtoolsPanel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef(function ReactQueryDevtoolsPanel(props, ref) { var _activeQuery$state; var _props$isOpen = props.isOpen, isOpen = _props$isOpen === void 0 ? true : _props$isOpen, styleNonce = props.styleNonce, setIsOpen = props.setIsOpen, handleDragStart = props.handleDragStart, panelProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["isOpen", "styleNonce", "setIsOpen", "handleDragStart"]); var queryClient = (0,react_query__WEBPACK_IMPORTED_MODULE_3__.useQueryClient)(); var queryCache = queryClient.getQueryCache(); var _useLocalStorage3 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsSortFn', Object.keys(sortFns)[0]), sort = _useLocalStorage3[0], setSort = _useLocalStorage3[1]; var _useLocalStorage4 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsFilter', ''), filter = _useLocalStorage4[0], setFilter = _useLocalStorage4[1]; var _useLocalStorage5 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsSortDesc', false), sortDesc = _useLocalStorage5[0], setSortDesc = _useLocalStorage5[1]; var sortFn = react__WEBPACK_IMPORTED_MODULE_2___default().useMemo(function () { return sortFns[sort]; }, [sort]); (react__WEBPACK_IMPORTED_MODULE_2___default())[isServer ? 'useEffect' : 'useLayoutEffect'](function () { if (!sortFn) { setSort(Object.keys(sortFns)[0]); } }, [setSort, sortFn]); var _useSafeState3 = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.useSafeState)(Object.values(queryCache.findAll())), unsortedQueries = _useSafeState3[0], setUnsortedQueries = _useSafeState3[1]; var _useLocalStorage6 = (0,_useLocalStorage__WEBPACK_IMPORTED_MODULE_5__["default"])('reactQueryDevtoolsActiveQueryHash', ''), activeQueryHash = _useLocalStorage6[0], setActiveQueryHash = _useLocalStorage6[1]; var queries = react__WEBPACK_IMPORTED_MODULE_2___default().useMemo(function () { var sorted = [].concat(unsortedQueries).sort(sortFn); if (sortDesc) { sorted.reverse(); } if (!filter) { return sorted; } return (0,match_sorter__WEBPACK_IMPORTED_MODULE_4__.matchSorter)(sorted, filter, { keys: ['queryHash'] }).filter(function (d) { return d.queryHash; }); }, [sortDesc, sortFn, unsortedQueries, filter]); var activeQuery = react__WEBPACK_IMPORTED_MODULE_2___default().useMemo(function () { return queries.find(function (query) { return query.queryHash === activeQueryHash; }); }, [activeQueryHash, queries]); var hasFresh = queries.filter(function (q) { return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'fresh'; }).length; var hasFetching = queries.filter(function (q) { return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'fetching'; }).length; var hasStale = queries.filter(function (q) { return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'stale'; }).length; var hasInactive = queries.filter(function (q) { return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(q) === 'inactive'; }).length; react__WEBPACK_IMPORTED_MODULE_2___default().useEffect(function () { if (isOpen) { var unsubscribe = queryCache.subscribe(function () { setUnsortedQueries(Object.values(queryCache.getAll())); }); // re-subscribing after the panel is closed and re-opened won't trigger the callback, // So we'll manually populate our state setUnsortedQueries(Object.values(queryCache.getAll())); return unsubscribe; } return undefined; }, [isOpen, sort, sortFn, sortDesc, setUnsortedQueries, queryCache]); var handleRefetch = function handleRefetch() { var promise = activeQuery == null ? void 0 : activeQuery.fetch(); promise == null ? void 0 : promise.catch(_core_utils__WEBPACK_IMPORTED_MODULE_11__.noop); }; return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_theme__WEBPACK_IMPORTED_MODULE_8__.ThemeProvider, { theme: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Panel, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ ref: ref, className: "ReactQueryDevtoolsPanel", "aria-label": "React Query Devtools Panel", id: "ReactQueryDevtoolsPanel" }, panelProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("style", { nonce: styleNonce, dangerouslySetInnerHTML: { __html: "\n .ReactQueryDevtoolsPanel * {\n scrollbar-color: " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt + " " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.gray + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {\n background: " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {\n background: " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.gray + ";\n border-radius: .5em;\n border: 3px solid " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt + ";\n }\n " } }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { position: 'absolute', left: 0, top: 0, width: '100%', height: '4px', marginBottom: '-4px', cursor: 'row-resize', zIndex: 100000 }, onMouseDown: handleDragStart }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { flex: '1 1 500px', minHeight: '40%', maxHeight: '100%', overflow: 'auto', borderRight: "1px solid " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.grayAlt, display: isOpen ? 'flex' : 'none', flexDirection: 'column' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { padding: '.5em', background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt, display: 'flex', justifyContent: 'space-between', alignItems: 'center' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("button", { type: "button", "aria-label": "Close React Query Devtools", "aria-controls": "ReactQueryDevtoolsPanel", "aria-haspopup": "true", "aria-expanded": "true", onClick: function onClick() { return setIsOpen(false); }, style: { display: 'inline-flex', background: 'none', border: 0, padding: 0, marginRight: '.5em', cursor: 'pointer' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Logo__WEBPACK_IMPORTED_MODULE_10__["default"], { "aria-hidden": true })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { display: 'flex', flexDirection: 'column' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.QueryKeys, { style: { marginBottom: '.5em' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.QueryKey, { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.success, opacity: hasFresh ? 1 : 0.3 } }, "fresh ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, null, "(", hasFresh, ")")), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.QueryKey, { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.active, opacity: hasFetching ? 1 : 0.3 } }, "fetching ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, null, "(", hasFetching, ")")), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.QueryKey, { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.warning, color: 'black', textShadow: '0', opacity: hasStale ? 1 : 0.3 } }, "stale ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, null, "(", hasStale, ")")), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.QueryKey, { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.gray, opacity: hasInactive ? 1 : 0.3 } }, "inactive ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, null, "(", hasInactive, ")"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { display: 'flex', alignItems: 'center' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Input, { placeholder: "Filter", "aria-label": "Filter by queryhash", value: filter != null ? filter : '', onChange: function onChange(e) { return setFilter(e.target.value); }, onKeyDown: function onKeyDown(e) { if (e.key === 'Escape') setFilter(''); }, style: { flex: '1', marginRight: '.5em', width: '100%' } }), !filter ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Select, { "aria-label": "Sort queries", value: sort, onChange: function onChange(e) { return setSort(e.target.value); }, style: { flex: '1', minWidth: 75, marginRight: '.5em' } }, Object.keys(sortFns).map(function (key) { return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("option", { key: key, value: key }, "Sort by ", key); })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Button, { type: "button", onClick: function onClick() { return setSortDesc(function (old) { return !old; }); }, style: { padding: '.3em .4em' } }, sortDesc ? '⬇ Desc' : '⬆ Asc')) : null))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { overflowY: 'auto', flex: '1' } }, queries.map(function (query, i) { var isDisabled = query.getObserversCount() > 0 && !query.isActive(); return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { key: query.queryHash || i, role: "button", "aria-label": "Open query details for " + query.queryHash, onClick: function onClick() { return setActiveQueryHash(activeQueryHash === query.queryHash ? '' : query.queryHash); }, style: { display: 'flex', borderBottom: "solid 1px " + _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.grayAlt, cursor: 'pointer', background: query === activeQuery ? 'rgba(255,255,255,.1)' : undefined } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { flex: '0 0 auto', width: '2em', height: '2em', background: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusColor)(query, _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme), display: 'flex', alignItems: 'center', justifyContent: 'center', fontWeight: 'bold', textShadow: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(query) === 'stale' ? '0' : '0 0 10px black', color: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(query) === 'stale' ? 'black' : 'white' } }, query.getObserversCount()), isDisabled ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { flex: '0 0 auto', height: '2em', background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.gray, display: 'flex', alignItems: 'center', fontWeight: 'bold', padding: '0 0.5em' } }, "disabled") : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, { style: { padding: '.5em' } }, "" + query.queryHash)); }))), activeQuery ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.ActiveQueryPanel, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { padding: '.5em', background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt, position: 'sticky', top: 0, zIndex: 1 } }, "Query Details"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { padding: '.5em' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { marginBottom: '.5em', display: 'flex', alignItems: 'start', justifyContent: 'space-between' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, { style: { lineHeight: '1.8em' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("pre", { style: { margin: 0, padding: 0, overflow: 'auto' } }, JSON.stringify(activeQuery.queryKey, null, 2))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("span", { style: { padding: '0.3em .6em', borderRadius: '0.4em', fontWeight: 'bold', textShadow: '0 2px 10px black', background: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusColor)(activeQuery, _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme), flexShrink: 0 } }, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getQueryStatusLabel)(activeQuery))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { marginBottom: '.5em', display: 'flex', alignItems: 'center', justifyContent: 'space-between' } }, "Observers: ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, null, activeQuery.getObserversCount())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' } }, "Last Updated:", ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Code, null, new Date(activeQuery.state.dataUpdatedAt).toLocaleTimeString()))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt, padding: '.5em', position: 'sticky', top: 0, zIndex: 1 } }, "Actions"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { padding: '0.5em' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Button, { type: "button", onClick: handleRefetch, disabled: activeQuery.state.isFetching, style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.active } }, "Refetch"), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Button, { type: "button", onClick: function onClick() { return queryClient.invalidateQueries(activeQuery); }, style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.warning, color: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.inputTextColor } }, "Invalidate"), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Button, { type: "button", onClick: function onClick() { return queryClient.resetQueries(activeQuery); }, style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.gray } }, "Reset"), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_styledComponents__WEBPACK_IMPORTED_MODULE_7__.Button, { type: "button", onClick: function onClick() { return queryClient.removeQueries(activeQuery); }, style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.danger } }, "Remove")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt, padding: '.5em', position: 'sticky', top: 0, zIndex: 1 } }, "Data Explorer"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { padding: '.5em' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Explorer__WEBPACK_IMPORTED_MODULE_9__["default"], { label: "Data", value: activeQuery == null ? void 0 : (_activeQuery$state = activeQuery.state) == null ? void 0 : _activeQuery$state.data, defaultExpanded: {} })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { background: _theme__WEBPACK_IMPORTED_MODULE_8__.defaultTheme.backgroundAlt, padding: '.5em', position: 'sticky', top: 0, zIndex: 1 } }, "Query Explorer"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement("div", { style: { padding: '.5em' } }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_Explorer__WEBPACK_IMPORTED_MODULE_9__["default"], { label: "Query", value: activeQuery, defaultExpanded: { queryKey: true } }))) : null)); }); /***/ }), /***/ "../node_modules/react-query/es/devtools/index.js": /*!********************************************************!*\ !*** ../node_modules/react-query/es/devtools/index.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ReactQueryDevtools: () => (/* reexport safe */ _devtools__WEBPACK_IMPORTED_MODULE_0__.ReactQueryDevtools), /* harmony export */ ReactQueryDevtoolsPanel: () => (/* reexport safe */ _devtools__WEBPACK_IMPORTED_MODULE_0__.ReactQueryDevtoolsPanel) /* harmony export */ }); /* harmony import */ var _devtools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./devtools */ "../node_modules/react-query/es/devtools/devtools.js"); /***/ }), /***/ "../node_modules/react-query/es/devtools/styledComponents.js": /*!*******************************************************************!*\ !*** ../node_modules/react-query/es/devtools/styledComponents.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ActiveQueryPanel: () => (/* binding */ ActiveQueryPanel), /* harmony export */ Button: () => (/* binding */ Button), /* harmony export */ Code: () => (/* binding */ Code), /* harmony export */ Input: () => (/* binding */ Input), /* harmony export */ Panel: () => (/* binding */ Panel), /* harmony export */ QueryKey: () => (/* binding */ QueryKey), /* harmony export */ QueryKeys: () => (/* binding */ QueryKeys), /* harmony export */ Select: () => (/* binding */ Select) /* harmony export */ }); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "../node_modules/react-query/es/devtools/utils.js"); var Panel = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('div', function (_props, theme) { return { fontSize: 'clamp(12px, 1.5vw, 14px)', fontFamily: "sans-serif", display: 'flex', backgroundColor: theme.background, color: theme.foreground }; }, { '(max-width: 700px)': { flexDirection: 'column' }, '(max-width: 600px)': { fontSize: '.9em' // flexDirection: 'column', } }); var ActiveQueryPanel = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('div', function () { return { flex: '1 1 500px', display: 'flex', flexDirection: 'column', overflow: 'auto', height: '100%' }; }, { '(max-width: 700px)': function maxWidth700px(_props, theme) { return { borderTop: "2px solid " + theme.gray }; } }); var Button = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('button', function (props, theme) { return { appearance: 'none', fontSize: '.9em', fontWeight: 'bold', background: theme.gray, border: '0', borderRadius: '.3em', color: 'white', padding: '.5em', opacity: props.disabled ? '.5' : undefined, cursor: 'pointer' }; }); var QueryKeys = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('span', { display: 'inline-block', fontSize: '0.9em' }); var QueryKey = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('span', { display: 'inline-flex', alignItems: 'center', padding: '.2em .4em', fontWeight: 'bold', textShadow: '0 0 10px black', borderRadius: '.2em' }); var Code = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('code', { fontSize: '.9em', color: 'inherit', background: 'inherit' }); var Input = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('input', function (_props, theme) { return { backgroundColor: theme.inputBackgroundColor, border: 0, borderRadius: '.2em', color: theme.inputTextColor, fontSize: '.9em', lineHeight: "1.3", padding: '.3em .4em' }; }); var Select = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.styled)('select', function (_props, theme) { return { display: "inline-block", fontSize: ".9em", fontFamily: "sans-serif", fontWeight: 'normal', lineHeight: "1.3", padding: ".3em 1.5em .3em .5em", height: 'auto', border: 0, borderRadius: ".2em", appearance: "none", WebkitAppearance: 'none', backgroundColor: theme.inputBackgroundColor, backgroundImage: "url(\"data:image/svg+xml;utf8,\")", backgroundRepeat: "no-repeat", backgroundPosition: "right .55em center", backgroundSize: ".65em auto, 100%", color: theme.inputTextColor }; }, { '(max-width: 500px)': { display: 'none' } }); /***/ }), /***/ "../node_modules/react-query/es/devtools/theme.js": /*!********************************************************!*\ !*** ../node_modules/react-query/es/devtools/theme.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider), /* harmony export */ defaultTheme: () => (/* binding */ defaultTheme), /* harmony export */ useTheme: () => (/* binding */ useTheme) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); var defaultTheme = { background: '#0b1521', backgroundAlt: '#132337', foreground: 'white', gray: '#3f4e60', grayAlt: '#222e3e', inputBackgroundColor: '#fff', inputTextColor: '#000', success: '#00ab52', danger: '#ff0085', active: '#006bff', warning: '#ffb200' }; var ThemeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createContext(defaultTheme); function ThemeProvider(_ref) { var theme = _ref.theme, rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, ["theme"]); return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ThemeContext.Provider, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ value: theme }, rest)); } function useTheme() { return react__WEBPACK_IMPORTED_MODULE_2___default().useContext(ThemeContext); } /***/ }), /***/ "../node_modules/react-query/es/devtools/useLocalStorage.js": /*!******************************************************************!*\ !*** ../node_modules/react-query/es/devtools/useLocalStorage.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ useLocalStorage) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); var getItem = function getItem(key) { try { var itemValue = localStorage.getItem(key); if (typeof itemValue === 'string') { return JSON.parse(itemValue); } return undefined; } catch (_unused) { return undefined; } }; function useLocalStorage(key, defaultValue) { var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(), value = _React$useState[0], setValue = _React$useState[1]; react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { var initialValue = getItem(key); if (typeof initialValue === 'undefined' || initialValue === null) { setValue(typeof defaultValue === 'function' ? defaultValue() : defaultValue); } else { setValue(initialValue); } }, [defaultValue, key]); var setter = react__WEBPACK_IMPORTED_MODULE_0___default().useCallback(function (updater) { setValue(function (old) { var newVal = updater; if (typeof updater == 'function') { newVal = updater(old); } try { localStorage.setItem(key, JSON.stringify(newVal)); } catch (_unused2) {} return newVal; }); }, [key]); return [value, setter]; } /***/ }), /***/ "../node_modules/react-query/es/devtools/useMediaQuery.js": /*!****************************************************************!*\ !*** ../node_modules/react-query/es/devtools/useMediaQuery.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ useMediaQuery) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); function useMediaQuery(query) { // Keep track of the preference in state, start with the current match var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default().useState(function () { if (typeof window !== 'undefined') { return window.matchMedia && window.matchMedia(query).matches; } }), isMatch = _React$useState[0], setIsMatch = _React$useState[1]; // Watch for changes react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(function () { if (typeof window !== 'undefined') { if (!window.matchMedia) { return; } // Create a matcher var matcher = window.matchMedia(query); // Create our handler var onChange = function onChange(_ref) { var matches = _ref.matches; return setIsMatch(matches); }; // Listen for changes matcher.addListener(onChange); return function () { // Stop listening for changes matcher.removeListener(onChange); }; } }, [isMatch, query, setIsMatch]); return isMatch; } /***/ }), /***/ "../node_modules/react-query/es/devtools/utils.js": /*!********************************************************!*\ !*** ../node_modules/react-query/es/devtools/utils.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ displayValue: () => (/* binding */ displayValue), /* harmony export */ getQueryStatusColor: () => (/* binding */ getQueryStatusColor), /* harmony export */ getQueryStatusLabel: () => (/* binding */ getQueryStatusLabel), /* harmony export */ isServer: () => (/* binding */ isServer), /* harmony export */ styled: () => (/* binding */ styled), /* harmony export */ useIsMounted: () => (/* binding */ useIsMounted), /* harmony export */ useSafeState: () => (/* binding */ useSafeState) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme */ "../node_modules/react-query/es/devtools/theme.js"); /* harmony import */ var _useMediaQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useMediaQuery */ "../node_modules/react-query/es/devtools/useMediaQuery.js"); var isServer = typeof window === 'undefined'; function getQueryStatusColor(query, theme) { return query.state.isFetching ? theme.active : !query.getObserversCount() ? theme.gray : query.isStale() ? theme.warning : theme.success; } function getQueryStatusLabel(query) { return query.state.isFetching ? 'fetching' : !query.getObserversCount() ? 'inactive' : query.isStale() ? 'stale' : 'fresh'; } function styled(type, newStyles, queries) { if (queries === void 0) { queries = {}; } return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef(function (_ref, ref) { var style = _ref.style, rest = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, ["style"]); var theme = (0,_theme__WEBPACK_IMPORTED_MODULE_3__.useTheme)(); var mediaStyles = Object.entries(queries).reduce(function (current, _ref2) { var key = _ref2[0], value = _ref2[1]; // eslint-disable-next-line react-hooks/rules-of-hooks return (0,_useMediaQuery__WEBPACK_IMPORTED_MODULE_4__["default"])(key) ? (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, current, typeof value === 'function' ? value(rest, theme) : value) : current; }, {}); return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(type, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, rest, { style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, typeof newStyles === 'function' ? newStyles(rest, theme) : newStyles, style, mediaStyles), ref: ref })); }); } function useIsMounted() { var mountedRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(false); var isMounted = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(function () { return mountedRef.current; }, []); (react__WEBPACK_IMPORTED_MODULE_2___default())[isServer ? 'useEffect' : 'useLayoutEffect'](function () { mountedRef.current = true; return function () { mountedRef.current = false; }; }, []); return isMounted; } /** * This hook is a safe useState version which schedules state updates in microtasks * to prevent updating a component state while React is rendering different components * or when the component is not mounted anymore. */ function useSafeState(initialState) { var isMounted = useIsMounted(); var _React$useState = react__WEBPACK_IMPORTED_MODULE_2___default().useState(initialState), state = _React$useState[0], setState = _React$useState[1]; var safeSetState = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(function (value) { scheduleMicrotask(function () { if (isMounted()) { setState(value); } }); }, [isMounted]); return [state, safeSetState]; } /** * Displays a string regardless the type of the data * @param {unknown} value Value to be stringified */ var displayValue = function displayValue(value) { var name = Object.getOwnPropertyNames(Object(value)); var newValue = typeof value === 'bigint' ? value.toString() + "n" : value; return JSON.stringify(newValue, name); }; /** * Schedules a microtask. * This can be useful to schedule state updates after rendering. */ function scheduleMicrotask(callback) { Promise.resolve().then(callback).catch(function (error) { return setTimeout(function () { throw error; }); }); } /***/ }) }]); //# sourceMappingURL=e459c6c89c0c0899c850.bundle.js.map Makanan Mie Gacoan Semarang, Rasa Bintang 5 Harga Merakyat === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block. === console.log('header!'); // Easy to add and display post grid on your website with or without categoryies filter. Also work with Gutenberg shortcode block.

Mie Gacoan Indoor AC: Merevolusi pengalaman bersantap Anda

Mie Gacoan Indoor AC: Merevolusi pengalaman bersantap Anda

1. Konsep Mie Gacoan

Mie Gacoan adalah tujuan makan populer yang berspesialisasi dalam menyajikan hidangan MIE (mie) Indonesia asli. Dikenal karena penawarannya yang lezat, Mie Gacoan berhasil menarik penggemar makanan dengan pengalaman bersantap yang inovatif. Integrasi AC dalam ruangan adalah game-changer di lanskap kuliner, terutama di iklim tropis di mana makan luar ruangan bisa mencekik. Mie Gacoan telah berhasil menggabungkan rasa tradisional dengan fasilitas modern, menjadikannya pilihan yang menarik bagi pengunjung yang mencari kenyamanan bersama masakan sensasional.

2. Indoor AC: Kebutuhan untuk pengunjung modern

Dalam beberapa tahun terakhir, AC telah menjadi bahan pokok dalam desain restoran. Dalam ruangan AC mempertahankan lingkungan yang nyaman, meningkatkan kenikmatan makanan. Untuk Mie Gacoan, memiliki sistem AC yang efisien berarti bahwa pelanggan dapat menikmati makanan mereka tanpa ketidaknyamanan panas atau kelembaban, yang sangat penting selama jam makan puncak. Adaptasi ini membedakan Mie Gacoan dari pesaing yang mungkin masih mengandalkan tempat duduk terbuka.

3. Dampak suasana yang nyaman pada pengalaman bersantap

Penelitian menunjukkan bahwa suasana ruang makan secara signifikan mempengaruhi kepuasan pelanggan. Dengan AC dalam ruangan, Mie Gacoan telah menciptakan lingkungan yang terkontrol yang mengundang pengunjung untuk berlama -lama, menikmati makanan dan percakapan mereka. Ruang yang keren dan nyaman mendorong para tamu untuk menjelajahi menu lengkap, memanjakan diri di berbagai hidangan tanpa gangguan kondisi cuaca eksternal yang mengganggu.

4. Desain dan tata letak pengguna-sentris

Interior Mie Gacoan dirancang dengan kenyamanan pelanggan dalam pikiran. Restoran ini memiliki pengaturan tempat duduk yang luas yang ditempatkan dengan cermat untuk memungkinkan sirkulasi udara. Dengan ruang pribadi yang cukup, pengunjung dapat menikmati makanan mereka tanpa merasa sempit, menciptakan suasana yang mengundang. Dekorasi bergaya, dikombinasikan dengan efek AC yang menenangkan, meningkatkan pengalaman bersantap secara keseluruhan.

5. Kuliner dan keragaman menu

Menu di Mie Gacoan bukanlah sebuah mahakarya kuliner. Dikenal karena pilihan hidangan Mie yang luas, restoran ini melayani berbagai selera. Dari Mie Goreng klasik hingga spesialisasi regional yang unik, setiap hidangan disiapkan dengan bahan -bahan segar dan rempah -rempah otentik. Kombinasi makanan yang luar biasa dan lingkungan yang nyaman memastikan bahwa pengalaman bersantap pelanggan tidak kalah luar biasa.

6. Manfaat Kesehatan AC dalam ruangan

Terlepas dari kenyamanan, AC dalam ruangan di Mie Gacoan berkontribusi positif terhadap kesehatan dan kesejahteraan. Sistem AC yang terawat baik membantu menyaring udara, menghilangkan alergen dan polutan yang dapat memicu alergi atau masalah pernapasan. Selain itu, dengan tetap tenang di dalam restoran, pengunjung cenderung mengalami kelelahan atau ketidaknyamanan yang dapat timbul dari paparan panas.

7. Praktik Berkelanjutan dan Efisiensi Energi

Mie Gacoan memahami pentingnya keberlanjutan. Restoran ini menggunakan sistem AC hemat energi yang mengurangi konsumsi listrik sambil mempertahankan kenyamanan yang optimal. Komitmen ini tidak hanya membantu dalam menurunkan jejak karbon perusahaan tetapi juga menarik bagi pengunjung yang sadar lingkungan, menciptakan kesan positif pada merek restoran.

8. Umpan Balik dan Pengalaman Pelanggan

Ulasan pelanggan menyoroti dampak positif dari AC dalam ruangan pada pengalaman bersantap mereka. Banyak pelanggan menghargai suasana nyaman yang disediakannya, memungkinkan mereka untuk fokus pada makanan dan perusahaan daripada cuaca di luar. Umpan balik sering mencatat bahwa lingkungan yang keren meningkatkan rasa hidangan dan melengkapi pengalaman bersantap secara keseluruhan, memperkuat komitmen Mie Gacoan terhadap keunggulan.

9. Penawaran dan Promosi Musiman

Mie Gacoan memanfaatkan AC dalam ruangannya untuk meluncurkan penawaran musiman dan promosi yang mendorong lebih banyak makan selama bulan -bulan yang lebih hangat. Menu khusus yang menampilkan hidangan musim panas yang menyegarkan, ditambah dengan tempat duduk dalam ruangan yang nyaman, membantu menarik lebih banyak pengunjung selama musim panas puncak. Kombinasi pemasaran dan suasana strategis menciptakan lingkungan makan yang berkembang sepanjang tahun.

10. Teknologi Inovatif dalam Sistem Pendingin Udara

Teknologi AC modern telah memungkinkan untuk membuat pengaturan yang dapat disesuaikan yang sesuai dengan kebutuhan lingkungan restoran seperti Mie Gacoan. Fitur seperti pendinginan zonasi, kontrol kelembaban, dan sistem pemurnian udara digunakan untuk meningkatkan kualitas dan kenyamanan udara dalam ruangan. Inovasi semacam itu membantu Mie Gacoan memberikan pengalaman luar biasa yang membuat para tamu kembali.

11. menciptakan pengalaman yang tak terlupakan

Makan sama tentang pengalaman seperti halnya tentang makanan. Mie Gacoan, dengan AC dalam ruangan dan suasana yang dibuat dengan cermat, menawarkan pengunjung tamasya yang tak terlupakan. Baik itu pertemuan keluarga, makanan santai dengan teman -teman, atau makan malam romantis, lingkungan yang nyaman memungkinkan para tamu untuk terhubung dan menciptakan kenangan abadi di ruang yang mengundang restoran.

12. Peran Layanan Pelanggan

Layanan hebat melengkapi pengalaman bersantap yang tak terlupakan. Staf di Mie Gacoan terlatih dengan baik untuk memberikan layanan penuh perhatian di lingkungan yang keren dan santai yang diciptakan oleh sistem AC dalam ruangan. Interaksi yang ramah meningkatkan pengalaman keseluruhan, membuat pelanggan merasa dihargai dan disambut di ruang yang dirancang untuk kenyamanan mereka.

13. Keterlibatan dan Acara Komunitas

Komitmen Mie Gacoan untuk menjadi bagian dari komunitas melampaui menyajikan makanan lezat. Restoran ini sering menjadi tuan rumah acara dan promosi yang mendorong interaksi sosial, semakin dipadatkan oleh lingkungan AC dalam ruangan yang nyaman. Dari malam mencicipi makanan hingga kelas memasak, Mie Gacoan mendorong rasa kebersamaan, menjadikannya tempat yang tepat bagi penduduk setempat.

14. Inovasi dan Ekspansi Masa Depan

Ketika tren makan terus berkembang, Mie Gacoan tetap menjadi yang terdepan dengan mengintegrasikan ide -ide inovatif yang meningkatkan pengalaman pelanggan. Dengan ekspansi di masa depan yang direncanakan, menggabungkan teknologi AC dalam ruangan yang lebih canggih dapat memastikan kualitas kenyamanan makan yang konsisten. Strategi pemikiran ke depan ini memposisikan Mie Gacoan sebagai pemimpin dalam industri restoran.

15. Strategi SEO untuk Mie Gacoan

Bagi Mie Gacoan untuk menjangkau khalayak yang lebih luas dalam lanskap digital saat ini, menggunakan strategi SEO yang efektif sangat penting. Kata kunci seperti “Mie Indonesia,” “restoran ber-AC,” “pengalaman makan yang nyaman,” “hidangan Mie otentik,” dan “makan ramah keluarga” harus diintegrasikan dengan mulus ke dalam konten situs web dan posting media sosial. Pembaruan yang konsisten pada penawaran dan acara menu, dioptimalkan untuk mesin pencari, dapat menarik lebih banyak pengunjung dan meningkatkan visibilitas.

16. Melibatkan Pembuatan Konten

Mie Gacoan dapat memanfaatkan konten yang menarik untuk mempromosikan fitur -fitur uniknya. Posting blog yang membahas manfaat AC dalam ruangan di restoran, profil hidangan, atau cerita yang menyoroti pengalaman pelanggan dapat beresonansi dengan pengunjung potensial. Gambar berkualitas tinggi yang menampilkan hidangan yang menyenangkan dalam suasana yang nyaman juga dapat menarik perhatian dan mengarahkan lalu lintas ke restoran.

17. Kesimpulan dan komitmen berkelanjutan untuk keunggulan

Perpaduan masakan Indonesia otentik, desain ramah pengguna, dan kenyamanan AC dalam ruangan di Mie Gacoan mendefinisikan kembali pengalaman bersantap. Ketika restoran terus berkembang, komitmennya untuk menyediakan makanan berkualitas tinggi dalam suasana yang mengundang memastikan ia tetap menjadi pilihan makan yang lebih disukai di antara pelanggan lokal dan yang berkunjung. Berfokus pada membangun pengalaman bersantap yang berkesan dan memuaskan akan membantu membangun Mie Gacoan sebagai tolok ukur di sektor kuliner.

Mie Gacoan: Petualangan Kuliner Di Bawah Bintang

Mie Gacoan: Petualangan Kuliner Di Bawah Bintang

Suasana Mie Gacoan

Mie Gacoan mengundang Anda ke dalam pengalaman bersantap terbuka yang mempesona yang menikahi keunggulan kuliner dengan langit malam berbintang. Dengan tempat duduk yang dirancang dengan cermat di bawah lampu berkelap -kelip, Mie Gacoan menciptakan suasana yang mengundang. Dekorasi yang menarik secara visual, termasuk mural yang semarak dan tanaman hijau subur, meningkatkan suasana, menjadikannya sempurna untuk pertemuan keluarga, makan malam romantis, atau bahkan petualangan solo.

Mie Gacoan: rasa tradisi

Di jantung Mie Gacoan terletak komitmen untuk keaslian. Restoran ini berspesialisasi dalam menawarkan berbagai hidangan tradisional Indonesia, terutama Mie (mie) khasnya. Setiap porsi adalah cerminan dari resep yang dihormati waktu yang diturunkan dari generasi ke generasi. Penggunaan bahan -bahan segar yang bersumber secara lokal menggarisbawahi dedikasi mereka untuk kualitas dan keberlanjutan. Koneksi ini dengan produsen lokal tidak hanya mendukung komunitas tetapi juga meningkatkan pengalaman bersantap dengan kesegaran yang tak tertandingi.

Hidangan khas yang tidak bisa Anda lewatkan

  1. Mie Ayam: Hidangan mie klasik Indonesia, Mie Ayam menampilkan potongan-potongan ayam yang lezat yang dilemparkan dengan mie yang ditarik dengan tangan. Disajikan dengan kaldu kaya yang diresapi dengan rempah -rempah aromatik, hidangan ini adalah makanan yang menyenangkan. Topping tambahan seperti bawang merah goreng dan bawang hijau meningkatkan kedalaman rasa.

  2. Mie Goreng: Versi tumis, Mie Goreng, menyajikan medley tekstur dan selera yang menyenangkan. Mie dilemparkan dengan sayuran segar, kecap, dan sering ditutup dengan telur goreng, memberikan kekayaan yang memuaskan dan kekayaan umami.

  3. TAHU TEMPE: Melengkapi hidangan mie, opsi tahu dan tempe disiapkan dengan luar biasa. Crispy di luar dan lembut di dalam, mereka direndam dan digoreng dengan sempurna, disajikan dengan saus asam manis dan manis yang mengangkat pengalaman.

  4. Sate Ayam: Tusuk sate ayam panggang yang direndam dalam saus kacang yang kaya mewakili makanan meriah yang sempurna di Mie Gacoan. Juicy, empuk, dan dikelilingi, hidangan ini merangkum rasa Indonesia otentik.

  5. Nasi Goreng: Permata lain pada menu adalah Nasi Goreng. Hidangan nasi goreng kesayangan Indonesia menawarkan keseimbangan sempurna antara nada gurih dan pedas, atasnya dengan telur goreng dan sering disertai dengan lauk samping yang saling melengkapi seperti biskuit udang.

Delights vegetarian

Mie Gacoan termasuk semua preferensi makanan, menawarkan berbagai pilihan vegetarian yang menyoroti produk kaya di kawasan ini.

  • Sayur Lodeh: Rebusan sayuran yang lezat yang dibuat dengan santan, hidangan ini meledak dengan rasa dan merupakan cara yang fantastis untuk menikmati kesegaran sayuran musiman.

  • Mie Sayuran: Bagi mereka yang mendambakan pilihan yang lebih ringan, mie sayuran menawarkan simfoni sayuran hijau segar dan tahu, semuanya dilemparkan bersama dalam saus yang ringan dan harum.

Perjalanan kuliner di luar tradisi

Sementara Mie Gacoan tetap berakar pada tradisi, itu tidak menghindar dari inovasi. Tim kuliner terus -menerus bereksperimen dengan hidangan fusi, memperkenalkan rasa unik dan pengaruh internasional sambil tetap setia pada akar Indonesia.

Makanan penutup dan minuman

Menyelesaikan makanan, Mie Gacoan menawarkan pilihan makanan penutup yang merayakan permen dan buah -buahan lokal.

  • Klepon: Bola kue beras manis ini diisi dengan gula aren dan dilapisi kelapa parut adalah akhir yang tak tertahankan untuk setiap makanan.

  • Es Cendol: Makanan penutup yang menyegarkan, ES Cendol terdiri dari jeli tepung nasi hijau yang disajikan dalam santan dengan es dan sirup gula aren, sempurna untuk didinginkan dalam cuaca hangat.

Daftar minuman yang memuji masakan

Untuk menemani makanan Anda, Mie Gacoan menawarkan daftar minuman yang menampilkan minuman tradisional Indonesia.

  • Teh tarik: Teh yang ditarik ini berbusa dan kaya, menawarkan keseimbangan sempurna untuk hidangan pedas.

  • Kopi Gacoan: Untuk pecinta kopi, spesialisasi rumah ini memadukan biji kopi lokal, memastikan Anda mendapatkan rasa otentik budaya kopi Indonesia.

Malam berbintang dan keahlian kuliner

Makan di Mie Gacoan di bawah bintang -bintang menciptakan pengalaman yang intim. Baik itu hitungan mundur untuk tengah malam pada kesempatan yang meriah atau pelarian malam yang tenang, langit malam berfungsi sebagai latar belakang hidangan yang semarak. Aroma daging dan rempah -rempah panggang memenuhi udara, mengatur panggung untuk petualangan kuliner yang tak terlupakan.

Acara dan perayaan perusahaan

Mie Gacoan juga melayani acara dan perayaan perusahaan, menawarkan menu khusus dan layanan khusus. Perhatian staf terhadap detail memastikan bahwa setiap acara bukan hanya makan tetapi juga pengalaman yang tak terlupakan. Dari pertemuan intim hingga acara yang lebih besar, tata letak yang luas mengakomodasi berbagai ukuran kelompok sambil mempertahankan rasa keintiman.

Praktik keberlanjutan

Mie Gacoan dengan bangga mendukung inisiatif keberlanjutan. Pendekatan pertanian-ke-meja restoran meminimalkan jejak karbon sambil memastikan kesegaran. Dengan berkolaborasi dengan petani lokal, mereka memprioritaskan produk organik dan sumber berkelanjutan, menunjukkan komitmen mereka terhadap tanggung jawab lingkungan dalam industri kuliner.

Pengalaman yang berpusat pada pelanggan

Apa yang membedakan Mie Gacoan adalah fokus yang tak tergoyahkan pada kepuasan pelanggan. Staf yang ramah dilatih untuk menawarkan rekomendasi yang dipersonalisasi, memastikan bahwa pengalaman bersantap Anda disesuaikan dengan preferensi Anda. Dengan sikap mengundang dan bimbingan yang berpengetahuan, setiap pengunjung merasa di rumah.

Lokasi dan aksesibilitas

Berlokasi nyaman di area yang semarak, Mie Gacoan mudah diakses untuk penduduk setempat dan wisatawan. Ini fitur parkir yang luas dan berada dalam jarak berjalan kaki dari atraksi populer, membuatnya berhenti sempurna bagi siapa pun yang menjelajahi lanskap kuliner di wilayah tersebut.

Kehadiran dan Keterlibatan Media Sosial

Mie Gacoan secara aktif terlibat dengan pengunjungnya melalui platform media sosial. Pembaruan rutin, promosi, dan di belakang layar terlihat di Instagram dan Facebook membuat komunitas di sekitar pecinta makanan. Strategi sosial ini juga membantu para tamu potensial melihat hidangan baru dan acara khusus, meningkatkan lalu lintas pejalan kaki dan mendorong rekomendasi dari mulut ke mulut.

Lokakarya dan kelas kuliner

Selain makan, Mie Gacoan mewujudkan semangat belajar. Restoran ini menawarkan lokakarya memasak, yang memungkinkan peserta untuk mempelajari teknik memasak tradisional Indonesia. Dipandu oleh koki ahli, peserta dapat mempelajari seni pembuatan mie atau menguasai Sate yang sempurna, menumbuhkan koneksi ke masakan yang melampaui meja makan.

Menjelajahi dunia Mie Gacoan adalah petualangan kuliner yang layak untuk setiap penggemar makanan. Dengan intensitas rasa yang kaya, dedikasi untuk keaslian, dan suasana yang menakjubkan di bawah bintang -bintang, itu adalah pengalaman bersantap yang tidak ingin Anda lewatkan.

Mie Gacoan: Kenikmatan Mie Goreng Yang Bisa Dinikmati di Tempat

Mie Gacoan: Kenikmatan Mie Goreng Yang Bisa Dinikmati di Tempat

Sejarah Dan Asal Usul Mie Gacoan

Mie Gacoan Berasal Dari Tradisi Kuliner Indonesia Yang Mengedepankan Cita Rasa Khas, Terutama Dalam Olahan Mie. Mie Goreng telah menjadi shalat satu makanan favorit Banyak Orang, Terutama di Kalangan anak Muda. Nama “Gacoan” Sendiri Merujuk Pada Istilah Yang Menggambarkan Pengalaman Makan Yang Menyenangkan. Mie Gacoan Menyatukan Elemen Lokal Delangan Inovasi Dalam Penyajian, Serta Berbagai Jenis Bahan Berkualitas Yang Anggota Rasa Istimewa.

Keunikan Mie Gacoan

Salah Satu Daya Tarik Utama Dari Mie Gacoan Adalah Bagaimana Mereka Menghidangkan Mie Goreng Yang Tidak Hanya Sekadar Lezat, Tetapi Rona Menggugah Selera. DENGAN BUMBU-BUMBU KHAS YANG MUNGKIN DIOLAH SECARA RAHAsia, SETIAP PORSI MIE GACOAN ANGGOLAN PENGALAMAN MAKAN YANG UNIK. Mie Yang Digunakan Memilisi Tekstur Kenyal Dan Disajikan Panas-Panas, Sehingga Aroma Bumbunya Semakin Terasa Menggoda.

Varian Menarik Dari Mie Gacoan

Mie Gacoan Menyajikan Berbagai Varian Yang Bisa Disesuaika Delangan Selera Pelanggan. Beberapa di Antarananya Yaitu:

  1. Spesial Mie Goreng: Paduan Mie Goreng Gelanan Sayuran Segar Dan Potongan Daging Ayam Atau Sapi Yang Melimpah.
  2. Mie Gacoan Pedas: BAGI PENGEMAR MAKANAN PEDAS, VARIAN INI MANDIKAN TANTIGAN DENGAN TINGKAT KEPEDASAN YANG BISA DISESUIikan.
  3. Mie Seafood: Menggabungkan Mie Delangan Bahan Seafood Segar Seperti Cumi, Udang, Dan Kerang Taktum Cita Rasa Laut Yang Segar.
  4. Mie Vegetarian: Alternatif Bagi Yang Menghindari Daging, Menggunakan Berbagai Sayuran Segar Dan Tofu.

Penyajian Yang Menarik

Penyajian Mie Gacoan Sangat Menggoda. Satu Porsi Mie Disajikan Dalam Mangkuk Yang Cantik Dan Biasaanya Dihiasi Delangan Pelengkap Seperti Irisan Jeruk Nipis, Kerupuk, Serta Sambal Yang Menambah Cita Rasa. Visualisasi Ini Tidak Hanya Menarik Bagi Mata, Tetapi Jaga Menggoda Selera Lebih Jauh.

Tempat Memuaska untuk Menikmati Mie Gacoan

Mie Gacoan Bukan Hanya Soal Cita Rasa, Tetapi Tempat Tetapi. DESAIN INTERIOR GERAI MIE GACOAN DIRANCANG DENGAN SUASANA Yang NYAMAN Dan RAMAH UNTUK BERBAGAI KALIGAN, Mulai Dari Keluarga, Teman, Hingga Pasangan. DENGAN TEMPAT DUDUK YANG LUAS DAN BERSIH, MEMBUAT Pengunjung Betah Berlama-Lama Menikmati Hidangan Mereka.

Lokasi-Lokasi Terpopuler Mie Gacoan

DENGAN Semakin Banyaknya Gerai Mie Gacoan Yang Dibuka Di Berbagai Kota, Beberapa Lokasi Yang Paling Populer Antara Lain:

  • Mie Gacoan Yogyakarta: Tempat ini Terkenal Akan Rasa Autenna Yang Digemari Oleh Masyarakat Lokal Dan Wisatawan.
  • Mie Gacoan Jakarta: Metropolitan Atmosfer Metropolitan Yangok Cocok Bisnis Bisnis Atau Sekadar Bersantai.
  • Mie Gacoan Bandung: Dengan Nuansa Bersahabat Dan Hiruk Pikuk Kota Yang Menghidupkan Suasana.

Pengalaman Konsumen

Pengalaman Makan Di Mie Gacoan Sering Kali DiCeritakan Secara Positif Oleh Konsumen. Banyak Yang Mengungkapkan Bahwa Selain Rasa Itu Sendiri, Pelayanan Yang Ramah Dan Cepat Menjadi Nilai Tambah. Pengunjung Seringkali Merasa Puas Porsi Porsi Yang Cukup Dan Harga Yang Terjangkau. Hal ini adalah Mie Gacoan Bukan Hanya Sekadar Tempat Makan, Tetapi BUGA Tempat Berkumpul Yang Seru Dan Menyenangkan.

Mie Gacoan Dan Media Sosial

Mie Gacoan Telah Berhasil Memanfaatkan Media Sosial untuk mempromosikan Kuliner Mereka. Dari Foto-Foto Menakjubkan Yang Dibagikan Oleh Pengunjung, Mie Gacoan Sering Kali Menjadi Trending Topic Di Platform Seperti Instagram Dan Tiktok. Pelanggan Tak Ragu-Ragu UNTUK MEMBAGikan Pengalaman Kuliner Mereka, Yang Selanjutnya Menarik Perhatian Lebih Banyak Orang Untkoba.

Mie Gacoan di Tengah Tren Kuliner

Mie Gacoan Rona Menunjukkan Relevansinya di Tengah Tren Kuliner Yang Terus Berubah. Menu Daman Mengenalkan Baru Dan Melakukan Kolaborasi Influencer Dengan Kuliner, Mie Gacoan Selalu Berhasil Menarik Perhatian Pasar Yang Lebih Luas. Vegetarian Tren Dan Makanan Sehat Pun Dijawab Delangan Menyediakan Menu Variasi Yang Cocok Bagi Mereka.

Keterlibatan Komunitas Dan CSR

Selain Fokus Pada Bisnis, Mie Gacoan Juta Berperan Aktif Dalam Kegiatan Sosial. Program Keterlibatan Dalam-Program CSR Menunjukkan Bahwa Mereka Tidak Hanya Peduli Pada Keuntungan, Tetapi Bua ingin Anggota Dampak Positif Bagi Masyarakat. Kegiatan ini sering Melibatkan Acara Amal, Donasi, Dan Kolaborasi Organisasi Lokal.

Kualitas Bahan Baku Yang Digunakan

Mie Gacoan Selalu Menankan Pentingnya Menggunakan Bahan Baku Berkualitas Tinggi. Mie Yang Digunakan Dibuat Dari Bahan Pilihan Dan Segar, Sementara Daging Dan Sayuran Yang Dipilih Buga Berasal Dari Pemasok Terpercaya. Ini memastikan Konsistensi Rasa Dan Kualitas Di Setiap Porsi Yang Disajikan, Anggota Keyakinan Bagi Pelanggan Bahwa Mereka Menikmati Moranan Yang Aman Dan Sehat.

HARGA YANG Terjangkau

DENGAN SEMUA KEUNGGULAN Yang Ditawarkan, Mie Gacoan Tetap Mempertahankan Harga Yang Bersahabat. Ini membuatinya mampu dijarakkau eheH Berbagai Kalangan, Mulai Dari Pelajar Hingga Pekerja Kantoran. DENGAN HARGA YANG WAJAR, Pelanggan Bisa Menikmati Sajian Lezat Tanpa Harus Merogoh Kocek Terlalu Dalam.

Kesempatan unkartisipasi dalam acara khusus

Mie Gacoan Sering Kali Menyelenggarakan Acara ATAU Promo Khusus Pada Hari Besar ATAU Festival Kuliner. Pelanggan Bisa Mendapatkan Diskon, Paket Spesial, Dan Bahkan Kesempatan untuk menu Mencoba Baru Yang Belum resmi diluncurkan. Hal ini menjadi daya tarik terendiri bagi pecinta kuliner untuk selalu kembali dan menjadi bagian Dari pengalaman baru.

Inovasi Menu Rutin

Mie Gacoan Secara Aktif Melakukan Inovasi Pada Menu Mereka. DGANGAN MELAKUAN RISET DAN MENGIKUTI TREN MAKANAN YANG SEDANG POPULER, MEREKA Memastikan Bahwa Pelanggan Tidak Akan Merasa Bosan. Menu Peluncuran Musiman Atau Kolaborasi Chef Tamu Sering Kali Menjadi Sorotan Dan Menarik Pengunjung Yang Ingin Mencoba Sesuatu Yang Baru.

Tanggapan tanggapan Ulasan Dan

Mie Gacoan Sangan Responsif Terhadap Ulasan Dan Umpan Balik Dari Pelanggan. Mereka Berusia Keras Unkengarkan Keinginan Dan Masukan Agar Semakin Memperbaiki Layanan Dan Kualitas Makanan. Hal ini memiptakan hubungan yang lebih Baikta antara Mereka Dan Pelanggan, Menunjukkan Bahwa Mereka Menghargai Setiap Saran Yang Diberikan.

Komitmen Terhadap Pembersihan Dan Keamanan

Kerbersihan Adalah Prioras Utama Bagi Mie Gacoan. Selalu Yangah Pembaga Dapur Dan Tempat Makan, Membuat Pelanggan Merasa Aman Dan Nyaman Ketika Berkunjung. Selain Itu, Penangan Bahan Baku Yang Tepat Dan Keamanan Pangan Menjadi Perhatian Serius Yang Mereka Jaga Demi Kepuasan Pelanggan.

MEMBUAT KENIGAN BERHARGA

Kehadiran Mie Gacoan Sebagai Tempat Berkumpul, Berbagi Cerita, Dan Menikmati Mkanan Lezat Menciptakan Kenangan Berharga Bagi Setiap Orang Yang Berkunjung. SUASANA HANGAT DAN PELAYANAN YANG RAMAH MEMBUAT SETIAP Pengalaman Di Mie Gacoan Menjadi Momen Yang Tak Terlupakan.

Mie Gacoan Dan Kesehatan

DENGAN SEMINTKATYA KESADARAN AKAN KESEHATAN, MIE GACOAN BUGA MULAI MEMPERKENINKAN PILihan Menu Yang Lebih Sehat. Mie Kaya Serat Dan Porsi Sayuran Segar Menjadi Pilihan Menarik Bagi Mereka Yang Berusia Menjaga Pola Makan Sehat.

Testimoni Pelanggan

Testimoni Dari Pelanggan Sering Kali Menunjukkan Kepuasan Mereka Terhadap Seluruh Pengalaman Di Mie Gacoan. Dari Rasa, Pelayanan, Hingga SueSana Restoran, Semua Menjadi Faktor Yang Membuat Mereka Ingin Kembali Lagi. Ulasan Positif ini sANGAT MEMBURU DALAM MENARIK LEBIH BANYAK PENGUJUNG BARU UNTUK MENCOBA MIE GORENG KHAS MIE GACOAN.

Melihat Masa Depan Mie Gacoan

Mie Gacoan Telah Membuktikan Diri Sebagai Salah Satu Pelopor Dalam Dunia Kuliner Mie Goreng di Indonesia. DENGAN TERUS BERINOVASI DAN MENDENGIKAN Pasar, Mereka Memiliki Potensi untuk semu Semakin Berkembang Dan Memperluas Jangkkauan Mereka Di Seluruh Nusantara.

Kesimpulan

Mie Gacoan Menawarkan Lebih Dari Sekadar Pengalaman Kuliner Sederhana. Ini Adalah Sebuah Perjalanan Rasa Yang Dipenuhi Gelan Kenikmatan, Pembersama, Dan Tradisi. Melalui Kualitas, Inovasi, Dan Komitmen Terhadap Kepuasan Konsumen, Mie Gacoan Menjadi Salah Satu Tempat Makan Yang Wajib dikunjungi Bagi para Pecinta Mie Goreng.

Mie Gacoan: Surga Kuliner Dan Tempat Nongkrong Asyik

Mie Gacoan: Surga Kuliner Dan Tempat Nongkrong Asyik

Sejarah Dan Konsep Mie Gacoan

Mie Gacoan Merupakan Salah Satu Tempat Kuliner Yang Telah Menjadi Ikonik Di Indonesia, Khususnya Bagi Para Pecinta Mie. Berawal Dari Sebuah Konsep Sederhana, Yaitu Menghidangkan Mie Delangan Cita Rasa Yang Otentik Dan Menyenangkan, Mie Gacoan Kini Telah Berkembang Menang SangaGatan Suana Suana Suana Suana Suana Suana Suana Luzai Luzai Luzai Luzai Luza Luza Luza Luza Luzai Luza Luza Luza Luza Luza Luza Luza Luza Luza Luza Luza Luza Luza Kulakan Suana Kulakan Suana Kulakan Suana Kulakan Suana Luza Kulakan Asyik.

Kemunculan Mie Gacoan Sendiri Bisa Ditelusuri Dari Kebutuhan Masyarakat Yangin Semakinin Tempat Tempat Bersantap Yang Tidak Hanya Fokus Pada Kualitas Makanan, Tetapi Juga Menawarkan Pengalamus Sosial. DENGAN DESAIN INTERIOR YANG MENARIK, MIE GACOAN MENGADIRKAN NUANSA YANG COZY, SHINGGA COCOK UNTUK BERBAGAI KALIGAN.

Menu Lezat Yang Menggugah Selera

Mie Gacoan Memiliki Berbagai Macam Menu Yang Siap Menggugah Selera Para Pengunjung. Mie Yang Menjadi Bintang Utama Disajikan Delangan Berbagai Pilihan Topping, Mulai Dari Ayam, Seafood, Hingan Sayuran Segar. Menu setiap Diracik gangan bumbu khas yang membuat cita rasananya berbeda Dari tempat lainnya.

HiNU SATU Dish Signature Populer Populer Adalah Mie Ayam Gacoan. Menu ini memiliki Cita Rasa Yang Kaya Berkat Penggunaan Bumbu Yang Direbus Hingga Meresap Ke Dalam Mie. Tak Hanya Itu, Mie Gacoan Rona Menawarkan Variabel Level Kepedasan Bagi Para Pengunjung Yang MenyUKai Tantangan. BAGI PECINA PEDA, PILihan Level 5 Menjadi Favorit untuk merasakan sensasi hangat Yang Menggigit namun tetap nikmat.

Variasi Minuman Segar

Tak Lengkap Rasanya Apabila Menikmati Mie Tanpa Ditemani Minuman Yang Menyegarkan. Mie Gacoan Rona Menawarkan Berbagai Jenis Minuman, Mulai Dari Es Teh Manis, Lemon Squash, Hingga Kopi Yang Diolak Secara Spesial. Setiap Minuman Dirancang Sedemikian Rupa untuk Melengkapi Rasa Mie Yang Telah Dinikmati.

Khusus Bagi Mereka Yangi Merananan Manis, Mie Gacoan Menyajikan Dessert Seperti Es Krim Dan Puding Yang Pas Setelah Menyantap Hidangan Utama. Menu Kombinasi Yang Ditawarkan Menyajikan Pengalaman Kuliner Yang Beragam.

SUASANA YANG NYAMAN UNTUK Nongkrong

Selain Dari Segi Kuliner, Atmosfer Mie Gacoan Menjadi Daya Tarik Tersendiri. DENGAN DESAIN INTERIOR YANG MODERN DAN HANGAT, Pengunjung Dapat Menemukan Berbagai Sudut Nyaman untuk Bersantai. Area Tersedia Outdoor Bagi Yang Ingin Menikmati Suasana Luar Ruangan, Area Serta Indoor Yang Dilengkapi Pencahayaan Yang Mendukung Suasana Coziness.

Tidak Hanya Sekadar Tempat Makan, Mie Gacoan RuGA Menjadi Tempat Nongkrong Yang Ideal Bagi anak Muda. Banyak Yang Datang UNTUK BERKUMPUL BERSAMA TEMAN-Teman, Melakukan Diskusi Hingga Hanya Sekedar Bersantai. Fasilitas wi-fi gratis bara menjadi nilai tambah unkuljung yang ingin bekerja atuu belajar sarik menikmati sajian kuliner.

Keramahan Pelayanan

Salah Satu Hal Yange Bembedakan Mie Gacoan Dari Tempat Lain Adalah Pelayanan Yang Ramah Dan Profesional. Setiap pelayan dilatih unkikan Pengalaman Terbaik Bagi Pengunjung, Dari Saat Memesan Hingga Menyantap Makanan. Komunikasi Yang Baik Antara Staf Dan Pelangan MEMBUAT SUASANA Semakin Hangat Dan Menyenangkan.

Promosi Dan Event Menarik

Utuk Menarik lebih Banyak Pengunjung, Mie Gacoan Sering Kali Mengadakan Promo Menarik. Diskon, Paket Hemat, Dan Acara Spesial Seperti Musik Langsung Menjadi Agenda Rutin UNTUK Menarik Pengunjung. Hal ini tidak hanya meningkatkan jumlah pelangan, tetapi buta menambah nilai pengalaman yang lebih berarti untuk pengunjung.

Acara Khusus, Seperti Food Fest Yang Sering Diadakan Di Berbagai Lokasi, Turut Memperkenalkan Mie Gacoan Kepada Masyarakat Yang Lebih Luas. Di Acara Tersebut, Mie Gacoan Biasianya Anggota Menu Pengambilan Sampel, Sehingga Orang -or Dapat Mencoba Sebelum Memutuskan untuk Berkunjung Ke Cabangnya.

Lokasi Strategis

DENGAN PERKEMBIGIAN MIE GACOAN YANG PESAT, LOKASI CABANG SEMINT MUDAH DITEMUMAN DI BERBAGAI KOTA BESAR DI INDONESIA. Apakah dana Berada di Jakarta, Bandung, Atau Kota Lainnya, outlet outlet Dapat Dapat Dapat Mie Gacoan Jarak Jarak Jarak Jarak Jauh. Ini menjadikananya pilihan BAGI YANG INGIN MENIKMATI MIE LEZAT TANPA PERLU MEREMPUH PERJALANAN Jauh.

Kesimpulan: Kenapa Harus Mencoba Mie Gacoan?

Menghadirkan Pengalaman Kuliner Yang Unik, Mie Gacoan Merupakan Surga Bagi Pecinta Mie Dan Tempat Nongkrong Asyik. Menu Delangan Bervariasi, Suasana Yang Nyaman, Dan Pelayany Yang Memuaskan, Mie Gacoan Menjadi Tujuan WiBib untuk makan dan Berkumpul Bersama Teman-Teman.

Jika Anda Sedang Mensari Destinasi Kuliner Baru Di Kota Anda, Tenjak Ada Salahnya untuk Mengunjungi Mie Gacoan. Anda Akan Menemukan Lebih Dari Sekadar Makan, Tetapi Jaga Pengalaman Bersosialisasi Yang Tak Terlupakan. Apakah anda sudah siap untuk menjelajijahi dunia mie Yang lebih luas?

Mie Gacoan Buka 24 Jam: Nikmati Sajiannya Kapan Saja

Mie Gacoan Buka 24 Jam: Nikmati Sajiannya Kapan Saja

Keunikan Mie Gacoan

Mie Gacoan Merupakan Salah Satu Merek Kuliner Yang Telah Mencuri Perhatian Masyarakat Indonesia, Terutama Di Kalangan Pecinta Mie. Dengan Berbagai Menu Mie Yang Menggugah Selera, Mie Gacoan Telah Menjelma Menjadi Destinasi Kuliner Yang Diidamkan. Salah Satu Daya Tarik Utama Dari Mie Gacoan Adalah Jam Operasionalinya Yang Buka 24 Jam. Konsep ini membuatinya yang menajadi pilihan Yang ideal okt SETUTU SARAPAN, Makan Siang, Sore, Hingga Larut Malam.

Menu variasi mie gacoan

Mie Gacoan Menawarkan Berbagai Jenis Mie Yang Dapat Disesuaika Gangan Selera Masing-Masing Pelanggan. Menu BerIKUT ADALAH BEBERAPA Favorit Yang Sering Menjadi Pilihan:

  1. Mie Goreng Pedas: Denenal karena rasa pedasnya Yang Menggigit, mie ini menjadi primadona bagi para Penggemar Rasa Pedas. Mie Goreng ini dibumbui DENGAN REMPAH KHAS dan Sayuran Segar Yang Menambah Cita Rasa.

  2. Mie Kuah Creamy: BAGI PECINA KUAH, MIE GACOAN MENWIKAN MIE KUAH DENGAN Cita Rasa Creamy Yang Lezat. Kombinasi Antara Kemewahan Krim Dan Bumbu Rempah Menciptakan Harmoni Rasa Yang Sempurna.

  3. Mie Ayam Spesial: Menu Klasik Ini Disajikan Delangan Potongan Ayam Yang Juicy Dan Bumbu Yang Meresap Sempurna Ke Dalam Mi. Pelengkap Seperti Pangsit Goreng Dan Sayuran Hijau Menambah Kesegaran.

  4. Mie Pangsit: Varian ini Sangan Direkomendasikan Bagi Penggemar Pangsit. DENGAN BAHAN-BAHAN SEGAN DAN BUMBU YANG Tepat, MIE PANGSIT Menawarkan Kombinasi Rasa Yang Menggugah Selera.

Menu setiap Yang Ditawarkan di Mie Gacoan Bukan Hanya Lezat, Tetapi JUGA DISIAPKAN DENGAN BAHAN-BAHAN BERKUALITAS. Hal ini menjadikan mie gacoan sebagai pilihan yang cerdas bagi para pengunjung, terlebih bagi Mereka Yang Mencari Makanan Cepat Saji Yang Enak Dan Terjangkau.

Kenapa Memilih Mie Gacoan 24 Jam?

Salah Satu KeUNGGULAN Yang Dimilisi OLEH MIE GACOAN ADALAH JAM Operasionalinya Yang Buka 24 Jam. Ini menjadi alasan utama bagi banyak orang untuc memilih mie gacoan sebagai tempat coran. Beberapa Alasan Mengapa Mie Gacoan Menjadi Pilihan Ideal Di Segala Waktu Adalah Sebagai BerIKUT:

  • Aksesibilitas: DENGAN BUKA 24 Jam, Mie Gacoan Menjadi Solusi Bagi Mereka Yang Beraktivitas Larut Malam Atau Yang Bekerja Delan Jadwal Tenjak Teratur. Tidak Perlu Khawatir Tentang Waktu, Karena Selalu Ada Makanan Lezat Yang Siap Disajikan.

  • Berkualitas: Selain Jam Operasional Yang Flekssibel, Mie Gacoan Jaga Menjaga Kualitas Makanan Yang Mereka Sajikan. Setiap porsi mie Diracik Delangan Bahan Segar Dan Resep Yang Otentik Untuk Memastikan Rasa Yang Nikmat.

  • Ruang Nyaman: Mie Gacoan Menyediakan Tempat Yang Nyaman untuk Menikmati Makanan. DESAIN INTERIOR YANG MODERN DAN BERSIH MEMBUAT PENGUJUNG MERASA BETAH UNTUK BERLAMA-LAMA MENIKMATI SAJIAN.

  • Pelayanan Cepat: DENGAN FOKUS PAYA KEPUASAN PELANGGAN, MIE GACOAN MERYAJikan Makanan Gangan Cepat Tanpa Mengorbankan Kualitas. Tim Pelayan Yang Ramah Siap Membantu Kapan Saja.

Promo Dan Penawaran Spesial

Utuk Menarik lebih Banyak Pelanggan, Mie Gacoan Sering Kali Anggota Berbagai Promo Dan Penawaran Menarik. Misalnya, diskon tutkelian pembanan tertentu atuu paket hemat uNTUK KELUARGA. Selain Itu, Program Loyalti Bagi Pelanggan Setia Juta Sering Diadakan, Di Mana Mereka Bisa Mendapatkan Poin Setiap Kali Berkunjung Yang Bisa Ditukar Dengan Menu Gratis Atau Potongan Haranga.

Para Pengunjung Dapat Rona MengIKuti Media Sosial Mie Gacoan Unkapi Mendapatkan Informasi Terbaru Tentang Promo Acara Khusus Yang Diadakan Di Beberapa Lokasi.

Pengalaman Pesan Antar

Mie Gacoan Tidak Hanya Mengutamakan Pengunjung Yang Langsung Langsung, Tetapi Bua. Platform Delangorasi Delangorasi Berbagai Pengantaran Makanan, Pelanggan Bisa Delangan Mahat Memesan Menu Favorit Melalui Aplikasi Tanpa Haruus Keluar Rahat.

Momen spesial di mie gacoan

Mie Gacoan Jaga Menjadi Pilihan untuk Momen Spesial Merayakan, Baik Itu Ulang Tahun, Acara Kantor, Atau Perkumpulan Bersama Teman. DENGAN SUASANA YANG RAMAH, SETIAP ACARA PASTI AKAN LEBIH SERU DENGAN SAJIAN MIE YANG NIKMAT. Beberapa gerai maga menawarkan Layanan cadangan untuk memastikan Tempat Bagi Kelompok Besar.

Pilihan Minuman Segar

Tak Hanya Menghadirkan Menu Beragam Mie, Mie Gacoan Raga Menyajikan Berbagai Pilihan Minuman Segar untuk Melengkapi Pengalaman Bersantap. Pilihan Minuman Seperti Teh Manis, Es Jeruk, Dan Aneka Minuman Tradisional Lainnya Sangat Cocok Dipadukan Menu Delan Mie Yang Pecas.

Mie Gacoan Dan Budaya Kuliner Indonesia

Sebagai Bagian Dari Budaya Kuliner Indonesia, Mie Gacoan Berupaya UNTUK Mengenalkan Cita Rasa Lokal Melalui Menu Yang Dihadirkan. Budaya Makan Mie di Indonesia Sangat erat Kaitanyaa Gelan Kerbersama Dan Keseharian, Yang Menjadikan Mie Gacoan Sebagai Tempat Yang Pas UNTUK BERKUMPUL GANGAN KELUARGA DAN TEMAN. Daman Menyajikan Mie Delangan Berbagai Variasi, Mie Gacoan Memua Orang Orang Dapat Menemukan Menu Yang Sesuai Gangan Selera Masing-Masing.

Penutup

Melalui Berbagai KeUNGGULAN Dan Inovasi Yang Ditawarkan, Mie Gacoan Tetap Menjadi Salah Satu Pilihan Makanan Cepat Saji Terbaik Di Indonesia. Konsep Buka 24 Jam, Menu Beragam, Kualitas Bahan Baku, Serta Pelayanan Yang Cepat Dan Ramah, Menjadikan Mie Gacoan Sebagai Tempat Ideal untuk Menikmati Sajian Mie Kapan Saja dan Di Mana Saja. Sebuah Pengalaman Kuliner Yang Tidak Boleh Terlewatkan Bagi Pecinta Mie.

Mie Gacoan: Menikmati Sensasi Kuliner di Goofood

Mie Gacoan: Menikmati Sensasi Kuliner di Goofood

1. Mie Gacoan: Sekilas Tentang Brand

Mie Gacoan Adalah Salah Satu Merek Kuliner Yang Tepat Merebut Perhatian Banyak Penggemar Moranan Di Indonesia. DenKenal Khususnya Di Kalangan Anak Muda, Mie Gacoan Menawarkan Beragam Jenis Mie Yang Menggoda Selera Delangan Variasi Yang Berani Dan Inovatif. Slogan Daman Yang Menankan Pada Sensasi Rasa, Mie Gacoan Menjanjikan Pengalaman Makan Yang Tidak Hanya Memuaska, Tetapi BuGa Penuh Arti.

2. Keunikan Mie Gacoan

Keunikan Mie Gacoan Terletak Pada Cara Penyajian Dan Variasi Menu Yang Ditawarkan. Mie Gacoan Menyajikan Mie Delangan Berbagai Level Keppedasan Yang Dapat Disesuaika Delangan Selera Masing-Masing Pelangan. Terdapat Pilihan Level Dari Yang Tidak Pedas Hingga Sangan Peda, Yang Membuatinya Sangan Sangat Menarik Bagi Para Penyuka Makanan Peda.

3. Menu Yang Beragam

Mie Gacoan Menyediakan Berbagai Pilihan Menu, Termasuk:

  • Mie Ayam Gacoan: Mie Yang Disajikan Potongan Daging Ayam Yang Empuk, Ditambah Delan Bumbu Khas Yang Menggoda.
  • Mie Peda: Pilihan ini SANGAT COCOK BAGI MEREKA BERANI MERANTANG DIRI UNTUK MENCOBA CITA RASA PEDAS EKSTREM.
  • Bakso: Tidak Hanya Mie, Mie Gacoan Rona Menawarkan Bakso Yang Kenyal, Dilengkapi Delangan Kuah Yang Kaya Rasa.
  • TAHU TEMPE: Sebagai Pelengkap, Tahu Dan Tempe Yang Digoreng Renyah Menjadi Pilihan Yang Digemari Oleh Para Vegetarian.

4. Penyajian Dan Daya Tarik Visual

Salah Satu Faktor Yang Membuat Mie Gacoan Begitu Populer Adalah Estetika Penyajiannya. Setiap porsi disajikan gargan indah, di atas mangkuk berwarna lisan, Dan dihiasi gargan daun bawang segar serta bahan pelengkap lain Yang Menggoda, Mimbuatinya Generipable, Yang Tenu Saja Menarik Perhatian Genasar Generi Generi Generi Geni Gen Gen Generi Generi Generi Generi Generi Generi Generi Generi Generi Generi Generi Generi Generi Genam Sosial media.

5. Mie Gacoan Dan Goofood

Kerjasama Antara Mie Gacoan Dan Gofood Memudahkan Para Penggemar Kuliner untuk menikmat Sajian lezat ini di rumah. GOFOOD APLIKASI DENGAN HGUNAKI, PELANGGAN BISA DENGAN CEPAT MEMES FAVORIT MEREKA HERYA DENGAN BEBERAPA KETUKAN DI PONSEL. Goofood Menawarkan Layanan Antar Yang Cepat, Daman Berbagai Promosi Menarik Yang Membuat Pengalaman Kuliner Semakin Hemat Dan Menyenangkan.

6. Kelebihan Menggunakan Goofood untuk Mie Gacoan

  • Aksses Kemudahan: Penguna Dapat Dapat Muda Mudah Menu Menu Dan Memilih Apa Yang Ingin Dipesan. Antarmuka aplikasi gofood yang pengguna yang ramah pengguna pengalaman menalamajah yang menyenangkan.
  • BERBAGAI Promo Menarik: GOFOOD SERING MENAWIKAN DISKON, CASHBACK, DAN Promo Spesial, Sehingga Pelanggan Dapat Menikmati Mie Gacoan Tanpa Merogoh Kocek Terlalu Dalam.
  • FLEKSIBILITAS Waktu: Pesanan bisa dilakukan Kapan Saja, Sehingga Pelanggan Tidak Perlu Khawatir Tentang Waktu Mengantri Di Restoran.

7. Testimoni Pelanggan

Berdasarkan Berbagai Ulasan Pelangangan, Mie Gacoan Selalu Mendapatkan Rating Tinggi. Banyak Yang Memuji Kualitas Rasa, Terutama Bagi Penyuka Makanan Peda. Pelanggan Rugna Menghargai Kecepatan Layanan Gofood Dalam Mengantarkan Makanan Hingaga Ke Depan Pintu Rahat.

8. Ramuan Dan Bahan-Bahan Berkualitas

Mie Gacoan Sangan Menankan Pada Kualitas Bahan-Bahan Yang Mereka Gunakan. Semua Mie Dilahah Dari Tepung Terigu Pilihan, Anggota Tekstur Yang Kenyal. Sementara Itu, Bumbu-Bumbu Yang Digunakan Merupakan Resep Rahasia Yang Diwariskan, Memastikan Cita Rasa Yang Otentik Dan Konsisten.

9. Lokasi Dan Ketersediian

Mie Gacoan Memilisi Beberapa Cabang Yang Tersebar di Berbagai Kota Besar Di Indonesia. Keberadaan Cabang ini memudahkan pelanggan tukukukan dan menikmati hidangan Yang Ditawarkan. Goofood juga memastikan Bahwa Layanan Antar Tersedia di Hampir Seluruh Lokasi Mie Gacoan, Memungkitan Lebih Banyak Orang Untuc Menikmatinya di Rahat.

10. Komitmen Terhadap Pelayanan

Mie Gacoan Dan Mitra GoFood Berkomitmen untuk Anggota PELAYANAN BERBAIK. Proses Pemesanan Yang Cepat Dan Responsif, Pengemasan Yang Rapi, Dan Pemilihan Pengantary Yang Profesional Semua Menjadi Fokus Utama untuk Anggota Pengalaman Kuliner Yang Maksimal Bagi Pelanggan.

11. Menghadapi Kompetisi

Di Tengah Maraknya Industri Kuliner, Mie Gacoan Tetap Dapat Bersaing Berkat Inovasi Yang Terus Diperkenalkan. Menu Delangahkan menu Baru Dan Menjaga Kualitas Rasa, Mie Gacoan Menunjukkan Dedikasinya Dalam Menghadapi Kompetisi.

12. Peluang unkus Pecinta Kuliner

BAGI MEREKA YANG MENCARI JATI DIRI DI DUNIA MAKANAN, MIE GACOAN BISA MENJADI PILihan Menarik Untuce Dijadikan Tempat Berkumpul Bersama Teman-Teman. Atmosfer Restoran Yang Nyaman Dan Dekorasi Yang Instagrammable Membuat Setiap Kunjungan Menjadi Pengalaman Yang Tidak Terlupakan.

13. Kegiatan Sosial Dan Edukasi

Mie Gacoan Jaga Terlibat Dalam Berbagai Kegiatan Sosial Dan Edukasi, Berusia Meningkatkan Kesadaran Tentang Pentingnya Pola Makan Sehat. Mereka Sering Mengadakan Sesi Edukasi Tentang Bahan-Bahan Makanan Dan Dampaknya Terhadap Kesehatan.

14. Umpan Balik Selalu Mensari

Mie Gacoan Berusia UNTUK TERUS MENINGKATKAN KUALITAS DAN PELAYANAN DANGAN MENDENGIKAN MASUKAN DARI PARA PELANGGAN. Umpan Balik Yang Dikumpulkan Menjadi Dasar UNTUK Pengembangan Produk Dan Layanan Yang Lebih Baik Ke Depan.

15. Kesimpulan Pendekatan Mie Gacoan

Mie Gacoan telah Mengzil langkah tepat dalam memanfaatkan platform digital seperti gofood unkukkau pelangan lebih luas. Kombinasi Antara Cita Rasa Luar Biasa, Pelayanan Yang Cepat, Dan Kemudahan Aksses Memi Mie Gacoan Menjadi Salah Satu Pilihan Utama Di Industri Kuliner Indonesia. DENGAN INOVASI Yang Berkelanjutan, Mie Gacoan Siap untuk menjawab tantangan di Masa Depan SAMBIL TETAP MANDANKAN PENGALAMAN KULINER TERBAIIK BAGI SEMUA PENCINTA MIE.

Mie Gacoan: Kenikmatan Mi Pedas Kini Di Grabfood

Mie Gacoan: Kenikmatan Mi Pedas Kini Di Grabfood

Sejarah Dan Asal Usul Mie Gacoan

Mie Gacoan, Delangan Varian Mi Pedasnya Yang Terkenal, Mulai Sukses Menarik Perhatian Pecinta Kuliner Di Indonesia. Didirikan Pada Tahun 2018, Mie Gacoan Menawarkan Cita Rasa Mi Yang Khas, Dipadukan Delangu Bumbu Pedas Yang Menggugah Selera. Konsep Bisnis ini Bermula Dari Kecinnaan Para Pendirinya Akan Mi Dan Makanan Pedas. Mereka ingin Menciptakan Tempat di Mana Pengunjung bisa Menikmati Mi Yang Nikmat Sekaligus Merasakan Sensasi Parate Yang Memuaskan.

Produk Unggulan Mie Gacoan Adalah Mi Yang Disajikan Delan Saos Pedas Khas. Rasa Yang Unik Dan Menggoda Ini Telah Yanghadikan Mie Gacoan Sebagai Salah Satu Tempat Yang Wajib Dikunjungi Oheh Pencinta Mi Dan Mereka Yang Ingin Mencoba Tantangan Baru Anggan Berbagai Level KEPEDASAN. Menu Yang Ditawarkan Pun Sangan Beragam, Menjadikan Setiap Kunjungan Menawarkan Pengalaman Yang Berbeda.

Varian menu mie gacoan

Mie Gacoan Menawarkan Berbagai Menu Pilihan Yang Membuatinya Semakin Menarik Bagi Berbagai Kalangan. Menu Andalan Tentu Saja Adalah Mie Pedas, Yang Tersedia Dalam Beberapa Level Kepedasan:

  1. Mie Pedas Level 1: Cocok Bagi Yang Baru Memulai Petualangan Pedas.
  2. Mie Pedas Level 2: Rasa Pedas Yang Lebih Terasa, Namun Masih Nyaman Untukur Kebanyakan Orang.
  3. Mie Pedas Level 3: Untuc Cukup Berani Dan Suda Terbiasa Delan Rasa Pedas.
  4. Mie Pedas Level 4: Ini Adalah Tantangan Bagi Para Penggemar Kepedasan Sejati.
  5. Mie Pedas Level 5: Sangan Peda, Hanya Bagi Yang Berani Berjuang Menghadapi Tantangan Ekstrem.

Selain Itu, Mie Gacoan Rona Menawarkan Varian Mi Lainnya Seperti Mie Goreng, Mie Kuah, Dan Mie Kwetiau. Topping Seperti Bakso, Ayam, Dan Telur Rona Tersedia, Singingga Pelanggan Bisa Menyesuaika Sesuai Selera. Mereka Juta Menu Menu Menu Khusus Tua Vegetarian.

Kenikmatan Bahan Baku Dan Kualitas

Di Mie Gacoan, Kualitas Bahan Baku Sangan Diperhatikan. Semua Mie Dan Bumbu Dibuat Fresh Setiap Hari, Menggunakan Bahan-Bahan Berkualitas Terbaik. Kecintaan Pada Kuliner Lokal Diimbangi Delangan Resep Rahasia Yang Meningkatkan Rasa Mi Dan Bumbu Pedasnya. Mie Yang Digunakan Memilisi Tekstur Kenyal, Menjadikanyaa Sempurna Saat Dipadukan Delangan Saos Yang Pedas Dan Gurih.

Setiap porsi disajikan gargan porsi yang Mengenyangkan, Dan Mie Gacoan Tidak Segan-Seegan UNTUK Anggota Porsi Ekstra Bagi Pelanggan Yang meminta. Hal ini Adalah Salah Satu Strategi Yang Diterapkan Mie Gacoan TUKUKA PENYAMANAN DAN KEPUASAN PELANGGAN.

Mie Gacoan Dalam Layanan Antar Melalui Grabfood

DENGAN KEMJUAN TEKNOLOGI, MIE GACOAN MENGADAPTASI SISTEM LAYANAN PESAN ANTAR MEMUDAHKAN PELANGGAN. Platform Melalui Grabfood, Pelanggan Kini Dapat Menikmati Kelezatan Mie Gacoan Tanpa Harus Pergi Ke Outlet. Layanan ini sangat populer di Kalangan Mahasiswa, Pekerja, Dan Semua Kalangan Yang Ingin Menikmati Mi Pedas Cepat Cepat Dan Mudah.

Pesan Melalui Grabfood Anggota Kemudahan Bagi Pelanggan UNTUK memilih Dari Berbagai Menu Yang Ada. Antarmuka Pengguna Yang Sederhana Dan Intutif Membuat Proses Pemesanan Jadi Cepat. Selain Itu, Promo Dan Diskon Menarik Sering Kali Ditawarkans, Sehingga Pelanggan Bisa Menikmati Hidangan Lezat Delangan Harak Yang Lebih Terjangkau.

Menikmati Mie Gacoan Bersama Teman

Salah Satu Keistimewaan Mie Gacoan Adalah Suasana Bersantap Yang Menyenangkan. RUMAH Makan ini Dirancang Agar Nyaman Unkuk Dijadikan Tempat Berkumpul Bersama Teman-Teman. Nuansa Ramah Dan Santai membuati setiap Kunjungan Menjadi Pengalaman Sosial Yang Positif. BAGI para Penggemar Peda, tantangan tantangan Saling mesiCicipi dan bubiskusi tentang tingkat kepedasan yang mereka pilih menhidupkan suasana seru saat menikmati hidangan.

Mie gacoan sering menjadi tempat tujuan untuk merayay momen spesial, seperti reuni, ulang tahun, atut sekedar Bertemu gangan teman lama. Hal ini menjadikan mie gacoan bukan hanya sekadar tempat makanan, tetapi buta sebagai pusat interaksi sosial.

Komunitas Dan Ulasan Pelanggan

Mie Gacoan telah membentuk Komunitas Penggemar Yang Lebih Besar. Di media sosial, Banyak Pengguna Membagikan Pengalama Mereka Mencoba Berbagai Level Pedas. Ulasan Positif Selalu Muncul Mengenai Cita Rasa Dan Penyajian Yang Menarik. Dari Penilaan Rasa Hingga Konsep Pelayanan, Banyak Pelanggan Yang Mengaku Secara Konsisten Terkesan Kualitas Kualitas Yang Diberikan.

Hashtag Yang Terkait Angan Mie Gacoan Ragi Semakin Banyak Digunakan Di Berbagai Platform, Menjadikan Merek ini Semakin Denkenal. Berbagai Konten Mengenai Tantangan Mi Pedas Pun Sering Dibagikan, Menambah Popularitas Mie Gacoan Di Kalangan Masyarakat.

Kesimpulan Yang Menarik

DENGAN FOKUS Pada Inovasi Dan Penerapan Tren Modern, Mie Gacoan Terus Berkembang Dan Memanjakan Pelanggan Gangan Pengalaman Kuliner Yang Tak Terlupakan. Hidangan Mi Pedas Yang Kreatif, Layanan Antar Yang Praktis Melalui Grabfood, Serta Komunitas Penggemar Yang Setia, Menjadikan Mie Gacoan Salah Satu Destinasi Kuliner Yang WaJib Dicoba Di Indonesia. BAGI PECINTA MI PEDA, MIE GACOAN ADALAH TEMPAT YANG BEMBAWA KENIKMATAN MI PEDAS KE DALAM HIDUP ENGA, Dan MEMUGKINKAN SEMUA ORANG UNTUK MERASAKAN TANTIGAN SERU YANG DITAWIKAN DALAM SETIAP SUAPAN.

Mie Gacoan: Kenikmatan Mie Yang Kini Bisa Dipesan Melalui Delivery

Mie Gacoan: Kenikmatan Mie Yang Kini Bisa Dipesan Melalui Delivery

Sejarah Dan Asal Usul Mie Gacoan

Mie Gacoan Merupakan Salah Satu Merek Mie Terbesar Di Indonesia, Terkenal Gangan Cita Rasanya Yang Menggugah Selera. Memulai Perjalannya Di Tahun 2017, Mie Gacoan Delangan Cepat Membangun Reputasi Di Kalangan Pencinta Kuliner. Konsep Yang Diusung Adalah Mie Delangu Bumbu Yang Khas Dan Cita Rasa Yang Beragam. Asal Muasalnya Terinspirasi Dari Racikan Mie Dari Kawasan Bandung, Anggan Perpaduan Remang Kuat Dan Aneka Sambal Yang Menggoda.

Menu ragam mie gacoan

Mie Gacoan Menawarkan menu variasi Yang Sangan Menggugah Selera. Menu Beberapa Andalan Yang Patut Dicoba Antara Lain:

  • Mie Gacoan Asli: Mie Delangu Bumbu Dasar Yang Kaya Dan Seimbang, Anggota Cita Rasa Umami Yang Mendalam.
  • Mie Goreng Pedas: BAGI PENGEMAR MAKANAN PEDAS, PILihan INI SANGAT DIREKOMENDASIKAN. Rasa Pedasnya Berpadu Sempurna Daman Kelezatan Mie Yang Kenyal.
  • Mie Ayam Gacoan: Menghadirkan Potongan Ayam Yang Lembut Gelan Kaldu Yang Gurih, Menjadikan Pilihan Ini Sangan Populer Di Kalangan Keluarga.
  • Mie Seafood: Kombinasi Udang, Cumi, Dan Ikan Menjadi Pilihan Segar Bagi Para Pecinta Makanan Laut.

Tak Hanya Mie, Mie Gacoan Rona Menyediakan Variasi Topping Seperti Pangsit, Bakso, Dan Sayuran Segar Yang Dapat Dipilih Sesuai Selera.

Pengalaman Makan Di Mie Gacoan

Sepanjang Banyak Cabangnya Yang Tersebar di Indonesia, Mie Gacoan Tidak Hanya Menyediakan Menu Makanan Yang Lezat, Tetapi Bua Pengalaman Berantap Yang Menyenangkan. SUASANA RESTO YANG NYAMAN DENGAN DESAIN MODERN MEMODER MEMBUAT PENGUJUNG MERASA BETAH. Para Pengunjung Rugna Dapat Melihat Langsung Proses Pengolahan Mie, Sehingga Menambah Kepercayaan Dan Rasa Kelezatan Jaminan Kualitas Moranan Yang Disajikan.

Mie Gacoan Dan Inovasi Delivery

Di Masa Pandemi, Banyak Restoran Berupaya Beradaptasi Delangan Meluncurkan Sistem Delivery. Mie Gacoan pun Tidak Ketinggalan, Menghadirkan Layanan Pengiriman Yang Memudahkan Pelanggan untuk Menikmati Hidangan Mereka Di Rahat. DENGAN HANYA BEBERAPA KLIK, Menu Pelanggan Dapat memesan favorit Mereka Melalui Aplikasi Yang Tersedia. Proses Pesanan Yang Cepat Dan Efisien Memastikan Bahwa Mie Gacoan Tetap Berkualitas Saat Tiba Di Tangan Konsumen.

Kualitas Dan Kesegaran Bahan Baku

Mie Gacoan Berkomitmen untuk Menyajikan Hidangan Delan Bahan Baku Berkualitas Tinggi. Semua Bahan Yang Digunakan, Mulai Dari Mie, Bumbu, Hingga Bahan Tambahan Lainnya, Pilihan Terbaik Dipastikan Daya Tahananya. Ini Merupakan Salah Satu Keunga Mie Gacoan; Meriga Mereka Mereka Kualitas Bahkan Ketika Makanan Diantarkan. Setiap Mie Yang Disajikan Haru MEMENUHI Standar Tertentu, Meningkatkan Kepuasan Pelangangan.

Promo Dan Diskon Menarik

UNTUK MENARIK LEBIH BANYAK PELANGGAN, MIE GACOAN SERING ANGGOMAN PROMO DAN DISKON MENARIK. Pengiriman Aplikasi Menggunakan, Pelanggan Dapat Menikmati Potongan Haran, Paket Hemat, Cashback Voucher Atau. Ini menjadi daya tarik utama bagi banyak pelangan, terutama saat menawarkankan Makanan untuk keluarga atuu khumpul-kumpul Bersama Teman. Promo Kapan MenGesari Kapan Berlangsung Dapat Membantu Pelanggan Menghemat Biaya Makan, Seraya Tetap Menikmati Makanan Favorit Mereka.

Pelayana pelangan yang memuka

Menawarkan Pelyanan Yang Ramah Dan Profesional Adalah Salah Satu Kunci Kuncikesan Mie Gacoan. Staf Yang Bekerja Di Mie Gacoan Dilatih UNTUK Anggota Layanan Pelanggan Yang Optimal, Baikika Pelanggan Makan Di Tempat Ataupun Saat Melakukan Pemesanan Melalui pengiriman. Ketersediaan Layanan Pelanggan 24 Jam Mengundang Pelanggan Untkan Manggan Masukan Atau Peranya Tentang Menu Dan Pesanan Mereka.

Testimoni Pelanggan

Pengalaman Pelanggan Sangan Beragam Ketika Menikmati Mie Gacoan. Banyak Pelanggan Yang Mengapresiasi Cita Rasa Dan Kelembutan Mie, Serta Keberagaman Menunya. Di media sosial, testimoni positif tentang kepuasan pelangangan dapat ditemukan dgangan makh. Makanan Yang Sampai Dalam Keadaan Hangat Dan Tenjak Terpengaruh Oheh Perjalanan Pengiriman Juga Hadi Salah Satu Hal Yang Diuncgulkan Banyak Pelangan.

Mie gacoan di media sosial

MIE GACOAN AKTIF MEMPROMOSikan Menu Dan Promo Melalui Platform Media Sosial, Seperti Instagram Dan Facebook. Mereka Secara Rutin Mengupdate Informasi Mengenai Menu Baru, Acara Kuliner, Dan Diskon Khusus untuk Pengincutnya. DENGAN KONTEN YANG MENARIK DAN INTERAKTIF, MIE GACOAN Berhasil Menarik Perhatian Lebih Banyak Audiens, Menciptakan Komunitas Yang Loyal Di Jejaring Sosial.

Keberlanjutan Dan Tanggung Jawab Sosial

Selain Fokus Pada Kepuasan Pelangangan, Mie Gacoan Rona Berkomitmen Terhadap Keberlanjutan Lingkungan. Melalui Berbagai Inisiatif, Termasuk Pengurangan Plastik Sekali Pakai Dan Pemenuhan Kualitas Bahan Baku, Mie Gacoan Terlibat Dalam Tanggung Jawab Sosial. Program MELLALUI Donasi Dan Pemanfaatan Bahan Lokal, Mie Gacoan Berusia Anggota Dampak Positif Bagi Komunitas Lokal.

Kesimpulan Tidak Diperlukan

Menu Pilihan yang Delangai Pilihan Yang Menggiurkan, Pelayanan Yang Memuaskan, Dan Inovasi Dalam Sistem Pengiriman, Mie Gacoan Telah Berhasil Menarik Perhatian Kalangan Penggemar Kuliner di Indonesia. Selain Itu, usaha mereka dalam menjaga kualitas bahan baku dan anggota pengalaman kuliner terbaik membbali pelanggan terus kembali. Melalui Pendekatan Ini, Mie Gacoan Tidak Hanya Menyediakan Makanan, Tetapi BUGA MEMBANGUN KENIGAN YANG MENYENANGKAN DI SETIAP SUAPAN.

Mie Gacoan Drive Thru: Masa Depan Masakan Indonesia Cepat

Mie Gacoan Drive Thru: Masa Depan Masakan Indonesia Cepat

Bangkitnya Mie Gacoan

Mie Gacoan dengan cepat menjadi nama yang dicintai dalam budaya kuliner Indonesia, identik dengan kualitas dan inovasi dalam makanan cepat saji. Didirikan di Indonesia, rantai makan santai ini berfokus pada penawaran hidangan mie Indonesia otentik yang menarik bagi langit -langit yang berkembang baik penduduk setempat dan wisatawan. Tidak seperti restoran tradisional yang membutuhkan makanan lama, Mie Gacoan melayani kebutuhan konsumen modern yang mencari kecepatan dan kenyamanan.

Apa yang membuat Mie Gacoan unik?

Mie Gacoan menonjol dari kebanyakan pilihan makanan cepat saji yang tersedia di Indonesia karena komitmennya terhadap rasa otentik dan bahan-bahan berkualitas. Banyak perusahaan makanan cepat saji sangat bergantung pada item yang diproses; Namun, Mie Gacoan memprioritaskan produk segar, rempah -rempah tradisional, dan bahan -bahan yang bersumber secara lokal untuk menyajikan hidangan mie khasnya.

Menu ini menampilkan berbagai mie Indonesia, seperti Mie Ayam (mie ayam), Mie Goreng (mie goreng), dan spesialisasi regional yang menggabungkan berbagai protein dan rempah-rempah yang mencerminkan warisan kuliner yang kaya di Indonesia. Setiap hidangan adalah karya kuliner yang dibuat untuk membangkitkan rasa makanan yang dimasak di rumah sambil memastikan layanan cepat.

Konsep drive-thru

Mengintegrasikan konsep drive-thru ke dalam model layanan Mie Gacoan adalah game-changer untuk masakan Fast Indonesia. Drive-thru memungkinkan pelanggan untuk mengakses hidangan favorit mereka tanpa meninggalkan kenyamanan kendaraan mereka, menjadikannya sangat menarik bagi penduduk kota yang sibuk, keluarga saat bepergian, dan snackers larut malam. Perpaduan aksesibilitas dan kecepatan ini membantu mengurangi waktu tunggu sambil mempertahankan layanan berkualitas tinggi yang dikenal oleh Mie Gacoan.

Kecepatan Memenuhi Kualitas: Model Operasional

Salah satu aspek luar biasa dari operasi drive-thru Mie Gacoan adalah alur kerja yang efisien yang dirancang untuk kecepatan dan kualitas maksimum. Dari saat pesanan ditempatkan, pendekatan sistematis memastikan bahwa setiap hidangan disiapkan dengan cepat tanpa kompromi pada rasa.

  1. Sistem pre-order: Teknologi canggih memungkinkan pelanggan untuk memesan melalui aplikasi atau kios seluler, merampingkan prosesnya. Dengan memesan di muka, pelanggan mengurangi waktu tunggu mereka dan dapat menikmati makanan mereka lebih cepat.

  2. Operasi dapur yang mulus: Staf dapur dilatih untuk bekerja secara harmonis, memungkinkan persiapan hidangan yang cepat. Bahan -bahan disiapkan sebelumnya untuk memungkinkan perakitan cepat dari setiap pesanan.

  3. Kontrol Kualitas: Anggota staf terlatih dengan ketat untuk mempertahankan standar kualitas yang telah ditetapkan Mie Gacoan. Suhu piring, profil rasa, dan presentasi dipantau secara konsisten untuk memastikan setiap makan memenuhi standar tinggi merek.

Menu beragam untuk semua selera

Mie Gacoan menawarkan beragam pilihan item menu yang melayani berbagai preferensi makanan. Seleksi ini berkisar dari mie berbasis daging hingga pilihan vegetarian, memastikan inklusivitas untuk semua pelanggan. Mangkuk khas yang dikenal karena citarasa yang kuat adalah favorit orang banyak.

Beberapa sorotan dari menu mereka meliputi:

  • Tanda Tangan Mie Ayam: Ayam lembut disertai dengan bumbu yang memikat dan sayuran segar.
  • Vegetarian Mie Goreng: Perpaduan mie tumis yang semarak dengan tahu, sayuran, dan rempah-rempah tradisional yang cocok untuk vegetarian.
  • Pedas Mie Pedas: Yang harus dicoba untuk penggemar rempah-rempah, menampilkan perpaduan saus cabai panas yang membangkitkan selera.

Upaya keberlanjutan

Selain fokusnya pada kualitas dan kecepatan, Mie Gacoan memberikan penekanan kuat pada keberlanjutan. Merek ini didedikasikan untuk mengurangi jejak karbonnya melalui praktik ramah lingkungan seperti:

  • Sumber secara lokal: Dengan mendapatkan bahan -bahan dari petani lokal, Mie Gacoan mendukung ekonomi lokal dan mengurangi emisi transportasi.

  • Kemasan ramah lingkungan: Perusahaan telah mengadopsi bahan kemasan biodegradable dan dapat didaur ulang, meminimalkan limbah yang ditinggalkan oleh pelanggan.

  • Inisiatif Pengurangan Limbah: Staf dilatih untuk meminimalkan limbah makanan melalui metode porsioning dan persiapan yang cermat, mewujudkan etos keberlanjutan di luar bahan yang adil.

Strategi Pemasaran: Berhubungan dengan Pelanggan

Mie Gacoan menggunakan strategi pemasaran inovatif yang beresonansi dengan audiens yang beragam. Memanfaatkan platform media sosial seperti Instagram, Tiktok, dan Facebook, Mie Gacoan melibatkan pelanggan dengan mendongeng visual, mempromosikan semangat masakan Indonesia.

  1. Konten yang dibuat pengguna: Pelanggan didorong untuk berbagi pengalaman bersantap mereka secara online. Konten yang dibuat pengguna ini memupuk komunitas dan koneksi sambil membuat materi pemasaran otentik.

  2. Kampanye promosi: Penawaran waktu terbatas, menu musiman, atau diskon khusus membuat pelanggan kembali untuk mendapatkan lebih banyak, sementara program loyalitas lebih lanjut memberi insentif pelanggan reguler.

  3. Kolaborasi Influencer: Bermitra dengan influencer makanan membantu memperluas jangkauan Mie Gacoan dan memperkenalkan merek kepada audiens baru yang ingin menemukan masakan Indonesia yang cepat dan otentik.

Integrasi teknologi dalam layanan pelanggan

Seiring perkembangan lanskap makanan cepat saji, Mie Gacoan telah memeluk teknologi untuk meningkatkan layanan pelanggan. Pengenalan aplikasi seluler memungkinkan pemesanan dan pembayaran yang mulus, secara signifikan meningkatkan pengalaman pengguna. Pelanggan dapat menyesuaikan pesanan mereka, memilih waktu penjemputan yang disukai, dan bahkan meninggalkan umpan balik semua melalui antarmuka yang ramah pengguna.

Tren masa depan dalam masakan Indonesia cepat

Keberhasilan model drive-thru Mie Gacoan adalah indikasi tren yang lebih besar yang muncul di sektor makan kasual cepat. Meningkatkan tuntutan untuk keaslian dan kualitas dalam makanan cepat saji, dipasangkan dengan kenyamanan layanan drive-thru, menunjukkan perubahan kolektif dalam preferensi makan.

  1. Peluang Ekspansi: Ketika minat konsumen tumbuh, ada peluang signifikan bagi Mie Gacoan untuk memperluas lokasi drive-thru tidak hanya di dalam Indonesia, tetapi secara internasional, mengubahnya menjadi duta besar masakan Indonesia.

  2. Acara kolaboratif: Hosting acara pop-up atau pengalaman truk makanan dapat mempromosikan apresiasi budaya untuk makanan Indonesia di pasar yang beragam, lebih lanjut memperkuat tempatnya di kancah kuliner global.

  3. Pilihan Kesehatan Sadar: Menumbuhkan kesadaran akan kesehatan dan kesejahteraan di antara konsumen membuka jalan bagi lebih banyak item menu yang berorientasi pada kesehatan yang mempertahankan integritas rasa tradisional sambil menarik pasar yang sadar kesehatan.

Pikiran terakhir tentang dampak Mie Gacoan

Inovasi yang diwakili oleh Mie Gacoan lebih dari sekadar tren restoran; Ini mewujudkan gerakan budaya menuju membuat makanan Indonesia dapat diakses, menyenangkan, dan cepat. Dengan memadukan resep tradisional dengan kenyamanan modern, Mie Gacoan menetapkan tolok ukur untuk masa depan santapan kasual cepat, khususnya dalam masakan Indonesia, menekankan pentingnya kualitas, keberlanjutan, dan keterlibatan konsumen. Ketika adegan kuliner terus berkembang, Mie Gacoan siap untuk tetap berada di garis depan, memimpin muatan menuju pengalaman bersantap yang lezat dan efisien yang merayakan kekayaan citarasa Indonesia.

Mie Gacoan: Solusi Kenyamanan Delangan Parkir Yang Luas

Mie Gacoan: Solusi Kenyamanan Delangan Parkir Yang Luas

Mie Gacoan telah menjadi shalat satu destinasi kuliner favorit di indonesia, terutama bagi para penggemar mie. DENGAN BERBAGAI Varian Hidangan Mie Yang Ditawarkan, Mie Gacoan Tidak Hanya Berfokus Pana Citarasa, Tetapi Jaga Pengalaman Dining Yang Nyaman, Termasuk Fasilitas Parkir Yang Luas. Konsep ini anggota Nilai Tambah Yang Signifikan Bagi Pelanggan Yang Ingin Menikmati Hidangan Lezat Tanpa Haru Khawatir Tentang Tempat Parkir.

Keunggulan Mie Gacoan

Mie Gacoan Hadir Gelan Sejumlah KeUNGGulan Yang Menjadikananya Pilihan Utama Bagi Pecinta Kuliner. Salah Satunya Adalah Beragam Pilihan Mie Yang Ditawarkan. Mie Delangan Variasi Bumbu Dan Penyajian Khas ini memunckikan Pengunjung unkiptakan Pengalaman Kuliner Yang Unik. Setiap pelanggan dapat memilih Dari Berbagai level Kepedasan Yang Dapat Dapatika Gangan Selera Masing-Masing.

Menu di Mie Gacoan Tidak Hanya Terbatas Pada Mie. Ada Berbagai Pilihan Pelengkap Seperti Bakso, Siomay, Dan Aneka Makanan Pendamping Lainnya. Hal ini anggota variasi yang lebih bagi pelangan yang ingin menin priajahi berbagai rasa dalam satu Kunjungan.

Fasilitas Parkir Luas Dan Nyaman

Salah Satu Masalah Umum Yang Sering Dihadapi Oleh Pegiat Kuliner Di Kota-Kota Besar Adalah Sulitnya Menemukan Tempat Parkir. Mie Gacoan Memahami Kebutuhan Ini, Sehingga Mereka Menyediakan Parkir Yang Luas Dan Nyaman. Area Parkir Yang memadai Memalaman Kuliner Semakin Menyenangkan, Di Mana Pelangangan Tidak Perlu Terburu-Buru Untukur Mencari Tempat Parkir Dan Dapat Lebih Menikmati Waktu Bersama Teman Dan Keluarga.

Fasilitas ini menjadikan mie gacoan pilihan ideal untuk berkumpul gangan teman-teman atu atu merayakan momen spesial. DENGAN AKSES PARKIR YANG MUDAH, Pengunjung Dapat Dataang Kapan Saja Tanpa Harus Mengkhawatirkan Kendaraan Mereka.

Menurunkan interior Yang menarik

SUASANA DI MIE GACOAN DIRANCANG SEDEMIKIAN RUPA UNTUK Anggota KENYAMANAN MAKSIMAL BAGI PENGIJUNG. Desain Interior Yang Modern Delangan Sentuhan Budaya Lokal Menciptakan Tempat Yang Tidak Hanya Sekadar Tempat Makan, Tetapi Tempat Tempat Bersosialisasi. Penataan Meja Dan Kursi Yang Ergonomis Serta Pencahayaan Yang Tepat Menambah Nuansa Nyaman, Sehingga Pengunjung Betah Berlama-Lama Menikmati Hidangan.

Penggunaan WARNA-WARNA CERAH DAN DEKORASI Yang Unik Menambah Daya Tarik Visual, Serta Membuat Pengunjung Merasa Lebih Rileks Dan Pada Giliranyaa Meningkatkan Pengalaman Mereka Saik Bersantap. Mie Gacoan Menjadi Lebih Dari Sekadar Restoran, Melainkan Tempat Yang Dapat Dijadikan Sebagai Spot Foto Menarik Bagi Para Pengunjung Yang Aktif Di Media Sosial.

Pelayana Profesional Dan Ramah

Pelayanan Yang Diberikan Oleh Staf Di Mie Gacoan Jagi Patut Diacungi Jempol. Karyawan Yang Terlatih Dan Ramah Siap Membantu Pengunjung Dalam Memilih Menu AtaU Anggota Rekomendasi Sesuai Delan Selera. Kecepatan Dalam Pelayanan Menjadi Salah Satu Prioras Sehingga Pengunjung Tidak Perlu Menunggu Terlalu Lama untuk Menikmati Hidangan Yang Mereka Pesan.

Mie Gacoan Rugna memilisi kebijakan uctik menjaga kepuasan pelangan. Setiap masukan Dari pelanggan Akan ditindaklanjuti gelan cepat untuk meningkatkan kualitas layanan. Ini memiptakan hubungan yang biik antara restoran dan pelangan, serta menjamin bahwa setiap kunjungan lawan menan kenangan yang berkesan.

Promosi Dan Program Loyalti

Mie Gacoan Sering Kali Mengadakan Promosi Menarik Dan Program Loyalti untuk pelanggan setia Mereka. Program MELLALUI INI, Pengunjung Dapat Menikmati Potongan Haran Bonus Bonus Spesial untuk setiap Kunjungan Yang Dilakukan. Strategi ini Tidak Hanya Meningkatkan Jumlah Pengunjung, Tetapi JUGA MEMPERKUAT HUBUNGAN ANTARA RESORAN DAN Pelanggannya.

Promosi Musiman Dan Acara Khusus Jagi Sering Diadakan, Yang Memberikan Kesempatan Bagi Pelanggan Menu Mencoba Menu Baru Atau Menikmati Hidangan Dengan Harga Spesial. DGANGUTI AKUN MEDIA SOSIAL MIE GACOAN, PENGUJUNG DAPAT TETAP UPDATE TENTANG PENAWARAN DAN Promo Terbaru Yang Tersedia.

Keterlibatan Dalam Komunitas

Mie Gacoan Tidak Hanya Berfokus Pada Keuntungan Bisnis Semata. Mereka JUGA AKTIF BERPARTISIPASI DALAM Program-program Sosial Dan Kegiatan Yang Melibatkan Masyarakat. Keterlibatan ini menunjukkan Kepedulian Mereka Terhadap Kondisi Sekitar, Dan Membantu Menciptakan Citra Positif Di Mata Pelangangan.

Kegiatan seperti sumbangan untkon panti asuhan atuu Kegiatan Bersih-bersih Lingungan Sering Kali Diadakan, Membawa Dampak Baik Tidak Hanya Taktoran Tetapi Tetapi Juta Untuk Masyarakat Secara Keeluruhan. Hal ini memperuat posisinya sebagai merek peduli, sekaligus meningkatkan reputasi Dan loyyitas pelangan.

Menu inovasi terus menerus

Mie Gacoan Selalu Berupaya untuk Menghadirkan Inovasi Dalam Menu Mereka. DENGAN MENGITI TREN KULINER TERKINI DAN MEMPERTIMBANGKAN MASUKAN DARI Pelanggan, Mereka Terus Memperbarui Pilihan Menu Agar Tetap Relevan. Variasi menu yang meliputi Pilihan vegetarian, non-MSG, Dan Hidangan Sehat Lainnya Jagi menjadi Perhatian, Mengingat Banyaknya Konsumen Yangin Semakin Peduli Akan Kesehatan.

Inovasi tersebut memastikan Bahwa setiap Kunjungan ke mie gacoan kan anggota sesuatu Yang Baru Dan Menarik, Sewingga Pelangangan Akan Selalu Menantikan Pengalu Bersantap Selanjutnya. Hal ini membantu mie gacoan unktap Berkompetisi di Pasar Kuliner Yangin Ketat.

Identitas Merek Yang Kuat

Mie Gacoan Memilisi Identitas Merek Yang Kuat Yang Didukung Oheh Logo Yang Murat Diingat Dan Kampanye Pemasaran Yang Efektif. Mereka Menggunakan Berbagai Saluran Pemasaran Digital Serta Media Sosial UnkuleMkau Audiens Yang Lebih Luas. Berbagai Konten Menarik Dan Interaktif Ditempatkan Di Platform Seperti Instagram Dan Facebook Untuce Memikat Minat Pengunjung Baru.

Taktik ini Tidak Hanya Membantu Dalam Meningkatkan Kesadaran merek, Tetapi buta Mencripan Komunitas Penggemar Yang Setia. UNGGAHAN FOTO Pelanggan Yang BERANG-SYG MIE MIE MIE MENJADI BENTUK PROMOSI YANG ORGANIK, SEKALIGUS MEMPERLIHATKAN KUALITAS DAN ATMOSFER MIE GACOAN.

Kesadaran Lingkungan

Mie Gacoan RuGA Menunjukkan Kesadaran Terhadap Lingkungan Gelangan Mengimplementasikan Praktik Bisnis Yang Ramah Lingungan. Penggunaan Bahan Baku Yang Berkualitas Dan Pengurangan Penggunaan Plastik Sekali Pakai Hagadi Bagian Dari Komitmen Mereka Unkuk Menjaga Alam. Banyak Restoran saat ini Mengzil Langkah-Langkah Unkule Mengurangi Limbah, Dan Mie Gacoan Berdiri di Garis Depan Gelangan Mengajak Pelangancan Mereka untuk Turut Serta Dalam Mejaga Pembebaga Lingungan.

DENGAN Tindakan Nyata, Mie Gacoan Tidak Hanya Menyediakan Moranan Yang Lezat Tetapi Juta Menunjukkan Tanggung Jawab Sosialnya Dengan Memastikan Bahwa Sisa-Sisa Mkanah Dikelola Dgan Baik Dankur Digah Dimbah Digura Dikelola. Limbah Dimbah Digah.

Aksibilitas dan lokasi strategi

Lokasi Mie Gacoan Yang Strategis Menjadi Salah Satu Alasan Mengapa Tempat Ini Sangat Diminati. DenKenal Memiliki Cabang Di Berbagai Kota, Pelangan Dapat Dapat Mudah Menemukan Cabang TerdeKat. Selain Itu, Aksibilitas Yang Baik Dari Berbagai Moda Transportasi Menjadikan Mie Gacoan Tempat Yang Ideal untuk Dikunjungi Kapan Saja.

Banyak Pelanggan Yang Tertarik Tutkulyambangi Mie Gacoan Setelah Beraktivitas Atau Melewati Hari Yang Sibuk, Berkat Kemudahan Aksses ini. SISTEM NAVIGASI Yang Baik memunckinan Pengunjung Menemukan Cabang-Cabang Delangan Cepat, Sehih Lebih Memudahkan Dalam Merencanakan Kunjungan Tanpa Kendala.

Keterhubungan Gelangan Pelanggan Melalui Media Sosial

Kehadiran Mie Gacoan Di Media Sosial Tidak Sekadar Untuce Beriklan. Mereka MEREKA Menggunakan Platform-Platform Tersebut Untuci Berinteraksi Langsung Gelan Pelanggan. Melalui sesi Tanya Jawab, Kuis, Dan Giveaway, Mie Gacoan Memunjung Merasa Terlibat Dan Dihargai. Ini Merupakan Cara Yang Efektif Untuc Membangun Loyalitas Dan Menjaga Hubungan Yang Baik Delan Pelangan.

Komunikasi Dua Arah Di Media Sosial Rona Memungkikan Mie Gacoan Unkamar Mendengar Suara Pelanggan Dan Memperbaiki Aspek-Aspek Yang Mungkkin Bisa Ditingkatkan. Sesuai Delang Tren Yang Berkembang, Kehadiran Digital Ini Sangan Sangan Pusing Bagi Kehasililan Bisnis Kuliner Masa Kini.

Mie gacoan gangan semua keunjulanya penjadi pilihan yang ideal bagi mereka yang Mengingikankan Pengalaman Bersantap Yang Menyenangkan Tanpa Mengkhawatirkan Tempat Parkir Atau Lapianan Yang Lambat. DENGAN KOMBINASI ANTARA KUALITAS MAKANAN, PELAYANAN RAMAH, Serta Fasilitas Yang Mendukung, Mie Gacoan Berkomitmen untuk Solusi Kenyamanan Bagi Para Pelangan.