From 261c9eefe1e30542bfd096d9f8a17776e6916287 Mon Sep 17 00:00:00 2001 From: SoumyadiptoPal Date: Fri, 6 Oct 2023 02:10:21 +0530 Subject: [PATCH 01/59] Updated navigation bar and also added discord and github icons --- frontend/src/App.tsx | 11 ++++++-- frontend/src/Navigation.tsx | 48 ++++++++++++++++++++++++--------- frontend/src/assets/discord.svg | 1 + frontend/src/assets/github.svg | 5 ++++ 4 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 frontend/src/assets/discord.svg create mode 100644 frontend/src/assets/github.svg diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 29f2bd2b..4802ab82 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -4,17 +4,24 @@ import Conversation from './conversation/Conversation'; import About from './About'; import { inject } from '@vercel/analytics'; import { useMediaQuery } from './hooks'; +import { useState } from 'react'; inject(); export default function App() { const { isMobile } = useMediaQuery(); + const [navOpen, setNavOpen] = useState(!isMobile); + return (
- +
diff --git a/frontend/src/Navigation.tsx b/frontend/src/Navigation.tsx index cb5d0218..260639b6 100644 --- a/frontend/src/Navigation.tsx +++ b/frontend/src/Navigation.tsx @@ -8,6 +8,8 @@ import Hamburger from './assets/hamburger.svg'; import Key from './assets/key.svg'; import Info from './assets/info.svg'; import Link from './assets/link.svg'; +import Discord from './assets/discord.svg'; +import Github from './assets/github.svg'; import UploadIcon from './assets/upload.svg'; import { ActiveState } from './models/misc'; import APIKeyModal from './preferences/APIKeyModal'; @@ -31,14 +33,18 @@ import Upload from './upload/Upload'; import { Doc, getConversations } from './preferences/preferenceApi'; import SelectDocsModal from './preferences/SelectDocsModal'; -export default function Navigation() { +interface NavigationProps { + navOpen: boolean; + setNavOpen: React.Dispatch>; +} + +export default function Navigation({ navOpen, setNavOpen }: NavigationProps) { const dispatch = useDispatch(); const docs = useSelector(selectSourceDocs); const selectedDocs = useSelector(selectSelectedDocs); const conversations = useSelector(selectConversations); const conversationId = useSelector(selectConversationId); const { isMobile } = useMediaQuery(); - const [navOpen, setNavOpen] = useState(!isMobile); const [isDocsListOpen, setIsDocsListOpen] = useState(false); @@ -142,15 +148,31 @@ export default function Navigation() { return ( <> + {!navOpen && ( + + )}
-
+
{ setApiKeyModalState('ACTIVE'); }} @@ -305,7 +327,7 @@ export default function Navigation() { - `my-auto mx-4 flex h-12 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100 ${ + `my-auto mx-4 flex h-9 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100 ${ isActive ? 'bg-gray-3000' : '' }` } @@ -318,7 +340,7 @@ export default function Navigation() { href="https://docs.docsgpt.co.uk/" target="_blank" rel="noreferrer" - className="my-auto mx-4 flex h-12 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100" + className="my-auto mx-4 flex h-9 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100" > link

Documentation

@@ -328,9 +350,9 @@ export default function Navigation() { href="https://discord.gg/WHJdfbQDR4" target="_blank" rel="noreferrer" - className="my-auto mx-4 flex h-12 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100" + className="my-auto mx-4 flex h-9 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100" > - link + link

Discord

@@ -338,9 +360,9 @@ export default function Navigation() { href="https://github.com/arc53/DocsGPT" target="_blank" rel="noreferrer" - className="my-auto mx-4 flex h-12 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100" + className="my-auto mx-4 flex h-9 cursor-pointer gap-4 rounded-3xl hover:bg-gray-100" > - link + link

Github

diff --git a/frontend/src/assets/discord.svg b/frontend/src/assets/discord.svg new file mode 100644 index 00000000..ca54be77 --- /dev/null +++ b/frontend/src/assets/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/src/assets/github.svg b/frontend/src/assets/github.svg new file mode 100644 index 00000000..15e93c43 --- /dev/null +++ b/frontend/src/assets/github.svg @@ -0,0 +1,5 @@ + + github + + + \ No newline at end of file From 9c96a4d81bccb932f57c3658d99ffefeeddb8029 Mon Sep 17 00:00:00 2001 From: Aindree Chatterjee <68018372+aindree-2005@users.noreply.github.com> Date: Fri, 6 Oct 2023 12:28:32 +0530 Subject: [PATCH 02/59] Update About.tsx Text decorations added --- frontend/src/About.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/About.tsx b/frontend/src/About.tsx index 24da8134..07494e72 100644 --- a/frontend/src/About.tsx +++ b/frontend/src/About.tsx @@ -12,7 +12,7 @@ export default function About() {

Find the information in your documentation through AI-powered

- Currently It uses DocsGPT documentation, so it will respond to - information relevant to DocsGPT. If you want to train it on different + Currently It uses DocsGPT documentation, so it will respond to + information relevant to DocsGPT . If you want to train it on different documentation - please follow If you want to launch it on your own server - follow Date: Fri, 6 Oct 2023 16:19:05 +0530 Subject: [PATCH 03/59] Update About.tsx --- frontend/src/About.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/About.tsx b/frontend/src/About.tsx index 07494e72..034fe805 100644 --- a/frontend/src/About.tsx +++ b/frontend/src/About.tsx @@ -51,8 +51,8 @@ export default function About() {

- Currently It uses DocsGPT documentation, so it will respond to - information relevant to DocsGPT . If you want to train it on different + Currently It uses DocsGPT documentation, so it will respond to + information relevant to DocsGPT . If you want to train it on different documentation - please follow Date: Fri, 6 Oct 2023 18:01:50 +0530 Subject: [PATCH 04/59] Update README.md -- Fixed ##453 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit βœ… Added code of conduct section to documentation. βœ… Added license section into the repository. βœ… Fixed some Typos. --- README.md | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index aba1401f..f9a04ae3 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ When deploying your DocsGPT to a live environment, we're eager to provide person You can find our [Roadmap](https://github.com/orgs/arc53/projects/2) here. Please don't hesitate to contribute or create issues, it helps us make DocsGPT better! -## Our Open-Source models optimised for DocsGPT: +## Our Open-Source models optimized for DocsGPT: | Name | Base Model | Requirements (or similar) | |-------------------|------------|----------------------------------------------------------| @@ -47,7 +47,7 @@ You can find our [Roadmap](https://github.com/orgs/arc53/projects/2) here. Pleas | [Docsgpt-40b-falcon](https://huggingface.co/Arc53/docsgpt-40b-falcon) | falcon-40b | 8xA10G gpu's | -If you don't have enough resources to run it you can use bitsnbytes to quantize +If you don't have enough resources to run it you can use bits bytes to quantize. ## Features @@ -72,11 +72,11 @@ If you don't have enough resources to run it you can use bitsnbytes to quantize ## Project structure - Application - Flask app (main application) -- Extensions - Chrome extension +- Extensions - Chrome extension. -- Scripts - Script that creates similarity search index and store for other libraries. +- Scripts - Script that creates similarity search index and stores for other libraries. -- Frontend - Frontend uses Vite and React +- Frontend - Frontend uses Vite and React. ## QuickStart @@ -86,9 +86,9 @@ On Mac OS or Linux just write: `./setup.sh` -It will install all the dependencies and give you an option to download local model or use OpenAI +It will install all the dependencies and give you the option to download the local model or use OpenAI -Otherwise refer to this Guide: +Otherwise, refer to this Guide: 1. Download and open this repository with `git clone https://github.com/arc53/DocsGPT.git` 2. Create a .env file in your root directory and set the env variable OPENAI_API_KEY with your OpenAI API key and VITE_API_STREAMING to true or false, depending on if you want streaming answers or not @@ -107,12 +107,12 @@ To stop just run Ctrl + C ## Development environments ### Spin up mongo and redis -For development only 2 containers are used from docker-compose.yaml (by deleting all services except for Redis and Mongo). +For development, only 2 containers are used from docker-compose.yaml (by deleting all services except for Redis and Mongo). See file [docker-compose-dev.yaml](./docker-compose-dev.yaml). Run ``` -docker compose -f docker-compose-dev.yaml build +docker-compose -f docker-compose-dev.yaml build docker compose -f docker-compose-dev.yaml up -d ``` @@ -120,18 +120,18 @@ docker compose -f docker-compose-dev.yaml up -d Make sure you have Python 3.10 or 3.11 installed. -1. Export required environment variables or prep .env file in application folder +1. Export required environment variables or prep .env file in the application folder Prepare .env file Copy `.env_sample` and create `.env` with your OpenAI API token for the API_KEY and EMBEDDINGS_KEY fields (check out application/core/settings.py if you want to see more config options) 3. (optional) Create a Python virtual environment -```commandline +```command line python -m venv venv . venv/bin/activate ``` -4. Change to `application/` subdir and install dependencies for the backend -```commandline +4. Change to the `application/` sub dir and install dependencies for the backend +```command-line pip install -r application/requirements.txt ``` 5. Run the app `flask run --host=0.0.0.0 --port=7091` @@ -140,18 +140,27 @@ pip install -r application/requirements.txt ### Start frontend Make sure you have Node version 16 or higher. -1. Navigate to `/frontend` folder +1. Navigate to the `/frontend` folder 2. Install dependencies `npm install` 3. Run the app `npm run dev` +## Contributing + +Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) file for information about how to get involved. We welcome issues, questions, and pull requests. + +## Code Of Conduct +We as members, contributors, and leaders, pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. Please refer to the [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) file for more information about contributing. + ## All Thanks To Our Contributors +## License +The source code license is MIT, as described in the LICENSE file. -Built with [πŸ¦œοΈπŸ”— LangChain](https://github.com/hwchase17/langchain) +## Built with [πŸ¦œοΈπŸ”— LangChain](https://github.com/hwchase17/langchain) From 86c2f0716ea16ccc5c8d7179060147cf70859ae5 Mon Sep 17 00:00:00 2001 From: Adarsh Jha <132337675+adarsh-jha-dev@users.noreply.github.com> Date: Fri, 6 Oct 2023 19:36:48 +0530 Subject: [PATCH 05/59] Update conversationSlice.ts --- frontend/src/conversation/conversationSlice.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/src/conversation/conversationSlice.ts b/frontend/src/conversation/conversationSlice.ts index d1d4e19d..ffe402b0 100644 --- a/frontend/src/conversation/conversationSlice.ts +++ b/frontend/src/conversation/conversationSlice.ts @@ -142,14 +142,14 @@ export const conversationSlice = createSlice({ state, action: PayloadAction<{ index: number; query: Partial }>, ) { - const index = action.payload.index; - if (action.payload.query.response) { + const { index, query } = action.payload; + if (query.response) { state.queries[index].response = - (state.queries[index].response || '') + action.payload.query.response; + (state.queries[index].response || '') + query.response; } else { state.queries[index] = { ...state.queries[index], - ...action.payload.query, + ...query, }; } }, @@ -163,21 +163,21 @@ export const conversationSlice = createSlice({ state, action: PayloadAction<{ index: number; query: Partial }>, ) { - const index = action.payload.index; + const { index, query } = action.payload; if (!state.queries[index].sources) { - state.queries[index].sources = [action.payload.query.sources![0]]; + state.queries[index].sources = [query.sources![0]]; } else { - state.queries[index].sources!.push(action.payload.query.sources![0]); + state.queries[index].sources!.push(query.sources![0]); } }, updateQuery( state, action: PayloadAction<{ index: number; query: Partial }>, ) { - const index = action.payload.index; + const { index, query } = action.payload; state.queries[index] = { ...state.queries[index], - ...action.payload.query, + ...query, }; }, setStatus(state, action: PayloadAction) { From 32ea0213f7bcf05268b6e75953bb6d8212cf5fcd Mon Sep 17 00:00:00 2001 From: John Bampton Date: Fri, 6 Oct 2023 23:49:22 +1000 Subject: [PATCH 06/59] Remove unneeded duplicate words --- application/parser/file/html_parser.py | 2 +- docs/pages/Guides/How-to-train-on-other-documentation.md | 2 +- extensions/react-widget/dist/index.es.js | 2 +- extensions/react-widget/dist/index.es.js.map | 2 +- extensions/react-widget/dist/index.umd.js | 2 +- extensions/react-widget/dist/index.umd.js.map | 2 +- scripts/parser/file/html_parser.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/application/parser/file/html_parser.py b/application/parser/file/html_parser.py index 7c192b6a..2a74a97a 100644 --- a/application/parser/file/html_parser.py +++ b/application/parser/file/html_parser.py @@ -57,7 +57,7 @@ class HTMLParser(BaseParser): title_indexes = [i for i, isd_el in enumerate(isd) if isd_el['type'] == 'Title'] # Creating 'Chunks' - List of lists of strings - # each list starting with with isd_el['type'] = 'Title' and all the data till the next 'Title' + # each list starting with isd_el['type'] = 'Title' and all the data till the next 'Title' # Each Chunk can be thought of as an individual set of data, which can be sent to the model # Where Each Title is grouped together with the data under it diff --git a/docs/pages/Guides/How-to-train-on-other-documentation.md b/docs/pages/Guides/How-to-train-on-other-documentation.md index c9549aed..9f4e5032 100644 --- a/docs/pages/Guides/How-to-train-on-other-documentation.md +++ b/docs/pages/Guides/How-to-train-on-other-documentation.md @@ -41,7 +41,7 @@ You can learn more about options while running ingest.py by running: `python ingest.py --help` | Options | | |:--------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| -| **ingest** | Runs 'ingest' function converting documentation to to Faiss plus Index format | +| **ingest** | Runs 'ingest' function converting documentation to Faiss plus Index format | | --dir TEXT | List of paths to directory for index creation. E.g. --dir inputs --dir inputs2 [default: inputs] | | --file TEXT | File paths to use (Optional; overrides directory) E.g. --files inputs/1.md --files inputs/2.md | | --recursive / --no-recursive | Whether to recursively search in subdirectories [default: recursive] | diff --git a/extensions/react-widget/dist/index.es.js b/extensions/react-widget/dist/index.es.js index e63a3d21..3bf3cfb8 100644 --- a/extensions/react-widget/dist/index.es.js +++ b/extensions/react-widget/dist/index.es.js @@ -366,7 +366,7 @@ function fr() { } function ye(e) { if (Je(e)) - return g("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", qe(e)), ge(e); + return g("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", qe(e)), ge(e); } var W = O.ReactCurrentOwner, Be = { key: !0, diff --git a/extensions/react-widget/dist/index.es.js.map b/extensions/react-widget/dist/index.es.js.map index 77e8ba40..a4c7a985 100644 --- a/extensions/react-widget/dist/index.es.js.map +++ b/extensions/react-widget/dist/index.es.js.map @@ -1 +1 @@ -{"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/components/DocsGPTWidget.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its 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\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, attribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.

\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\nimport {useEffect, useRef, useState} from 'react'\n//import './style.css'\n\ninterface HistoryItem {\n prompt: string;\n response: string;\n}\n\ninterface FetchAnswerStreamingProps {\n question?: string;\n apiKey?: string;\n selectedDocs?: string;\n history?: HistoryItem[];\n conversationId?: string | null;\n apiHost?: string;\n onEvent?: (event: MessageEvent) => void;\n}\n\n\nenum ChatStates {\n Init = 'init',\n Processing = 'processing',\n Typing = 'typing',\n Answer = 'answer',\n Minimized = 'minimized',\n}\n\nfunction fetchAnswerStreaming({\n question = '',\n apiKey = '',\n selectedDocs = '',\n history = [],\n conversationId = null,\n apiHost = '',\n onEvent = () => {console.log(\"Event triggered, but no handler provided.\");}\n}: FetchAnswerStreamingProps): Promise {\n let docPath = 'default';\n if (selectedDocs) {\n docPath = selectedDocs;\n }\n\n return new Promise((resolve, reject) => {\n const body = {\n question: question,\n api_key: apiKey,\n embeddings_key: apiKey,\n active_docs: docPath,\n history: JSON.stringify(history),\n conversation_id: conversationId,\n model: 'default'\n };\n\n fetch(apiHost + '/stream', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (!response.body) throw Error('No response body');\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n let counterrr = 0;\n const processStream = ({\n done,\n value,\n }: ReadableStreamReadResult) => {\n if (done) {\n console.log(counterrr);\n resolve();\n return;\n }\n\n counterrr += 1;\n\n const chunk = decoder.decode(value);\n\n const lines = chunk.split('\\n');\n\n for (let line of lines) {\n if (line.trim() == '') {\n continue;\n }\n if (line.startsWith('data:')) {\n line = line.substring(5);\n }\n\n const messageEvent = new MessageEvent('message', {\n data: line,\n });\n\n onEvent(messageEvent); // handle each message\n }\n\n reader.read().then(processStream).catch(reject);\n };\n\n reader.read().then(processStream).catch(reject);\n })\n .catch((error) => {\n console.error('Connection failed:', error);\n reject(error);\n });\n });\n}\n\nexport const DocsGPTWidget = ({ apiHost = 'https://gptcloud.arc53.com', selectDocs = 'default', apiKey = 'docsgpt-public'}) => {\n // processing states\n const [chatState, setChatState] = useState(() => {\n if (typeof window !== 'undefined') {\n return localStorage.getItem('docsGPTChatState') as ChatStates || ChatStates.Init;\n }\n return ChatStates.Init;\n });\n\n const [answer, setAnswer] = useState('');\n\n //const selectDocs = 'local/1706.03762.pdf/'\n const answerRef = useRef(null);\n\n useEffect(() => {\n if (answerRef.current) {\n const element = answerRef.current;\n element.scrollTop = element.scrollHeight;\n }\n }, [answer]);\n\n useEffect(() => {\n localStorage.setItem('docsGPTChatState', chatState);\n }, [chatState]);\n\n\n\n // submit handler\n const handleSubmit = (e: React.FormEvent) => {\n setAnswer('')\n e.preventDefault()\n // get question\n setChatState(ChatStates.Processing)\n setTimeout(() => {\n setChatState(ChatStates.Answer)\n }, 800)\n const inputElement = e.currentTarget[0] as HTMLInputElement;\n const questionValue = inputElement.value;\n\n fetchAnswerStreaming({\n question: questionValue,\n apiKey: apiKey,\n selectedDocs: selectDocs,\n history: [],\n conversationId: null,\n apiHost: apiHost,\n onEvent: (event) => {\n const data = JSON.parse(event.data);\n\n // check if the 'end' event has been received\n if (data.type === 'end') {\n setChatState(ChatStates.Answer)\n } else if (data.type === 'source') {\n // check if data.metadata exists\n let result;\n if (data.metadata && data.metadata.title) {\n const titleParts = data.metadata.title.split('/');\n result = {\n title: titleParts[titleParts.length - 1],\n text: data.doc,\n };\n } else {\n result = { title: data.doc, text: data.doc };\n }\n console.log(result)\n\n } else if (data.type === 'id') {\n console.log(data.id);\n } else {\n const result = data.answer;\n // set answer by appending answer\n setAnswer(prevAnswer => prevAnswer + result);\n }\n },\n });\n }\n\n return (\n <>\n
\n
setChatState(ChatStates.Init)}\n className={`${chatState !== 'minimized' ? 'hidden' : ''} cursor-pointer`}>\n
\n \n
\n
\n
\n
\n {\n event.stopPropagation();\n setChatState(ChatStates.Minimized);\n }}\n />\n
\n
\n

Need help with documentation?

\n

DocsGPT AI assistant will help you with docs

\n
\n
\n

{answer}

\n
\n
\n
\n
\n \n { (chatState === 'typing' || chatState === 'answer') && (\n \n \n \n \n )}\n

\n Processing...\n

\n
\n
\n
\n\n \n )\n}"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","fileName","lineNumber","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","fetchAnswerStreaming","question","apiKey","selectedDocs","history","conversationId","apiHost","onEvent","docPath","resolve","reject","body","response","reader","decoder","counterrr","processStream","done","lines","line","messageEvent","DocsGPTWidget","selectDocs","chatState","setChatState","useState","answer","setAnswer","answerRef","useRef","useEffect","handleSubmit","questionValue","event","data","result","titleParts","prevAnswer","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2]} +{"version":3,"file":"index.es.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/components/DocsGPTWidget.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its 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\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, attribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\nimport {useEffect, useRef, useState} from 'react'\n//import './style.css'\n\ninterface HistoryItem {\n prompt: string;\n response: string;\n}\n\ninterface FetchAnswerStreamingProps {\n question?: string;\n apiKey?: string;\n selectedDocs?: string;\n history?: HistoryItem[];\n conversationId?: string | null;\n apiHost?: string;\n onEvent?: (event: MessageEvent) => void;\n}\n\n\nenum ChatStates {\n Init = 'init',\n Processing = 'processing',\n Typing = 'typing',\n Answer = 'answer',\n Minimized = 'minimized',\n}\n\nfunction fetchAnswerStreaming({\n question = '',\n apiKey = '',\n selectedDocs = '',\n history = [],\n conversationId = null,\n apiHost = '',\n onEvent = () => {console.log(\"Event triggered, but no handler provided.\");}\n}: FetchAnswerStreamingProps): Promise {\n let docPath = 'default';\n if (selectedDocs) {\n docPath = selectedDocs;\n }\n\n return new Promise((resolve, reject) => {\n const body = {\n question: question,\n api_key: apiKey,\n embeddings_key: apiKey,\n active_docs: docPath,\n history: JSON.stringify(history),\n conversation_id: conversationId,\n model: 'default'\n };\n\n fetch(apiHost + '/stream', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (!response.body) throw Error('No response body');\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n let counterrr = 0;\n const processStream = ({\n done,\n value,\n }: ReadableStreamReadResult) => {\n if (done) {\n console.log(counterrr);\n resolve();\n return;\n }\n\n counterrr += 1;\n\n const chunk = decoder.decode(value);\n\n const lines = chunk.split('\\n');\n\n for (let line of lines) {\n if (line.trim() == '') {\n continue;\n }\n if (line.startsWith('data:')) {\n line = line.substring(5);\n }\n\n const messageEvent = new MessageEvent('message', {\n data: line,\n });\n\n onEvent(messageEvent); // handle each message\n }\n\n reader.read().then(processStream).catch(reject);\n };\n\n reader.read().then(processStream).catch(reject);\n })\n .catch((error) => {\n console.error('Connection failed:', error);\n reject(error);\n });\n });\n}\n\nexport const DocsGPTWidget = ({ apiHost = 'https://gptcloud.arc53.com', selectDocs = 'default', apiKey = 'docsgpt-public'}) => {\n // processing states\n const [chatState, setChatState] = useState(() => {\n if (typeof window !== 'undefined') {\n return localStorage.getItem('docsGPTChatState') as ChatStates || ChatStates.Init;\n }\n return ChatStates.Init;\n });\n\n const [answer, setAnswer] = useState('');\n\n //const selectDocs = 'local/1706.03762.pdf/'\n const answerRef = useRef(null);\n\n useEffect(() => {\n if (answerRef.current) {\n const element = answerRef.current;\n element.scrollTop = element.scrollHeight;\n }\n }, [answer]);\n\n useEffect(() => {\n localStorage.setItem('docsGPTChatState', chatState);\n }, [chatState]);\n\n\n\n // submit handler\n const handleSubmit = (e: React.FormEvent) => {\n setAnswer('')\n e.preventDefault()\n // get question\n setChatState(ChatStates.Processing)\n setTimeout(() => {\n setChatState(ChatStates.Answer)\n }, 800)\n const inputElement = e.currentTarget[0] as HTMLInputElement;\n const questionValue = inputElement.value;\n\n fetchAnswerStreaming({\n question: questionValue,\n apiKey: apiKey,\n selectedDocs: selectDocs,\n history: [],\n conversationId: null,\n apiHost: apiHost,\n onEvent: (event) => {\n const data = JSON.parse(event.data);\n\n // check if the 'end' event has been received\n if (data.type === 'end') {\n setChatState(ChatStates.Answer)\n } else if (data.type === 'source') {\n // check if data.metadata exists\n let result;\n if (data.metadata && data.metadata.title) {\n const titleParts = data.metadata.title.split('/');\n result = {\n title: titleParts[titleParts.length - 1],\n text: data.doc,\n };\n } else {\n result = { title: data.doc, text: data.doc };\n }\n console.log(result)\n\n } else if (data.type === 'id') {\n console.log(data.id);\n } else {\n const result = data.answer;\n // set answer by appending answer\n setAnswer(prevAnswer => prevAnswer + result);\n }\n },\n });\n }\n\n return (\n <>\n
\n
setChatState(ChatStates.Init)}\n className={`${chatState !== 'minimized' ? 'hidden' : ''} cursor-pointer`}>\n
\n \n
\n
\n
\n
\n {\n event.stopPropagation();\n setChatState(ChatStates.Minimized);\n }}\n />\n
\n
\n

Need help with documentation?

\n

DocsGPT AI assistant will help you with docs

\n
\n
\n

{answer}

\n
\n
\n
\n
\n \n { (chatState === 'typing' || chatState === 'answer') && (\n \n \n \n \n )}\n

\n Processing...\n

\n
\n
\n
\n\n \n )\n}"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","fileName","lineNumber","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","fetchAnswerStreaming","question","apiKey","selectedDocs","history","conversationId","apiHost","onEvent","docPath","resolve","reject","body","response","reader","decoder","counterrr","processStream","done","lines","line","messageEvent","DocsGPTWidget","selectDocs","chatState","setChatState","useState","answer","setAnswer","answerRef","useRef","useEffect","handleSubmit","questionValue","event","data","result","titleParts","prevAnswer","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2]} diff --git a/extensions/react-widget/dist/index.umd.js b/extensions/react-widget/dist/index.umd.js index b01917a7..33f32c65 100644 --- a/extensions/react-widget/dist/index.umd.js +++ b/extensions/react-widget/dist/index.umd.js @@ -18,7 +18,7 @@ `+Q+e}}var ee=!1,G;{var Ue=typeof WeakMap=="function"?WeakMap:Map;G=new Ue}function ye(e,r){if(!e||ee)return"";{var t=G.get(e);if(t!==void 0)return t}var n;ee=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var s;s=Z.current,Z.current=null,Me();try{if(r){var i=function(){throw Error()};if(Object.defineProperty(i.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(i,[])}catch(C){n=C}Reflect.construct(e,[],i)}else{try{i.call()}catch(C){n=C}e.call(i.prototype)}}else{try{throw Error()}catch(C){n=C}e()}}catch(C){if(C&&n&&typeof C.stack=="string"){for(var a=C.stack.split(` `),y=n.stack.split(` `),c=a.length-1,f=y.length-1;c>=1&&f>=0&&a[c]!==y[f];)f--;for(;c>=1&&f>=0;c--,f--)if(a[c]!==y[f]){if(c!==1||f!==1)do if(c--,f--,f<0||a[c]!==y[f]){var _=` -`+a[c].replace(" at new "," at ");return e.displayName&&_.includes("")&&(_=_.replace("",e.displayName)),typeof e=="function"&&G.set(e,_),_}while(c>=1&&f>=0);break}}}finally{ee=!1,Z.current=s,$e(),Error.prepareStackTrace=o}var Y=e?e.displayName||e.name:"",Oe=Y?U(Y):"";return typeof e=="function"&&G.set(e,Oe),Oe}function Ge(e,r,t){return ye(e,!1)}function Be(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function B(e,r,t){if(e==null)return"";if(typeof e=="function")return ye(e,Be(e));if(typeof e=="string")return U(e);switch(e){case v:return U("Suspense");case m:return U("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case d:return Ge(e.render);case h:return B(e.type,r,t);case x:{var n=e,o=n._payload,s=n._init;try{return B(s(o),r,t)}catch{}}}return""}var J=Object.prototype.hasOwnProperty,be={},Ee=D.ReactDebugCurrentFrame;function z(e){if(e){var r=e._owner,t=B(e.type,e._source,r?r.type:null);Ee.setExtraStackFrame(t)}else Ee.setExtraStackFrame(null)}function Je(e,r,t,n,o){{var s=Function.call.bind(J);for(var i in e)if(s(e,i)){var a=void 0;try{if(typeof e[i]!="function"){var y=Error((n||"React class")+": "+t+" type `"+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[i]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw y.name="Invariant Violation",y}a=e[i](r,i,n,t,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(c){a=c}a&&!(a instanceof Error)&&(z(o),g("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",n||"React class",t,i,typeof a),z(null)),a instanceof Error&&!(a.message in be)&&(be[a.message]=!0,z(o),g("Failed %s type: %s",t,a.message),z(null))}}}var ze=Array.isArray;function re(e){return ze(e)}function qe(e){{var r=typeof Symbol=="function"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t}}function He(e){try{return xe(e),!1}catch{return!0}}function xe(e){return""+e}function _e(e){if(He(e))return g("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",qe(e)),xe(e)}var $=D.ReactCurrentOwner,Ke={key:!0,ref:!0,__self:!0,__source:!0},Re,we,te;te={};function Xe(e){if(J.call(e,"ref")){var r=Object.getOwnPropertyDescriptor(e,"ref").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function Ze(e){if(J.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Qe(e,r){if(typeof e.ref=="string"&&$.current&&r&&$.current.stateNode!==r){var t=k($.current.type);te[t]||(g('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',k($.current.type),e.ref),te[t]=!0)}}function er(e,r){{var t=function(){Re||(Re=!0,g("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}}function rr(e,r){{var t=function(){we||(we=!0,g("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};t.isReactWarning=!0,Object.defineProperty(e,"ref",{get:t,configurable:!0})}}var tr=function(e,r,t,n,o,s,i){var a={$$typeof:T,type:e,key:r,ref:t,props:i,_owner:s};return a._store={},Object.defineProperty(a._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,"_self",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,"_source",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function nr(e,r,t,n,o){{var s,i={},a=null,y=null;t!==void 0&&(_e(t),a=""+t),Ze(r)&&(_e(r.key),a=""+r.key),Xe(r)&&(y=r.ref,Qe(r,o));for(s in r)J.call(r,s)&&!Ke.hasOwnProperty(s)&&(i[s]=r[s]);if(e&&e.defaultProps){var c=e.defaultProps;for(s in c)i[s]===void 0&&(i[s]=c[s])}if(a||y){var f=typeof e=="function"?e.displayName||e.name||"Unknown":e;a&&er(i,f),y&&rr(i,f)}return tr(e,a,y,o,n,$.current,i)}}var ne=D.ReactCurrentOwner,Te=D.ReactDebugCurrentFrame;function W(e){if(e){var r=e._owner,t=B(e.type,e._source,r?r.type:null);Te.setExtraStackFrame(t)}else Te.setExtraStackFrame(null)}var ae;ae=!1;function ie(e){return typeof e=="object"&&e!==null&&e.$$typeof===T}function Se(){{if(ne.current){var e=k(ne.current.type);if(e)return` +`+a[c].replace(" at new "," at ");return e.displayName&&_.includes("")&&(_=_.replace("",e.displayName)),typeof e=="function"&&G.set(e,_),_}while(c>=1&&f>=0);break}}}finally{ee=!1,Z.current=s,$e(),Error.prepareStackTrace=o}var Y=e?e.displayName||e.name:"",Oe=Y?U(Y):"";return typeof e=="function"&&G.set(e,Oe),Oe}function Ge(e,r,t){return ye(e,!1)}function Be(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function B(e,r,t){if(e==null)return"";if(typeof e=="function")return ye(e,Be(e));if(typeof e=="string")return U(e);switch(e){case v:return U("Suspense");case m:return U("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case d:return Ge(e.render);case h:return B(e.type,r,t);case x:{var n=e,o=n._payload,s=n._init;try{return B(s(o),r,t)}catch{}}}return""}var J=Object.prototype.hasOwnProperty,be={},Ee=D.ReactDebugCurrentFrame;function z(e){if(e){var r=e._owner,t=B(e.type,e._source,r?r.type:null);Ee.setExtraStackFrame(t)}else Ee.setExtraStackFrame(null)}function Je(e,r,t,n,o){{var s=Function.call.bind(J);for(var i in e)if(s(e,i)){var a=void 0;try{if(typeof e[i]!="function"){var y=Error((n||"React class")+": "+t+" type `"+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[i]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw y.name="Invariant Violation",y}a=e[i](r,i,n,t,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(c){a=c}a&&!(a instanceof Error)&&(z(o),g("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",n||"React class",t,i,typeof a),z(null)),a instanceof Error&&!(a.message in be)&&(be[a.message]=!0,z(o),g("Failed %s type: %s",t,a.message),z(null))}}}var ze=Array.isArray;function re(e){return ze(e)}function qe(e){{var r=typeof Symbol=="function"&&Symbol.toStringTag,t=r&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t}}function He(e){try{return xe(e),!1}catch{return!0}}function xe(e){return""+e}function _e(e){if(He(e))return g("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",qe(e)),xe(e)}var $=D.ReactCurrentOwner,Ke={key:!0,ref:!0,__self:!0,__source:!0},Re,we,te;te={};function Xe(e){if(J.call(e,"ref")){var r=Object.getOwnPropertyDescriptor(e,"ref").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function Ze(e){if(J.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function Qe(e,r){if(typeof e.ref=="string"&&$.current&&r&&$.current.stateNode!==r){var t=k($.current.type);te[t]||(g('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref',k($.current.type),e.ref),te[t]=!0)}}function er(e,r){{var t=function(){Re||(Re=!0,g("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}}function rr(e,r){{var t=function(){we||(we=!0,g("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",r))};t.isReactWarning=!0,Object.defineProperty(e,"ref",{get:t,configurable:!0})}}var tr=function(e,r,t,n,o,s,i){var a={$$typeof:T,type:e,key:r,ref:t,props:i,_owner:s};return a._store={},Object.defineProperty(a._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(a,"_self",{configurable:!1,enumerable:!1,writable:!1,value:n}),Object.defineProperty(a,"_source",{configurable:!1,enumerable:!1,writable:!1,value:o}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a};function nr(e,r,t,n,o){{var s,i={},a=null,y=null;t!==void 0&&(_e(t),a=""+t),Ze(r)&&(_e(r.key),a=""+r.key),Xe(r)&&(y=r.ref,Qe(r,o));for(s in r)J.call(r,s)&&!Ke.hasOwnProperty(s)&&(i[s]=r[s]);if(e&&e.defaultProps){var c=e.defaultProps;for(s in c)i[s]===void 0&&(i[s]=c[s])}if(a||y){var f=typeof e=="function"?e.displayName||e.name||"Unknown":e;a&&er(i,f),y&&rr(i,f)}return tr(e,a,y,o,n,$.current,i)}}var ne=D.ReactCurrentOwner,Te=D.ReactDebugCurrentFrame;function W(e){if(e){var r=e._owner,t=B(e.type,e._source,r?r.type:null);Te.setExtraStackFrame(t)}else Te.setExtraStackFrame(null)}var ae;ae=!1;function ie(e){return typeof e=="object"&&e!==null&&e.$$typeof===T}function Se(){{if(ne.current){var e=k(ne.current.type);if(e)return` Check the render method of \``+e+"`."}return""}}function ar(e){{if(e!==void 0){var r=e.fileName.replace(/^.*[\\\/]/,""),t=e.lineNumber;return` diff --git a/extensions/react-widget/dist/index.umd.js.map b/extensions/react-widget/dist/index.umd.js.map index 4152dc2d..f224b750 100644 --- a/extensions/react-widget/dist/index.umd.js.map +++ b/extensions/react-widget/dist/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/components/DocsGPTWidget.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its 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\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, attribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\nimport {useEffect, useRef, useState} from 'react'\n//import './style.css'\n\ninterface HistoryItem {\n prompt: string;\n response: string;\n}\n\ninterface FetchAnswerStreamingProps {\n question?: string;\n apiKey?: string;\n selectedDocs?: string;\n history?: HistoryItem[];\n conversationId?: string | null;\n apiHost?: string;\n onEvent?: (event: MessageEvent) => void;\n}\n\n\nenum ChatStates {\n Init = 'init',\n Processing = 'processing',\n Typing = 'typing',\n Answer = 'answer',\n Minimized = 'minimized',\n}\n\nfunction fetchAnswerStreaming({\n question = '',\n apiKey = '',\n selectedDocs = '',\n history = [],\n conversationId = null,\n apiHost = '',\n onEvent = () => {console.log(\"Event triggered, but no handler provided.\");}\n}: FetchAnswerStreamingProps): Promise {\n let docPath = 'default';\n if (selectedDocs) {\n docPath = selectedDocs;\n }\n\n return new Promise((resolve, reject) => {\n const body = {\n question: question,\n api_key: apiKey,\n embeddings_key: apiKey,\n active_docs: docPath,\n history: JSON.stringify(history),\n conversation_id: conversationId,\n model: 'default'\n };\n\n fetch(apiHost + '/stream', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (!response.body) throw Error('No response body');\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n let counterrr = 0;\n const processStream = ({\n done,\n value,\n }: ReadableStreamReadResult) => {\n if (done) {\n console.log(counterrr);\n resolve();\n return;\n }\n\n counterrr += 1;\n\n const chunk = decoder.decode(value);\n\n const lines = chunk.split('\\n');\n\n for (let line of lines) {\n if (line.trim() == '') {\n continue;\n }\n if (line.startsWith('data:')) {\n line = line.substring(5);\n }\n\n const messageEvent = new MessageEvent('message', {\n data: line,\n });\n\n onEvent(messageEvent); // handle each message\n }\n\n reader.read().then(processStream).catch(reject);\n };\n\n reader.read().then(processStream).catch(reject);\n })\n .catch((error) => {\n console.error('Connection failed:', error);\n reject(error);\n });\n });\n}\n\nexport const DocsGPTWidget = ({ apiHost = 'https://gptcloud.arc53.com', selectDocs = 'default', apiKey = 'docsgpt-public'}) => {\n // processing states\n const [chatState, setChatState] = useState(() => {\n if (typeof window !== 'undefined') {\n return localStorage.getItem('docsGPTChatState') as ChatStates || ChatStates.Init;\n }\n return ChatStates.Init;\n });\n\n const [answer, setAnswer] = useState('');\n\n //const selectDocs = 'local/1706.03762.pdf/'\n const answerRef = useRef(null);\n\n useEffect(() => {\n if (answerRef.current) {\n const element = answerRef.current;\n element.scrollTop = element.scrollHeight;\n }\n }, [answer]);\n\n useEffect(() => {\n localStorage.setItem('docsGPTChatState', chatState);\n }, [chatState]);\n\n\n\n // submit handler\n const handleSubmit = (e: React.FormEvent) => {\n setAnswer('')\n e.preventDefault()\n // get question\n setChatState(ChatStates.Processing)\n setTimeout(() => {\n setChatState(ChatStates.Answer)\n }, 800)\n const inputElement = e.currentTarget[0] as HTMLInputElement;\n const questionValue = inputElement.value;\n\n fetchAnswerStreaming({\n question: questionValue,\n apiKey: apiKey,\n selectedDocs: selectDocs,\n history: [],\n conversationId: null,\n apiHost: apiHost,\n onEvent: (event) => {\n const data = JSON.parse(event.data);\n\n // check if the 'end' event has been received\n if (data.type === 'end') {\n setChatState(ChatStates.Answer)\n } else if (data.type === 'source') {\n // check if data.metadata exists\n let result;\n if (data.metadata && data.metadata.title) {\n const titleParts = data.metadata.title.split('/');\n result = {\n title: titleParts[titleParts.length - 1],\n text: data.doc,\n };\n } else {\n result = { title: data.doc, text: data.doc };\n }\n console.log(result)\n\n } else if (data.type === 'id') {\n console.log(data.id);\n } else {\n const result = data.answer;\n // set answer by appending answer\n setAnswer(prevAnswer => prevAnswer + result);\n }\n },\n });\n }\n\n return (\n <>\n
\n
setChatState(ChatStates.Init)}\n className={`${chatState !== 'minimized' ? 'hidden' : ''} cursor-pointer`}>\n
\n \n
\n
\n
\n
\n {\n event.stopPropagation();\n setChatState(ChatStates.Minimized);\n }}\n />\n
\n
\n

Need help with documentation?

\n

DocsGPT AI assistant will help you with docs

\n
\n
\n

{answer}

\n
\n
\n
\n
\n \n { (chatState === 'typing' || chatState === 'answer') && (\n \n \n \n \n )}\n

\n Processing...\n

\n
\n
\n
\n\n \n )\n}"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","fileName","lineNumber","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","fetchAnswerStreaming","question","apiKey","selectedDocs","history","conversationId","apiHost","onEvent","docPath","resolve","reject","body","response","reader","decoder","counterrr","processStream","done","lines","line","messageEvent","DocsGPTWidget","selectDocs","chatState","setChatState","useState","answer","setAnswer","answerRef","useRef","useEffect","handleSubmit","questionValue","event","data","result","titleParts","prevAnswer","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2]} +{"version":3,"file":"index.umd.js","sources":["../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/components/DocsGPTWidget.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its 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\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('')) {\n _frame = _frame.replace('', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, attribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie.
\n // or
). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n //
, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use client\";\nimport {useEffect, useRef, useState} from 'react'\n//import './style.css'\n\ninterface HistoryItem {\n prompt: string;\n response: string;\n}\n\ninterface FetchAnswerStreamingProps {\n question?: string;\n apiKey?: string;\n selectedDocs?: string;\n history?: HistoryItem[];\n conversationId?: string | null;\n apiHost?: string;\n onEvent?: (event: MessageEvent) => void;\n}\n\n\nenum ChatStates {\n Init = 'init',\n Processing = 'processing',\n Typing = 'typing',\n Answer = 'answer',\n Minimized = 'minimized',\n}\n\nfunction fetchAnswerStreaming({\n question = '',\n apiKey = '',\n selectedDocs = '',\n history = [],\n conversationId = null,\n apiHost = '',\n onEvent = () => {console.log(\"Event triggered, but no handler provided.\");}\n}: FetchAnswerStreamingProps): Promise {\n let docPath = 'default';\n if (selectedDocs) {\n docPath = selectedDocs;\n }\n\n return new Promise((resolve, reject) => {\n const body = {\n question: question,\n api_key: apiKey,\n embeddings_key: apiKey,\n active_docs: docPath,\n history: JSON.stringify(history),\n conversation_id: conversationId,\n model: 'default'\n };\n\n fetch(apiHost + '/stream', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (!response.body) throw Error('No response body');\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder('utf-8');\n let counterrr = 0;\n const processStream = ({\n done,\n value,\n }: ReadableStreamReadResult) => {\n if (done) {\n console.log(counterrr);\n resolve();\n return;\n }\n\n counterrr += 1;\n\n const chunk = decoder.decode(value);\n\n const lines = chunk.split('\\n');\n\n for (let line of lines) {\n if (line.trim() == '') {\n continue;\n }\n if (line.startsWith('data:')) {\n line = line.substring(5);\n }\n\n const messageEvent = new MessageEvent('message', {\n data: line,\n });\n\n onEvent(messageEvent); // handle each message\n }\n\n reader.read().then(processStream).catch(reject);\n };\n\n reader.read().then(processStream).catch(reject);\n })\n .catch((error) => {\n console.error('Connection failed:', error);\n reject(error);\n });\n });\n}\n\nexport const DocsGPTWidget = ({ apiHost = 'https://gptcloud.arc53.com', selectDocs = 'default', apiKey = 'docsgpt-public'}) => {\n // processing states\n const [chatState, setChatState] = useState(() => {\n if (typeof window !== 'undefined') {\n return localStorage.getItem('docsGPTChatState') as ChatStates || ChatStates.Init;\n }\n return ChatStates.Init;\n });\n\n const [answer, setAnswer] = useState('');\n\n //const selectDocs = 'local/1706.03762.pdf/'\n const answerRef = useRef(null);\n\n useEffect(() => {\n if (answerRef.current) {\n const element = answerRef.current;\n element.scrollTop = element.scrollHeight;\n }\n }, [answer]);\n\n useEffect(() => {\n localStorage.setItem('docsGPTChatState', chatState);\n }, [chatState]);\n\n\n\n // submit handler\n const handleSubmit = (e: React.FormEvent) => {\n setAnswer('')\n e.preventDefault()\n // get question\n setChatState(ChatStates.Processing)\n setTimeout(() => {\n setChatState(ChatStates.Answer)\n }, 800)\n const inputElement = e.currentTarget[0] as HTMLInputElement;\n const questionValue = inputElement.value;\n\n fetchAnswerStreaming({\n question: questionValue,\n apiKey: apiKey,\n selectedDocs: selectDocs,\n history: [],\n conversationId: null,\n apiHost: apiHost,\n onEvent: (event) => {\n const data = JSON.parse(event.data);\n\n // check if the 'end' event has been received\n if (data.type === 'end') {\n setChatState(ChatStates.Answer)\n } else if (data.type === 'source') {\n // check if data.metadata exists\n let result;\n if (data.metadata && data.metadata.title) {\n const titleParts = data.metadata.title.split('/');\n result = {\n title: titleParts[titleParts.length - 1],\n text: data.doc,\n };\n } else {\n result = { title: data.doc, text: data.doc };\n }\n console.log(result)\n\n } else if (data.type === 'id') {\n console.log(data.id);\n } else {\n const result = data.answer;\n // set answer by appending answer\n setAnswer(prevAnswer => prevAnswer + result);\n }\n },\n });\n }\n\n return (\n <>\n
\n
setChatState(ChatStates.Init)}\n className={`${chatState !== 'minimized' ? 'hidden' : ''} cursor-pointer`}>\n
\n \n
\n
\n
\n
\n {\n event.stopPropagation();\n setChatState(ChatStates.Minimized);\n }}\n />\n
\n
\n

Need help with documentation?

\n

DocsGPT AI assistant will help you with docs

\n
\n
\n

{answer}

\n
\n
\n
\n
\n \n { (chatState === 'typing' || chatState === 'answer') && (\n \n \n \n \n )}\n

\n Processing...\n

\n
\n
\n
\n\n \n )\n}"],"names":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","didWarnAboutStringRefs","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","fileName","lineNumber","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","fetchAnswerStreaming","question","apiKey","selectedDocs","history","conversationId","apiHost","onEvent","docPath","resolve","reject","body","response","reader","decoder","counterrr","processStream","done","lines","line","messageEvent","DocsGPTWidget","selectDocs","chatState","setChatState","useState","answer","setAnswer","answerRef","useRef","useEffect","handleSubmit","questionValue","event","data","result","titleParts","prevAnswer","Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2]} diff --git a/scripts/parser/file/html_parser.py b/scripts/parser/file/html_parser.py index dfe2f8f5..71c95fef 100644 --- a/scripts/parser/file/html_parser.py +++ b/scripts/parser/file/html_parser.py @@ -57,7 +57,7 @@ class HTMLParser(BaseParser): title_indexes = [i for i, isd_el in enumerate(isd) if isd_el['type'] == 'Title'] # Creating 'Chunks' - List of lists of strings - # each list starting with with isd_el['type'] = 'Title' and all the data till the next 'Title' + # each list starting with isd_el['type'] = 'Title' and all the data till the next 'Title' # Each Chunk can be thought of as an individual set of data, which can be sent to the model # Where Each Title is grouped together with the data under it From 425a8a641204fa636b7b3ee1236161a1316b8cf6 Mon Sep 17 00:00:00 2001 From: Shuvadipta Das Date: Fri, 6 Oct 2023 21:39:18 +0530 Subject: [PATCH 07/59] Update How-to-train-on-other-documentation.md --- docs/pages/Guides/How-to-train-on-other-documentation.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/pages/Guides/How-to-train-on-other-documentation.md b/docs/pages/Guides/How-to-train-on-other-documentation.md index c9549aed..0a39929f 100644 --- a/docs/pages/Guides/How-to-train-on-other-documentation.md +++ b/docs/pages/Guides/How-to-train-on-other-documentation.md @@ -12,9 +12,9 @@ It currently uses OPEN_AI to create vector store, so make sure your documentatio You can usually find documentation on github in `docs/` folder for most open-source projects. ### 1. Find documentation in .rst/.md and create a folder with it in your scripts directory -Name it `inputs/` -Put all your .rst/.md files in there -The search is recursive, so you don't need to flatten them +- Name it `inputs/` +- Put all your .rst/.md files in there +- The search is recursive, so you don't need to flatten them If there are no .rst/.md files just convert whatever you find to txt and feed it. (don't forget to change the extension in script) @@ -56,4 +56,4 @@ You can learn more about options while running ingest.py by running: | | | | **convert** | Creates documentation in .md format from source code | | --dir TEXT | Path to a directory with source code. E.g. --dir inputs [default: inputs] | -| --formats TEXT | Source code language from which to create documentation. Supports py, js and java. E.g. --formats py [default: py] | \ No newline at end of file +| --formats TEXT | Source code language from which to create documentation. Supports py, js and java. E.g. --formats py [default: py] | From ab7f6e8300df498e09d464232135d563f4521551 Mon Sep 17 00:00:00 2001 From: staticGuru Date: Fri, 6 Oct 2023 23:42:22 +0530 Subject: [PATCH 08/59] Change the hero section with figma style --- frontend/src/Hero.tsx | 52 ++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/frontend/src/Hero.tsx b/frontend/src/Hero.tsx index 8ed80fcf..df0ad280 100644 --- a/frontend/src/Hero.tsx +++ b/frontend/src/Hero.tsx @@ -5,28 +5,26 @@ export default function Hero({ className = '' }: { className?: string }) {

DocsGPT

πŸ¦–

-

+

Welcome to DocsGPT, your technical documentation assistant!

-

+

Enter a query related to the information in the documentation you - selected to receive -
and we will provide you with the most relevant answers. + selected to receive and we will provide you with the most relevant + answers.

-

+

Start by entering your query in the input field below and we will do the rest!

-
-
-
- lock -

Chat with Your Data

-

+

+
+
+ lock +

+ Chat with Your Data +

+

DocsGPT will use your data to answer questions. Whether its documentation, source code, or Microsoft files, DocsGPT allows you to have interactive conversations and find answers based on the @@ -35,11 +33,13 @@ export default function Hero({ className = '' }: { className?: string }) {

-
-
- lock -

Secure Data Storage

-

+

+
+ lock +

+ Secure Data Storage +

+

The security of your data is our top priority. DocsGPT ensures the utmost protection for your sensitive information. With secure data storage and privacy measures in place, you can trust that your @@ -47,15 +47,17 @@ export default function Hero({ className = '' }: { className?: string }) {

-
-
+
+
lock -

Open Source Code

-

+

+ Open Source Code +

+

DocsGPT is built on open source principles, promoting transparency and collaboration. The source code is freely available, enabling developers to contribute, enhance, and customize the app to meet From 0585fb4c8098615213d2f55cde77063ca2fffffb Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Sat, 7 Oct 2023 11:21:55 +0530 Subject: [PATCH 09/59] synced the branch --- frontend/src/Hero.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/Hero.tsx b/frontend/src/Hero.tsx index 8ed80fcf..0644da67 100644 --- a/frontend/src/Hero.tsx +++ b/frontend/src/Hero.tsx @@ -48,7 +48,7 @@ export default function Hero({ className = '' }: { className?: string }) {

-
+
lock Date: Sat, 7 Oct 2023 11:39:51 +0530 Subject: [PATCH 10/59] add the additional div in the chat sections --- frontend/src/conversation/Conversation.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index ab435768..8d85f3c7 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -144,6 +144,7 @@ export default function Conversation() { ); })} + {hasScrolledToLast &&
}
)} {queries.length === 0 && ( From 0e496181a16bd011073fd1912200a2e226d0347d Mon Sep 17 00:00:00 2001 From: staticGuru Date: Sat, 7 Oct 2023 12:03:43 +0530 Subject: [PATCH 11/59] Fix the question input hidden issue --- frontend/src/conversation/Conversation.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index 8d85f3c7..e6b5d9cd 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -134,7 +134,7 @@ export default function Conversation() { return ( ); })} - {hasScrolledToLast &&
}
)} {queries.length === 0 && ( From 8323b8af4d9d7725a5c4ac7c1d3b9376e637866c Mon Sep 17 00:00:00 2001 From: staticGuru Date: Sat, 7 Oct 2023 12:13:05 +0530 Subject: [PATCH 12/59] Reset the input hidden issues --- frontend/src/conversation/Conversation.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index e6b5d9cd..ab435768 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -134,7 +134,7 @@ export default function Conversation() { return ( Date: Sat, 7 Oct 2023 12:20:47 +0530 Subject: [PATCH 13/59] add issue fixes --- frontend/src/Hero.tsx | 52 +++++++++++----------- frontend/src/conversation/Conversation.tsx | 2 +- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/frontend/src/Hero.tsx b/frontend/src/Hero.tsx index df0ad280..0644da67 100644 --- a/frontend/src/Hero.tsx +++ b/frontend/src/Hero.tsx @@ -5,26 +5,28 @@ export default function Hero({ className = '' }: { className?: string }) {

DocsGPT

πŸ¦–

-

+

Welcome to DocsGPT, your technical documentation assistant!

-

+

Enter a query related to the information in the documentation you - selected to receive and we will provide you with the most relevant - answers. + selected to receive +
and we will provide you with the most relevant answers.

-

+

Start by entering your query in the input field below and we will do the rest!

-
-
-
- lock -

- Chat with Your Data -

-

+

+
+
+ lock +

Chat with Your Data

+

DocsGPT will use your data to answer questions. Whether its documentation, source code, or Microsoft files, DocsGPT allows you to have interactive conversations and find answers based on the @@ -33,13 +35,11 @@ export default function Hero({ className = '' }: { className?: string }) {

-
-
- lock -

- Secure Data Storage -

-

+

+
+ lock +

Secure Data Storage

+

The security of your data is our top priority. DocsGPT ensures the utmost protection for your sensitive information. With secure data storage and privacy measures in place, you can trust that your @@ -47,17 +47,15 @@ export default function Hero({ className = '' }: { className?: string }) {

-
-
+
+
lock -

- Open Source Code -

-

+

Open Source Code

+

DocsGPT is built on open source principles, promoting transparency and collaboration. The source code is freely available, enabling developers to contribute, enhance, and customize the app to meet diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index ab435768..e6b5d9cd 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -134,7 +134,7 @@ export default function Conversation() { return ( Date: Sat, 7 Oct 2023 13:24:12 +0530 Subject: [PATCH 14/59] Fix: Sources feature doesn't look as intended --- frontend/src/conversation/ConversationBubble.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 2793a9bf..09238e29 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -131,7 +131,7 @@ const ConversationBubble = forwardRef< : 'text-[#007DFF]' }`} > - {index + 1}. {source.title} + {index + 1}. {source.title.substring(0, 45)}

))} @@ -173,15 +173,13 @@ const ConversationBubble = forwardRef<
{sources && openSource !== null && sources[openSource] && ( -
-

+

+

Source: {sources[openSource].title}

-
-

- {sources[openSource].text} -

+
+

{sources[openSource].text}

)} From ea49296cfe23dd3dbe5201073e899ff73b813545 Mon Sep 17 00:00:00 2001 From: Pratik Gupta <91310568+GuptaPratik02@users.noreply.github.com> Date: Sat, 7 Oct 2023 14:15:17 +0530 Subject: [PATCH 15/59] Update HACKTOBERFEST.md Improved the HACKTOBERFEST.md file. Fixed and added 7 links. --- HACKTOBERFEST.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/HACKTOBERFEST.md b/HACKTOBERFEST.md index 1a39e561..6265ddd3 100644 --- a/HACKTOBERFEST.md +++ b/HACKTOBERFEST.md @@ -17,14 +17,14 @@ Familiarize yourself with the current contributions and our [Roadmap](https://gi Deciding to contribute with code? Here are some insights based on the area of your interest: - Frontend (βš›οΈReact, Vite): - - Most of the code is located in `/frontend` folder. You can also check out our React extension in /extensions/react-widget. + - Most of the code is located in [/frontend](https://github.com/arc53/DocsGPT/tree/main/frontend) folder. You can also check out our React extension in [/extensions/react-widget](https://github.com/arc53/DocsGPT/tree/main/extensions/react-widget). - For design references, here's the [Figma](https://www.figma.com/file/OXLtrl1EAy885to6S69554/DocsGPT?node-id=0%3A1&t=hjWVuxRg9yi5YkJ9-1). - Ensure you adhere to the established guidelines. - Backend (🐍Python): - - Focus on `/application` or `/scripts`. However, avoid the files ingest_rst.py and ingest_rst_sphinx.py, as they will soon be deprecated. + - Focus on [/application](https://github.com/arc53/DocsGPT/tree/main/application) or [/scripts](https://github.com/arc53/DocsGPT/tree/main/scripts). However, avoid the files [ingest_rst.py](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst.py) and [ingest_rst_sphinx.py](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst_sphinx.py), as they will soon be deprecated. - Newly added code should come with relevant unit tests (pytest). - - Refer to the `/tests` folder for test suites. + - Refer to the [/tests](https://github.com/arc53/DocsGPT/tree/main/tests) folder for test suites. Check out our [Contributing Guidelines](https://github.com/arc53/DocsGPT/blob/main/CONTRIBUTING.md) From 74376586a809487ba6d3af59660fa6d93f4d12ad Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 7 Oct 2023 09:51:41 +0100 Subject: [PATCH 16/59] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index edeb7b66..d4499429 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Say goodbye to time-consuming manual searches, and let DocsGPT ### Production Support / Help for companies: We're eager to provide personalized assistance when deploying your DocsGPT to a live environment. -- [Schedule Demo πŸ‘‹](https://cal.com/arc53/docsgpt-demo-b2b?date=2023-10-04&month=2023-10) +- [Get Support πŸ‘‹](https://airtable.com/appdeaL0F1qV8Bl2C/shrrJF1Ll7btCJRbP) - [Send Email βœ‰οΈ](mailto:contact@arc53.com?subject=DocsGPT%20support%2Fsolutions) ### [πŸŽ‰ Join the Hacktoberfest with DocsGPT and Earn a Free T-shirt! πŸŽ‰](https://github.com/arc53/DocsGPT/blob/main/HACKTOBERFEST.md) From a8317ccacd9e786ff83e1602aced045da352b90a Mon Sep 17 00:00:00 2001 From: Pratik Gupta <91310568+GuptaPratik02@users.noreply.github.com> Date: Sat, 7 Oct 2023 14:37:54 +0530 Subject: [PATCH 17/59] Update README.md Fixed and added the necessary links in README file --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index edeb7b66..16706df1 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@

- DocsGPT is a cutting-edge open-source solution that streamlines the process of finding information in project documentation. With its integration of the powerful GPT models, developers can easily ask questions about a project and receive accurate answers. + DocsGPT is a cutting-edge open-source solution that streamlines the process of finding information in project documentation. With its integration of the powerful GPT models, developers can easily ask questions about a project and receive accurate answers. -Say goodbye to time-consuming manual searches, and let DocsGPT help you quickly find the information you need. Try it out and see how it revolutionizes your project documentation experience. Contribute to its development and be a part of the future of AI-powered assistance. +Say goodbye to time-consuming manual searches, and let DocsGPT help you quickly find the information you need. Try it out and see how it revolutionizes your project documentation experience. Contribute to its development and be a part of the future of AI-powered assistance.

@@ -89,15 +89,15 @@ It will install all the dependencies and allow you to download the local model o Otherwise, refer to this Guide: 1. Download and open this repository with `git clone https://github.com/arc53/DocsGPT.git` -2. Create a `.env` file in your root directory and set the env variable `OPENAI_API_KEY` with your OpenAI API key and `VITE_API_STREAMING` to true or false, depending on if you want streaming answers or not. +2. Create a `.env` file in your root directory and set the env variable `OPENAI_API_KEY` with your [OpenAI API key](https://platform.openai.com/account/api-keys) and `VITE_API_STREAMING` to true or false, depending on if you want streaming answers or not. It should look like this inside: ``` API_KEY=Yourkey VITE_API_STREAMING=true ``` - See optional environment variables in the `/.env-template` and `/application/.env_sample` files. -3. Run `./run-with-docker-compose.sh`. + See optional environment variables in the [/.env-template](https://github.com/arc53/DocsGPT/blob/main/.env-template) and [/application/.env_sample](https://github.com/arc53/DocsGPT/blob/main/application/.env_sample) files. +3. Run [./run-with-docker-compose.sh](https://github.com/arc53/DocsGPT/blob/main/run-with-docker-compose.sh). 4. Navigate to http://localhost:5173/. To stop, just run `Ctrl + C`. @@ -105,7 +105,7 @@ To stop, just run `Ctrl + C`. ## Development environments ### Spin up mongo and redis -For development, only two containers are used from `docker-compose.yaml` (by deleting all services except for Redis and Mongo). +For development, only two containers are used from [docker-compose.yaml](https://github.com/arc53/DocsGPT/blob/main/docker-compose.yaml) (by deleting all services except for Redis and Mongo). See file [docker-compose-dev.yaml](./docker-compose-dev.yaml). Run @@ -119,7 +119,7 @@ docker compose -f docker-compose-dev.yaml up -d Make sure you have Python 3.10 or 3.11 installed. 1. Export required environment variables or prepare a `.env` file in the `/application` folder: - - Copy `.env_sample` and create `.env` with your OpenAI API token for the `API_KEY` and `EMBEDDINGS_KEY` fields. + - Copy [.env_sample](https://github.com/arc53/DocsGPT/blob/main/application/.env_sample) and create `.env` with your OpenAI API token for the `API_KEY` and `EMBEDDINGS_KEY` fields. (check out [`application/core/settings.py`](application/core/settings.py) if you want to see more config options.) @@ -139,7 +139,7 @@ pip install -r application/requirements.txt Make sure you have Node version 16 or higher. -1. Navigate to the `/frontend` folder. +1. Navigate to the [/frontend](https://github.com/arc53/DocsGPT/tree/main/frontend) folder. 2. Install dependencies by running `npm install`. 3. Run the app using `npm run dev`. From e034fc12ebb171905f5e3312968f38dcd7082297 Mon Sep 17 00:00:00 2001 From: Pratik Gupta <91310568+GuptaPratik02@users.noreply.github.com> Date: Sat, 7 Oct 2023 14:46:56 +0530 Subject: [PATCH 18/59] Update CONTRIBUTING.md Fixed and added the necessary links in contributing file --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b759fd46..1e127f00 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,14 +25,14 @@ We have a frontend in React (Vite) and backend in Python. ### If you are looking to contribute to frontend (βš›οΈReact, Vite): -- The current frontend is being migrated from `/application` to `/frontend` with a new design, so please contribute to the new one. +- The current frontend is being migrated from [`/application`](https://github.com/arc53/DocsGPT/tree/main/application) to [`/frontend`](https://github.com/arc53/DocsGPT/tree/main/frontend) with a new design, so please contribute to the new one. - Check out this [milestone](https://github.com/arc53/DocsGPT/milestone/1) and its issues. - The Figma design can be found [here](https://www.figma.com/file/OXLtrl1EAy885to6S69554/DocsGPT?node-id=0%3A1&t=hjWVuxRg9yi5YkJ9-1). Please try to follow the guidelines. ### If you are looking to contribute to Backend (🐍 Python): -- Check out our issues and contribute to `/application` or `/scripts` (ignore old `ingest_rst.py` `ingest_rst_sphinx.py` files; they will be deprecated soon). +- Check out our issues and contribute to [`/application`](https://github.com/arc53/DocsGPT/tree/main/application) or [`/scripts`](https://github.com/arc53/DocsGPT/tree/main/scripts) (ignore old [`ingest_rst.py`](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst.py) [`ingest_rst_sphinx.py`](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst_sphinx.py) files; they will be deprecated soon). - All new code should be covered with unit tests ([pytest](https://github.com/pytest-dev/pytest)). Please find tests under [`/tests`](https://github.com/arc53/DocsGPT/tree/main/tests) folder. - Before submitting your PR, ensure it is queryable after ingesting some test data. From 66b5ac8ff1174605a7c1bf4bff58ab40085b7ccf Mon Sep 17 00:00:00 2001 From: Pratik Gupta <91310568+GuptaPratik02@users.noreply.github.com> Date: Sat, 7 Oct 2023 14:51:22 +0530 Subject: [PATCH 19/59] Update HACKTOBERFEST.md Improvements --- HACKTOBERFEST.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/HACKTOBERFEST.md b/HACKTOBERFEST.md index 6265ddd3..b1646619 100644 --- a/HACKTOBERFEST.md +++ b/HACKTOBERFEST.md @@ -17,14 +17,14 @@ Familiarize yourself with the current contributions and our [Roadmap](https://gi Deciding to contribute with code? Here are some insights based on the area of your interest: - Frontend (βš›οΈReact, Vite): - - Most of the code is located in [/frontend](https://github.com/arc53/DocsGPT/tree/main/frontend) folder. You can also check out our React extension in [/extensions/react-widget](https://github.com/arc53/DocsGPT/tree/main/extensions/react-widget). + - Most of the code is located in [`/frontend`](https://github.com/arc53/DocsGPT/tree/main/frontend) folder. You can also check out our React extension in [`/extensions/react-widget`](https://github.com/arc53/DocsGPT/tree/main/extensions/react-widget). - For design references, here's the [Figma](https://www.figma.com/file/OXLtrl1EAy885to6S69554/DocsGPT?node-id=0%3A1&t=hjWVuxRg9yi5YkJ9-1). - Ensure you adhere to the established guidelines. - Backend (🐍Python): - - Focus on [/application](https://github.com/arc53/DocsGPT/tree/main/application) or [/scripts](https://github.com/arc53/DocsGPT/tree/main/scripts). However, avoid the files [ingest_rst.py](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst.py) and [ingest_rst_sphinx.py](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst_sphinx.py), as they will soon be deprecated. + - Focus on [`/application`](https://github.com/arc53/DocsGPT/tree/main/application) or [`/scripts`](https://github.com/arc53/DocsGPT/tree/main/scripts). However, avoid the files [`ingest_rst.py`](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst.py) and [`ingest_rst_sphinx.py`](https://github.com/arc53/DocsGPT/blob/main/scripts/old/ingest_rst_sphinx.py), as they will soon be deprecated. - Newly added code should come with relevant unit tests (pytest). - - Refer to the [/tests](https://github.com/arc53/DocsGPT/tree/main/tests) folder for test suites. + - Refer to the [`/tests`](https://github.com/arc53/DocsGPT/tree/main/tests) folder for test suites. Check out our [Contributing Guidelines](https://github.com/arc53/DocsGPT/blob/main/CONTRIBUTING.md) From 8d6fbddd67adb97da1472123376518e20174c2ed Mon Sep 17 00:00:00 2001 From: Mohit Dhote <146939900+mohitd404@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:11:53 +0530 Subject: [PATCH 20/59] Update README.md #453 made the required changes #453 --- README.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index f9a04ae3..33db5b62 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ When deploying your DocsGPT to a live environment, we're eager to provide person You can find our [Roadmap](https://github.com/orgs/arc53/projects/2) here. Please don't hesitate to contribute or create issues, it helps us make DocsGPT better! -## Our Open-Source models optimized for DocsGPT: +## Our Open-Source models optimised for DocsGPT: | Name | Base Model | Requirements (or similar) | |-------------------|------------|----------------------------------------------------------| @@ -47,7 +47,7 @@ You can find our [Roadmap](https://github.com/orgs/arc53/projects/2) here. Pleas | [Docsgpt-40b-falcon](https://huggingface.co/Arc53/docsgpt-40b-falcon) | falcon-40b | 8xA10G gpu's | -If you don't have enough resources to run it you can use bits bytes to quantize. +If you don't have enough resources to run it you can use bitsnbytes to quantize ## Features @@ -72,11 +72,11 @@ If you don't have enough resources to run it you can use bits bytes to quantize. ## Project structure - Application - Flask app (main application) -- Extensions - Chrome extension. +- Extensions - Chrome extension -- Scripts - Script that creates similarity search index and stores for other libraries. +- Scripts - Script that creates similarity search index and store for other libraries. -- Frontend - Frontend uses Vite and React. +- Frontend - Frontend uses Vite and React ## QuickStart @@ -86,9 +86,9 @@ On Mac OS or Linux just write: `./setup.sh` -It will install all the dependencies and give you the option to download the local model or use OpenAI +It will install all the dependencies and give you an option to download local model or use OpenAI -Otherwise, refer to this Guide: +Otherwise refer to this Guide: 1. Download and open this repository with `git clone https://github.com/arc53/DocsGPT.git` 2. Create a .env file in your root directory and set the env variable OPENAI_API_KEY with your OpenAI API key and VITE_API_STREAMING to true or false, depending on if you want streaming answers or not @@ -107,7 +107,7 @@ To stop just run Ctrl + C ## Development environments ### Spin up mongo and redis -For development, only 2 containers are used from docker-compose.yaml (by deleting all services except for Redis and Mongo). +For development only 2 containers are used from docker-compose.yaml (by deleting all services except for Redis and Mongo). See file [docker-compose-dev.yaml](./docker-compose-dev.yaml). Run @@ -120,7 +120,7 @@ docker compose -f docker-compose-dev.yaml up -d Make sure you have Python 3.10 or 3.11 installed. -1. Export required environment variables or prep .env file in the application folder +1. Export required environment variables or prep .env file in application folder Prepare .env file Copy `.env_sample` and create `.env` with your OpenAI API token for the API_KEY and EMBEDDINGS_KEY fields @@ -130,8 +130,8 @@ Copy `.env_sample` and create `.env` with your OpenAI API token for the API_KEY python -m venv venv . venv/bin/activate ``` -4. Change to the `application/` sub dir and install dependencies for the backend -```command-line +4. Change to `application/` subdir and install dependencies for the backend +```commandline pip install -r application/requirements.txt ``` 5. Run the app `flask run --host=0.0.0.0 --port=7091` @@ -140,14 +140,13 @@ pip install -r application/requirements.txt ### Start frontend Make sure you have Node version 16 or higher. -1. Navigate to the `/frontend` folder +1. Navigate to `/frontend` folder 2. Install dependencies `npm install` 3. Run the app `npm run dev` ## Contributing - Please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) file for information about how to get involved. We welcome issues, questions, and pull requests. ## Code Of Conduct @@ -162,5 +161,5 @@ We as members, contributors, and leaders, pledge to make participation in our co ## License The source code license is MIT, as described in the LICENSE file. -## Built with [πŸ¦œοΈπŸ”— LangChain](https://github.com/hwchase17/langchain) +Built with [πŸ¦œοΈπŸ”— LangChain](https://github.com/hwchase17/langchain) From 7c2e72aebb143e46bc1900d405ed78f1dd653ccc Mon Sep 17 00:00:00 2001 From: Mohit Dhote <146939900+mohitd404@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:13:15 +0530 Subject: [PATCH 21/59] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33db5b62..09427686 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ See file [docker-compose-dev.yaml](./docker-compose-dev.yaml). Run ``` -docker-compose -f docker-compose-dev.yaml build +docker compose -f docker-compose-dev.yaml build docker compose -f docker-compose-dev.yaml up -d ``` From 3fcec069ed5d023f27b6301365863ba7e209c86a Mon Sep 17 00:00:00 2001 From: Mohit Dhote <146939900+mohitd404@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:14:04 +0530 Subject: [PATCH 22/59] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 09427686..ef892c51 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,7 @@ Copy `.env_sample` and create `.env` with your OpenAI API token for the API_KEY (check out application/core/settings.py if you want to see more config options) 3. (optional) Create a Python virtual environment -```command line +```commandline python -m venv venv . venv/bin/activate ``` From 0e330f983b324b7ccba9ec6c13cf3d8d081de6fc Mon Sep 17 00:00:00 2001 From: KRISH SONI <67964054+krishvsoni@users.noreply.github.com> Date: Sat, 7 Oct 2023 16:44:55 +0530 Subject: [PATCH 23/59] Added alternative virtual environment activation command for Windows users in README --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index edeb7b66..c9296ba8 100644 --- a/README.md +++ b/README.md @@ -124,10 +124,16 @@ Make sure you have Python 3.10 or 3.11 installed. (check out [`application/core/settings.py`](application/core/settings.py) if you want to see more config options.) 2. (optional) Create a Python virtual environment: + On Mac OS or Linux ```commandline python -m venv venv . venv/bin/activate ``` +On Windows +```commandline +python -m venv venv +venv/Scripts/activate +``` 3. Change to the `application/` subdir and install dependencies for the backend: ```commandline pip install -r application/requirements.txt From 50d48ee3ec621b2c7c3e7536890c088b4cd32964 Mon Sep 17 00:00:00 2001 From: KRISH SONI <67964054+krishvsoni@users.noreply.github.com> Date: Sat, 7 Oct 2023 16:46:02 +0530 Subject: [PATCH 24/59] Added alternative virtual environment activation command for Windows users in README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c9296ba8..8fde021c 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,8 @@ Make sure you have Python 3.10 or 3.11 installed. (check out [`application/core/settings.py`](application/core/settings.py) if you want to see more config options.) 2. (optional) Create a Python virtual environment: - On Mac OS or Linux + +On Mac OS or Linux ```commandline python -m venv venv . venv/bin/activate From b311b7620c26e54d934ec07a441771f92bf7503b Mon Sep 17 00:00:00 2001 From: Aindree Chatterjee <68018372+aindree-2005@users.noreply.github.com> Date: Sat, 7 Oct 2023 18:41:01 +0530 Subject: [PATCH 25/59] Update About.tsx --- frontend/src/About.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/About.tsx b/frontend/src/About.tsx index 034fe805..2d339211 100644 --- a/frontend/src/About.tsx +++ b/frontend/src/About.tsx @@ -12,7 +12,7 @@ export default function About() {

Find the information in your documentation through AI-powered DocsGPT . If you want to train it on different documentation - please follow If you want to launch it on your own server - follow Date: Sat, 7 Oct 2023 18:41:39 +0530 Subject: [PATCH 26/59] Update About.tsx --- frontend/src/About.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/About.tsx b/frontend/src/About.tsx index 2d339211..303708ca 100644 --- a/frontend/src/About.tsx +++ b/frontend/src/About.tsx @@ -55,7 +55,7 @@ export default function About() { information relevant to DocsGPT . If you want to train it on different documentation - please follow Date: Sat, 7 Oct 2023 19:43:45 +0530 Subject: [PATCH 27/59] added venv official Python documentation --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8fde021c..387ad8ae 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ Make sure you have Python 3.10 or 3.11 installed. (check out [`application/core/settings.py`](application/core/settings.py) if you want to see more config options.) 2. (optional) Create a Python virtual environment: +You can follow the official Python documentation for virtual environments [here](https://docs.python.org/3/tutorial/venv.html). On Mac OS or Linux ```commandline @@ -135,6 +136,7 @@ On Windows python -m venv venv venv/Scripts/activate ``` + 3. Change to the `application/` subdir and install dependencies for the backend: ```commandline pip install -r application/requirements.txt From a0739a18e8dc87bca72586d465bdd073690afa4b Mon Sep 17 00:00:00 2001 From: KRISH SONI <67964054+krishvsoni@users.noreply.github.com> Date: Sat, 7 Oct 2023 19:53:23 +0530 Subject: [PATCH 28/59] added one line for the venv documentation --- README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/README.md b/README.md index 387ad8ae..3481ab6a 100644 --- a/README.md +++ b/README.md @@ -126,17 +126,6 @@ Make sure you have Python 3.10 or 3.11 installed. 2. (optional) Create a Python virtual environment: You can follow the official Python documentation for virtual environments [here](https://docs.python.org/3/tutorial/venv.html). -On Mac OS or Linux -```commandline -python -m venv venv -. venv/bin/activate -``` -On Windows -```commandline -python -m venv venv -venv/Scripts/activate -``` - 3. Change to the `application/` subdir and install dependencies for the backend: ```commandline pip install -r application/requirements.txt From 6f8394a086aa4c67c4c49e8af7a877e3feda7c18 Mon Sep 17 00:00:00 2001 From: KRISH SONI <67964054+krishvsoni@users.noreply.github.com> Date: Sat, 7 Oct 2023 20:00:17 +0530 Subject: [PATCH 29/59] git commit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3481ab6a..e62f4bd5 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ Make sure you have Python 3.10 or 3.11 installed. (check out [`application/core/settings.py`](application/core/settings.py) if you want to see more config options.) 2. (optional) Create a Python virtual environment: -You can follow the official Python documentation for virtual environments [here](https://docs.python.org/3/tutorial/venv.html). +You can follow the [Python official documentation](https://docs.python.org/3/tutorial/venv.html) for virtual environments . 3. Change to the `application/` subdir and install dependencies for the backend: ```commandline From dd6e018e46a934d88f36627f1c0f16d9d77303fd Mon Sep 17 00:00:00 2001 From: KRISH SONI <67964054+krishvsoni@users.noreply.github.com> Date: Sat, 7 Oct 2023 20:09:48 +0530 Subject: [PATCH 30/59] Update README.md --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e62f4bd5..707ed10f 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,18 @@ Make sure you have Python 3.10 or 3.11 installed. 2. (optional) Create a Python virtual environment: You can follow the [Python official documentation](https://docs.python.org/3/tutorial/venv.html) for virtual environments . -3. Change to the `application/` subdir and install dependencies for the backend: +a) On Mac OS and Linux +```commandline +python -m venv venv +. venv/bin/activate +``` +b) On Windows +```commandline +python -m venv venv + venv/Scripts/activate +``` + +4. Change to the `application/` subdir and install dependencies for the backend: ```commandline pip install -r application/requirements.txt ``` From b983095e130435f0c0707f83d144240a56a66516 Mon Sep 17 00:00:00 2001 From: Daniel Shuy Date: Sat, 7 Oct 2023 22:47:21 +0800 Subject: [PATCH 31/59] Fix About page to Conversation navigation --- frontend/src/Navigation.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/Navigation.tsx b/frontend/src/Navigation.tsx index 9507cfe1..aa1367a6 100644 --- a/frontend/src/Navigation.tsx +++ b/frontend/src/Navigation.tsx @@ -1,5 +1,5 @@ import { useEffect, useRef, useState } from 'react'; -import { NavLink } from 'react-router-dom'; +import { NavLink, useNavigate } from 'react-router-dom'; import Arrow1 from './assets/arrow.svg'; import Arrow2 from './assets/dropdown-arrow.svg'; import Exit from './assets/exit.svg'; @@ -60,6 +60,8 @@ export default function Navigation() { const embeddingsName = import.meta.env.VITE_EMBEDDINGS_NAME || 'openai_text-embedding-ada-002'; + const navigate = useNavigate(); + useEffect(() => { if (!conversations) { getConversations() @@ -111,6 +113,7 @@ export default function Navigation() { }) .then((response) => response.json()) .then((data) => { + navigate('/'); dispatch(setConversation(data)); dispatch( updateConversationId({ From b0085f274179d889033bc7925ceabfa3b5d33094 Mon Sep 17 00:00:00 2001 From: Ankit Matth Date: Sat, 7 Oct 2023 20:42:32 +0530 Subject: [PATCH 32/59] Color of all buttons and elements changed from blue to #7D54D1 --- docs/pages/Developing/API-docs.md | 2 +- extensions/chrome/popup.html | 4 ++-- extensions/chrome/popup.js | 2 +- frontend/src/conversation/ConversationBubble.tsx | 6 +++--- frontend/src/upload/Upload.tsx | 10 +++++----- frontend/tailwind.config.cjs | 1 + 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/pages/Developing/API-docs.md b/docs/pages/Developing/API-docs.md index 25838742..eabd29c0 100644 --- a/docs/pages/Developing/API-docs.md +++ b/docs/pages/Developing/API-docs.md @@ -73,7 +73,7 @@ HTML example: - diff --git a/extensions/chrome/popup.html b/extensions/chrome/popup.html index 432d31ae..98921086 100644 --- a/extensions/chrome/popup.html +++ b/extensions/chrome/popup.html @@ -20,7 +20,7 @@

-
+

How to create API key for Api gateway?

@@ -46,7 +46,7 @@
- +
diff --git a/extensions/chrome/popup.js b/extensions/chrome/popup.js index 20f7bce3..70b7415d 100644 --- a/extensions/chrome/popup.js +++ b/extensions/chrome/popup.js @@ -3,7 +3,7 @@ document.getElementById("message-form").addEventListener("submit", function(even var message = document.getElementById("message-input").value; chrome.runtime.sendMessage({msg: "sendMessage", message: message}, function(response) { console.log(response.response); - msg_html = '

' + msg_html = '

' msg_html += message msg_html += '

' document.getElementById("messages").innerHTML += msg_html; diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 2793a9bf..37349660 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -42,7 +42,7 @@ const ConversationBubble = forwardRef< bubble = (
-
+
{message} @@ -148,7 +148,7 @@ const ConversationBubble = forwardRef< handleFeedback?.('LIKE')} @@ -173,7 +173,7 @@ const ConversationBubble = forwardRef<
{sources && openSource !== null && sources[openSource] && ( -
+

Source: {sources[openSource].title}

diff --git a/frontend/src/upload/Upload.tsx b/frontend/src/upload/Upload.tsx index 0edc971b..755a9ad4 100644 --- a/frontend/src/upload/Upload.tsx +++ b/frontend/src/upload/Upload.tsx @@ -41,9 +41,9 @@ export default function Upload({

{progress?.percentage || 0}%

-
+
@@ -55,7 +55,7 @@ export default function Upload({ setProgress(undefined); setModalState('INACTIVE'); }} - className={`rounded-3xl bg-blue-3000 px-4 py-2 text-sm font-medium text-white ${ + className={`rounded-3xl bg-purple-30 px-4 py-2 text-sm font-medium text-white ${ isCancellable ? '' : 'hidden' }`} > @@ -189,7 +189,7 @@ export default function Upload({ Name
- + Choose Files @@ -206,7 +206,7 @@ export default function Upload({
diff --git a/frontend/tailwind.config.cjs b/frontend/tailwind.config.cjs index 64fb76f2..8e395a07 100644 --- a/frontend/tailwind.config.cjs +++ b/frontend/tailwind.config.cjs @@ -24,6 +24,7 @@ module.exports = { 'blue-1000': '#7D54D1', 'blue-2000': '#002B49', 'blue-3000': '#4B02E2', + 'purple-30': '#7D54D1', 'blue-4000': 'rgba(0, 125, 255, 0.36)', 'blue-5000': 'rgba(0, 125, 255)', }, From 5ca5e0d00fd0e6b29b41479b28e4f2eb775ba428 Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Sat, 7 Oct 2023 21:22:48 +0530 Subject: [PATCH 33/59] Revert "synced the branch" This reverts commit 0585fb4c8098615213d2f55cde77063ca2fffffb. --- frontend/src/Hero.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/Hero.tsx b/frontend/src/Hero.tsx index 0644da67..8ed80fcf 100644 --- a/frontend/src/Hero.tsx +++ b/frontend/src/Hero.tsx @@ -48,7 +48,7 @@ export default function Hero({ className = '' }: { className?: string }) {
-
+
lock Date: Sat, 7 Oct 2023 21:37:58 +0530 Subject: [PATCH 34/59] Update CONTRIBUTING.md i made it easy to understand --- CONTRIBUTING.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b759fd46..d8e35596 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,27 +1,27 @@ # Welcome to DocsGPT Contributing Guidelines -Thank you for choosing this project to contribute to. We are all very grateful! +Thank you for choosing to contribute to our project! We greatly appreciate your help! ### [πŸŽ‰ Join the Hacktoberfest with DocsGPT and Earn a Free T-shirt! πŸŽ‰](https://github.com/arc53/DocsGPT/blob/main/HACKTOBERFEST.md) # We accept different types of contributions -πŸ“£ Discussions - where you can start a new topic or answer some questions +πŸ“£ Discussions - Engage in conversations, start new topics, or help answer questions. -🐞 Issues - This is how we track tasks, sometimes it is bugs that need fixing, and sometimes it is new features +🐞 Issues - This is where we keep track of tasks. It could be bug fixes or suggestions for new features. -πŸ› οΈ Pull requests - This is how you can suggest changes to our repository, to work on existing issues or add new features +πŸ› οΈ Pull requests - Suggest changes to our repository, either by working on existing issues or adding new features. -πŸ“š Wiki - where we have our documentation +πŸ“š Wiki - This is where our documentation resides. ## 🐞 Issues and Pull requests -We value contributions to our issues in the form of discussion or suggestions. We recommend that you check out existing issues and our [roadmap](https://github.com/orgs/arc53/projects/2). +We highly value contributions in the form of discussions or suggestions. We recommend taking a look at existing issues and our [roadmap](https://github.com/orgs/arc53/projects/2). -If you want to contribute by writing code, there are a few things that you should know before doing it: +If you're interested in contributing code, here are some important things to know: -We have a frontend in React (Vite) and backend in Python. +We have a frontend built with React (Vite) and a backend in Python. ### If you are looking to contribute to frontend (βš›οΈReact, Vite): @@ -32,10 +32,10 @@ We have a frontend in React (Vite) and backend in Python. Please try to follow the guidelines. ### If you are looking to contribute to Backend (🐍 Python): -- Check out our issues and contribute to `/application` or `/scripts` (ignore old `ingest_rst.py` `ingest_rst_sphinx.py` files; they will be deprecated soon). +- Review our issues and contribute to /application or /scripts (please disregard old ingest_rst.py and ingest_rst_sphinx.py files; they will be phased out soon). - All new code should be covered with unit tests ([pytest](https://github.com/pytest-dev/pytest)). Please find tests under [`/tests`](https://github.com/arc53/DocsGPT/tree/main/tests) folder. -- Before submitting your PR, ensure it is queryable after ingesting some test data. - +- Before submitting your Pull Request, ensure it can be queried after ingesting some test data. + ### Testing To run unit tests from the root of the repository, execute: @@ -44,9 +44,8 @@ python -m pytest ``` ### Workflow: -Create a fork, make changes on your forked repository, and submit changes as a pull request. +Fork the repository, make your changes on your forked version, and then submit those changes as a pull request. ## Questions/collaboration -Please join our [Discord](https://discord.gg/n5BX8dh8rU). Don't hesitate; we are very friendly and welcoming to new contributors. - +Feel free to join our [Discord](https://discord.gg/n5BX8dh8rU). We're very friendly and welcoming to new contributors, so don't hesitate to reach out. # Thank you so much for considering contributing to DocsGPT!πŸ™ From 47f9be32ced3e9782a4719b18b928ae459a3533e Mon Sep 17 00:00:00 2001 From: KRISH SONI <67964054+krishvsoni@users.noreply.github.com> Date: Sat, 7 Oct 2023 21:40:29 +0530 Subject: [PATCH 35/59] git commit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 707ed10f..172c075b 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ python -m venv venv venv/Scripts/activate ``` -4. Change to the `application/` subdir and install dependencies for the backend: +3. Change to the `application/` subdir and install dependencies for the backend: ```commandline pip install -r application/requirements.txt ``` From d261ed074e64ac15281a906c27db0ead794886da Mon Sep 17 00:00:00 2001 From: ankur0904 Date: Sat, 7 Oct 2023 23:54:47 +0530 Subject: [PATCH 36/59] Make text bold --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b759fd46..b83ed691 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,13 +6,13 @@ Thank you for choosing this project to contribute to. We are all very grateful! # We accept different types of contributions -πŸ“£ Discussions - where you can start a new topic or answer some questions +πŸ“£ **Discussions** - where you can start a new topic or answer some questions -🐞 Issues - This is how we track tasks, sometimes it is bugs that need fixing, and sometimes it is new features +🐞 **Issues** - This is how we track tasks, sometimes it is bugs that need fixing, and sometimes it is new features -πŸ› οΈ Pull requests - This is how you can suggest changes to our repository, to work on existing issues or add new features +πŸ› οΈ **Pull requests** - This is how you can suggest changes to our repository, to work on existing issues or add new features -πŸ“š Wiki - where we have our documentation +πŸ“š **Wiki** - where we have our documentation ## 🐞 Issues and Pull requests From accd65a26ab47114852fc295d5af6097e267e341 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Sun, 8 Oct 2023 05:27:03 +0530 Subject: [PATCH 37/59] added the copy msg feature --- frontend/package-lock.json | 26 +++++++++++++++++++ frontend/package.json | 1 + frontend/src/assets/copy.svg | 3 +++ .../src/conversation/ConversationBubble.tsx | 7 +++++ 4 files changed, 37 insertions(+) create mode 100644 frontend/src/assets/copy.svg diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8cf969d7..7c08dfb7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,6 +11,7 @@ "@reduxjs/toolkit": "^1.9.2", "@vercel/analytics": "^0.1.10", "react": "^18.2.0", + "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", "react-markdown": "^8.0.7", @@ -2248,6 +2249,14 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -6072,6 +6081,18 @@ "node": ">=0.10.0" } }, + "node_modules/react-copy-to-clipboard": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", + "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "dependencies": { + "copy-to-clipboard": "^3.3.1", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17 || 18" + } + }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -6907,6 +6928,11 @@ "node": ">=8.0" } }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 66d14ddc..9dcbf4ae 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,6 +22,7 @@ "@reduxjs/toolkit": "^1.9.2", "@vercel/analytics": "^0.1.10", "react": "^18.2.0", + "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", "react-markdown": "^8.0.7", diff --git a/frontend/src/assets/copy.svg b/frontend/src/assets/copy.svg new file mode 100644 index 00000000..d0da8857 --- /dev/null +++ b/frontend/src/assets/copy.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index b74c65fe..3f38ee9a 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -4,7 +4,9 @@ import { FEEDBACK, MESSAGE_TYPE } from './conversationModels'; import Alert from './../assets/alert.svg'; import { ReactComponent as Like } from './../assets/like.svg'; import { ReactComponent as Dislike } from './../assets/dislike.svg'; +import { ReactComponent as Copy } from './../assets/copy.svg'; import ReactMarkdown from 'react-markdown'; +import copy from 'copy-to-clipboard'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { vscDarkPlus } from 'react-syntax-highlighter/dist/cjs/styles/prism'; @@ -145,6 +147,11 @@ const ConversationBubble = forwardRef< : 'md:invisible' }`} > + copy(message)} + > Date: Sun, 8 Oct 2023 05:33:13 +0530 Subject: [PATCH 38/59] fix --- frontend/src/About.tsx | 8 +++++--- frontend/src/conversation/ConversationBubble.tsx | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/src/About.tsx b/frontend/src/About.tsx index 303708ca..2365536c 100644 --- a/frontend/src/About.tsx +++ b/frontend/src/About.tsx @@ -51,9 +51,11 @@ export default function About() {

- Currently It uses DocsGPT documentation, so it will respond to - information relevant to DocsGPT . If you want to train it on different - documentation - please follow + Currently It uses{' '} + DocsGPT{' '} + documentation, so it will respond to information relevant to{' '} + DocsGPT . If you + want to train it on different documentation - please follow copy(message)} > Date: Sun, 8 Oct 2023 06:26:08 +0530 Subject: [PATCH 39/59] UI checks --- frontend/.env.development | 2 +- frontend/src/conversation/ConversationBubble.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/.env.development b/frontend/.env.development index 2bb67110..7a87f762 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -1,3 +1,3 @@ # Please put appropriate value -VITE_API_HOST=http://localhost:7091 +VITE_API_HOST=http://0.0.0.0:7091 VITE_API_STREAMING=true \ No newline at end of file diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 2e881314..471970a8 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -148,7 +148,7 @@ const ConversationBubble = forwardRef< }`} > copy(message)} > Date: Sun, 8 Oct 2023 14:17:26 +0530 Subject: [PATCH 40/59] fix css --- frontend/src/About.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/About.tsx b/frontend/src/About.tsx index 303708ca..f5107991 100644 --- a/frontend/src/About.tsx +++ b/frontend/src/About.tsx @@ -4,7 +4,7 @@ export default function About() { return (

-
+

About DocsGPT

πŸ¦–

From a064066e42112eb4c10dabb77e920d4de45d154c Mon Sep 17 00:00:00 2001 From: Pratik Gupta <91310568+GuptaPratik02@users.noreply.github.com> Date: Sun, 8 Oct 2023 16:52:56 +0530 Subject: [PATCH 41/59] Update README.md Updated the DocsGPT link as mentioned by the maintainer. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 16706df1..898a57f2 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@

- DocsGPT is a cutting-edge open-source solution that streamlines the process of finding information in project documentation. With its integration of the powerful GPT models, developers can easily ask questions about a project and receive accurate answers. + DocsGPT is a cutting-edge open-source solution that streamlines the process of finding information in project documentation. With its integration of the powerful GPT models, developers can easily ask questions about a project and receive accurate answers. -Say goodbye to time-consuming manual searches, and let DocsGPT help you quickly find the information you need. Try it out and see how it revolutionizes your project documentation experience. Contribute to its development and be a part of the future of AI-powered assistance. +Say goodbye to time-consuming manual searches, and let DocsGPT help you quickly find the information you need. Try it out and see how it revolutionizes your project documentation experience. Contribute to its development and be a part of the future of AI-powered assistance.

From 2993bd8c0526c2a11d4829ebb9bfcda3ec353433 Mon Sep 17 00:00:00 2001 From: Sanket Pol <68698332+sanketmp@users.noreply.github.com> Date: Sun, 8 Oct 2023 17:02:44 +0530 Subject: [PATCH 42/59] add license link to readme.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fa6a7af..902b32ac 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,6 @@ We as members, contributors, and leaders, pledge to make participation in our co ## License -The source code license is MIT, as described in the LICENSE file. +The source code license is [MIT](https://opensource.org/license/mit/), as described in the [LICENSE](LICENSE) file. Built with [πŸ¦œοΈπŸ”— LangChain](https://github.com/hwchase17/langchain) From 396697ead2f0ae12bf080d468453e9a43d7bb250 Mon Sep 17 00:00:00 2001 From: staticGuru Date: Sun, 8 Oct 2023 17:36:57 +0530 Subject: [PATCH 43/59] Query overlay text input issues --- frontend/src/conversation/Conversation.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index e6b5d9cd..d50ed854 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -81,7 +81,7 @@ export default function Conversation() { responseView = ( )} -
+
{ if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); @@ -170,10 +170,10 @@ export default function Conversation() { {status === 'loading' ? ( ) : ( -
+
{ From e9883647665bfeb411fc605eee7a954309c1ac65 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Sun, 8 Oct 2023 17:47:27 +0530 Subject: [PATCH 44/59] Update CONTRIBUTING.md i made it easy to understand --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8e35596..188a90d1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Welcome to DocsGPT Contributing Guidelines -Thank you for choosing to contribute to our project! We greatly appreciate your help! +Thank you for choosing to contribute to DocsGPT! We greatly appreciate your help! ### [πŸŽ‰ Join the Hacktoberfest with DocsGPT and Earn a Free T-shirt! πŸŽ‰](https://github.com/arc53/DocsGPT/blob/main/HACKTOBERFEST.md) @@ -8,7 +8,7 @@ Thank you for choosing to contribute to our project! We greatly appreciate your πŸ“£ Discussions - Engage in conversations, start new topics, or help answer questions. -🐞 Issues - This is where we keep track of tasks. It could be bug fixes or suggestions for new features. +🐞 Issues - This is where we keep track of tasks. It could be bug,fixes or suggestions for new features. πŸ› οΈ Pull requests - Suggest changes to our repository, either by working on existing issues or adding new features. @@ -17,7 +17,7 @@ Thank you for choosing to contribute to our project! We greatly appreciate your ## 🐞 Issues and Pull requests -We highly value contributions in the form of discussions or suggestions. We recommend taking a look at existing issues and our [roadmap](https://github.com/orgs/arc53/projects/2). +We value contributions in the form of discussions or suggestions. We recommend taking a look at existing issues and our [roadmap](https://github.com/orgs/arc53/projects/2). If you're interested in contributing code, here are some important things to know: @@ -32,7 +32,7 @@ We have a frontend built with React (Vite) and a backend in Python. Please try to follow the guidelines. ### If you are looking to contribute to Backend (🐍 Python): -- Review our issues and contribute to /application or /scripts (please disregard old ingest_rst.py and ingest_rst_sphinx.py files; they will be phased out soon). +- Review our issues and contribute to /application or /scripts (please disregard old ingest_rst.py and ingest_rst_sphinx.py files; they will be deprecated soon). - All new code should be covered with unit tests ([pytest](https://github.com/pytest-dev/pytest)). Please find tests under [`/tests`](https://github.com/arc53/DocsGPT/tree/main/tests) folder. - Before submitting your Pull Request, ensure it can be queried after ingesting some test data. From c451d00eb4db238730070aa20e05fc28e401d812 Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:52:52 +0530 Subject: [PATCH 45/59] Update Hosting-the-app.md --- docs/pages/Deploying/Hosting-the-app.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/pages/Deploying/Hosting-the-app.md b/docs/pages/Deploying/Hosting-the-app.md index 7505f60d..13296b49 100644 --- a/docs/pages/Deploying/Hosting-the-app.md +++ b/docs/pages/Deploying/Hosting-the-app.md @@ -18,7 +18,7 @@ After that, it is time to pick your Instance Image. We recommend using "Linux/Un As for instance plan, it'll vary depending on your unique demands, but a "1 GB, 1vCPU, 40GB SSD and 2TB transfer" setup should cover most scenarios. -Lastly, Identify your instance by giving it a unique name and then hit "Create instance". +Lastly, identify your instance by giving it a unique name and then hit "Create instance". PS: Once you create your instance, it'll likely take a few minutes for the setup to be completed. @@ -42,7 +42,7 @@ A terminal window will pop up, and the first step will be to clone the DocsGPT g #### Download the package information -Once it has finished cloning the repository, it is time to download the package information from all sources. To do so simply enter the following command: +Once it has finished cloning the repository, it is time to download the package information from all sources. To do so, simply enter the following command: `sudo apt update` @@ -64,7 +64,7 @@ Enter the following command to access the folder in which DocsGPT docker-compose #### Prepare the environment -Inside the DocsGPT folder create a `.env` file and copy the contents of `.env_sample` into it. +Inside the DocsGPT folder, create a `.env` file and copy the contents of `.env_sample` into it. `nano .env` @@ -95,7 +95,7 @@ You're almost there! Now that all the necessary bits and pieces have been instal Launching it for the first time will take a few minutes to download all the necessary dependencies and build. -Once this is done you can go ahead and close the terminal window. +Once this is done, you can go ahead and close the terminal window. #### Enabling ports From 4d5de8176ad34793b1035c3d3f6f975c67e90afd Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:55:43 +0530 Subject: [PATCH 46/59] Update Quickstart.md --- docs/pages/Deploying/Quickstart.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/pages/Deploying/Quickstart.md b/docs/pages/Deploying/Quickstart.md index 2cc03c5a..5ed37a5b 100644 --- a/docs/pages/Deploying/Quickstart.md +++ b/docs/pages/Deploying/Quickstart.md @@ -1,7 +1,7 @@ ## Launching Web App Note: Make sure you have Docker installed -On Mac OS or Linux just write: +On macOS or Linux, just write: `./setup.sh` @@ -10,11 +10,11 @@ It will install all the dependencies and give you an option to download the loca Otherwise, refer to this Guide: 1. Open and download this repository with `git clone https://github.com/arc53/DocsGPT.git`. -2. Create a `.env` file in your root directory and set your `API_KEY` with your [OpenAI api key](https://platform.openai.com/account/api-keys). +2. Create a `.env` file in your root directory and set your `API_KEY` with your [OpenAI API key](https://platform.openai.com/account/api-keys). 3. Run `docker-compose build && docker-compose up`. 4. Navigate to `http://localhost:5173/`. -To stop just run `Ctrl + C`. +To stop, just run `Ctrl + C`. ### Chrome Extension From d2424ce540a7cd536669afb3add54c4040f9559a Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:59:27 +0530 Subject: [PATCH 47/59] Update API-docs.md --- docs/pages/Developing/API-docs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/pages/Developing/API-docs.md b/docs/pages/Developing/API-docs.md index eabd29c0..1b908a8b 100644 --- a/docs/pages/Developing/API-docs.md +++ b/docs/pages/Developing/API-docs.md @@ -18,7 +18,7 @@ fetch("http://127.0.0.1:5000/api/answer", { .then(console.log.bind(console)) ``` -In response you will get a json document like this one: +In response, you will get a JSON document like this one: ```json { @@ -30,7 +30,7 @@ In response you will get a json document like this one: ### /api/docs_check It will make sure documentation is loaded on a server (just run it every time user is switching between libraries (documentations)). -It's a POST request that sends a JSON in body with 1 value. Here is a JavaScript fetch example: +It's a POST request that sends a JSON in a body with 1 value. Here is a JavaScript fetch example: ```js // answer (POST http://127.0.0.1:5000/api/docs_check) @@ -45,7 +45,7 @@ fetch("http://127.0.0.1:5000/api/docs_check", { .then(console.log.bind(console)) ``` -In response you will get a json document like this one: +In response, you will get a JSON document like this one: ```json { "status": "exists" @@ -54,17 +54,17 @@ In response you will get a json document like this one: ### /api/combine -Provides json that tells UI which vectors are available and where they are located with a simple get request. +Provides JSON that tells UI which vectors are available and where they are located with a simple get request. Response will include: `date`, `description`, `docLink`, `fullName`, `language`, `location` (local or docshub), `model`, `name`, `version`. -Example of json in Docshub and local: +Example of JSON in Docshub and local: image ### /api/upload -Uploads file that needs to be trained, response is json with task id, which can be used to check on tasks progress +Uploads file that needs to be trained, response is JSON with task ID, which can be used to check on task's progress HTML example: ```html @@ -104,7 +104,7 @@ fetch("http://localhost:5001/api/task_status?task_id=b2d2a0f4-387c-44fd-a443-e4f Responses: There are two types of responses: -1. while task it still running, where "current" will show progress from 0 to 100 +1. While task is still running, where "current" will show progress from 0 to 100 ```json { "result": { From 4d5d407655ce7e95ca4a4f02ba6683e41cfef9b7 Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:00:46 +0530 Subject: [PATCH 48/59] Update Chatwoot-extension.md --- docs/pages/Extensions/Chatwoot-extension.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/Extensions/Chatwoot-extension.md b/docs/pages/Extensions/Chatwoot-extension.md index 4dd57820..e95891a4 100644 --- a/docs/pages/Extensions/Chatwoot-extension.md +++ b/docs/pages/Extensions/Chatwoot-extension.md @@ -13,7 +13,7 @@ chatwoot_token= 5. Start with `flask run` command. -If you want for bot to stop responding to questions for a specific user or session just add label `human-requested` in your conversation. +If you want for bot to stop responding to questions for a specific user or session, just add a label `human-requested` in your conversation. ### Optional (extra validation) @@ -26,4 +26,4 @@ account_id=(optional) 1 assignee_id=(optional) 1 ``` -Those are chatwoot values and will allow you to check if you are responding to correct widget and responding to questions assigned to specific user. \ No newline at end of file +Those are chatwoot values and will allow you to check if you are responding to correct widget and responding to questions assigned to specific user. From dc85f93423aaba0a3b104a5c2a27fdc5a4bc9a74 Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:02:10 +0530 Subject: [PATCH 49/59] Update react-widget.md --- docs/pages/Extensions/react-widget.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/pages/Extensions/react-widget.md b/docs/pages/Extensions/react-widget.md index be4d6bdc..1cc11321 100644 --- a/docs/pages/Extensions/react-widget.md +++ b/docs/pages/Extensions/react-widget.md @@ -4,7 +4,7 @@ Got to your project and install a new dependency: `npm install docsgpt`. ### Usage -Go to your project and in the file where you want to use the widget import it: +Go to your project and in the file where you want to use the widget, import it: ```js import { DocsGPTWidget } from "docsgpt"; import "docsgpt/dist/style.css"; @@ -14,12 +14,12 @@ import "docsgpt/dist/style.css"; Then you can use it like this: `` DocsGPTWidget takes 3 props: -- `apiHost` β€” url of your DocsGPT API. -- `selectDocs` β€” documentation that you want to use for your widget (eg. `default` or `local/docs1.zip`). -- `apiKey` β€” usually its empty. +- `apiHost` β€” URL of your DocsGPT API. +- `selectDocs` β€” documentation that you want to use for your widget (e.g. `default` or `local/docs1.zip`). +- `apiKey` β€” usually it's empty. ### How to use DocsGPTWidget with [Nextra](https://nextra.site/) (Next.js + MDX) -Install you widget as described above and then go to your `pages/` folder and create a new file `_app.js` with the following content: +Install your widget as described above and then go to your `pages/` folder and create a new file `_app.js` with the following content: ```js import { DocsGPTWidget } from "docsgpt"; import "docsgpt/dist/style.css"; From 31e0dfef76d5f713d03a24d573509f0cdf1cf30f Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:03:18 +0530 Subject: [PATCH 50/59] Update Customising-prompts.md --- docs/pages/Guides/Customising-prompts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/Guides/Customising-prompts.md b/docs/pages/Guides/Customising-prompts.md index 1d3a7d4a..19dcdefd 100644 --- a/docs/pages/Guides/Customising-prompts.md +++ b/docs/pages/Guides/Customising-prompts.md @@ -1,4 +1,4 @@ -## To customize a main prompt navigate to `/application/prompt/combine_prompt.txt` +## To customize a main prompt, navigate to `/application/prompt/combine_prompt.txt` You can try editing it to see how the model responses. From 64cecb4931ed903be521336643c5f80b08114793 Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:07:00 +0530 Subject: [PATCH 51/59] Update How-to-train-on-other-documentation.md --- .../Guides/How-to-train-on-other-documentation.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/pages/Guides/How-to-train-on-other-documentation.md b/docs/pages/Guides/How-to-train-on-other-documentation.md index 9f4e5032..aef6f008 100644 --- a/docs/pages/Guides/How-to-train-on-other-documentation.md +++ b/docs/pages/Guides/How-to-train-on-other-documentation.md @@ -5,18 +5,18 @@ This AI can use any documentation, but first it needs to be prepared for similar Start by going to `/scripts/` folder. -If you open this file you will see that it uses RST files from the folder to create a `index.faiss` and `index.pkl`. +If you open this file, you will see that it uses RST files from the folder to create a `index.faiss` and `index.pkl`. -It currently uses OPEN_AI to create vector store, so make sure your documentation is not too big. Pandas cost me around 3-4$. +It currently uses OPEN_AI to create the vector store, so make sure your documentation is not too big. Pandas cost me around $3-$4. -You can usually find documentation on github in `docs/` folder for most open-source projects. +You can usually find documentation on Github in `docs/` folder for most open-source projects. ### 1. Find documentation in .rst/.md and create a folder with it in your scripts directory Name it `inputs/` Put all your .rst/.md files in there The search is recursive, so you don't need to flatten them -If there are no .rst/.md files just convert whatever you find to txt and feed it. (don't forget to change the extension in script) +If there are no .rst/.md files just convert whatever you find to .txt and feed it. (don't forget to change the extension in script) ### 2. Create .env file in `scripts/` folder And write your OpenAI API key inside @@ -32,7 +32,7 @@ It will tell you how much it will cost ### 5. Run web app -Once you run it will use new context that is relevant to your documentation +Once you run it will use new context that is relevant to your documentation Make sure you select default in the dropdown in the UI ## Customization @@ -41,7 +41,7 @@ You can learn more about options while running ingest.py by running: `python ingest.py --help` | Options | | |:--------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| -| **ingest** | Runs 'ingest' function converting documentation to Faiss plus Index format | +| **ingest** | Runs 'ingest' function, converting documentation to Faiss plus Index format | | --dir TEXT | List of paths to directory for index creation. E.g. --dir inputs --dir inputs2 [default: inputs] | | --file TEXT | File paths to use (Optional; overrides directory) E.g. --files inputs/1.md --files inputs/2.md | | --recursive / --no-recursive | Whether to recursively search in subdirectories [default: recursive] | @@ -56,4 +56,4 @@ You can learn more about options while running ingest.py by running: | | | | **convert** | Creates documentation in .md format from source code | | --dir TEXT | Path to a directory with source code. E.g. --dir inputs [default: inputs] | -| --formats TEXT | Source code language from which to create documentation. Supports py, js and java. E.g. --formats py [default: py] | \ No newline at end of file +| --formats TEXT | Source code language from which to create documentation. Supports py, js and java. E.g. --formats py [default: py] | From 706e6c01aaa6397c09d6e29f957a6b5b4c348eb5 Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:08:18 +0530 Subject: [PATCH 52/59] Update How-to-use-different-LLM.md --- docs/pages/Guides/How-to-use-different-LLM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/Guides/How-to-use-different-LLM.md b/docs/pages/Guides/How-to-use-different-LLM.md index aa5815f0..c0245a15 100644 --- a/docs/pages/Guides/How-to-use-different-LLM.md +++ b/docs/pages/Guides/How-to-use-different-LLM.md @@ -1,4 +1,4 @@ -Fortunately there are many providers for LLM's and some of them can even be ran locally +Fortunately, there are many providers for LLM's and some of them can even be run locally There are two models used in the app: 1. Embeddings. @@ -29,4 +29,4 @@ That's it! ### Hosting everything locally and privately (for using our optimised open-source models) If you are working with important data and don't want anything to leave your premises. -Make sure you set `SELF_HOSTED_MODEL` as true in you `.env` variable and for your `LLM_NAME` you can use anything that's on Hugging Face. +Make sure you set `SELF_HOSTED_MODEL` as true in your `.env` variable and for your `LLM_NAME` you can use anything that's on Hugging Face. From 7f1fb41d4821b9df2a695e3b3e64f3e339f995be Mon Sep 17 00:00:00 2001 From: Suryansh <58465650+drk1rd@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:08:55 +0530 Subject: [PATCH 53/59] Update My-AI-answers-questions-using-external-knowledge.md --- .../Guides/My-AI-answers-questions-using-external-knowledge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/Guides/My-AI-answers-questions-using-external-knowledge.md b/docs/pages/Guides/My-AI-answers-questions-using-external-knowledge.md index be1bffa5..fb15835f 100644 --- a/docs/pages/Guides/My-AI-answers-questions-using-external-knowledge.md +++ b/docs/pages/Guides/My-AI-answers-questions-using-external-knowledge.md @@ -1,4 +1,4 @@ -If your AI uses external knowledge and is not explicit enough it is ok, because we try to make docsgpt friendly. +If your AI uses external knowledge and is not explicit enough, it is ok, because we try to make docsgpt friendly. But if you want to adjust it, here is a simple way. From 65d431c7a0586cb27ac2b5babadd6797a0d5e04a Mon Sep 17 00:00:00 2001 From: timoransky <15653065+timoransky@users.noreply.github.com> Date: Sun, 8 Oct 2023 19:18:11 +0200 Subject: [PATCH 54/59] fix: margin left on content container --- frontend/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 4802ab82..ad9d72a3 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -19,7 +19,7 @@ export default function App() { className={`transition-all duration-200 ${ !isMobile ? `ml-0 ${ - !navOpen ? '-mt-5 md:mx-auto lg:mx-auto' : 'md:ml-72 lg:ml-60' + !navOpen ? '-mt-5 md:mx-auto lg:mx-auto' : 'md:ml-72' }` : 'ml-0 md:ml-16' }`} From 16a2b3b19ba271d3ba72f9eba9c349d6ef58c5af Mon Sep 17 00:00:00 2001 From: SoumyadiptoPal Date: Sun, 8 Oct 2023 23:48:49 +0530 Subject: [PATCH 55/59] Rounded the components to 3xl --- frontend/src/Navigation.tsx | 2 +- frontend/src/conversation/Conversation.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/Navigation.tsx b/frontend/src/Navigation.tsx index 260639b6..6fdcb10c 100644 --- a/frontend/src/Navigation.tsx +++ b/frontend/src/Navigation.tsx @@ -247,7 +247,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
setIsDocsListOpen(!isDocsListOpen)} > {selectedDocs && ( diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index 79e62da7..f805a64e 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -154,7 +154,7 @@ export default function Conversation() { placeholder="Type your message here..." contentEditable onPaste={handlePaste} - className={`border-000000 overflow-x-hidden; max-h-24 min-h-[2.6rem] w-full overflow-y-auto whitespace-pre-wrap rounded-xl border bg-white py-2 pl-4 pr-9 leading-7 opacity-100 focus:outline-none`} + className={`border-000000 overflow-x-hidden; max-h-24 min-h-[2.6rem] w-full overflow-y-auto whitespace-pre-wrap rounded-3xl border bg-white py-2 pl-4 pr-9 leading-7 opacity-100 focus:outline-none`} onKeyDown={(e) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); From b1f863cc4da2fcfc59c71a06dea07b28f0146834 Mon Sep 17 00:00:00 2001 From: Soumyadipto Pal <119007659+SoumyadiptoPal@users.noreply.github.com> Date: Sun, 8 Oct 2023 23:59:08 +0530 Subject: [PATCH 56/59] Update Navigation.tsx --- frontend/src/Navigation.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/Navigation.tsx b/frontend/src/Navigation.tsx index e6c5bb64..e065d65d 100644 --- a/frontend/src/Navigation.tsx +++ b/frontend/src/Navigation.tsx @@ -252,7 +252,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
setIsDocsListOpen(!isDocsListOpen)} > {selectedDocs && ( From cdad083d7fec09ca77a2a0d7655971c3b4c60a25 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 9 Oct 2023 01:21:36 +0530 Subject: [PATCH 57/59] Update CONTRIBUTING.md --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 188a90d1..3e969801 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Welcome to DocsGPT Contributing Guidelines -Thank you for choosing to contribute to DocsGPT! We greatly appreciate your help! +Thank you for choosing to contribute to DocsGPT! We are all very grateful! ### [πŸŽ‰ Join the Hacktoberfest with DocsGPT and Earn a Free T-shirt! πŸŽ‰](https://github.com/arc53/DocsGPT/blob/main/HACKTOBERFEST.md) @@ -8,7 +8,7 @@ Thank you for choosing to contribute to DocsGPT! We greatly appreciate your help πŸ“£ Discussions - Engage in conversations, start new topics, or help answer questions. -🐞 Issues - This is where we keep track of tasks. It could be bug,fixes or suggestions for new features. +🐞 Issues - This is where we keep track of tasks. It could be bugs,fixes or suggestions for new features. πŸ› οΈ Pull requests - Suggest changes to our repository, either by working on existing issues or adding new features. From 3197c356e9e9c5cd4ee0c27177e73cf1a6401637 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Mon, 9 Oct 2023 02:36:48 +0530 Subject: [PATCH 58/59] UI corrections --- frontend/src/assets/checkmark.svg | 3 ++ frontend/src/assets/copy.svg | 2 +- .../src/conversation/ConversationBubble.tsx | 32 ++++++++++++++++--- 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 frontend/src/assets/checkmark.svg diff --git a/frontend/src/assets/checkmark.svg b/frontend/src/assets/checkmark.svg new file mode 100644 index 00000000..682c29d7 --- /dev/null +++ b/frontend/src/assets/checkmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/assets/copy.svg b/frontend/src/assets/copy.svg index d0da8857..846d285f 100644 --- a/frontend/src/assets/copy.svg +++ b/frontend/src/assets/copy.svg @@ -1,3 +1,3 @@ - + diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 471970a8..19019613 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -5,6 +5,7 @@ import Alert from './../assets/alert.svg'; import { ReactComponent as Like } from './../assets/like.svg'; import { ReactComponent as Dislike } from './../assets/dislike.svg'; import { ReactComponent as Copy } from './../assets/copy.svg'; +import { ReactComponent as Checkmark } from './../assets/checkmark.svg'; import ReactMarkdown from 'react-markdown'; import copy from 'copy-to-clipboard'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; @@ -28,6 +29,17 @@ const ConversationBubble = forwardRef< ) { const [showFeedback, setShowFeedback] = useState(false); const [openSource, setOpenSource] = useState(null); + const [copied, setCopied] = useState(false); + + const handleCopyClick = (text: string) => { + copy(text); + setCopied(true); + // Reset copied to false after a few seconds + setTimeout(() => { + setCopied(false); + }, 2000); + }; + const List = ({ ordered, children, @@ -140,6 +152,22 @@ const ConversationBubble = forwardRef<
+
+ {copied ? ( + + ) : ( + { + handleCopyClick(message); + }} + > + )} +
- copy(message)} - > Date: Sun, 8 Oct 2023 23:30:21 +0100 Subject: [PATCH 59/59] Update Conversation.tsx --- frontend/src/conversation/Conversation.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/conversation/Conversation.tsx b/frontend/src/conversation/Conversation.tsx index c7f49411..5b2e6981 100644 --- a/frontend/src/conversation/Conversation.tsx +++ b/frontend/src/conversation/Conversation.tsx @@ -170,10 +170,10 @@ export default function Conversation() { {status === 'loading' ? ( ) : ( -
+
{