Skip to content
Snippets Groups Projects
Commit 684fe329 authored by victor mutai's avatar victor mutai
Browse files

feat: add list of prompts to popup

parent 3e8b6577
No related branches found
No related tags found
1 merge request!549Allow book owner to add customised AI writing prompts
...@@ -180,6 +180,8 @@ export default { ...@@ -180,6 +180,8 @@ export default {
AskAiContentService: { AskAiContentService: {
AskAiContentTransformation: DummyPromise, AskAiContentTransformation: DummyPromise,
AiOn: true, AiOn: true,
customPromptsOn: true,
freeTextPrompts: [],
}, },
services: [ services: [
......
...@@ -96,14 +96,25 @@ const ResultText = styled.div` ...@@ -96,14 +96,25 @@ const ResultText = styled.div`
const SubmitButton = styled.button` const SubmitButton = styled.button`
background: none; background: none;
border: none; border: none;
cursor: pointer; cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};
outline: none; outline: none;
padding: 0 8px; /* Adjust padding as needed */ padding: 0 8px; /* Adjust padding as needed */
`; `;
const PromptDiv = styled.div`
background: white;
border: 0.5px #dcdcdc solid;
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.08);
display: inline-flex;
justify-content: space-between;
padding: 8px 12px;
width: 458px;
`;
const AskAIOverlay = ({ setPosition, position, config }) => { const AskAIOverlay = ({ setPosition, position, config }) => {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
const { const {
app,
pmViews: { main }, pmViews: { main },
options, options,
} = useContext(WaxContext); } = useContext(WaxContext);
...@@ -113,6 +124,9 @@ const AskAIOverlay = ({ setPosition, position, config }) => { ...@@ -113,6 +124,9 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
const { AskAiContentTransformation } = config; const { AskAiContentTransformation } = config;
const inputRef = useRef(null); const inputRef = useRef(null);
const aiService = app.config.get('config.AskAiContentService');
const prompts = aiService.freeTextPrompts;
useLayoutEffect(() => { useLayoutEffect(() => {
const WaxSurface = main.dom.getBoundingClientRect(); const WaxSurface = main.dom.getBoundingClientRect();
const { selection } = main.state; const { selection } = main.state;
...@@ -198,10 +212,16 @@ const AskAIOverlay = ({ setPosition, position, config }) => { ...@@ -198,10 +212,16 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
} }
}; };
const handleSubmitPrompt = idx => {
inputRef.current.value = prompts[idx];
handleSubmit();
};
return options?.AiOn ? ( return options?.AiOn ? (
<Wrapper id="ai-overlay"> <Wrapper id="ai-overlay">
<AskAIForm> <AskAIForm>
<AskAIFormInput <AskAIFormInput
disabled={!aiService.customPromptsOn}
id="askAiInput" id="askAiInput"
onKeyPress={handleKeyDown} onKeyPress={handleKeyDown}
placeholder={ placeholder={
...@@ -212,10 +232,24 @@ const AskAIOverlay = ({ setPosition, position, config }) => { ...@@ -212,10 +232,24 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
ref={inputRef} ref={inputRef}
type="text" type="text"
/> />
<SubmitButton onClick={handleSubmit}> <SubmitButton
disabled={!aiService.customPromptsOn}
onClick={handleSubmit}
>
{isLoading ? <icons.loaderIco /> : <icons.submitIco />} {isLoading ? <icons.loaderIco /> : <icons.submitIco />}
</SubmitButton> </SubmitButton>
</AskAIForm> </AskAIForm>
{prompts.map((prompt, idx) => (
<PromptDiv key={prompt}>
<ResultText>{prompt}</ResultText>
<SubmitButton
disabled={isLoading}
onClick={() => handleSubmitPrompt(idx)}
>
<icons.submitIco />
</SubmitButton>
</PromptDiv>
))}
{isSubmitted && ( {isSubmitted && (
<> <>
<ResultDiv> <ResultDiv>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment