{"version":3,"sources":["../node_modules/use-latest-callback/lib/src/useIsomorphicLayoutEffect.js","../node_modules/use-latest-callback/lib/src/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","../node_modules/split-on-first/index.js","../node_modules/filter-obj/index.js","../node_modules/query-string/index.js","../node_modules/escape-string-regexp/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/fast-deep-equal/index.js","../src/metrics/globalRenderTracking.ts","../src/store/metricsStore.ts","../src/metrics/network.ts","../src/metrics/startup.ts","../src/core/initOptic.ts","../src/providers/OpticProvider.tsx","../src/overlay/Overlay.tsx","../node_modules/@react-navigation/routers/CommonActions.tsx","../node_modules/@react-navigation/routers/TabRouter.tsx","../node_modules/@react-navigation/routers/DrawerRouter.tsx","../node_modules/@react-navigation/core/BaseNavigationContainer.tsx","../node_modules/use-latest-callback/esm.mjs","../node_modules/@react-navigation/core/createNavigationContainerRef.tsx","../node_modules/@react-navigation/core/DeprecatedNavigationInChildContext.tsx","../node_modules/@react-navigation/core/EnsureSingleNavigator.tsx","../node_modules/@react-navigation/core/NavigationBuilderContext.tsx","../node_modules/@react-navigation/core/NavigationContainerRefContext.tsx","../node_modules/@react-navigation/core/NavigationIndependentTreeContext.tsx","../node_modules/@react-navigation/core/NavigationStateContext.tsx","../node_modules/@react-navigation/core/theming/ThemeProvider.tsx","../node_modules/@react-navigation/core/theming/ThemeContext.tsx","../node_modules/@react-navigation/core/UnhandledActionContext.tsx","../node_modules/@react-navigation/core/useChildListeners.tsx","../node_modules/@react-navigation/core/useEventEmitter.tsx","../node_modules/@react-navigation/core/useKeyedChildListeners.tsx","../node_modules/@react-navigation/core/useNavigationIndependentTree.tsx","../node_modules/@react-navigation/core/useOptionsGetters.tsx","../node_modules/@react-navigation/core/useSyncState.tsx","../node_modules/@react-navigation/core/CurrentRenderContext.tsx","../node_modules/@react-navigation/core/useRouteCache.tsx","../node_modules/@react-navigation/core/getPathFromState.tsx","../node_modules/@react-navigation/core/getStateFromPath.tsx","../node_modules/@react-navigation/core/NavigationContext.tsx","../node_modules/@react-navigation/core/NavigationHelpersContext.tsx","../node_modules/@react-navigation/core/NavigationIndependentTree.tsx","../node_modules/@react-navigation/core/NavigationRouteContext.tsx","../node_modules/@react-navigation/core/PreventRemoveContext.tsx","../node_modules/@react-navigation/core/PreventRemoveProvider.tsx","../node_modules/@react-navigation/core/StaticNavigation.tsx","../node_modules/@react-navigation/core/useRoute.tsx","../node_modules/@react-navigation/core/theming/useTheme.tsx","../node_modules/@react-navigation/core/useFocusEffect.tsx","../node_modules/@react-navigation/core/useNavigation.tsx","../node_modules/@react-navigation/core/useIsFocused.tsx","../node_modules/@react-navigation/core/useNavigationBuilder.tsx","../node_modules/@react-navigation/core/useComponent.tsx","../node_modules/@react-navigation/core/useCurrentRender.tsx","../node_modules/@react-navigation/core/useDescriptors.tsx","../node_modules/@react-navigation/core/SceneView.tsx","../node_modules/@react-navigation/core/NavigationFocusedRouteStateContext.tsx","../node_modules/@react-navigation/core/StaticContainer.tsx","../node_modules/@react-navigation/core/useNavigationCache.tsx","../node_modules/@react-navigation/core/useFocusedListenersChildrenAdapter.tsx","../node_modules/@react-navigation/core/useFocusEvents.tsx","../node_modules/@react-navigation/core/useIsomorphicLayoutEffect.tsx","../node_modules/@react-navigation/core/useLazyValue.tsx","../node_modules/@react-navigation/core/useNavigationHelpers.tsx","../node_modules/@react-navigation/core/useOnAction.tsx","../node_modules/@react-navigation/core/useOnPreventRemove.tsx","../node_modules/@react-navigation/core/useOnGetState.tsx","../node_modules/@react-navigation/core/useOnRouteFocus.tsx","../node_modules/@react-navigation/core/useRegisterNavigator.tsx","../node_modules/@react-navigation/core/useScheduleUpdate.tsx","../node_modules/@react-navigation/core/useNavigationContainerRef.tsx","../node_modules/@react-navigation/core/useNavigationState.tsx","../node_modules/@react-navigation/core/usePreventRemove.tsx","../node_modules/@react-navigation/core/usePreventRemoveContext.tsx","../node_modules/@react-navigation/core/useStateForPath.tsx","../node_modules/@react-navigation/native/createStaticNavigation.tsx","../node_modules/@react-navigation/native/NavigationContainer.tsx","../node_modules/@react-navigation/native/LinkingContext.tsx","../node_modules/@react-navigation/native/LocaleDirContext.tsx","../node_modules/@react-navigation/native/theming/fonts.tsx","../node_modules/@react-navigation/native/UnhandledLinkingContext.tsx","../node_modules/@react-navigation/native/useDocumentTitle.tsx","../node_modules/@react-navigation/native/useLinking.tsx","../node_modules/@react-navigation/native/ServerContext.tsx","../node_modules/@react-navigation/native/useThenable.tsx","../node_modules/@react-navigation/native/Link.tsx","../node_modules/@react-navigation/native/useLinkProps.tsx","../node_modules/@react-navigation/native/ServerContainer.tsx","../node_modules/@react-navigation/native/useLinkBuilder.tsx","../node_modules/@react-navigation/native/useLinkTo.tsx","../node_modules/@react-navigation/native/useLocale.tsx","../node_modules/@react-navigation/native/useScrollToTop.tsx","../src/metrics/fps.ts","../src/metrics/reRenders.ts","../src/metrics/trace.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\n/**\n * Use `useEffect` during SSR and `useLayoutEffect` in the browser to avoid warnings.\n */\nvar useIsomorphicLayoutEffect = typeof document !== 'undefined' ? react_1.useLayoutEffect : react_1.useEffect;\nexports.default = useIsomorphicLayoutEffect;\n","\"use strict\";\nvar React = require(\"react\");\nvar useIsomorphicLayoutEffect_1 = require(\"./useIsomorphicLayoutEffect\");\n/**\n * React hook which returns the latest callback without changing the reference.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction useLatestCallback(callback) {\n    var ref = React.useRef(callback);\n    var latestCallback = React.useRef(function latestCallback() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return ref.current.apply(this, args);\n    }).current;\n    (0, useIsomorphicLayoutEffect_1.default)(function () {\n        ref.current = callback;\n    });\n    return latestCallback;\n}\nmodule.exports = useLatestCallback;\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n  useSyncExternalStore = React.useSyncExternalStore,\n  useRef = React.useRef,\n  useEffect = React.useEffect,\n  useMemo = React.useMemo,\n  useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot,\n  selector,\n  isEqual\n) {\n  var instRef = useRef(null);\n  if (null === instRef.current) {\n    var inst = { hasValue: !1, value: null };\n    instRef.current = inst;\n  } else inst = instRef.current;\n  instRef = useMemo(\n    function () {\n      function memoizedSelector(nextSnapshot) {\n        if (!hasMemo) {\n          hasMemo = !0;\n          memoizedSnapshot = nextSnapshot;\n          nextSnapshot = selector(nextSnapshot);\n          if (void 0 !== isEqual && inst.hasValue) {\n            var currentSelection = inst.value;\n            if (isEqual(currentSelection, nextSnapshot))\n              return (memoizedSelection = currentSelection);\n          }\n          return (memoizedSelection = nextSnapshot);\n        }\n        currentSelection = memoizedSelection;\n        if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n        var nextSelection = selector(nextSnapshot);\n        if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n          return (memoizedSnapshot = nextSnapshot), currentSelection;\n        memoizedSnapshot = nextSnapshot;\n        return (memoizedSelection = nextSelection);\n      }\n      var hasMemo = !1,\n        memoizedSnapshot,\n        memoizedSelection,\n        maybeGetServerSnapshot =\n          void 0 === getServerSnapshot ? null : getServerSnapshot;\n      return [\n        function () {\n          return memoizedSelector(getSnapshot());\n        },\n        null === maybeGetServerSnapshot\n          ? void 0\n          : function () {\n              return memoizedSelector(maybeGetServerSnapshot());\n            }\n      ];\n    },\n    [getSnapshot, getServerSnapshot, selector, isEqual]\n  );\n  var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n  useEffect(\n    function () {\n      inst.hasValue = !0;\n      inst.value = value;\n    },\n    [value]\n  );\n  useDebugValue(value);\n  return value;\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function is(x, y) {\n      return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var React = require(\"react\"),\n      objectIs = \"function\" === typeof Object.is ? Object.is : is,\n      useSyncExternalStore = React.useSyncExternalStore,\n      useRef = React.useRef,\n      useEffect = React.useEffect,\n      useMemo = React.useMemo,\n      useDebugValue = React.useDebugValue;\n    exports.useSyncExternalStoreWithSelector = function (\n      subscribe,\n      getSnapshot,\n      getServerSnapshot,\n      selector,\n      isEqual\n    ) {\n      var instRef = useRef(null);\n      if (null === instRef.current) {\n        var inst = { hasValue: !1, value: null };\n        instRef.current = inst;\n      } else inst = instRef.current;\n      instRef = useMemo(\n        function () {\n          function memoizedSelector(nextSnapshot) {\n            if (!hasMemo) {\n              hasMemo = !0;\n              memoizedSnapshot = nextSnapshot;\n              nextSnapshot = selector(nextSnapshot);\n              if (void 0 !== isEqual && inst.hasValue) {\n                var currentSelection = inst.value;\n                if (isEqual(currentSelection, nextSnapshot))\n                  return (memoizedSelection = currentSelection);\n              }\n              return (memoizedSelection = nextSnapshot);\n            }\n            currentSelection = memoizedSelection;\n            if (objectIs(memoizedSnapshot, nextSnapshot))\n              return currentSelection;\n            var nextSelection = selector(nextSnapshot);\n            if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n              return (memoizedSnapshot = nextSnapshot), currentSelection;\n            memoizedSnapshot = nextSnapshot;\n            return (memoizedSelection = nextSelection);\n          }\n          var hasMemo = !1,\n            memoizedSnapshot,\n            memoizedSelection,\n            maybeGetServerSnapshot =\n              void 0 === getServerSnapshot ? null : getServerSnapshot;\n          return [\n            function () {\n              return memoizedSelector(getSnapshot());\n            },\n            null === maybeGetServerSnapshot\n              ? void 0\n              : function () {\n                  return memoizedSelector(maybeGetServerSnapshot());\n                }\n          ];\n        },\n        [getSnapshot, getServerSnapshot, selector, isEqual]\n      );\n      var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n      useEffect(\n        function () {\n          inst.hasValue = !0;\n          inst.value = value;\n        },\n        [value]\n      );\n      useDebugValue(value);\n      return value;\n    };\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n  module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","import * as React from 'react';\nimport { useMetricsStore } from '../store/metricsStore';\n\ndeclare global {\n  var __OPTIC_ROOT_COMPONENT__: React.ComponentType<any> | undefined;\n  var __OPTIC_RENDER_TRACKING_ENABLED__: boolean;\n}\n\n// Store to keep track of component renders\nconst renderCounts: Record<string, number> = {};\n\n// Create a wrapper component that tracks renders\nconst withRenderTracking = (WrappedComponent: React.ComponentType<any>) => {\n  const RenderTrackingWrapper: React.FC<any> = (props) => {\n    const componentName = WrappedComponent.displayName || WrappedComponent.name || 'Unknown';\n    const incrementReRender = useMetricsStore((state) => state.incrementReRender);\n    \n    React.useEffect(() => {\n      if (global.__OPTIC_RENDER_TRACKING_ENABLED__) {\n        const reRenderInfo = {\n          componentName,\n          timestamp: Date.now(),\n          changedProps: props,\n          renderCount: (renderCounts[componentName] || 0) + 1\n        };\n        incrementReRender(componentName, reRenderInfo);\n        renderCounts[componentName] = (renderCounts[componentName] || 0) + 1;\n      }\n    });\n\n    return React.createElement(WrappedComponent, props);\n  };\n\n  return RenderTrackingWrapper;\n};\n\n// Function to wrap any component with render tracking\nexport function wrapWithRenderTracking<T extends React.ComponentType<any>>(\n  component: T\n): T {\n  if (!component) return component;\n  \n  // Skip if already wrapped\n  if ((component as any).__OPTIC_WRAPPED__) return component;\n  \n  const wrapped = withRenderTracking(component);\n  (wrapped as any).__OPTIC_WRAPPED__ = true;\n  return wrapped as T;\n}\n\n// Function to enable/disable render tracking\nexport function setRenderTrackingEnabled(enabled: boolean) {\n  global.__OPTIC_RENDER_TRACKING_ENABLED__ = enabled;\n}\n\n// Function to wrap the root component\nexport function setupGlobalRenderTracking() {\n  // Get the root component\n  const rootComponent = global.__OPTIC_ROOT_COMPONENT__;\n  if (!rootComponent) {\n    return;\n  }\n\n  // Wrap the root component with render tracking\n  const wrappedRoot = wrapWithRenderTracking(rootComponent);\n  global.__OPTIC_ROOT_COMPONENT__ = wrappedRoot;\n}\n\n// Function to set the root component\nexport function setRootComponent(component: React.ComponentType<any>) {\n  if (!component) return;\n  \n  global.__OPTIC_ROOT_COMPONENT__ = component;\n  \n  // If render tracking is enabled, wrap the component\n  if (global.__OPTIC_RENDER_TRACKING_ENABLED__) {\n    setupGlobalRenderTracking();\n  }\n}\n\n// Initialize render tracking\nexport function initRenderTracking() {\n  // Set initial state\n  global.__OPTIC_RENDER_TRACKING_ENABLED__ = true;\n  \n  // Wrap the root component if it exists\n  if (global.__OPTIC_ROOT_COMPONENT__) {\n    setupGlobalRenderTracking();\n  }\n} ","import { create } from 'zustand';\nimport { InitOpticOptions } from '../core/initOptic';\n\nexport interface NetworkRequest {\n  url: string;\n  method: string;\n  duration: number;\n  status: number;\n  [key: string]: any; // for any extra fields\n}\n\nexport interface Trace {\n  interactionName: string;\n  componentName: string;\n  duration: number;\n  timestamp: number;\n}\n\nexport interface MetricsState {\n  currentScreen: string | null;\n  screens: Record<string, { \n    reRenderCounts: Record<string, number>;\n    fps: number | null;\n  }>;\n  networkRequests: NetworkRequest[];\n  traces: Trace[];\n  startupTime: number | null;\n  setCurrentScreen: (screenName: string | null) => void;\n  incrementReRender: (componentName: string) => void;\n  setStartupTime: (time: number) => void;\n  setFPS: (fps: number, screenName: string) => void;\n  addNetworkRequest: (request: NetworkRequest) => void;\n  setTrace: (trace: Trace) => void;\n}\n\nexport const useMetricsStore = create<MetricsState>((set, get) => ({\n  currentScreen: null,\n  screens: {},\n  networkRequests: [],\n  traces: [],\n  startupTime: null,\n\n  setCurrentScreen: (screenName) => {\n    set((state) => {\n      // Initialize screen metrics if they don't exist\n      if (screenName && !state.screens[screenName]) {\n        return {\n          currentScreen: screenName,\n          screens: {\n            ...state.screens,\n            [screenName]: {\n              reRenderCounts: {},\n              fps: null,\n            },\n          },\n        };\n      }\n      return { currentScreen: screenName };\n    });\n  },\n\n  incrementReRender: (componentName) => {\n    const state = get();\n    if (!state.currentScreen) return;\n    \n    const currentScreen = state.screens[state.currentScreen];\n    const currentCount = currentScreen.reRenderCounts[componentName] || 0;\n    \n    set((state) => ({\n      screens: {\n        ...state.screens,\n        [state.currentScreen!]: {\n          ...currentScreen,\n          reRenderCounts: {\n            ...currentScreen.reRenderCounts,\n            [componentName]: currentCount + 1,\n          },\n        },\n      },\n    }));\n  },\n\n  setStartupTime: (time) => {\n    set({ startupTime: time });\n  },\n\n  setFPS: (fps, screenName) => {\n    set((state) => ({\n      screens: {\n        ...state.screens,\n        [screenName]: {\n          ...state.screens[screenName],\n          fps,\n        },\n      },\n    }));\n  },\n\n  addNetworkRequest: (request) => {\n    set((state) => ({\n      networkRequests: [...state.networkRequests, request].slice(-50), // Keep last 50 requests\n    }));\n  },\n\n  setTrace: (trace) => {\n    set((state) => ({\n      traces: [...state.traces, trace].slice(-10), // Keep last 10 traces\n    }));\n  },\n}));\n\nexport let opticEnabled = true;\n\nexport function setOpticEnabled(value: boolean) {\n  opticEnabled = value;\n}\n\nexport function initOptic(options: InitOpticOptions = {}) {\n  const { enabled = true, onMetricsLogged } = options;\n  opticEnabled = enabled;\n  if (!enabled) {\n    return;\n  }\n  // ...rest of your logic...\n}","import { useMetricsStore } from '../store/metricsStore';\n\n// Network performance thresholds (in milliseconds)\nconst NETWORK_THRESHOLDS = {\n  GOOD: 200,\n  WARNING: 500,\n  CRITICAL: 1000,\n};\n\nlet originalFetch: typeof fetch | null = null;\nlet pendingRequests = new Map<string, { startTime: number; url: string; method: string }>();\n\nconst formatDuration = (duration: number): string => {\n  if (duration >= 1000) {\n    return `${(duration / 1000).toFixed(1)}s`;\n  }\n  return `${duration}ms`;\n};\n\nexport const initNetworkTracking = () => {\n  if (originalFetch !== null) return; // Already initialized\n\n  try {\n    originalFetch = global.fetch;\n    global.fetch = async function (input: RequestInfo | URL, init?: RequestInit) {\n      const startTime = Date.now();\n      const url = input instanceof Request ? input.url : input.toString();\n      const method = input instanceof Request ? input.method : (init?.method || 'GET');\n\n      // Store the request start time\n      pendingRequests.set(url, { startTime, url, method });\n\n      try {\n        const response = await originalFetch!(input, init);\n        const responseTime = Date.now();\n        const responseDuration = responseTime - startTime;\n        \n        // Clone the response to ensure we can read the body\n        const clonedResponse = response.clone();\n        \n        // Create a new response that will track when the body is read\n        const newResponse = new Response(response.body, {\n          status: response.status,\n          statusText: response.statusText,\n          headers: response.headers,\n        });\n\n        // Override the json and text methods to track completion\n        const originalJson = newResponse.json;\n        const originalText = newResponse.text;\n\n        newResponse.json = async function() {\n          try {\n            // First try to read the cloned response to ensure it's valid JSON\n            await clonedResponse.json();\n            \n            // If we get here, the JSON is valid, so read the actual response\n            const data = await originalJson.call(this);\n            const endTime = Date.now();\n            const totalDuration = endTime - startTime;\n\n            const metricsStore = useMetricsStore.getState();\n            const currentScreen = metricsStore.currentScreen;\n\n            const networkRequest = {\n              url,\n              method,\n              duration: totalDuration,\n              responseDuration,\n              status: response.status,\n              screen: currentScreen,\n              timestamp: endTime,\n              startTime,\n              endTime,\n            };\n\n            metricsStore.addNetworkRequest(networkRequest);\n            pendingRequests.delete(url);\n\n            return data;\n          } catch (error) {\n            const endTime = Date.now();\n            const totalDuration = endTime - startTime;\n\n            const metricsStore = useMetricsStore.getState();\n            const currentScreen = metricsStore.currentScreen;\n\n            const networkRequest = {\n              url,\n              method,\n              duration: totalDuration,\n              responseDuration,\n              status: response.status,\n              screen: currentScreen,\n              timestamp: endTime,\n              startTime,\n              endTime,\n              error: error instanceof Error ? error.message : 'Unknown error',\n            };\n\n            metricsStore.addNetworkRequest(networkRequest);\n            pendingRequests.delete(url);\n\n            throw error;\n          }\n        };\n\n        newResponse.text = async function() {\n          try {\n            const data = await originalText.call(this);\n            const endTime = Date.now();\n            const totalDuration = endTime - startTime;\n\n            const metricsStore = useMetricsStore.getState();\n            const currentScreen = metricsStore.currentScreen;\n\n            const networkRequest = {\n              url,\n              method,\n              duration: totalDuration,\n              responseDuration,\n              status: response.status,\n              screen: currentScreen,\n              timestamp: endTime,\n              startTime,\n              endTime,\n            };\n\n            metricsStore.addNetworkRequest(networkRequest);\n            pendingRequests.delete(url);\n\n            return data;\n          } catch (error) {\n            const endTime = Date.now();\n            const totalDuration = endTime - startTime;\n\n            const metricsStore = useMetricsStore.getState();\n            const currentScreen = metricsStore.currentScreen;\n\n            const networkRequest = {\n              url,\n              method,\n              duration: totalDuration,\n              responseDuration,\n              status: response.status,\n              screen: currentScreen,\n              timestamp: endTime,\n              startTime,\n              endTime,\n              error: error instanceof Error ? error.message : 'Unknown error',\n            };\n\n            metricsStore.addNetworkRequest(networkRequest);\n            pendingRequests.delete(url);\n\n            throw error;\n          }\n        };\n\n        return newResponse;\n      } catch (error) {\n        const endTime = Date.now();\n        const totalDuration = endTime - startTime;\n\n        const metricsStore = useMetricsStore.getState();\n        const currentScreen = metricsStore.currentScreen;\n\n        const networkRequest = {\n          url,\n          method,\n          duration: totalDuration,\n          status: 0,\n          screen: currentScreen,\n          timestamp: endTime,\n          startTime,\n          endTime,\n          error: error instanceof Error ? error.message : 'Unknown error',\n        };\n\n        metricsStore.addNetworkRequest(networkRequest);\n        pendingRequests.delete(url);\n\n        throw error;\n      }\n    };\n  } catch (error) {\n    if (originalFetch) {\n      global.fetch = originalFetch;\n      originalFetch = null;\n    }\n  }\n};\n\nexport const stopNetworkTracking = () => {\n  if (originalFetch === null) return;\n\n  global.fetch = originalFetch;\n  originalFetch = null;\n  pendingRequests.clear();\n};\n\nexport const getNetworkColor = (duration: number | null | undefined): string => {\n  if (duration === null || duration === undefined) return '#666666';\n  if (duration <= NETWORK_THRESHOLDS.GOOD) return '#4CAF50';\n  if (duration <= NETWORK_THRESHOLDS.WARNING) return '#FFC107';\n  return '#F44336';\n};\n\nexport const getLatestNetworkRequest = () => {\n  const metricsStore = useMetricsStore.getState();\n  const currentScreen = metricsStore.currentScreen;\n  const networkRequests = metricsStore.networkRequests;\n  const screenNetworkRequests = networkRequests.filter(req => req.screen === currentScreen);\n  return screenNetworkRequests[screenNetworkRequests.length - 1];\n}; ","export {};\n\nimport { useMetricsStore } from '../store/metricsStore';\n\n// Global app start time (should be set as early as possible in the app entrypoint)\ndeclare global {\n  var __OPTIC_APP_START_TIME__: number | undefined;\n  var __OPTIC_STARTUP_CAPTURED__: boolean;\n}\n\nif (global.__OPTIC_APP_START_TIME__ === undefined) {\n  global.__OPTIC_APP_START_TIME__ = Date.now();\n}\n\nif (global.__OPTIC_STARTUP_CAPTURED__ === undefined) {\n  global.__OPTIC_STARTUP_CAPTURED__ = false;\n}\n\n/**\n * Measures time since global app start and logs it to the console.\n * Only measures once and stores the result.\n */\nexport function trackStartupTime() {\n  // Only measure startup time once\n  if (global.__OPTIC_STARTUP_CAPTURED__) {\n    return;\n  }\n\n  const start = global.__OPTIC_APP_START_TIME__ || Date.now();\n  \n  // Use requestAnimationFrame to ensure we measure after initial render\n  requestAnimationFrame(() => {\n    if (!global.__OPTIC_STARTUP_CAPTURED__) {\n      const duration = Date.now() - start;\n      \n      // Mark as captured before setting the time to prevent race conditions\n      global.__OPTIC_STARTUP_CAPTURED__ = true;\n      \n      useMetricsStore.getState().setStartupTime(duration);\n    }\n  });\n}\n","import { initRenderTracking } from '../metrics/globalRenderTracking';\nimport { initNetworkTracking } from '../metrics/network';\nimport { useMetricsStore } from '../store/metricsStore';\nimport { trackStartupTime } from '../metrics/startup';\nimport { setOpticEnabled } from '../store/metricsStore';\nimport React from 'react';\n\nexport interface InitOpticOptions {\n  enabled?: boolean;\n  onMetricsLogged?: (metrics: any) => void;\n  network?: boolean;\n  startup?: boolean;\n  reRenders?: boolean;\n  traces?: boolean;\n}\n\nexport interface OpticConfig {\n  enabled: boolean;\n  onMetricsLogged?: (metrics: any) => void;\n  network: boolean;\n  startup: boolean;\n  reRenders: boolean;\n  traces: boolean;\n}\n\n// Create a wrapper component that automatically tracks screen names\nfunction withScreenTracking<P extends object>(WrappedComponent: React.ComponentType<P>) {\n  const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Unknown';\n  const screenName = displayName.replace(/Screen$/, '');\n\n  function WithScreenTracking(props: P) {\n    const setCurrentScreen = useMetricsStore((state) => state.setCurrentScreen);\n    \n    React.useEffect(() => {\n      setCurrentScreen(screenName);\n      return () => setCurrentScreen(null);\n    }, [setCurrentScreen]);\n\n    return React.createElement(WrappedComponent, props);\n  }\n\n  WithScreenTracking.displayName = `WithScreenTracking(${displayName})`;\n  return WithScreenTracking;\n}\n\n// Function to check if a component is likely a screen\nfunction isScreenComponent(component: any): boolean {\n  const name = component.displayName || component.name || '';\n  return name.endsWith('Screen') || name.endsWith('Page') || name.endsWith('View');\n}\n\n// Store to keep track of wrapped components\nconst wrappedComponents = new WeakMap();\n\n// Function to wrap a component if it's a screen\nfunction wrapIfScreen<P extends object>(Component: React.ComponentType<P>): React.ComponentType<P> {\n  if (!isScreenComponent(Component)) {\n    return Component;\n  }\n\n  // Check if already wrapped\n  if (wrappedComponents.has(Component)) {\n    return wrappedComponents.get(Component);\n  }\n\n  // Wrap the component\n  const wrapped = withScreenTracking(Component);\n  wrappedComponents.set(Component, wrapped);\n  return wrapped;\n}\n\nexport function initOptic(options: InitOpticOptions = {}) {\n  const {\n    enabled = true,\n    onMetricsLogged,\n    network = true,\n    startup = true,\n    reRenders = true,\n    traces = true,\n  } = options;\n\n  const config: OpticConfig = {\n    enabled,\n    onMetricsLogged,\n    network,\n    startup,\n    reRenders,\n    traces,\n  };\n\n  setOpticEnabled(enabled);\n  if (!enabled) {\n    // Do not initialize anything if disabled\n    return;\n  }\n\n  // Initialize render tracking if enabled\n  if (reRenders) {\n    initRenderTracking();\n  }\n\n  // Initialize network tracking if enabled\n  if (network) {\n    initNetworkTracking();\n  }\n\n  // Track startup time if enabled\n  if (startup) {\n    trackStartupTime();\n  }\n\n  // Initialize metrics store\n  useMetricsStore.getState();\n\n  // Subscribe to metrics changes and call the callback\n  if (onMetricsLogged) {\n    const unsubscribe = useMetricsStore.subscribe((metrics) => {\n      onMetricsLogged(metrics);\n    });\n    // Optionally return unsubscribe so the user can clean up\n    return {\n      config,\n      unsubscribe,\n    };\n  }\n\n  return config;\n}\n","import React, { useEffect, useRef } from 'react';\nimport { useMetricsStore } from '../store/metricsStore';\nimport { Overlay } from '../overlay/Overlay';\nimport { useNavigation, useRoute, useNavigationContainerRef } from '@react-navigation/native';\nimport { usePathname, useSegments } from 'expo-router';\nimport { initRenderTracking } from '../metrics/globalRenderTracking';\nimport { FPSManager } from '../metrics/fps';\n\ninterface OpticProviderProps {\n  children: React.ReactNode;\n  /**\n   * Enable or disable specific metrics\n   */\n  metrics?: {\n    enabled?: boolean;\n    startup?: boolean;\n    reRenders?: boolean;\n    fps?: boolean;\n    network?: boolean;\n    traces?: boolean;\n  };\n  /**\n   * Show or hide the performance overlay\n   */\n  showOverlay?: boolean;\n}\n\nconst defaultMetrics = {\n  enabled: true,\n  startup: true,\n  reRenders: true,\n  fps: true,\n  network: true,\n  traces: true,\n};\n\nexport const OpticProvider: React.FC<OpticProviderProps> = ({ \n  children,\n  metrics = defaultMetrics,\n  showOverlay = true\n}) => {\n  const { setCurrentScreen } = useMetricsStore();\n  const currentScreen = useMetricsStore((state) => state.currentScreen);\n  const pathname = usePathname();\n  const segments = useSegments();\n  const navigationRef = useNavigationContainerRef();\n  const fpsManager = React.useRef<FPSManager | null>(null);\n\n  // Navigation hooks\n  const navigation = useNavigation();\n  const route = useRoute();\n\n  // Initialize re-render tracking if enabled\n  useEffect(() => {\n    if (metrics.reRenders) {\n      initRenderTracking();\n    }\n  }, [metrics.reRenders]);\n\n  useEffect(() => {\n    if (metrics.enabled && metrics.fps) {\n      fpsManager.current = new FPSManager();\n      fpsManager.current.startTracking();\n    }\n\n    return () => {\n      if (fpsManager.current) {\n        fpsManager.current.stopTracking();\n      }\n    };\n  }, [metrics.enabled, metrics.fps]);\n\n  // Function to get the current screen name\n  const getCurrentScreenName = () => {\n    // Try to get screen name from Expo Router first\n    if (pathname) {\n      return pathname;\n    }\n\n    // Fallback to React Navigation\n    if (navigationRef.current) {\n      const currentRoute = navigationRef.current.getCurrentRoute();\n      if (currentRoute?.name) {\n        return currentRoute.name;\n      }\n    }\n\n    // If no screen name is found, use the first segment or default to 'index'\n    return segments[0] || 'index';\n  };\n\n  // Handle screen changes and initial route\n  useEffect(() => {\n    const screenName = getCurrentScreenName();\n    \n    // Always set the current screen, even if it's the same\n    // This ensures we capture the initial route\n    setCurrentScreen(screenName);\n  }, [pathname, segments, navigationRef.current]);\n\n  return (\n    <>\n      {children}\n      {showOverlay && <Overlay />}\n    </>\n  );\n}; ","import React, { useRef, useState } from 'react';\nimport { View, Text, StyleSheet, PanResponder, Animated, Dimensions, TouchableOpacity, Clipboard, Image, Platform, Linking, ScrollView } from 'react-native';\nimport { useMetricsStore } from '../store/metricsStore';\nimport { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { getFPSColor } from '../metrics/fps';\nimport { getNetworkColor, getLatestNetworkRequest } from '../metrics/network';\nimport { opticEnabled } from '../store/metricsStore';\n\nconst minimizeImageUrl = 'https://img.icons8.com/material-rounded/24/ffffff/minus.png';\nconst maximizeImageUrl = 'https://img.icons8.com/ios-filled/50/ffffff/full-screen.png';\n\nconst { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get('window');\n\nconst METRICS_THRESHOLDS = {\n  STARTUP: {\n    good: 1000, // 1 second\n    warning: 2000, // 2 seconds\n  },\n  TRACE: {\n    good: 50, // 50ms\n    warning: 200, // 200ms\n  },\n  FPS: {\n    good: 55, // 55+ FPS is good\n    warning: 30, // 30+ FPS is acceptable\n  },\n};\n\nconst getMetricColor = (metric: 'STARTUP' | 'TRACE' | 'FPS', value: number) => {\n  const thresholds = METRICS_THRESHOLDS[metric];\n  if (metric === 'FPS') {\n    if (value >= thresholds.good) return '#4CAF50';\n    if (value >= thresholds.warning) return '#FFC107';\n    return '#F44336';\n  }\n  if (value <= thresholds.good) return '#4CAF50';\n  if (value <= thresholds.warning) return '#FFC107';\n  return '#F44336';\n};\n\nconst getStatusColor = (status: number): string => {\n  if (status >= 200 && status < 300) return '#4CAF50'; // Green for success\n  if (status >= 400) return '#F44336'; // Red for client/server errors\n  return '#FFC107'; // Yellow for other status codes\n};\n\nexport const Overlay: React.FC = () => {\n  if (!opticEnabled) return null;\n\n  const insets = useSafeAreaInsets();\n  const currentScreen = useMetricsStore((state) => state.currentScreen);\n  const screens = useMetricsStore((state) => state.screens);\n  const startupTime = useMetricsStore((state) => state.startupTime);\n  const networkRequests = useMetricsStore((state) => state.networkRequests);\n  const traces = useMetricsStore((state) => state.traces);\n  const [isMinimized, setIsMinimized] = useState(false);\n  const [isNetworkExpanded, setIsNetworkExpanded] = useState(false);\n  const [isTracesExpanded, setIsTracesExpanded] = useState(false);\n  const [isCollapsed, setIsCollapsed] = useState(false);\n  const [expanded, setExpanded] = useState(false);\n  const [expandedTrace, setExpandedTrace] = useState(false);\n\n  const pan = useRef(new Animated.ValueXY()).current;\n  const [position, setPosition] = useState({ \n    x: (SCREEN_WIDTH - 300) / 2,\n    y: insets.top + 20\n  });\n\n  const panResponder = useRef(\n    PanResponder.create({\n      onStartShouldSetPanResponder: () => true,\n      onPanResponderMove: (_, gesture) => {\n        const newX = position.x + gesture.dx;\n        const newY = position.y + gesture.dy;\n\n        // Keep within screen bounds with padding\n        const boundedX = Math.max(10, Math.min(newX, SCREEN_WIDTH - 290));\n        const boundedY = Math.max(insets.top + 10, Math.min(newY, SCREEN_HEIGHT - 200));\n\n        // Update position directly without animation\n        setPosition({ x: boundedX, y: boundedY });\n      },\n      onPanResponderRelease: () => {\n        // Reset the pan value without animation\n        pan.setValue({ x: 0, y: 0 });\n      },\n    })\n  ).current;\n\n  const currentScreenMetrics = currentScreen ? screens[currentScreen] : null;\n  const latestRequest = getLatestNetworkRequest();\n  const latestTrace = traces[traces.length - 1];\n\n  const handleCopyMetrics = () => {\n    try {\n      const metrics = {\n        currentScreen: currentScreen || 'No Screen',\n        startupTime: startupTime ? `${startupTime.toFixed(2)}ms` : 'N/A',\n        fps: currentScreenMetrics?.fps ? `${currentScreenMetrics.fps.toFixed(1)} FPS` : 'N/A',\n        latestNetworkRequest: latestRequest ? {\n          url: latestRequest.url,\n          duration: `${latestRequest.duration.toFixed(2)}ms`,\n          status: latestRequest.status\n        } : 'N/A',\n        latestTrace: latestTrace ? {\n          interactionName: latestTrace.interactionName,\n          componentName: latestTrace.componentName,\n          duration: `${latestTrace.duration.toFixed(2)}ms`,\n        } : 'N/A',\n      };\n      \n      // Use Clipboard API instead of console.log\n      if (Platform.OS === 'ios' || Platform.OS === 'android') {\n        Clipboard.setString(JSON.stringify(metrics, null, 2));\n      }\n    } catch (error) {\n      console.error('Error copying metrics:', error);\n    }\n  };\n\n  const handleOpenWebsite = () => {\n    Linking.openURL('https://useoptic.dev');\n  };\n\n  const renderCollapsedView = () => (\n    <View style={styles.collapsedContainer}>\n      <View style={styles.collapsedMetrics}>\n        <Text style={styles.collapsedMetric}>\n          🚀 {startupTime !== null ? `${startupTime.toFixed(1)}ms` : '...'}\n        </Text>\n        <Text style={styles.collapsedMetric}>\n          🎮 {currentScreenMetrics?.fps !== null && currentScreenMetrics?.fps !== undefined ? `${currentScreenMetrics.fps.toFixed(1)}` : '...'}\n        </Text>\n      </View>\n    </View>\n  );\n\n  if (!currentScreen) return null;\n\n  return (\n    <SafeAreaView style={styles.safeArea} pointerEvents=\"box-none\">\n      <Animated.View\n        style={[\n          styles.overlay,\n          isCollapsed ? styles.collapsedOverlay : null,\n          {\n            left: position.x,\n            top: position.y,\n          },\n        ]}\n        {...panResponder.panHandlers}\n      >\n        <TouchableOpacity \n          style={styles.dragHandle} \n          onPress={() => setIsCollapsed(!isCollapsed)}\n        />\n        \n        {isCollapsed ? (\n          renderCollapsedView()\n        ) : (\n          <>\n            <View style={styles.header}>\n              <View style={styles.headerTop}>\n                <Text style={styles.text}>Performance Metrics</Text>\n                <View style={styles.headerButtons}>\n                  <TouchableOpacity\n                    style={[styles.iconButton]}\n                    onPress={() => setIsMinimized(!isMinimized)}\n                  >\n                    <Image\n                      source={{ uri: isMinimized ? maximizeImageUrl : minimizeImageUrl }}\n                      style={styles.icon}\n                    />\n                  </TouchableOpacity>\n                </View>\n              </View>\n              <View style={styles.screenNameContainer}>\n                <Text style={styles.screenName}>\n                  {currentScreen || 'No Screen'}\n                </Text>\n              </View>\n            </View>\n            \n            {!isMinimized && (\n              <ScrollView style={styles.content}>\n                <View style={styles.section}>\n                  <Text style={styles.sectionTitle}>Performance Metrics</Text>\n                  {startupTime && (\n                    <Text style={[styles.metric, { color: getMetricColor('STARTUP', startupTime) }]}>Startup: {startupTime.toFixed(2)}ms</Text>\n                  )}\n                  {currentScreenMetrics?.fps && (\n                    <Text style={[styles.metric, { color: getMetricColor('FPS', currentScreenMetrics.fps) }]}>FPS: {currentScreenMetrics.fps.toFixed(1)}</Text>\n                  )}\n                </View>\n\n                {latestRequest && (\n                  <View style={styles.section}>\n                    <TouchableOpacity\n                      style={styles.sectionHeader}\n                      onPress={() => setIsNetworkExpanded(!isNetworkExpanded)}\n                    >\n                      <Text style={styles.sectionTitle}>Network Request</Text>\n                      <Text style={styles.expandIcon}>{isNetworkExpanded ? '▼' : '▶'}</Text>\n                    </TouchableOpacity>\n                    <View style={styles.networkInfo}>\n                      <Text style={[styles.metric, { color: getNetworkColor(latestRequest.duration) }]}>→ {Math.round(latestRequest.duration).toFixed(1)}ms</Text>\n                      {isNetworkExpanded && (\n                        <View style={styles.expandedNetworkInfo}>\n                          <View style={styles.statusContainer}>\n                            <Text style={[styles.statusCode, { color: getStatusColor(latestRequest.status) }]}>\n                              {latestRequest.status} {latestRequest.status >= 500 ? '🔴' : latestRequest.status >= 400 ? '🟠' : '🟢'}\n                            </Text>\n                          </View>\n                          <View style={styles.urlContainer}>\n                            <Text style={styles.networkUrl} numberOfLines={1} ellipsizeMode=\"middle\">{latestRequest.url}</Text>\n                          </View>\n                        </View>\n                      )}\n                    </View>\n                  </View>\n                )}\n\n                {traces.length > 0 && (\n                  <View style={styles.section}>\n                    <TouchableOpacity\n                      style={styles.sectionHeader}\n                      onPress={() => setIsTracesExpanded(!isTracesExpanded)}\n                    >\n                      <Text style={styles.sectionTitle}>Recent Traces</Text>\n                      <Text style={styles.expandIcon}>{isTracesExpanded ? '▼' : '▶'}</Text>\n                    </TouchableOpacity>\n                    {isTracesExpanded && traces.slice(-3).reverse().map((trace, idx) => (\n                      <View key={idx} style={styles.traceRow}>\n                        <Text style={styles.traceScreen}>{trace.interactionName} → {trace.componentName}</Text>\n                        <Text style={[styles.traceDuration, { color: getMetricColor('TRACE', trace.duration) }]}>{trace.duration.toFixed(1)}ms</Text>\n                      </View>\n                    ))}\n                  </View>\n                )}\n\n                <TouchableOpacity style={styles.copyButton} onPress={handleCopyMetrics}>\n                  <Text style={styles.copyButtonText}>Copy Metrics</Text>\n                </TouchableOpacity>\n              </ScrollView>\n            )}\n            <View style={styles.poweredByContainer}>\n              <TouchableOpacity onPress={handleOpenWebsite}>\n                <Text style={styles.poweredByText}>Powered by Optic</Text>\n              </TouchableOpacity>\n            </View>\n          </>\n        )}\n      </Animated.View>\n    </SafeAreaView>\n  );\n};\n\nconst styles = StyleSheet.create({\n  safeArea: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    pointerEvents: 'box-none',\n  },\n  overlay: {\n    position: 'absolute',\n    backgroundColor: 'rgba(18, 18, 23, 0.98)',\n    paddingVertical: 8,\n    paddingHorizontal: 16,\n    borderRadius: 16,\n    zIndex: 9999,\n    elevation: 20,\n    width: 320,\n    shadowColor: '#000',\n    shadowOffset: {\n      width: 0,\n      height: 8,\n    },\n    shadowOpacity: 0.4,\n    shadowRadius: 8,\n  },\n  collapsedOverlay: {\n    width: 'auto',\n    paddingVertical: 6,\n    paddingHorizontal: 12,\n  },\n  collapsedContainer: {\n    flexDirection: 'row',\n    alignItems: 'center',\n  },\n  collapsedMetrics: {\n    flexDirection: 'row',\n    gap: 16,\n  },\n  collapsedMetric: {\n    color: '#fff',\n    fontSize: 14,\n    fontWeight: '600',\n  },\n  dragHandle: {\n    width: 40,\n    height: 4,\n    backgroundColor: 'rgba(255, 255, 255, 0.2)',\n    borderRadius: 4,\n    alignSelf: 'center',\n    marginBottom: 6,\n  },\n  header: {\n    marginBottom: 8,\n    borderBottomWidth: 1,\n    borderBottomColor: 'rgba(255, 255, 255, 0.15)',\n    paddingBottom: 6,\n  },\n  headerTop: {\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n  },\n  headerButtons: {\n    flexDirection: 'row',\n    gap: 8,\n  },\n  iconButton: {\n    padding: 6,\n    borderRadius: 10,\n    backgroundColor: 'rgba(255, 255, 255, 0.15)',\n    width: 32,\n    height: 32,\n    justifyContent: 'center',\n    alignItems: 'center',\n  },\n  icon: {\n    width: 18,\n    height: 18,\n    resizeMode: 'contain',\n  },\n  text: {\n    color: '#fff',\n    fontWeight: '700',\n    fontSize: 16,\n    letterSpacing: 0.3,\n  },\n  screenNameContainer: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginTop: 6,\n    backgroundColor: 'rgba(255, 255, 255, 0.12)',\n    paddingHorizontal: 10,\n    paddingVertical: 4,\n    borderRadius: 8,\n  },\n  screenName: {\n    color: '#fff',\n    fontSize: 13,\n    fontWeight: '600',\n    fontStyle: 'italic',\n  },\n  content: {\n    marginTop: 6,\n  },\n  section: {\n    marginBottom: 12,\n    backgroundColor: 'rgba(255, 255, 255, 0.05)',\n    borderRadius: 12,\n    padding: 10,\n  },\n  sectionHeader: {\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n    marginBottom: 6,\n  },\n  sectionTitle: {\n    color: '#fff',\n    fontSize: 14,\n    fontWeight: 'bold',\n    letterSpacing: 0.2,\n  },\n  metric: {\n    color: '#fff',\n    fontSize: 13,\n    marginBottom: 3,\n    fontWeight: '500',\n  },\n  traceDetails: {\n    marginTop: 4,\n    padding: 8,\n    backgroundColor: 'rgba(255, 255, 255, 0.08)',\n    borderRadius: 8,\n  },\n  traceText: {\n    color: '#fff',\n    fontSize: 12,\n    marginBottom: 2,\n  },\n  copyButton: {\n    backgroundColor: 'rgba(33, 150, 243, 0.15)',\n    padding: 8,\n    borderRadius: 8,\n    alignItems: 'center',\n    marginTop: 8,\n    borderWidth: 1,\n    borderColor: 'rgba(33, 150, 243, 0.3)',\n  },\n  copyButtonText: {\n    color: '#2196F3',\n    fontSize: 12,\n    fontWeight: '600',\n    letterSpacing: 0.3,\n  },\n  poweredByContainer: {\n    alignSelf: 'flex-end',\n    marginTop: 6,\n    marginBottom: -2,\n    backgroundColor: 'rgba(0, 0, 0, 0.4)',\n    borderRadius: 8,\n    paddingHorizontal: 10,\n    paddingVertical: 4,\n  },\n  poweredByText: {\n    color: '#fff',\n    fontSize: 11,\n    fontWeight: '600',\n    opacity: 0.8,\n    letterSpacing: 0.3,\n    textDecorationLine: 'underline',\n  },\n  expandIcon: {\n    color: '#fff',\n    fontSize: 12,\n    fontWeight: 'bold',\n  },\n  networkInfo: {\n    marginTop: 4,\n  },\n  expandedNetworkInfo: {\n    marginTop: 6,\n    padding: 8,\n    backgroundColor: 'rgba(255, 255, 255, 0.08)',\n    borderRadius: 8,\n  },\n  statusContainer: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginBottom: 4,\n  },\n  statusCode: {\n    color: '#fff',\n    fontSize: 13,\n    fontWeight: 'bold',\n  },\n  urlContainer: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    marginLeft: 8,\n  },\n  networkUrl: {\n    color: '#fff',\n    fontSize: 12,\n    marginBottom: 2,\n  },\n  traceRow: {\n    flexDirection: 'row',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n    marginBottom: 4,\n    paddingVertical: 4,\n    paddingHorizontal: 8,\n    backgroundColor: 'rgba(255, 255, 255, 0.05)',\n    borderRadius: 6,\n  },\n  traceScreen: {\n    color: '#fff',\n    fontSize: 12,\n    fontWeight: 'bold',\n  },\n  traceDuration: {\n    color: '#fff',\n    fontSize: 12,\n    fontWeight: '500',\n  },\n});\n",null,null,null,null,"// eslint-disable-next-line import/extensions\nimport useLatestCallback from './lib/src/index.js';\n\nexport default useLatestCallback;\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import { useMetricsStore } from '../store/metricsStore';\n\nexport interface FPSMetrics {\n  fps: number;\n  timestamp: number;\n}\n\nexport class FPSManager {\n  private frameCount: number = 0;\n  private lastTime: number = 0;\n  private animationFrameId: number | null = null;\n  private readonly updateInterval: number = 1000; // Update FPS every second\n\n  constructor() {\n    this.lastTime = performance.now();\n  }\n\n  private updateFPS = () => {\n    const currentTime = performance.now();\n    const elapsed = currentTime - this.lastTime;\n\n    if (elapsed >= this.updateInterval) {\n      const fps = Math.round((this.frameCount * 1000) / elapsed);\n      const metricsStore = useMetricsStore.getState();\n      const currentScreen = metricsStore.currentScreen;\n\n      if (currentScreen) {\n        metricsStore.setFPS(fps, currentScreen);\n      }\n\n      this.frameCount = 0;\n      this.lastTime = currentTime;\n    }\n\n    this.frameCount++;\n    this.animationFrameId = requestAnimationFrame(this.updateFPS);\n  };\n\n  public startTracking = () => {\n    if (!this.animationFrameId) {\n      this.lastTime = performance.now();\n      this.frameCount = 0;\n      this.animationFrameId = requestAnimationFrame(this.updateFPS);\n    }\n  };\n\n  public stopTracking = () => {\n    if (this.animationFrameId) {\n      cancelAnimationFrame(this.animationFrameId);\n      this.animationFrameId = null;\n    }\n  };\n}\n\nexport const getFPSColor = (fps: number): string => {\n  if (fps >= 55) return '#4CAF50'; // Good (green)\n  if (fps >= 30) return '#FFC107'; // Warning (yellow)\n  return '#F44336'; // Poor (red)\n}; ","import React, { useEffect, useRef } from 'react';\nimport { useMetricsStore } from '../store/metricsStore';\n\ninterface ReRenderInfo {\n  componentName: string;\n  timestamp: number;\n  changedProps: Record<string, { from: any; to: any }>;\n  renderCount: number;\n  stackTrace?: string;\n}\n\n/**\n * Hook to monitor and log prop changes for a component.\n * @param componentName Name of the component\n * @param props Component props\n * @param options Additional options for tracking\n */\nexport function useRenderMonitor<T extends Record<string, any>>(\n  componentName: string,\n  props: T,\n  options: {\n    debug?: boolean;\n    ignoreProps?: string[];\n    trackStack?: boolean;\n  } = {}\n) {\n  if (!React) return;\n\n  const { ignoreProps = [], trackStack = false } = options;\n  const prevProps = useRef<T | null>(null);\n  const renderCount = useRef(0);\n  const incrementReRender = useMetricsStore((state) => state.incrementReRender);\n  const currentScreen = useMetricsStore((state) => state.currentScreen);\n\n  useEffect(() => {\n    prevProps.current = null;\n    renderCount.current = 0;\n  }, [currentScreen]);\n\n  useEffect(() => {\n    if (prevProps.current) {\n      const changedProps: Record<string, { from: any; to: any }> = {};\n      \n      for (const key of Object.keys(props)) {\n        if (!ignoreProps.includes(key) && prevProps.current[key] !== props[key]) {\n          changedProps[key] = {\n            from: prevProps.current[key],\n            to: props[key],\n          };\n        }\n      }\n\n      if (Object.keys(changedProps).length > 0) {\n        renderCount.current++;\n        const reRenderInfo: ReRenderInfo = {\n          componentName,\n          timestamp: Date.now(),\n          changedProps,\n          renderCount: renderCount.current,\n        };\n\n        if (trackStack) {\n          reRenderInfo.stackTrace = new Error().stack;\n        }\n\n        incrementReRender(componentName);\n      }\n    }\n    prevProps.current = props;\n  });\n}\n\nlet renderTrackingSetup = false;\n\n/**\n * Sets up global render tracking with configuration options.\n * @param options Configuration options for render tracking\n */\nexport function setupRenderTracking(options: {\n  debug?: boolean;\n  trackStack?: boolean;\n} = {}) {\n  if (!renderTrackingSetup) {\n    renderTrackingSetup = true;\n  }\n}\n","import { useMetricsStore } from '../store/metricsStore';\n\ninterface Trace {\n  interactionName: string;\n  componentName: string;\n  duration: number;\n  timestamp: number;\n}\n\nclass TraceManager {\n  private activeTraces: Map<string, number> = new Map();\n  private traces: Trace[] = [];\n  private readonly MAX_TRACES = 10;\n\n  /**\n   * Start tracing an interaction\n   * @param interactionName Name of the interaction (e.g., 'OpenModal')\n   */\n  startTrace(interactionName: string) {\n    if (!__DEV__) return;\n    this.activeTraces.set(interactionName, Date.now());\n  }\n\n  /**\n   * End tracing and record the duration\n   * @param interactionName Name of the interaction\n   * @param componentName Name of the component that rendered\n   */\n  endTrace(interactionName: string, componentName: string) {\n    if (!__DEV__) return;\n\n    const startTime = this.activeTraces.get(interactionName);\n    if (!startTime) return;\n\n    const duration = Date.now() - startTime;\n    const trace: Trace = {\n      interactionName,\n      componentName,\n      duration,\n      timestamp: Date.now()\n    };\n\n    this.traces.unshift(trace);\n    if (this.traces.length > this.MAX_TRACES) {\n      this.traces.pop();\n    }\n\n    useMetricsStore.getState().setTrace(trace);\n    this.activeTraces.delete(interactionName);\n  }\n\n  /**\n   * Get all traces\n   */\n  getTraces(): Trace[] {\n    return [...this.traces];\n  }\n\n  /**\n   * Clear all traces\n   */\n  clearTraces() {\n    this.traces = [];\n    this.activeTraces.clear();\n  }\n}\n\nexport const traceManager = new TraceManager();\n\n// Export the public API\nexport const startTrace = traceManager.startTrace.bind(traceManager);\nexport const endTrace = traceManager.endTrace.bind(traceManager); "],"mappings":"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","names":["useIsomorphicLayoutEffect","React","useLatestCallback","latestCallback","parse","queryString","React","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","isEqual","React","useSyncExternalStore","useRef","useEffect","useMemo","useDebugValue","isEqual","state","React","React","useEffect","React","React","goBack","type","navigate","args","name","params","options","console","warn","payload","merge","pop","Error","navigateDeprecated","reset","state","setParams","preload","TabActions","jumpTo","name","params","type","payload","DrawerActions","TabActions","openDrawer","type","closeDrawer","toggleDrawer","React","NOT_INITIALIZED_ERROR","createNavigationContainerRef","methods","Object","keys","CommonActions","listeners","removeListener","event","callback","filter","cb","current","ref","value","entries","forEach","callbacks","addListener","isReady","reduce","acc","name","args","push","console","error","React","React","jsx","_jsx","React","React","NavigationContainerRefContext","createContext","undefined","React","React","React","React","ThemeContext","createContext","undefined","displayName","jsx","_jsx","React","React","React","React","React","React","React","jsx","_jsx","React","React","CHILD_STATE","Symbol","queryString","React","NavigationContext","createContext","undefined","React","React","React","NavigationRouteContext","createContext","undefined","jsx","_jsx","React","React","jsx","_jsx","React","React","useRoute","route","useContext","NavigationRouteContext","undefined","Error","jsx","_jsx","MemoizedScreen","React","memo","component","route","useRoute","children","createElement","displayName","React","React","React","useNavigation","root","useContext","NavigationContainerRefContext","navigation","NavigationContext","undefined","Error","React","React","React","jsx","_jsx","React","React","React","React","React","jsx","_jsx","React","jsx","_jsx","React","React","useEffect","useLayoutEffect","React","React","React","React","VISITED_ROUTE_KEYS","Symbol","React","React","React","React","jsx","_jsx","React","useNavigationContainerRef","navigation","useRef","current","createNavigationContainerRef","React","React","React","React","React","React","I18nManager","React","MISSING_CONTEXT_ERROR","LinkingContext","createContext","options","Error","displayName","React","LocaleDirContext","createContext","displayName","Platform","WEB_FONT_STACK","fonts","select","web","regular","fontFamily","fontWeight","medium","bold","heavy","ios","default","React","MISSING_CONTEXT_ERROR","UnhandledLinkingContext","createContext","lastUnhandledLink","Error","setLastUnhandledLink","displayName","React","React","React","React","jsx","_jsx","globalThis","REACT_NAVIGATION_DEVTOOLS","WeakMap","jsx","_jsx","React","Platform","Text","React","Platform","React","jsx","_jsx","React","React","React","React","React","useEffect","React","useEffect","useRef","React","useRef","useEffect"]}