payload-richtext-tiptap 0.0.52 → 0.0.54

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.
Files changed (65) hide show
  1. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.d.ts +2 -0
  2. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.d.ts.map +1 -1
  3. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
  4. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts.map +1 -1
  5. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js +29 -16
  6. package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
  7. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.d.ts +5 -0
  8. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.d.ts.map +1 -1
  9. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js +23 -2
  10. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js.map +1 -1
  11. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.d.ts.map +1 -1
  12. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js +23 -1
  13. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js.map +1 -1
  14. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.d.ts +17 -0
  15. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.d.ts.map +1 -1
  16. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.js +47 -12
  17. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockView.js.map +1 -1
  18. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.d.ts +10 -0
  19. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.d.ts.map +1 -0
  20. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.js +45 -0
  21. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/VideoPlayer.js.map +1 -0
  22. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.d.ts +12 -0
  23. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.d.ts.map +1 -0
  24. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js +34 -0
  25. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualityOption.js.map +1 -0
  26. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.d.ts +22 -0
  27. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.d.ts.map +1 -0
  28. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js +78 -0
  29. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/components/QualitySelector.js.map +1 -0
  30. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.d.ts +10 -0
  31. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.d.ts.map +1 -0
  32. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js +10 -0
  33. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js.map +1 -0
  34. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.d.ts +3 -0
  35. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.d.ts.map +1 -0
  36. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.js +52 -0
  37. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/index.js.map +1 -0
  38. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.d.ts +2 -0
  39. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.d.ts.map +1 -0
  40. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.js +35 -0
  41. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/middleware/SourceInterceptor.js.map +1 -0
  42. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.d.ts +16 -0
  43. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.d.ts.map +1 -0
  44. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.js +72 -0
  45. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/util/SafeSeek.js.map +1 -0
  46. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +1 -1
  47. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
  48. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +5 -0
  49. package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
  50. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/ai-draft-selector-commands.d.ts +1 -1
  51. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.d.ts.map +1 -1
  52. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js +1 -1
  53. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
  54. package/dist/src/fields/TiptapEditor/lib/extract.d.ts +1 -0
  55. package/dist/src/fields/TiptapEditor/lib/extract.d.ts.map +1 -1
  56. package/dist/src/fields/TiptapEditor/lib/extract.js +8 -1
  57. package/dist/src/fields/TiptapEditor/lib/extract.js.map +1 -1
  58. package/dist/src/fields/TiptapEditor/types.d.js.map +1 -1
  59. package/dist/src/index.d.ts +1 -1
  60. package/dist/src/index.d.ts.map +1 -1
  61. package/dist/src/index.js +1 -1
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/styles.css +67 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/package.json +196 -189
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCompletion } from \"ai/react\";\nimport { ArrowUpCircle, Sparkles } from \"lucide-react\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport Markdown from \"react-markdown\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\n\nimport {\n Command,\n Group,\n} from \"src/fields/TiptapEditor/extensions/AICommand/types.js\";\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport { isRTL } from \"../../../lib/utils/isRtl.js\";\nimport CrazySpinner from \"../../ui/crazy-spinner.js\";\nimport { DropdownButton } from \"../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../ui/Icon.js\";\nimport { ScrollArea } from \"../../ui/scroll-area.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { Toolbar } from \"../../ui/Toolbar.js\";\nimport AISelectorCommands from \"../../menus/TextMenu/components/ai-selector-commands.js\";\n\nexport type AICommandPanelProps = {\n editor: Editor;\n userPrompt?: string;\n onOpenChange: (value: boolean) => void;\n items: Group[];\n};\n\nexport const AICommandPanel = forwardRef(\n (\n {\n editor,\n onOpenChange,\n userPrompt,\n items,\n ...restProps\n }: AICommandPanelProps,\n ref\n ) => {\n const [inputValue, setInputValue] = useState(userPrompt ?? \"\");\n const { code } = useLocale();\n const { view } = editor;\n const scrollContainer = useRef<HTMLDivElement>(null);\n const activeItem = useRef<HTMLButtonElement>(null);\n const [selectedGroupIndex, setSelectedGroupIndex] = useState(0);\n const [selectedCommandIndex, setSelectedCommandIndex] = useState(0);\n\n const editorNode = view.dom as HTMLElement;\n const boundigClient = editorNode.getBoundingClientRect();\n const inputRef = useRef<HTMLTextAreaElement>(null);\n\n // const { status, messages, input, submitMessage, handleInputChange } = useAssistant({\n // // id: \"novel\",\n // api: \"/api/assistant\",\n // onResponse: (response) => {\n // if (response.status === 429) {\n // toast.error(\"You have reached your request limit for the day.\");\n // return;\n // }\n // },\n // onError: (e) => {\n // toast.error(e.message);\n // },\n // });\n\n const { completion, complete, isLoading } = useCompletion({\n // id: \"novel\",\n api: \"/api/generate\",\n onResponse: (response) => {\n if (response.status === 429) {\n console.log(\"You have reached your request limit for the day.\");\n\n return;\n }\n },\n\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: {\n option: \"zap\",\n command:\n (editor.storage.aiCommand.title\n ? \"Context Title:\" + editor.storage.aiCommand.title + \";\\n\"\n : \"\") +\n (editor.storage.aiCommand.language\n ? \"Context language:\" + editor.storage.aiCommand.language + \";\\n\"\n : \"\") +\n inputValue,\n language: editor.storage.aiCommand.language ?? code ?? \"en\",\n },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n useEffect(() => {\n if (userPrompt) setInputValue(userPrompt);\n }, [userPrompt]);\n useEffect(() => {\n editor.storage.aiCommand.completion = completion;\n // if (!isLoading && completion) {\n // const selection = editor.state.selection;\n // editor\n // .chain()\n // .focus()\n // .insertContentAt(selection.to - 1, completion)\n // .insertContentAt(selection.to, \" \")\n // .run();\n\n // }\n }, [completion, isLoading]);\n\n // Anytime the groups change, i.e. the user types to narrow it down, we want to\n // reset the current selection to the first menu item\n useEffect(() => {\n setSelectedGroupIndex(0);\n setSelectedCommandIndex(0);\n }, [items]);\n\n const selectItem = useCallback(\n (groupIndex: number, commandIndex: number) => {\n const command = items[groupIndex].commands[commandIndex];\n\n setInputValue(command.action(editor));\n // props.command(command);\n },\n [items, editor]\n );\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }: { event: React.KeyboardEvent }) => {\n if (event.key === \"ArrowDown\") {\n if (!items.length) {\n return false;\n }\n\n const commands = items[selectedGroupIndex].commands;\n\n let newCommandIndex = selectedCommandIndex + 1;\n let newGroupIndex = selectedGroupIndex;\n\n if (commands.length - 1 < newCommandIndex) {\n newCommandIndex = 0;\n newGroupIndex = selectedGroupIndex + 1;\n }\n\n if (items.length - 1 < newGroupIndex) {\n newGroupIndex = 0;\n }\n\n setSelectedCommandIndex(newCommandIndex);\n setSelectedGroupIndex(newGroupIndex);\n\n return true;\n }\n\n if (event.key === \"ArrowUp\") {\n if (!items.length) {\n return false;\n }\n\n let newCommandIndex = selectedCommandIndex - 1;\n let newGroupIndex = selectedGroupIndex;\n\n if (newCommandIndex < 0) {\n newGroupIndex = selectedGroupIndex - 1;\n newCommandIndex = items[newGroupIndex]?.commands.length - 1 || 0;\n }\n\n if (newGroupIndex < 0) {\n newGroupIndex = items.length - 1;\n newCommandIndex = items[newGroupIndex].commands.length - 1;\n }\n\n setSelectedCommandIndex(newCommandIndex);\n setSelectedGroupIndex(newGroupIndex);\n\n return true;\n }\n\n if (event.key === \"Enter\") {\n if (\n !items.length ||\n selectedGroupIndex === -1 ||\n selectedCommandIndex === -1\n ) {\n return false;\n }\n\n selectItem(selectedGroupIndex, selectedCommandIndex);\n\n return true;\n }\n\n return false;\n },\n }));\n\n useEffect(() => {\n if (activeItem.current && scrollContainer.current) {\n const offsetTop = activeItem.current.offsetTop;\n const offsetHeight = activeItem.current.offsetHeight;\n\n scrollContainer.current.scrollTop = offsetTop - offsetHeight;\n }\n }, [selectedCommandIndex, selectedGroupIndex]);\n\n const createCommandClickHandler = useCallback(\n (groupIndex: number, commandIndex: number) => {\n return () => {\n selectItem(groupIndex, commandIndex);\n };\n },\n [selectItem]\n );\n\n return (\n <>\n <Surface\n className={`p-2 min-w-[20rem] flex flex-col gap-2 w-full`}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && (\n <div className=\"flex w-full\">\n <ScrollArea\n className=\"h-72 prose p-2 px-4 prose-sm w-full max-w-none\"\n dir={isRTL(completion) ? \"rtl\" : \"ltr\"}\n >\n <Markdown className=\"w-full\">{completion}</Markdown>\n </ScrollArea>\n </div>\n )}\n\n {isLoading && (\n <div\n className=\"flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500\"\n style={{\n width: boundigClient?.width,\n }}\n >\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 \" />\n AI is thinking\n <div className=\"ml-2 mt-1\">\n <CrazySpinner />\n </div>\n </div>\n )}\n\n {!isLoading && (\n <>\n <div className=\"flex justify-between items-center \">\n {/* <CommandInput\n value={inputValue}\n onValueChange={setInputValue}\n autoFocus\n placeholder={\n hasCompletion ? 'Tell AI what to do next' : 'Ask AI to edit or generate...'\n }\n // onFocus={() => addAIHighlight(editor)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleClick()\n }}\n /> */}\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 text-blue-500 \" />\n <TextareaAutosize\n ref={inputRef}\n style={{ resize: \"none\" }}\n className=\"w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none outline-none border-0 \"\n value={inputValue}\n onChange={(e) => {\n editor.storage.aiCommand.userPrompt = e.target.value;\n\n setInputValue(e.target.value);\n }}\n placeholder={\n hasCompletion\n ? \"Tell AI what to do next\"\n : \"Ask AI to edit or generate...\"\n }\n autoFocus\n // onFocus={() => {\n // addAIHighlight(editor)}}\n\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleClick();\n }}\n />\n <Toolbar.Button\n // size=\"icon\"\n\n // className=\"absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150\"\n onClick={handleClick}\n >\n <ArrowUpCircle />\n </Toolbar.Button>\n </div>\n </>\n )}\n </>\n </Surface>\n {!isLoading && (\n <Surface\n ref={scrollContainer}\n className=\"text-black max-h-[min(80vh,24rem)] overflow-auto flex-wrap mb-8 p-2\"\n >\n <div className=\"grid grid-cols-1 gap-0.5\">\n {hasCompletion ? (\n <AISelectorCommands\n editor={editor}\n messages={completion}\n onSelect={(value, options) => {\n console.log(\"VALUE\", value, options);\n complete(value, { body: options });\n }}\n />\n ) : (\n items.map((group, groupIndex: number) => (\n <React.Fragment key={`${group.title}-wrapper`}>\n <div\n className=\"text-neutral-500 text-[0.65rem] col-[1/-1] mx-2 mt-4 font-semibold tracking-wider select-none uppercase first:mt-0.5\"\n key={`${group.title}`}\n >\n {group.title}\n </div>\n {group.commands.map(\n (command: Command, commandIndex: number) => (\n <DropdownButton\n key={`${command.label}`}\n isActive={\n selectedGroupIndex === groupIndex &&\n selectedCommandIndex === commandIndex\n }\n onClick={createCommandClickHandler(\n groupIndex,\n commandIndex\n )}\n >\n <Icon icon={command.icon} className=\"mr-1\" />\n {command.label}\n </DropdownButton>\n )\n )}\n </React.Fragment>\n ))\n )}\n </div>\n </Surface>\n )}\n </>\n );\n }\n);\n"],"names":["useCompletion","ArrowUpCircle","Sparkles","React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","Markdown","TextareaAutosize","useLocale","getPrevText","isRTL","CrazySpinner","DropdownButton","Icon","ScrollArea","Surface","Toolbar","AISelectorCommands","AICommandPanel","editor","onOpenChange","userPrompt","items","restProps","ref","inputValue","setInputValue","code","view","scrollContainer","activeItem","selectedGroupIndex","setSelectedGroupIndex","selectedCommandIndex","setSelectedCommandIndex","editorNode","dom","boundigClient","getBoundingClientRect","inputRef","completion","complete","isLoading","api","onResponse","response","status","console","log","onError","e","message","hasCompletion","length","handleClick","body","option","command","language","then","text","chars","storage","aiCommand","title","selectItem","groupIndex","commandIndex","commands","action","onKeyDown","event","key","newCommandIndex","newGroupIndex","current","offsetTop","offsetHeight","scrollTop","createCommandClickHandler","className","style","width","div","dir","resize","value","onChange","target","placeholder","autoFocus","Button","onClick","messages","onSelect","options","map","group","Fragment","isActive","icon","label"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCompletion } from \"ai/react\";\nimport { ArrowUpCircle, Sparkles } from \"lucide-react\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport Markdown from \"react-markdown\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { Editor } from \"@tiptap/react\";\n\nimport {\n Command,\n Group,\n} from \"src/fields/TiptapEditor/extensions/AICommand/types.js\";\nimport { getPrevText } from \"../../../lib/utils/index.js\";\nimport { isRTL } from \"../../../lib/utils/isRtl.js\";\nimport CrazySpinner from \"../../ui/crazy-spinner.js\";\nimport { DropdownButton } from \"../../ui/Dropdown/Dropdown.js\";\nimport { Icon } from \"../../ui/Icon.js\";\nimport { ScrollArea } from \"../../ui/scroll-area.js\";\nimport { Surface } from \"../../ui/Surface.js\";\nimport { Toolbar } from \"../../ui/Toolbar.js\";\nimport AISelectorCommands from \"../../menus/TextMenu/components/ai-selector-commands.js\";\n\nexport type AICommandPanelProps = {\n editor: Editor;\n userPrompt?: string;\n onOpenChange: (value: boolean) => void;\n items: Group[];\n};\n\nexport const AICommandPanel = forwardRef(\n (\n {\n editor,\n onOpenChange,\n userPrompt,\n items,\n ...restProps\n }: AICommandPanelProps,\n ref\n ) => {\n const [inputValue, setInputValue] = useState(userPrompt ?? \"\");\n const { code } = useLocale();\n const { view } = editor;\n const scrollContainer = useRef<HTMLDivElement>(null);\n const activeItem = useRef<HTMLButtonElement>(null);\n const [selectedGroupIndex, setSelectedGroupIndex] = useState(0);\n const [selectedCommandIndex, setSelectedCommandIndex] = useState(0);\n\n const editorNode = view.dom as HTMLElement;\n const boundigClient = editorNode.getBoundingClientRect();\n const inputRef = useRef<HTMLTextAreaElement>(null);\n\n // const { status, messages, input, submitMessage, handleInputChange } = useAssistant({\n // // id: \"novel\",\n // api: \"/api/assistant\",\n // onResponse: (response) => {\n // if (response.status === 429) {\n // toast.error(\"You have reached your request limit for the day.\");\n // return;\n // }\n // },\n // onError: (e) => {\n // toast.error(e.message);\n // },\n // });\n\n const { completion, complete, isLoading } = useCompletion({\n // id: \"novel\",\n api: \"/api/generate\",\n onResponse: (response) => {\n if (response.status === 429) {\n console.log(\"You have reached your request limit for the day.\");\n\n return;\n }\n },\n\n onError: (e) => {\n console.log(\"ERROR\", e.message);\n },\n });\n\n const hasCompletion = completion.length > 0;\n const handleClick = useCallback(() => {\n if (completion) {\n return complete(completion, {\n body: { option: \"zap\", command: inputValue, language: code ?? \"en\" },\n }).then(() => setInputValue(\"\"));\n }\n const text = getPrevText(editor, { chars: 5000 });\n\n complete(text, {\n body: {\n option: \"zap\",\n command:\n (editor.storage.aiCommand.title\n ? \"Context Title:\" + editor.storage.aiCommand.title + \";\\n\"\n : \"\") +\n (editor.storage.aiCommand.language\n ? \"Context language:\" + editor.storage.aiCommand.language + \";\\n\"\n : \"\") +\n inputValue,\n language: editor.storage.aiCommand.language ?? code ?? \"en\",\n },\n }).then(() => setInputValue(\"\"));\n }, [code, inputValue]);\n\n useEffect(() => {\n if (userPrompt) setInputValue(userPrompt);\n }, [userPrompt]);\n useEffect(() => {\n editor.storage.aiCommand.completion = completion;\n // if (!isLoading && completion) {\n // const selection = editor.state.selection;\n // editor\n // .chain()\n // .focus()\n // .insertContentAt(selection.to - 1, completion)\n // .insertContentAt(selection.to, \" \")\n // .run();\n\n // }\n }, [completion, isLoading]);\n\n // Anytime the groups change, i.e. the user types to narrow it down, we want to\n // reset the current selection to the first menu item\n useEffect(() => {\n setSelectedGroupIndex(0);\n setSelectedCommandIndex(0);\n }, [items]);\n\n const selectItem = useCallback(\n (groupIndex: number, commandIndex: number) => {\n const command = items[groupIndex].commands[commandIndex];\n\n setInputValue(command.action(editor));\n // props.command(command);\n },\n [items, editor]\n );\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }: { event: React.KeyboardEvent }) => {\n if (event.key === \"ArrowDown\") {\n if (!items.length) {\n return false;\n }\n\n const commands = items[selectedGroupIndex].commands;\n\n let newCommandIndex = selectedCommandIndex + 1;\n let newGroupIndex = selectedGroupIndex;\n\n if (commands.length - 1 < newCommandIndex) {\n newCommandIndex = 0;\n newGroupIndex = selectedGroupIndex + 1;\n }\n\n if (items.length - 1 < newGroupIndex) {\n newGroupIndex = 0;\n }\n\n setSelectedCommandIndex(newCommandIndex);\n setSelectedGroupIndex(newGroupIndex);\n\n return true;\n }\n\n if (event.key === \"ArrowUp\") {\n if (!items.length) {\n return false;\n }\n\n let newCommandIndex = selectedCommandIndex - 1;\n let newGroupIndex = selectedGroupIndex;\n\n if (newCommandIndex < 0) {\n newGroupIndex = selectedGroupIndex - 1;\n newCommandIndex = items[newGroupIndex]?.commands.length - 1 || 0;\n }\n\n if (newGroupIndex < 0) {\n newGroupIndex = items.length - 1;\n newCommandIndex = items[newGroupIndex].commands.length - 1;\n }\n\n setSelectedCommandIndex(newCommandIndex);\n setSelectedGroupIndex(newGroupIndex);\n\n return true;\n }\n\n if (event.key === \"Enter\") {\n if (\n !items.length ||\n selectedGroupIndex === -1 ||\n selectedCommandIndex === -1\n ) {\n return false;\n }\n\n selectItem(selectedGroupIndex, selectedCommandIndex);\n\n return true;\n }\n\n return false;\n },\n }));\n\n useEffect(() => {\n if (activeItem.current && scrollContainer.current) {\n const offsetTop = activeItem.current.offsetTop;\n const offsetHeight = activeItem.current.offsetHeight;\n\n scrollContainer.current.scrollTop = offsetTop - offsetHeight;\n }\n }, [selectedCommandIndex, selectedGroupIndex]);\n\n const createCommandClickHandler = useCallback(\n (groupIndex: number, commandIndex: number) => {\n return () => {\n selectItem(groupIndex, commandIndex);\n };\n },\n [selectItem]\n );\n\n return (\n <>\n <Surface\n className={`p-2 min-w-[20rem] flex flex-col gap-2 w-full ${\n hasCompletion ? \"-mt-72\" : \"\"\n }`}\n style={{\n width: boundigClient?.width,\n }}\n >\n <>\n {hasCompletion && (\n <div className=\"flex w-full\">\n <ScrollArea\n className=\"h-72 prose p-2 px-4 prose-sm w-full max-w-none\"\n dir={isRTL(completion) ? \"rtl\" : \"ltr\"}\n >\n <Markdown className=\"w-full\">{completion}</Markdown>\n </ScrollArea>\n </div>\n )}\n\n {isLoading && (\n <div\n className=\"flex h-12 w-full items-center px-4 text-sm font-medium text-muted-foreground text-blue-500\"\n style={{\n width: boundigClient?.width,\n }}\n >\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 \" />\n AI is thinking\n <div className=\"ml-2 mt-1\">\n <CrazySpinner />\n </div>\n </div>\n )}\n\n {!isLoading && (\n <>\n <div className=\"flex justify-between items-center \">\n {/* <CommandInput\n value={inputValue}\n onValueChange={setInputValue}\n autoFocus\n placeholder={\n hasCompletion ? 'Tell AI what to do next' : 'Ask AI to edit or generate...'\n }\n // onFocus={() => addAIHighlight(editor)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handleClick()\n }}\n /> */}\n <Sparkles className=\"mr-2 h-4 w-4 shrink-0 text-blue-500 \" />\n <TextareaAutosize\n ref={inputRef}\n style={{ resize: \"none\" }}\n className=\"w-full p-2 text-black bg-white rounded dark:bg-black dark:text-white focus:outline-none outline-none border-0 \"\n value={inputValue}\n onChange={(e) => {\n editor.storage.aiCommand.userPrompt = e.target.value;\n\n setInputValue(e.target.value);\n }}\n placeholder={\n hasCompletion\n ? \"Tell AI what to do next\"\n : \"Ask AI to edit or generate...\"\n }\n autoFocus\n // onFocus={() => {\n // addAIHighlight(editor)}}\n\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleClick();\n }}\n />\n <Toolbar.Button\n // size=\"icon\"\n\n // className=\"absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 rounded-full bg-zinc-100 hover:bg-zinc-150\"\n onClick={handleClick}\n >\n <ArrowUpCircle />\n </Toolbar.Button>\n </div>\n </>\n )}\n </>\n </Surface>\n {!isLoading && (\n <Surface\n ref={scrollContainer}\n className=\"text-black max-h-[min(80vh,24rem)] overflow-auto flex-wrap mb-8 p-2\"\n >\n <div className=\"grid grid-cols-1 gap-0.5\">\n {hasCompletion ? (\n <AISelectorCommands\n editor={editor}\n messages={completion}\n onSelect={(value, options) => {\n console.log(\"VALUE\", value, options);\n complete(value, { body: options });\n }}\n />\n ) : (\n items.map((group, groupIndex: number) => (\n <React.Fragment key={`${group.title}-wrapper`}>\n <div\n className=\"text-neutral-500 text-[0.65rem] col-[1/-1] mx-2 mt-4 font-semibold tracking-wider select-none uppercase first:mt-0.5\"\n key={`${group.title}`}\n >\n {group.title}\n </div>\n {group.commands.map(\n (command: Command, commandIndex: number) => (\n <DropdownButton\n key={`${command.label}`}\n isActive={\n selectedGroupIndex === groupIndex &&\n selectedCommandIndex === commandIndex\n }\n onClick={createCommandClickHandler(\n groupIndex,\n commandIndex\n )}\n >\n <Icon icon={command.icon} className=\"mr-1\" />\n {command.label}\n </DropdownButton>\n )\n )}\n </React.Fragment>\n ))\n )}\n </div>\n </Surface>\n )}\n </>\n );\n }\n);\n"],"names":["useCompletion","ArrowUpCircle","Sparkles","React","forwardRef","useCallback","useEffect","useImperativeHandle","useRef","useState","Markdown","TextareaAutosize","useLocale","getPrevText","isRTL","CrazySpinner","DropdownButton","Icon","ScrollArea","Surface","Toolbar","AISelectorCommands","AICommandPanel","editor","onOpenChange","userPrompt","items","restProps","ref","inputValue","setInputValue","code","view","scrollContainer","activeItem","selectedGroupIndex","setSelectedGroupIndex","selectedCommandIndex","setSelectedCommandIndex","editorNode","dom","boundigClient","getBoundingClientRect","inputRef","completion","complete","isLoading","api","onResponse","response","status","console","log","onError","e","message","hasCompletion","length","handleClick","body","option","command","language","then","text","chars","storage","aiCommand","title","selectItem","groupIndex","commandIndex","commands","action","onKeyDown","event","key","newCommandIndex","newGroupIndex","current","offsetTop","offsetHeight","scrollTop","createCommandClickHandler","className","style","width","div","dir","resize","value","onChange","target","placeholder","autoFocus","Button","onClick","messages","onSelect","options","map","group","Fragment","isActive","icon","label"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export declare const extractTiptapJson: (markdownValue: string) => import("@tiptap/core").JSONContent;
2
+ export declare const extractTiptapJsonFromHTML: (htmlinput: string) => Record<string, any>;
2
3
  export declare const extractMarkdown: (json: any) => any;
3
4
  //# sourceMappingURL=extract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/lib/extract.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,kBAAmB,MAAM,uCAWtD,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,GAAG,QAWxC,CAAC"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/lib/extract.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,kBAAmB,MAAM,uCAWtD,CAAC;AAEF,eAAO,MAAM,yBAAyB,cAAe,MAAM,wBAO1D,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,GAAG,QAWxC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Editor } from "@tiptap/core";
1
+ import { Editor, generateJSON } from "@tiptap/core";
2
2
  import ExtensionKit from "../extensions/extension-kit.js";
3
3
  export const extractTiptapJson = (markdownValue)=>{
4
4
  const editor = new Editor({
@@ -11,6 +11,13 @@ export const extractTiptapJson = (markdownValue)=>{
11
11
  });
12
12
  return editor.getJSON();
13
13
  };
14
+ export const extractTiptapJsonFromHTML = (htmlinput)=>{
15
+ return generateJSON(htmlinput, [
16
+ ...ExtensionKit({
17
+ openAssetHQHandler: ()=>{}
18
+ })
19
+ ]);
20
+ };
14
21
  export const extractMarkdown = (json)=>{
15
22
  const editor = new Editor({
16
23
  content: json,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/fields/TiptapEditor/lib/extract.ts"],"sourcesContent":["import { Editor } from \"@tiptap/core\";\nimport ExtensionKit from \"../extensions/extension-kit.js\";\n\nexport const extractTiptapJson = (markdownValue: string) => {\n const editor = new Editor({\n content: markdownValue,\n extensions: [\n ...ExtensionKit({\n openAssetHQHandler: () => {},\n // provider,\n }),\n ],\n });\n return editor.getJSON();\n};\n\nexport const extractMarkdown = (json: any) => {\n const editor = new Editor({\n content: json,\n extensions: [\n ...ExtensionKit({\n // provider,\n openAssetHQHandler: () => {},\n }),\n ],\n });\n return editor.storage.markdown.getMarkdown();\n};\n"],"names":["Editor","ExtensionKit","extractTiptapJson","markdownValue","editor","content","extensions","openAssetHQHandler","getJSON","extractMarkdown","json","storage","markdown","getMarkdown"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,kBAAkB,iCAAiC;AAE1D,OAAO,MAAMC,oBAAoB,CAACC;IAChC,MAAMC,SAAS,IAAIJ,OAAO;QACxBK,SAASF;QACTG,YAAY;eACPL,aAAa;gBACdM,oBAAoB,KAAO;YAE7B;SACD;IACH;IACA,OAAOH,OAAOI,OAAO;AACvB,EAAE;AAEF,OAAO,MAAMC,kBAAkB,CAACC;IAC9B,MAAMN,SAAS,IAAIJ,OAAO;QACxBK,SAASK;QACTJ,YAAY;eACPL,aAAa;gBACd,YAAY;gBACZM,oBAAoB,KAAO;YAC7B;SACD;IACH;IACA,OAAOH,OAAOO,OAAO,CAACC,QAAQ,CAACC,WAAW;AAC5C,EAAE"}
1
+ {"version":3,"sources":["../../../../../src/fields/TiptapEditor/lib/extract.ts"],"sourcesContent":["import { Editor, generateJSON } from \"@tiptap/core\";\nimport ExtensionKit from \"../extensions/extension-kit.js\";\n\nexport const extractTiptapJson = (markdownValue: string) => {\n const editor = new Editor({\n content: markdownValue,\n extensions: [\n ...ExtensionKit({\n openAssetHQHandler: () => {},\n // provider,\n }),\n ],\n });\n return editor.getJSON();\n};\n\nexport const extractTiptapJsonFromHTML = (htmlinput: string) => {\n return generateJSON(htmlinput, [\n ...ExtensionKit({\n openAssetHQHandler: () => {},\n // provider,\n }),\n ]);\n};\n\nexport const extractMarkdown = (json: any) => {\n const editor = new Editor({\n content: json,\n extensions: [\n ...ExtensionKit({\n // provider,\n openAssetHQHandler: () => {},\n }),\n ],\n });\n return editor.storage.markdown.getMarkdown();\n};\n"],"names":["Editor","generateJSON","ExtensionKit","extractTiptapJson","markdownValue","editor","content","extensions","openAssetHQHandler","getJSON","extractTiptapJsonFromHTML","htmlinput","extractMarkdown","json","storage","markdown","getMarkdown"],"mappings":"AAAA,SAASA,MAAM,EAAEC,YAAY,QAAQ,eAAe;AACpD,OAAOC,kBAAkB,iCAAiC;AAE1D,OAAO,MAAMC,oBAAoB,CAACC;IAChC,MAAMC,SAAS,IAAIL,OAAO;QACxBM,SAASF;QACTG,YAAY;eACPL,aAAa;gBACdM,oBAAoB,KAAO;YAE7B;SACD;IACH;IACA,OAAOH,OAAOI,OAAO;AACvB,EAAE;AAEF,OAAO,MAAMC,4BAA4B,CAACC;IACxC,OAAOV,aAAaU,WAAW;WAC1BT,aAAa;YACdM,oBAAoB,KAAO;QAE7B;KACD;AACH,EAAE;AAEF,OAAO,MAAMI,kBAAkB,CAACC;IAC9B,MAAMR,SAAS,IAAIL,OAAO;QACxBM,SAASO;QACTN,YAAY;eACPL,aAAa;gBACd,YAAY;gBACZM,oBAAoB,KAAO;YAC7B;SACD;IACH;IACA,OAAOH,OAAOS,OAAO,CAACC,QAAQ,CAACC,WAAW;AAC5C,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/TiptapEditor/types.d.ts"],"sourcesContent":["export type openAssetHQType = (\n listener: (asset: AssetReturnType) => void,\n file?: File\n) => void;\n\nexport type HitItem = {\n caption: string;\n description: string;\n fileName: string;\n fileSize: number;\n id: string;\n s3key: string;\n source: string;\n title: string;\n type: \"VIDEO\" | \"IMAGE\";\n updated_at: string;\n created_at: string;\n userId: string;\n tags: string[];\n celebrities: string[];\n videos: {\n aspectRatio: string;\n assetId: string;\n averageBitrate: number;\n createdAt: Date;\n downloaded: boolean;\n s3Key: string;\n duration: number;\n fileName: string;\n fileSize: number | null;\n frameRate: number;\n height: number;\n id: string;\n mimeType: string;\n newsAgencyVideoAssetId: string;\n providerSubId: string;\n sampleRate: number;\n updatedAt: Date;\n videoCodec: string;\n width: number;\n }[];\n};\nexport type SelectedAssetInModal = HitItem & {\n selectedVideo?: HitItem[\"videos\"][0];\n};\nexport type AssetReturnType = SelectedAssetInModal & {\n fullUrl: string;\n videoUrl?: string;\n renditions: Record<number, string>;\n};\n"],"names":[],"mappings":"AA6CA,WAIE"}
1
+ {"version":3,"sources":["../../../../src/fields/TiptapEditor/types.d.ts"],"sourcesContent":["export type openAssetHQType = (\n listener: (asset: AssetReturnType) => void,\n file?: File\n) => void;\n\nexport type HitItem = {\n caption: string;\n description: string;\n fileName: string;\n fileSize: number;\n id: string;\n s3key: string;\n source: string;\n title: string;\n type: \"VIDEO\" | \"IMAGE\";\n updated_at: string;\n created_at: string;\n userId: string;\n tags: string[];\n celebrities: string[];\n videos: {\n aspectRatio: string;\n assetId: string;\n averageBitrate: number;\n createdAt: Date;\n downloaded: boolean;\n s3Key: string;\n duration: number;\n fileName: string;\n fileSize: number | null;\n frameRate: number;\n height: number;\n id: string;\n mimeType: string;\n newsAgencyVideoAssetId: string;\n providerSubId: string;\n sampleRate: number;\n updatedAt: Date;\n videoCodec: string;\n width: number;\n }[];\n};\nexport type SelectedAssetInModal = HitItem & {\n selectedVideo?: HitItem[\"videos\"][0];\n};\nexport type AssetReturnType = SelectedAssetInModal & {\n fullUrl: string;\n videoUrl?: string;\n renditions: Record<number, string>;\n playlistUrl?: string;\n};\n"],"names":[],"mappings":"AA6CA,WAKE"}
@@ -1,5 +1,5 @@
1
1
  export { TipTapEditor } from "./fields/TiptapEditor/index.js";
2
2
  export { EditorComponent } from "./fields/TiptapEditor/Components.js";
3
3
  export { BlockEditor } from "./fields/TiptapEditor/features/BlockEditor/BlockEditor.js";
4
- export { extractMarkdown, extractTiptapJson, } from "./fields/TiptapEditor/lib/extract.js";
4
+ export { extractMarkdown, extractTiptapJson, extractTiptapJsonFromHTML, } from "./fields/TiptapEditor/lib/extract.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AACxF,OAAO,EACL,eAAe,EACf,iBAAiB,GAClB,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAC;AACxF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,sCAAsC,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { TipTapEditor } from "./fields/TiptapEditor/index.js";
2
2
  export { EditorComponent } from "./fields/TiptapEditor/Components.js";
3
3
  export { BlockEditor } from "./fields/TiptapEditor/features/BlockEditor/BlockEditor.js";
4
- export { extractMarkdown, extractTiptapJson } from "./fields/TiptapEditor/lib/extract.js";
4
+ export { extractMarkdown, extractTiptapJson, extractTiptapJsonFromHTML } from "./fields/TiptapEditor/lib/extract.js";
5
5
 
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { TipTapEditor } from \"./fields/TiptapEditor/index.js\";\nexport { EditorComponent } from \"./fields/TiptapEditor/Components.js\";\nexport { BlockEditor } from \"./fields/TiptapEditor/features/BlockEditor/BlockEditor.js\";\nexport {\n extractMarkdown,\n extractTiptapJson,\n} from \"./fields/TiptapEditor/lib/extract.js\";\n"],"names":["TipTapEditor","EditorComponent","BlockEditor","extractMarkdown","extractTiptapJson"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iCAAiC;AAC9D,SAASC,eAAe,QAAQ,sCAAsC;AACtE,SAASC,WAAW,QAAQ,4DAA4D;AACxF,SACEC,eAAe,EACfC,iBAAiB,QACZ,uCAAuC"}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export { TipTapEditor } from \"./fields/TiptapEditor/index.js\";\nexport { EditorComponent } from \"./fields/TiptapEditor/Components.js\";\nexport { BlockEditor } from \"./fields/TiptapEditor/features/BlockEditor/BlockEditor.js\";\nexport {\n extractMarkdown,\n extractTiptapJson,\n extractTiptapJsonFromHTML,\n} from \"./fields/TiptapEditor/lib/extract.js\";\n"],"names":["TipTapEditor","EditorComponent","BlockEditor","extractMarkdown","extractTiptapJson","extractTiptapJsonFromHTML"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iCAAiC;AAC9D,SAASC,eAAe,QAAQ,sCAAsC;AACtE,SAASC,WAAW,QAAQ,4DAA4D;AACxF,SACEC,eAAe,EACfC,iBAAiB,EACjBC,yBAAyB,QACpB,uCAAuC"}
@@ -1,5 +1,5 @@
1
1
  /*
2
- ! tailwindcss v3.4.6 | MIT License | https://tailwindcss.com
2
+ ! tailwindcss v3.4.7 | MIT License | https://tailwindcss.com
3
3
  */
4
4
 
5
5
  /*
@@ -1649,6 +1649,10 @@ select {
1649
1649
  margin-left: -1.5rem;
1650
1650
  }
1651
1651
 
1652
+ .-mt-72 {
1653
+ margin-top: -18rem;
1654
+ }
1655
+
1652
1656
  .mb-0 {
1653
1657
  margin-bottom: 0px;
1654
1658
  }
@@ -2155,6 +2159,10 @@ select {
2155
2159
  border-radius: 0.25rem;
2156
2160
  }
2157
2161
 
2162
+ .rounded-\[7px\] {
2163
+ border-radius: 7px;
2164
+ }
2165
+
2158
2166
  .rounded-\[inherit\] {
2159
2167
  border-radius: inherit;
2160
2168
  }
@@ -2404,6 +2412,10 @@ select {
2404
2412
  padding: 0.5rem;
2405
2413
  }
2406
2414
 
2415
+ .p-2\.5 {
2416
+ padding: 0.625rem;
2417
+ }
2418
+
2407
2419
  .p-4 {
2408
2420
  padding: 1rem;
2409
2421
  }
@@ -2615,6 +2627,11 @@ select {
2615
2627
  color: rgb(59 130 246 / var(--tw-text-opacity));
2616
2628
  }
2617
2629
 
2630
+ .text-gray-500 {
2631
+ --tw-text-opacity: 1;
2632
+ color: rgb(107 114 128 / var(--tw-text-opacity));
2633
+ }
2634
+
2618
2635
  .text-gray-900 {
2619
2636
  --tw-text-opacity: 1;
2620
2637
  color: rgb(17 24 39 / var(--tw-text-opacity));
@@ -2676,6 +2693,12 @@ select {
2676
2693
  opacity: 0.2;
2677
2694
  }
2678
2695
 
2696
+ .shadow {
2697
+ --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
2698
+ --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
2699
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2700
+ }
2701
+
2679
2702
  .shadow-2xl {
2680
2703
  --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
2681
2704
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
@@ -2724,6 +2747,14 @@ select {
2724
2747
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2725
2748
  }
2726
2749
 
2750
+ .transition {
2751
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
2752
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
2753
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
2754
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2755
+ transition-duration: 150ms;
2756
+ }
2757
+
2727
2758
  .transition-all {
2728
2759
  transition-property: all;
2729
2760
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -2742,10 +2773,18 @@ select {
2742
2773
  transition-duration: 150ms;
2743
2774
  }
2744
2775
 
2776
+ .delay-150 {
2777
+ transition-delay: 150ms;
2778
+ }
2779
+
2745
2780
  .duration-300 {
2746
2781
  transition-duration: 300ms;
2747
2782
  }
2748
2783
 
2784
+ .ease-in-out {
2785
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2786
+ }
2787
+
2749
2788
  @keyframes enter {
2750
2789
  from {
2751
2790
  opacity: var(--tw-enter-opacity, 1);
@@ -2764,6 +2803,18 @@ select {
2764
2803
  animation-duration: 300ms;
2765
2804
  }
2766
2805
 
2806
+ .delay-150 {
2807
+ animation-delay: 150ms;
2808
+ }
2809
+
2810
+ .ease-in-out {
2811
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2812
+ }
2813
+
2814
+ .paused {
2815
+ animation-play-state: paused;
2816
+ }
2817
+
2767
2818
  .\[animation-delay\:-0\.15s\] {
2768
2819
  animation-delay: -0.15s;
2769
2820
  }
@@ -2800,6 +2851,21 @@ select {
2800
2851
  margin-top: 0px;
2801
2852
  }
2802
2853
 
2854
+ .hover\:scale-110:hover {
2855
+ --tw-scale-x: 1.1;
2856
+ --tw-scale-y: 1.1;
2857
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2858
+ }
2859
+
2860
+ .hover\:cursor-pointer:hover {
2861
+ cursor: pointer;
2862
+ }
2863
+
2864
+ .hover\:bg-amber-600:hover {
2865
+ --tw-bg-opacity: 1;
2866
+ background-color: rgb(217 119 6 / var(--tw-bg-opacity));
2867
+ }
2868
+
2803
2869
  .hover\:bg-black:hover {
2804
2870
  --tw-bg-opacity: 1;
2805
2871
  background-color: rgb(0 0 0 / var(--tw-bg-opacity));