(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 NTT: Permata Tersembunyi Mie Indonesia Otentik

Mie Gacoan NTT: Permata Tersembunyi Mie Indonesia Otentik

Menyelam mendalam ke mie gacoan ntt

Mie Gacoan adalah restoran simbol yang terletak di jantung Nusa Tenggara Timur (NTT), Indonesia. Terkenal karena mie Indonesia otentiknya, Mie Gacoan menggabungkan resep kuno dengan teknik kuliner modern, menjadikannya wajib dikunjungi bagi penggemar makanan. Perusahaan ini bangga menyampaikan pengalaman bersantap yang mendalam, menampilkan warisan kuliner NTT yang kaya melalui hidangan mie yang semarak.

Penawaran Unik: Jenis Mie Gacoan

Mie Gacoan menampilkan berbagai hidangan mie yang mencerminkan keragaman masakan Indonesia. Setiap persiapan dibuat dengan perhatian terhadap detail, memastikan ledakan rasa yang menyenangkan. Hidangan yang menonjol termasuk:

  1. Mie Ayam (mie ayam): Hidangan ini terdiri dari mie gandum lembut yang disajikan dengan ayam gurih, sayuran tumis, dan sedikit kecap. Kaldu ayam yang hangat memberikan sentuhan nyaman yang membuat pengunjung lebih menginginkan.

  2. Mie Goreng (mie goreng): Hidangan khas, Mie Goreng memamerkan mie tumis yang dilemparkan dengan medley rempah-rempah, sayuran, dan pilihan protein Anda-baik itu ayam, udang, atau tahu. Aroma berasap dan rasa yang kaya merangkum esensi makanan jalanan Indonesia.

  3. Mie Kuah (sup mie): Ideal bagi mereka yang mencari makanan yang lezat, Mie Kuah menampilkan mie yang terendam dalam kaldu yang beraroma, dihiasi dengan bumbu dan rempah -rempah. Kedalaman kaldu berasal dari mendidih berbagai bahan, termasuk rempah -rempah aromatik dan sayuran segar.

  4. Mie Seafood: Penghargaan untuk budaya pesisir Indonesia, hidangan ini menggabungkan makanan laut segar, seperti udang, cumi -cumi, dan ikan, di samping mie yang lembut. Makanan laut biasanya direndam dalam rempah -rempah tradisional, meningkatkan citarasa alaminya.

Bahan rahasia di balik rasa

Mie Gacoan membedakan dirinya dari sendi mie lainnya dengan mencari bahan-bahan lokal berkualitas tinggi. Mie dibuat segar setiap hari, menggunakan resep tradisional yang telah diturunkan dari generasi ke generasi. Komitmen untuk keaslian ini meluas ke bumbu dan saus mereka, sering dibuat di rumah untuk memastikan kualitas dan kesegaran.

Rempah -rempah adalah komponen penting dari masakan Indonesia. Mie Gacoan memanfaatkan campuran rempah -rempah – koriander, kunyit, dan cabai – keseimbangan rasa dan panas. Kombinasi rempah -rempah ini menghasilkan hidangan yang tidak hanya lezat tetapi juga aromatik. Penggunaan Herbal segarseperti kemangi dan ketumbar, mengangkat setiap hidangan, menambahkan lapisan rasa dan semangat.

Suasana: kenyamanan bertemu budaya

Berjalan ke Mie Gacoan, pengunjung disambut oleh warna -warna hangat dan perabotan kayu pedesaan, yang mencerminkan arsitektur lokal. Suasana dirancang untuk menjadi nyaman dan mengundang, memungkinkan para tamu untuk menikmati makanan mereka di lingkungan yang santai. Artefak budaya menghiasi dinding, memberikan wawasan tentang sejarah NTT yang kaya.

Restoran memprioritaskan kebersihan dan layanan yang efisien tanpa kehilangan pesona keramahtamahan tradisional Indonesia. Pengunjung sering disambut dengan senyum ramah, memastikan pengalaman yang tak terlupakan sejak mereka melangkah melewati pintu.

Pilihan vegan dan vegetarian

Dalam lanskap kuliner yang beragam saat ini, Mie Gacoan mencakup inklusivitas dengan menawarkan beberapa pilihan mie vegan dan vegetarian. Menu ini menyoroti hidangan yang mengganti daging dengan protein nabati seperti tempe atau tahu. Itu Mie Tempe sangat populer; Ini fitur tempe flavorsome yang dipasangkan dengan medley sayuran dan rempah -rempah yang kuat.

Selain itu, perusahaan ini menyesuaikan hidangan untuk mengakomodasi berbagai persyaratan diet, memastikan semua orang dapat menikmati rasa otentik mie Indonesia.

Pengalaman Pelanggan: Ulasan dan Testimonial

Umpan balik pelanggan memainkan peran penting dalam kesuksesan Mie Gacoan. Pengunjung sering memuji porsi yang murah hati dan harga yang wajar, menjadikannya tempat yang ideal untuk para pelancong dan penduduk setempat yang sadar anggaran. Mie yang beraroma mendapatkan peringkat tinggi, dengan banyak pelanggan fallback dengan senang hati berbicara tentang hidangan favorit mereka.

Platform media sosial dan blog makanan menggemakan sentimen positif, dengan pengguna sering memposting gambar makanan yang menggiurkan dan suasana yang mengundang. Pelanggan tetap menyoroti hidangan khas tetapi juga mengungkapkan kegembiraan pada rotasi spesialisasi musiman.

Aksesibilitas dan Lokasi

Mie Gacoan berlokasi di pusat -pusat kota di dalam NTT, sehingga mudah diakses oleh wisatawan dan penduduk. Penempatan strategis restoran di dalam distrik yang sibuk memastikan arus lalu lintas pejalan kaki yang kuat, memikat perhatian orang yang lewat dengan aroma yang menarik.

Selain itu, Mie Gacoan dilengkapi dengan fasilitas untuk keluarga, termasuk tempat duduk yang luas dan lingkungan yang ramah untuk anak -anak. Mereka juga menawarkan opsi takeout bagi mereka yang sedang bepergian, lebih lanjut meningkatkan layanan pelanggan dan aksesibilitas mereka.

Nilai nutrisi penawaran Mie Gacoan

Hidangan di Mie Gacoan tidak hanya menggoda selera tetapi juga menawarkan manfaat nutrisi. Penggunaan sayuran dan protein segar menyediakan vitamin dan mineral penting. Mie itu sendiri adalah sumber karbohidrat, memberikan dorongan energi untuk hari yang aktif menjelajahi NTT.

Sementara banyak mie yang diasosiasikan dengan indulgensi, Mie Gacoan mengambil pendekatan yang berbeda dengan memastikan bahwa penawaran mereka menyeimbangkan rasa dan nutrisi. Pengunjung makan siang dapat berjalan pergi dengan perasaan puas tanpa berat yang sering dikaitkan dengan makanan cepat saji.

Terlibat dengan komunitas

Mie Gacoan percaya dalam memberikan kembali kepada masyarakat, sering terlibat dalam acara lokal dan festival kuliner. Dengan berkolaborasi dengan petani dan pemasok lokal, mereka tidak hanya mendukung ekonomi tetapi juga memastikan kesegaran bahan -bahan mereka.

Melalui lokakarya masyarakat dan acara mencicipi makanan, Mie Gacoan memamerkan komitmennya untuk mempromosikan masakan Indonesia. Mereka bertujuan untuk mendidik penduduk setempat dan wisatawan tentang tradisi kuliner NTT yang kaya, memungkinkan apresiasi yang lebih dalam atas penawaran otentik mereka.

Kesimpulan

Mie Gacoan NTT berdiri sebagai suar mie Indonesia otentik di tengah -tengah lanskap kuliner Indonesia. Dengan komitmen yang tak tergoyahkan terhadap kualitas, tradisi, dan komunitas, ia menawarkan pengalaman bersantap yang luar biasa yang lezat dan otentik. Kunjungan ke Mie Gacoan bukan hanya makanan; Ini adalah eksplorasi dunia yang beraroma masakan Indonesia.

Mie Gacoan: Permata kuliner Sumatera Utara

Mie Gacoan: Permata kuliner Sumatera Utara

Kisah Asal

Mie Gacoan berakar dalam di lanskap kuliner yang semarak dari Sumatera Utara, Indonesia. Asal -usulnya dapat ditelusuri kembali ke tradisi lokal, di mana mie bukan hanya makanan tetapi juga simbol keramahan dan komunitas. Nama “Gacoan” itu sendiri dapat berasal dari kata Jawa “Gaco,” yang berarti berada dalam semangat kegembiraan dan perayaan, mengangkut pelanggan ke perayaan kuliner dengan setiap mangkuk yang disajikan.

Keunikan Mie Gacoan

Mie Gacoan menonjol karena mie yang tebal dan kenyal, yang dibuat dengan cermat untuk memastikan tekstur yang menyenangkan yang berpasangan sempurna dengan berbagai saus dan bahan -bahan. Tanda tangan Mie Gacoan terletak pada mie buatan sendiri, terbuat dari campuran tepung gandum berkualitas tinggi dan telur, memastikan setiap mangkuk sehat dan memuaskan.

Penawaran menu yang beragam

Menu di Mie Gacoan sama menggiurkan seperti halnya beragam, menampilkan bermacam -macam topping dan lauk yang melayani berbagai preferensi. Khususnya, penawaran klasik meliputi:

  1. Mie Kuah: Sup mie gurih yang diperkaya dengan kaldu aromatik, sering dihiasi dengan ayam, bakso, atau tahu, dan bermacam -macam herbal segar.

  2. Mie Goreng: Mie goreng yang dimasak dengan sempurna dan dilemparkan dengan medley sayuran dan protein untuk campuran tekstur dan rasa yang harmonis.

  3. Variasi topping: Pengunjung dapat mempersonalisasikan pengalaman mereka dengan pilihan seperti ayam panggang, daging sapi pedas, makanan laut, dan berbagai pilihan tahu. Fleksibilitas ini tidak hanya menarik selera tradisional tetapi juga menarik pemakan yang lebih suka berpetualang.

  4. Seleksi Sambal: Salah satu fitur ciri khas Mie Gacoan adalah kisaran sambal (saus cabai) yang mengesankan. Menampilkan varian ringan dan berapi -api, sambal ini memungkinkan pengunjung untuk menyesuaikan hidangan mereka, meningkatkan pengalaman keseluruhan. Setiap sambal disiapkan dengan bahan -bahan segar, memastikan ledakan rasa dengan setiap gigitan.

Bahan otentik

Mie Gacoan bangga menggunakan bahan -bahan lokal yang bersumber dari petani dan pasar terdekat. Dari sayuran yang semarak hingga daging artisanal, masing -masing komponen mencerminkan esensi karunia pertanian Sumatera Utara. Komitmen untuk keaslian ini tidak hanya mendukung bisnis lokal tetapi juga mempromosikan konsep pertanian-ke-meja yang beresonansi dengan pengunjung yang sadar kesehatan.

Pengalaman bersantap

Mengunjungi Mie Gacoan lebih dari sekadar makan; Ini adalah pengalaman budaya. Suasana ini dirancang untuk membangkitkan pesona tradisional Indonesia, menampilkan furnitur kayu, seni lokal, dan pencahayaan hangat yang menciptakan ruang yang ramah. Pelanggan sering disambut dengan senyum ramah dari staf yang bersemangat berbagi keindahan masakan Indonesia.

Popularitas dan Dampak Media Sosial

Sebagai permata kuliner, Mie Gacoan telah menarik perhatian para penggemar makanan dan influencer media sosial. Dengan hidangan menarik secara visual yang sempurna untuk Instagram dan Tiktok, restoran ini telah mengumpulkan pengikut yang setia. Banyak pelanggan dengan bersemangat berbagi pengalaman bersantap mereka secara online, menciptakan buzz yang menarik pengunjung baru yang ingin menikmati rasa Sumaterera Utara. Tagar seperti #miegacoan dan #CulinaryGem telah berkembang biak, menampilkan pengaruh restoran di dunia kuliner.

Peran Mie Gacoan dalam komunitas lokal

Di luar menyajikan makanan lezat, Mie Gacoan memainkan peran penting dalam komunitas. Restoran ini sering menjadi tuan rumah acara dan kegiatan yang merayakan budaya lokal, termasuk kelas memasak, pameran makanan, dan program penjangkauan masyarakat. Melalui inisiatif ini, Mie Gacoan tidak hanya menumbuhkan rasa kebersamaan tetapi juga mendidik penduduk setempat dan pengunjung tentang warisan kuliner yang kaya di wilayah tersebut.

Pertimbangan kesehatan

Bagi mereka yang memperhatikan pilihan makanan mereka, Mie Gacoan menawarkan pilihan yang memenuhi berbagai kebutuhan diet, termasuk variasi vegetarian dan bebas gluten. Pengunjung dapat meminta bahan -bahan khusus untuk memastikan makanan mereka selaras dengan tujuan kesehatan pribadi, menjadikannya pilihan makan yang inklusif untuk semua.

Ulasan dan testimoni pelanggan

Ulasan yang bersinar dari pelanggan yang puas mencerminkan komitmen pendirian terhadap kualitas dan rasa. Pelanggan rave tentang porsi yang murah hati, citarasa lezat, dan layanan yang ramah. Banyak yang menyoroti pengalaman mencicipi Mie Gacoan sebagai perjalanan melalui rempah -rempah dan bahan -bahan unik di wilayah tersebut.

Arah masa depan

Ketika Mie Gacoan terus memperluas jangkauannya, ada rencana untuk memperkenalkan hidangan baru yang terinspirasi oleh daerah lain di Indonesia, menggabungkan rasa untuk membuat hidangan fusi yang unik. Visi restoran termasuk membangun lokasi waralaba di seluruh Indonesia dan ekspansi internasional yang berpotensi, memungkinkan lebih banyak orang untuk mengalami kesenangan kuliner Mie Gacoan.

Pikiran terakhir

Dengan sejarahnya yang kaya, hidangan yang lezat, dan inisiatif yang digerakkan oleh masyarakat, Mie Gacoan berdiri sebagai bukti warisan kuliner Sumatera Utara. Rumah mie yang semarak ini tidak hanya mengisi perut tetapi juga menghangatkan hati, memastikan bahwa setiap pengunjung pergi dengan senyum dan perut penuh. Baik Anda seorang wisatawan atau pelancong, Mie Gacoan menjanjikan pengalaman bersantap yang unik dan tak terlupakan yang merangkum semangat keramahan dan masakan Indonesia.

Mie Gacoan: Permata Kuliner Sumatera Barat

Mie Gacoan: Permata Kuliner Sumatera Barat

Asal dan Sejarah

Mie Gacoan melacak akarnya ke budaya semarak dari Sumatera Barat, Indonesia. Dikenal karena hidangannya yang lezat, tradisi kuliner di kawasan ini telah dipengaruhi oleh banyak kelompok etnis, dengan masakan Minangkabau pada intinya. Mie Gacoan, yang diterjemahkan ke “Gacoan Noodles,” adalah anggukan untuk bahan -bahan dan rasa lokal yang telah disempurnakan dari generasi ke generasi. Hidangan ini mewujudkan semangat orang -orang Minangkabau, yang memiliki warisan kuliner yang kaya.

Bahan tanda tangan

Pada intinya, Mie Gacoan ditandai oleh perpaduan unik dari bahan -bahan yang menciptakan pengalaman rasa yang tak terlupakan. Basis biasanya dibuat dari mie gandum, yang dimasak dengan sempurna. Mie dipasangkan dengan serangkaian topping, termasuk ayam yang diasinkan, daging sapi gurih, atau tahu untuk pilihan vegetarian. Sayuran segar seperti kecambah kacang, kol, dan daun bawang menambah krisis dan kontras.

Elemen yang menentukan Mie Gacoan adalah penggunaan sambal, pasta cabai yang bervariasi dalam kepedasan dan rasa berdasarkan wilayah tersebut. Banyak vendor membuat resep rahasia mereka sendiri yang dapat berkisar dari sedikit pedas hingga panas. Kustomisasi ini merupakan daya tarik utama bagi penggemar makanan.

Teknik memasak

Persiapan Mie Gacoan adalah bentuk seni. Teknik memasak tradisional menekankan kesegaran dan perhatian terhadap detail. Mie sering direbus dengan cepat, memungkinkan mereka untuk mempertahankan tekstur kenyal mereka. Topping umumnya diaduk dengan rempah-rempah yang kuat, termasuk bawang putih, bawang merah, dan jintan, menciptakan simfoni rasa.

PRIMAN JALAN sering menggunakan api terbuka untuk menggoreng, menambahkan kedalaman berasap ke hidangan. Teknik ini tidak hanya meningkatkan aroma tetapi juga menanamkan bahan -bahan dengan esensi asli Indonesia.

Variasi dan adaptasi

Selama bertahun -tahun, Mie Gacoan telah berevolusi, yang mengarah ke berbagai adaptasi regional. Setiap area di dalam Sumatera Barat mungkin memiliki twist sendiri pada hidangan, memanfaatkan bahan -bahan yang bersumber secara lokal atau gaya memasak yang unik. Keragaman ini menampilkan lanskap kuliner yang kaya di Indonesia.

Misalnya, di Bukittinggi, Anda mungkin menemukan Mie Gacoan dihiasi dengan bawang merah goreng, memberikan kontras yang renyah dengan mie lembut. Sementara itu, di Padang, penekanannya dapat ditempatkan pada sambal, dengan beberapa vendor menawarkan berbagai tingkat panas untuk memuaskan setiap langit -langit.

Pengalaman bersantap lokal

Makan di Mie Gacoan adalah tentang pengalaman seperti halnya tentang makanan. Vendor makanan jalanan sering mendirikan toko di pasar yang ramai atau sudut -sudut jalan yang sibuk, di mana suasananya hidup dengan suara -suara wajan mendesis dan obrolan yang hidup. Pengalaman komunal makan di tempat -tempat ini menumbuhkan rasa koneksi di antara pelanggan.

Ketika pelanggan tiba, mereka dapat melihat proses memasak secara langsung, meningkatkan apresiasi mereka untuk makan. Warna -warna dan aroma yang semarak menghantam nafsu makan, sementara dengungan percakapan dan tawa menciptakan lingkungan yang mengundang.

Menyarankan pasangan dan penyajian

Mie Gacoan sering disajikan dengan berbagai iringan. Wedges jeruk nipis segar, acar sayuran, dan sambal tambahan adalah penawaran sampingan umum yang memungkinkan pengunjung untuk mempersonalisasikan makanan mereka. Untuk minuman yang menyegarkan, penduduk setempat sering menikmati teh es tradisional atau air kelapa, yang dengan sempurna melengkapi rasa hidangan.

Pengunjung mungkin juga memilih untuk memasangkan mie mereka dengan kerupuk, kerupuk tradisional Indonesia yang menambahkan krisis dan tekstur. Kombinasi ini tidak hanya mengangkat makanan tetapi juga berfungsi sebagai anggukan pada kegemaran daerah untuk hidangan multi-tekstur.

Popularitas di antara penduduk setempat dan wisatawan

Mie Gacoan telah mendapatkan popularitas yang signifikan baik di antara penduduk setempat dan wisatawan yang mengunjungi Sumatera Barat. Hidangan telah menjadi wajib bagi mereka yang mencari rasa otentik di wilayah tersebut. Penggemar makanan sering berbondong -bondong ke vendor terkenal seperti Mie Gacoan Nagari, yang dikenal karena penawarannya yang berkualitas dan beraroma.

Media sosial juga memainkan peran penting dalam mempromosikan Mie Gacoan. Visual yang menakjubkan dari hidangan, menampilkan warna -warna cerah dan presentasi yang menggiurkan, telah menciptakan buzz yang melampaui perbatasan. Instagram dan Tiktok dibanjiri dengan pos -pos dari pelancong yang menampilkan petualangan kuliner mereka.

Festival dan acara kuliner

Dalam beberapa tahun terakhir, festival kuliner di Indonesia telah menampilkan Mie Gacoan sebagai sorotan. Acara yang merayakan masakan lokal menyatukan koki, pecinta makanan, dan pemain budaya. Pertemuan -pertemuan ini tidak hanya meningkatkan status hidangan tetapi juga mendidik peserta tentang warisan budaya makanan Minangkabau yang kaya.

Kompetisi memasak yang menampilkan Mie Gacoan telah mendorong para koki untuk berinovasi sambil tetap setia pada resep tradisional, semakin memperkaya lanskap kuliner. Acara -acara ini merayakan komunitas dan menumbuhkan apresiasi yang lebih besar untuk budaya makanan Indonesia yang beragam.

Pengaruh kuliner di luar perbatasan

Daya tarik Mie Gacoan melampaui perbatasan Indonesia. Ketika minat global pada masakan Asia Tenggara berkembang, koki di seluruh dunia sedang bereksperimen dengan citarasa dan menghadirkannya kepada penonton yang beragam. Restoran fusi dan festival makanan sering menampilkan hidangan yang terinspirasi Mie Gacoan, mengadaptasi resep tradisional yang sesuai dengan selera lokal sambil mempertahankan esensi aslinya.

Kesimpulan

Mie Gacoan menonjol sebagai permata kuliner dari Sumatera Barat, menawan para pengunjung dengan citarasa yang kaya, pengalaman bersantap yang menarik, dan signifikansi budaya yang semarak. Apakah memanjakan diri dalam mangkuk tradisional dari pedagang kaki lima atau menikmati interpretasi modern dalam suasana santapan yang lezat, hidangan ini mewakili hati dan jiwa lanskap kuliner Sumatra Barat. Bagi siapa pun yang ingin menyelami rasa Indonesia, Mie Gacoan memang seorang gastronomi harus dicoba.

Mie Gacoan Sulawesi Selatan: Petualangan Kuliner

Mie Gacoan: Mengungkap Keajaiban Kuliner Sulawesi Selatan

Inti dari Mie Gacoan

Mie Gacoan, hidangan tercinta yang berasal dari Sulawesi Selatan, melambangkan keragaman kuliner Indonesia. Dikenal karena citarasa yang kaya dan campuran bahan -bahan yang menyenangkan, hidangan mie ini telah mendapatkan popularitas yang sangat besar di antara penduduk setempat dan wisatawan. Mie Gacoan memadukan berbagai tekstur dan selera, menjadikannya makanan lengkap yang memuaskan selera yang beragam.

Bahan yang mendefinisikan mie gacoan

Pada intinya, Mie Gacoan terdiri dari beberapa bahan penting yang menentukan profil rasanya. Komponen utamanya adalah mie—THick, kenyal, dan sering dibuat dari tepung gandum. Mie ini dipasangkan dengan berbagai topping, termasuk:

  1. Ayam: Tender, parut ayam memberikan basis protein yang kaya, memastikan hati hidangan.
  2. Hidangan laut: Udang dan cumi -cumi adalah tambahan umum yang meningkatkan rasa pantai yang khas dari masakan Sulawesi.
  3. Sayuran: Hijau segar seperti bok choy, tauge, dan daun bawang digunakan baik untuk warna dan nilai nutrisi.
  4. Telur: Telur sisi cerah atau rebus sering ditambahkan di atasnya, memberikan hidangan tekstur krim dan kaya.
  5. Rempah -rempah: Perpaduan rempah -rempah lokal – termasuk bawang putih, jahe, dan cabai – membasmi hidangan dengan kedalaman dan kehangatan.

Bahan-bahan ini biasanya diaduk goreng bersama dalam wajan besar, memungkinkan rasa berbaur secara harmonis sebelum disajikan.

Kaldu: tulang punggung beraroma

Fitur penting dari Mie Gacoan adalah kaldu, seringkali pangkalan ayam atau makanan laut yang harum. Kaldu ini diperkaya dengan ramuan dan rempah -rempah aromatik, berkontribusi pada kompleksitas keseluruhan hidangan. Begini cara kaldu meningkatkan pengalaman:

  • Infus aromatik: Didiming daging yang lambat di samping bumbu seperti serai dan daun kapur Kaffir mengekstrak rasa kaya yang halus namun kuat.
  • Variasi tekstur: Kaldu menambahkan elemen cairan yang kontras ke mie kenyal, menciptakan rasa mulut yang memuaskan.
  • Kontras Suhu: Melayani Mie Gacoan panas, seringkali langsung dari kompor, memberikan kehangatan yang menghibur, membuatnya sangat memikat dalam cuaca yang lebih dingin.

Variasi regional Mie Gacoan

Sementara elemen dasar Mie Gacoan tetap konsisten, variasi regional menunjukkan kreativitas kuliner Sulawesi Selatan. Koki yang berbeda dapat memperkenalkan bahan -bahan unik yang mencerminkan warisan kuliner pribadi atau keluarga mereka. Beberapa variasi populer meliputi:

  1. Mie Gacoan Seafood Delight: Versi ini menekankan campuran gurita, kepiting, dan berbagai kerang yang kaya, menarik bagi penggemar makanan laut.
  2. Vegetarian Mie Gacoan: Menggabungkan tahu, tempe, dan berbagai sayuran, pilihan ini melayani diet vegetarian sambil menjaga rasa.
  3. Gacoan pedas: Didorong dengan ledakan cabai dan rempah -rempah, varian ini menawarkan pengalaman berapi -api bagi mereka yang mencari intensitas.

Seni mempersiapkan mie gacoan

Untuk membuat pengalaman Mie Gacoan yang otentik di rumah, ikuti langkah -langkah ini:

  1. Masak mie: Mulailah dengan merebus mie sampai mereka mencapai tekstur al dente yang sempurna.
  2. Buat kaldu: Dalam panci terpisah, tumis bawang putih, jahe, dan bawang merah sebelum menambahkan stok pilihan Anda. Biarkan mendidih setidaknya selama 30 menit.
  3. Tumis protein dan sayuran: Dalam wajan besar, tumis protein pilihan Anda bersama dengan sayuran dan rempah-rempah yang dipilih sampai matang.
  4. Gabungkan dan sajikan: Kuras mie dan tambahkan ke wajan, aduk rata. Akhirnya, simpan kaldu aromatik di atas piring dan hiasi dengan telur.

Menjelajahi signifikansi budaya

Mie Gacoan lebih dari sekadar makan; Ini berfungsi sebagai simbol budaya di Sulawesi Selatan. Penduduk setempat sering menikmati hidangan ini selama pertemuan keluarga dan perayaan, menandakan kebersamaan dan keramahan. Selain itu, pedagang kaki lima dan restoran lokal melayani Mie Gacoan di lingkungan yang semarak, meningkatkan pengalaman bersantap komunal.

Tempat populer untuk menikmati mie gacoan di sulawesi selatan

Saat mengunjungi Sulawesi Selatan, pastikan untuk mampir ke beberapa tempat terbaik untuk menikmati Mie Gacoan. Berikut adalah rekomendasi teratas:

  1. Warung Mie Gacoan Kharisma: Terkenal karena porsi yang murah hati dan kaldu beraroma, tempat ini menarik penduduk setempat dan wisatawan.
  2. Mie Gacoan Rasa Bunda: Terkenal karena suasana rumahannya, pelanggan rave tentang makanan laut khas mereka Gacoan.
  3. Café Mie Gacoan: Kafe kontemporer ini menawarkan sentuhan modern untuk Mie Gacoan tradisional, lengkap dengan topping fusi.

Nilai gizi Mie Gacoan

Nutrisi, Mie Gacoan menawarkan kombinasi yang seimbang dari karbohidrat, protein, dan vitamin esensial.

  • Karbohidrat: Mie berfungsi sebagai sumber energi penting.
  • Protein: Ayam atau makanan laut menambahkan asam amino yang diperlukan untuk perbaikan dan pertumbuhan otot.
  • Vitamin dan mineral: Sayuran segar menyediakan serat makanan, vitamin A, C, dan K.

Merangkul Tren Modern: Mie Gacoan di era digital

Dengan munculnya media sosial, Mie Gacoan telah menemukan platform untuk bersinar di luar perbatasan Sulawesi Selatan. Blogger makanan dan penggemar kuliner berbagi pengalaman, resep, dan inovasi mereka yang melibatkan Mie Gacoan online. Pelapisan gambar-sempurna dan topping kreatif sering menyebabkan desas-desus viral pada platform seperti Instagram dan Tiktok, menginspirasi orang lain untuk mencoba tangan mereka di hidangan tercinta ini.

Kesimpulan: Meningkatkan Kesadaran Mie Gacoan

Mie Gacoan mencerminkan lanskap kuliner yang kaya dari Sulawesi Selatan. Bahan-bahannya yang beragam, metode persiapan yang unik, dan signifikansi budaya menjadikannya hidangan yang harus dicoba bagi siapa pun yang mengunjungi Indonesia. Hidangan mie yang menyenangkan ini terus beradaptasi dan berevolusi, menjanjikan rasa otentik sulawesi di setiap gigitan. Dengan menjelajahi Mie Gacoan, Anda tidak hanya menikmati makanan yang beraroma tetapi juga membenamkan diri dalam permadani budaya Indonesia yang kaya.

Mie Gacoan Kalimantan Selatan: Perjalanan Kuliner

Mie Gacoan Kalimantan Selatan: Perjalanan Kuliner

Asal mula Mie Gacoan

Mie Gacoan berakar di Indonesia, khususnya dirayakan di berbagai daerah karena citarasa unik dan signifikansi budaya. Berasal dari komunitas Cina-Indonesia, Mie Gacoan sangat tertanam dalam lanskap kuliner lokal Kalimantan Selatan (Kalimantan Selatan). Ini adalah hidangan tercinta yang menyoroti perpaduan bahan -bahan tradisional Indonesia dengan teknik kuliner yang dipengaruhi oleh masakan Cina. Nama ‘Gacoan’ sendiri menyarankan anggukan pada aspek menyenangkan menikmati makanan dalam pertemuan, ditandai dengan berbagi dan senang dengan rasa yang kaya.

Karakteristik Mie Gacoan

Apa yang membedakan Mie Gacoan adalah ramuan mie yang khas, biasanya terbuat dari tepung gandum berkualitas tinggi, yang memberi mereka tekstur kenyal dan memuaskan. Hidangan ini menunjukkan berbagai macam topping seperti ayam lezat, sayuran yang semarak, dan telur rebus, memikat penduduk setempat dan pelancong dengan campuran warna dan citarasa. Hidangan ini juga memiliki kaldu beraroma yang sering dibudidayakan dari resep keluarga yang dijaga dengan baik, mengintegrasikan berbagai rempah-rempah yang lazim dalam masakan Indonesia.

Bahan utama

Keberhasilan Mie Gacoan terletak pada pilihan bahan -bahan lokal segar. Komponen penting meliputi:

  • Mie: Biasanya buatan tangan dan direbus dengan sempurna, memastikan tekstur yang kenyal namun lembut.
  • Kaldu: Perpaduan aromatik rempah -rempah seperti bawang putih, jahe, dan sejumlah besar rempah -rempah lokal, menciptakan basis yang lezat dan menghibur.
  • Protein: Biasanya dibuat dengan ayam atau makanan laut, direndam dalam saus khas yang meningkatkan profil rasa.
  • Sayuran: Sayuran segar seperti kubis, bok choy, dan tauge memberikan krisis dan nutrisi, menjadikannya makanan lengkap.
  • Topping: Sering dihiasi dengan bawang merah goreng yang renyah, daun bawang, dan sedikit cabai bagi mereka yang menikmati tendangan pedas.

Bagaimana menikmati mie gacoan

Mie Gacoan bukan hanya makanan; itu pengalaman. Biasanya disajikan perpipaan panas, adalah umum untuk berbagi mangkuk komunal di antara teman dan keluarga, menekankan pentingnya kebersamaan dalam budaya makan. Pengunjung sering menggabungkan mie mereka dengan sisi acar sayuran atau sambal, bumbu pedas yang menggoda langit -langit lebih jauh. Hidangan ini mewujudkan semangat tradisi kuliner Indonesia, di mana setiap gigitan menceritakan kisah sejarah lokal dan warisan keluarga.

Pengalaman makan di lokasi Mie Gacoan

Di Kalimantan Selatan, berbagai restoran yang berspesialisasi dalam Mie Gacoan telah menjadi tujuan tujuan bagi pecinta makanan. Suasana restoran-restoran ini berkisar dari santapan jalanan santai hingga lebih banyak perusahaan kelas atas. Setiap lokal memancarkan pesona yang unik, sering kali dihiasi dengan dekorasi tradisional dan warna -warna cerah yang mencerminkan budaya yang kaya di wilayah tersebut. Selain itu, banyak tempat mendorong Anda untuk menonton para koki dengan terampil menyiapkan mie, menambahkan elemen tontonan pada pengalaman bersantap Anda.

Restoran Mie Gacoan Populer di Kalimantan Selatan

Ketika di Kalimantan Selatan, beberapa restoran adalah tujuan yang harus dikunjungi untuk penggemar Mie Gacoan.

  1. Mie Gacoan Banjarmasin: Dikenal karena rasanya yang otentik dan porsi yang murah hati, restoran ini sering melihat antrian panjang pelanggan yang bersemangat. Resep kaldu rahasia mereka membuat pelanggan kembali untuk mendapatkan lebih banyak.

  2. Mie Gacoan Martapura: Favorit lokal, itu menekankan hanya menggunakan bahan -bahan segar yang bersumber dari pasar terdekat. Perpaduan rasa tradisional dan modern di sini mencerminkan adegan kuliner yang berkembang di Kalimantan Selatan.

  3. Mie Gacoan Barito: Perusahaan ini bangga dengan praktik ramah lingkungannya, menyajikan hidangan dalam wadah yang dapat terurai secara hayati. Komitmen mereka tidak hanya menyoroti santapan berkelanjutan tetapi juga meningkatkan pengalaman bersantap secara keseluruhan.

Signifikansi budaya

Mie Gacoan melampaui rezeki belaka; itu berfungsi sebagai jembatan budaya. Selama pertemuan keluarga dan perayaan, hidangan ini sering menjadi pusat perhatian. Ini mencerminkan keharmonisan antara budaya etnis Kalimantan yang kaya dan pengaruh historis imigran Tiongkok. Campuran budaya ini cocok dengan narasi persatuan dan keragaman, identik dengan semangat Indonesia.

Mie Gacoan dalam Budaya Makanan Indonesia

Mie Gacoan adalah bagian dari lanskap kuliner Indonesia yang lebih luas, yang ditampilkan di samping hidangan mie tercinta lainnya seperti Bakmi dan Soto. Namun, rasanya yang unik dan metode persiapan membedakannya sebagai bahan pokok yang mewujudkan esensi Kalimantan. Interaksi rasa, tekstur, dan pengaruh budaya menciptakan daya pikat yang tak tertahankan bagi penduduk setempat dan pengunjung.

Membuat Mie Gacoan di rumah

Bagi mereka yang ingin menikmati Mie Gacoan dari kenyamanan rumah mereka, mempersiapkannya relatif mudah.

Bahan-bahan:

  • 250g mie gandum
  • 200g dada ayam, robek
  • 1 liter kaldu ayam
  • Kubis 100g, robek
  • Burung daun segar, cincang
  • Pasta cabai (opsional)

Instruksi:

  1. Masak mie dalam air mendidih sampai al dente, lalu tiriskan dan sisihkan.
  2. Dalam panci terpisah, panaskan kaldu ayam, tambahkan bawang putih dan jahe untuk rasa.
  3. Setelah kaldu mendidih, tambahkan ayam parut dan kubis. Masak sampai ayam dipanaskan.
  4. Gabungkan mie dengan kaldu, memastikan mereka jenuh dengan rasa.
  5. Sajikan panas, dihiasi dengan daun bawang dan pasta cabai untuk lapisan pedas.

Menggabungkan Mie Gacoan dalam perayaan lokal

Mie Gacoan populer selama festival dan acara lokal, memperkuat perannya dalam ikatan komunitas. Di pameran setempat, kios makanan sering menyoroti spesialisasi regional, dan Mie Gacoan sering menemukan jalannya ke showcases kuliner, memungkinkan pengunjung untuk terlibat dengan tradisi dan rasa lokal.

Memasangkan mie gacoan dengan minuman lokal

Untuk mengangkat pengalaman bersantap Mie Gacoan Anda, pertimbangkan untuk memasangkannya dengan minuman tradisional Indonesia. Minuman seperti Teh Botol (teh botolan manis) atau Es Cendol (Minuman makanan penutup dingin dengan jeli tepung nasi hijau) melengkapi hidangan dengan sempurna, menyeimbangkan kekayaan mie dengan profil rasa yang menyegarkan.

Masa Depan Mie Gacoan

Ketika penggemar makanan terus menjelajahi adegan kuliner Indonesia yang beragam, Mie Gacoan siap untuk mempertahankan statusnya sebagai favorit lokal sambil mengumpulkan minat dari gastronomi di seluruh dunia. Dengan meningkatnya globalisasi, hidangan dapat berkembang, tetapi intinya akan tetap setia pada akarnya. Koki mulai bereksperimen dengan bahan -bahan internasional dan metode persiapan, memberikan hidangan klasik ini sentuhan modern tanpa kehilangan esensi aslinya.

Kesimpulan

Dengan sejarahnya yang menarik, rasa yang kaya, dan ikatan komunitas, Mie Gacoan lebih dari sekadar hidangan; Ini adalah perayaan warisan dan kebersamaan. Bagi siapa pun yang mengunjungi Kalimantan Selatan, menikmati Mie Gacoan tidak hanya menawarkan makanan tetapi juga rasa yang signifikan dari identitas budaya di kawasan itu. Setiap mangkuk mewakili kehangatan keramahtamahan lokal dan kegembiraan pengalaman kuliner bersama, memastikan bahwa hidangan mie yang dicintai ini terus memainkan peran penting dalam permadani kuliner Indonesia.

Mie Gacoan Kalimantan Timur: Kuliner Kuliner

Mie Gacoan Kalimantan Timur: Kuliner Kuliner

Asal mula Mie Gacoan

Mie Gacoan berasal dari lanskap kuliner yang semarak di Indonesia, yang secara khusus berakar di wilayah Kalimantan Timur. Dikenal karena citarasa berani dan tekstur khasnya, hidangan ini telah melampaui perbatasan lokal, memikat pecinta makanan di kepulauan. Mie Gacoan adalah jenis hidangan mie yang menggabungkan rempah -rempah tradisional Indonesia dengan teknik memasak modern, memberikan pengalaman gastronomi yang unik.

Mie: Basis yang sempurna

Bintang Mie Gacoan tidak diragukan lagi adalah mie. Terbuat dari tepung gandum berkualitas tinggi, mie ini ditandai dengan tekstur dan elastisitas kenyal mereka. Proses persiapan melibatkan pengulangan adonan dengan sempurna, lalu memotongnya menjadi untaian tipis yang direbus sampai mereka mencapai gigitan al dente. Teknik memasak ini sangat penting, karena memungkinkan mie untuk menyerap rasa yang kuat dari saus dan topping yang menyertainya.

Flavour Explosion: Sausnya

Apa yang membedakan Mie Gacoan adalah berbagai saus yang menyumbangkan simfoni rasa. Saus yang paling populer adalah minyak bawang putih pedas, yang memberikan basis aromatik yang kaya yang melengkapi mie dengan indah. Terbuat dari bawang putih yang baru dicincang ditumis dalam campuran minyak nabati dan cabai, saus ini menawarkan tendangan yang menyenangkan tanpa membebani langit -langit.

Pilihan populer lainnya adalah kecap manis yang dikenal sebagai KECAP MANIS, yang menambahkan lapisan penting rasa manis dan kedalaman. Mie Gacoan tradisional juga dapat menampilkan saus kacang, menggabungkan kacang yang dihancurkan, jus jeruk nipis, dan sedikit gula, menciptakan keseimbangan sempurna antara gurih dan manis.

Hiasan dan protein

Pengalaman kuliner Mie Gacoan semakin ditingkatkan dengan pemilihan hiasan dan protein. Biasanya, porsi akan mencakup irisan sayuran seperti mentimun dan tauge, yang menawarkan kekenyalan dan kesegaran. Selain itu, bawang merah goreng memberikan tekstur renyah yang menyenangkan, sementara taburan daun bawang menambahkan semburat warna dan rasa.

Pilihan protein berlimpah, memungkinkan untuk pengalaman bersantap yang disesuaikan. Pilihan populer termasuk ayam, daging sapi, atau udang, direndam dalam campuran rempah-rempah sebelum dipanggang atau digoreng dengan sempurna. Tahu juga merupakan alternatif vegetarian yang diterima secara luas, menyerap rasa saus sambil menyumbangkan krimnya sendiri pada hidangan.

Sisi dan pelengkap

Untuk mengalami luas penuh rasa di Mie Gacoan, adalah umum untuk menikmatinya di samping berbagai sisi. Pengiring standar adalah kerupuk, atau kerupuk Indonesia, yang menambah kerenyahan ekstra. Tahu goreng dan tempe juga populer, memberikan pelengkap yang hangat untuk mie.

Selain itu, minuman yang menyegarkan sering disajikan di samping. Jus buah yang baru diperas – seperti tamarillo, mangga, atau markisa – ideal untuk memotong kekayaan makanan. Minuman tradisional Indonesia seperti Es Cendol, terbuat dari tepung beras dan kelapa, menawarkan tandingan yang unik dan krim.

Signifikansi Budaya Mie Gacoan

Mie Gacoan lebih dari sekadar hidangan; Ini mewujudkan kekayaan budaya Kalimantan Timur. Variasi mie ini sangat mengakar dalam tradisi lokal, sering dibawa keluar selama pertemuan komunal dan perayaan keluarga. Setiap gigitan berfungsi sebagai pengingat warisan kuliner di kawasan itu, menampilkan perpaduan harmonis dari berbagai pengaruh Indonesia.

Pasar makanan lokal sering menampilkan kios makanan yang didedikasikan untuk menyajikan Mie Gacoan. Kios -kios yang semarak ini menarik penduduk setempat dan wisatawan, mencari rasa otentik Kalimantan. Makan bersama di kios -kios ini menumbuhkan rasa kebersamaan dan pengalaman bersama, menjadikan Mie Gacoan sebagai bahan pokok yang dicintai.

Tempat Populer untuk Mengalami Mie Gacoan di Kalimantan Timur

Bagi mereka yang ingin menikmati Mie Gacoan, beberapa tempat di seluruh Kalimantan Timur terkenal karena penawaran otentik mereka. Salah satu lokasi paling terkenal adalah Mie Gacoan Roti Bakar, yang dikenal karena melayani versi yang lezat yang menyeimbangkan rasa dan kualitas. Suasana yang nyaman dan layanan yang ramah menjadikannya wajib dikunjungi.

Restoran lain, Gacoan Kitchen, telah mendapatkan pengakuan atas tikungan uniknya di hidangan tradisional. Dengan menggabungkan bahan -bahan baru dan gaya kontemporer, mereka menarik bagi para tradisionalis dan pemakan petualang.

Bagi pengunjung yang menjelajahi kota Balikpapan, Warung Makan Gacoan menawarkan menu yang penuh dengan kesenangan lokal, dan Mie Gacoan mereka sangat populer di kalangan pelanggan. Suasana yang semarak, ditambah dengan makanan lezat, menciptakan pengalaman bersantap yang tak terlupakan.

Pertimbangan kesehatan

Sementara Mie Gacoan tidak dapat disangkal beraroma, pertimbangkan ukuran dan bahan porsi jika Anda sadar kesehatan. Hidangan bisa tinggi natrium karena saus kedelai dan bumbu. Memilih sayuran tambahan dapat meningkatkan nilai gizi sambil memungkinkan pengunjung untuk menikmati rasa tanpa rasa bersalah.

Popularitas yang semakin besar

Munculnya media sosial telah mendorong Mie Gacoan menjadi pusat perhatian, dengan blogger makanan dan influencer menyoroti kelezatannya. Foto mangkuk berwarna -warni yang sarat dengan topping dan saus menarik penggemar makanan untuk menjelajahi masakan lokal. Karena semakin banyak orang menemukan Mie Gacoan, popularitasnya terus melambung, menjadikannya sorotan kuliner Kalimantan Timur.

Tren yang berkembang di Mie Gacoan

Dengan lanskap kuliner yang berkembang dalam inovasi, banyak restoran sedang bereksperimen dengan Mie Gacoan. Variasi vegan dan bebas gluten menjadi lebih umum, melayani audiens yang beragam. Koki juga menggabungkan rasa internasional, mengamati pengaruh dari ramen Jepang atau tumis Cina, memperluas daya tarik.

Kesimpulan

Mie Gacoan berdiri sebagai bukti luar biasa akan seni kuliner Kalimantan Timur, mengundang pengunjung untuk menikmati selera otentik Indonesia. Dengan mie kenyal, medley rempah -rempah, dan akar budaya yang kaya, Mie Gacoan bukan hanya hidangan; Ini adalah pengalaman, yang berjanji untuk meninggalkan kesan abadi pada siapa pun yang cukup beruntung untuk menikmati kesenangannya. Apakah dinikmati di kios lokal atau restoran yang trendi, Mie Gacoan tidak diragukan lagi harus dicoba bagi siapa pun yang menjelajahi harta kuliner Indonesia.

Mie Gacoan: Kuliner Ikonik Dari Jawa Tengah

Mie Gacoan: Kuliner Ikonik Dari Jawa Tengah

Mie Gacoan Adalah Salah Satu Kuliner Ikonik Yang Berasal Dari Jawa Tengah, Yang Telah Menarik Perhatian Banyak Pencinta Kuliner, Tidak Hanya Di Indonesia Tetapi Jua Di Level Internasional. Mie Ini Dengan Tekstur Kenyal Yang Khas Dan Cita Rasa Yang Menggugah Selera. Menu varian Daman Berbagai, Mie Gacoan Menjadi Tempat Favorit Bagi Penggemar Mie Yang Menencari Pengalaman Kuliner Yang Unik Dan Menyenangkan.

Sejarah Mie Gacoan

Mie Gacoan Pertama Kali Denkenal Dan Didirikan Di Semarang, Jawa Tengah. Nama “Gacoan” Berasal Dari Kata “Gaco”, Yang Dalam Bahasa Jawa Berarti “Unggulan”. Mie ini Mulai Denkenal Luas Pada Tahun 2000-An Dan Sejak Saaty Itu, Mie Gacoan Menjelma Menjadi Salah Satu Tempat Bersantap Yang Paling Dicari Di Daerah Tersebut. DENGAN KUALITAS DAN RASA YANG KONSISTEN, MIE GACOAN TELAH BERHASIL MENCIPTAKI LAYALITAS PELANGGAN YANG SANGAT TINGGI.

JENIS-JENIS MIE GACOAN

Mie Gacoan Menawarkan Berbagai Jenis Mie Yang Dapat Disesuaika Delangan Selera Pelanggan. BerIKUT ADALAH BEBERAPA JENIS MIE YANG POPULER DI KALIGAN Pengunjung:

  1. Mie Goreng: Mie goreng di mie gacoan khas bumbu yang meresap dan tidak terlalu berminyak. Paduan Sayuran Segar Dan Potongan Ayam Membuat Hidangan Ini Semuaskan.

  2. Mie Kuah: UNTUK Pencinta Hidangan Berkuah, Mie Kuah Gacoan Hadir Gelan Kaldu Beraroma Yang Gurih. Kombinasi Rempah Dan Bumbu Rahasia Menjadikan Kuah Ini Sangan Nikmat.

  3. Mie Peda: Sensasi pedas Dari Mie Gacoan Sangan Terkenal. Terdapat Beberapa Level Kepedasan Yang Dapat Dipilih Sesuai Dangan Selera. Pengunjung bisa ballasi level level level HINGGA TERPEDAS Yang Dapat Menggugah Adrenalin.

  4. Mie Bakar: Variasi unik ini disiapkan gargan Cara Dibakar, Anggota Rasa Smoky Yang Menambah Khas Mie. Disajikan Delan Saus Sambal Yang Menggugah Selera.

  5. Mie Seafood: Mie Yang Dipadu Delangan Aneka Wood Segar Seperti Cumi, Udang, Dan Kepiting. Hidangan ini SANGAT COCOK BAGI PENCINTA MAKANAN LAUT.

Bahan-Bahan Berkualitas

Salah Satu Alasan Mengapa Mie Gacoan Menjadi Kuliner Ikon Adalah Penggunaan Bahan-Bahan Berkualitas Tinggi. Mie Yang Digunakan Adalah Mie Segar Yang Dibuat Langsung Setiap Hari. Ini memastikan Bahwa setiap mangkuk mie Yang disajikan memilisi tekstur dan rasa yang maksimal.

Di Samping Itu, Bumbu Dan Sosis Yang Digunakan Adalah Resep Asli Yang Didapat Dariasi Generasi Ke Generasi. Kombinasi Bumbu INI Anggota Rasa Yang Kaya Dan Memikat, Menjadikan Setiapan Suapan Menjadi Pengalaman Kuliner Yang Tidak Terlupakan.

SUASANA DAN PELYANAN

Mie Gacoan Tidak Hanya Menawarkan Kuliner Yang Lezat, Tetapi Juta Suasana Yang Nyaman Dan Ramah. Desain Interior Yang Sederhana Namun Menarik Menciptakan Suaa Santai Di Mana Pengunjung Dapat Menikmati Morana Bersama Teman Dan Keluarga. Pelayanan Yang Cepat Dan Ramah Menjadi Salah Satu Poin Plus Yang Membuat Pelanggan Merasa Betah Berlama-Lama Di Tempat ini.

Lokasi Dan Cabang

Mie Gacoan Memilisi Beberapa Cabang Di Seluruh Jawa Tengah Dan Kini Telah Melua Ke Berbagai Kota Besar Di Indonesia. Tetap Tetap Tetap Kualaitas Dan Cita Rasa Yang Beberapa Cabang Yang Terkenal Antara Lain:

  • Semarang: Sebagai Tempat Asalnya, Cabang Ini Selalu Dipenuhi Pengunjung Baik Lokal Maupun Wisatawan.
  • Yogyakarta: Mie Gacoan Yogyakarta Menjadi Favorit Bagi Mahasiswa Dan Keluarga.
  • Surakarta: Cabang Yang Selalu Ramai Dipadati Oleh Penggemar Kuliner.

Menu Pelengkap

Selain Mie, Mie Gacoan Rona Menyediakan Beragam Menu Pelengkap Yang Sayang Untukur Dilewatkan. Beberapa di Antarananya Termasuk:

  • PangSit Goreng: Renya di luar Dan lembut di dalam, pangsit goreng ini merupakan pendamping Yang Sempurna untuk menikmati mie.
  • Tahu renyah: Tahu Yang Digoreng Hingga Kering, Anggota Tekstur Yang Berbeda Dan Rasa Yang Sedap.
  • Es teh manis: Minuman Yang Menyegarkan, Sangan Cocok Setelah Menikmati Hidangan Yang Peda.

Resep mie gacoan di rumah

BAGI Penggemar Mie Gacoan Yang Ingin Mencoba Buat Sendiri Di Rumah, BerIKUT ADALAH RESEP Sederhana UNTUK MEMUAT MIE GORENG GAYA GACOAN:

Bahan-Bahan:

  • 250 gram mie telur
  • 2 Sendok Makan Minyak Sayur
  • 2 Siung Bawang Putih, Cincang Halus
  • 100 gram ayam fillet, Potong Dadu
  • 1 Cangkir Sayuran Segar (Kol, Wortel)
  • 2 Sendok Makan Kecap Manis
  • 1 Sendok Teh Saus Sambal (Sesuai Selera)
  • Garam Dan Merica Secukupnya

Cara Memasak:

  1. Rebus Mie Dalam Air Mendidih Selama 3-5 Menit, Taliskan, Dan Sisihkan.
  2. Minyak Panaska, Tumis Bawang Putih Hingga Harum. Tambahkan Potongan Ayam, Masak Hingga Matang.
  3. Masukkan Sayuran, Aduk Sebentar.
  4. Tambahkan Mie, Kecap Manis, Saus Sambal, Garam, Dan Merica. Aduk Hingga Semua Bahan Tercampur Rata.
  5. Sajikan Hangat Dan Nikmati!

Tips Mengunjungi Mie Gacoan

UNTUK PENTUJUNG YANG PERAMA KALI BERKUNJUNG KE MIE GACOAN, ADA BEBERAPA Tips Yang Bisa Membantu:

  • Waktu Kunjungan: Usahakan tidak pergi saat jam coran siang atuu malam yang sibuk agar tidak menunggu lama.
  • Pesan Mie Pedas: Jika Anda MenyUKai Rasa Pedas, Jangan Ragu Untkoba Level Maksimum Supaya Bisa Merasakan Tantangan.
  • Promo Program: Selalu Tiatsa Apakah Mie Gacoan Memiliki Promo Atau Diskon untuk Pelanggan Baru Atau Di Hari-Hari Tertentu.

Keterlibatan Dalam Komunitas

Mie Gacoan Tidak Hanya Berfokus Pada Keuntungan Semata, Tetapi BUGA AKTIF TERLIBAT DALAM KEGIAN SOSIAL DI SEKitaranya. Program MELLALUI BERBAGAI CSR, MEREKA Anggota Dukungan Kepada Masyarakat Lokal, Terutama Dalam Hal Pendidikan Dan Kesehatan.

Keterlibatan ini Semakins Menguatkan Citra Positif Mie Gacoan Di Mata Pelangangan, Menciptakan Hubungan Emosional Yang Kuat. Ini anggota Dorongan Bagi Pengunjung untuk Tidak Hanya Menikmati Hidangan Lezat Tetapi Jagi Berkontribusi Dalam Kebaany Sosial.

Kehadiran digital

Di era digital Saat ini, mie gacoan telah memanfaatkan media sosial untuk menjangkau pelangangan lebih lebih efektif. DENGAN Konten Visual Yang Menggugah Selera, Mereka Berhasil Menarik Perhatian Banyak Orang. Tidak Jarang, Mereka Mengadakan Kuis Dan Giveaway Yang Membuat Pengunjung Semakin Tertaris Unkoba Hidangan Di Tempat ini.

Tinjau Pelanggan

Ulasan Dari Pelanggan Merupakan Aspek Dalam Memperuat Reputasi Mie Gacoan. Umpan Balik Banyaknya Positif Mengenai Cita Rasa Dan Pelayanan, Mie Gacoan Berhasil Menciptakan Basis Pelanggan Yang Loyal. Tinjau di platform seperti google dan media sosial menunjukkan tingkat kepuasan yang tinggi, gargan banyak pelangan merekomendasikan kepada temat dan keluarga.

Menu Pengembangan

Mie Gacoan Jaga Terus Berinovasi Delangahkan Menu Variasi Baru Dalam Mereka. Setiap Tahun, Pengunjung Dapat Menantika Menu Musiman Atau Edisi Terbatas Yang Yang Membuat Pengalaman Makan Semakin Menarik. Inovasi ini tidak hanya menarik pelangangan baru, tetapi buta menjaga ketertarisika pelangangan lama agar -agar tetap kembali.

Kesimpulan

Mie Gacoan telah menjelma menjadi shalat satu kuliner ikonik Dari jawa tengah yang tidak Biheh Dilewatkan. DENGAN KUALITAS BAHAN, Menu Variasi, Pelayanan Yang Nyaman, Dan Keterlibatan Sosial Yang Kuat, Mie Gacoan Merupakan Piliihan Sempurna Bagi Siapa Saja Yang Ingin Menikmati Cita Rasa Kuliner Indonesonia Kunj. Pengalaman mesiCicipi Mie Gacoan Tidak Akan Hanya Memenuhi Selera, Tetapi BuGA Anggota Kenangan Indah Dalam Dunia Kuliner Yang Kaya Rasa Dan Daya Tarik.

Mie Gacoan Jawa Barat: Perjalanan Kuliner ke Jantung Indonesia

Mie Gacoan Jawa Barat: Perjalanan Kuliner ke Jantung Indonesia

Menemukan Mie Gacoan

Mie Gacoan telah menangkap hati dan selera para penggemar makanan di seluruh Indonesia, khususnya di Jawa Barat. Hidangan mie yang dicintai ini adalah simbol dari warisan kuliner yang kaya di kawasan itu, menawarkan perpaduan unik dari rasa dan tekstur yang mencerminkan budaya Jawa Barat yang semarak. Setiap mangkuk Mie Gacoan bukan hanya makanan; Ini adalah kisah yang dibuat melalui generasi tradisi kuliner.

Asal dan Sejarah

Mie Gacoan berasal dari permadani yang kaya budaya makanan jalanan Indonesia. Pada 1980 -an, pedagang kaki lima di Jakarta mulai mempopulerkan berbagai jenis mie, dengan Mie Gacoan muncul sebagai favorit lokal. Hidangan ini ditempatkan di restoran -restoran sederhana yang dihiasi dengan dekorasi berwarna -warni, seringkali berdengung dengan pelanggan yang energik yang ingin menikmati semangkuk mie yang menghibur. Nama “Gacoan” berkaitan dengan bahasa gaul yang menangkap esensi pemenuhan makanan yang membuat seseorang merasa puas dan puas.

Bahan dan persiapan unik

Ciri khas Mie Gacoan terletak pada kombinasi bahan dan teknik persiapan yang unik. Mie gandum berkualitas tinggi berfungsi sebagai pangkalan, disiapkan segar setiap hari untuk memastikan elastisitas dan kenyal yang optimal. Mie Gacoan tradisional biasanya disajikan dengan:

  • Kaldu gurih: Kaldu adalah campuran ayam atau kaldu daging sapi yang dibuat dengan cermat, direbus dengan rempah -rempah seperti bawang putih, bawang merah, dan serai, memastikan kedalaman rasa.
  • Sayuran yang semarak: Hijau segar, wortel, dan tauge biasanya ditambahkan untuk memberikan kontras yang menyegarkan dengan kaldu gurih. Kerenyahan mereka menyeimbangkan rasa yang kaya dari hidangan.
  • Pilihan Protein: Pengunjung dapat menyesuaikan Mie Gacoan mereka dengan protein seperti ayam lembut, daging sapi segar, atau tahu, melayani pecinta daging maupun vegetarian.

Menambah daya pikatnya adalah kisaran bumbu yang tersedia, termasuk sambal tajam, bawang merah goreng, dan sedikit kecap. Setiap bumbu memungkinkan untuk profil rasa yang dipersonalisasi, meningkatkan rasa keseluruhan hidangan.

Pengalaman bersantap

Restoran Mie Gacoan di Jawa Barat menawarkan suasana bersantap yang semarak, mencerminkan budaya makan komunal Indonesia. Akomodasi yang hangat menggabungkan meja kayu pedesaan dengan dekorasi tradisional Indonesia, menumbuhkan rasa kenyamanan dan kepemilikan. Ketika pelanggan menggali mangkuk mie mereka, mereka sering berbagi tawa dan cerita, menciptakan pengalaman komunal yang dinamis.

Pemandangan mangkuk yang mengepul dan aroma rempah -rempah yang menggiurkan yang melayang di udara membuat mustahil untuk ditolak. Makanan sering disertai dengan hidangan samping seperti tahu goreng atau tempe, yang melengkapi hidangan utama dan merupakan bahan pokok dalam masakan Indonesia.

Varian Mie Gacoan Populer

Sementara Mie Gacoan tradisional dicintai oleh banyak orang, koki sering bereksperimen dengan berbagai bahan, yang mengarah ke variasi yang menyenangkan. Beberapa alternatif populer termasuk:

  • Mie Gacoan Spicy: Permukaan berapi -api, menampilkan tendangan ekstra pasta cabai untuk mereka yang mendambakan lebih banyak panas.
  • Seafood Mie Gacoan: Menampilkan udang, cumi -cumi, atau ikan, varian ini menyoroti rasa pantai Indonesia, menawarkan sentuhan unik untuk hidangan tradisional.
  • Vegetarian Mie Gacoan: Membatasi daging tetapi memperkuat rasa, berbagai sayuran dan protein nabati digunakan untuk menciptakan kesenangan bebas rasa bersalah.

Merangkul warisan budaya

Mie Gacoan lebih dari sekadar hidangan; Ini mewakili warisan budaya Indonesia. Pengalaman bersantap komunal mewujudkan kehangatan dan keramahtamahan yang ditemukan dalam budaya Jawa. Ketika keluarga berkumpul untuk menikmati makanan ini, mereka tidak hanya berbagi makanan, tetapi juga cerita dan tradisi mereka, menjaga warisan mereka tetap hidup.

Mie Gacoan dan Tren Modern

Di era di mana presentasi makanan memainkan peran penting, Mie Gacoan telah memeluk tren modern sambil tetap setia pada akarnya. Banyak restoran sekarang menggunakan teknik pelapisan yang rumit dan hiasan yang semarak untuk meningkatkan daya tarik visual. Platform media sosial seperti Instagram dan Tiktok telah semakin mendorong popularitas Mie Gacoan, dengan pengguna berbagi gambar yang menakjubkan secara visual, sehingga menarik audiens yang lebih muda ke hidangan tradisional ini.

Mie Gacoan: Manfaat Kesehatan

Mie Gacoan tidak hanya lezat tetapi juga menawarkan berbagai manfaat kesehatan. Sayuran segar menyediakan vitamin dan mineral, sementara pilihan sumber protein memungkinkan makanan yang seimbang. Mie dapat dibuat dari biji -bijian utuh, mengurangi indeks glikemik dan menjadikannya pilihan yang lebih sehat daripada banyak makanan cepat saji. Metode moderasi dan memasak dapat mengubah Mie Gacoan menjadi makanan kaya nutrisi.

Kesimpulan

Mie Gacoan mewujudkan esensi tradisi kuliner Indonesia sambil menawarkan pengalaman yang mengundang yang beresonansi dengan pengunjung dari segala usia. Karena semakin banyak penggemar makanan menemukan hidangan yang lezat ini, warisan Mie Gacoan terus berkembang di jantung Jawa Barat dan seterusnya. Dari asal-usulnya yang sederhana di sudut-sudut jalan menjadi bahan pokok terkenal di food court, Mie Gacoan menampilkan yang terbaik dari seni kuliner Indonesia, menjadikannya wajib bagi siapa pun yang mencari rasa otentik dari rasa yang kaya kepulauan itu.

Mie Gacoan Jawa Timur: Kelezatan Yang Menggugah Selera

Mie Gacoan Jawa Timur: Kelezatan Yang Menggugah Selera

Mie Gacoan Adalah Salah Satu Kuliner Yang Sedang Naik Daun Di Jawa Timur, Indonesia. Makanan ini Tenjak Sekadar Sekumpulan Mi Biasa; Mie Gacoan Menawarkan Pengalaman Kuliner Yang Tiada Tara, Mulai Dari Cita Rasa Yang Menggugah Selera Huncga Suasana Yang Nyaman Untuc Dinikmati Bersama Teman Atau Keluarga. Terdapat Beberapa Hal Menarik Yang Menjadikan Mie Gacoan Layak Untkoba.

Asal Usul Mie Gacoan

Mie Gacoan Muncul Di Tengah Gempuran Kebudayaan Kuliner Dari Berbagai Daerah Di Indonesia. Penciptaan Mie Gacoan Dimulai Dari Keinginan untuk Menyajikan Mi Yang Lezat Anggan Bahan-Bahan Berkualitas. Nama ‘Gacoan’ Diamin Dari Istilah Yang Dalam Bahasa Jawa Berarti Makanan Yang Bisa Dikonsumsi Delan Lahap. Tentu Saja, Filosofi ini menjadi Cikal Bakal Dari Cita Rasa Otentik Yang Ditawarkan.

Keunikan Rasa Mie Gacoan

Mie Gacoan Memilisi Beberapa Varian Rasa Yang Patut Untukur Dicoba. Setiapan Hidangan Disiapkan Dengan Resep Rahasia Yang Sudah Diturunkan Dari Generasi Ke Generasi. Mie ini Dengan Kuah Kaya Kaya Rasa, Terbuat Dari Kaldu Yang Dimasak Perlahan Sehingga Cita Rasananya Menjadi Lebih Mendalam. Beberapa varian Yang Paling Terkenal Antara Lain:

  • Mie Ayam Gacoan: Hidangan ini Merupakan Kombinasi Sempurna Antara Mi Lembut Dan Daging Ayam Yang Dibumbui Secara Merata. Kuahnya yang Kaya membruat setiap suapan menjadi Kenikmatan tersendiri.

  • Spesial Mie Goreng: Bagi Pecinta Mi Goreng, Mie Gacoan Menawarkans Versi ISTimewa Campuran Sayuran Segar, Bakso, Dan Telur. Dimasak Delangu Bumbu Rahasia, Cita Rasa Mi Goreng Di Sini Patut Diacungi Jempol.

  • Mie Seafood: Untkin ingin Merasakan Cita Rasa Laut, Mie Gacoan Tidak Ketinggalan Dagan Menambahkan Laut Seafood Segar Yang Memberikan Kelezatan Tersendiri Dalam Setiap Suapan.

Penyajian Yang Menarik

Salah Satu Daya Tarik Mie Gacoan Adalah Penyajiannya Yang Estetik Dan Menggugah Selera. Sebelum Menikmati MI, Pengunjung Akan Disuguhi Pemandangan Mi Yang Terhidang Delan Cantic, Lengkap Delangan Taburan Bawang Goreng Dan Irisan Daun Bawang Segar. Sentuhan Akhir Seperti Kerupuknya yang Renyah Menambah Kesan Lezat Pada Hidangan. SUASANA RESTORAN YANG BERSIH DAN NYAMAN JUGA MENDUKUNG PENGALAMAN BERSANTAP MENJADI LEBIH BERKESAN.

Bahan Berkualitas Tinggi

Mie Gacoan Berkomitmen untuk Hanya Menggunakan Bahan-Bahan Berkualitas Tinggi. Semua Sayur-Sayuran Diarang Dari Petani Lokal Untukur Memastikan Kesegaran Dan Nutrisi. Daging Ayam Dan Seafood Yang Digunakan Juta Merupakan Produk Piliihan Yang Telah Terjamin Kualitasnya. Bahan-Bahan Berkualitas ini menjadi kunci utama dalam Menciptakan Cita Rasa Yang Otentik Dan Menggugah Selera.

Menu Variasi Tambahan

Selain MI, Mie Gacoan Rona Menyediakan Beragam Moranan Pendukung Yang Menjadikananya Lebih Lengkap. Pengunjung Dapat Menemukan Berbagai Pilihan:

  • Bakso: Bakso Yang Dihidangkan Delangan Mi Merupakan Salah Satu Favorit Banyak Pengunjung. Kenyal Dan Juicy, Bakso Ini Sangan Cocok untuk Melengkapi Hidangan Utama.

  • Tahu renyah: Tahu Yang Digoreng Sampai Renya Dan Disajikan Delangal Sambal Khusus Menjadi Camilan Yang Sempurna Sebelum Menikmati Hidangan Utama.

  • Minuman Segar: Mie Gacoan Menawarkan Beragam Minuman Segar Yang Akan Menyegarkan Tenggorokan, Mulai Dari Es Jeruk, Teh Manis, Hingga Minuman Khas Daerah Yang Patut Dicoba.

Diskon Dan Promo Menarik

Mie Gacoan JagA Sering Kali Menawarkan Diskon Dan Promo Menarik Bagi Para Pelangankannya. DGAN MENDAFTAR MENGADI ANGGOTA ATAU MERIIKUTI SOSIAL RESMI MEREKA, PELANGGAN BISA MENDAPATKAN INFORMASI TERKINI TENDANG PENAWARAN SPESIAL, KUPON DISKON, DAN EVENT-EVENDE-EVEN MENARIK YANG DIADAHAN OLEH MIE GACOAN. Ini tentu saja anggota nilai lebih bagi pelangan yang ingin merasakan kelezatan mie gacoan tanpa haru merogoh kocek terlalu dalam.

Pengalaman Makan Yang Seru

Mengunjungi Mie Gacoan Bukan Hanya Sekadar Makan, Tetapi BUGA Pengalaman Bersosialisasi Yang Menyenangkan. Restoran ini penggusung konsep tempat nongkrong yang nyaman, cocok unkumpul berkumpul bersama teman atuu keluarga. DESAIN INTERIOR YANG MODERN DAN LINGAH LINGKUNGAN MEMBUAT SETIAP PENGUJUNG MERASA BETAH BERLAMA-LAMA.

Lokasi Strategis

Mie Gacoan Memilisi Beberapa Cabang Yang Terletak Di Lokasi Strategis Di Jawa Timur, Membuatnya Muda Diakses Oleh Publik. Dari Pusat Kota Hingga Area Perumahan, Setiap Cabangnya Menawarkan Tempat Yang Nyaman Daman Pelayanan Ramah. Hal ini menjadikan mie gacoan sebagai Pilihan Tepat Bagi Siapa Saja Yang Ingin Menikmati Hidangan Mi Yang Lezat.

Ulasan Pelangan

Tenjed Sedikit Pengunjung Yang Terpukau Delangan Cita Rasa Dan Layanan Yang Diberikan. Banyak Ulasan Positif Bererseliweran Di Media Sosial Dan Platform Review Lainnya. PelanganGan Mengagumi Konsistensi Rasa, Pelayanan Yang Cepat, Dan Harga Yang Terjangkau. Semua Ini Berkontribusi Popularitas Mie Gacoan Sebagai Salah Satu Destinasi Kuliner Terfavorit Di Jawa Timur.

Komitmen Terhadap Keberlanjutan

Mie Gacoan RuGA Berkomitmen Terhadap Keberlanjutan Lingungan. Daman Menggunakan Bahan-Bahan Lokal Dan Menjalankan Praktik Bisnis Yang Ramah Lingungan, Mie Gacoan Berusia Untkekan Dampak Positif Bagi Masa Masa Sekitar Dan Lingkungan. Ini menjadikan Pilihan Konsumsi di Mie Gacoan Tidak Hanya Lezat, Tetapi JUGA Bertanggung Jawab.

Kesimpulan

Mie Gacoan Jawa Timur Menawarkan Kombinasi Sempurna Antara Rasa, Kualitas, Dan Pengalaman Bersantap Yang Menyenangkan. Menu Delangam Beragam Pilihan Yang Lezat, Suasana Yang Nyaman, Dan Komitmen Terhadap Keberlanjutan, Mie Gacoan Berhasil Menciptakan Tempat Yang Menarik Bagi Pecinta Kuliner. Kelezatan Mie Gacoan Jelas Tidak Bisa Dilewatkan Bagi Siapa Pun Yang Berada Di Jawa Timur.

Peringkat Mie Gacoan: Tinjauan Komprehensif

Peringkat Mie Gacoan: Tinjauan Komprehensif

1. Gambaran Umum Mie Gacoan

Mie Gacoan, nama ikonik dalam adegan kuliner Indonesia, berspesialisasi dalam menyajikan hidangan mie yang lezat dan terjangkau. Dikenal karena perpaduan rasa yang unik, Mie Gacoan memberikan pengalaman bersantap yang melayani selera lokal dan internasional. Lokasi strategisnya di seluruh Indonesia telah memungkinkannya untuk menumbuhkan basis pelanggan yang setia, menjadikannya tempat favorit bagi pecinta mie.

2. Sorotan Menu

Mie Gacoan menawarkan menu beragam yang menampilkan rasa tradisional Indonesia sambil menggabungkan teknik kuliner modern. Item kunci meliputi:

  • Mie Kuah (sup mie): Hidangan khas ini memiliki kaldu yang kaya dan beraroma, dilengkapi dengan sayuran segar, protein, dan campuran rempah -rempah yang meningkatkan rasanya.

  • Mie Goreng (mie goreng): Yang harus dicoba, Mie Goreng datang penuh dengan keseimbangan sempurna antara rasa manis, asin, dan umami. Dilemparkan dengan sayuran dan protein, ia menawarkan makanan yang memuaskan di setiap gigitan.

  • Tahu Tempe (Tahu dan Tempe): Bagi mereka yang mencari pilihan vegetarian, hidangan ini menyenangkan. Dengan tekstur surgawi dan kerenyahan goreng, ia berpasangan dengan sangat baik dengan saus cabai yang menyertainya.

  • Lauk pauk: Mie Gacoan juga menawarkan bermacam -macam lauk seperti sayap ayam, nasi goreng, dan sate, memberikan tekstur dan rasa kontras yang berbeda dengan makanan Anda.

3. Kualitas Bahan

Salah satu fitur yang menentukan Mie Gacoan adalah komitmennya untuk menggunakan bahan-bahan segar berkualitas tinggi. Mie buatan tangan setiap hari, memastikan konsistensi dalam tekstur. Sayuran segar yang bersumber dari pasar lokal meningkatkan setiap hidangan, sementara protein seperti ayam, daging sapi, dan makanan laut dipilih dengan cermat untuk rasa dan kualitas. Mie Gacoan bangga mempertahankan sumber etika, memastikan bahwa semua bahan aman dan sehat bagi konsumen.

4. Suasana dan Lingkungan

Saat memasuki Mie Gacoan, pengunjung disambut dengan suasana kontemporer namun nyaman. Interiornya menampilkan perpaduan dekorasi modern dengan elemen -elemen tradisional Indonesia, menciptakan suasana hangat yang membangkitkan rasa nostalgia. Pengaturan tempat duduk dioptimalkan untuk kenyamanan, cocok untuk kelompok kecil dan keluarga yang lebih besar. Kebersihan adalah yang terpenting, dengan staf sering membersihkan meja dan area umum.

5. Layanan Pelanggan

Layanan pelanggan di Mie Gacoan dikenal karena kecepatan dan keramahannya. Anggota staf terlatih, berpengetahuan luas tentang menu, dan ingin membantu pelanggan dengan pilihan mereka. Waktu tunggu rata -rata cenderung minim, memungkinkan pengunjung untuk menikmati makanan mereka tanpa penundaan yang tidak perlu. Perhatian staf berkontribusi pada pengalaman bersantap yang menyenangkan yang membuat pelanggan kembali.

6. Titik Harga

Keterjangkauan adalah daya tarik yang signifikan bagi Mie Gacoan. Harga berkisar dari IDR 20.000 hingga IDR 50.000 per hidangan, menjadikannya pilihan yang sangat baik untuk siswa dan keluarga. Ukuran porsi yang murah hati dengan harga yang wajar memastikan bahwa pengunjung merasa mereka menerima nilai yang baik tanpa mengurangi rasa.

7. Nilai gizi

Mie Gacoan berfokus pada keseimbangan antara rasa dan nutrisi. Dengan menawarkan berbagai jenis mie dan topping kaya protein opsional, pelanggan dapat membuat makanan yang selaras dengan preferensi makanan mereka. Pilihan vegetarian dan vegan lazim, memastikan bahwa individu yang mencari alternatif yang lebih sehat dapat menikmati menu.

8. Popularitas dan Umpan Balik Pelanggan

Mie Gacoan telah mengumpulkan reputasi yang solid secara online, dengan banyak ulasan positif pada platform seperti TripAdvisor dan Instagram. Pengunjung sering memuji rasa yang berani, porsi yang murah hati, dan keterjangkauan. Banyak pelanggan telah menyoroti hidangan khusus yang mereka sukai, sering kali berbagi gambar yang menampilkan warna -warna cerah dan mangkuk mie yang mengepul. Namun, beberapa kritik telah menunjukkan ketidakkonsistenan dalam selera di lokasi yang berbeda, tetapi contoh -contoh ini tampaknya lebih outlier daripada standar.

9. Aksesibilitas dan Lokasi

Cabang -cabang Mie Gacoan terletak secara strategis di daerah yang ramai, seringkali dekat universitas, pusat perbelanjaan, dan kawasan bisnis. Penempatan semacam itu meningkatkan aksesibilitas bagi pelanggan dan wisatawan lokal, menarik lalu lintas pejalan kaki dan memastikan aliran pelanggan yang stabil sepanjang hari.

10. Praktik Keberlanjutan

Mie Gacoan juga dikenal karena inisiatifnya terhadap keberlanjutan. Pembentukan telah mengambil langkah -langkah untuk mengurangi jejak lingkungannya dengan memanfaatkan kemasan biodegradable untuk pesanan takeout dan menerapkan praktik daur ulang di dalam restorannya. Komitmen terhadap keberlanjutan beresonansi dengan baik dengan basis konsumen yang sadar lingkungan, meningkatkan daya tarik keseluruhannya.

11. Promosi dan Penawaran Khusus

Promosi reguler, termasuk diskon untuk siswa dan penawaran makan keluarga, telah membuat Mie Gacoan lebih menarik bagi konsumen yang peka terhadap harga. Spesial musiman dan item menu baru sering diperkenalkan, mendorong kunjungan berulang dan memungkinkan tamu untuk mencoba sesuatu yang baru selama setiap tamasya.

12. Media Sosial dan Kehadiran Online

Mie Gacoan memiliki kehadiran online yang dinamis, memanfaatkan platform media sosial secara efektif untuk terlibat dengan audiens mereka. Perbarui yang sering menampilkan hidangan baru, di belakang layar melihat persiapan makanan, dan kesaksian pelanggan berkontribusi pada rasa kebersamaan di antara para penggemar. Sifat interaktif merek ini menciptakan pengikut yang setia, menumbuhkan rasa memiliki di antara pelanggan.

13. Kesimpulan

Mie Gacoan menonjol di lanskap makanan Indonesia dengan hidangan mie yang tak tertahankan, komitmen terhadap kualitas, keterjangkauan, dan layanan yang sangat baik. Setiap kunjungan menjanjikan perjalanan kuliner yang menyenangkan yang penuh dengan rasa yang kaya dan suasana yang menyambut. Apakah orang lokal mencari makanan cepat saji atau turis yang mencari pengalaman bersantap Indonesia yang otentik, Mie Gacoan memberikan kepuasan di setiap mangkuk.