Add display mode option (#747)

This commit is contained in:
Gadelkareem
2024-07-09 04:54:05 +02:00
committed by GitHub
parent 80adc3baf9
commit b96ba7c0d6
3 changed files with 49 additions and 1 deletions
+7
View File
@@ -8,6 +8,11 @@ export const TriggerMode = {
manually: 'Manually', manually: 'Manually',
} }
export const DisplayMode = {
sidebar: 'Display in sidebar',
floatingToolbar: 'Display in floating toolbar',
}
export const ThemeMode = { export const ThemeMode = {
light: 'Light', light: 'Light',
dark: 'Dark', dark: 'Dark',
@@ -202,6 +207,8 @@ export const defaultConfig = {
/** @type {keyof TriggerMode}*/ /** @type {keyof TriggerMode}*/
triggerMode: 'manually', triggerMode: 'manually',
/** @type {keyof DisplayMode}*/
displayMode: 'sidebar',
/** @type {keyof ThemeMode}*/ /** @type {keyof ThemeMode}*/
themeMode: 'auto', themeMode: 'auto',
/** @type {keyof Models}*/ /** @type {keyof Models}*/
+23 -1
View File
@@ -70,11 +70,33 @@ async function mountComponent(siteConfig, userConfig) {
unmountComponentAtNode(e) unmountComponentAtNode(e)
e.remove() e.remove()
}) })
const position = {
x: window.innerWidth - 300 - (Math.floor((20 / 100) * window.innerWidth)),
y: window.innerHeight / 2 - 200,
}
const toolbarContainer = createElementAtPosition(position.x, position.y)
toolbarContainer.className = 'chatgptbox-toolbar-container-not-queryable'
if (userConfig.displayMode === 'floatingToolbar') {
render(
<FloatingToolbar
session={initSession({ modelName: userConfig.modelName })}
selection={question}
container={toolbarContainer}
dockable={true}
triggered={true}
closeable={true}
prompt={question}
/>,
toolbarContainer,
)
return
}
const container = document.createElement('div') const container = document.createElement('div')
container.id = 'chatgptbox-container' container.id = 'chatgptbox-container'
render( render(
<DecisionCard <DecisionCard
session={initSession({ modelName: (await getUserConfig()).modelName })} session={initSession({ modelName: userConfig.modelName })}
question={question} question={question}
siteConfig={siteConfig} siteConfig={siteConfig}
container={container} container={container}
+19
View File
@@ -14,6 +14,7 @@ import {
Models, Models,
ThemeMode, ThemeMode,
TriggerMode, TriggerMode,
DisplayMode,
isUsingMoonshotApi, isUsingMoonshotApi,
} from '../../config/index.mjs' } from '../../config/index.mjs'
import Browser from 'webextension-polyfill' import Browser from 'webextension-polyfill'
@@ -118,6 +119,24 @@ export function GeneralPart({ config, updateConfig }) {
})} })}
</select> </select>
</label> </label>
<label>
<legend>{t('DisplayMode')}</legend>
<select
required
onChange={(e) => {
const mode = e.target.value
updateConfig({ displayMode: mode })
}}
>
{Object.entries(DisplayMode).map(([key, desc]) => {
return (
<option value={key} key={key} selected={key === config.displayMode}>
{t(desc)}
</option>
)
})}
</select>
</label>
<label> <label>
<legend>{t('Theme')}</legend> <legend>{t('Theme')}</legend>
<select <select