(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.

Menjelajahi Varietas Mie Gacoan: Petualangan Pedas

Menjelajahi Varietas Mie Gacoan: Petualangan Pedas

Mie Gacoan telah menjadi sensasi kuliner, khususnya di Indonesia. Hidangan mie yang dicintai ini dikenal karena citarasa yang kaya, tekstur berlimpah, dan ledakan rempah -rempah yang menyenangkan langit -langit. Berasal dari Jogjakarta, Mie Gacoan mewakili perpaduan elemen kuliner tradisional dan modern, menjadikannya pesta untuk penggemar pangan lokal dan internasional.

1. Yayasan: Apa itu Mie Gacoan?

Mie Gacoan terutama terbuat dari mie telur, yang direbus menjadi al dente yang sempurna. Mie berfungsi sebagai kanvas untuk berbagai topping dan saus, masing -masing menyumbangkan rasa dan sensasi yang unik. Inti dari Mie Gacoan terletak pada saus pedasnya, sering dibuat dari dasar bawang putih, cabai, kecap, dan makanan laut atau kaldu ayam. Fleksibilitas hidangan ini memungkinkannya untuk mudah disesuaikan berdasarkan preferensi individu atau pembatasan diet.

2. Bahan tanda tangan

Mie Telur: Jantung Mie Gacoan, mie ini biasanya dibuat dengan gandum, menghasilkan tekstur kenyal yang menahan saus dengan indah.

Saus Pedas: Saus tanda tangan adalah campuran sambal (pasta cabai), bawang putih, dan kecap, menciptakan keseimbangan sempurna antara panas, manis, dan umami.

Topping: Topping umum termasuk ayam parut, udang, tahu goreng, dan sayuran seperti bok choy atau tauge. Taburan bawang merah goreng yang murah hati menambahkan tekstur renyah dan rasa.

3. Varietas Mie Gacoan

A. Mie Gacoan Ayam (mie ayam)

Varian ini memiliki potongan ayam yang lezat, sering direndam dalam campuran rempah -rempah untuk profil rasa yang lebih dalam. Pasangan ayam empuk luar biasa dengan saus pedas dan memperkaya hidangan keseluruhan.

B. Mie Gacoan Seafood

Untuk pecinta makanan laut, versi ini menggabungkan berbagai makanan laut, termasuk udang dan cumi -cumi. Kesegaran makanan laut melengkapi saus, menciptakan hidangan lezat yang membuat pengunjung menginginkan lebih.

C. Vegetarian Mie Gacoan

Vegetarian dapat menikmati pandangan lezat pada hidangan ini dengan tahu goreng, sayuran berwarna -warni, dan saus cabai yang kaya. Medley bahan -bahan menciptakan makanan yang memuaskan dan lezat tanpa daging.

D. Mie Gacoan Special

Variasi ini meningkatkan kombinasi semua protein – ayam, udang, dan daging sapi. Dikenal karena citarasa yang luar biasa, versi khusus ini melayani mereka yang ingin mengalami spektrum penuh selera yang ditawarkan oleh Mie Gacoan.

4. Faktor rempah -rempah

Salah satu karakteristik yang menentukan dari Mie Gacoan adalah panasnya. Dengan Sambal sebagai bahan utama, berbagai tingkat rempah -rempah dapat disesuaikan sesuai dengan preferensi pribadi. Bagi mereka yang menikmati panas, cabai ekstra dapat ditambahkan, mengangkat hidangan ke petualangan yang berapi -api.

5. Mempersiapkan Mie Gacoan di rumah

Untuk membawa rasa Mie Gacoan ke dapur Anda, resep sederhana termasuk:

Bahan-bahan:

  • 200 gram mie telur
  • 2 sendok makan sambal
  • 2 cengkeh bawang putih, cincang
  • 2 sendok makan kecap
  • 150 gram ayam atau udang
  • Sayuran (bok choy, wortel, tauge)
  • Bawang merah goreng untuk hiasan

Instruksi:

  1. Rebus mie telur sesuai dengan instruksi paket dan saring.
  2. Dalam wajan terpisah, tumis bawang putih dalam minyak sampai keemasan.
  3. Tambahkan daging (ayam atau udang) dan masak sampai selesai.
  4. Aduk saus sambal dan kedelai, aduk rata untuk digabungkan.
  5. Aduk mie rebus dan sayuran, aduk sampai dipanaskan.
  6. Sajikan dalam mangkuk, finishing dengan bawang merah goreng untuk hiasan.

Versi di rumah ini menawarkan fleksibilitas mengenai pilihan protein dan tingkat rempah-rempah, dan memungkinkan pengunjung untuk menghargai esensi hidangan dengan cara yang dipersonalisasi.

6. Mie Gacoan dan pendamping

Sementara Mie Gacoan dapat dinikmati solo, memasangkannya dengan minuman tradisional Indonesia meningkatkan pengalaman kuliner secara keseluruhan. Teh manis (teh es manis) dan Es jeruk (Jus jeruk segar) adalah pilihan populer yang memberikan keseimbangan yang menyegarkan bagi kepedasan hidangan.

7. Menemukan Mie Gacoan

Mie Gacoan dapat ditemukan di berbagai restoran dan kios makanan jalanan di seluruh Indonesia. Tempat -tempat penting termasuk pasar makanan yang ramai Jakarartas, tempat penduduk setempat berkumpul untuk menikmati kelezatan ini. Banyak perusahaan membanggakan resep rahasia mereka sendiri, memberi pelanggan pengalaman unik dengan setiap kunjungan. Bagi mereka yang berada di luar Indonesia, berita yang fantastis adalah bahwa beberapa restoran di seluruh dunia sekarang menawarkan masakan asli Indonesia, membuatnya lebih mudah untuk menikmati Mie Gacoan tidak peduli lokasi Anda.

8. Signifikansi Budaya

Mie Gacoan lebih dari sekadar makan; Ini adalah bahan pokok budaya yang menyatukan orang. Sering dinikmati bersama keluarga atau teman, hidangan ini melambangkan makan bersama, mewujudkan kehangatan keramahtamahan Indonesia. Ini berfungsi sebagai pengingat dari beragam warisan kuliner negara itu, menyoroti rempah -rempah regional dan teknik memasak.

9. Tips untuk Menikmati Mie Gacoan

Untuk benar -benar menghargai Mie Gacoan, pertimbangkan tips ini:

  • Nikmati rempah -rempah: Luangkan waktu Anda untuk mengalami lapisan rasa. Biarkan panas membangun secara bertahap saat Anda menikmati mangkuk Anda.

  • Campur dan cocok: Eksperimen dengan topping yang berbeda berdasarkan preferensi pribadi. Hidangan ini mendorong kreativitas petualangan rasa yang unik dengan setiap iterasi.

  • Pasangan kuliner: Pertimbangkan apa lagi yang cocok dengan Mie Gacoan. Lauk tradisional seperti sate panggang atau tempe goreng renyah dapat mengangkat makanan Anda lebih jauh.

  • Pengalaman Sosial: Kumpulkan teman untuk malam Mie Gacoan di mana semua orang dapat membuat mangkuk pilihan mereka, mengubah makanan sehari -hari menjadi malam yang tak terlupakan.

10. Hubungan Cinta Pedas

Bagi penggemar mie dan penggemar rempah -rempah, Mie Gacoan adalah hidangan yang menjanjikan kepuasan dan kegembiraan dengan setiap gigitan. Apakah makan di pasar jalanan yang ramai, restoran lokal, atau menyiapkan versi buatan sendiri, varietas Mie Gacoan menghadirkan peluang untuk eksplorasi kuliner – masing -masing mangkuk penuh dengan kepribadian dan rasa. Dengan segudang topping dan tendangan pedas khas, hidangan yang menyenangkan ini pasti akan meninggalkan kesan abadi dan keinginan untuk lebih banyak. Dari nuansa halus yang datang dengan masing -masing varian hingga budaya semarak yang diwakilinya, Mie Gacoan adalah petualangan pedas yang layak untuk memulai, berkali -kali.

Sorotan pada bahan -bahan Mie Gacoan Medan

Inti dari Mie Gacoan Medan: Kuliner Kegembiraan

1. Memahami Mie Gacoan

Mie Gacoan adalah permata kuliner tercinta yang berasal dari Medan, Indonesia. Hidangan ini telah mendapatkan popularitas yang sangat besar karena citarasa yang kaya dan presentasi yang unik. Inti dari Mie Gacoan adalah mie khasnya, di samping bermacam -macam topping dan saus yang meningkatkan rasanya. Setiap bahan memainkan peran penting dalam menciptakan keseimbangan yang harmonis, menampilkan seni masakan Indonesia.

2. Mie: Hati Mie Gacoan

Fondasi Mie Gacoan adalah mie -nya, biasanya terbuat dari tepung gandum. Mie dikenal karena tekstur kenyal dan kemampuannya untuk menyerap rasa dari saus yang menyertainya. Seringkali, mie ini direbus dengan konsistensi yang sempurna, memastikan mereka tetap al dente. Ketebalan mie yang bervariasi menambah tekstur dan rasa mulut, menjadikan setiap gigitan pengalaman yang menyenangkan.

  • Tepung terigu: Tepung gandum adalah bahan utama, menyediakan struktur dan elastisitas, yang sangat penting untuk menciptakan tekstur mie yang sempurna.

  • Telur: Beberapa variasi mungkin termasuk telur, kekayaan pinjaman dan profil rasa yang ditingkatkan untuk mie.

  • Air: Jumlah air yang tepat sangat penting untuk melembabkan adonan secara memadai sambil memastikan bahwa mie mempertahankan konsistensi kenyal mereka saat dimasak.

3. kaldu: ledakan rasa

Kaldu yang menyertai Mie Gacoan sering menjadi karya kuliner itu sendiri. Biasanya dibuat dengan mendidih berbagai bahan untuk mengekstraksi rasa umami yang dalam. Resep rahasia Chef mungkin melibatkan banyak bahan, masing -masing menyumbangkan catatannya sendiri.

  • Stok ayam: Basis stok ayam kaya membawa kedalaman dan kehangatan pada hidangan. Stok dididihkan dengan tulang, sayuran, dan ramuan selama berjam -jam untuk memastikan rasa yang kuat.

  • Pasta Udang (Terasi): Bahan fermentasi ini menambah kedalaman umami yang kompleks ke dalam kaldu, meningkatkan rasanya secara keseluruhan.

  • Rempah -rempah: Rempah -rempah yang umum digunakan termasuk bawang putih, jahe, dan bawang merah, yang ditumis untuk melepaskan minyak aromatiknya, menambah lapisan rasa ke dalam kaldu.

4. iringan dan topping

Mie Gacoan bersinar melalui variasi topping yang tidak hanya meningkatkan rasa tetapi juga menambahkan daya tarik visual pada hidangan.

  • Sembunyikan cincang: Sembunyikan yang baru dicincang menambah semburan warna dan rasa bawang ringan yang melengkapi kekayaan kaldu.

  • Bawang merah goreng: Bawang rapat goreng yang renyah membawa renyah yang menyenangkan dan rasa manis yang halus, menyeimbangkan profil keseluruhan hidangan.

  • Telur rebus: Sering dimasak sebagian, telur -telur ini menyumbang krim dan rasa kuning telur yang kaya, meningkatkan kesenangan hidangan.

  • Pasta Chili: Pasta cabai pedas yang terbuat dari cabai segar biasanya disajikan di samping, memungkinkan pengunjung untuk menyesuaikan tingkat panas mereka sesuai dengan preferensi pribadi.

5. Saus Unik: Buat atau Hancurkan Hidangan

Saus adalah tempat Mie Gacoan benar -benar membedakan dirinya, seringkali merupakan campuran rahasia yang dapat bervariasi dari satu perusahaan ke tempat lain.

  • Saus kedelai: Staple dalam masakan Indonesia, kecap gelap sering digunakan untuk gerimis di atas mie, memberikan profil rasa asal manis yang klasik untuk hidangan.

  • Bumbu kacang: Saus yang kaya dan krim ini terbuat dari kacang tanah menambah rasa gila dan tekstur beludru pada mie.

  • Jus Lime: Sedikit jus jeruk nipis sering ditambahkan untuk memotong kekayaan, memberikan nada jeruk yang menyegarkan yang mencerahkan seluruh hidangan.

6. Sayuran: Peningkatan segar dan renyah

Mie Gacoan biasanya menampilkan medley sayuran segar, meningkatkan nilai gizinya dan menawarkan krisis yang menyenangkan.

  • Kubis: Kubis parut halus umumnya digunakan, memberikan tekstur yang renyah dan rasa manis halus yang menyeimbangkan rasa yang kuat dari kaldu.

  • Wortel: Wortel yang diiris atau julien menambah warna dan sedikit rasa manis pada campuran, sementara juga berkontribusi vitamin dan mineral.

  • Kailan (Brokoli Cina): Menambahkan sentuhan kepahitan, Kailan meningkatkan kedalaman rasa di Mie Gacoan.

7. Add-On Opsional: Menyesuaikan Pengalaman Anda

Fleksibilitas Mie Gacoan adalah bagian dari pesonanya, memungkinkan untuk berbagai tambahan opsional yang melayani selera yang beragam.

  • Tahu: Kubus tahu goreng dapat dimasukkan untuk dorongan protein, menambahkan tekstur kenyal yang kontras dengan mie.

  • Babi atau daging sapi: Beberapa variasi mungkin termasuk potongan daging babi atau daging sapi yang diasinkan, ditumis dengan sempurna, dan diresapi dengan rempah -rempah aromatik.

  • Bola Ikan: Ini adalah tambahan yang populer, meminjamkan rasa makanan laut yang unik dan tekstur kenyal yang melengkapi mie.

8. Signifikansi Budaya Mie Gacoan

Mie Gacoan bukan hanya makanan; Ini adalah lambang warisan kuliner di Medan. Secara tradisional, dinikmati selama pertemuan, perayaan, dan makanan keluarga, melambangkan komunitas dan kebersamaan. Hidangan ini menangkap esensi budaya Indonesia, menunjukkan rasa regional dan pentingnya berbagi makanan.

9. Pertimbangan Kesehatan dan Aspek Nutrisi

Meskipun lezat, penting untuk mempertimbangkan aspek nutrisi Mie Gacoan. Dengan keseimbangan yang tepat dan pemilihan bahan, hidangan ini dapat menjadi bagian dari diet sehat.

  • Karbohidrat: Mie memberikan karbohidrat penting untuk energi, sedangkan sayuran yang ditambahkan berkontribusi serat dan nutrisi.

  • Protein: Menambahkan protein, seperti telur, tahu, atau daging, dapat membuat hidangan ini lebih mengisi dan bergizi.

  • Vitamin dan Mineral: Sayuran segar tidak hanya meningkatkan rasa tetapi juga menambah vitamin, membantu mempertahankan diet seimbang.

10. Variasi Regional: Bangsa Mie

Sementara Mie Gacoan terutama terkait dengan Medan, variasi hidangan dapat ditemukan di seluruh Indonesia, masing -masing dengan twist pada rasa dan bahan. Keragaman ini mencerminkan lanskap kuliner yang kaya di Indonesia dan kemampuan beradaptasi orang -orangnya untuk membuat hidangan yang merayakan selera lokal.

Menjelajahi Mie Gacoan Medan mengungkapkan dunia rasa yang didasarkan pada tradisi, namun terus berkembang. Setiap bahan menyumbangkan sentuhan uniknya, menjadikannya hidangan yang dapat dihargai dan dinikmati oleh siapa pun, menampilkan keindahan dan kompleksitas keahlian memasak Indonesia.

Mie Gacoan vs. Toko Mie Lainnya: Apa yang membedakannya?

Menjelajahi Mie Gacoan

Mie Gacoan telah menangkap hati (dan perut) pecinta mie di seluruh Indonesia dan sekitarnya. Dikenal karena beragam hidangan mie yang lezat dan beragam, itu berdiri sebagai bukti warisan kuliner yang kaya dari masakan Indonesia. Tapi apa sebenarnya yang membedakan Mie Gacoan dari toko -toko mie lainnya?

Warisan Mie Gacoan

Berasal dari Yogyakarta, Mie Gacoan menarik inspirasi dari resep tradisional Indonesia sambil menggabungkan tikungan modern. Para pendiri bertujuan untuk membuat masakan Indonesia asli dapat diakses oleh audiens yang lebih luas. Setiap hidangan di Mie Gacoan bukan hanya makanan tetapi representasi budaya, tradisi, dan inovasi.

Penawaran Menu Unik

Tidak seperti toko mie standar yang sering membatasi menu mereka hingga beberapa hidangan dasar, Mie Gacoan menawarkan beragam pilihan. Hidangan khas mereka termasuk Mie Goreng (mie goreng), Mie Kuah (mie sup), dan serangkaian topping seperti bawang merah goreng renyah, ayam panggang, dan tahu.

Salah satu fitur yang menonjol adalah kemampuan untuk menyesuaikan pesanan, memungkinkan pengunjung untuk memilih kadar saus atau menambahkan topping tambahan. Fleksibilitas ini memastikan bahwa setiap kunjungan dapat menjadi pengalaman kuliner yang berbeda.

Bahan berkualitas

Mie Gacoan membanggakan sumber bahan-bahan berkualitas tinggi. Mereka memprioritaskan sayuran segar, daging yang dipilih dengan cermat, dan mie pengrajin yang terbuat dari tepung bermutu tinggi. Banyak toko mie tradisional dapat mengandalkan pilihan yang sudah dikemas sebelumnya, tetapi komitmen Mie Gacoan terhadap kualitas memastikan profil rasa yang lebih kaya dan lebih otentik.

Misalnya, saus cabai buatan rumah dibuat dari varietas cabai lokal, memberikan keseimbangan panas dan rasa yang meningkatkan setiap hidangan tanpa mengalahkan selera dasar.

Profil rasa yang luar biasa

Rahasia popularitas Mie Gacoan terletak di dalam profil rasanya. Rasa yang berani dan kaya harmonis, tidak seperti rasa yang sering sederhana yang ditemukan di banyak toko mie lainnya. Setiap hidangan adalah orkestra bahan yang seimbang, dengan saus semarak yang mengikat semuanya.

Penggabungan rempah -rempah lokal dan ramuan menambah kualitas aromatik yang mengangkut pelanggan langsung ke jantung masakan Indonesia. Salah satu favorit pelanggan adalah Mie Ayam, yang menawarkan kombinasi yang menghibur namun menarik dari kaldu ayam gurih, potongan ayam yang lezat, dan rasa umami yang berbeda dari kecap, menghasilkan pengalaman bersantap yang tak terlupakan.

Presentasi dan Suasana

Presentasi adalah landasan lain yang membedakan Mie Gacoan dari toko -toko mie lainnya. Hidangan disajikan dalam mangkuk bergaya, dan dihiasi dengan penuh pertimbangan, membuatnya tidak hanya lezat tetapi juga menarik secara visual. Perhatian terhadap estetika ini meluas ke suasana restoran.

Dengan dekorasi modern, modern, dan tempat duduk yang nyaman, makan di Mie Gacoan terasa lebih seperti petualangan kuliner daripada sekadar makanan lainnya. Suasana dirancang untuk pemakan biasa dan mereka yang ingin merayakan acara -acara khusus, memberikan layanan yang menarik yang merawat pelanggannya.

Koneksi dengan pelanggan

Interaksi dan pengalaman pelanggan memainkan peran penting dalam model bisnis Mie Gacoan. Anggota staf dilatih untuk menawarkan layanan yang sangat baik, dengan penuh perhatian menangani pembatasan dan preferensi diet. Tingkat layanan pelanggan ini sering diabaikan di toko -toko mie yang lebih kecil, di mana layanan dapat terasa terburu -buru atau lalai.

Selain itu, Mie Gacoan secara aktif terlibat dengan basis pelanggannya melalui media sosial, mempromosikan hidangan baru, menampung kontes, dan mengumpulkan umpan balik. Ini menciptakan suasana komunitas yang membuat pelanggan kembali, ingin mencoba sesuatu yang baru sambil menikmati favorit mereka.

Harga kompetitif

Sementara beberapa perusahaan gourmet dapat memberi harga hidangan mereka di luar jangkauan untuk pelanggan biasa, Mie Gacoan tetap berkomitmen untuk keterjangkauan. Harga mereka kompetitif di dalam pasar makanan, memungkinkan pengalaman bersantap berkualitas tinggi tanpa merusak bank. Spesial dan promosi juga dapat ditemukan secara teratur, memastikan bahwa makanan lezat tetap dapat diakses.

Praktik keberlanjutan

Mie Gacoan juga membuat langkah dalam keberlanjutan, yang merupakan perhatian utama bagi pengunjung modern. Ini kontras dengan toko mie tradisional yang mungkin tidak mempertimbangkan dampak lingkungan mereka. Mie Gacoan mencakup kemasan ramah lingkungan dan secara aktif bekerja untuk meminimalkan limbah dalam operasi mereka.

Penggunaan wadah dan peralatan yang dapat terurai secara hayati membantu mengurangi limbah plastik, menarik bagi meningkatnya demografi konsumen yang sadar lingkungan. Pendekatan pemikiran ke depan ini tidak hanya meningkatkan reputasi mereka tetapi selaras dengan nilai-nilai basis pelanggan yang semakin sadar.

Kehadiran dan Aksesibilitas Online

Di era digital ini, Mie Gacoan mengakui pentingnya kehadiran online yang kuat. Situs web mereka yang ramah pengguna dan keterlibatan media sosial yang aktif memungkinkan akses mudah ke menu, promosi, dan lokasi mereka. Layanan pemesanan dan pengiriman online memperluas jangkauan mereka, memastikan bahwa lebih banyak orang dapat menikmati penawaran mereka dari kenyamanan rumah mereka.

Sebaliknya, banyak toko mie tradisional tidak memiliki integrasi teknologi ini, berpotensi mengasingkan audiens yang lebih muda dan paham teknologi. Mie Gacoan memberikan contoh utama tentang cara memodernisasi pengalaman bersantap sambil menghormati tradisi kuliner.

Promosi dan acara yang unik

Di luar menyajikan makanan lezat, Mie Gacoan juga menyelenggarakan acara khusus, malam bertema, dan kelas memasak untuk melibatkan pelanggan mereka lebih jauh. Inisiatif ini tidak hanya menumbuhkan rasa kebersamaan tetapi juga memungkinkan pelanggan untuk belajar lebih banyak tentang masakan Indonesia, memastikan bahwa warisan yang kaya di balik setiap hidangan dihargai.

Sebaliknya, toko -toko mie lainnya mungkin tidak berinvestasi di jalan seperti itu, sehingga kehilangan kesempatan untuk memperdalam hubungan pelanggan dan memperluas penjangkauan kuliner mereka.

Komitmen terhadap Inovasi

Terakhir, komitmen Mie Gacoan terhadap inovasi membedakannya dari perusahaan mie tradisional. Menu berkembang, memperkenalkan hidangan musiman dan penawaran waktu terbatas yang terinspirasi oleh umpan balik pelanggan dan tren praktik gastronomi yang sedang tren. Dinamisme ini membuat klien mereka tertarik dan kembali untuk pengalaman baru, sementara toko mie khas sering tetap stagnan dengan penawaran klasik mereka.

Melalui bumbu kreatif, presentasi kontemporer, dan pasangan makanan dengan minuman lokal atau makanan penutup, Mie Gacoan terus mendefinisikan kembali apa artinya menikmati hidangan mie otentik di Indonesia.

Dengan berfokus pada kualitas, keberlanjutan, keterlibatan pelanggan, dan inovasi, Mie Gacoan menawarkan pengalaman bersantap yang komprehensif yang membedakan dirinya dari berbagai toko mie, membuka jalan bagi perjalanan kuliner yang lezat yang merayakan tradisi sambil merangkul masa depan.

Mie Gacoan Yogyakarta: Di mana Tradisi Bertemu Modernitas

Mie Gacoan Yogyakarta: Di mana Tradisi Bertemu Modernitas

Warisan Kuliner Yogyakarta

Yogyakarta, sering disebut sebagai jogja, adalah kota yang kaya akan warisan budaya dan kesenangan kuliner. Ini terkenal dengan masakan tradisional Jawa, yang berakar pada sejarah dan ditandai dengan rasa yang berani dan tekstur yang kaya. Salah satu penawaran yang menonjol dalam adegan makanan yang semarak ini adalah Mie Gacoan, rantai mie tercinta yang dengan cepat mendapatkan popularitas di antara penduduk setempat dan wisatawan. Dengan pandangan unik tentang hidangan tradisional dan estetika makan modern, Mie Gacoan benar -benar mewakili perpaduan tradisi dan modernitas.

Asal usul Mie Gacoan

Didirikan pada tahun 2016, Mie Gacoan didirikan oleh sekelompok pecinta makanan yang bersemangat yang ingin membawa perspektif baru ke masakan Indonesia, khususnya berfokus pada mie. Nama “Gacoan” berasal dari kata Jawa “Gaco,” yang berarti “menang.” Ini mencerminkan tujuan restoran untuk memenangkan pelanggan dengan citarasa lezat dan pengalaman bersantap yang unik. Sejak itu menjadi bagian penting dari lanskap kuliner Yogyakarta, di mana tradisi bertemu dengan makan kontemporer.

Menu: Perpaduan rasa

Di Mie Gacoan, menu adalah campuran yang semarak dari hidangan mie tradisional dan modern. Bintang persembahan tidak diragukan lagi adalah mie khas mereka, yang datang dalam berbagai gaya dan rasa. Disajikan dalam saus tebal dan disertai dengan pilihan topping, hidangan ini sesuai dengan tradisionalis dan penggemar makanan modern.

1. Mie Ayam (mie ayam)

Mie Ayam dari Mie Gacoan adalah wajib dicoba. Dibuat dengan mie telur buatan tangan, hidangan ini dipasangkan dengan ayam yang dibumbui, kaldu gurih, dan dihiasi dengan bawang merah goreng yang renyah. Pernikahan rasa menawarkan rasa yang menghibur namun menarik yang mewujudkan esensi masakan Jawa.

2. Mie Goreng (mie goreng)

Bagi para pecinta mie goreng, Mie Goreng menonjol. Hidangan ini disiapkan segar dan digoreng dengan berbagai sayuran dan pilihan protein Anda, baik itu ayam, daging sapi, atau tahu. Penambahan kecap Sauce menambah kedalaman yang menyenangkan, menjadikannya pilihan yang populer di antara mereka yang mencari makanan yang lezat.

3. Mie Pedas (Mie Pedas Indonesia)

Untuk penggemar rempah -rempah, pilihan MIE pedas tidak boleh dilewatkan. Hidangan ini menampilkan penggunaan berbagai sumber cabai lokal yang menawarkan panas dan kompleksitas yang semarak. Ini adalah langkah berani yang memberikan pengalaman mendebarkan bagi mereka yang cukup berani untuk menghadapi tantangan.

4. Pilihan vegetarian

Memahami permintaan yang meningkat akan makanan nabati, Mie Gacoan juga telah memperkenalkan serangkaian hidangan vegetarian. Dengan bahan -bahan yang bersumber dari pasar lokal, alternatif vegetarian bergizi dan memuaskan.

Pengalaman Makan: Suasana Modern dengan Sentuhan Tradisional

Salah satu atraksi utama Mie Gacoan adalah suasana kontemporer yang dilengkapi dengan elemen tradisional Jawa. Desain interior menampilkan estetika minimalis dengan palet warna yang hangat, furnitur kayu, dan seni dinding batik yang rumit, menggemakan warisan budaya Yogyakarta yang kaya. Suasana santai namun mengundang, sempurna untuk pecinta kuliner yang mencari pengalaman bersantap santai.

Konsep dapur terbuka memungkinkan pengunjung untuk menyaksikan koki menyiapkan makanan mereka, menambahkan rasa kegembiraan dan pertunangan pada pengalaman bersantap. Perpaduan dekorasi modern dan tradisional tidak hanya menarik bagi kepekaan estetika tetapi juga menciptakan rasa tempat, memperjelas bahwa Mie Gacoan bangga dengan akarnya sambil melihat ke masa depan.

Nilai uang

Keterjangkauan adalah salah satu fitur menonjol Mie Gacoan. Harga kompetitif, membuatnya dapat diakses oleh berbagai pelanggan, dari siswa hingga keluarga dan wisatawan. Setiap hidangan dengan murah hati, memberikan nilai uang yang sangat baik. Selain itu, rantai ini menawarkan berbagai promosi dan penawaran makan, memungkinkan pelanggan untuk menikmati banyak hidangan tanpa meregangkan anggaran mereka.

Kehadiran media sosial dan keterlibatan masyarakat

Mie Gacoan memanfaatkan kekuatan media sosial secara efektif. Dengan kehadiran yang menarik di platform seperti Instagram, restoran ini menampilkan hidangannya yang lezat melalui foto -foto menakjubkan yang menarik perhatian dan menarik pelanggan potensial. Strategi ini telah berhasil mengolah pengikut yang setia, menjadikannya tempat yang populer di antara demografi yang lebih muda.

Selain itu, restoran secara aktif berpartisipasi dalam acara komunitas, mendukung petani dan produsen setempat. Ini tidak hanya mempromosikan keberlanjutan tetapi juga memperkuat ikatan dalam masyarakat, lebih meningkatkan reputasinya.

Lokasi dan aksesibilitas

Sejak didirikan, Mie Gacoan telah berkembang pesat, dengan beberapa cabang di Yogyakarta dan daerah sekitarnya. Setiap lokasi ditempatkan secara strategis untuk memaksimalkan aksesibilitas, melayani penduduk setempat dan pengunjung. Cabang mempertahankan kualitas dan layanan yang konsisten, memastikan bahwa setiap pengalaman bersantap menjunjung tinggi standar yang dikenal oleh Mie Gacoan.

Ulasan dan umpan balik pelanggan

Kepuasan pelanggan sangat penting di Mie Gacoan, dan ini tercermin dalam ulasan positif yang sangat positif dari pengunjung. Pelanggan sering memuji restoran karena hidangannya yang beraroma, layanan yang efisien, dan suasana mengundang. Banyak yang menyoroti rasa otentik mie, yang menyatakan bahwa ia menangkap esensi tradisi kuliner Yogyakarta sambil juga menarik bagi selera modern.

Pengunjung sering berbagi pengalaman mereka di media sosial, mencatat presentasi hidangan yang semarak dan staf ramah yang berkontribusi pada pengalaman bersantap yang berkesan. Kombinasi makanan lezat dan layanan luar biasa telah menyebabkan Mie Gacoan menjadi tujuan untuk makan di Yogyakarta.

Pikiran terakhir

Mie Gacoan Yogyakarta merangkum semangat kota yang merangkul tradisinya sambil dengan penuh semangat beradaptasi dengan tren kuliner modern. Dengan menu yang menikmati rasa dan lingkungan makan yang beresonansi dengan pesona, itu berdiri sebagai bukti dari permadani kuliner yang kaya di Indonesia. Ketika terus berinovasi dan berkembang, Mie Gacoan siap untuk tetap menjadi tengara keunggulan gastronomi di Yogyakarta selama bertahun -tahun yang akan datang.

Mengapa Mie Gacoan Malang wajib dikunjungi bagi para pecinta kuliner

Mie Gacoan Malang adalah permata kuliner yang menonjol di adegan makanan yang semarak di Malang, Indonesia. Dengan penawaran unik, suasana yang menyenangkan, dan rasa menggoda, restoran ini tidak diragukan lagi harus dikunjungi untuk pecinta kuliner yang menjelajahi wilayah tersebut.

1. Warisan Kuliner Mie Gacoan

Mie Gacoan berspesialisasi dalam mie Indonesia, khususnya hidangan khasnya, yang memamerkan warisan kuliner yang kaya di wilayah tersebut. Nama “Gacoan” itu sendiri membangkitkan rasa tradisi, karena restoran menekankan resep otentik yang diturunkan dari generasi ke generasi. Penggemar makanan dapat mengharapkan perpaduan rasa klasik yang mewakili tidak hanya Malang tetapi kepulauan Indonesia yang lebih luas.

2. Penawaran Menu Beragam

Salah satu atraksi utama Mie Gacoan adalah menu yang beragam. Perusahaan ini membanggakan diri pada berbagai macam hidangan mie, dari gurih hingga pilihan pedas. Pengunjung dapat memilih dari klasik Mie Goreng (mie goreng), Mie Rebus (mie rebus), atau Mie Lada pedas (mie merica). Kombinasi kreatif topping, termasuk ayam, daging sapi, dan sayuran segar, memungkinkan para tamu untuk menyesuaikan makanan mereka sesuai dengan preferensi mereka. Selain itu, Mie Gacoan juga menawarkan hidangan nasi dan lauk seperti tahu renyah, ayam goreng, dan saus cabai, melayani semua selera.

3. Tantangan Pedas yang Unik

Bagi mereka yang mencari petualangan, Mie Gacoan menampilkan tantangan pedas yang unik yang menarik pecinta rempah -rempah dari seluruh penjuru. Pengunjung dapat menguji batas mereka dengan mencoba menyelesaikan salah satu mangkuk mie super pedas restoran. Kegembiraan menaklukkan tantangan ini telah menjadi fenomena media sosial, dengan banyak pecinta kuliner berbagi pengalaman mereka dan menggoda hidangan online. Aspek ini tidak hanya meningkatkan pengalaman bersantap tetapi juga mendorong persahabatan di antara pengunjung.

4. Bahan segar dan persiapan berkualitas tinggi

Mie Gacoan berkomitmen untuk hanya menggunakan bahan -bahan segar di piringnya. Setiap mangkuk disiapkan dengan hati -hati, memastikan bahwa rasa berbaur dengan sempurna. Koki memperhatikan detail, menggunakan mie berkualitas tinggi, sayuran segar, dan daging premium. Penekanan pada bahan -bahan berkualitas ini tidak hanya meningkatkan rasanya tetapi juga selaras dengan tren yang berkembang menuju makan sehat. Keterbukaan dapur memungkinkan pengunjung menyaksikan makanan mereka yang disiapkan, menambah kegembiraan pengalaman secara keseluruhan.

5. Suasana yang nyaman dan mengundang

Suasana di Mie Gacoan adalah aspek lain yang menjadikannya wajib dikunjungi. Restoran ini memiliki suasana yang nyaman dan mengundang, sempurna untuk pengunjung kasual dan penggemar makanan yang mencari makanan yang tak terlupakan. Dekorasi menggabungkan elemen tradisional Indonesia dengan sentuhan modern, menciptakan lingkungan yang hangat di mana para tamu dapat bersantai dan menikmati makanan mereka. Pengaturan tempat duduk yang terencana dengan baik memungkinkan untuk pengalaman bersantap yang intim dan pertemuan kelompok yang lebih besar.

6. Banding Media Sosial

Di era digital saat ini, Mie Gacoan telah berhasil memanfaatkan media sosial untuk menarik khalayak luas. Hidangan restoran yang menarik secara visual sangat cocok untuk berbagi di platform seperti Instagram dan Tiktok. Mangkuk mie yang dibuat dengan indah, topping yang semarak, dan presentasi unik berkontribusi pada kualitas fotogenik mereka. Banding media sosial ini tidak hanya membantu dalam membangun basis pelanggan yang setia tetapi juga menarik wisatawan yang ingin menangkap pengalaman Mie Gacoan mereka dan membaginya dengan pengikut mereka.

7. Lokasi dan Aksesibilitas

Terletak dengan nyaman di Malang, Mie Gacoan mudah diakses untuk penduduk setempat maupun wisatawan. Lokasi sentralnya membuatnya berhenti ideal bagi pecinta kuliner yang menjelajahi kota. Koordinat umumnya ramah pengguna, memungkinkan untuk navigasi bebas repot. Budaya dan atraksi yang kaya di kawasan ini hanya meningkatkan pengalaman bersantap, menjadikannya tempat yang sempurna untuk beristirahat dari tamasya dan menikmati masakan Indonesia yang lezat.

8. Layanan Pelanggan Luar Biasa

Staf di Mie Gacoan dikenal karena layanan pelanggan mereka yang luar biasa. Ramah dan penuh perhatian, mereka pergi keluar dari jalan mereka untuk memastikan bahwa para tamu makan merasa diterima dan nyaman. Anggota staf berpengetahuan tentang menu dan dengan senang hati memberikan rekomendasi berdasarkan preferensi pribadi, menambahkan sentuhan pribadi untuk setiap pengalaman bersantap.

9. Nilai Uang

Terlepas dari persembahan berkualitas tinggi, Mie Gacoan mempertahankan struktur harga yang wajar, memastikan bahwa setiap orang dapat menikmati kesenangan kuliner mereka tanpa merusak bank. Porsi yang murah hati sangat bagus untuk berbagi atau memuaskan nafsu makan yang kuat, menjadikannya nilai yang sangat baik bagi pecinta makanan yang mencari makanan berkualitas dengan harga terjangkau.

10. Keterlibatan dan Keberlanjutan masyarakat

Mie Gacoan juga berkomitmen untuk keterlibatan dan keberlanjutan masyarakat. Dengan sumber bahan secara lokal, mereka mendukung petani dan pemasok lokal, memperkuat ekonomi regional. Praktik ramah lingkungan restoran, seperti penggunaan plastik minimal dan pengelolaan limbah yang tepat, mencerminkan komitmen yang lebih luas untuk keberlanjutan, menarik pengunjung yang sadar lingkungan dan lebih meningkatkan daya tariknya.

11. Layanan Pemesanan dan Pengiriman Online

Untuk memenuhi meningkatnya permintaan akan kenyamanan, Mie Gacoan menawarkan layanan pemesanan dan pengiriman online. Ini memungkinkan pecinta kuliner untuk menikmati hidangan favorit mereka dari kenyamanan rumah mereka. Platform online yang ramah pengguna memastikan pengalaman pemesanan yang mulus, membuatnya lebih mudah dari sebelumnya untuk menikmati kreasi kuliner Mie Gacoan.

12. Promosi dan acara musiman

Mie Gacoan sering menjadi tuan rumah promosi dan acara musiman, menjadikannya tempat yang menyenangkan untuk dikunjungi secara teratur. Dari malam bertema hingga diskon khusus, acara ini membuat pengalaman bersantap tetap segar dan menarik. Penggemar makanan juga dapat berpartisipasi dalam kelas memasak atau lokakarya kuliner, mempelajari rahasia di balik hidangan tercinta restoran.

13. Tantangan dan Inisiatif untuk Perbaikan

Mie Gacoan terus mencari umpan balik dari pelanggannya, menunjukkan komitmen untuk peningkatan dan keunggulan. Survei dan saran reguler membantu manajemen berinovasi menu mereka dan meningkatkan pengalaman bersantap secara keseluruhan. Pendekatan proaktif ini memastikan bahwa Mie Gacoan secara konsisten memenuhi dan melampaui harapan pelanggan.

Beragam penawaran dan pengalaman unik ini berkontribusi pada reputasi Mie Gacoan sebagai tujuan kuliner di Malang. Kecinuman yang bepergian melalui daerah tersebut harus memprioritaskan kunjungan, memanjakan diri dalam rasa, suasana, dan semangat komunitas yang disediakan oleh pendirian yang luar biasa ini.

Rasa unik Mie Gacoan: A Taste of Innovation

Rasa unik Mie Gacoan: A Taste of Innovation

Memahami Mie Gacoan

Mie Gacoan, merek mie Indonesia yang terkenal, telah dengan terampil memadukan tradisi dengan inovasi modern, menjadikannya tujuan utama bagi penggemar mie. Lahir di adegan kuliner Indonesia yang semarak, Mie Gacoan berspesialisasi dalam berbagai hidangan yang menampilkan mie lezat yang dipasangkan dengan saus dan rasa unik. Komitmen restoran terhadap kualitas dan kreativitas telah mengumpulkan pengikut yang setia, sementara fokusnya pada bahan -bahan lokal membawa keaslian dalam penawarannya.

Inti dari inovasi rasa

Inti dari kesuksesan Mie Gacoan terletak beragam rasa yang membedakan mereka dari toko -toko mie yang khas. Apa yang membedakan Mie Gacoan adalah kemauannya untuk bereksperimen, mengintegrasikan kedua selera lokal Indonesia maupun pengaruh masakan internasional. Setiap hidangan dibuat dengan cermat untuk memastikan tidak hanya rasanya luar biasa tetapi juga secara visual menarik.

Saus tanda tangan

Mie Gacoan menawarkan pilihan saus khas yang mengesankan, dirancang untuk melengkapi pengalaman mie yang sempurna. Penawaran bintang mereka meliputi:

1. Saus Asli Pedas (Asli Sosis Peda)

Saus asli pedas mewujudkan keberanian rasa Indonesia. Itu terbuat dari cabai, bawang putih, dan berbagai rempah -rempah, menciptakan profil rasa yang hidup yang bertahan di langit -langit. Saus ini sangat cocok untuk mereka yang menghargai tendangan panas yang menggembirakan dipasangkan dengan nada gurih.

2. Saus Kedelai Bawang Putih (Sosis Kecap Bawang)

Saus ini menggabungkan nada harum bawang putih dengan rasa manis kecap. Hasilnya adalah pilihan yang lezat yang berpasangan indah dengan mie datar Mie Gacoan. Rasa aromatik akan menarik bagi mereka yang menghargai kesederhanaan dan kekayaan dalam hidangan mereka.

3. Saus Kacang Krim (Sosis Kacang)

Untuk pengalaman yang lebih dekaden, saus kacang krim adalah tambahan yang menyenangkan untuk menu Mie Gacoan. Saus ini adalah campuran harmonis kacang panggang, santan, dan cabai, memberikan tekstur krim yang melapisi mie dengan indah. Ini adalah pilihan luar biasa yang menampilkan pendekatan inovatif restoran terhadap citarasa klasik.

Varian mie yang unik

Mie Gacoan bangga dengan pilihan mie. Variasi memastikan bahwa ada sesuatu untuk semua orang, melayani selera yang beragam. Restoran ini memiliki mie tradisional Indonesia, seperti Mie Goreng dan Mie Ayam, di samping varian unik yang dipenuhi bahan -bahan lokal.

1. Mie Ayam (Mie Ayam)

Favorit klasik Indonesia, Mie Ayam di Mie Gacoan disiapkan dengan potongan ayam yang berair dan diasinkan dan disajikan dengan kaldu gurih. Mie dimasak dengan sempurna, memastikan setiap gigitan memuaskan dan mengharukan.

2. Mie Goreng Special

Mie Goreng adalah pokok di Indonesia, tetapi Mie Gacoan membuatnya luar biasa. Versi mereka fitur tidak hanya medley sayuran dan protein, tetapi juga serangkaian rempah-rempah yang mengangkat hidangan ke ketinggian baru, menghasilkan pengalaman makanan jalanan yang sulit dilupakan.

3. Bayam mie infus

Mendemonstrasikan komitmen mereka terhadap inovasi, Mie Gacoan memperkenalkan mie yang diresapi bayam. Opsi hijau yang semarak ini tidak hanya menarik secara visual tetapi juga bergizi. Dilemparkan dengan saus khas mereka, mie ini memberikan sentuhan yang sehat tanpa kompromi pada rasa.

Tantalisasi topping

Di luar mie dan saus, Mie Gacoan mengambil pengalaman lebih jauh dengan serangkaian topping yang lezat. Setiap topping dipilih dengan cermat untuk meningkatkan tekstur, rasa, dan nutrisi.

1. Tusuk sate ayam panggang (Sate Ayam)

Tusuk sate ayam panggang memberikan rasa berasap yang melengkapi mie. Diasinkan dalam campuran khas rempah -rempah, tusuk sate ini menambah aroma dan rasa yang unik, menampilkan dedikasi restoran untuk keunggulan kuliner.

2. Kubus tahu goreng

Untuk pilihan yang ramah vegetarian, kubus tahu goreng memberikan tekstur renyah dan menyerap rasa saus dengan indah. Mereka adalah pilihan yang sempurna bagi mereka yang mencari gigitan yang penuh protein tanpa daging.

3. Bawang merah renyah

Bawang rapi yang renyah ditambahkan sebagai hiasan, memberikan krisis yang memuaskan yang kontras dengan mie lembut. Bawang rawa ini menambah rasa dan sedikit rasa manis, menjadikan setiap suap pengalaman yang menyenangkan.

Mendeklarasikan lokasi dan aksesibilitas

Mie Gacoan berhasil memperpanjang jangkauannya di luar kota -kota besar di Indonesia. Dengan banyak cabang bermunculan di lokasi strategis, aksesibilitas telah menjadi ciri khas merek mereka. Setiap outlet mempertahankan kualitas tinggi yang sama dan perhatian yang cermat terhadap detail yang dikenal oleh Mie Gacoan, memastikan penggemar dapat menikmati rasa favorit mereka di mana pun mereka berada.

Penekanan pada bahan berkualitas

Kualitas sangat penting di Mie Gacoan. Sumber -sumber tim yang segar, bahan -bahan lokal, mendukung petani dan mencerminkan esensi budaya Indonesia dalam hidangan mereka. Setiap komponen, dari mie hingga saus, dibuat dengan hati -hati – memungkinkan pelanggan untuk menikmati rasa Indonesia otentik yang beresonansi dalam dengan tradisi lokal.

Pengalaman bersantap yang menarik

Mie Gacoan melampaui makanan untuk mengolah pengalaman bersantap yang menarik. Suasana restoran mereka dirancang untuk membangkitkan kehangatan dan rasa kebersamaan. Pengunjung dapat menikmati makanan mereka sambil berbagi cerita dengan teman atau keluarga, menjadikannya tempat berkumpul untuk penduduk setempat maupun pengunjung.

Kehadiran dan Pemesanan Online

Di era digital, Mie Gacoan telah beradaptasi dengan permintaan pelanggan dengan membangun kehadiran online yang ramah pengguna. Situs web ini menampilkan menu interaktif dengan deskripsi rinci tentang hidangan, yang memungkinkan pelanggan untuk dijelajahi sebelum mereka berkunjung. Opsi pemesanan online memenuhi preferensi yang berkembang untuk kenyamanan dan memudahkan siapa pun untuk menikmati citarasa unik mereka dari rumah.

Keterlibatan dan Umpan Balik Pelanggan

Merek ini secara aktif mencari umpan balik pelanggan untuk memperbaiki dan berinovasi penawaran mereka. Mie Gacoan mendorong pelanggan untuk berbagi pengalaman mereka, yang membantu mereka mengadaptasi item menu untuk memenuhi selera dan preferensi dengan lebih baik. Komitmen untuk keterlibatan pelanggan ini adalah aspek lain dari apa yang membuat Mie Gacoan pilihan yang dicintai di antara para penggemar mie.

Kesimpulan dari Perjalanan Rasa

Mie Gacoan mewakili perpaduan yang luar biasa dari tradisi dan inovasi dalam masakan Indonesia, menampilkan citarasa uniknya melalui saus otentik, penawaran mie yang bervariasi, dan bahan -bahan berkualitas. Pendirian ini lebih dari sekedar restoran; Ini adalah pengalaman yang mencerminkan warisan kuliner yang kaya dari Indonesia sambil merangkul pengaruh modern. Saat Anda memulai perjalanan kuliner dengan Mie Gacoan, Anda akan menemukan seni pembuatan mie yang dihidupkan melalui selera dan tekstur yang semarak.

Bangkitnya Mie Gacoan Bandung: Favorit Lokal

Bangkitnya Mie Gacoan Bandung: Favorit Lokal

Fenomena kuliner

Mie Gacoan telah muncul sebagai fenomena kuliner di Bandung, Indonesia, menangkap hati dan selera penduduk setempat dan wisatawan. Apa yang dimulai sebagai kios mie yang rendah hati telah berevolusi menjadi rantai yang ramai, menarik bagi penonton yang terus berkembang. Pesona Mie Gacoan tidak hanya terletak pada citarasa tetapi juga dalam komitmennya terhadap keaslian dan kualitas.

Proposisi penjualan yang unik

Mie Gacoan membedakan dirinya melalui persembahan khasnya: berbagai hidangan mie, masing -masing disajikan dengan campuran rempah -rempah dan topping yang merayakan tradisi kuliner Indonesia. Komponen penting dari menu mereka – mie gaib, sisi tradisional, dan saus khas – dibuat dari bahan -bahan segar, memastikan pengalaman yang menggiurkan.

Selain itu, opsi bagi pengunjung untuk menyesuaikan tingkat panas mereka ketika memesan mie telah berkontribusi pada daya tarik merek. Dari ringan hingga sangat pedas, Mie Gacoan mengundang pelanggan untuk terlibat dengan makanan mereka, menciptakan pengalaman bersantap yang dipersonalisasi.

Pemilihan mie

Menu Mie Gacoan secara jelas menampilkan beberapa jenis mie, dengan item khas Mie Goreng dan Mie Kuah. Warna-warna yang menarik dan tekstur mie yang kaya, dikombinasikan dengan berbagai topping, membuat setiap hidangan menarik secara visual. Pilihan umum termasuk ayam, daging sapi, atau campuran sayuran yang menyenangkan, yang memungkinkan kombinasi rasa yang memuaskan.

Di luar mie tradisional, Mie Gacoan juga memperkenalkan variasi unik, seperti Mie Ayam, yang ditutup dengan potongan ayam yang lezat dan kaldu aromatik. Yang sangat populer adalah Mie Gacoan Spicy, hidangan yang menampilkan kegemaran merek untuk panas, menjadikannya sensasi bagi penggemar rempah -rempah.

Membina komunitas dan budaya

Mie Gacoan tidak hanya berfungsi sebagai tujuan makan tetapi juga sebagai pusat budaya di Bandung. Ini mewujudkan semangat makan bersama, tempat keluarga dan teman berkumpul untuk berbagi makanan. Suasana kasual dan bersemangat Mie Gacoan mendorong percakapan yang hidup, memadukan esensi keramahtamahan tradisional Indonesia dengan pengalaman bersantap modern.

Selain itu, Mie Gacoan sering menjadi tuan rumah acara dan promosi yang beresonansi dengan jalinan budaya Bandung. Dengan terlibat dalam inisiatif komunitas, Mie Gacoan telah memposisikan dirinya sebagai merek yang bertanggung jawab dan inklusif, semakin menarik bagi pelanggan lokal.

Menargetkan yang muda dan trendi

Pemasaran strategis Mie Gacoan telah menangkap minat demografis yang lebih muda, termasuk mahasiswa dan profesional muda. Dengan kehadiran yang kuat di platform media sosial, Mie Gacoan menggunakan posting yang mencolok secara visual dan konten interaktif untuk terhubung dengan audiensnya. Konten yang dibuat pengguna, seperti ulasan makanan dan foto-foto layak Instagram, membantu mempertahankan relevansi merek di antara pengunjung milenial dan Gen Z.

Selain itu, pemasaran influencer memainkan peran penting dalam memperluas jangkauan Mie Gacoan. Berkolaborasi dengan blogger makanan populer dan influencer lokal, merek ini berhasil menyebarkan kesadaran dari mulut ke mulut, memikat lebih banyak pelanggan untuk mengantri untuk merasakan mie mereka yang terkenal.

Suasana dan desain toko

Desain outlet Mie Gacoan juga disengaja. Terinspirasi oleh estetika industri yang dicampur dengan elemen budaya lokal, ruang makan mengundang dan trendi, menjadikannya latar belakang yang sempurna bagi pecinta kuliner untuk berbagi pengalaman mereka secara online. Tempat duduk yang nyaman, dekorasi yang semarak, dan layanan yang efisien berkontribusi pada suasana bersantap yang menyenangkan, mendorong pelanggan untuk bertahan lebih lama dan menikmati makanan mereka.

Inisiatif keberlanjutan

Menyadari pentingnya keberlanjutan, Mie Gacoan menggunakan praktik ramah lingkungan dalam operasinya. Restoran ini sumber bahan -bahan dari petani lokal, meminimalkan jejak karbonnya sambil mendukung ekonomi lokal. Selain itu, upaya dilakukan untuk mengurangi penggunaan plastik dengan menyediakan wadah biodegradable dan mendorong bahan yang dapat didaur ulang dalam kemasannya.

Strategi ekspansi

Setelah menetapkan kehadiran yang solid di Bandung, Mie Gacoan telah memulai strategi ekspansi yang ambisius. Dengan rencana untuk membuka cabang tambahan di kota -kota terdekat dan di seluruh Java, merek ini bertujuan untuk meniru keberhasilannya. Perluasan ini diteliti dengan cermat untuk memastikan setiap lokasi baru beresonansi dengan selera dan preferensi lokal, menjaga keaslian yang mendefinisikan Mie Gacoan.

Pengalaman pelanggan

Pengalaman pelanggan di Mie Gacoan disusun menjadi mulus dan menyenangkan. Dari saat pengunjung melangkah, mereka disambut dengan staf ramah yang siap berbagi rekomendasi. Layanan cepat memastikan bahwa bahkan selama jam sibuk, pelanggan tidak perlu menunggu lama, menjadikannya pilihan yang menarik bagi mereka yang mencari makanan yang cepat namun memuaskan.

Merek secara aktif mencari umpan balik untuk meningkatkan penawarannya, memungkinkan pelanggan merasa dihargai dan didengar. Opsi pemesanan dan pengiriman online lebih lanjut meningkatkan kenyamanan, terutama selama waktu saat makan di luar mungkin tidak layak.

Inovasi di masa depan

Untuk tetap berada di depan tren kuliner, Mie Gacoan terus berinovasi menu. Spesial musiman sering memamerkan bahan -bahan lokal atau resep tradisional yang ditata ulang untuk palet modern. Komitmen untuk inovasi ini memastikan bahwa sementara menu inti tetap dicintai, selalu ada hidangan baru untuk dijelajahi.

Selain itu, Mie Gacoan sedang mengeksplorasi kemitraan untuk hidangan crossover yang memadukan berbagai masakan sambil tetap menghormati akar Indonesia. Ketika mereka berevolusi, merek tetap fokus pada apa yang membuatnya unik, memastikan bahwa setiap hidangan menceritakan sebuah kisah.

Kesimpulan

Mie Gacoan Bandung telah melampaui statusnya hanya sebagai toko mie lainnya. Ini mewujudkan budaya makanan yang semarak dari Bandung, menjadi identik dengan hidangan beraroma dan semangat komunitas. Bangkitnya Mie Gacoan adalah bukti kemampuannya untuk beradaptasi, berinovasi, dan beresonansi dengan dinamika lanskap kuliner yang terus berubah di Indonesia. Bagi siapa pun yang mengunjungi Bandung, perjalanan ke Mie Gacoan bukan hanya makanan; Ini adalah bagian penting dari pemahaman dan mengalami budaya lokal.

Bangkitnya Mie Gacoan: cerminan adegan makanan Jakarta

Bangkitnya Mie Gacoan: cerminan adegan makanan Jakarta

Lanskap kuliner Jakarta

Jakarta, ibukota yang ramai di Indonesia, menampilkan pemandangan makanan yang hidup yang mencerminkan warisan budaya kota yang kaya dan demografi yang beragam. Kota ini, dengan perpaduan yang dinamis antara tradisi dan modernitas, berfungsi sebagai pot peleburan untuk berbagai pengaruh kuliner. Di antara berbagai rasa dan tekstur, Mie Gacoan telah muncul sebagai pemain yang signifikan, mendapatkan popularitas besar di kalangan penduduk setempat dan wisatawan. Pertumbuhan ini tidak hanya menandakan perubahan dalam budaya makanan Jakarta tetapi juga menekankan meningkatnya permintaan untuk pengalaman bersantap yang otentik dan nyaman.

Mie Gacoan: Tinjauan cepat

Didirikan pada tahun 2017, Mie Gacoan berfokus pada memberikan mangkuk mie yang lezat dan terjangkau, terutama melayani kerumunan yang lebih muda. Restoran ini terkenal dengan penawaran uniknya, termasuk berbagai hidangan mie beraroma, dipasangkan dengan berbagai saus pedas yang melayani langit -langit Indonesia. Dengan menu yang sederhana namun menarik, Mie Gacoan telah berubah dari satu outlet menjadi rantai yang berkembang yang menangkap esensi makanan jalanan di Jakarta.

Penawaran Menu Inovatif

Inti dari kesuksesan Mie Gacoan adalah menu inovatif yang berbicara tentang preferensi selera pemuda Jakarta. Restoran ini berspesialisasi dalam mie goreng, yang dikenal secara lokal sebagai ‘Mi Goreng,’ yang digoreng dengan sempurna dengan campuran bahan-bahan gurih. Item yang menonjol pada menu adalah tanda tangan Mie Gacoan, hidangan yang terdiri dari mie kenyal yang dilemparkan ke dalam campuran rempah -rempah rahasia, disajikan dengan pilihan protein seperti ayam, daging sapi, atau udang.

Selain itu, Mie Gacoan secara mencolok menampilkan berbagai saus pedas, sesuai dengan berbagai tingkat panas. Saus cabai khas mereka, ‘Sambal’, telah menarik perhatian pecinta rempah -rempah, memungkinkan pelanggan untuk menyesuaikan makanan mereka sesuai dengan preferensi selera mereka. Kebebasan untuk menyesuaikan tingkat kepedasan menambah elemen interaktif pada pengalaman bersantap, menarik bagi pemakan petualang yang ingin menguji batas mereka.

Masterclass pemasaran

Kenaikan Mie Gacoan juga dapat dikaitkan dengan strategi pemasarannya yang cerdas, sangat menekankan keterlibatan media sosial. Memanfaatkan platform seperti Instagram, Facebook, dan Tiktok, Mie Gacoan secara efektif mencapai target demografisnya – millennial dan Gen Z – yang mendambakan konten yang dapat dibagikan. Restoran ini menampilkan gambar -gambar yang menyenangkan secara estetika dari hidangannya, mendorong pelanggan untuk memposting tentang pengalaman bersantap mereka, menciptakan buzz visual yang memperkuat pengakuan merek.

Pendekatan pemasaran yang berfokus pada media sosial ini telah membantu Mie Gacoan menjadi bukan hanya restoran tetapi bagian dari budaya makanan lokal. Buzz yang sering dihasilkan dari tiang viral dapat menyebabkan antrean panjang di luar pendirian, karena pelanggan dengan penuh semangat menunggu kesempatan mereka untuk menikmati hidangan mie populer. Menciptakan rasa eksklusivitas melalui penawaran waktu terbatas dan acara khusus juga menarik penggemar makanan yang ingin tetap berada di loop.

Pengalaman bersantap

Suasana Mie Gacoan mencerminkan preferensi makan santai Jakarta, menggabungkan suasana yang nyaman dengan desain kontemporer yang beresonansi dengan pengunjung yang lebih muda. Efisiensi layanan selaras dengan gaya hidup yang serba cepat dari penghuni kota Jakarta yang sering mencari makanan yang nyaman namun memuaskan. Ditambah dengan titik harga yang terjangkau, Mie Gacoan telah memposisikan dirinya sebagai pilihan yang menarik bagi siswa dan profesional muda yang mencari kualitas dan nilai.

Gaya makan bersama mendorong interaksi sosial, menjadikannya tempat yang ideal bagi teman -teman untuk berkumpul dan menikmati makanan bersama. Pengaturan ini tidak hanya meningkatkan pengalaman bersantap tetapi juga mendorong berbagi hidangan, lebih lanjut menekankan aspek komunal budaya Indonesia yang berpusat di sekitar makanan.

Ekspansi dan dampak

Ketika Mie Gacoan memperluas jejaknya di Jakarta, ia telah berkontribusi pada lanskap kuliner kota dengan menginspirasi perusahaan mie-sentris yang serupa. Keberhasilan Mie Gacoan telah membuka jalan bagi pemain baru untuk memasuki pasar, didorong oleh keinginan untuk menangkap sepotong adegan makanan yang berkembang. Kompetisi kuliner ini pada akhirnya telah memperkaya penawaran makanan Jakarta, menawarkan lebih banyak pilihan bagi konsumen dan mempromosikan inovasi dalam industri ini.

Selain itu, kebangkitan Mie Gacoan selaras dengan tren global perusahaan makan santai yang berfokus pada keaslian dan aksesibilitas. Dengan menawarkan makanan yang terjangkau namun lezat, Mie Gacoan menarik bagi khalayak luas yang mencari kualitas dan kenyamanan – penyewa utama dari budaya makanan yang berkembang pesat saat ini.

Signifikansi budaya

Di luar kesuksesan komersialnya, Mie Gacoan menggambarkan hubungan yang berkembang antara makanan dan identitas di Jakarta. Ketika generasi muda mulai mengeksplorasi preferensi kuliner mereka, merangkul berbagai rasa dan masakan, Mie Gacoan mencontohkan perpaduan makan tradisional Indonesia dengan konsep -konsep modern. Fokusnya pada bahan -bahan lokal, dikombinasikan dengan metode memasak kontemporer, menggarisbawahi pentingnya melestarikan warisan budaya sambil secara bersamaan berinovasi untuk memenuhi selera modern.

Restoran ini juga membahas tren yang meningkat dari makan yang sadar kesehatan, menampilkan pilihan yang memenuhi berbagai preferensi makanan. Pertimbangan ini mencerminkan kesadaran yang tumbuh di kalangan pemuda Jakarta tentang nutrisi dan kesejahteraan sambil mempromosikan pendekatan kebun-segar terhadap hidangan mie tradisional.

Upaya keberlanjutan

Di dunia yang semakin sadar lingkungan, Mie Gacoan juga mulai memasukkan praktik berkelanjutan ke dalam operasinya. Ini termasuk sumber bahan secara lokal, mengurangi limbah melalui praktik dapur yang efisien, dan mempertimbangkan kemasan ramah lingkungan untuk pesanan takeout. Dengan merangkul keberlanjutan, Mie Gacoan tidak hanya memastikan makanan berkualitas tinggi tetapi juga membantu menumbuhkan semangat tanggung jawab mengenai dampak lingkungan dalam ekosistem pangan Jakarta.

Keterlibatan masyarakat

Mie Gacoan juga berfokus pada menanamkan dirinya di dalam komunitas dengan berpartisipasi dalam acara lokal dan kolaborasi dengan berbagai organisasi. Keterlibatan ini mendorong niat baik dan memperkuat identitas mereknya sebagai bisnis yang bertanggung jawab secara sosial. Komitmen pendirian terhadap keterlibatan masyarakat menyoroti semangat kebersamaan dari budaya Indonesia, semakin memperkuat peran Mie Gacoan sebagai restoran lokal yang dicintai.

Kesimpulan dari perjalanan unik Mie Gacoan

Dari awal yang sederhana hingga menjadi pemain dominan dalam adegan makanan Jakarta, мie Gacoan mewujudkan revolusi kuliner yang mencerminkan tradisi dan modernitas. Ketika terus tumbuh, dampak restoran pada lanskap makan lokal pasti akan menginspirasi evolusi lebih lanjut dalam adegan makanan Jakarta yang selalu berubah. Dengan penawaran unik, pemasaran yang cerdas, dan komitmen terhadap masyarakat, мie Gacoan bukan hanya tempat makan; Ini adalah fenomena yang menangkap semangat perjalanan gastronomi Jakarta.

Menjelajahi citarasa unik Mie Gacoan Palopo

Asal usul Mie Gacoan

Mie Gacoan adalah nama yang identik dengan hidangan mie lezat dan beraroma yang berasal dari tradisi kuliner Indonesia. Berasal dari Palopo, Sulawesi Selatan, hidangan ini telah menangkap hati dan selera penduduk setempat dan pengunjung. Akar Mie Gacoan dapat ditelusuri kembali ke praktik pertanian yang kaya dan beragam bahan yang tersedia di wilayah tersebut. Semangat masyarakat setempat untuk persiapan dan eksperimen makanan telah sangat penting dalam membuat citarasa unik yang dirayakan Mie Gacoan untuk hari ini.

Bahan otentik

Di jantung Mie Gacoan adalah penggunaan bahan-bahan segar dan berkualitas tinggi. Komponen utama termasuk mie kuning yang terbuat dari tepung gandum, yang dikenal dengan tekstur kenyal mereka. Melengkapi mie adalah berbagai topping yang meningkatkan kompleksitas hidangan. Topping umum termasuk irisan empuk ayam, daging sapi, atau makanan laut, bersama dengan berbagai sayuran seperti bok choy, wortel, dan tauge.

Saus adalah tempat Mie Gacoan benar -benar menonjol. Kombinasi pasta cabai, kecap manis, bawang putih, dan rempah -rempah lainnya menciptakan campuran harmonis yang menggoda selera. Penggunaan ramuan segar, seperti ketumbar dan bawang hijau, semakin mengangkat hidangan, berkontribusi pada daya tarik aromatiknya.

Profil rasa yang unik

Mie Gacoan dibedakan oleh profil rasanya yang berani dan kompleks. Interaksi elemen yang manis, pedas, dan gurih menciptakan keseimbangan yang harmonis yang mendefinisikan hidangan tercinta ini. Manis dari kecap asin dilawan oleh panas dari cabai, memberikan pengalaman bersantap yang menggembirakan bagi mereka yang menikmati tendangan dalam masakan mereka.

Variasi protein menambahkan berbagai nada gurih; Misalnya, ayam memberikan rasa yang lebih ringan, sementara daging sapi memberikan rasa yang lebih berani. Variasi makanan laut sering kali termasuk udang atau cumi -cumi, membawa sedikit rasa asin yang secara sempurna melengkapi rasa secara keseluruhan. Setiap bahan dipilih dengan cermat untuk memastikan bahwa tekstur dan rasa sejajar, menciptakan pengalaman bersantap yang menyenangkan dan memuaskan.

Teknik memasak

Persiapan Mie Gacoan adalah proses yang sangat teliti yang mencerminkan keterampilan kuliner koki di belakangnya. Pertama, mie direbus dengan konsistensi yang sempurna, memastikan mereka tetap elastis tanpa menjadi lembek. Setelah pengeringan, mereka sering digoreng dengan saus, memungkinkan mie untuk menyerap rasa yang kaya.

Setiap topping biasanya dimasak secara terpisah untuk mempertahankan rasa dan teksturnya yang unik. Protein sering dipanggang atau ditumis untuk mencapai karamelisasi yang memuaskan, meningkatkan rasa dan presentasi. Terakhir, sayuran ditambahkan menjelang akhir proses memasak, memastikan bahwa mereka mempertahankan kerenyahan dan semangat mereka, menawarkan kontras yang menyegarkan dengan kekayaan mie.

Variasi regional

Sementara Mie Gacoan adalah lambang Palopo, berbagai daerah di Indonesia menempatkan putaran unik mereka pada kesenangan kuliner ini. Misalnya, di Jakarta, Anda dapat menemukan variasi yang menggabungkan rempah -rempah yang lebih luas dan bahan -bahan regional. Varian Bali sering termasuk saus santan, menanamkan piring dengan tekstur krim dan profil rasa tropis.

Adaptasi regional ini menyoroti bagaimana Mie Gacoan serbaguna, memungkinkannya beresonansi dengan lanskap kuliner Indonesia yang beragam. Interpretasi koki lokal sering mengarah pada variasi baru yang menarik yang menggabungkan rasa tradisional dengan teknik inovatif.

Pengalaman bersantap

Makan di Mie Gacoan bukan hanya tentang makanan; ini tentang pengalaman. Banyak restoran lokal di Palopo memberikan suasana yang semarak yang ditandai dengan layanan yang ramah dan rasa kebersamaan. Keluarga dan teman -teman berkumpul di atas mangkuk mie yang mengepul, tidak hanya berbagi makanan tetapi juga cerita dan tawa.

Pedagang kaki jalan juga merupakan pemandangan umum, di mana Anda dapat menikmati Mie Gacoan dengan harga yang sangat murah dan mengalami kehidupan yang ramai di Palopo secara langsung. Makan di luar ruangan memungkinkan Anda untuk menghargai iklim yang hangat sambil menikmati aroma yang menggiurkan dari kios -kios terdekat.

Variasi pasangan

Mie Gacoan dapat dipasangkan menyenangkan dengan berbagai minuman yang meningkatkan pengalaman kuliner. Minuman tradisional Indonesia seperti es teh manis (teh es manis) atau es jeruk yang menyegarkan (jus jeruk) melengkapi rempah -rempah hidangan dengan sempurna. Bagi mereka yang mencari sesuatu yang unik, segelas air kelapa segar atau bir lokal dapat menciptakan keseimbangan yang ideal antara rasa, menawarkan hidrasi dan bantuan yang menyegarkan dari tendangan pedas.

Manfaat kesehatan

Di luar rasanya yang lezat, Mie Gacoan menawarkan beberapa manfaat gizi. Dimasukkannya sayuran segar berkontribusi vitamin dan mineral penting, sementara protein memasok nutrisi berharga untuk diet seimbang. Hidangan ini dapat disesuaikan untuk mengakomodasi preferensi makanan, memungkinkan untuk versi vegetarian atau vegan dengan meningkatkan jumlah sayuran dan mengganti daging dengan tahu atau tempe.

Sifat energik dari mie memberikan karbohidrat yang cukup, membuat Mie Gacoan tidak hanya makanan yang memuaskan tetapi juga sumber energi yang ideal bagi gaya hidup aktif terkemuka.

Signifikansi budaya

Mie Gacoan lebih dari sekadar hidangan populer; Ini mewujudkan budaya yang kaya dan warisan kuliner Indonesia. Ini berfungsi sebagai penanda budaya yang menyatukan orang, sering dinikmati selama pertemuan, perayaan, atau makanan keluarga kasual. Ini mewakili aspek komunal dari makan di masyarakat Indonesia, di mana makanan sering dibagikan dan dinikmati secara kolektif.

Selain itu, Mie Gacoan telah mendapatkan perhatian internasional, menjadi simbol budaya makanan jalanan Indonesia. Karena semakin banyak orang menemukan kompleksitas dan rasa dari hidangan ini, ia menjembatani kesenjangan budaya dan mendorong apresiasi yang lebih besar untuk masakan Indonesia.

Popularitas dan aksesibilitas

Munculnya tren makanan dan media sosial telah meningkatkan popularitas Mie Gacoan dalam skala global. Banyak restoran di luar Indonesia sudah mulai memasukkan Mie Gacoan dalam menu mereka, memperkenalkannya kepada khalayak yang lebih luas. Aksesibilitas bahan -bahan telah memungkinkan koki di seluruh dunia untuk menciptakan kembali hidangan ini, kadang -kadang menambahkan sentuhan mereka untuk memenuhi preferensi lokal.

Blog makanan, vlog, dan kompetisi kuliner yang menampilkan Mie Gacoan sebagai highlight showcase bagaimana hidangan ini dapat melampaui batas sambil tetap setia pada akar otentiknya.

Kesimpulan eksplorasi

Rasa unik Mie Gacoan tidak hanya menyenangkan langit -langit tetapi juga menceritakan kisah tentang sejarah budaya dan kuliner Indonesia, khususnya Palopo. Melalui bahan -bahan otentiknya, profil rasa yang kuat, dan pengalaman komunal makan, Mie Gacoan telah mengukir tempat di adegan makan lokal dan internasional yang tetap tidak ada. Hidangan ini mencontohkan esensi makanan Indonesia: kaya akan rasa, keragaman, dan tradisi.

Mie Gacoan Pangkalan Bun: Perjalanan Kuliner

Mie Gacoan Pangkalan Bun: Perjalanan Kuliner

Warisan Mie Gacoan

Mie Gacoan, nama yang identik dengan hidangan mie Indonesia yang menyenangkan, telah memikat selera di seluruh negara. Berasal dari Yogyakarta, merek telah melebarkan sayapnya, mencapai kota -kota seperti Pangkalan Bun, di mana ia dengan cepat menjadi favorit kuliner. Perjalanan Mie Gacoan berakar pada tradisi, dengan resep yang memberi penghormatan kepada rasa lokal sambil menggabungkan serangkaian tikungan modern.

Hidangan Tanda Tangan: Mie Gacoan

Di jantung persembahan Mie Gacoan adalah hidangan khasnya: “Mie Goreng Gacoan”. Hidangan mie tumis ini dibuat dengan mie telur segar, dilemparkan dengan medley rempah-rempah, sayuran, dan daging. Profil rasa adalah keseimbangan sempurna antara manis, pedas, dan asin, menarik bagi siapa pun yang menginginkan pengalaman kuliner Indonesia yang otentik.

  1. Tipe mie: Mie Gacoan menggunakan berbagai jenis mie, termasuk mie telur tradisional dan mie beras, memastikan bahwa setiap hidangan melayani selera yang beragam.
  2. Bahan segar: Setiap bahan dengan cermat bersumber dari pasar lokal, menekankan kesegaran. Sayuran, daging, dan rempah -rempah sering dipilih sendiri, berkontribusi pada rasa khas yang mendefinisikan Mie Gacoan.

Palet rasa

Palet rasa Mie Gacoan sangat beragam. Rahasianya terletak pada kombinasi rempah-rempah yang cermat yang menciptakan pengalaman yang menggiurkan.

  • Saus sambal: Saus cabai buatan sendiri adalah elemen yang menonjol. Pengunjung dapat menyesuaikan tingkat panas, yang berkisar dari sedikit rempah -rempah hingga semburan berapi -api yang menggoda langit -langit mulut.
  • Saus kedelai manis: Menambahkan kedalaman pada hidangan, kecap manis memberikan rasa karamel yang sangat kontras dengan kepedasan saus cabai.

Penawaran Menu

Di luar Mie Goreng Gacoan yang terkenal, roti Mie Gacoan Pangkalan menawarkan sejumlah besar pilihan mie dan lauk lain untuk memuaskan setiap keinginan.

  1. Mie Kuah Gacoan: Ini adalah hidangan mie berbasis sup yang dengan sempurna melengkapi Mie Goreng kering. Kaldu yang kaya diresapi dengan rasa ayam atau daging sapi, dipasangkan dengan sayuran, memberikan kehangatan dan kenyamanan, terutama pada hari -hari yang lebih dingin.

  2. Bakso: Bakso Indonesia tercinta, disajikan dalam semangkuk kaldu gurih di samping mie. Rasa Umami yang kaya dari Bakso menjadikannya pasangan yang ideal dengan hidangan mie apa pun.

  3. TAHU TEMPE: Vegetarian dan vegan yang memuaskan, staples Indonesia ini digoreng dengan kesempurnaan keemasan, memberikan tekstur renyah yang dengan indah kontras dengan kelembutan mie.

  4. Sisi dan saus: Pengunjung dapat memilih dari berbagai sisi seperti tahu goreng, tusuk sate ayam panggang, dan serangkaian saus celup yang meningkatkan setiap gigitan, memastikan pengalaman makan yang serbaguna.

Suasana yang nyaman

Suasana di Mie Gacoan Pangkalan Bun meningkatkan pengalaman bersantap. Desain interior ini menampilkan perpaduan yang semarak dari dekorasi tradisional Indonesia dan sentuhan modern, menciptakan ruang yang ramah.

  1. Opsi tempat duduk: Dari sudut -sudut yang nyaman hingga meja komunal, tata letak mendorong baik makan intim dan pengalaman bersama, menjadikannya ideal untuk pertemuan keluarga dan acara sosial.

  2. Konsep Dapur Terbuka: Dapur terbuka memungkinkan pelanggan untuk menyaksikan sihir kuliner saat koki menyiapkan hidangan mereka. Transparansi ini mendorong kepercayaan pada kualitas bahan dan metode persiapan.

Layanan yang ramah

Staf di Mie Gacoan Pangkalan Bun dilatih untuk memberikan layanan luar biasa. Mereka tidak hanya memiliki pengetahuan tentang menu tetapi juga ingin merekomendasikan hidangan berdasarkan preferensi pelanggan.

  • Sentuhan pribadi: Setiap tamu diperlakukan dengan sentuhan pribadi, apakah itu senyum sederhana atau pertanyaan tulus tentang preferensi makan mereka, menciptakan suasana kehangatan dan keramahtamahan.

Keterlibatan masyarakat

Mie Gacoan Pangkalan Bun lebih dari sekadar restoran; itu secara aktif terlibat dengan komunitas lokal.

  1. Lokakarya kuliner: Mie Gacoan sering menjadi tuan rumah lokakarya di mana penduduk setempat dapat belajar memasak hidangan khas, menumbuhkan hubungan yang lebih dalam dengan seni kuliner.

  2. Inisiatif keberlanjutan: Advokat restoran untuk keberlanjutan melalui praktik pengurangan limbah dan sumber bahan dari petani lokal, sehingga mendukung ekonomi regional.

  3. Acara Amal: Mereka mengatur acara untuk mengumpulkan dana untuk amal setempat, menunjukkan komitmen mereka untuk memberikan kembali kepada masyarakat.

Ideal untuk semua kesempatan

Bun Mie Gacoan Pangkalan melayani berbagai acara makan, apakah Anda sedang mencari gigitan cepat, makanan keluarga yang santai, atau perayaan dengan teman -teman.

  1. Opsi takeout: Bagi mereka yang sedang bepergian, takeout tersedia, memungkinkan pelanggan untuk menikmati mie lezat di mana pun mereka berada.

  2. Bersantap Grup: Dengan tempat duduk yang cukup dan menu yang beragam, Mie Gacoan sangat cocok untuk bersantap kelompok. Paket atau piring khusus dapat diatur untuk pesta yang lebih besar, memastikan semua orang puas.

Signifikansi budaya

Mie Gacoan berfungsi sebagai jembatan antara masakan tradisional Indonesia dan pengalaman bersantap kontemporer. Ketika lanskap kuliner global terus berkembang, Mie Gacoan tetap berdedikasi untuk melestarikan warisan mie Indonesia yang kaya sambil memperkenalkan variasi hidangan inovatif yang menarik bagi selera modern.

Kesimpulan

Rasakan rasa otentik, kekayaan budaya, dan suasana hangat di roti Mie Gacoan Pangkalan. Rangkullah perjalanan kuliner yang menunggu, dan menikmati pengalaman bersantap yang menjanjikan agar tak terlupakan. Rasanya yang kaya, budaya yang semarak, dan semangat komunitas yang dikemas di Mie Gacoan benar -benar menciptakan tidak hanya makanan, tetapi juga pesta untuk indra.