@lax-wp/design-system 0.13.32 → 0.13.33-beta.0
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/dist/components/button/Button.cjs.js +5 -5
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.es.js +18 -18
- package/dist/components/button/Button.es.js.map +1 -1
- package/dist/components/button/IconButton.cjs.js +1 -1
- package/dist/components/button/IconButton.cjs.js.map +1 -1
- package/dist/components/button/IconButton.es.js +8 -8
- package/dist/components/button/IconButton.es.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.es.js +13 -13
- package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.es.js +11 -11
- package/dist/components/data-display/infinite-table/body/cell/ActionCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js +12 -12
- package/dist/components/data-display/infinite-table/body/cell/CheckboxCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +141 -143
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js +2 -2
- package/dist/components/data-display/infinite-table/body/cell/LoaderCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.es.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/SpinnerCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/row.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/row.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/row.es.js +281 -286
- package/dist/components/data-display/infinite-table/body/rows/row.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/context.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/context.d.ts +0 -1
- package/dist/components/data-display/infinite-table/context.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.es.js +1 -1
- package/dist/components/data-display/infinite-table/head/CheckAll.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/cell/index.es.js +2 -2
- package/dist/components/data-display/infinite-table/head/cell/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/index.es.js +20 -20
- package/dist/components/data-display/infinite-table/head/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.d.ts +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +208 -211
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/types.d.ts +0 -22
- package/dist/components/data-display/tag/Tag.cjs.js +1 -1
- package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
- package/dist/components/data-display/tag/Tag.es.js +11 -9
- package/dist/components/data-display/tag/Tag.es.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.es.js +9 -9
- package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.es.js +30 -32
- package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.es.js +11 -12
- package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.es.js +62 -70
- package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.es.js +32 -32
- package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
- package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +16 -18
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
- package/dist/components/forms/field-options/Item.cjs.js +1 -1
- package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
- package/dist/components/forms/field-options/Item.es.js +5 -5
- package/dist/components/forms/field-options/Item.es.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
- package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +33 -35
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
- package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
- package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.es.js +2 -2
- package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
- package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
- package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.d.ts +4 -0
- package/dist/components/forms/select-field/SelectField.es.js +202 -203
- package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.es.js +14 -14
- package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.es.js +5 -5
- package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
- package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
- package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
- package/dist/components/user-avatar/UserAvatar.es.js +40 -38
- package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
- package/dist/components/user-avatar/constants.cjs.js +1 -1
- package/dist/components/user-avatar/constants.cjs.js.map +1 -1
- package/dist/components/user-avatar/constants.d.ts +1 -0
- package/dist/components/user-avatar/constants.es.js +10 -9
- package/dist/components/user-avatar/constants.es.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichMarkdownInput.cjs.js","sources":["../../../../src/components/forms/md-input/RichMarkdownInput.tsx"],"sourcesContent":["import cn from \"classnames\";\nimport { forwardRef, useRef, useState } from \"react\";\nimport {\n\tFormatBold,\n\tFormatItalic,\n\tFormatUnderlined,\n\tFormatListBulleted,\n\tFormatListNumbered,\n\tOpenInFull,\n\tEdit,\n\tVisibilityOutlined,\n} from \"@mui/icons-material\";\nimport { Modal } from \"../../data-display/modal/Modal\";\nimport Button from \"../../button/Button\";\nimport { Tabs } from \"../../navigation/tabs/Tabs\";\nimport { MarkdownPreview } from \"./MarkdownPreview\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { InputLabel } from \"../shared/InputLabel\";\n\n/**\n * Props for the RichMarkdownInput component\n */\nexport interface RichMarkdownInputProps {\n\t/** Unique identifier for the markdown input */\n\tid?: string;\n\t/** Current markdown value */\n\tvalue?: string;\n\t/** Default value for the input */\n\tdefaultValue?: string;\n\t/** Placeholder text for the textarea */\n\tplaceholder?: string;\n\t/** Minimum number of visible text lines */\n\tminRows?: number;\n\t/** Maximum number of visible text lines */\n\tmaxRows?: number;\n\t/** Whether the input is disabled */\n\tisDisabled?: boolean;\n\t/** Additional CSS classes for the wrapper container */\n\tclassName?: string;\n\t/** Additional CSS classes for the textarea */\n\ttextareaClassName?: string;\n\t/** Additional CSS classes for the preview container */\n\tpreviewClassName?: string;\n\t/** Label text to display above the input */\n\tlabel?: string;\n\t/** Additional CSS classes for the label */\n\tlabelClassName?: string;\n\t/** Whether the field is required and the required indicator shows as conditional */\n\tisRequiredConditional?: boolean;\n\t/** Whether the field is required */\n\trequired?: boolean;\n\t/** Whether to show the preview button */\n\tshowPreviewOnModal?: boolean;\n\t/** Maximum character count */\n\tmaxLength?: number;\n\t/** Link target behavior: '_blank' for new tab, '_self' for current tab */\n\tlinkTarget?: '_blank' | '_self';\n\t/** Error message to display */\n\terrorMessage?: string;\n\t/** Tooltip text */\n\ttooltip?: string;\n\t/** Whether to preserve original case (no auto-lowercase) */\n\toriginalCase?: boolean;\n\t/** Icon to display at the end of the input */\n\tsuffixIcon?: React.ReactNode;\n\t/** Whether the input is clearable */\n\tisClearable?: boolean;\n\t/** Ref for the input element */\n\tinputref?: React.RefObject<HTMLTextAreaElement>;\n\t/** Whether to show the formatting help tooltip */\n\tshowFormattingHelp?: boolean;\n\t/** Keyboard event handler */\n\tonKeyDown?: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;\n\t/** Whether to remove indentation from lists and align all content to the left in preview */\n\tnoIndent?: boolean;\n\t/** Whether to display all content with uniform font size/weight (paragraph-like) while keeping formatting */\n\tshowMinimalPreview?: boolean;\n\t/** Whether to accept and render advanced content (code blocks, blockquotes, tables, images) in preview */\n\tacceptAdvanceContent?: boolean;\n\t/** Callback function called when the markdown value changes */\n\tonChange: (value: string) => void;\n}\n\n/**\n * The type of view for the rich markdown input\n */\ntype RichMarkdownInputViewType = \"edit\" | \"preview\";\n\n/**\n * The tabs for the rich markdown input\n */\nconst RichMarkdownInputTabs: RichMarkdownInputViewType[] = [\"edit\", \"preview\"];\n\n/**\n * Close icon for clearable input\n */\nconst CloseIcon = ({ className, size = 16 }: { className?: string; size?: number }) => (\n\t<svg\n\t\twidth={size}\n\t\theight={size}\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"2\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\tclassName={className}\n\t>\n\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n\t</svg>\n);\n\n/**\n * A rich markdown input component with comprehensive formatting toolbar.\n * \n * **Text Formatting:**\n * - Bold (Ctrl+B) - Always visible\n * - Italic (Ctrl+I) - Always visible\n * - Underline (Ctrl+U) - Always visible\n * \n * **Lists:**\n * - Bullet lists - Always visible\n * - Numbered lists - Always visible\n * \n * **Features:**\n * - Edit/Preview toggle with icons\n * - Character counter (optional)\n * - Preview modal with scrolling\n * - Keyboard shortcuts\n * - Syntax highlighting for code blocks\n * - Responsive toolbar\n * - Dark mode support\n * - Configurable link target behavior\n * - Error message display\n * - Tooltip support\n * - Clear button (optional)\n * - Suffix icon support\n * - Custom keyboard handlers\n * - Minimal preview mode (uniform typography)\n * - Toggle advanced content in preview\n *\n * @example\n * ```tsx\n * <RichMarkdownInput\n * value={markdown}\n * onChange={setMarkdown}\n * placeholder=\"Enter description...\"\n * label=\"Description\"\n * maxLength={300}\n * linkTarget=\"_blank\"\n * isClearable\n * errorMessage=\"Invalid input\"\n * tooltip=\"Use markdown formatting\"\n * showMinimalPreview={false}\n * acceptAdvanceContent={true}\n * />\n * ```\n */\nexport const RichMarkdownInput = forwardRef<\n\tHTMLTextAreaElement,\n\tRichMarkdownInputProps\n>(\n\t(\n\t\t{\n\t\t\tid,\n\t\t\tvalue = \"\",\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\tplaceholder = \"Enter markdown content...\",\n\t\t\tminRows = 4,\n\t\t\tmaxRows = 20,\n\t\t\tisDisabled = false,\n\t\t\tclassName,\n\t\t\ttextareaClassName,\n\t\t\tpreviewClassName,\n\t\t\tlabel,\n\t\t\tlabelClassName,\n\t\t\tisRequiredConditional,\n\t\t\trequired = false,\n\t\t\tshowPreviewOnModal = false,\n\t\t\tmaxLength,\n\t\t\tlinkTarget = '_blank',\n\t\t\terrorMessage,\n\t\t\ttooltip,\n\t\t\toriginalCase,\n\t\t\tsuffixIcon,\n\t\t\tisClearable,\n\t\t\tinputref,\n\t\t\tshowFormattingHelp = true,\n\t\t\tonKeyDown,\n\t\t\tnoIndent = false,\n\t\t\tshowMinimalPreview = false,\n\t\t\tacceptAdvanceContent = true,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst [mode, setMode] = useState<RichMarkdownInputViewType>(\"edit\");\n\t\tconst [isPreviewOpen, setIsPreviewOpen] = useState(false);\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst inputId = id || `rich-md-input-${Math.random().toString(36).slice(2, 11)}`;\n\n\t\tconst charCount = value.length;\n\n\t\t/**\n\t\t * Insert markdown syntax at cursor position\n\t\t */\n\t\tconst insertMarkdown = (before: string, after: string = \"\", placeholder: string = \"\") => {\n\t\t\tconst textarea = (ref as React.RefObject<HTMLTextAreaElement>)?.current || textareaRef.current;\n\t\t\tif (!textarea) return;\n\n\t\t\tconst start = textarea.selectionStart;\n\t\t\tconst end = textarea.selectionEnd;\n\t\t\tconst selectedText = value.substring(start, end);\n\t\t\tconst textToInsert = selectedText || placeholder;\n\n\t\t\tconst newValue = value.substring(0, start) + before + textToInsert + after + value.substring(end);\n\t\t\tonChange(newValue);\n\n\t\t\t// Set cursor position after insertion\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst newCursorPos = start + before.length + (selectedText ? selectedText.length : 0);\n\t\t\t\ttextarea.focus();\n\t\t\t\ttextarea.setSelectionRange(newCursorPos, newCursorPos + (selectedText ? 0 : placeholder.length));\n\t\t\t}, 0);\n\t\t};\n\n\t\t/**\n\t\t * Insert list item at cursor position\n\t\t */\n\t\tconst insertList = (prefix: string) => {\n\t\t\tconst textarea = (ref as React.RefObject<HTMLTextAreaElement>)?.current || textareaRef.current;\n\t\t\tif (!textarea) return;\n\n\t\t\tconst start = textarea.selectionStart;\n\t\t\tconst end = textarea.selectionEnd;\n\t\t\tconst lines = value.split('\\n');\n\n\t\t\t// Find which line(s) are selected\n\t\t\tlet currentPos = 0;\n\t\t\tlet startLine = 0;\n\t\t\tlet endLine = 0;\n\n\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\tif (currentPos <= start && start <= currentPos + lines[i].length + 1) {\n\t\t\t\t\tstartLine = i;\n\t\t\t\t}\n\t\t\t\tif (currentPos <= end && end <= currentPos + lines[i].length + 1) {\n\t\t\t\t\tendLine = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcurrentPos += lines[i].length + 1;\n\t\t\t}\n\n\t\t\t// Add list markers to selected lines\n\t\t\tconst newLines = lines.map((line, index) => {\n\t\t\t\tif (index >= startLine && index <= endLine) {\n\t\t\t\t\tif (line.trim() === '') return line;\n\t\t\t\t\t// Check if line already has a list marker\n\t\t\t\t\tif (prefix === '- ' && line.trim().startsWith('- ')) {\n\t\t\t\t\t\treturn line.replace(/^\\s*-\\s+/, '');\n\t\t\t\t\t}\n\t\t\t\t\tif (prefix.match(/^\\d+\\.\\s/) && line.trim().match(/^\\d+\\.\\s/)) {\n\t\t\t\t\t\treturn line.replace(/^\\s*\\d+\\.\\s+/, '');\n\t\t\t\t\t}\n\t\t\t\t\treturn prefix + line.trim();\n\t\t\t\t}\n\t\t\t\treturn line;\n\t\t\t});\n\n\t\t\tonChange(newLines.join('\\n'));\n\n\t\t\tsetTimeout(() => {\n\t\t\t\ttextarea.focus();\n\t\t\t}, 0);\n\t\t};\n\n\t\t/**\n\t\t * Handle keyboard shortcuts\n\t\t */\n\t\tconst handleKeyDownInternal = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\t\t// Call external handler first\n\t\t\tonKeyDown?.(e);\n\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tswitch (e.key.toLowerCase()) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('**', '**', 'bold text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('*', '*', 'italic text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'u':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('<u>', '</u>', 'underlined text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'k':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('[', '](url)', 'link text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('```', '```', 'code');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Handle clear button click\n\t\t */\n\t\tconst handleClear = () => {\n\t\t\tonChange('');\n\t\t\tconst textarea = (ref as React.RefObject<HTMLTextAreaElement>)?.current || textareaRef.current;\n\t\t\ttextarea?.focus();\n\t\t};\n\n\t\t/**\n\t\t * Calculate dynamic rows based on content\n\t\t */\n\t\tconst calculateRows = () => {\n\t\t\tconst lineCount = (value.match(/\\n/g) || []).length + 1;\n\t\t\treturn Math.min(maxRows, Math.max(minRows, lineCount));\n\t\t};\n\n\t\tconst rows = calculateRows();\n\n\t\tconst content = (\n\t\t\t<div className={cn(\"flex flex-col\", className)}>\n\t\t\t\t<div className={`flex flex-row items-center ${label ? \"justify-between\" : \"justify-end\"} w-full`}>\n\t\t\t\t\t{/* Label */}\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\thtmlFor={inputId}\n\t\t\t\t\t\t\tclassName={`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"\n\t\t\t\t\t\t\t\t} ${labelClassName || \"!uppercse\"}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap items-center justify-between w-full\">\n\t\t\t\t\t\t\t\t<div className=\"inline-flex flex-wrap items-center gap-1\">\n\t\t\t\t\t\t\t\t\t<InputLabel label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Markdown Formatting Info */}\n\t\t\t\t\t{showFormattingHelp && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-center py-2 px-3 min-w-[220px] gap-2 bg-neutral-900 rounded-lg\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-start gap-1 w-full\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">**bold**</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <strong>bold</strong> text\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">*italic*</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <em>italic</em> text\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">`code`</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <code>inline code</code>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\"><u>text</u></span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <u>underline</u>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">~~strike~~</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <del>strike</del>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">- item</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ bullet list\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">1. item</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ numbered list\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{acceptAdvanceContent && (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">## heading</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t→ heading 2\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">[link](url)</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ hyperlink\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t{acceptAdvanceContent && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-start gap-1 w-full\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter\">> quote</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t→ blockquote\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-start gap-0.5 w-full mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-center gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-[18px]\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-[18px] font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTable:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col px-1 py-0.5 bg-neutral-700 ml-2 rounded-sm gap-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter whitespace-nowrap\">| Header 1 | Header 2 | Header 3 |</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter whitespace-nowrap\">| :--- | :---: | ---: |</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-[18px] font-inter whitespace-nowrap\">| Left | Center | Right |</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Typography className=\"mb-2 text-xs font-medium text-primary-700 inline-flex items-center gap-1 cursor-pointer\">\n\t\t\t\t\t\t\t\tFormatting help ?\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Main Container */}\n\t\t\t\t<div className={cn(\n\t\t\t\t\t\"flex flex-col border shadow-[0px_1px_2px_rgba(0,0,0,0.05)] rounded-lg bg-white dark:bg-black-700 w-full\",\n\t\t\t\t\terrorMessage\n\t\t\t\t\t\t? \"border-red-300 focus-within:border-red-500 focus-within:shadow-[0_0_0_1.5px_var(--color-red-200)]\"\n\t\t\t\t\t\t: \"border-[#EAECF0] dark:border-black-600 focus-within:border-primary-600 dark:focus-within:border-primary-400 focus-within:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus-within:shadow-[0_0_0_1.5px_var(--color-primary-950)]\"\n\t\t\t\t)}>\n\t\t\t\t\t{/* Toolbar */}\n\t\t\t\t\t<div className={cn(\n\t\t\t\t\t\t\"flex flex-row justify-between items-center px-3 py-2 gap-2 h-11 rounded-t-lg bg-[#F9FAFB] dark:bg-black-600 border-b border-[#EAECF0] dark:border-black-600\"\n\t\t\t\t\t)}>\n\t\t\t\t\t\t{/* Left: Formatting Buttons */}\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-bold`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertMarkdown('**', '**', 'bold text')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Bold (Ctrl+B)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatBold sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-italic`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertMarkdown('*', '*', 'italic text')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Italic (Ctrl+I)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatItalic sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-underline`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertMarkdown('<u>', '</u>', 'underlined text')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Underline (Ctrl+U)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatUnderlined sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<div className=\"w-px h-5 bg-[#EAECF0] dark:bg-black-500 rounded-full\" />\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-numbered-list`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertList('1. ')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Numbered List\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatListNumbered sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-bullet-list`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertList('- ')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Bullet List\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatListBulleted sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t{/* Center: Character Count */}\n\t\t\t\t\t\t\t{maxLength && (\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t\t\t\t\t<span className=\"text-sm font-medium text-[#475467] dark:text-neutral-400\">\n\t\t\t\t\t\t\t\t\t\t{charCount}/{maxLength}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<div className=\"w-px h-6 bg-[#EAECF0] dark:bg-black-500 rounded-full\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{/* Right: Edit/Preview Toggle */}\n\t\t\t\t\t\t\t{showPreviewOnModal ? (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tid={`${inputId}-expand`}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => setIsPreviewOpen(true)}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto ml-1 !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\t\ttitle=\"Expand Preview\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<OpenInFull sx={{ fontSize: 16, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Tabs<RichMarkdownInputViewType>\n\t\t\t\t\t\t\t\t\tvariant=\"switch\"\n\t\t\t\t\t\t\t\t\ttabs={RichMarkdownInputTabs}\n\t\t\t\t\t\t\t\t\tactiveTab={mode}\n\t\t\t\t\t\t\t\t\tonTabClick={(tab) => setMode(tab)}\n\t\t\t\t\t\t\t\t\theight=\"h-5\"\n\t\t\t\t\t\t\t\t\ticonsOnly\n\t\t\t\t\t\t\t\t\ttabIcons={{\n\t\t\t\t\t\t\t\t\t\tedit: (<Edit sx={{ fontSize: 16, color: '#667085' }} className=\"dark:text-neutral-400\" />),\n\t\t\t\t\t\t\t\t\t\tpreview: (\n\t\t\t\t\t\t\t\t\t\t\t<VisibilityOutlined sx={{ fontSize: 16, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName=\"rounded-lg\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Content Area */}\n\t\t\t\t\t<div className=\"px-3 py-2 relative\">\n\t\t\t\t\t\t{mode === \"edit\" ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\t\t\t// Handle all refs: forwarded ref, internal ref, and inputref\n\t\t\t\t\t\t\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\t\t\t\t\t\t\tref(node);\n\t\t\t\t\t\t\t\t\t\t} else if (ref) {\n\t\t\t\t\t\t\t\t\t\t\t(ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t(textareaRef as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n\t\t\t\t\t\t\t\t\t\tif (inputref) {\n\t\t\t\t\t\t\t\t\t\t\t(inputref as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\tconst newValue = originalCase ? e.target.value : e.target.value;\n\t\t\t\t\t\t\t\t\t\tif (!maxLength || newValue.length <= maxLength) {\n\t\t\t\t\t\t\t\t\t\t\tonChange(newValue);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDownInternal}\n\t\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\t\trows={rows}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t// Base styles\n\t\t\t\t\t\t\t\t\t\t\"w-full bg-transparent !focus:ring-0 !focus:border-none\",\n\t\t\t\t\t\t\t\t\t\t\"font-inter font-medium text-sm leading-5\",\n\t\t\t\t\t\t\t\t\t\t\"text-[#101828] dark:text-neutral-100\",\n\t\t\t\t\t\t\t\t\t\t\"placeholder:text-neutral-400 dark:placeholder:text-neutral-500\",\n\t\t\t\t\t\t\t\t\t\t\"focus:outline-none resize-none\",\n\t\t\t\t\t\t\t\t\t\t// Hide scrollbar\n\t\t\t\t\t\t\t\t\t\t\"scrollbar-none\",\n\t\t\t\t\t\t\t\t\t\t\"[&::-webkit-scrollbar]:hidden\",\n\t\t\t\t\t\t\t\t\t\t\"[-ms-overflow-style:none]\",\n\t\t\t\t\t\t\t\t\t\t\"[scrollbar-width:none]\",\n\t\t\t\t\t\t\t\t\t\t// Disabled state\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"text-neutral-400 dark:text-neutral-500 cursor-not-allowed\": isDisabled,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t// Add padding if suffix icons exist\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"pr-20\": isClearable || suffixIcon,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttextareaClassName\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t{/* Suffix Icons */}\n\t\t\t\t\t\t\t\t{(isClearable || suffixIcon) && mode === \"edit\" && (\n\t\t\t\t\t\t\t\t\t<div className=\"absolute right-1 top-2 flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t{isClearable && value && (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tid={`btn-input-field-clear-${id}`}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"absolute inset-y-0 flex items-center cursor-pointer top-2 right-1 focus:outline-none\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={handleClear}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CloseIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-neutral-300 dark:text-black-500 hover:text-neutral-400 dark:hover:text-black-400 transition-colors\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{suffixIcon && <div className=\"flex items-center\">{suffixIcon}</div>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"w-full min-h-[92px] max-h-[400px] overflow-y-auto\">\n\t\t\t\t\t\t\t\t<MarkdownPreview\n\t\t\t\t\t\t\t\t\tcontent={value}\n\t\t\t\t\t\t\t\t\tlinkTarget={linkTarget}\n\t\t\t\t\t\t\t\t\tclassName={previewClassName}\n\t\t\t\t\t\t\t\t\tnoIndent={noIndent}\n\t\t\t\t\t\t\t\t\tshowMinimalPreview={showMinimalPreview}\n\t\t\t\t\t\t\t\t\tacceptAdvanceContent={acceptAdvanceContent}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Expanded Preview Modal */}\n\t\t\t\t<Modal\n\t\t\t\t\topen={isPreviewOpen}\n\t\t\t\t\tonCancel={() => setIsPreviewOpen(false)}\n\t\t\t\t\ttitle=\"Markdown Preview\"\n\t\t\t\t\twidth={900}\n\t\t\t\t\tfooter={null}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"max-h-[calc(100vh-200px)] overflow-y-auto p-4\">\n\t\t\t\t\t\t<MarkdownPreview\n\t\t\t\t\t\t\tcontent={value}\n\t\t\t\t\t\t\tlinkTarget={linkTarget}\n\t\t\t\t\t\t\tclassName={previewClassName}\n\t\t\t\t\t\t\tnoIndent={noIndent}\n\t\t\t\t\t\t\tshowMinimalPreview={showMinimalPreview}\n\t\t\t\t\t\t\tacceptAdvanceContent={acceptAdvanceContent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\n\t\t\t\t<AnimatePresence>\n\t\t\t\t\t{errorMessage && (\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tinitial={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tclassName=\"mt-1 text-error-500\"\n\t\t\t\t\t\t\t\tappearance=\"custom\"\n\t\t\t\t\t\t\t\tsize=\"extra-small\"\n\t\t\t\t\t\t\t\tvariant=\"medium\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{errorMessage}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t)}\n\t\t\t\t</AnimatePresence>\n\t\t\t</div>\n\t\t);\n\n\t\treturn tooltip ? (\n\t\t\t<Tooltip title={tooltip}>\n\t\t\t\t{content}\n\t\t\t</Tooltip>\n\t\t) : (\n\t\t\tcontent\n\t\t);\n\t}\n);\n\nRichMarkdownInput.displayName = \"RichMarkdownInput\";\n"],"names":["RichMarkdownInputTabs","CloseIcon","className","size","jsxs","jsx","RichMarkdownInput","forwardRef","id","value","defaultValue","onChange","placeholder","minRows","maxRows","isDisabled","textareaClassName","previewClassName","label","labelClassName","isRequiredConditional","required","showPreviewOnModal","maxLength","linkTarget","errorMessage","tooltip","originalCase","suffixIcon","isClearable","inputref","showFormattingHelp","onKeyDown","noIndent","showMinimalPreview","acceptAdvanceContent","ref","mode","setMode","useState","isPreviewOpen","setIsPreviewOpen","textareaRef","useRef","inputId","charCount","insertMarkdown","before","after","textarea","start","end","selectedText","textToInsert","newValue","newCursorPos","insertList","prefix","lines","currentPos","startLine","endLine","i","newLines","line","index","handleKeyDownInternal","e","handleClear","rows","lineCount","content","cn","InputLabel","Tooltip","Fragment","Typography","Button","FormatBold","FormatItalic","FormatUnderlined","FormatListNumbered","FormatListBulleted","OpenInFull","Tabs","tab","Edit","VisibilityOutlined","node","MarkdownPreview","Modal","AnimatePresence","motion"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RichMarkdownInput.cjs.js","sources":["../../../../src/components/forms/md-input/RichMarkdownInput.tsx"],"sourcesContent":["import cn from \"classnames\";\nimport { forwardRef, useRef, useState } from \"react\";\nimport {\n\tFormatBold,\n\tFormatItalic,\n\tFormatUnderlined,\n\tFormatListBulleted,\n\tFormatListNumbered,\n\tOpenInFull,\n\tEdit,\n\tVisibilityOutlined,\n} from \"@mui/icons-material\";\nimport { Modal } from \"../../data-display/modal/Modal\";\nimport Button from \"../../button/Button\";\nimport { Tabs } from \"../../navigation/tabs/Tabs\";\nimport { MarkdownPreview } from \"./MarkdownPreview\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { InputLabel } from \"../shared/InputLabel\";\n\n/**\n * Props for the RichMarkdownInput component\n */\nexport interface RichMarkdownInputProps {\n\t/** Unique identifier for the markdown input */\n\tid?: string;\n\t/** Current markdown value */\n\tvalue?: string;\n\t/** Default value for the input */\n\tdefaultValue?: string;\n\t/** Placeholder text for the textarea */\n\tplaceholder?: string;\n\t/** Minimum number of visible text lines */\n\tminRows?: number;\n\t/** Maximum number of visible text lines */\n\tmaxRows?: number;\n\t/** Whether the input is disabled */\n\tisDisabled?: boolean;\n\t/** Additional CSS classes for the wrapper container */\n\tclassName?: string;\n\t/** Additional CSS classes for the textarea */\n\ttextareaClassName?: string;\n\t/** Additional CSS classes for the preview container */\n\tpreviewClassName?: string;\n\t/** Label text to display above the input */\n\tlabel?: string;\n\t/** Additional CSS classes for the label */\n\tlabelClassName?: string;\n\t/** Whether the field is required and the required indicator shows as conditional */\n\tisRequiredConditional?: boolean;\n\t/** Whether the field is required */\n\trequired?: boolean;\n\t/** Whether to show the preview button */\n\tshowPreviewOnModal?: boolean;\n\t/** Maximum character count */\n\tmaxLength?: number;\n\t/** Link target behavior: '_blank' for new tab, '_self' for current tab */\n\tlinkTarget?: '_blank' | '_self';\n\t/** Error message to display */\n\terrorMessage?: string;\n\t/** Tooltip text */\n\ttooltip?: string;\n\t/** Whether to preserve original case (no auto-lowercase) */\n\toriginalCase?: boolean;\n\t/** Icon to display at the end of the input */\n\tsuffixIcon?: React.ReactNode;\n\t/** Whether the input is clearable */\n\tisClearable?: boolean;\n\t/** Ref for the input element */\n\tinputref?: React.RefObject<HTMLTextAreaElement>;\n\t/** Whether to show the formatting help tooltip */\n\tshowFormattingHelp?: boolean;\n\t/** Keyboard event handler */\n\tonKeyDown?: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;\n\t/** Whether to remove indentation from lists and align all content to the left in preview */\n\tnoIndent?: boolean;\n\t/** Whether to display all content with uniform font size/weight (paragraph-like) while keeping formatting */\n\tshowMinimalPreview?: boolean;\n\t/** Whether to accept and render advanced content (code blocks, blockquotes, tables, images) in preview */\n\tacceptAdvanceContent?: boolean;\n\t/** Callback function called when the markdown value changes */\n\tonChange: (value: string) => void;\n}\n\n/**\n * The type of view for the rich markdown input\n */\ntype RichMarkdownInputViewType = \"edit\" | \"preview\";\n\n/**\n * The tabs for the rich markdown input\n */\nconst RichMarkdownInputTabs: RichMarkdownInputViewType[] = [\"edit\", \"preview\"];\n\n/**\n * Close icon for clearable input\n */\nconst CloseIcon = ({ className, size = 16 }: { className?: string; size?: number }) => (\n\t<svg\n\t\twidth={size}\n\t\theight={size}\n\t\tviewBox=\"0 0 24 24\"\n\t\tfill=\"none\"\n\t\tstroke=\"currentColor\"\n\t\tstrokeWidth=\"2\"\n\t\tstrokeLinecap=\"round\"\n\t\tstrokeLinejoin=\"round\"\n\t\tclassName={className}\n\t>\n\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n\t</svg>\n);\n\n/**\n * A rich markdown input component with comprehensive formatting toolbar.\n * \n * **Text Formatting:**\n * - Bold (Ctrl+B) - Always visible\n * - Italic (Ctrl+I) - Always visible\n * - Underline (Ctrl+U) - Always visible\n * \n * **Lists:**\n * - Bullet lists - Always visible\n * - Numbered lists - Always visible\n * \n * **Features:**\n * - Edit/Preview toggle with icons\n * - Character counter (optional)\n * - Preview modal with scrolling\n * - Keyboard shortcuts\n * - Syntax highlighting for code blocks\n * - Responsive toolbar\n * - Dark mode support\n * - Configurable link target behavior\n * - Error message display\n * - Tooltip support\n * - Clear button (optional)\n * - Suffix icon support\n * - Custom keyboard handlers\n * - Minimal preview mode (uniform typography)\n * - Toggle advanced content in preview\n *\n * @example\n * ```tsx\n * <RichMarkdownInput\n * value={markdown}\n * onChange={setMarkdown}\n * placeholder=\"Enter description...\"\n * label=\"Description\"\n * maxLength={300}\n * linkTarget=\"_blank\"\n * isClearable\n * errorMessage=\"Invalid input\"\n * tooltip=\"Use markdown formatting\"\n * showMinimalPreview={false}\n * acceptAdvanceContent={true}\n * />\n * ```\n */\nexport const RichMarkdownInput = forwardRef<\n\tHTMLTextAreaElement,\n\tRichMarkdownInputProps\n>(\n\t(\n\t\t{\n\t\t\tid,\n\t\t\tvalue = \"\",\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\tplaceholder = \"Enter markdown content...\",\n\t\t\tminRows = 4,\n\t\t\tmaxRows = 20,\n\t\t\tisDisabled = false,\n\t\t\tclassName,\n\t\t\ttextareaClassName,\n\t\t\tpreviewClassName,\n\t\t\tlabel,\n\t\t\tlabelClassName,\n\t\t\tisRequiredConditional,\n\t\t\trequired = false,\n\t\t\tshowPreviewOnModal = false,\n\t\t\tmaxLength,\n\t\t\tlinkTarget = '_blank',\n\t\t\terrorMessage,\n\t\t\ttooltip,\n\t\t\toriginalCase,\n\t\t\tsuffixIcon,\n\t\t\tisClearable,\n\t\t\tinputref,\n\t\t\tshowFormattingHelp = true,\n\t\t\tonKeyDown,\n\t\t\tnoIndent = false,\n\t\t\tshowMinimalPreview = false,\n\t\t\tacceptAdvanceContent = true,\n\t\t},\n\t\tref\n\t) => {\n\t\tconst [mode, setMode] = useState<RichMarkdownInputViewType>(\"edit\");\n\t\tconst [isPreviewOpen, setIsPreviewOpen] = useState(false);\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst inputId = id || `rich-md-input-${Math.random().toString(36).slice(2, 11)}`;\n\n\t\tconst charCount = value.length;\n\n\t\t/**\n\t\t * Insert markdown syntax at cursor position\n\t\t */\n\t\tconst insertMarkdown = (before: string, after: string = \"\", placeholder: string = \"\") => {\n\t\t\tconst textarea = (ref as React.RefObject<HTMLTextAreaElement>)?.current || textareaRef.current;\n\t\t\tif (!textarea) return;\n\n\t\t\tconst start = textarea.selectionStart;\n\t\t\tconst end = textarea.selectionEnd;\n\t\t\tconst selectedText = value.substring(start, end);\n\t\t\tconst textToInsert = selectedText || placeholder;\n\n\t\t\tconst newValue = value.substring(0, start) + before + textToInsert + after + value.substring(end);\n\t\t\tonChange(newValue);\n\n\t\t\t// Set cursor position after insertion\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst newCursorPos = start + before.length + (selectedText ? selectedText.length : 0);\n\t\t\t\ttextarea.focus();\n\t\t\t\ttextarea.setSelectionRange(newCursorPos, newCursorPos + (selectedText ? 0 : placeholder.length));\n\t\t\t}, 0);\n\t\t};\n\n\t\t/**\n\t\t * Insert list item at cursor position\n\t\t */\n\t\tconst insertList = (prefix: string) => {\n\t\t\tconst textarea = (ref as React.RefObject<HTMLTextAreaElement>)?.current || textareaRef.current;\n\t\t\tif (!textarea) return;\n\n\t\t\tconst start = textarea.selectionStart;\n\t\t\tconst end = textarea.selectionEnd;\n\t\t\tconst lines = value.split('\\n');\n\n\t\t\t// Find which line(s) are selected\n\t\t\tlet currentPos = 0;\n\t\t\tlet startLine = 0;\n\t\t\tlet endLine = 0;\n\n\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\tif (currentPos <= start && start <= currentPos + lines[i].length + 1) {\n\t\t\t\t\tstartLine = i;\n\t\t\t\t}\n\t\t\t\tif (currentPos <= end && end <= currentPos + lines[i].length + 1) {\n\t\t\t\t\tendLine = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcurrentPos += lines[i].length + 1;\n\t\t\t}\n\n\t\t\t// Add list markers to selected lines\n\t\t\tconst newLines = lines.map((line, index) => {\n\t\t\t\tif (index >= startLine && index <= endLine) {\n\t\t\t\t\tif (line.trim() === '') return line;\n\t\t\t\t\t// Check if line already has a list marker\n\t\t\t\t\tif (prefix === '- ' && line.trim().startsWith('- ')) {\n\t\t\t\t\t\treturn line.replace(/^\\s*-\\s+/, '');\n\t\t\t\t\t}\n\t\t\t\t\tif (prefix.match(/^\\d+\\.\\s/) && line.trim().match(/^\\d+\\.\\s/)) {\n\t\t\t\t\t\treturn line.replace(/^\\s*\\d+\\.\\s+/, '');\n\t\t\t\t\t}\n\t\t\t\t\treturn prefix + line.trim();\n\t\t\t\t}\n\t\t\t\treturn line;\n\t\t\t});\n\n\t\t\tonChange(newLines.join('\\n'));\n\n\t\t\tsetTimeout(() => {\n\t\t\t\ttextarea.focus();\n\t\t\t}, 0);\n\t\t};\n\n\t\t/**\n\t\t * Handle keyboard shortcuts\n\t\t */\n\t\tconst handleKeyDownInternal = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n\t\t\t// Call external handler first\n\t\t\tonKeyDown?.(e);\n\n\t\t\tif (e.metaKey || e.ctrlKey) {\n\t\t\t\tswitch (e.key.toLowerCase()) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('**', '**', 'bold text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('*', '*', 'italic text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'u':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('<u>', '</u>', 'underlined text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'k':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('[', '](url)', 'link text');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e':\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tinsertMarkdown('```', '```', 'code');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Handle clear button click\n\t\t */\n\t\tconst handleClear = () => {\n\t\t\tonChange('');\n\t\t\tconst textarea = (ref as React.RefObject<HTMLTextAreaElement>)?.current || textareaRef.current;\n\t\t\ttextarea?.focus();\n\t\t};\n\n\t\t/**\n\t\t * Calculate dynamic rows based on content\n\t\t */\n\t\tconst calculateRows = () => {\n\t\t\tconst lineCount = (value.match(/\\n/g) || []).length + 1;\n\t\t\treturn Math.min(maxRows, Math.max(minRows, lineCount));\n\t\t};\n\n\t\tconst rows = calculateRows();\n\n\t\tconst content = (\n\t\t\t<div className={cn(\"flex flex-col\", className)}>\n\t\t\t\t<div className={`flex flex-row items-center ${label ? \"justify-between\" : \"justify-end\"} w-full`}>\n\t\t\t\t\t{/* Label */}\n\t\t\t\t\t{label && (\n\t\t\t\t\t\t<label\n\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\thtmlFor={inputId}\n\t\t\t\t\t\t\tclassName={`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"\n\t\t\t\t\t\t\t\t} ${labelClassName || \"!uppercse\"}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap items-center justify-between w-full\">\n\t\t\t\t\t\t\t\t<div className=\"inline-flex flex-wrap items-center gap-1\">\n\t\t\t\t\t\t\t\t\t<InputLabel label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Markdown Formatting Info */}\n\t\t\t\t\t{showFormattingHelp && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tplacement=\"bottom-end\"\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-center py-2 px-3 min-w-[220px] gap-2 bg-neutral-900 rounded-lg\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-start gap-1 w-full\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">**bold**</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <strong>bold</strong> text\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">*italic*</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <em>italic</em> text\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">`code`</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <code>inline code</code>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\"><u>text</u></span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <u>underline</u>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">~~strike~~</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ <del>strike</del>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">- item</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ bullet list\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">1. item</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ numbered list\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{acceptAdvanceContent && (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">## heading</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t→ heading 2\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">[link](url)</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t→ hyperlink\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t{acceptAdvanceContent && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-start gap-1 w-full\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-start gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter\">> quote</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t→ blockquote\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-start justify-start gap-0.5 w-full mt-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-row items-center gap-1 ml-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-[18px] leading-4\">•</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-white text-xs font-medium leading-4 font-inter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTable:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-col px-1 py-0.5 bg-neutral-700 ml-2 rounded-sm gap-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter whitespace-nowrap\">| Header 1 | Header 2 | Header 3 |</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter whitespace-nowrap\">| :--- | :---: | ---: |</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-neutral-300 text-xs font-medium leading-4 font-inter whitespace-nowrap\">| Left | Center | Right |</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Typography className=\"mb-2 text-xs font-medium text-primary-700 inline-flex items-center gap-1 cursor-pointer\">\n\t\t\t\t\t\t\t\tFormatting help ?\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Main Container */}\n\t\t\t\t<div className={cn(\n\t\t\t\t\t\"flex flex-col border shadow-[0px_1px_2px_rgba(0,0,0,0.05)] rounded-lg bg-white dark:bg-black-700 w-full\",\n\t\t\t\t\terrorMessage\n\t\t\t\t\t\t? \"border-red-300 focus-within:border-red-500 focus-within:shadow-[0_0_0_1.5px_var(--color-red-200)]\"\n\t\t\t\t\t\t: \"border-[#EAECF0] dark:border-black-600 focus-within:border-primary-600 dark:focus-within:border-primary-400 focus-within:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus-within:shadow-[0_0_0_1.5px_var(--color-primary-950)]\"\n\t\t\t\t)}>\n\t\t\t\t\t{/* Toolbar */}\n\t\t\t\t\t<div className={cn(\n\t\t\t\t\t\t\"flex flex-row justify-between items-center px-3 py-2 gap-2 h-11 rounded-t-lg bg-[#F9FAFB] dark:bg-black-600 border-b border-[#EAECF0] dark:border-black-600\"\n\t\t\t\t\t)}>\n\t\t\t\t\t\t{/* Left: Formatting Buttons */}\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-bold`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertMarkdown('**', '**', 'bold text')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Bold (Ctrl+B)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatBold sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-italic`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertMarkdown('*', '*', 'italic text')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Italic (Ctrl+I)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatItalic sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-underline`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertMarkdown('<u>', '</u>', 'underlined text')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Underline (Ctrl+U)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatUnderlined sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<div className=\"w-px h-5 bg-[#EAECF0] dark:bg-black-500 rounded-full\" />\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-numbered-list`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertList('1. ')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Numbered List\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatListNumbered sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tid={`${inputId}-bullet-list`}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={() => insertList('- ')}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || mode === \"preview\"}\n\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\ttitle=\"Bullet List\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FormatListBulleted sx={{ fontSize: 20, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t{/* Center: Character Count */}\n\t\t\t\t\t\t\t{maxLength && (\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t\t\t\t\t<span className=\"text-sm font-medium text-[#475467] dark:text-neutral-400\">\n\t\t\t\t\t\t\t\t\t\t{charCount}/{maxLength}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<div className=\"w-px h-6 bg-[#EAECF0] dark:bg-black-500 rounded-full\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{/* Right: Edit/Preview Toggle */}\n\t\t\t\t\t\t\t{showPreviewOnModal ? (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tid={`${inputId}-expand`}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => setIsPreviewOpen(true)}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tclassName=\"!p-0.5 !min-w-0 !h-auto ml-1 !rounded-md hover:!bg-neutral-200 dark:hover:!bg-black-500 hover:!scale-110 !transition-all !duration-200\"\n\t\t\t\t\t\t\t\t\tappearance=\"ghost\"\n\t\t\t\t\t\t\t\t\tstatus=\"no-background\"\n\t\t\t\t\t\t\t\t\ttitle=\"Expand Preview\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<OpenInFull sx={{ fontSize: 16, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Tabs<RichMarkdownInputViewType>\n\t\t\t\t\t\t\t\t\tvariant=\"switch\"\n\t\t\t\t\t\t\t\t\ttabs={RichMarkdownInputTabs}\n\t\t\t\t\t\t\t\t\tactiveTab={mode}\n\t\t\t\t\t\t\t\t\tonTabClick={(tab) => setMode(tab)}\n\t\t\t\t\t\t\t\t\theight=\"h-5\"\n\t\t\t\t\t\t\t\t\ticonsOnly\n\t\t\t\t\t\t\t\t\ttabIcons={{\n\t\t\t\t\t\t\t\t\t\tedit: (<Edit sx={{ fontSize: 16, color: '#667085' }} className=\"dark:text-neutral-400\" />),\n\t\t\t\t\t\t\t\t\t\tpreview: (\n\t\t\t\t\t\t\t\t\t\t\t<VisibilityOutlined sx={{ fontSize: 16, color: '#667085' }} className=\"dark:text-neutral-400\" />\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName=\"rounded-lg\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Content Area */}\n\t\t\t\t\t<div className=\"px-3 py-2 relative\">\n\t\t\t\t\t\t{mode === \"edit\" ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\t\t\t\t// Handle all refs: forwarded ref, internal ref, and inputref\n\t\t\t\t\t\t\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\t\t\t\t\t\t\tref(node);\n\t\t\t\t\t\t\t\t\t\t} else if (ref) {\n\t\t\t\t\t\t\t\t\t\t\t(ref as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t(textareaRef as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n\t\t\t\t\t\t\t\t\t\tif (inputref) {\n\t\t\t\t\t\t\t\t\t\t\t(inputref as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\t\t\t\t\tconst newValue = originalCase ? e.target.value : e.target.value;\n\t\t\t\t\t\t\t\t\t\tif (!maxLength || newValue.length <= maxLength) {\n\t\t\t\t\t\t\t\t\t\t\tonChange(newValue);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDownInternal}\n\t\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\t\trows={rows}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t// Base styles\n\t\t\t\t\t\t\t\t\t\t\"w-full bg-transparent !focus:ring-0 !focus:border-none\",\n\t\t\t\t\t\t\t\t\t\t\"font-inter font-medium text-sm leading-5\",\n\t\t\t\t\t\t\t\t\t\t\"text-[#101828] dark:text-neutral-100\",\n\t\t\t\t\t\t\t\t\t\t\"placeholder:text-neutral-400 dark:placeholder:text-neutral-500\",\n\t\t\t\t\t\t\t\t\t\t\"focus:outline-none resize-none\",\n\t\t\t\t\t\t\t\t\t\t// Hide scrollbar\n\t\t\t\t\t\t\t\t\t\t\"scrollbar-none\",\n\t\t\t\t\t\t\t\t\t\t\"[&::-webkit-scrollbar]:hidden\",\n\t\t\t\t\t\t\t\t\t\t\"[-ms-overflow-style:none]\",\n\t\t\t\t\t\t\t\t\t\t\"[scrollbar-width:none]\",\n\t\t\t\t\t\t\t\t\t\t// Disabled state\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"text-neutral-400 dark:text-neutral-500 cursor-not-allowed\": isDisabled,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t// Add padding if suffix icons exist\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"pr-20\": isClearable || suffixIcon,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttextareaClassName\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t{/* Suffix Icons */}\n\t\t\t\t\t\t\t\t{(isClearable || suffixIcon) && mode === \"edit\" && (\n\t\t\t\t\t\t\t\t\t<div className=\"absolute right-1 top-2 flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t{isClearable && value && (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tid={`btn-input-field-clear-${id}`}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"absolute inset-y-0 flex items-center cursor-pointer top-2 right-1 focus:outline-none\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={handleClear}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CloseIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-neutral-300 dark:text-black-500 hover:text-neutral-400 dark:hover:text-black-400 transition-colors\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{suffixIcon && <div className=\"flex items-center\">{suffixIcon}</div>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"w-full min-h-[92px] max-h-[400px] overflow-y-auto\">\n\t\t\t\t\t\t\t\t<MarkdownPreview\n\t\t\t\t\t\t\t\t\tcontent={value}\n\t\t\t\t\t\t\t\t\tlinkTarget={linkTarget}\n\t\t\t\t\t\t\t\t\tclassName={previewClassName}\n\t\t\t\t\t\t\t\t\tnoIndent={noIndent}\n\t\t\t\t\t\t\t\t\tshowMinimalPreview={showMinimalPreview}\n\t\t\t\t\t\t\t\t\tacceptAdvanceContent={acceptAdvanceContent}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Expanded Preview Modal */}\n\t\t\t\t<Modal\n\t\t\t\t\topen={isPreviewOpen}\n\t\t\t\t\tonCancel={() => setIsPreviewOpen(false)}\n\t\t\t\t\ttitle=\"Markdown Preview\"\n\t\t\t\t\twidth={900}\n\t\t\t\t\tfooter={null}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"max-h-[calc(100vh-200px)] overflow-y-auto p-4\">\n\t\t\t\t\t\t<MarkdownPreview\n\t\t\t\t\t\t\tcontent={value}\n\t\t\t\t\t\t\tlinkTarget={linkTarget}\n\t\t\t\t\t\t\tclassName={previewClassName}\n\t\t\t\t\t\t\tnoIndent={noIndent}\n\t\t\t\t\t\t\tshowMinimalPreview={showMinimalPreview}\n\t\t\t\t\t\t\tacceptAdvanceContent={acceptAdvanceContent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\n\t\t\t\t<AnimatePresence>\n\t\t\t\t\t{errorMessage && (\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tinitial={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, y: 0 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, y: -10 }}\n\t\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tclassName=\"mt-1 text-error-500\"\n\t\t\t\t\t\t\t\tappearance=\"custom\"\n\t\t\t\t\t\t\t\tsize=\"extra-small\"\n\t\t\t\t\t\t\t\tvariant=\"medium\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{errorMessage}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t)}\n\t\t\t\t</AnimatePresence>\n\t\t\t</div>\n\t\t);\n\n\t\treturn tooltip ? (\n\t\t\t<Tooltip title={tooltip}>\n\t\t\t\t{content}\n\t\t\t</Tooltip>\n\t\t) : (\n\t\t\tcontent\n\t\t);\n\t}\n);\n\nRichMarkdownInput.displayName = \"RichMarkdownInput\";\n"],"names":["RichMarkdownInputTabs","CloseIcon","className","size","jsxs","jsx","RichMarkdownInput","forwardRef","id","value","defaultValue","onChange","placeholder","minRows","maxRows","isDisabled","textareaClassName","previewClassName","label","labelClassName","isRequiredConditional","required","showPreviewOnModal","maxLength","linkTarget","errorMessage","tooltip","originalCase","suffixIcon","isClearable","inputref","showFormattingHelp","onKeyDown","noIndent","showMinimalPreview","acceptAdvanceContent","ref","mode","setMode","useState","isPreviewOpen","setIsPreviewOpen","textareaRef","useRef","inputId","charCount","insertMarkdown","before","after","textarea","start","end","selectedText","textToInsert","newValue","newCursorPos","insertList","prefix","lines","currentPos","startLine","endLine","i","newLines","line","index","handleKeyDownInternal","e","handleClear","rows","lineCount","content","cn","InputLabel","Tooltip","Fragment","Typography","Button","FormatBold","FormatItalic","FormatUnderlined","FormatListNumbered","FormatListBulleted","OpenInFull","Tabs","tab","Edit","VisibilityOutlined","node","MarkdownPreview","Modal","AnimatePresence","motion"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs as t, jsx as e, Fragment as q } from "react/jsx-runtime";
|
|
2
2
|
import j from "../../../_virtual/index.es.js";
|
|
3
3
|
import { forwardRef as oe, useState as A, useRef as de } from "react";
|
|
4
|
-
import { FormatBold as
|
|
4
|
+
import { FormatBold as me, FormatItalic as xe, FormatUnderlined as ue, FormatListNumbered as he, FormatListBulleted as fe, OpenInFull as pe, VisibilityOutlined as ge, Edit as we } from "@mui/icons-material";
|
|
5
5
|
import { Modal as be } from "../../data-display/modal/Modal.es.js";
|
|
6
|
-
import
|
|
6
|
+
import f from "../../button/Button.es.js";
|
|
7
7
|
import { Tabs as Ne } from "../../navigation/tabs/Tabs.es.js";
|
|
8
8
|
import { MarkdownPreview as H } from "./MarkdownPreview.es.js";
|
|
9
9
|
import U from "../../tooltip/Tooltip.es.js";
|
|
@@ -45,7 +45,7 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
45
45
|
isRequiredConditional: Z,
|
|
46
46
|
required: z = !1,
|
|
47
47
|
showPreviewOnModal: ee = !1,
|
|
48
|
-
maxLength:
|
|
48
|
+
maxLength: p,
|
|
49
49
|
linkTarget: R = "_blank",
|
|
50
50
|
errorMessage: F,
|
|
51
51
|
tooltip: $,
|
|
@@ -60,27 +60,27 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
60
60
|
acceptAdvanceContent: k = !0
|
|
61
61
|
}, u) => {
|
|
62
62
|
const [o, ae] = A("edit"), [re, M] = A(!1), v = de(null), l = w || `rich-md-input-${Math.random().toString(36).slice(2, 11)}`, le = r.length, d = (n, i = "", g = "") => {
|
|
63
|
-
const
|
|
64
|
-
if (!
|
|
65
|
-
const s =
|
|
63
|
+
const m = u?.current || v.current;
|
|
64
|
+
if (!m) return;
|
|
65
|
+
const s = m.selectionStart, x = m.selectionEnd, h = r.substring(s, x), y = h || g, E = r.substring(0, s) + n + y + i + r.substring(x);
|
|
66
66
|
b(E), setTimeout(() => {
|
|
67
|
-
const a = s + n.length + (
|
|
68
|
-
|
|
67
|
+
const a = s + n.length + (h ? h.length : 0);
|
|
68
|
+
m.focus(), m.setSelectionRange(a, a + (h ? 0 : g.length));
|
|
69
69
|
}, 0);
|
|
70
70
|
}, P = (n) => {
|
|
71
71
|
const i = u?.current || v.current;
|
|
72
72
|
if (!i) return;
|
|
73
|
-
const g = i.selectionStart,
|
|
73
|
+
const g = i.selectionStart, m = i.selectionEnd, s = r.split(`
|
|
74
74
|
`);
|
|
75
|
-
let
|
|
75
|
+
let x = 0, h = 0, y = 0;
|
|
76
76
|
for (let a = 0; a < s.length; a++) {
|
|
77
|
-
if (
|
|
77
|
+
if (x <= g && g <= x + s[a].length + 1 && (h = a), x <= m && m <= x + s[a].length + 1) {
|
|
78
78
|
y = a;
|
|
79
79
|
break;
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
x += s[a].length + 1;
|
|
82
82
|
}
|
|
83
|
-
const E = s.map((a, K) => K >=
|
|
83
|
+
const E = s.map((a, K) => K >= h && K <= y ? a.trim() === "" ? a : n === "- " && a.trim().startsWith("- ") ? a.replace(/^\s*-\s+/, "") : n.match(/^\d+\.\s/) && a.trim().match(/^\d+\.\s/) ? a.replace(/^\s*\d+\.\s+/, "") : n + a.trim() : a);
|
|
84
84
|
b(E.join(`
|
|
85
85
|
`)), setTimeout(() => {
|
|
86
86
|
i.focus();
|
|
@@ -127,83 +127,83 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
127
127
|
title: /* @__PURE__ */ t("div", { className: "flex flex-col items-start justify-center py-2 px-3 min-w-[220px] gap-2 bg-neutral-900 rounded-lg", children: [
|
|
128
128
|
/* @__PURE__ */ t("div", { className: "flex flex-col items-start justify-start gap-1 w-full", children: [
|
|
129
129
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
130
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
131
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
132
|
-
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-
|
|
130
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
131
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "**bold**" }) }),
|
|
132
|
+
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: [
|
|
133
133
|
"→ ",
|
|
134
134
|
/* @__PURE__ */ e("strong", { children: "bold" }),
|
|
135
135
|
" text"
|
|
136
136
|
] })
|
|
137
137
|
] }),
|
|
138
138
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
139
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
140
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
141
|
-
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-
|
|
139
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
140
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "*italic*" }) }),
|
|
141
|
+
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: [
|
|
142
142
|
"→ ",
|
|
143
143
|
/* @__PURE__ */ e("em", { children: "italic" }),
|
|
144
144
|
" text"
|
|
145
145
|
] })
|
|
146
146
|
] }),
|
|
147
147
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
148
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
149
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
150
|
-
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-
|
|
148
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
149
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "`code`" }) }),
|
|
150
|
+
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: [
|
|
151
151
|
"→ ",
|
|
152
152
|
/* @__PURE__ */ e("code", { children: "inline code" })
|
|
153
153
|
] })
|
|
154
154
|
] }),
|
|
155
155
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
156
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
157
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
158
|
-
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-
|
|
156
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
157
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "<u>text</u>" }) }),
|
|
158
|
+
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: [
|
|
159
159
|
"→ ",
|
|
160
160
|
/* @__PURE__ */ e("u", { children: "underline" })
|
|
161
161
|
] })
|
|
162
162
|
] }),
|
|
163
163
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
164
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
165
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
166
|
-
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-
|
|
164
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
165
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "~~strike~~" }) }),
|
|
166
|
+
/* @__PURE__ */ t("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: [
|
|
167
167
|
"→ ",
|
|
168
168
|
/* @__PURE__ */ e("del", { children: "strike" })
|
|
169
169
|
] })
|
|
170
170
|
] }),
|
|
171
171
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
172
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
173
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
174
|
-
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-
|
|
172
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
173
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "- item" }) }),
|
|
174
|
+
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: "→ bullet list" })
|
|
175
175
|
] }),
|
|
176
176
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
177
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
178
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
179
|
-
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-
|
|
177
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
178
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "1. item" }) }),
|
|
179
|
+
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: "→ numbered list" })
|
|
180
180
|
] }),
|
|
181
181
|
k && /* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
182
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
183
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
184
|
-
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-
|
|
182
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
183
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "## heading" }) }),
|
|
184
|
+
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: "→ heading 2" })
|
|
185
185
|
] }),
|
|
186
186
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
187
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
188
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
189
|
-
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-
|
|
187
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
188
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "[link](url)" }) }),
|
|
189
|
+
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: "→ hyperlink" })
|
|
190
190
|
] })
|
|
191
191
|
] }),
|
|
192
192
|
k && /* @__PURE__ */ e(q, { children: /* @__PURE__ */ t("div", { className: "flex flex-col items-start justify-start gap-1 w-full", children: [
|
|
193
193
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-start gap-1 ml-1", children: [
|
|
194
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
195
|
-
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
196
|
-
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-
|
|
194
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
195
|
+
/* @__PURE__ */ e("div", { className: "flex flex-row justify-center items-center px-[3px] bg-neutral-700 rounded-sm", children: /* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter", children: "> quote" }) }),
|
|
196
|
+
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: "→ blockquote" })
|
|
197
197
|
] }),
|
|
198
198
|
/* @__PURE__ */ t("div", { className: "flex flex-col items-start justify-start gap-0.5 w-full mt-0.5", children: [
|
|
199
199
|
/* @__PURE__ */ t("div", { className: "flex flex-row items-center gap-1 ml-1", children: [
|
|
200
|
-
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-
|
|
201
|
-
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-
|
|
200
|
+
/* @__PURE__ */ e("span", { className: "text-white text-[18px] leading-4", children: "•" }),
|
|
201
|
+
/* @__PURE__ */ e("span", { className: "text-white text-xs font-medium leading-4 font-inter", children: "Table:" })
|
|
202
202
|
] }),
|
|
203
203
|
/* @__PURE__ */ t("div", { className: "flex flex-col px-1 py-0.5 bg-neutral-700 ml-2 rounded-sm gap-0", children: [
|
|
204
|
-
/* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
205
|
-
/* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
206
|
-
/* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-
|
|
204
|
+
/* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter whitespace-nowrap", children: "| Header 1 | Header 2 | Header 3 |" }),
|
|
205
|
+
/* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter whitespace-nowrap", children: "| :--- | :---: | ---: |" }),
|
|
206
|
+
/* @__PURE__ */ e("span", { className: "text-neutral-300 text-xs font-medium leading-4 font-inter whitespace-nowrap", children: "| Left | Center | Right |" })
|
|
207
207
|
] })
|
|
208
208
|
] })
|
|
209
209
|
] }) })
|
|
@@ -221,7 +221,7 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
221
221
|
), children: [
|
|
222
222
|
/* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
|
|
223
223
|
/* @__PURE__ */ e(
|
|
224
|
-
|
|
224
|
+
f,
|
|
225
225
|
{
|
|
226
226
|
id: `${l}-bold`,
|
|
227
227
|
type: "button",
|
|
@@ -231,11 +231,11 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
231
231
|
appearance: "ghost",
|
|
232
232
|
status: "no-background",
|
|
233
233
|
title: "Bold (Ctrl+B)",
|
|
234
|
-
children: /* @__PURE__ */ e(
|
|
234
|
+
children: /* @__PURE__ */ e(me, { sx: { fontSize: 20, color: "#667085" }, className: "dark:text-neutral-400" })
|
|
235
235
|
}
|
|
236
236
|
),
|
|
237
237
|
/* @__PURE__ */ e(
|
|
238
|
-
|
|
238
|
+
f,
|
|
239
239
|
{
|
|
240
240
|
id: `${l}-italic`,
|
|
241
241
|
type: "button",
|
|
@@ -245,11 +245,11 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
245
245
|
appearance: "ghost",
|
|
246
246
|
status: "no-background",
|
|
247
247
|
title: "Italic (Ctrl+I)",
|
|
248
|
-
children: /* @__PURE__ */ e(
|
|
248
|
+
children: /* @__PURE__ */ e(xe, { sx: { fontSize: 20, color: "#667085" }, className: "dark:text-neutral-400" })
|
|
249
249
|
}
|
|
250
250
|
),
|
|
251
251
|
/* @__PURE__ */ e(
|
|
252
|
-
|
|
252
|
+
f,
|
|
253
253
|
{
|
|
254
254
|
id: `${l}-underline`,
|
|
255
255
|
type: "button",
|
|
@@ -264,7 +264,7 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
264
264
|
),
|
|
265
265
|
/* @__PURE__ */ e("div", { className: "w-px h-5 bg-[#EAECF0] dark:bg-black-500 rounded-full" }),
|
|
266
266
|
/* @__PURE__ */ e(
|
|
267
|
-
|
|
267
|
+
f,
|
|
268
268
|
{
|
|
269
269
|
id: `${l}-numbered-list`,
|
|
270
270
|
type: "button",
|
|
@@ -274,11 +274,11 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
274
274
|
appearance: "ghost",
|
|
275
275
|
status: "no-background",
|
|
276
276
|
title: "Numbered List",
|
|
277
|
-
children: /* @__PURE__ */ e(
|
|
277
|
+
children: /* @__PURE__ */ e(he, { sx: { fontSize: 20, color: "#667085" }, className: "dark:text-neutral-400" })
|
|
278
278
|
}
|
|
279
279
|
),
|
|
280
280
|
/* @__PURE__ */ e(
|
|
281
|
-
|
|
281
|
+
f,
|
|
282
282
|
{
|
|
283
283
|
id: `${l}-bullet-list`,
|
|
284
284
|
type: "button",
|
|
@@ -288,21 +288,21 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
288
288
|
appearance: "ghost",
|
|
289
289
|
status: "no-background",
|
|
290
290
|
title: "Bullet List",
|
|
291
|
-
children: /* @__PURE__ */ e(
|
|
291
|
+
children: /* @__PURE__ */ e(fe, { sx: { fontSize: 20, color: "#667085" }, className: "dark:text-neutral-400" })
|
|
292
292
|
}
|
|
293
293
|
)
|
|
294
294
|
] }),
|
|
295
295
|
/* @__PURE__ */ t("div", { className: "flex items-center gap-2", children: [
|
|
296
|
-
|
|
296
|
+
p && /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
|
|
297
297
|
/* @__PURE__ */ t("span", { className: "text-sm font-medium text-[#475467] dark:text-neutral-400", children: [
|
|
298
298
|
le,
|
|
299
299
|
"/",
|
|
300
|
-
|
|
300
|
+
p
|
|
301
301
|
] }),
|
|
302
302
|
/* @__PURE__ */ e("div", { className: "w-px h-6 bg-[#EAECF0] dark:bg-black-500 rounded-full" })
|
|
303
303
|
] }),
|
|
304
304
|
ee ? /* @__PURE__ */ e(
|
|
305
|
-
|
|
305
|
+
f,
|
|
306
306
|
{
|
|
307
307
|
id: `${l}-expand`,
|
|
308
308
|
type: "button",
|
|
@@ -312,7 +312,7 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
312
312
|
appearance: "ghost",
|
|
313
313
|
status: "no-background",
|
|
314
314
|
title: "Expand Preview",
|
|
315
|
-
children: /* @__PURE__ */ e(
|
|
315
|
+
children: /* @__PURE__ */ e(pe, { sx: { fontSize: 16, color: "#667085" }, className: "dark:text-neutral-400" })
|
|
316
316
|
}
|
|
317
317
|
) : /* @__PURE__ */ e(
|
|
318
318
|
Ne,
|
|
@@ -344,14 +344,14 @@ const je = ["edit", "preview"], Ce = ({ className: w, size: r = 16 }) => /* @__P
|
|
|
344
344
|
defaultValue: W,
|
|
345
345
|
onChange: (n) => {
|
|
346
346
|
const i = n.target.value;
|
|
347
|
-
(!
|
|
347
|
+
(!p || i.length <= p) && b(i);
|
|
348
348
|
},
|
|
349
349
|
onKeyDown: ie,
|
|
350
350
|
placeholder: D,
|
|
351
351
|
rows: ce,
|
|
352
352
|
disabled: c,
|
|
353
353
|
required: z,
|
|
354
|
-
maxLength:
|
|
354
|
+
maxLength: p,
|
|
355
355
|
className: j(
|
|
356
356
|
// Base styles
|
|
357
357
|
"w-full bg-transparent !focus:ring-0 !focus:border-none",
|