{"version":3,"file":"5588.0e281cf29b101b30e623.js","mappings":"mWACO,MAAMA,EAAwB,SACxBC,EAAmB,EACnBC,EAAkB,ECHxB,SAASC,IACZ,MAAMC,EAAU,CAAC,EACXC,EAAgBC,aAAaC,QAAQ,mBAC3C,GAAIF,EAAe,CACf,MAAMG,EAAgBC,KAAKC,MAAML,GACQ,iBAA9BG,EAAcG,cACrBP,EAAQO,YAAcH,EAAcG,aAEU,iBAAvCH,EAAcI,uBACrBR,EAAQQ,qBAAuBJ,EAAcI,sBAEV,iBAA5BJ,EAAcK,YACrBT,EAAQS,UAAYL,EAAcK,WAEG,iBAA9BL,EAAcM,aACyB,iBAAnCN,EAAcM,YAAYC,MACO,iBAAjCP,EAAcM,YAAYE,KACjCZ,EAAQU,YAAc,CAClBC,KAAMP,EAAcM,YAAYC,KAChCC,GAAIR,EAAcM,YAAYE,KAIJ,kBAA3BR,EAAcS,WACrBb,EAAQa,SAAWT,EAAcS,UAEE,kBAA5BT,EAAcU,YACrBd,EAAQc,UAAYV,EAAcU,WAEE,iBAA7BV,EAAcW,aACrBf,EAAQe,WAAaX,EAAcW,YAEa,kBAAzCX,EAAcY,yBACrBhB,EAAQgB,uBAAyBZ,EAAcY,uBAEvD,CACA,OAAOhB,CACX,CACO,SAASiB,EAAiBjB,GAC7BE,aAAagB,QAAQ,kBAAmBb,KAAKc,UAAUnB,GAC3D,CACO,SAASoB,IACZlB,aAAamB,WAAW,kBAC5B,CACO,SAASC,EAAuBC,GACnC,IAAIC,EAAiBtB,aAAaC,QAAQ,mBAC1CsB,iBAAiB,WAAYC,IACzB,GAAI,oBAAsBA,EAAMC,IAC5B,OAEJ,MAAMC,EAAU1B,aAAaC,QAAQ,mBACjCyB,IAAYJ,IACZA,EAAiBI,EACjBL,EAAGxB,KACP,GAER,CCtDO,MAAM8B,EAAa,CACtBC,OAAQ,CACJC,IAAK,4DACLC,MAAO,UAEXC,SAAU,CACNF,IAAK,+EACLC,MAAO,aAGFE,EAEQ,oBAAdC,WAEHA,UAAUC,SAASC,cAAcC,QAAQ,QAAU,EAK1CC,EAAkB,CAC3BC,IALoBN,EAAQ,WAAa,MAMzCO,KAJqBP,EAAQ,SAAW,OAKxCQ,KAJqBR,EAAQ,YAAc,UAK3CS,MAPsBT,EAAQ,UAAY,SAqBvC,SAASU,IAEZ,QAAIC,OAAOC,gBAKPD,OAAOE,UAIf,CACO,SAASC,IAEZ,QAAIH,OAAOI,OAIf,CACO,SAASC,IAEZ,QAAIL,OAAOM,gBAIf,CACO,SAASC,IAEZ,GAAIP,OAAOQ,+BAAgC,CAEvC,MAAMC,EAAeT,OAAOQ,gCAAgCE,UAC5D,GAAID,EAAc,CACd,MAAME,EAAuB,GAM7B,GALkBC,MAAM9C,KAAK2C,EAAaI,UAAUC,QAAQC,GFpEjE,UAAyB,oBAAEC,EAAmB,QAAEC,EAAO,WAAEC,GAAeC,GAC3E,MAA4B,cAAxBH,GACmB,iBAAZC,GACN,yBAAyBG,KAAKH,KAC9B,IAAAI,KAAIJ,EAASlE,GAKdmE,IAAejE,IACfkE,GACIA,EAAY,gDAAgDlE,oCAAkDiE,MAAeA,IAAelE,EAAmB,aAAe,wBAC3K,IAPPmE,GACIA,EAAY,+CAA+CpE,+BAAmDiE,GAAuB,uBAAuBC,GAAW,cACpK,EAQf,CEsDuBK,CAAgBP,GAAWQ,IAC9BZ,EAAqBa,KAAKD,EAAI,MAGxBE,OACV,OAAO,CAEf,CACJ,CACA,OAAO,CACX,C","sources":["webpack:///../node_modules/@locator/shared/dist/isValidRenderer.js","webpack:///../node_modules/@locator/shared/dist/sharedOptionsStore.js","webpack:///../node_modules/@locator/shared/dist/index.js"],"sourcesContent":["import { gte } from \"semver\";\nexport const MIN_SUPPORTED_VERSION = \"16.9.0\";\nexport const BUNDLE_TYPE_PROD = 0;\nexport const BUNDLE_TYPE_DEV = 1;\nexport function isValidRenderer({ rendererPackageName, version, bundleType, }, reportError) {\n if (rendererPackageName !== \"react-dom\" ||\n typeof version !== \"string\" ||\n !/^\\d+\\.\\d+\\.\\d+(-\\S+)?$/.test(version) ||\n !gte(version, MIN_SUPPORTED_VERSION)) {\n reportError &&\n reportError(`Unsupported React renderer (only react-dom v${MIN_SUPPORTED_VERSION}+ is supported). Renderer: ${rendererPackageName || \"unknown\"}, Version: ${version || \"unknown\"}`);\n return false;\n }\n if (bundleType !== BUNDLE_TYPE_DEV) {\n reportError &&\n reportError(`Unsupported React renderer, only bundle type ${BUNDLE_TYPE_DEV} (development) is supported but ${bundleType} (${bundleType === BUNDLE_TYPE_PROD ? \"production\" : \"unknown\"}) is found`);\n return false;\n }\n return true;\n}\n","export function getStoredOptions() {\n const options = {};\n const storedOptions = localStorage.getItem(\"LOCATOR_OPTIONS\");\n if (storedOptions) {\n const parsedOptions = JSON.parse(storedOptions);\n if (typeof parsedOptions.projectPath === \"string\") {\n options.projectPath = parsedOptions.projectPath;\n }\n if (typeof parsedOptions.templateOrTemplateId === \"string\") {\n options.templateOrTemplateId = parsedOptions.templateOrTemplateId;\n }\n if (typeof parsedOptions.adapterId === \"string\") {\n options.adapterId = parsedOptions.adapterId;\n }\n if (typeof parsedOptions.replacePath === \"object\") {\n if (typeof parsedOptions.replacePath.from === \"string\" &&\n typeof parsedOptions.replacePath.to === \"string\") {\n options.replacePath = {\n from: parsedOptions.replacePath.from,\n to: parsedOptions.replacePath.to,\n };\n }\n }\n if (typeof parsedOptions.disabled === \"boolean\") {\n options.disabled = parsedOptions.disabled;\n }\n if (typeof parsedOptions.showIntro === \"boolean\") {\n options.showIntro = parsedOptions.showIntro;\n }\n if (typeof parsedOptions.hrefTarget === \"string\") {\n options.hrefTarget = parsedOptions.hrefTarget;\n }\n if (typeof parsedOptions.welcomeScreenDismissed === \"boolean\") {\n options.welcomeScreenDismissed = parsedOptions.welcomeScreenDismissed;\n }\n }\n return options;\n}\nexport function setStoredOptions(options) {\n localStorage.setItem(\"LOCATOR_OPTIONS\", JSON.stringify(options));\n}\nexport function cleanOptions() {\n localStorage.removeItem(\"LOCATOR_OPTIONS\");\n}\nexport function listenOnOptionsChanges(fn) {\n let currentRawData = localStorage.getItem(\"LOCATOR_OPTIONS\");\n addEventListener(\"storage\", (event) => {\n if (\"LOCATOR_OPTIONS\" !== event.key) {\n return;\n }\n const newData = localStorage.getItem(\"LOCATOR_OPTIONS\");\n if (newData !== currentRawData) {\n currentRawData = newData;\n fn(getStoredOptions());\n }\n });\n}\n","import { isValidRenderer } from \"./isValidRenderer\";\nexport * from \"./types\";\nexport const allTargets = {\n vscode: {\n url: \"vscode://file/${projectPath}${filePath}:${line}:${column}\",\n label: \"VSCode\",\n },\n webstorm: {\n url: \"webstorm://open?file=${projectPath}${filePath}&line=${line}&column=${column}\",\n label: \"WebStorm\",\n },\n};\nexport const isMac = \n// @ts-ignore\ntypeof navigator !== \"undefined\" &&\n // @ts-ignore\n navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\nexport const altTitle = isMac ? \"⌥ Option\" : \"Alt\";\nexport const shiftTitle = isMac ? \"⇧ Shift\" : \"Shift\";\nexport const ctrlTitle = isMac ? \"⌃ Ctrl\" : \"Ctrl\";\nexport const metaTitle = isMac ? \"⌘ Command\" : \"Windows\";\nexport const modifiersTitles = {\n alt: altTitle,\n ctrl: ctrlTitle,\n meta: metaTitle,\n shift: shiftTitle,\n};\nexport function getModifiersMap(modifiersString) {\n const mouseModifiersArray = modifiersString.split(\"+\").filter(Boolean);\n const modifiersMap = {};\n mouseModifiersArray.forEach((modifier) => {\n modifiersMap[modifier] = true;\n }, {});\n return modifiersMap;\n}\nexport function getModifiersString(modifiersMap) {\n const modifiersArray = Object.keys(modifiersMap);\n return modifiersArray.join(\"+\");\n}\nexport function detectSvelte() {\n // @ts-ignore\n if (window.__SVELTE_HMR) {\n // __SVELTE_HMR is so far the only way to detect svelte I found\n return true;\n }\n // @ts-ignore\n if (window.__SAPPER__) {\n return true;\n }\n return false;\n}\nexport function detectVue() {\n // @ts-ignore\n if (window.__VUE__) {\n return true;\n }\n return false;\n}\nexport function detectJSX() {\n // @ts-ignore\n if (window.__LOCATOR_DATA__) {\n return true;\n }\n return false;\n}\nexport function detectReact() {\n // @ts-ignore\n if (window.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n // @ts-ignore\n const renderersMap = window.__REACT_DEVTOOLS_GLOBAL_HOOK__?.renderers;\n if (renderersMap) {\n const problematicRenderers = [];\n const renderers = Array.from(renderersMap.values()).filter((renderer) => {\n return isValidRenderer(renderer, (msg) => {\n problematicRenderers.push(msg);\n });\n });\n if (renderers.length) {\n return true;\n }\n }\n }\n return false;\n}\nexport * from \"./sharedOptionsStore\";\n"],"names":["MIN_SUPPORTED_VERSION","BUNDLE_TYPE_PROD","BUNDLE_TYPE_DEV","getStoredOptions","options","storedOptions","localStorage","getItem","parsedOptions","JSON","parse","projectPath","templateOrTemplateId","adapterId","replacePath","from","to","disabled","showIntro","hrefTarget","welcomeScreenDismissed","setStoredOptions","setItem","stringify","cleanOptions","removeItem","listenOnOptionsChanges","fn","currentRawData","addEventListener","event","key","newData","allTargets","vscode","url","label","webstorm","isMac","navigator","platform","toUpperCase","indexOf","modifiersTitles","alt","ctrl","meta","shift","detectSvelte","window","__SVELTE_HMR","__SAPPER__","detectVue","__VUE__","detectJSX","__LOCATOR_DATA__","detectReact","__REACT_DEVTOOLS_GLOBAL_HOOK__","renderersMap","renderers","problematicRenderers","Array","values","filter","renderer","rendererPackageName","version","bundleType","reportError","test","gte","isValidRenderer","msg","push","length"],"sourceRoot":""}