MCPcopy Create free account
hub / github.com/dailydotdev/apps / RichTextInput

Function RichTextInput

packages/shared/src/components/fields/RichTextInput.tsx:171–1075  ·  view source on GitHub ↗
(
  {
    className = {},
    inputId,
    footer,
    textareaProps = {},
    submitCopy,
    submitButtonVariant = ButtonVariant.Float,
    showUserAvatar,
    isUpdatingDraft,
    timeline,
    isLoading,
    disabledSubmit,
    maxInputLength,
    onClose,
    postId,
    sourceId,
    onSubmit,
    onValueUpdate,
    initialContent = '',
    enabledCommand = {},
    editCommentId,
    parentCommentId,
    mentionSuggestions,
    allowBlockFormatting = true,
    minHeightClassName = 'min-h-[8rem]',
    markdownToHtml = markdownToHtmlBasic,
    hideToolbar = false,
    toolbarPosition = 'top',
    toolbarLeading,
    toolbarRightActions,
    hideMarkdownToggle = false,
    hideMarkdownHeader = false,
    hideFooter = false,
    onMarkdownModeChange,
  }: RichTextInputProps,
  ref: ForwardedRef<RichTextInputRef>,
)

Source from the content-addressed store, hash-verified

169}
170
171function RichTextInput(
172 {
173 className = {},
174 inputId,
175 footer,
176 textareaProps = {},
177 submitCopy,
178 submitButtonVariant = ButtonVariant.Float,
179 showUserAvatar,
180 isUpdatingDraft,
181 timeline,
182 isLoading,
183 disabledSubmit,
184 maxInputLength,
185 onClose,
186 postId,
187 sourceId,
188 onSubmit,
189 onValueUpdate,
190 initialContent = '',
191 enabledCommand = {},
192 editCommentId,
193 parentCommentId,
194 mentionSuggestions,
195 allowBlockFormatting = true,
196 minHeightClassName = 'min-h-[8rem]',
197 markdownToHtml = markdownToHtmlBasic,
198 hideToolbar = false,
199 toolbarPosition = 'top',
200 toolbarLeading,
201 toolbarRightActions,
202 hideMarkdownToggle = false,
203 hideMarkdownHeader = false,
204 hideFooter = false,
205 onMarkdownModeChange,
206 }: RichTextInputProps,
207 ref: ForwardedRef<RichTextInputRef>,
208): ReactElement {
209 const shouldShowSubmit = !!submitCopy;
210 const { user } = useAuthContext();
211 const { displayToast } = useToastNotification();
212 const { parentSelector } = usePopupSelector();
213 const toolbarRef = useRef<RichTextToolbarRef>(null);
214 const editorContainerRef = useRef<HTMLDivElement>(null);
215 const editorRef = useRef<Editor | null>(null);
216 const markdownTextareaRef = useRef<HTMLTextAreaElement>(null);
217 const dirtyRef = useRef(false);
218 const isSyncingRef = useRef(false);
219 const inputRef = useRef('');
220 const [offset, setOffset] = useState([0, 0]);
221 const [isMarkdownMode, setIsMarkdownMode] = useState(false);
222 const [submitShortcut, setSubmitShortcut] = useState('Ctrl + Enter');
223 useEffect(() => {
224 setSubmitShortcut(isAppleDevice() ? '⌘ + Enter' : 'Ctrl + Enter');
225 }, []);
226
227 const isUploadEnabled = enabledCommand[MarkdownCommand.Upload];
228 const isLinkEnabled = enabledCommand[MarkdownCommand.Link];

Callers

nothing calls this directly

Calls 15

useAuthContextFunction · 0.90
useToastNotificationFunction · 0.90
usePopupSelectorFunction · 0.90
isAppleDeviceFunction · 0.90
useDraftStorageFunction · 0.90
useMentionAutocompleteFunction · 0.90
useEmojiAutocompleteFunction · 0.90
htmlToMarkdownBasicFunction · 0.90
looksLikeMarkdownFunction · 0.90
useImageUploadFunction · 0.90
getInitialValueFunction · 0.85
setInputFunction · 0.85

Tested by

no test coverage detected