@ai-stack/payloadcms 3.2.8-beta → 3.2.10-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -21
- package/dist/ai/models/anthropic/generateRichText.d.ts +1 -1
- package/dist/ai/models/anthropic/generateRichText.d.ts.map +1 -1
- package/dist/ai/models/anthropic/generateRichText.js +5 -6
- package/dist/ai/models/anthropic/generateRichText.js.map +1 -1
- package/dist/ai/models/anthropic/index.js +15 -12
- package/dist/ai/models/anthropic/index.js.map +1 -1
- package/dist/ai/models/openai/generateImage.d.ts +2 -6
- package/dist/ai/models/openai/generateImage.d.ts.map +1 -1
- package/dist/ai/models/openai/generateImage.js +19 -9
- package/dist/ai/models/openai/generateImage.js.map +1 -1
- package/dist/ai/models/openai/generateRichText.d.ts +1 -1
- package/dist/ai/models/openai/generateRichText.d.ts.map +1 -1
- package/dist/ai/models/openai/generateRichText.js +5 -6
- package/dist/ai/models/openai/generateRichText.js.map +1 -1
- package/dist/ai/models/openai/index.d.ts.map +1 -1
- package/dist/ai/models/openai/index.js +133 -4
- package/dist/ai/models/openai/index.js.map +1 -1
- package/dist/ai/prompts.js +6 -6
- package/dist/ai/prompts.js.map +1 -1
- package/dist/ai/schemas/lexicalJsonSchema.d.ts +20 -370
- package/dist/ai/schemas/lexicalJsonSchema.d.ts.map +1 -1
- package/dist/ai/schemas/lexicalJsonSchema.js +81 -9
- package/dist/ai/schemas/lexicalJsonSchema.js.map +1 -1
- package/dist/ai/utils/editImagesWithOpenAI.d.ts +11 -0
- package/dist/ai/utils/editImagesWithOpenAI.d.ts.map +1 -0
- package/dist/ai/utils/editImagesWithOpenAI.js +37 -0
- package/dist/ai/utils/editImagesWithOpenAI.js.map +1 -0
- package/dist/ai/utils/filterEditorSchemaByNodes.d.ts +72 -0
- package/dist/ai/utils/filterEditorSchemaByNodes.d.ts.map +1 -0
- package/dist/ai/utils/filterEditorSchemaByNodes.js +43 -0
- package/dist/ai/utils/filterEditorSchemaByNodes.js.map +1 -0
- package/dist/ai/utils/isObjectSchema.d.ts +3 -0
- package/dist/ai/utils/isObjectSchema.d.ts.map +1 -0
- package/dist/ai/utils/isObjectSchema.js +5 -0
- package/dist/ai/utils/isObjectSchema.js.map +1 -0
- package/dist/collections/Instructions.d.ts.map +1 -1
- package/dist/collections/Instructions.js +43 -29
- package/dist/collections/Instructions.js.map +1 -1
- package/dist/defaults.d.ts +1 -1
- package/dist/defaults.js +1 -1
- package/dist/defaults.js.map +1 -1
- package/dist/endpoints/fetchFields.d.ts +2 -1
- package/dist/endpoints/fetchFields.d.ts.map +1 -1
- package/dist/endpoints/fetchFields.js +33 -17
- package/dist/endpoints/fetchFields.js.map +1 -1
- package/dist/endpoints/index.d.ts.map +1 -1
- package/dist/endpoints/index.js +65 -15
- package/dist/endpoints/index.js.map +1 -1
- package/dist/fields/ComposeField/ComposeField.js +3 -2
- package/dist/fields/ComposeField/ComposeField.js.map +1 -1
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts.map +1 -1
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.js +3 -2
- package/dist/fields/LexicalEditor/ComposeFeatureComponent.js.map +1 -1
- package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -1
- package/dist/fields/PromptEditorField/PromptEditorField.js +46 -16
- package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
- package/dist/fields/PromptEditorField/defaultStyle.d.ts +50 -0
- package/dist/fields/PromptEditorField/defaultStyle.d.ts.map +1 -0
- package/dist/fields/PromptEditorField/defaultStyle.js +51 -0
- package/dist/fields/PromptEditorField/defaultStyle.js.map +1 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +5 -3
- package/dist/init.js.map +1 -1
- package/dist/plugin.js +3 -3
- package/dist/plugin.js.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +3 -0
- package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -1
- package/dist/providers/InstructionsProvider/InstructionsProvider.js +14 -4
- package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
- package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +1 -1
- package/dist/providers/InstructionsProvider/useInstructions.js +54 -29
- package/dist/providers/InstructionsProvider/useInstructions.js.map +1 -1
- package/dist/types.d.ts +28 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/Compose/Compose.d.ts +2 -1
- package/dist/ui/Compose/Compose.d.ts.map +1 -1
- package/dist/ui/Compose/Compose.js +7 -6
- package/dist/ui/Compose/Compose.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +1 -1
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js +4 -0
- package/dist/ui/Compose/hooks/menu/TranslateMenu.js.map +1 -1
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts +2 -2
- package/dist/ui/Compose/hooks/menu/useMenu.d.ts.map +1 -1
- package/dist/ui/Compose/hooks/menu/useMenu.js +9 -4
- package/dist/ui/Compose/hooks/menu/useMenu.js.map +1 -1
- package/dist/ui/Compose/hooks/useGenerate.d.ts.map +1 -1
- package/dist/ui/Compose/hooks/useGenerate.js +11 -4
- package/dist/ui/Compose/hooks/useGenerate.js.map +1 -1
- package/dist/utilities/extractImageData.d.ts +10 -0
- package/dist/utilities/extractImageData.d.ts.map +1 -0
- package/dist/utilities/extractImageData.js +22 -0
- package/dist/utilities/extractImageData.js.map +1 -0
- package/dist/utilities/isPluginActivated.d.ts +1 -1
- package/dist/utilities/isPluginActivated.d.ts.map +1 -1
- package/dist/utilities/isPluginActivated.js.map +1 -1
- package/dist/utilities/setSafeLexicalState.js +5 -2
- package/dist/utilities/setSafeLexicalState.js.map +1 -1
- package/package.json +19 -14
- package/dist/ai/models/example-prompt-rich-text.md +0 -47
- package/dist/ai/models/example.d.ts +0 -73
- package/dist/ai/models/example.d.ts.map +0 -1
- package/dist/ai/models/example.js +0 -126
- package/dist/ai/models/example.js.map +0 -1
- package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts +0 -8
- package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts.map +0 -1
- package/dist/libraries/autocomplete/AutocompleteTextArea.js +0 -437
- package/dist/libraries/autocomplete/AutocompleteTextArea.js.map +0 -1
- package/dist/libraries/autocomplete/AutocompleteTextArea.module.scss +0 -35
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Credit: Yury Dymov
|
|
3
|
-
* Github: https://github.com/yury-dymov/react-autocomplete-input
|
|
4
|
-
*
|
|
5
|
-
* Modified to only be use for PromptEditorField
|
|
6
|
-
*/ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
-
import * as inputSelection from 'get-input-selection';
|
|
8
|
-
import isEqual from 'lodash.isequal';
|
|
9
|
-
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
10
|
-
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
11
|
-
import getCaretCoordinates from 'textarea-caret';
|
|
12
|
-
import styles from './AutocompleteTextArea.module.scss';
|
|
13
|
-
const KEY_UP = 38;
|
|
14
|
-
const KEY_DOWN = 40;
|
|
15
|
-
const KEY_RETURN = 13;
|
|
16
|
-
const KEY_ENTER = 14;
|
|
17
|
-
const KEY_ESCAPE = 27;
|
|
18
|
-
const KEY_TAB = 9;
|
|
19
|
-
const OPTION_LIST_MIN_WIDTH = 100;
|
|
20
|
-
export const AutocompleteTextField = (props)=>{
|
|
21
|
-
const { changeOnSelect = (trigger, slug)=>trigger + slug, defaultValue = '', disabled = false, matchAny = false, maxOptions = 10, minChars = 0, offsetX = 0, offsetY = 0, onBlur = (e)=>{}, onChange = (e)=>{}, onKeyDown = (e)=>{}, onRequestOptions = (e)=>{}, onSelect = (e)=>{}, options = [], passThroughEnter = false, passThroughTab = true, regex = '^[A-Za-z0-9\\-_]+$', requestOnlyIfNoOptions = true, spaceRemovers = [
|
|
22
|
-
',',
|
|
23
|
-
'.',
|
|
24
|
-
'!',
|
|
25
|
-
'?'
|
|
26
|
-
], spacer = ' ', trigger = '@', triggerCaseInsensitive = false, triggerMatchWholeWord = false, value: propValue = null, ...rest } = props;
|
|
27
|
-
const [helperVisible, setHelperVisible] = useState(false);
|
|
28
|
-
const [left, setLeft] = useState(0);
|
|
29
|
-
const [top, setTop] = useState(0);
|
|
30
|
-
const [triggerChar, setTriggerChar] = useState(null);
|
|
31
|
-
const [matchLength, setMatchLength] = useState(0);
|
|
32
|
-
const [matchStart, setMatchStart] = useState(0);
|
|
33
|
-
const [selection, setSelection] = useState(0);
|
|
34
|
-
const [value, setValue] = useState(null);
|
|
35
|
-
const [caret, setCaret] = useState(0);
|
|
36
|
-
const [currentOptions, setCurrentOptions] = useState([]);
|
|
37
|
-
const recentValue = useRef(defaultValue);
|
|
38
|
-
const enableSpaceRemovers = useRef(false);
|
|
39
|
-
const inputRef = useRef(null);
|
|
40
|
-
const currentRef = useRef(null);
|
|
41
|
-
const parentRef = useRef(null);
|
|
42
|
-
useEffect(()=>{
|
|
43
|
-
window.addEventListener('resize', handleResize);
|
|
44
|
-
window.addEventListener('scroll', handleResize);
|
|
45
|
-
return ()=>{
|
|
46
|
-
window.removeEventListener('resize', handleResize);
|
|
47
|
-
window.removeEventListener('scroll', handleResize);
|
|
48
|
-
};
|
|
49
|
-
}, []);
|
|
50
|
-
useEffect(()=>{
|
|
51
|
-
if (!isEqual(options, currentOptions)) {
|
|
52
|
-
updateHelper(recentValue.current, caret, options);
|
|
53
|
-
}
|
|
54
|
-
}, [
|
|
55
|
-
options,
|
|
56
|
-
caret
|
|
57
|
-
]);
|
|
58
|
-
useEffect(()=>{
|
|
59
|
-
if (helperVisible && currentRef.current) {
|
|
60
|
-
scrollIntoView(currentRef.current, {
|
|
61
|
-
boundary: parentRef.current,
|
|
62
|
-
scrollMode: 'if-needed'
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
}, [
|
|
66
|
-
helperVisible,
|
|
67
|
-
selection
|
|
68
|
-
]);
|
|
69
|
-
const handleResize = useCallback(()=>{
|
|
70
|
-
setHelperVisible(false);
|
|
71
|
-
}, []);
|
|
72
|
-
const isTrigger = useCallback((triggerStr, str, i)=>{
|
|
73
|
-
if (!triggerStr || !triggerStr.length) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
if (triggerMatchWholeWord && i > 0 && str.charAt(i - 1).match(/\w/)) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
if (str.substr(i, triggerStr.length) === triggerStr || triggerCaseInsensitive && str.substr(i, triggerStr.length).toLowerCase() === triggerStr.toLowerCase()) {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
return false;
|
|
83
|
-
}, [
|
|
84
|
-
triggerMatchWholeWord,
|
|
85
|
-
triggerCaseInsensitive
|
|
86
|
-
]);
|
|
87
|
-
const arrayTriggerMatch = useCallback((triggers, re)=>{
|
|
88
|
-
return triggers.map((trigger)=>({
|
|
89
|
-
triggerLength: trigger.length,
|
|
90
|
-
triggerMatch: trigger.match(re),
|
|
91
|
-
triggerStr: trigger
|
|
92
|
-
}));
|
|
93
|
-
}, []);
|
|
94
|
-
const getMatch = useCallback((str, caret, providedOptions)=>{
|
|
95
|
-
const re = new RegExp(regex);
|
|
96
|
-
const triggers = Array.isArray(trigger) ? trigger : [
|
|
97
|
-
trigger
|
|
98
|
-
];
|
|
99
|
-
triggers.sort();
|
|
100
|
-
const providedOptionsObject = Array.isArray(providedOptions) ? triggers.reduce((acc, triggerStr)=>({
|
|
101
|
-
...acc,
|
|
102
|
-
[triggerStr]: providedOptions
|
|
103
|
-
}), {}) : providedOptions;
|
|
104
|
-
const triggersMatch = arrayTriggerMatch(triggers, re);
|
|
105
|
-
let slugData = null;
|
|
106
|
-
for(let triggersIndex = 0; triggersIndex < triggersMatch.length; triggersIndex++){
|
|
107
|
-
const { triggerLength, triggerMatch, triggerStr } = triggersMatch[triggersIndex];
|
|
108
|
-
for(let i = caret - 1; i >= 0; --i){
|
|
109
|
-
const substr = str.substring(i, caret);
|
|
110
|
-
const match = substr.match(re);
|
|
111
|
-
let matchStart = -1;
|
|
112
|
-
if (triggerLength > 0) {
|
|
113
|
-
const triggerIdx = triggerMatch ? i : i - triggerLength + 1;
|
|
114
|
-
if (triggerIdx < 0) {
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
if (isTrigger(triggerStr, str, triggerIdx)) {
|
|
118
|
-
matchStart = triggerIdx + triggerLength;
|
|
119
|
-
}
|
|
120
|
-
if (!match && matchStart < 0) {
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
} else {
|
|
124
|
-
if (match && i > 0) {
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
matchStart = i === 0 && match ? 0 : i + 1;
|
|
128
|
-
if (caret - matchStart === 0) {
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (matchStart >= 0) {
|
|
133
|
-
const triggerOptions = providedOptionsObject[triggerStr];
|
|
134
|
-
if (triggerOptions == null) {
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
const matchedSlug = str.substring(matchStart, caret);
|
|
138
|
-
const filteredOptions = triggerOptions.filter((slug)=>{
|
|
139
|
-
const idx = slug.toLowerCase().indexOf(matchedSlug.toLowerCase());
|
|
140
|
-
return idx !== -1 && (matchAny || idx === 0);
|
|
141
|
-
});
|
|
142
|
-
const currTrigger = triggerStr;
|
|
143
|
-
const matchLength = matchedSlug.length;
|
|
144
|
-
slugData = {
|
|
145
|
-
matchLength,
|
|
146
|
-
matchStart,
|
|
147
|
-
options: filteredOptions,
|
|
148
|
-
trigger: currTrigger
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return slugData;
|
|
154
|
-
}, [
|
|
155
|
-
regex,
|
|
156
|
-
trigger,
|
|
157
|
-
arrayTriggerMatch,
|
|
158
|
-
isTrigger,
|
|
159
|
-
matchAny
|
|
160
|
-
]);
|
|
161
|
-
const updateCaretPosition = useCallback((newCaret)=>{
|
|
162
|
-
requestAnimationFrame(()=>{
|
|
163
|
-
setCaret(newCaret);
|
|
164
|
-
inputSelection.default.setCaretPosition(inputRef.current, newCaret);
|
|
165
|
-
});
|
|
166
|
-
}, []);
|
|
167
|
-
const updateHelper = useCallback((str, caretPos, helperOptions)=>{
|
|
168
|
-
const slug = getMatch(str, caretPos, helperOptions);
|
|
169
|
-
if (slug) {
|
|
170
|
-
const caretCoordinates = getCaretCoordinates(inputRef.current, caretPos);
|
|
171
|
-
const rect = inputRef.current.getBoundingClientRect();
|
|
172
|
-
const newTop = caretCoordinates.top + rect.top - inputRef.current.scrollTop;
|
|
173
|
-
const newLeft = Math.min(caretCoordinates.left + rect.left - inputRef.current.scrollLeft, window.innerWidth - OPTION_LIST_MIN_WIDTH);
|
|
174
|
-
if (slug.matchLength >= minChars && (slug.options.length > 1 || slug.options.length === 1 && (slug.options[0].length !== slug.matchLength || slug.options[0].length === 1))) {
|
|
175
|
-
setHelperVisible(true);
|
|
176
|
-
setTop(newTop);
|
|
177
|
-
setLeft(newLeft);
|
|
178
|
-
setTriggerChar(slug.trigger);
|
|
179
|
-
setMatchLength(slug.matchLength);
|
|
180
|
-
setMatchStart(slug.matchStart);
|
|
181
|
-
setCurrentOptions(slug.options);
|
|
182
|
-
} else {
|
|
183
|
-
if (!requestOnlyIfNoOptions || !slug.options.length) {
|
|
184
|
-
onRequestOptions(str.substr(slug.matchStart, slug.matchLength));
|
|
185
|
-
}
|
|
186
|
-
resetHelper();
|
|
187
|
-
}
|
|
188
|
-
updateCaretPosition(caretPos);
|
|
189
|
-
} else {
|
|
190
|
-
resetHelper();
|
|
191
|
-
}
|
|
192
|
-
}, [
|
|
193
|
-
getMatch,
|
|
194
|
-
minChars,
|
|
195
|
-
requestOnlyIfNoOptions,
|
|
196
|
-
onRequestOptions,
|
|
197
|
-
updateCaretPosition
|
|
198
|
-
]);
|
|
199
|
-
const resetHelper = useCallback(()=>{
|
|
200
|
-
setHelperVisible(false);
|
|
201
|
-
setSelection(0);
|
|
202
|
-
}, []);
|
|
203
|
-
const handleChange = useCallback((e)=>{
|
|
204
|
-
const str = e.target.value;
|
|
205
|
-
const caretPos = inputSelection.default.default(e.target).end;
|
|
206
|
-
if (!str.length) {
|
|
207
|
-
setHelperVisible(false);
|
|
208
|
-
}
|
|
209
|
-
recentValue.current = str;
|
|
210
|
-
if (!str.length || !caretPos) {
|
|
211
|
-
return onChange(e.target.value);
|
|
212
|
-
}
|
|
213
|
-
// Space removers logic
|
|
214
|
-
if (enableSpaceRemovers.current && spaceRemovers.length && str.length > 2 && spacer.length) {
|
|
215
|
-
for(let i = 0; i < Math.max(recentValue.current.length, str.length); ++i){
|
|
216
|
-
if (recentValue.current[i] !== str[i]) {
|
|
217
|
-
if (i >= 2 && str[i - 1] === spacer && spaceRemovers.indexOf(str[i - 2]) === -1 && spaceRemovers.indexOf(str[i]) !== -1 && getMatch(str.substring(0, i - 2), caretPos - 3, options)) {
|
|
218
|
-
const newValue = `${str.slice(0, i - 1)}${str.slice(i, i + 1)}${str.slice(i - 1, i)}${str.slice(i + 1)}`;
|
|
219
|
-
updateCaretPosition(i + 1);
|
|
220
|
-
inputRef.current.value = newValue;
|
|
221
|
-
if (!propValue) {
|
|
222
|
-
setValue(newValue);
|
|
223
|
-
}
|
|
224
|
-
return onChange(newValue);
|
|
225
|
-
}
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
enableSpaceRemovers.current = false;
|
|
230
|
-
}
|
|
231
|
-
updateHelper(str, caretPos, options);
|
|
232
|
-
if (!propValue) {
|
|
233
|
-
setValue(e.target.value);
|
|
234
|
-
}
|
|
235
|
-
return onChange(e.target.value);
|
|
236
|
-
}, [
|
|
237
|
-
onChange,
|
|
238
|
-
propValue,
|
|
239
|
-
spaceRemovers,
|
|
240
|
-
spacer,
|
|
241
|
-
options,
|
|
242
|
-
updateCaretPosition,
|
|
243
|
-
updateHelper,
|
|
244
|
-
getMatch
|
|
245
|
-
]);
|
|
246
|
-
const handleBlur = useCallback((e)=>{
|
|
247
|
-
resetHelper();
|
|
248
|
-
onBlur(e);
|
|
249
|
-
}, [
|
|
250
|
-
onBlur,
|
|
251
|
-
resetHelper
|
|
252
|
-
]);
|
|
253
|
-
const handleSelection = useCallback((idx)=>{
|
|
254
|
-
const slug = currentOptions[idx];
|
|
255
|
-
const value = recentValue.current;
|
|
256
|
-
const part1 = triggerChar.length === 0 ? '' : value.substring(0, matchStart - triggerChar.length);
|
|
257
|
-
const part2 = value.substring(matchStart + matchLength);
|
|
258
|
-
const event = {
|
|
259
|
-
target: inputRef.current
|
|
260
|
-
};
|
|
261
|
-
const changedStr = changeOnSelect(triggerChar, slug);
|
|
262
|
-
event.target.value = `${part1}${changedStr}${spacer}${part2}`;
|
|
263
|
-
handleChange(event);
|
|
264
|
-
onSelect(event.target.value);
|
|
265
|
-
resetHelper();
|
|
266
|
-
const advanceCaretDistance = part1.length + changedStr.length + (spacer ? spacer.length : 1);
|
|
267
|
-
updateCaretPosition(advanceCaretDistance);
|
|
268
|
-
enableSpaceRemovers.current = true;
|
|
269
|
-
}, [
|
|
270
|
-
currentOptions,
|
|
271
|
-
triggerChar,
|
|
272
|
-
matchStart,
|
|
273
|
-
matchLength,
|
|
274
|
-
changeOnSelect,
|
|
275
|
-
spacer,
|
|
276
|
-
handleChange,
|
|
277
|
-
onSelect,
|
|
278
|
-
resetHelper,
|
|
279
|
-
updateCaretPosition
|
|
280
|
-
]);
|
|
281
|
-
const handleKeyDown = useCallback((event)=>{
|
|
282
|
-
const optionsCount = maxOptions > 0 ? Math.min(currentOptions.length, maxOptions) : currentOptions.length;
|
|
283
|
-
if (helperVisible) {
|
|
284
|
-
switch(event.keyCode){
|
|
285
|
-
case KEY_ESCAPE:
|
|
286
|
-
event.preventDefault();
|
|
287
|
-
resetHelper();
|
|
288
|
-
break;
|
|
289
|
-
case KEY_UP:
|
|
290
|
-
event.preventDefault();
|
|
291
|
-
if (optionsCount > 0) {
|
|
292
|
-
setSelection((prevSelection)=>Math.max(0, optionsCount + prevSelection - 1) % optionsCount);
|
|
293
|
-
}
|
|
294
|
-
break;
|
|
295
|
-
case KEY_DOWN:
|
|
296
|
-
event.preventDefault();
|
|
297
|
-
if (optionsCount > 0) {
|
|
298
|
-
setSelection((prevSelection)=>(prevSelection + 1) % optionsCount);
|
|
299
|
-
}
|
|
300
|
-
break;
|
|
301
|
-
case KEY_ENTER:
|
|
302
|
-
case KEY_RETURN:
|
|
303
|
-
if (!passThroughEnter) {
|
|
304
|
-
event.preventDefault();
|
|
305
|
-
}
|
|
306
|
-
handleSelection(selection);
|
|
307
|
-
break;
|
|
308
|
-
case KEY_TAB:
|
|
309
|
-
if (!passThroughTab) {
|
|
310
|
-
event.preventDefault();
|
|
311
|
-
}
|
|
312
|
-
handleSelection(selection);
|
|
313
|
-
break;
|
|
314
|
-
default:
|
|
315
|
-
onKeyDown(event);
|
|
316
|
-
break;
|
|
317
|
-
}
|
|
318
|
-
} else {
|
|
319
|
-
onKeyDown(event);
|
|
320
|
-
}
|
|
321
|
-
}, [
|
|
322
|
-
helperVisible,
|
|
323
|
-
currentOptions,
|
|
324
|
-
maxOptions,
|
|
325
|
-
passThroughEnter,
|
|
326
|
-
passThroughTab,
|
|
327
|
-
selection,
|
|
328
|
-
onKeyDown,
|
|
329
|
-
resetHelper,
|
|
330
|
-
handleSelection
|
|
331
|
-
]);
|
|
332
|
-
const renderAutocompleteList = useCallback(()=>{
|
|
333
|
-
if (!helperVisible || currentOptions.length === 0) {
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
if (selection >= currentOptions.length) {
|
|
337
|
-
setSelection(0);
|
|
338
|
-
return null;
|
|
339
|
-
}
|
|
340
|
-
const optionNumber = maxOptions === 0 ? currentOptions.length : maxOptions;
|
|
341
|
-
const helperOptions = currentOptions.slice(0, optionNumber).map((val, idx)=>{
|
|
342
|
-
let [helper, value] = val.split(' ');
|
|
343
|
-
if (!value) {
|
|
344
|
-
helper = undefined;
|
|
345
|
-
value = val;
|
|
346
|
-
}
|
|
347
|
-
const renderHighlightedText = (text)=>{
|
|
348
|
-
const highlightStart = text.toLowerCase().indexOf(recentValue.current.substr(matchStart, matchLength).toLowerCase());
|
|
349
|
-
const highlightedText = text.substr(highlightStart, matchLength);
|
|
350
|
-
if (!val.startsWith(text)) {
|
|
351
|
-
return text;
|
|
352
|
-
}
|
|
353
|
-
return /*#__PURE__*/ _jsxs(React.Fragment, {
|
|
354
|
-
children: [
|
|
355
|
-
text.slice(0, highlightStart),
|
|
356
|
-
/*#__PURE__*/ _jsx("strong", {
|
|
357
|
-
children: highlightedText
|
|
358
|
-
}),
|
|
359
|
-
text.slice(highlightStart + matchLength)
|
|
360
|
-
]
|
|
361
|
-
});
|
|
362
|
-
};
|
|
363
|
-
return /*#__PURE__*/ _jsxs("li", {
|
|
364
|
-
className: idx === selection ? styles.active : null,
|
|
365
|
-
onClick: ()=>{
|
|
366
|
-
handleSelection(idx);
|
|
367
|
-
},
|
|
368
|
-
onMouseDown: (e)=>{
|
|
369
|
-
e.preventDefault();
|
|
370
|
-
},
|
|
371
|
-
onMouseEnter: ()=>{
|
|
372
|
-
setSelection(idx);
|
|
373
|
-
},
|
|
374
|
-
ref: idx === selection ? currentRef : null,
|
|
375
|
-
role: "presentation",
|
|
376
|
-
children: [
|
|
377
|
-
helper && /*#__PURE__*/ _jsx("code", {
|
|
378
|
-
className: styles.helper,
|
|
379
|
-
children: renderHighlightedText(helper)
|
|
380
|
-
}),
|
|
381
|
-
renderHighlightedText(value)
|
|
382
|
-
]
|
|
383
|
-
}, val);
|
|
384
|
-
});
|
|
385
|
-
const maxWidth = window.innerWidth - left - offsetX - 5;
|
|
386
|
-
const maxHeight = window.innerHeight - top - offsetY - 5;
|
|
387
|
-
return /*#__PURE__*/ _jsx("ul", {
|
|
388
|
-
className: styles.autocompleteInput + ' ' + 'popup__content',
|
|
389
|
-
ref: parentRef,
|
|
390
|
-
style: {
|
|
391
|
-
left: left + offsetX,
|
|
392
|
-
maxHeight,
|
|
393
|
-
maxWidth,
|
|
394
|
-
opacity: 'initial',
|
|
395
|
-
pointerEvents: 'initial',
|
|
396
|
-
position: 'fixed',
|
|
397
|
-
top: top + offsetY,
|
|
398
|
-
visibility: 'initial'
|
|
399
|
-
},
|
|
400
|
-
children: helperOptions
|
|
401
|
-
});
|
|
402
|
-
}, [
|
|
403
|
-
helperVisible,
|
|
404
|
-
currentOptions,
|
|
405
|
-
selection,
|
|
406
|
-
maxOptions,
|
|
407
|
-
left,
|
|
408
|
-
top,
|
|
409
|
-
offsetX,
|
|
410
|
-
offsetY,
|
|
411
|
-
matchStart,
|
|
412
|
-
matchLength,
|
|
413
|
-
handleSelection
|
|
414
|
-
]);
|
|
415
|
-
return /*#__PURE__*/ _jsxs("div", {
|
|
416
|
-
className: "popup",
|
|
417
|
-
children: [
|
|
418
|
-
/*#__PURE__*/ _jsx("textarea", {
|
|
419
|
-
className: "textarea-outer",
|
|
420
|
-
disabled: disabled,
|
|
421
|
-
onBlur: handleBlur,
|
|
422
|
-
onChange: handleChange,
|
|
423
|
-
onKeyDown: handleKeyDown,
|
|
424
|
-
ref: inputRef,
|
|
425
|
-
rows: 6,
|
|
426
|
-
style: {
|
|
427
|
-
overflow: 'auto'
|
|
428
|
-
},
|
|
429
|
-
value: propValue !== null ? propValue : value || defaultValue,
|
|
430
|
-
...rest
|
|
431
|
-
}),
|
|
432
|
-
renderAutocompleteList()
|
|
433
|
-
]
|
|
434
|
-
});
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
//# sourceMappingURL=AutocompleteTextArea.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/libraries/autocomplete/AutocompleteTextArea.tsx"],"sourcesContent":["/**\n * Credit: Yury Dymov\n * Github: https://github.com/yury-dymov/react-autocomplete-input\n *\n * Modified to only be use for PromptEditorField\n */\n\nimport * as inputSelection from 'get-input-selection'\nimport isEqual from 'lodash.isequal'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport getCaretCoordinates from 'textarea-caret'\n\nimport styles from './AutocompleteTextArea.module.scss'\n\nconst KEY_UP = 38\nconst KEY_DOWN = 40\nconst KEY_RETURN = 13\nconst KEY_ENTER = 14\nconst KEY_ESCAPE = 27\nconst KEY_TAB = 9\n\nconst OPTION_LIST_MIN_WIDTH = 100\n\nexport const AutocompleteTextField = (props) => {\n const {\n changeOnSelect = (trigger, slug) => trigger + slug,\n defaultValue = '',\n disabled = false,\n matchAny = false,\n maxOptions = 10,\n minChars = 0,\n offsetX = 0,\n offsetY = 0,\n onBlur = (e: any) => {},\n onChange = (e: any) => {},\n onKeyDown = (e: any) => {},\n onRequestOptions = (e: any) => {},\n onSelect = (e: any) => {},\n options = [],\n passThroughEnter = false,\n passThroughTab = true,\n regex = '^[A-Za-z0-9\\\\-_]+$',\n requestOnlyIfNoOptions = true,\n spaceRemovers = [',', '.', '!', '?'],\n spacer = ' ',\n trigger = '@',\n triggerCaseInsensitive = false,\n triggerMatchWholeWord = false,\n value: propValue = null,\n ...rest\n } = props\n\n const [helperVisible, setHelperVisible] = useState(false)\n const [left, setLeft] = useState(0)\n const [top, setTop] = useState(0)\n const [triggerChar, setTriggerChar] = useState(null)\n const [matchLength, setMatchLength] = useState(0)\n const [matchStart, setMatchStart] = useState(0)\n const [selection, setSelection] = useState(0)\n const [value, setValue] = useState(null)\n const [caret, setCaret] = useState(0)\n const [currentOptions, setCurrentOptions] = useState([])\n\n const recentValue = useRef(defaultValue)\n const enableSpaceRemovers = useRef(false)\n const inputRef = useRef(null)\n const currentRef = useRef(null)\n const parentRef = useRef(null)\n\n useEffect(() => {\n window.addEventListener('resize', handleResize)\n window.addEventListener('scroll', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n window.removeEventListener('scroll', handleResize)\n }\n }, [])\n\n useEffect(() => {\n if (!isEqual(options, currentOptions)) {\n updateHelper(recentValue.current, caret, options)\n }\n }, [options, caret])\n\n useEffect(() => {\n if (helperVisible && currentRef.current) {\n scrollIntoView(currentRef.current, { boundary: parentRef.current, scrollMode: 'if-needed' })\n }\n }, [helperVisible, selection])\n\n const handleResize = useCallback(() => {\n setHelperVisible(false)\n }, [])\n\n const isTrigger = useCallback(\n (triggerStr, str, i) => {\n if (!triggerStr || !triggerStr.length) {\n return true\n }\n\n if (triggerMatchWholeWord && i > 0 && str.charAt(i - 1).match(/\\w/)) {\n return false\n }\n\n if (\n str.substr(i, triggerStr.length) === triggerStr ||\n (triggerCaseInsensitive &&\n str.substr(i, triggerStr.length).toLowerCase() === triggerStr.toLowerCase())\n ) {\n return true\n }\n\n return false\n },\n [triggerMatchWholeWord, triggerCaseInsensitive],\n )\n\n const arrayTriggerMatch = useCallback((triggers, re) => {\n return triggers.map((trigger) => ({\n triggerLength: trigger.length,\n triggerMatch: trigger.match(re),\n triggerStr: trigger,\n }))\n }, [])\n\n const getMatch = useCallback(\n (str, caret, providedOptions) => {\n const re = new RegExp(regex)\n const triggers = Array.isArray(trigger) ? trigger : [trigger]\n triggers.sort()\n\n const providedOptionsObject = Array.isArray(providedOptions)\n ? triggers.reduce((acc, triggerStr) => ({ ...acc, [triggerStr]: providedOptions }), {})\n : providedOptions\n\n const triggersMatch = arrayTriggerMatch(triggers, re)\n let slugData = null\n\n for (let triggersIndex = 0; triggersIndex < triggersMatch.length; triggersIndex++) {\n const { triggerLength, triggerMatch, triggerStr } = triggersMatch[triggersIndex]\n\n for (let i = caret - 1; i >= 0; --i) {\n const substr = str.substring(i, caret)\n const match = substr.match(re)\n let matchStart = -1\n\n if (triggerLength > 0) {\n const triggerIdx = triggerMatch ? i : i - triggerLength + 1\n\n if (triggerIdx < 0) {\n break\n }\n\n if (isTrigger(triggerStr, str, triggerIdx)) {\n matchStart = triggerIdx + triggerLength\n }\n\n if (!match && matchStart < 0) {\n break\n }\n } else {\n if (match && i > 0) {\n continue\n }\n matchStart = i === 0 && match ? 0 : i + 1\n\n if (caret - matchStart === 0) {\n break\n }\n }\n\n if (matchStart >= 0) {\n const triggerOptions = providedOptionsObject[triggerStr]\n if (triggerOptions == null) {\n continue\n }\n\n const matchedSlug = str.substring(matchStart, caret)\n\n const filteredOptions = triggerOptions.filter((slug) => {\n const idx = slug.toLowerCase().indexOf(matchedSlug.toLowerCase())\n return idx !== -1 && (matchAny || idx === 0)\n })\n\n const currTrigger = triggerStr\n const matchLength = matchedSlug.length\n\n slugData = {\n matchLength,\n matchStart,\n options: filteredOptions,\n trigger: currTrigger,\n }\n }\n }\n }\n\n return slugData\n },\n [regex, trigger, arrayTriggerMatch, isTrigger, matchAny],\n )\n\n const updateCaretPosition = useCallback((newCaret) => {\n requestAnimationFrame(() => {\n setCaret(newCaret)\n inputSelection.default.setCaretPosition(inputRef.current, newCaret)\n })\n }, [])\n\n const updateHelper = useCallback(\n (str, caretPos, helperOptions) => {\n const slug = getMatch(str, caretPos, helperOptions)\n\n if (slug) {\n const caretCoordinates = getCaretCoordinates(inputRef.current, caretPos)\n const rect = inputRef.current.getBoundingClientRect()\n\n const newTop = caretCoordinates.top + rect.top - inputRef.current.scrollTop\n const newLeft = Math.min(\n caretCoordinates.left + rect.left - inputRef.current.scrollLeft,\n window.innerWidth - OPTION_LIST_MIN_WIDTH,\n )\n\n if (\n slug.matchLength >= minChars &&\n (slug.options.length > 1 ||\n (slug.options.length === 1 &&\n (slug.options[0].length !== slug.matchLength || slug.options[0].length === 1)))\n ) {\n setHelperVisible(true)\n setTop(newTop)\n setLeft(newLeft)\n setTriggerChar(slug.trigger)\n setMatchLength(slug.matchLength)\n setMatchStart(slug.matchStart)\n setCurrentOptions(slug.options)\n } else {\n if (!requestOnlyIfNoOptions || !slug.options.length) {\n onRequestOptions(str.substr(slug.matchStart, slug.matchLength))\n }\n resetHelper()\n }\n updateCaretPosition(caretPos)\n } else {\n resetHelper()\n }\n },\n [getMatch, minChars, requestOnlyIfNoOptions, onRequestOptions, updateCaretPosition],\n )\n\n const resetHelper = useCallback(() => {\n setHelperVisible(false)\n setSelection(0)\n }, [])\n\n const handleChange = useCallback(\n (e) => {\n const str = e.target.value\n const caretPos = inputSelection.default.default(e.target).end\n\n if (!str.length) {\n setHelperVisible(false)\n }\n\n recentValue.current = str\n\n if (!str.length || !caretPos) {\n return onChange(e.target.value)\n }\n\n // Space removers logic\n if (enableSpaceRemovers.current && spaceRemovers.length && str.length > 2 && spacer.length) {\n for (let i = 0; i < Math.max(recentValue.current.length, str.length); ++i) {\n if (recentValue.current[i] !== str[i]) {\n if (\n i >= 2 &&\n str[i - 1] === spacer &&\n spaceRemovers.indexOf(str[i - 2]) === -1 &&\n spaceRemovers.indexOf(str[i]) !== -1 &&\n getMatch(str.substring(0, i - 2), caretPos - 3, options)\n ) {\n const newValue = `${str.slice(0, i - 1)}${str.slice(i, i + 1)}${str.slice(i - 1, i)}${str.slice(i + 1)}`\n\n updateCaretPosition(i + 1)\n inputRef.current.value = newValue\n\n if (!propValue) {\n setValue(newValue)\n }\n\n return onChange(newValue)\n }\n\n break\n }\n }\n\n enableSpaceRemovers.current = false\n }\n\n updateHelper(str, caretPos, options)\n\n if (!propValue) {\n setValue(e.target.value)\n }\n\n return onChange(e.target.value)\n },\n [\n onChange,\n propValue,\n spaceRemovers,\n spacer,\n options,\n updateCaretPosition,\n updateHelper,\n getMatch,\n ],\n )\n\n const handleBlur = useCallback(\n (e) => {\n resetHelper()\n onBlur(e)\n },\n [onBlur, resetHelper],\n )\n\n const handleSelection = useCallback(\n (idx) => {\n const slug = currentOptions[idx]\n const value = recentValue.current\n const part1 =\n triggerChar.length === 0 ? '' : value.substring(0, matchStart - triggerChar.length)\n const part2 = value.substring(matchStart + matchLength)\n\n const event = { target: inputRef.current }\n const changedStr = changeOnSelect(triggerChar, slug)\n\n event.target.value = `${part1}${changedStr}${spacer}${part2}`\n handleChange(event)\n onSelect(event.target.value)\n\n resetHelper()\n\n const advanceCaretDistance = part1.length + changedStr.length + (spacer ? spacer.length : 1)\n updateCaretPosition(advanceCaretDistance)\n\n enableSpaceRemovers.current = true\n },\n [\n currentOptions,\n triggerChar,\n matchStart,\n matchLength,\n changeOnSelect,\n spacer,\n handleChange,\n onSelect,\n resetHelper,\n updateCaretPosition,\n ],\n )\n\n const handleKeyDown = useCallback(\n (event) => {\n const optionsCount =\n maxOptions > 0 ? Math.min(currentOptions.length, maxOptions) : currentOptions.length\n\n if (helperVisible) {\n switch (event.keyCode) {\n case KEY_ESCAPE:\n event.preventDefault()\n resetHelper()\n break\n case KEY_UP:\n event.preventDefault()\n if (optionsCount > 0) {\n setSelection(\n (prevSelection) => Math.max(0, optionsCount + prevSelection - 1) % optionsCount,\n )\n }\n break\n case KEY_DOWN:\n event.preventDefault()\n if (optionsCount > 0) {\n setSelection((prevSelection) => (prevSelection + 1) % optionsCount)\n }\n break\n case KEY_ENTER:\n case KEY_RETURN:\n if (!passThroughEnter) {\n event.preventDefault()\n }\n handleSelection(selection)\n break\n case KEY_TAB:\n if (!passThroughTab) {\n event.preventDefault()\n }\n handleSelection(selection)\n break\n default:\n onKeyDown(event)\n break\n }\n } else {\n onKeyDown(event)\n }\n },\n [\n helperVisible,\n currentOptions,\n maxOptions,\n passThroughEnter,\n passThroughTab,\n selection,\n onKeyDown,\n resetHelper,\n handleSelection,\n ],\n )\n\n const renderAutocompleteList = useCallback(() => {\n if (!helperVisible || currentOptions.length === 0) {\n return null\n }\n\n if (selection >= currentOptions.length) {\n setSelection(0)\n return null\n }\n\n const optionNumber = maxOptions === 0 ? currentOptions.length : maxOptions\n\n const helperOptions = currentOptions.slice(0, optionNumber).map((val, idx) => {\n let [helper, value] = val.split(' ')\n if (!value) {\n helper = undefined\n value = val\n }\n\n const renderHighlightedText = (text) => {\n const highlightStart = text\n .toLowerCase()\n .indexOf(recentValue.current.substr(matchStart, matchLength).toLowerCase())\n\n const highlightedText = text.substr(highlightStart, matchLength)\n\n if (!val.startsWith(text)) {\n return text\n }\n\n return (\n <React.Fragment>\n {text.slice(0, highlightStart)}\n <strong>{highlightedText}</strong>\n {text.slice(highlightStart + matchLength)}\n </React.Fragment>\n )\n }\n\n return (\n <li\n className={idx === selection ? styles.active : null}\n key={val}\n onClick={() => {\n handleSelection(idx)\n }}\n onMouseDown={(e) => {\n e.preventDefault()\n }}\n onMouseEnter={() => {\n setSelection(idx)\n }}\n ref={idx === selection ? currentRef : null}\n role=\"presentation\"\n >\n {helper && <code className={styles.helper}>{renderHighlightedText(helper)}</code>}\n {renderHighlightedText(value)}\n </li>\n )\n })\n\n const maxWidth = window.innerWidth - left - offsetX - 5\n const maxHeight = window.innerHeight - top - offsetY - 5\n\n return (\n <ul\n className={styles.autocompleteInput + ' ' + 'popup__content'}\n ref={parentRef}\n style={{\n left: left + offsetX,\n maxHeight,\n maxWidth,\n opacity: 'initial',\n pointerEvents: 'initial',\n position: 'fixed',\n top: top + offsetY,\n visibility: 'initial',\n }}\n >\n {helperOptions}\n </ul>\n )\n }, [\n helperVisible,\n currentOptions,\n selection,\n maxOptions,\n left,\n top,\n offsetX,\n offsetY,\n matchStart,\n matchLength,\n handleSelection,\n ])\n\n return (\n <div className=\"popup\">\n <textarea\n className=\"textarea-outer\"\n disabled={disabled}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n ref={inputRef}\n rows={6}\n style={{ overflow: 'auto' }}\n value={propValue !== null ? propValue : value || defaultValue}\n {...rest}\n />\n {renderAutocompleteList()}\n </div>\n )\n}\n"],"names":["inputSelection","isEqual","React","useCallback","useEffect","useRef","useState","scrollIntoView","getCaretCoordinates","styles","KEY_UP","KEY_DOWN","KEY_RETURN","KEY_ENTER","KEY_ESCAPE","KEY_TAB","OPTION_LIST_MIN_WIDTH","AutocompleteTextField","props","changeOnSelect","trigger","slug","defaultValue","disabled","matchAny","maxOptions","minChars","offsetX","offsetY","onBlur","e","onChange","onKeyDown","onRequestOptions","onSelect","options","passThroughEnter","passThroughTab","regex","requestOnlyIfNoOptions","spaceRemovers","spacer","triggerCaseInsensitive","triggerMatchWholeWord","value","propValue","rest","helperVisible","setHelperVisible","left","setLeft","top","setTop","triggerChar","setTriggerChar","matchLength","setMatchLength","matchStart","setMatchStart","selection","setSelection","setValue","caret","setCaret","currentOptions","setCurrentOptions","recentValue","enableSpaceRemovers","inputRef","currentRef","parentRef","window","addEventListener","handleResize","removeEventListener","updateHelper","current","boundary","scrollMode","isTrigger","triggerStr","str","i","length","charAt","match","substr","toLowerCase","arrayTriggerMatch","triggers","re","map","triggerLength","triggerMatch","getMatch","providedOptions","RegExp","Array","isArray","sort","providedOptionsObject","reduce","acc","triggersMatch","slugData","triggersIndex","substring","triggerIdx","triggerOptions","matchedSlug","filteredOptions","filter","idx","indexOf","currTrigger","updateCaretPosition","newCaret","requestAnimationFrame","default","setCaretPosition","caretPos","helperOptions","caretCoordinates","rect","getBoundingClientRect","newTop","scrollTop","newLeft","Math","min","scrollLeft","innerWidth","resetHelper","handleChange","target","end","max","newValue","slice","handleBlur","handleSelection","part1","part2","event","changedStr","advanceCaretDistance","handleKeyDown","optionsCount","keyCode","preventDefault","prevSelection","renderAutocompleteList","optionNumber","val","helper","split","undefined","renderHighlightedText","text","highlightStart","highlightedText","startsWith","Fragment","strong","li","className","active","onClick","onMouseDown","onMouseEnter","ref","role","code","maxWidth","maxHeight","innerHeight","ul","autocompleteInput","style","opacity","pointerEvents","position","visibility","div","textarea","rows","overflow"],"mappings":"AAAA;;;;;CAKC;AAED,YAAYA,oBAAoB,sBAAqB;AACrD,OAAOC,aAAa,iBAAgB;AACpC,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AACvE,OAAOC,oBAAoB,6BAA4B;AACvD,OAAOC,yBAAyB,iBAAgB;AAEhD,OAAOC,YAAY,qCAAoC;AAEvD,MAAMC,SAAS;AACf,MAAMC,WAAW;AACjB,MAAMC,aAAa;AACnB,MAAMC,YAAY;AAClB,MAAMC,aAAa;AACnB,MAAMC,UAAU;AAEhB,MAAMC,wBAAwB;AAE9B,OAAO,MAAMC,wBAAwB,CAACC;IACpC,MAAM,EACJC,iBAAiB,CAACC,SAASC,OAASD,UAAUC,IAAI,EAClDC,eAAe,EAAE,EACjBC,WAAW,KAAK,EAChBC,WAAW,KAAK,EAChBC,aAAa,EAAE,EACfC,WAAW,CAAC,EACZC,UAAU,CAAC,EACXC,UAAU,CAAC,EACXC,SAAS,CAACC,KAAY,CAAC,EACvBC,WAAW,CAACD,KAAY,CAAC,EACzBE,YAAY,CAACF,KAAY,CAAC,EAC1BG,mBAAmB,CAACH,KAAY,CAAC,EACjCI,WAAW,CAACJ,KAAY,CAAC,EACzBK,UAAU,EAAE,EACZC,mBAAmB,KAAK,EACxBC,iBAAiB,IAAI,EACrBC,QAAQ,oBAAoB,EAC5BC,yBAAyB,IAAI,EAC7BC,gBAAgB;QAAC;QAAK;QAAK;QAAK;KAAI,EACpCC,SAAS,GAAG,EACZrB,UAAU,GAAG,EACbsB,yBAAyB,KAAK,EAC9BC,wBAAwB,KAAK,EAC7BC,OAAOC,YAAY,IAAI,EACvB,GAAGC,MACJ,GAAG5B;IAEJ,MAAM,CAAC6B,eAAeC,iBAAiB,GAAG1C,SAAS;IACnD,MAAM,CAAC2C,MAAMC,QAAQ,GAAG5C,SAAS;IACjC,MAAM,CAAC6C,KAAKC,OAAO,GAAG9C,SAAS;IAC/B,MAAM,CAAC+C,aAAaC,eAAe,GAAGhD,SAAS;IAC/C,MAAM,CAACiD,aAAaC,eAAe,GAAGlD,SAAS;IAC/C,MAAM,CAACmD,YAAYC,cAAc,GAAGpD,SAAS;IAC7C,MAAM,CAACqD,WAAWC,aAAa,GAAGtD,SAAS;IAC3C,MAAM,CAACsC,OAAOiB,SAAS,GAAGvD,SAAS;IACnC,MAAM,CAACwD,OAAOC,SAAS,GAAGzD,SAAS;IACnC,MAAM,CAAC0D,gBAAgBC,kBAAkB,GAAG3D,SAAS,EAAE;IAEvD,MAAM4D,cAAc7D,OAAOiB;IAC3B,MAAM6C,sBAAsB9D,OAAO;IACnC,MAAM+D,WAAW/D,OAAO;IACxB,MAAMgE,aAAahE,OAAO;IAC1B,MAAMiE,YAAYjE,OAAO;IAEzBD,UAAU;QACRmE,OAAOC,gBAAgB,CAAC,UAAUC;QAClCF,OAAOC,gBAAgB,CAAC,UAAUC;QAElC,OAAO;YACLF,OAAOG,mBAAmB,CAAC,UAAUD;YACrCF,OAAOG,mBAAmB,CAAC,UAAUD;QACvC;IACF,GAAG,EAAE;IAELrE,UAAU;QACR,IAAI,CAACH,QAAQkC,SAAS6B,iBAAiB;YACrCW,aAAaT,YAAYU,OAAO,EAAEd,OAAO3B;QAC3C;IACF,GAAG;QAACA;QAAS2B;KAAM;IAEnB1D,UAAU;QACR,IAAI2C,iBAAiBsB,WAAWO,OAAO,EAAE;YACvCrE,eAAe8D,WAAWO,OAAO,EAAE;gBAAEC,UAAUP,UAAUM,OAAO;gBAAEE,YAAY;YAAY;QAC5F;IACF,GAAG;QAAC/B;QAAeY;KAAU;IAE7B,MAAMc,eAAetE,YAAY;QAC/B6C,iBAAiB;IACnB,GAAG,EAAE;IAEL,MAAM+B,YAAY5E,YAChB,CAAC6E,YAAYC,KAAKC;QAChB,IAAI,CAACF,cAAc,CAACA,WAAWG,MAAM,EAAE;YACrC,OAAO;QACT;QAEA,IAAIxC,yBAAyBuC,IAAI,KAAKD,IAAIG,MAAM,CAACF,IAAI,GAAGG,KAAK,CAAC,OAAO;YACnE,OAAO;QACT;QAEA,IACEJ,IAAIK,MAAM,CAACJ,GAAGF,WAAWG,MAAM,MAAMH,cACpCtC,0BACCuC,IAAIK,MAAM,CAACJ,GAAGF,WAAWG,MAAM,EAAEI,WAAW,OAAOP,WAAWO,WAAW,IAC3E;YACA,OAAO;QACT;QAEA,OAAO;IACT,GACA;QAAC5C;QAAuBD;KAAuB;IAGjD,MAAM8C,oBAAoBrF,YAAY,CAACsF,UAAUC;QAC/C,OAAOD,SAASE,GAAG,CAAC,CAACvE,UAAa,CAAA;gBAChCwE,eAAexE,QAAQ+D,MAAM;gBAC7BU,cAAczE,QAAQiE,KAAK,CAACK;gBAC5BV,YAAY5D;YACd,CAAA;IACF,GAAG,EAAE;IAEL,MAAM0E,WAAW3F,YACf,CAAC8E,KAAKnB,OAAOiC;QACX,MAAML,KAAK,IAAIM,OAAO1D;QACtB,MAAMmD,WAAWQ,MAAMC,OAAO,CAAC9E,WAAWA,UAAU;YAACA;SAAQ;QAC7DqE,SAASU,IAAI;QAEb,MAAMC,wBAAwBH,MAAMC,OAAO,CAACH,mBACxCN,SAASY,MAAM,CAAC,CAACC,KAAKtB,aAAgB,CAAA;gBAAE,GAAGsB,GAAG;gBAAE,CAACtB,WAAW,EAAEe;YAAgB,CAAA,GAAI,CAAC,KACnFA;QAEJ,MAAMQ,gBAAgBf,kBAAkBC,UAAUC;QAClD,IAAIc,WAAW;QAEf,IAAK,IAAIC,gBAAgB,GAAGA,gBAAgBF,cAAcpB,MAAM,EAAEsB,gBAAiB;YACjF,MAAM,EAAEb,aAAa,EAAEC,YAAY,EAAEb,UAAU,EAAE,GAAGuB,aAAa,CAACE,cAAc;YAEhF,IAAK,IAAIvB,IAAIpB,QAAQ,GAAGoB,KAAK,GAAG,EAAEA,EAAG;gBACnC,MAAMI,SAASL,IAAIyB,SAAS,CAACxB,GAAGpB;gBAChC,MAAMuB,QAAQC,OAAOD,KAAK,CAACK;gBAC3B,IAAIjC,aAAa,CAAC;gBAElB,IAAImC,gBAAgB,GAAG;oBACrB,MAAMe,aAAad,eAAeX,IAAIA,IAAIU,gBAAgB;oBAE1D,IAAIe,aAAa,GAAG;wBAClB;oBACF;oBAEA,IAAI5B,UAAUC,YAAYC,KAAK0B,aAAa;wBAC1ClD,aAAakD,aAAaf;oBAC5B;oBAEA,IAAI,CAACP,SAAS5B,aAAa,GAAG;wBAC5B;oBACF;gBACF,OAAO;oBACL,IAAI4B,SAASH,IAAI,GAAG;wBAClB;oBACF;oBACAzB,aAAayB,MAAM,KAAKG,QAAQ,IAAIH,IAAI;oBAExC,IAAIpB,QAAQL,eAAe,GAAG;wBAC5B;oBACF;gBACF;gBAEA,IAAIA,cAAc,GAAG;oBACnB,MAAMmD,iBAAiBR,qBAAqB,CAACpB,WAAW;oBACxD,IAAI4B,kBAAkB,MAAM;wBAC1B;oBACF;oBAEA,MAAMC,cAAc5B,IAAIyB,SAAS,CAACjD,YAAYK;oBAE9C,MAAMgD,kBAAkBF,eAAeG,MAAM,CAAC,CAAC1F;wBAC7C,MAAM2F,MAAM3F,KAAKkE,WAAW,GAAG0B,OAAO,CAACJ,YAAYtB,WAAW;wBAC9D,OAAOyB,QAAQ,CAAC,KAAMxF,CAAAA,YAAYwF,QAAQ,CAAA;oBAC5C;oBAEA,MAAME,cAAclC;oBACpB,MAAMzB,cAAcsD,YAAY1B,MAAM;oBAEtCqB,WAAW;wBACTjD;wBACAE;wBACAtB,SAAS2E;wBACT1F,SAAS8F;oBACX;gBACF;YACF;QACF;QAEA,OAAOV;IACT,GACA;QAAClE;QAAOlB;QAASoE;QAAmBT;QAAWvD;KAAS;IAG1D,MAAM2F,sBAAsBhH,YAAY,CAACiH;QACvCC,sBAAsB;YACpBtD,SAASqD;YACTpH,eAAesH,OAAO,CAACC,gBAAgB,CAACnD,SAASQ,OAAO,EAAEwC;QAC5D;IACF,GAAG,EAAE;IAEL,MAAMzC,eAAexE,YACnB,CAAC8E,KAAKuC,UAAUC;QACd,MAAMpG,OAAOyE,SAASb,KAAKuC,UAAUC;QAErC,IAAIpG,MAAM;YACR,MAAMqG,mBAAmBlH,oBAAoB4D,SAASQ,OAAO,EAAE4C;YAC/D,MAAMG,OAAOvD,SAASQ,OAAO,CAACgD,qBAAqB;YAEnD,MAAMC,SAASH,iBAAiBvE,GAAG,GAAGwE,KAAKxE,GAAG,GAAGiB,SAASQ,OAAO,CAACkD,SAAS;YAC3E,MAAMC,UAAUC,KAAKC,GAAG,CACtBP,iBAAiBzE,IAAI,GAAG0E,KAAK1E,IAAI,GAAGmB,SAASQ,OAAO,CAACsD,UAAU,EAC/D3D,OAAO4D,UAAU,GAAGnH;YAGtB,IACEK,KAAKkC,WAAW,IAAI7B,YACnBL,CAAAA,KAAKc,OAAO,CAACgD,MAAM,GAAG,KACpB9D,KAAKc,OAAO,CAACgD,MAAM,KAAK,KACtB9D,CAAAA,KAAKc,OAAO,CAAC,EAAE,CAACgD,MAAM,KAAK9D,KAAKkC,WAAW,IAAIlC,KAAKc,OAAO,CAAC,EAAE,CAACgD,MAAM,KAAK,CAAA,CAAE,GACjF;gBACAnC,iBAAiB;gBACjBI,OAAOyE;gBACP3E,QAAQ6E;gBACRzE,eAAejC,KAAKD,OAAO;gBAC3BoC,eAAenC,KAAKkC,WAAW;gBAC/BG,cAAcrC,KAAKoC,UAAU;gBAC7BQ,kBAAkB5C,KAAKc,OAAO;YAChC,OAAO;gBACL,IAAI,CAACI,0BAA0B,CAAClB,KAAKc,OAAO,CAACgD,MAAM,EAAE;oBACnDlD,iBAAiBgD,IAAIK,MAAM,CAACjE,KAAKoC,UAAU,EAAEpC,KAAKkC,WAAW;gBAC/D;gBACA6E;YACF;YACAjB,oBAAoBK;QACtB,OAAO;YACLY;QACF;IACF,GACA;QAACtC;QAAUpE;QAAUa;QAAwBN;QAAkBkF;KAAoB;IAGrF,MAAMiB,cAAcjI,YAAY;QAC9B6C,iBAAiB;QACjBY,aAAa;IACf,GAAG,EAAE;IAEL,MAAMyE,eAAelI,YACnB,CAAC2B;QACC,MAAMmD,MAAMnD,EAAEwG,MAAM,CAAC1F,KAAK;QAC1B,MAAM4E,WAAWxH,eAAesH,OAAO,CAACA,OAAO,CAACxF,EAAEwG,MAAM,EAAEC,GAAG;QAE7D,IAAI,CAACtD,IAAIE,MAAM,EAAE;YACfnC,iBAAiB;QACnB;QAEAkB,YAAYU,OAAO,GAAGK;QAEtB,IAAI,CAACA,IAAIE,MAAM,IAAI,CAACqC,UAAU;YAC5B,OAAOzF,SAASD,EAAEwG,MAAM,CAAC1F,KAAK;QAChC;QAEA,uBAAuB;QACvB,IAAIuB,oBAAoBS,OAAO,IAAIpC,cAAc2C,MAAM,IAAIF,IAAIE,MAAM,GAAG,KAAK1C,OAAO0C,MAAM,EAAE;YAC1F,IAAK,IAAID,IAAI,GAAGA,IAAI8C,KAAKQ,GAAG,CAACtE,YAAYU,OAAO,CAACO,MAAM,EAAEF,IAAIE,MAAM,GAAG,EAAED,EAAG;gBACzE,IAAIhB,YAAYU,OAAO,CAACM,EAAE,KAAKD,GAAG,CAACC,EAAE,EAAE;oBACrC,IACEA,KAAK,KACLD,GAAG,CAACC,IAAI,EAAE,KAAKzC,UACfD,cAAcyE,OAAO,CAAChC,GAAG,CAACC,IAAI,EAAE,MAAM,CAAC,KACvC1C,cAAcyE,OAAO,CAAChC,GAAG,CAACC,EAAE,MAAM,CAAC,KACnCY,SAASb,IAAIyB,SAAS,CAAC,GAAGxB,IAAI,IAAIsC,WAAW,GAAGrF,UAChD;wBACA,MAAMsG,WAAW,GAAGxD,IAAIyD,KAAK,CAAC,GAAGxD,IAAI,KAAKD,IAAIyD,KAAK,CAACxD,GAAGA,IAAI,KAAKD,IAAIyD,KAAK,CAACxD,IAAI,GAAGA,KAAKD,IAAIyD,KAAK,CAACxD,IAAI,IAAI;wBAExGiC,oBAAoBjC,IAAI;wBACxBd,SAASQ,OAAO,CAAChC,KAAK,GAAG6F;wBAEzB,IAAI,CAAC5F,WAAW;4BACdgB,SAAS4E;wBACX;wBAEA,OAAO1G,SAAS0G;oBAClB;oBAEA;gBACF;YACF;YAEAtE,oBAAoBS,OAAO,GAAG;QAChC;QAEAD,aAAaM,KAAKuC,UAAUrF;QAE5B,IAAI,CAACU,WAAW;YACdgB,SAAS/B,EAAEwG,MAAM,CAAC1F,KAAK;QACzB;QAEA,OAAOb,SAASD,EAAEwG,MAAM,CAAC1F,KAAK;IAChC,GACA;QACEb;QACAc;QACAL;QACAC;QACAN;QACAgF;QACAxC;QACAmB;KACD;IAGH,MAAM6C,aAAaxI,YACjB,CAAC2B;QACCsG;QACAvG,OAAOC;IACT,GACA;QAACD;QAAQuG;KAAY;IAGvB,MAAMQ,kBAAkBzI,YACtB,CAAC6G;QACC,MAAM3F,OAAO2C,cAAc,CAACgD,IAAI;QAChC,MAAMpE,QAAQsB,YAAYU,OAAO;QACjC,MAAMiE,QACJxF,YAAY8B,MAAM,KAAK,IAAI,KAAKvC,MAAM8D,SAAS,CAAC,GAAGjD,aAAaJ,YAAY8B,MAAM;QACpF,MAAM2D,QAAQlG,MAAM8D,SAAS,CAACjD,aAAaF;QAE3C,MAAMwF,QAAQ;YAAET,QAAQlE,SAASQ,OAAO;QAAC;QACzC,MAAMoE,aAAa7H,eAAekC,aAAahC;QAE/C0H,MAAMT,MAAM,CAAC1F,KAAK,GAAG,GAAGiG,QAAQG,aAAavG,SAASqG,OAAO;QAC7DT,aAAaU;QACb7G,SAAS6G,MAAMT,MAAM,CAAC1F,KAAK;QAE3BwF;QAEA,MAAMa,uBAAuBJ,MAAM1D,MAAM,GAAG6D,WAAW7D,MAAM,GAAI1C,CAAAA,SAASA,OAAO0C,MAAM,GAAG,CAAA;QAC1FgC,oBAAoB8B;QAEpB9E,oBAAoBS,OAAO,GAAG;IAChC,GACA;QACEZ;QACAX;QACAI;QACAF;QACApC;QACAsB;QACA4F;QACAnG;QACAkG;QACAjB;KACD;IAGH,MAAM+B,gBAAgB/I,YACpB,CAAC4I;QACC,MAAMI,eACJ1H,aAAa,IAAIuG,KAAKC,GAAG,CAACjE,eAAemB,MAAM,EAAE1D,cAAcuC,eAAemB,MAAM;QAEtF,IAAIpC,eAAe;YACjB,OAAQgG,MAAMK,OAAO;gBACnB,KAAKtI;oBACHiI,MAAMM,cAAc;oBACpBjB;oBACA;gBACF,KAAK1H;oBACHqI,MAAMM,cAAc;oBACpB,IAAIF,eAAe,GAAG;wBACpBvF,aACE,CAAC0F,gBAAkBtB,KAAKQ,GAAG,CAAC,GAAGW,eAAeG,gBAAgB,KAAKH;oBAEvE;oBACA;gBACF,KAAKxI;oBACHoI,MAAMM,cAAc;oBACpB,IAAIF,eAAe,GAAG;wBACpBvF,aAAa,CAAC0F,gBAAkB,AAACA,CAAAA,gBAAgB,CAAA,IAAKH;oBACxD;oBACA;gBACF,KAAKtI;gBACL,KAAKD;oBACH,IAAI,CAACwB,kBAAkB;wBACrB2G,MAAMM,cAAc;oBACtB;oBACAT,gBAAgBjF;oBAChB;gBACF,KAAK5C;oBACH,IAAI,CAACsB,gBAAgB;wBACnB0G,MAAMM,cAAc;oBACtB;oBACAT,gBAAgBjF;oBAChB;gBACF;oBACE3B,UAAU+G;oBACV;YACJ;QACF,OAAO;YACL/G,UAAU+G;QACZ;IACF,GACA;QACEhG;QACAiB;QACAvC;QACAW;QACAC;QACAsB;QACA3B;QACAoG;QACAQ;KACD;IAGH,MAAMW,yBAAyBpJ,YAAY;QACzC,IAAI,CAAC4C,iBAAiBiB,eAAemB,MAAM,KAAK,GAAG;YACjD,OAAO;QACT;QAEA,IAAIxB,aAAaK,eAAemB,MAAM,EAAE;YACtCvB,aAAa;YACb,OAAO;QACT;QAEA,MAAM4F,eAAe/H,eAAe,IAAIuC,eAAemB,MAAM,GAAG1D;QAEhE,MAAMgG,gBAAgBzD,eAAe0E,KAAK,CAAC,GAAGc,cAAc7D,GAAG,CAAC,CAAC8D,KAAKzC;YACpE,IAAI,CAAC0C,QAAQ9G,MAAM,GAAG6G,IAAIE,KAAK,CAAC;YAChC,IAAI,CAAC/G,OAAO;gBACV8G,SAASE;gBACThH,QAAQ6G;YACV;YAEA,MAAMI,wBAAwB,CAACC;gBAC7B,MAAMC,iBAAiBD,KACpBvE,WAAW,GACX0B,OAAO,CAAC/C,YAAYU,OAAO,CAACU,MAAM,CAAC7B,YAAYF,aAAagC,WAAW;gBAE1E,MAAMyE,kBAAkBF,KAAKxE,MAAM,CAACyE,gBAAgBxG;gBAEpD,IAAI,CAACkG,IAAIQ,UAAU,CAACH,OAAO;oBACzB,OAAOA;gBACT;gBAEA,qBACE,MAAC5J,MAAMgK,QAAQ;;wBACZJ,KAAKpB,KAAK,CAAC,GAAGqB;sCACf,KAACI;sCAAQH;;wBACRF,KAAKpB,KAAK,CAACqB,iBAAiBxG;;;YAGnC;YAEA,qBACE,MAAC6G;gBACCC,WAAWrD,QAAQrD,YAAYlD,OAAO6J,MAAM,GAAG;gBAE/CC,SAAS;oBACP3B,gBAAgB5B;gBAClB;gBACAwD,aAAa,CAAC1I;oBACZA,EAAEuH,cAAc;gBAClB;gBACAoB,cAAc;oBACZ7G,aAAaoD;gBACf;gBACA0D,KAAK1D,QAAQrD,YAAYU,aAAa;gBACtCsG,MAAK;;oBAEJjB,wBAAU,KAACkB;wBAAKP,WAAW5J,OAAOiJ,MAAM;kCAAGG,sBAAsBH;;oBACjEG,sBAAsBjH;;eAdlB6G;QAiBX;QAEA,MAAMoB,WAAWtG,OAAO4D,UAAU,GAAGlF,OAAOtB,UAAU;QACtD,MAAMmJ,YAAYvG,OAAOwG,WAAW,GAAG5H,MAAMvB,UAAU;QAEvD,qBACE,KAACoJ;YACCX,WAAW5J,OAAOwK,iBAAiB,GAAG,MAAM;YAC5CP,KAAKpG;YACL4G,OAAO;gBACLjI,MAAMA,OAAOtB;gBACbmJ;gBACAD;gBACAM,SAAS;gBACTC,eAAe;gBACfC,UAAU;gBACVlI,KAAKA,MAAMvB;gBACX0J,YAAY;YACd;sBAEC7D;;IAGP,GAAG;QACD1E;QACAiB;QACAL;QACAlC;QACAwB;QACAE;QACAxB;QACAC;QACA6B;QACAF;QACAqF;KACD;IAED,qBACE,MAAC2C;QAAIlB,WAAU;;0BACb,KAACmB;gBACCnB,WAAU;gBACV9I,UAAUA;gBACVM,QAAQ8G;gBACR5G,UAAUsG;gBACVrG,WAAWkH;gBACXwB,KAAKtG;gBACLqH,MAAM;gBACNP,OAAO;oBAAEQ,UAAU;gBAAO;gBAC1B9I,OAAOC,cAAc,OAAOA,YAAYD,SAAStB;gBAChD,GAAGwB,IAAI;;YAETyG;;;AAGP,EAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
.autocompleteInput {
|
|
2
|
-
background-clip: padding-box;
|
|
3
|
-
border: 1px solid rgba(0,0,0,0.15);
|
|
4
|
-
bottom: auto;
|
|
5
|
-
box-shadow: 0 6px 12px rgba(0,0,0,0.175);
|
|
6
|
-
display: block;
|
|
7
|
-
font-size: 14px;
|
|
8
|
-
list-style: none;
|
|
9
|
-
position: fixed;
|
|
10
|
-
text-align: left;
|
|
11
|
-
z-index: 20000;
|
|
12
|
-
overflow-y: auto;
|
|
13
|
-
margin-top: 1em;
|
|
14
|
-
|
|
15
|
-
padding: var(--popup-padding)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.autocompleteInput > li {
|
|
19
|
-
cursor: pointer;
|
|
20
|
-
padding: 4px 8px;
|
|
21
|
-
min-width: 110px;
|
|
22
|
-
color: var(--theme-elevation-800);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.autocompleteInput > li.active {
|
|
26
|
-
background-color: var(--theme-elevation-100);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.helper {
|
|
30
|
-
padding: 0.2em;
|
|
31
|
-
font-size: 12px;
|
|
32
|
-
margin-right: 0.5em;
|
|
33
|
-
background: rgb(0 255 111 / 10%);
|
|
34
|
-
border-radius: 4px;
|
|
35
|
-
}
|