@ynput/ayon-frontend-shared 0.3.33 → 0.3.35

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 (109) hide show
  1. package/dist/_virtual/index.cjs22.js +1 -1
  2. package/dist/_virtual/index.cjs23.js +1 -1
  3. package/dist/_virtual/index.cjs24.js +1 -1
  4. package/dist/_virtual/index.cjs7.js +1 -1
  5. package/dist/_virtual/index.cjs9.js +1 -1
  6. package/dist/_virtual/index.es22.js +3 -3
  7. package/dist/_virtual/index.es23.js +5 -5
  8. package/dist/_virtual/index.es24.js +5 -5
  9. package/dist/_virtual/index.es7.js +2 -5
  10. package/dist/_virtual/index.es7.js.map +1 -1
  11. package/dist/_virtual/index.es9.js +5 -2
  12. package/dist/_virtual/index.es9.js.map +1 -1
  13. package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
  14. package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
  15. package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
  16. package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
  17. package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
  18. package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
  19. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  20. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  21. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  22. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  23. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  24. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  25. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  26. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  27. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  28. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  29. package/dist/shared/src/api/generated/graphql.cjs.js +2 -2
  30. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  31. package/dist/shared/src/api/generated/graphql.es.js +2 -2
  32. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  33. package/dist/shared/src/api/generated/graphqlLinks.cjs.js.map +1 -1
  34. package/dist/shared/src/api/generated/graphqlLinks.es.js.map +1 -1
  35. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  36. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  37. package/dist/shared/src/containers/Feed/Feed.es.js +97 -98
  38. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  39. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  40. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  41. package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js +3 -3
  42. package/dist/shared/src/containers/Feed/components/ActivityDate.cjs.js.map +1 -1
  43. package/dist/shared/src/containers/Feed/components/ActivityDate.es.js +37 -35
  44. package/dist/shared/src/containers/Feed/components/ActivityDate.es.js.map +1 -1
  45. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js +1 -1
  46. package/dist/shared/src/containers/Feed/components/ActivityItem.cjs.js.map +1 -1
  47. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js +14 -13
  48. package/dist/shared/src/containers/Feed/components/ActivityItem.es.js.map +1 -1
  49. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js +1 -1
  50. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.cjs.js.map +1 -1
  51. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js +39 -39
  52. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.es.js.map +1 -1
  53. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js +13 -4
  54. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.cjs.js.map +1 -1
  55. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js +17 -8
  56. package/dist/shared/src/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.styled.es.js.map +1 -1
  57. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  58. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  59. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +207 -233
  60. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  61. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js +7 -10
  62. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.cjs.js.map +1 -1
  63. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js +10 -13
  64. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.styled.es.js.map +1 -1
  65. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js +1 -1
  66. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.cjs.js.map +1 -1
  67. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js +16 -22
  68. package/dist/shared/src/containers/Feed/components/CommentInput/VersionReviewPill.es.js.map +1 -1
  69. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js +2 -0
  70. package/dist/shared/src/containers/Feed/components/CommentInput/types.cjs.js.map +1 -0
  71. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js +18 -0
  72. package/dist/shared/src/containers/Feed/components/CommentInput/types.es.js.map +1 -0
  73. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.cjs.js.map +1 -1
  74. package/dist/shared/src/containers/Feed/hooks/useCommentMutations.es.js.map +1 -1
  75. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js +1 -1
  76. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.cjs.js.map +1 -1
  77. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js +8 -8
  78. package/dist/shared/src/containers/Feed/hooks/useLastVersionReview.es.js.map +1 -1
  79. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  80. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  81. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +67 -64
  82. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  83. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  84. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  85. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +13 -11
  86. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  87. package/dist/types/api/generated/graphql.d.ts +4 -3
  88. package/dist/types/api/generated/graphqlLinks.d.ts +2 -1
  89. package/dist/types/api/queries/activities/getActivities.d.ts +77 -77
  90. package/dist/types/api/queries/activities/updateActivities.d.ts +4 -4
  91. package/dist/types/api/queries/entities/getEntity.d.ts +1 -1
  92. package/dist/types/api/queries/entities/getEntityPanel.d.ts +1 -1
  93. package/dist/types/api/queries/entities/updateEntity.d.ts +1 -1
  94. package/dist/types/api/queries/entityLists/getLists.d.ts +1 -1
  95. package/dist/types/api/queries/overview/getOverview.d.ts +1 -1
  96. package/dist/types/api/queries/project/getProject.d.ts +1 -1
  97. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -1
  98. package/dist/types/api/queries/users/getUsers.d.ts +1 -1
  99. package/dist/types/api/queries/versions/getVersionsProducts.d.ts +2 -2
  100. package/dist/types/containers/Feed/components/ActivityDate.d.ts +2 -1
  101. package/dist/types/containers/Feed/components/ActivityItem.d.ts +1 -0
  102. package/dist/types/containers/Feed/components/ActivityVersionReview/ActivityVersionReview.d.ts +2 -1
  103. package/dist/types/containers/Feed/components/CommentInput/CommentInput.d.ts +1 -16
  104. package/dist/types/containers/Feed/components/CommentInput/VersionReviewPill.d.ts +1 -2
  105. package/dist/types/containers/Feed/components/CommentInput/index.d.ts +2 -0
  106. package/dist/types/containers/Feed/components/CommentInput/types.d.ts +16 -0
  107. package/dist/types/containers/Feed/hooks/useCommentMutations.d.ts +1 -1
  108. package/dist/types/containers/Feed/hooks/useGetFeedActivitiesData.d.ts +3 -3
  109. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CommentInput.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.tsx"],"sourcesContent":["// React and related hooks\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react'\n\n// Third-party libraries\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport ReactQuill, { Quill } from 'react-quill-ayon'\n\n// Components\nimport { Button, Icon, SaveButton } from '@ynput/ayon-react-components'\nimport CommentMentionSelect from '../CommentMentionSelect/CommentMentionSelect'\nimport InputMarkdownConvert from './InputMarkdownConvert'\nimport FilesGrid from '../FilesGrid'\n\n// Styled components\nimport * as Styled from './CommentInput.styled'\nimport { QuillListStyles } from '../../../../components/QuillListStyles'\n\n// Helpers and utilities\nimport getMentionOptions from '../../mentionHelpers/getMentionOptions'\nimport getMentionUsers from '../../mentionHelpers/getMentionUsers'\nimport getMentionTasks from '../../mentionHelpers/getMentionTasks'\nimport getMentionVersions from '../../mentionHelpers/getMentionVersions'\nimport { convertToMarkdown } from './quillToMarkdown'\nimport { handleFileDrop, parseImages, typeWithDelay } from './helpers'\nimport { getModules, quillFormats } from './modules'\n\n// Hooks\nimport useInitialValue from './hooks/useInitialValue'\nimport useSetCursorEnd from './hooks/useSetCursorEnd'\nimport useMentionLink from './hooks/useMentionLink'\nimport useAnnotationsSync from './hooks/useAnnotationsSync'\nimport { useBlendedCategoryColor } from './hooks/useBlendedCategoryColor'\n\n// State management\nimport useAnnotationsUpload from './hooks/useAnnotationsUpload'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { ActivityCategorySelect, isCategoryHidden, SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { useProjectContext } from '@shared/context'\nimport { parseFilename } from '@shared/components'\nimport { FeedActivity } from '@shared/api'\nimport { VersionReviewPill } from './VersionReviewPill'\n\nvar Delta = Quill.import('delta')\n\nconst EMPTY_EDITOR_VALUE = '<p><br></p>'\n\nconst mentionTypes = ['@', '@@', '@@@']\nexport const mentionTypeOptions = {\n '@@@': {\n id: 'task',\n },\n '@@': {\n id: 'version',\n },\n '@': {\n id: 'user',\n isCircle: true,\n },\n};\n\nexport enum VersionReviewFeedback {\n APPROVE = \"approve\",\n REQUEST_CHANGES = \"request_changes\"\n}\n\ninterface CommentInputProps {\n initValue: string | null\n initFiles?: any[]\n initCategory?: string | null\n data?: any\n versionReview: boolean\n lastOwnVersionReview?: FeedActivity\n onSubmit: (markdown: string, files: any[], data?: any) => Promise<void>\n onReview?: (feedback: VersionReviewFeedback) => void\n isEditing?: boolean\n disabled?: boolean\n isLoading?: boolean\n isOpen: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nconst CommentInput: FC<CommentInputProps> = ({\n initValue,\n initFiles = [],\n initCategory = null,\n data = {},\n versionReview,\n lastOwnVersionReview,\n onSubmit,\n isEditing,\n disabled,\n isLoading,\n isOpen,\n onOpen,\n onClose,\n onReview,\n}) => {\n const {\n projectName,\n entities,\n projectInfo,\n scope,\n feedFilter,\n mentionSuggestionsData,\n categories,\n isGuest,\n } = useFeedContext()\n\n const { hasLicense, onPowerFeature, user } = useDetailsPanelContext()\n const isAdmin = user?.data?.isAdmin\n\n const project = useProjectContext()\n\n const {\n users: mentionUsers,\n teams: mentionTeams,\n versions: mentionVersions,\n tasks: mentionTasks,\n } = mentionSuggestionsData || {}\n\n const [initHeight, setInitHeight] = useState(88)\n const [editorValue, setEditorValue] = useState('')\n // file uploads\n const [files, setFiles] = useState(initFiles)\n const [filesUploading, setFilesUploading] = useState([])\n const [isDropping, setIsDropping] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const { annotations, removeAnnotation, goToAnnotation } = useAnnotationsSync({\n entityId: entities[0]?.id,\n filesUploading,\n })\n\n // MENTION STATES\n const [mention, setMention] = useState<null | any>(null)\n const [mentionSelectedIndex, setMentionSelectedIndex] = useState(0)\n // Prefix filter for mentions (e.g. 'team:' or 'user:')\n const [mentionPrefix, setMentionPrefix] = useState('')\n\n const clearMention = () => {\n setMention(null)\n setMentionSelectedIndex(0)\n setMentionPrefix('')\n }\n // CATEGORY STATE\n const [category, setCategory] = useState<null | string>(initCategory)\n const categoryOptions = categories.filter((cat) => cat.accessLevel >= 20)\n const categoryData = categories.find((cat) => cat.name === category)\n // Compute blended background color for category\n const blendedCategoryColor = useBlendedCategoryColor(categoryData?.color)\n // REFS\n const editorRef = useRef<any>(null)\n const editorContainerRef = useRef<HTMLDivElement>(null)\n\n const markdownRef = useRef<HTMLDivElement>(null)\n\n // if there is an initial value, set it so the editor is prefilled\n useInitialValue({\n markdownRef,\n initValue,\n setEditorValue,\n setInitHeight,\n isOpen: isOpen,\n filter: feedFilter,\n })\n\n // When editing, set selection to the end of the editor\n useSetCursorEnd({ initHeight, editorRef, isEditing })\n // create a new quill format for mentions and registers it\n useMentionLink({ projectName })\n\n // focus on editor when opened\n useEffect(() => {\n if (isOpen) {\n editorRef.current?.getEditor()?.enable()\n // block autofocus if opened from an annotation\n if (annotations.length > 0 && files.length === 0) {\n return\n }\n\n editorRef.current?.focus()\n }\n // We don't set annotations or files as useEffect dependencies, because we don't want to focus\n // the input if it's already open but annotations change (e.g. are removed).\n }, [isOpen, editorRef])\n\n mentionTypes.sort((a, b) => b.length - a.length)\n\n // Combine prefix filter with typed search for options filtering\n const mentionSearchWithPrefix = mentionPrefix + (mention?.search || '')\n\n const mentionOptions = useMemo(\n () =>\n getMentionOptions(\n mention?.type,\n {\n '@': () => getMentionUsers(mentionUsers, mentionTeams),\n '@@': () => getMentionVersions(mentionVersions, project),\n '@@@': () => getMentionTasks(mentionTasks, projectInfo.taskTypes),\n },\n mentionSearchWithPrefix || undefined,\n ),\n [mentionTasks, mentionVersions, mentionUsers, mentionTeams, mention?.type, mentionSearchWithPrefix],\n )\n\n // show first 5 and filter itself out\n const shownMentionOptions = mentionOptions.slice(0, 5)\n\n // triggered when a mention is selected\n const [newSelection, setNewSelection] = useState<null | number>()\n\n useEffect(() => {\n if (newSelection) {\n setNewSelection(null)\n // now we set selection to the end of the mention\n const quill = editorRef.current.getEditor()\n quill.setSelection(newSelection)\n }\n }, [newSelection])\n\n const handleSelectMention = (selectedOption: any) => {\n // get option text\n const quill = editorRef.current.getEditor()\n\n const typePrefix = mention.type // the type of mention: @, @@, @@@\n const search = typePrefix + (mention.search || '') // the full search string: @Tim\n const mentionLabel = typePrefix + selectedOption.label // the label of the mention: @Tim Bailey\n // @ts-expect-error\n const type = mentionTypeOptions[typePrefix] // the type of mention: user, version, task\n // Use the option's own type (e.g. 'team') if available, otherwise fall back to the mention type config\n const refType = selectedOption.type || type?.id\n const href = `${refType}:${selectedOption.id}` // the href of the mention: user:user.123 or team:Thunder boys\n\n // get selection delta\n const selection = quill.getSelection(true)\n const selectionIndex = selection?.index || 0\n const startIndex = selectionIndex - search.length // the start index of the search\n\n // first delete the search string\n quill.deleteText(startIndex, search.length)\n\n // insert embed link\n quill.insertText(startIndex, mentionLabel, 'mention', href)\n\n const endIndex = startIndex + mentionLabel.length\n\n // insert a space after the mention\n quill.updateContents(new Delta().retain(endIndex).insert(' '))\n\n // remove single \\n after mention\n quill.updateContents(new Delta().retain(endIndex + 1).delete(1))\n\n // set selection to the end of the mention + 1\n setNewSelection(endIndex + 1)\n\n // reset mention state\n clearMention()\n }\n\n const handleSelectChange = (option: any) => {\n handleSelectMention(option)\n }\n\n const handleChange = (content: string, delta: any, _: any, editor: any) => {\n let currentCharacter =\n (delta.ops[0] && delta.ops[0].insert) || (delta.ops[1] && delta.ops[1].insert)\n\n const tabOrEnter = currentCharacter === '\\n' || currentCharacter === '\\t'\n // find the first option\n const selectedOption = mentionOptions[mentionSelectedIndex]\n\n if (mention && tabOrEnter && selectedOption && !isGuest) {\n // get option text\n const retain = (delta.ops[0] && delta.ops[0].retain) || 0\n // prevent default\n\n // @ts-ignore\n handleSelectMention(selectedOption, retain)\n\n return\n }\n\n setEditorValue(content)\n\n const isDelete = delta.ops.length === 2 && !!delta.ops[1].delete\n\n if (!currentCharacter && isDelete) {\n currentCharacter = editor.getText(delta.ops[0].retain - 1, 1)\n }\n\n const isMention = mentionTypes.includes(currentCharacter)\n\n if (isMention) {\n const mentionIndex = delta.ops.findIndex((op: any) => 'insert' in op || 'delete' in op)\n const mention = currentCharacter\n let retain = mentionIndex === 0 ? 0 : delta.ops[mentionIndex - 1].retain\n if (isDelete) retain = retain - 1\n\n // for each mention denotation char, check if it is a mention\n // sort by length of mention denotation char\n let mentionMatch = null\n\n // loop through each mention denotation char, with longest first. First one to match is the one we want\n for (const chars of mentionTypes) {\n let isMatch = true\n // start with the last character\n if (chars.endsWith(mention)) {\n // loop through the chars backwards\n for (let i = chars.length - 1; i >= 0; i--) {\n // skip first character as that's already been checked\n if (i === 0) continue\n const char = chars[i - 1]\n const indexInDelta = retain - (chars.length - i)\n const valueCharAtIndex = editor.getText(indexInDelta, 1)\n if (valueCharAtIndex !== char) {\n isMatch = false\n break\n }\n }\n } else {\n isMatch = false\n }\n\n if (isMatch) {\n // console.log('match!!!', chars)\n mentionMatch = chars\n break\n }\n }\n\n if (mentionMatch) {\n setMention({\n type: mentionMatch,\n retain: retain,\n })\n } else {\n clearMention()\n }\n } else {\n // get full string between mention and new delta\n // This is where SEARCH is handled\n if (mention) {\n const retain = delta.ops[0].retain\n // if space is pressed, remove mention\n if (currentCharacter === ' ' || !retain) {\n clearMention()\n return\n }\n\n let distanceMentionToRetain = retain - mention.retain\n if (!isDelete) distanceMentionToRetain++\n const mentionFull = editor.getText(mention.retain, distanceMentionToRetain)\n const mentionSearch = mentionFull.replace(mention.type.slice(-1), '')\n // check for space in mentionFull\n if (mentionFull.includes(' ')) {\n clearMention()\n } else {\n setMention({\n ...mention,\n search: mentionSearch?.toLowerCase(),\n })\n }\n } else if (isDelete) {\n // backspace inside a mention deletes the whole mention\n const quill = editorRef.current.getEditor()\n const currentSelection = quill.getSelection(false)\n const currentFormat = quill.getFormat(currentSelection?.index, currentSelection?.length)\n if (currentFormat.mention) {\n const [lineBlock] = quill.getLine(currentSelection.index - 1) || []\n const ops = lineBlock?.cache?.delta?.ops || []\n const lastMentionOp = ops.reverse().find((op: any) => op.attributes?.mention)\n if (lastMentionOp) {\n const mentionLength = lastMentionOp.insert.length\n quill.deleteText(currentSelection.index - mentionLength, mentionLength)\n }\n }\n }\n }\n }\n\n const addTextToEditor = (type: string) => {\n // get editor retain\n const quill = editorRef.current.getEditor()\n\n let retain = quill.getSelection(true)?.index || 0\n\n // get character at retain\n const currentCharacter = quill.getText(retain - 1, 1)\n\n // if the current character is a character, increment retain\n const addSpace = currentCharacter !== ' ' && currentCharacter\n if (addSpace) {\n quill.insertText(retain, ' ')\n retain++\n }\n\n // This is hack AF, but it works\n typeWithDelay(quill, retain, type)\n }\n\n const handleMentionButton = (type: string) => {\n // first check if mention is already open\n if (mention) {\n const { type, retain, search = '' } = mention\n\n const quill = editorRef.current.getEditor()\n const length = type.length + search.length\n const start = retain - type.length + 1\n // delete the mention\n quill.deleteText(start, length)\n }\n\n addTextToEditor(type)\n }\n\n const handleOpenClick = () => {\n if (isOpen || disabled) return\n\n onOpen && onOpen()\n }\n\n const handleClose = () => {\n // get editor value\n const editor = editorRef.current.getEditor()\n const text = editor.getText()\n if (text.length < 2 || isEditing) {\n setEditorValue('')\n }\n\n // always close editor\n onClose && onClose()\n }\n\n const handleFileUploaded = ({ file, data }: any) => {\n const fileName = parseFilename(file.name)\n const newFile = {\n id: data.id,\n name: fileName,\n mime: file.type,\n size: file.size,\n order: files.length,\n }\n\n setFiles((prev) => [...prev, newFile])\n // remove from uploading\n setFilesUploading((prev) =>\n prev.filter((uploading: any) => parseFilename(uploading.name) !== fileName),\n )\n\n return newFile\n }\n\n const handleFileRemove = (id: string, name: string, isUnsavedAnnotation: boolean) => {\n if (isUnsavedAnnotation) {\n // remove from annotations (if it's an unsaved annotation)\n removeAnnotation?.(id)\n } else {\n // remove file from files\n setFiles((prev) => prev.filter((file) => file.id !== id))\n // remove from uploading\n setFilesUploading((prev) => {\n return prev.filter((file: any) => parseFilename(file.name) !== parseFilename(name))\n })\n }\n }\n\n const handleFileProgress = (e: any, file: any) => {\n const progress = Math.round((e.loaded * 100) / e.total)\n if (progress !== 100) {\n const fileName = parseFilename(file.name)\n const uploadProgress = {\n name: fileName,\n progress,\n type: file.type,\n order: files.length + filesUploading.length,\n }\n\n // @ts-ignore\n setFilesUploading((prev) => {\n // replace or add new progress\n const newProgress = prev.filter((name: any) => parseFilename(name.name) !== fileName)\n return [...newProgress, uploadProgress]\n })\n }\n }\n\n // when a file is not dropped onto the comment input\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n setIsDropping(false)\n // upload file\n handleFileDrop(e, projectName, handleFileProgress, handleFileUploaded)\n }\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDropping(true)\n }\n\n const uploadAnnotations = useAnnotationsUpload({\n projectName,\n onSuccess: handleFileUploaded,\n })\n\n const handleSubmit = async () => {\n try {\n setIsSubmitting(true)\n\n // upload any annotations first\n let annotationFiles = []\n let annotationMetadata: SavedAnnotationMetadata[] | undefined = undefined\n if (annotations.length) {\n const { files, metadata } = await uploadAnnotations(annotations)\n annotationFiles = files\n // get current files data\n const { annotations: annotationsData = [] } = data || {}\n // merge existing annotations data with new metadata\n annotationMetadata = [...annotationsData, ...metadata]\n }\n\n // convert to markdown\n const [markdown] = convertToMarkdown(editorValue)\n\n // remove img query params\n const markdownParsed = parseImages(markdown)\n\n const uploadedFiles = [...files, ...annotationFiles]\n\n const newData = {\n ...data,\n annotations: annotationMetadata, // could be undefined\n category: isGuest ? null : category, // guests cannot set category (it is done by default on backend)\n }\n\n if ((markdownParsed || uploadedFiles.length) && onSubmit) {\n try {\n await onSubmit(markdownParsed, uploadedFiles, newData)\n // only clear if onSubmit is successful\n setEditorValue('')\n setFiles([])\n } catch (error) {\n // error is handled in rtk query mutation\n return\n }\n }\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (mention) {\n // close mention on escape\n if (e.key === 'Escape') {\n clearMention()\n return\n }\n\n // add top search of mention\n if (mention && e.key === 'Tab') {\n // we handle this in the onChange\n }\n\n const arrowDirection = e.key === 'ArrowUp' ? -1 : e.key === 'ArrowDown' ? 1 : 0\n\n if (arrowDirection) {\n // navigate through mentions\n e.preventDefault()\n let newIndex = mentionSelectedIndex + arrowDirection\n if (newIndex < 0) newIndex = shownMentionOptions.length - 1\n if (newIndex >= shownMentionOptions.length) newIndex = 0\n setMentionSelectedIndex(newIndex)\n }\n\n if (e.key === 'Enter') {\n // we handle this in the onChange\n }\n }\n\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n handleSubmit()\n }\n\n if (e.key === 'Escape') {\n handleClose()\n }\n }\n\n let quillMinHeight: number | undefined = isOpen ? initHeight + 41 : 44\n if (isEditing) quillMinHeight = undefined\n\n // QUILL CONFIG\n const modules = useMemo(\n () =>\n getModules({\n imageUploader: {\n projectName,\n onUpload: handleFileUploaded,\n onUploadProgress: handleFileProgress,\n },\n mentionTypeOptions,\n }),\n [projectName, setFiles, setFilesUploading],\n )\n\n const allFiles = [...annotations, ...(files || []), ...filesUploading].sort(\n (a, b) => a.order - b.order,\n )\n const compactGrid = allFiles.length > 3\n\n // disable version mentions for folders\n let mentionsError = null\n if (entities.length && entities[0].entityType === 'folder') {\n if (mention?.type === '@@') {\n mentionsError = 'Version mentions are disabled for folders'\n }\n }\n\n const getCommentPlaceholder = (isOpen?: boolean) => {\n if (disabled) {\n if (isGuest) return 'You do not have permission to comment.'\n return 'Commenting is disabled across multiple projects.'\n }\n\n if (isGuest || !isOpen) return 'Leave a comment'\n\n return 'Comment or mention with @user, @@version, @@@task...'\n }\n\n const versionReviewButtons = versionReview && onReview && (\n <Styled.VersionReviewButtons className={clsx(\"version-review-buttons\", { guest: isGuest })}>\n <Styled.VersionReviewButton\n icon=\"check\"\n variant=\"tertiary\"\n data-tooltip=\"Approve\"\n onClick={() => {\n // the editor value contains some empty tags\n // so take those into account\n if (editorValue && editorValue !== EMPTY_EDITOR_VALUE) {\n handleSubmit()\n }\n\n onReview(VersionReviewFeedback.APPROVE)\n }}\n >\n <span className=\"label\">Approve</span>\n </Styled.VersionReviewButton>\n <Styled.VersionReviewButton\n icon=\"refresh\"\n variant=\"danger\"\n data-tooltip=\"Request changes\"\n onClick={() => {\n // the editor value contains some empty tags\n // so take those into account\n if (editorValue && editorValue !== EMPTY_EDITOR_VALUE) {\n handleSubmit()\n }\n\n onReview(VersionReviewFeedback.REQUEST_CHANGES)\n }}\n >\n <span className=\"label\">Request changes</span>\n </Styled.VersionReviewButton>\n </Styled.VersionReviewButtons>\n )\n\n return (\n <>\n <Styled.AutoHeight\n className={clsx('comment-container', { isOpen, isEditing })}\n onDragOver={handleDragOver}\n onDragLeave={() => setIsDropping(false)}\n onDrop={handleDrop}\n onClick={() => setIsDropping(false)}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {!isOpen && versionReview && lastOwnVersionReview && (\n <VersionReviewPill\n separate={true}\n lastOwnVersionReview={lastOwnVersionReview}\n />\n )}\n\n <Styled.Comment\n className={clsx('block-shortcuts', {\n isOpen,\n isClosed: !isOpen || disabled,\n isEditing,\n isDropping,\n disabled,\n isLoading,\n isSubmitting,\n category: !!category && !isGuest,\n })}\n onKeyDown={handleKeyDown}\n onClick={handleOpenClick}\n $categoryPrimary={categoryData?.color}\n $categoryTertiary={blendedCategoryColor.primary}\n $categorySecondary={blendedCategoryColor.secondary}\n >\n {isOpen && versionReview && lastOwnVersionReview && (\n <VersionReviewPill\n separate={false}\n lastOwnVersionReview={lastOwnVersionReview}\n />\n )}\n <Styled.Markdown ref={markdownRef}>\n {/* this is purely used to translate the markdown into html for Editor */}\n <InputMarkdownConvert typeOptions={mentionTypeOptions} initValue={initValue} />\n </Styled.Markdown>\n\n {/* file uploads */}\n {isOpen && (\n <FilesGrid\n files={allFiles}\n isCompact={compactGrid || isEditing}\n onRemove={handleFileRemove}\n projectName={projectName}\n onAnnotationClick={goToAnnotation}\n style={{\n borderBottom: '1px solid var(--md-sys-color-outline-variant)',\n height: '100%',\n }}\n isEditing\n pt={{\n file: {\n style: {\n height: isEditing ? 70 : undefined,\n },\n },\n }}\n />\n )}\n {isOpen && !disabled ? (\n <QuillListStyles ref={editorContainerRef}>\n {!isGuest && (\n <ActivityCategorySelect\n value={category}\n categories={categoryOptions}\n onChange={(c) => setCategory(c)}\n isCompact={isEditing}\n hasPowerpack={hasLicense}\n onPowerFeature={onPowerFeature}\n isHidden={isCategoryHidden(categoryOptions, { isGuest, isAdmin })}\n style={{\n position: isEditing ? 'relative' : 'absolute',\n left: 4,\n top: isEditing ? 0 : 4,\n }}\n />\n )}\n\n <ReactQuill\n theme=\"snow\"\n style={{ minHeight: quillMinHeight, maxHeight: 300 }}\n ref={editorRef}\n value={editorValue}\n onChange={handleChange}\n readOnly={!isOpen}\n placeholder={getCommentPlaceholder(true)}\n modules={modules}\n formats={quillFormats}\n />\n </QuillListStyles>\n ) : (\n <Styled.Placeholder>{getCommentPlaceholder()}</Styled.Placeholder>\n )}\n\n <Styled.Footer>\n {!isGuest && (\n <Styled.Buttons>\n {/* mention a user */}\n <Button\n icon=\"person\"\n variant=\"text\"\n onClick={() => handleMentionButton('@')}\n data-tooltip={'Mention user'}\n data-shortcut={'@'}\n />\n {/* mention a version */}\n <Button\n icon=\"layers\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@')}\n data-tooltip={'Mention version'}\n data-shortcut={'@@'}\n />\n {/* mention a task */}\n <Button\n icon=\"check_circle\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@@')}\n data-tooltip={'Mention task'}\n data-shortcut={'@@@'}\n />\n </Styled.Buttons>\n )}\n <Styled.SubmitButtons>\n {isOpen && versionReviewButtons}\n {isEditing && (\n <Button variant=\"text\" onClick={handleClose}>\n Cancel\n </Button>\n )}\n <SaveButton\n label={isEditing ? 'Save' : 'Comment'}\n className=\"comment\"\n active={!!editorValue || !!files.length}\n onClick={handleSubmit}\n disabled={isLoading}\n />\n </Styled.SubmitButtons>\n </Styled.Footer>\n\n <Styled.Dropzone className={clsx({ show: isDropping && isOpen })}>\n <Icon icon=\"cloud_upload\" />\n </Styled.Dropzone>\n </Styled.Comment>\n <CommentMentionSelect\n mention={mention}\n options={shownMentionOptions}\n onChange={handleSelectChange}\n onPrefixFilter={(prefix) => {\n setMentionPrefix(prefix)\n setMentionSelectedIndex(0)\n }}\n activePrefix={mentionPrefix ? mentionPrefix.replace(':', '') : undefined}\n types={mentionTypes}\n // @ts-ignore\n config={mentionTypeOptions[mention?.type]}\n noneFound={!shownMentionOptions.length && (mention?.search || mentionPrefix)}\n noneFoundAtAll={!shownMentionOptions.length && !mention?.search && !mentionPrefix}\n selectedIndex={mentionSelectedIndex}\n // @ts-ignore\n error={mentionsError}\n isGuest={isGuest}\n />\n\n {!isOpen && (\n <>\n <Styled.VersionReviewButtonsSpacer />\n {versionReviewButtons}\n </>\n )}\n </Styled.AutoHeight>\n </>\n )\n}\n\nexport default CommentInput\n"],"names":["Delta","Quill","EMPTY_EDITOR_VALUE","mentionTypes","mentionTypeOptions","VersionReviewFeedback","CommentInput","initValue","initFiles","initCategory","data","versionReview","lastOwnVersionReview","onSubmit","isEditing","disabled","isLoading","isOpen","onOpen","onClose","onReview","projectName","entities","projectInfo","scope","feedFilter","mentionSuggestionsData","categories","isGuest","useFeedContext","hasLicense","onPowerFeature","user","useDetailsPanelContext","isAdmin","project","useProjectContext","mentionUsers","mentionTeams","mentionVersions","mentionTasks","initHeight","setInitHeight","useState","editorValue","setEditorValue","files","setFiles","filesUploading","setFilesUploading","isDropping","setIsDropping","isSubmitting","setIsSubmitting","annotations","removeAnnotation","goToAnnotation","useAnnotationsSync","mention","setMention","mentionSelectedIndex","setMentionSelectedIndex","mentionPrefix","setMentionPrefix","clearMention","category","setCategory","categoryOptions","cat","categoryData","blendedCategoryColor","useBlendedCategoryColor","editorRef","useRef","editorContainerRef","markdownRef","useInitialValue","useSetCursorEnd","useMentionLink","useEffect","a","b","mentionSearchWithPrefix","mentionOptions","useMemo","getMentionOptions","getMentionUsers","getMentionVersions","getMentionTasks","shownMentionOptions","newSelection","setNewSelection","handleSelectMention","selectedOption","quill","typePrefix","search","mentionLabel","type","href","startIndex","endIndex","handleSelectChange","option","handleChange","content","delta","_","editor","currentCharacter","tabOrEnter","isDelete","mentionIndex","op","retain","mentionMatch","chars","isMatch","i","char","indexInDelta","distanceMentionToRetain","mentionFull","mentionSearch","currentSelection","lineBlock","lastMentionOp","mentionLength","addTextToEditor","typeWithDelay","handleMentionButton","length","start","handleOpenClick","handleClose","handleFileUploaded","file","fileName","parseFilename","newFile","prev","uploading","handleFileRemove","id","name","isUnsavedAnnotation","handleFileProgress","e","progress","uploadProgress","handleDrop","handleFileDrop","handleDragOver","uploadAnnotations","useAnnotationsUpload","handleSubmit","annotationFiles","annotationMetadata","metadata","annotationsData","markdown","convertToMarkdown","markdownParsed","parseImages","uploadedFiles","newData","error","toast","handleKeyDown","arrowDirection","newIndex","quillMinHeight","modules","getModules","allFiles","compactGrid","mentionsError","getCommentPlaceholder","versionReviewButtons","jsxs","Styled.VersionReviewButtons","clsx","jsx","Styled.VersionReviewButton","Fragment","Styled.AutoHeight","VersionReviewPill","Styled.Comment","Styled.Markdown","InputMarkdownConvert","FilesGrid","QuillListStyles","ActivityCategorySelect","c","isCategoryHidden","ReactQuill","quillFormats","Styled.Placeholder","Styled.Footer","Styled.Buttons","Button","Styled.SubmitButtons","SaveButton","Styled.Dropzone","Icon","CommentMentionSelect","prefix","Styled.VersionReviewButtonsSpacer"],"mappings":"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"}
1
+ {"version":3,"file":"CommentInput.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.tsx"],"sourcesContent":["// React and related hooks\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react'\n\n// Third-party libraries\nimport clsx from 'clsx'\nimport { toast } from 'react-toastify'\nimport ReactQuill, { Quill } from 'react-quill-ayon'\n\n// Components\nimport { Button, Icon, SaveButton } from '@ynput/ayon-react-components'\nimport CommentMentionSelect from '../CommentMentionSelect/CommentMentionSelect'\nimport InputMarkdownConvert from './InputMarkdownConvert'\nimport FilesGrid from '../FilesGrid'\n\n// Styled components\nimport * as Styled from './CommentInput.styled'\nimport { QuillListStyles } from '../../../../components/QuillListStyles'\n\n// Helpers and utilities\nimport getMentionOptions from '../../mentionHelpers/getMentionOptions'\nimport getMentionUsers from '../../mentionHelpers/getMentionUsers'\nimport getMentionTasks from '../../mentionHelpers/getMentionTasks'\nimport getMentionVersions from '../../mentionHelpers/getMentionVersions'\nimport { convertToMarkdown } from './quillToMarkdown'\nimport { handleFileDrop, parseImages, typeWithDelay } from './helpers'\nimport { getModules, quillFormats } from './modules'\n\n// Hooks\nimport useInitialValue from './hooks/useInitialValue'\nimport useSetCursorEnd from './hooks/useSetCursorEnd'\nimport useMentionLink from './hooks/useMentionLink'\nimport useAnnotationsSync from './hooks/useAnnotationsSync'\nimport { useBlendedCategoryColor } from './hooks/useBlendedCategoryColor'\n\n// State management\nimport useAnnotationsUpload from './hooks/useAnnotationsUpload'\nimport { useFeedContext } from '../../context/FeedContext'\nimport { ActivityCategorySelect, isCategoryHidden, SavedAnnotationMetadata } from '../../index'\nimport { useDetailsPanelContext } from '@shared/context'\nimport { useProjectContext } from '@shared/context'\nimport { parseFilename } from '@shared/components'\nimport { FeedActivity } from '@shared/api'\nimport { VersionReviewPill } from './VersionReviewPill'\nimport { VersionReviewFeedback, mentionTypeOptions } from './types'\n\nvar Delta = Quill.import('delta')\n\nconst EMPTY_EDITOR_VALUE = '<p><br></p>'\n\nconst mentionTypes = ['@', '@@', '@@@']\n\ninterface CommentInputProps {\n initValue: string | null\n initFiles?: any[]\n initCategory?: string | null\n data?: any\n versionReview: boolean\n lastOwnVersionReview?: FeedActivity\n onSubmit: (markdown: string, files: any[], data?: any) => Promise<void>\n onReview?: (feedback: VersionReviewFeedback) => void\n isEditing?: boolean\n disabled?: boolean\n isLoading?: boolean\n isOpen: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nconst CommentInput: FC<CommentInputProps> = ({\n initValue,\n initFiles = [],\n initCategory = null,\n data = {},\n versionReview,\n lastOwnVersionReview,\n onSubmit,\n onReview,\n isEditing,\n disabled,\n isLoading,\n isOpen,\n onOpen,\n onClose,\n}) => {\n const {\n projectName,\n entities,\n projectInfo,\n scope,\n feedFilter,\n mentionSuggestionsData,\n categories,\n isGuest,\n } = useFeedContext()\n\n const { hasLicense, onPowerFeature, user } = useDetailsPanelContext()\n const isAdmin = user?.data?.isAdmin\n\n const project = useProjectContext()\n\n const {\n users: mentionUsers,\n teams: mentionTeams,\n versions: mentionVersions,\n tasks: mentionTasks,\n } = mentionSuggestionsData || {}\n\n const [initHeight, setInitHeight] = useState(88)\n const [editorValue, setEditorValue] = useState('')\n // file uploads\n const [files, setFiles] = useState(initFiles)\n const [filesUploading, setFilesUploading] = useState([])\n const [isDropping, setIsDropping] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const { annotations, removeAnnotation, goToAnnotation } = useAnnotationsSync({\n entityId: entities[0]?.id,\n filesUploading,\n })\n\n // MENTION STATES\n const [mention, setMention] = useState<null | any>(null)\n const [mentionSelectedIndex, setMentionSelectedIndex] = useState(0)\n // Prefix filter for mentions (e.g. 'team:' or 'user:')\n const [mentionPrefix, setMentionPrefix] = useState('')\n\n const clearMention = () => {\n setMention(null)\n setMentionSelectedIndex(0)\n setMentionPrefix('')\n }\n // CATEGORY STATE\n const [category, setCategory] = useState<null | string>(initCategory)\n const categoryOptions = categories.filter((cat) => cat.accessLevel >= 20)\n const categoryData = categories.find((cat) => cat.name === category)\n // Compute blended background color for category\n const blendedCategoryColor = useBlendedCategoryColor(categoryData?.color)\n // REFS\n const editorRef = useRef<any>(null)\n const editorContainerRef = useRef<HTMLDivElement>(null)\n\n const markdownRef = useRef<HTMLDivElement>(null)\n\n // if there is an initial value, set it so the editor is prefilled\n useInitialValue({\n markdownRef,\n initValue,\n setEditorValue,\n setInitHeight,\n isOpen: isOpen,\n filter: feedFilter,\n })\n\n // When editing, set selection to the end of the editor\n useSetCursorEnd({ initHeight, editorRef, isEditing })\n // create a new quill format for mentions and registers it\n useMentionLink({ projectName })\n\n // focus on editor when opened\n useEffect(() => {\n if (isOpen) {\n editorRef.current?.getEditor()?.enable()\n // block autofocus if opened from an annotation\n if (annotations.length > 0 && files.length === 0) {\n return\n }\n\n editorRef.current?.focus()\n }\n // We don't set annotations or files as useEffect dependencies, because we don't want to focus\n // the input if it's already open but annotations change (e.g. are removed).\n }, [isOpen, editorRef])\n\n mentionTypes.sort((a, b) => b.length - a.length)\n\n // Combine prefix filter with typed search for options filtering\n const mentionSearchWithPrefix = mentionPrefix + (mention?.search || '')\n\n const mentionOptions = useMemo(\n () =>\n getMentionOptions(\n mention?.type,\n {\n '@': () => getMentionUsers(mentionUsers, mentionTeams),\n '@@': () => getMentionVersions(mentionVersions, project),\n '@@@': () => getMentionTasks(mentionTasks, projectInfo.taskTypes),\n },\n mentionSearchWithPrefix || undefined,\n ),\n [\n mentionTasks,\n mentionVersions,\n mentionUsers,\n mentionTeams,\n mention?.type,\n mentionSearchWithPrefix,\n ],\n )\n\n // show first 5 and filter itself out\n const shownMentionOptions = mentionOptions.slice(0, 5)\n\n // triggered when a mention is selected\n const [newSelection, setNewSelection] = useState<null | number>()\n\n useEffect(() => {\n if (newSelection) {\n setNewSelection(null)\n // now we set selection to the end of the mention\n const quill = editorRef.current.getEditor()\n quill.setSelection(newSelection)\n }\n }, [newSelection])\n\n const handleSelectMention = (selectedOption: any) => {\n // get option text\n const quill = editorRef.current.getEditor()\n\n const typePrefix = mention.type // the type of mention: @, @@, @@@\n const search = typePrefix + (mention.search || '') // the full search string: @Tim\n const mentionLabel = typePrefix + selectedOption.label // the label of the mention: @Tim Bailey\n // @ts-expect-error\n const type = mentionTypeOptions[typePrefix] // the type of mention: user, version, task\n // Use the option's own type (e.g. 'team') if available, otherwise fall back to the mention type config\n const refType = selectedOption.type || type?.id\n const href = `${refType}:${selectedOption.id}` // the href of the mention: user:user.123 or team:Thunder boys\n\n // get selection delta\n const selection = quill.getSelection(true)\n const selectionIndex = selection?.index || 0\n const startIndex = selectionIndex - search.length // the start index of the search\n\n // first delete the search string\n quill.deleteText(startIndex, search.length)\n\n // insert embed link\n quill.insertText(startIndex, mentionLabel, 'mention', href)\n\n const endIndex = startIndex + mentionLabel.length\n\n // insert a space after the mention\n quill.updateContents(new Delta().retain(endIndex).insert(' '))\n\n // remove single \\n after mention\n quill.updateContents(new Delta().retain(endIndex + 1).delete(1))\n\n // set selection to the end of the mention + 1\n setNewSelection(endIndex + 1)\n\n // reset mention state\n clearMention()\n }\n\n const handleSelectChange = (option: any) => {\n handleSelectMention(option)\n }\n\n const handleChange = (content: string, delta: any, _: any, editor: any) => {\n let currentCharacter =\n (delta.ops[0] && delta.ops[0].insert) || (delta.ops[1] && delta.ops[1].insert)\n\n const tabOrEnter = currentCharacter === '\\n' || currentCharacter === '\\t'\n // find the first option\n const selectedOption = mentionOptions[mentionSelectedIndex]\n\n if (mention && tabOrEnter && selectedOption && !isGuest) {\n // get option text\n const retain = (delta.ops[0] && delta.ops[0].retain) || 0\n // prevent default\n\n // @ts-ignore\n handleSelectMention(selectedOption, retain)\n\n return\n }\n\n setEditorValue(content)\n\n const isDelete = delta.ops.length === 2 && !!delta.ops[1].delete\n\n if (!currentCharacter && isDelete) {\n currentCharacter = editor.getText(delta.ops[0].retain - 1, 1)\n }\n\n const isMention = mentionTypes.includes(currentCharacter)\n\n if (isMention) {\n const mentionIndex = delta.ops.findIndex((op: any) => 'insert' in op || 'delete' in op)\n const mention = currentCharacter\n let retain = mentionIndex === 0 ? 0 : delta.ops[mentionIndex - 1].retain\n if (isDelete) retain = retain - 1\n\n // for each mention denotation char, check if it is a mention\n // sort by length of mention denotation char\n let mentionMatch = null\n\n // loop through each mention denotation char, with longest first. First one to match is the one we want\n for (const chars of mentionTypes) {\n let isMatch = true\n // start with the last character\n if (chars.endsWith(mention)) {\n // loop through the chars backwards\n for (let i = chars.length - 1; i >= 0; i--) {\n // skip first character as that's already been checked\n if (i === 0) continue\n const char = chars[i - 1]\n const indexInDelta = retain - (chars.length - i)\n const valueCharAtIndex = editor.getText(indexInDelta, 1)\n if (valueCharAtIndex !== char) {\n isMatch = false\n break\n }\n }\n } else {\n isMatch = false\n }\n\n if (isMatch) {\n // console.log('match!!!', chars)\n mentionMatch = chars\n break\n }\n }\n\n if (mentionMatch) {\n setMention({\n type: mentionMatch,\n retain: retain,\n })\n } else {\n clearMention()\n }\n } else {\n // get full string between mention and new delta\n // This is where SEARCH is handled\n if (mention) {\n const retain = delta.ops[0].retain\n // if space is pressed, remove mention\n if (currentCharacter === ' ' || !retain) {\n clearMention()\n return\n }\n\n let distanceMentionToRetain = retain - mention.retain\n if (!isDelete) distanceMentionToRetain++\n const mentionFull = editor.getText(mention.retain, distanceMentionToRetain)\n const mentionSearch = mentionFull.replace(mention.type.slice(-1), '')\n // check for space in mentionFull\n if (mentionFull.includes(' ')) {\n clearMention()\n } else {\n setMention({\n ...mention,\n search: mentionSearch?.toLowerCase(),\n })\n }\n } else if (isDelete) {\n // backspace inside a mention deletes the whole mention\n const quill = editorRef.current.getEditor()\n const currentSelection = quill.getSelection(false)\n const currentFormat = quill.getFormat(currentSelection?.index, currentSelection?.length)\n if (currentFormat.mention) {\n const [lineBlock] = quill.getLine(currentSelection.index - 1) || []\n const ops = lineBlock?.cache?.delta?.ops || []\n const lastMentionOp = ops.reverse().find((op: any) => op.attributes?.mention)\n if (lastMentionOp) {\n const mentionLength = lastMentionOp.insert.length\n quill.deleteText(currentSelection.index - mentionLength, mentionLength)\n }\n }\n }\n }\n }\n\n const addTextToEditor = (type: string) => {\n // get editor retain\n const quill = editorRef.current.getEditor()\n\n let retain = quill.getSelection(true)?.index || 0\n\n // get character at retain\n const currentCharacter = quill.getText(retain - 1, 1)\n\n // if the current character is a character, increment retain\n const addSpace = currentCharacter !== ' ' && currentCharacter\n if (addSpace) {\n quill.insertText(retain, ' ')\n retain++\n }\n\n // This is hack AF, but it works\n typeWithDelay(quill, retain, type)\n }\n\n const handleMentionButton = (type: string) => {\n // first check if mention is already open\n if (mention) {\n const { type, retain, search = '' } = mention\n\n const quill = editorRef.current.getEditor()\n const length = type.length + search.length\n const start = retain - type.length + 1\n // delete the mention\n quill.deleteText(start, length)\n }\n\n addTextToEditor(type)\n }\n\n const handleOpenClick = () => {\n if (isOpen || disabled) return\n\n onOpen && onOpen()\n }\n\n const handleClose = () => {\n // get editor value\n const editor = editorRef.current.getEditor()\n const text = editor.getText()\n if (text.length < 2 || isEditing) {\n setEditorValue('')\n }\n\n // always close editor\n onClose && onClose()\n }\n\n const handleFileUploaded = ({ file, data }: any) => {\n const fileName = parseFilename(file.name)\n const newFile = {\n id: data.id,\n name: fileName,\n mime: file.type,\n size: file.size,\n order: files.length,\n }\n\n setFiles((prev) => [...prev, newFile])\n // remove from uploading\n setFilesUploading((prev) =>\n prev.filter((uploading: any) => parseFilename(uploading.name) !== fileName),\n )\n\n return newFile\n }\n\n const handleFileRemove = (id: string, name: string, isUnsavedAnnotation: boolean) => {\n if (isUnsavedAnnotation) {\n // remove from annotations (if it's an unsaved annotation)\n removeAnnotation?.(id)\n } else {\n // remove file from files\n setFiles((prev) => prev.filter((file) => file.id !== id))\n // remove from uploading\n setFilesUploading((prev) => {\n return prev.filter((file: any) => parseFilename(file.name) !== parseFilename(name))\n })\n }\n }\n\n const handleFileProgress = (e: any, file: any) => {\n const progress = Math.round((e.loaded * 100) / e.total)\n if (progress !== 100) {\n const fileName = parseFilename(file.name)\n const uploadProgress = {\n name: fileName,\n progress,\n type: file.type,\n order: files.length + filesUploading.length,\n }\n\n // @ts-ignore\n setFilesUploading((prev) => {\n // replace or add new progress\n const newProgress = prev.filter((name: any) => parseFilename(name.name) !== fileName)\n return [...newProgress, uploadProgress]\n })\n }\n }\n\n // when a file is not dropped onto the comment input\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n setIsDropping(false)\n // upload file\n handleFileDrop(e, projectName, handleFileProgress, handleFileUploaded)\n }\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault()\n e.stopPropagation()\n setIsDropping(true)\n }\n\n const uploadAnnotations = useAnnotationsUpload({\n projectName,\n onSuccess: handleFileUploaded,\n })\n\n const handleSubmit = async () => {\n try {\n setIsSubmitting(true)\n\n // upload any annotations first\n let annotationFiles = []\n let annotationMetadata: SavedAnnotationMetadata[] | undefined = undefined\n if (annotations.length) {\n const { files, metadata } = await uploadAnnotations(annotations)\n annotationFiles = files\n // get current files data\n const { annotations: annotationsData = [] } = data || {}\n // merge existing annotations data with new metadata\n annotationMetadata = [...annotationsData, ...metadata]\n }\n\n // convert to markdown\n const [markdown] = convertToMarkdown(editorValue)\n\n // remove img query params\n const markdownParsed = parseImages(markdown)\n\n const uploadedFiles = [...files, ...annotationFiles]\n\n const newData = {\n ...data,\n annotations: annotationMetadata, // could be undefined\n category: isGuest ? null : category, // guests cannot set category (it is done by default on backend)\n }\n\n if ((markdownParsed || uploadedFiles.length) && onSubmit) {\n try {\n await onSubmit(markdownParsed, uploadedFiles, newData)\n // only clear if onSubmit is successful\n setEditorValue('')\n setFiles([])\n } catch (error) {\n // error is handled in rtk query mutation\n return\n }\n }\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong')\n } finally {\n setIsSubmitting(false)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (mention) {\n // close mention on escape\n if (e.key === 'Escape') {\n clearMention()\n return\n }\n\n // add top search of mention\n if (mention && e.key === 'Tab') {\n // we handle this in the onChange\n }\n\n const arrowDirection = e.key === 'ArrowUp' ? -1 : e.key === 'ArrowDown' ? 1 : 0\n\n if (arrowDirection) {\n // navigate through mentions\n e.preventDefault()\n let newIndex = mentionSelectedIndex + arrowDirection\n if (newIndex < 0) newIndex = shownMentionOptions.length - 1\n if (newIndex >= shownMentionOptions.length) newIndex = 0\n setMentionSelectedIndex(newIndex)\n }\n\n if (e.key === 'Enter') {\n // we handle this in the onChange\n }\n }\n\n if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {\n handleSubmit()\n }\n\n if (e.key === 'Escape') {\n handleClose()\n }\n }\n\n let quillMinHeight: number | undefined = isOpen ? initHeight + 41 : 44\n if (isEditing) quillMinHeight = undefined\n\n // QUILL CONFIG\n const modules = useMemo(\n () =>\n getModules({\n imageUploader: {\n projectName,\n onUpload: handleFileUploaded,\n onUploadProgress: handleFileProgress,\n },\n mentionTypeOptions,\n }),\n [projectName, setFiles, setFilesUploading],\n )\n\n const allFiles = [...annotations, ...(files || []), ...filesUploading].sort(\n (a, b) => a.order - b.order,\n )\n const compactGrid = allFiles.length > 3\n\n // disable version mentions for folders\n let mentionsError = null\n if (entities.length && entities[0].entityType === 'folder') {\n if (mention?.type === '@@') {\n mentionsError = 'Version mentions are disabled for folders'\n }\n }\n\n const getCommentPlaceholder = (isOpen?: boolean) => {\n if (disabled) {\n if (isGuest) return 'You do not have permission to comment.'\n return 'Commenting is disabled across multiple projects.'\n }\n\n if (isGuest || !isOpen) return 'Leave a comment'\n\n return 'Comment or mention with @user, @@version, @@@task...'\n }\n\n const handleReviewSubmit = async (status: VersionReviewFeedback) => {\n if (!onReview) return\n try {\n const postComment =\n (editorValue && editorValue !== EMPTY_EDITOR_VALUE) ||\n files.length > 0 ||\n annotations.length > 0\n // if the editor value is valid, also submit the comment first\n if (postComment) {\n await handleSubmit()\n }\n\n onReview(status)\n } catch (error) {\n console.error(error)\n toast.error('Something went wrong while submitting the review')\n }\n }\n\n const versionReviewButtons = versionReview && onReview && (\n <Styled.VersionReviewButtons className={clsx('version-review-buttons', { guest: isGuest })}>\n <Styled.VersionReviewButton\n icon=\"check\"\n variant=\"tertiary\"\n data-tooltip=\"Approve\"\n onClick={() => handleReviewSubmit(VersionReviewFeedback.APPROVE)}\n >\n <span className=\"label\">Approve</span>\n </Styled.VersionReviewButton>\n <Styled.VersionReviewButton\n icon=\"refresh\"\n variant=\"danger\"\n data-tooltip=\"Request changes\"\n onClick={() => handleReviewSubmit(VersionReviewFeedback.REQUEST_CHANGES)}\n >\n <span className=\"label\">Request changes</span>\n </Styled.VersionReviewButton>\n </Styled.VersionReviewButtons>\n )\n\n return (\n <>\n <Styled.AutoHeight\n className={clsx('comment-container', { isOpen, isEditing })}\n onDragOver={handleDragOver}\n onDragLeave={() => setIsDropping(false)}\n onDrop={handleDrop}\n onClick={() => setIsDropping(false)}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {versionReview && lastOwnVersionReview && (\n <VersionReviewPill lastOwnVersionReview={lastOwnVersionReview} />\n )}\n\n <Styled.Comment\n className={clsx('block-shortcuts', {\n isOpen,\n isClosed: !isOpen || disabled,\n isEditing,\n isDropping,\n disabled,\n isLoading,\n isSubmitting,\n category: !!category && !isGuest,\n })}\n onKeyDown={handleKeyDown}\n onClick={handleOpenClick}\n $categoryPrimary={categoryData?.color}\n $categoryTertiary={blendedCategoryColor.primary}\n $categorySecondary={blendedCategoryColor.secondary}\n >\n <Styled.Markdown ref={markdownRef}>\n {/* this is purely used to translate the markdown into html for Editor */}\n <InputMarkdownConvert typeOptions={mentionTypeOptions} initValue={initValue} />\n </Styled.Markdown>\n\n {/* file uploads */}\n {isOpen && (\n <FilesGrid\n files={allFiles}\n isCompact={compactGrid || isEditing}\n onRemove={handleFileRemove}\n projectName={projectName}\n onAnnotationClick={goToAnnotation}\n style={{\n borderBottom: '1px solid var(--md-sys-color-outline-variant)',\n height: '100%',\n }}\n isEditing\n pt={{\n file: {\n style: {\n height: isEditing ? 70 : undefined,\n },\n },\n }}\n />\n )}\n {isOpen && !disabled ? (\n <QuillListStyles ref={editorContainerRef}>\n {!isGuest && (\n <ActivityCategorySelect\n value={category}\n categories={categoryOptions}\n onChange={(c) => setCategory(c)}\n isCompact={isEditing}\n hasPowerpack={hasLicense}\n onPowerFeature={onPowerFeature}\n isHidden={isCategoryHidden(categoryOptions, { isGuest, isAdmin })}\n style={{\n position: isEditing ? 'relative' : 'absolute',\n left: 4,\n top: isEditing ? 0 : 4,\n }}\n />\n )}\n\n <ReactQuill\n theme=\"snow\"\n style={{ minHeight: quillMinHeight, maxHeight: 300 }}\n ref={editorRef}\n value={editorValue}\n onChange={handleChange}\n readOnly={!isOpen}\n placeholder={getCommentPlaceholder(true)}\n modules={modules}\n formats={quillFormats}\n />\n </QuillListStyles>\n ) : (\n <Styled.Placeholder>{getCommentPlaceholder()}</Styled.Placeholder>\n )}\n\n <Styled.Footer>\n {!isGuest && (\n <Styled.Buttons>\n {/* mention a user */}\n <Button\n icon=\"person\"\n variant=\"text\"\n onClick={() => handleMentionButton('@')}\n data-tooltip={'Mention user'}\n data-shortcut={'@'}\n />\n {/* mention a version */}\n <Button\n icon=\"layers\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@')}\n data-tooltip={'Mention version'}\n data-shortcut={'@@'}\n />\n {/* mention a task */}\n <Button\n icon=\"check_circle\"\n variant=\"text\"\n onClick={() => handleMentionButton('@@@')}\n data-tooltip={'Mention task'}\n data-shortcut={'@@@'}\n />\n </Styled.Buttons>\n )}\n <Styled.SubmitButtons>\n {isEditing && (\n <Button variant=\"text\" onClick={handleClose}>\n Cancel\n </Button>\n )}\n <SaveButton\n label={isEditing ? 'Save' : 'Comment'}\n className=\"comment\"\n active={!!editorValue || !!files.length}\n onClick={handleSubmit}\n disabled={isLoading}\n />\n </Styled.SubmitButtons>\n </Styled.Footer>\n\n <Styled.Dropzone className={clsx({ show: isDropping && isOpen })}>\n <Icon icon=\"cloud_upload\" />\n </Styled.Dropzone>\n </Styled.Comment>\n <CommentMentionSelect\n mention={mention}\n options={shownMentionOptions}\n onChange={handleSelectChange}\n onPrefixFilter={(prefix) => {\n setMentionPrefix(prefix)\n setMentionSelectedIndex(0)\n }}\n activePrefix={mentionPrefix ? mentionPrefix.replace(':', '') : undefined}\n types={mentionTypes}\n // @ts-ignore\n config={mentionTypeOptions[mention?.type]}\n noneFound={!shownMentionOptions.length && (mention?.search || mentionPrefix)}\n noneFoundAtAll={!shownMentionOptions.length && !mention?.search && !mentionPrefix}\n selectedIndex={mentionSelectedIndex}\n // @ts-ignore\n error={mentionsError}\n isGuest={isGuest}\n />\n\n <Styled.VersionReviewButtonsSpacer />\n {versionReviewButtons}\n </Styled.AutoHeight>\n </>\n )\n}\n\nexport default CommentInput\n"],"names":["Delta","Quill","EMPTY_EDITOR_VALUE","mentionTypes","CommentInput","initValue","initFiles","initCategory","data","versionReview","lastOwnVersionReview","onSubmit","onReview","isEditing","disabled","isLoading","isOpen","onOpen","onClose","projectName","entities","projectInfo","scope","feedFilter","mentionSuggestionsData","categories","isGuest","useFeedContext","hasLicense","onPowerFeature","user","useDetailsPanelContext","isAdmin","project","useProjectContext","mentionUsers","mentionTeams","mentionVersions","mentionTasks","initHeight","setInitHeight","useState","editorValue","setEditorValue","files","setFiles","filesUploading","setFilesUploading","isDropping","setIsDropping","isSubmitting","setIsSubmitting","annotations","removeAnnotation","goToAnnotation","useAnnotationsSync","mention","setMention","mentionSelectedIndex","setMentionSelectedIndex","mentionPrefix","setMentionPrefix","clearMention","category","setCategory","categoryOptions","cat","categoryData","blendedCategoryColor","useBlendedCategoryColor","editorRef","useRef","editorContainerRef","markdownRef","useInitialValue","useSetCursorEnd","useMentionLink","useEffect","a","b","mentionSearchWithPrefix","mentionOptions","useMemo","getMentionOptions","getMentionUsers","getMentionVersions","getMentionTasks","shownMentionOptions","newSelection","setNewSelection","handleSelectMention","selectedOption","quill","typePrefix","search","mentionLabel","type","mentionTypeOptions","href","startIndex","endIndex","handleSelectChange","option","handleChange","content","delta","_","editor","currentCharacter","tabOrEnter","isDelete","mentionIndex","op","retain","mentionMatch","chars","isMatch","i","char","indexInDelta","distanceMentionToRetain","mentionFull","mentionSearch","currentSelection","lineBlock","lastMentionOp","mentionLength","addTextToEditor","typeWithDelay","handleMentionButton","length","start","handleOpenClick","handleClose","handleFileUploaded","file","fileName","parseFilename","newFile","prev","uploading","handleFileRemove","id","name","isUnsavedAnnotation","handleFileProgress","e","progress","uploadProgress","handleDrop","handleFileDrop","handleDragOver","uploadAnnotations","useAnnotationsUpload","handleSubmit","annotationFiles","annotationMetadata","metadata","annotationsData","markdown","convertToMarkdown","markdownParsed","parseImages","uploadedFiles","newData","error","toast","handleKeyDown","arrowDirection","newIndex","quillMinHeight","modules","getModules","allFiles","compactGrid","mentionsError","getCommentPlaceholder","handleReviewSubmit","status","versionReviewButtons","jsxs","Styled.VersionReviewButtons","clsx","jsx","Styled.VersionReviewButton","VersionReviewFeedback","Fragment","Styled.AutoHeight","VersionReviewPill","Styled.Comment","Styled.Markdown","InputMarkdownConvert","FilesGrid","QuillListStyles","ActivityCategorySelect","c","isCategoryHidden","ReactQuill","quillFormats","Styled.Placeholder","Styled.Footer","Styled.Buttons","Button","Styled.SubmitButtons","SaveButton","Styled.Dropzone","Icon","CommentMentionSelect","prefix","Styled.VersionReviewButtonsSpacer"],"mappings":"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"}
@@ -459,7 +459,7 @@
459
459
  }
460
460
 
461
461
  &:hover {
462
- background: rgb(from currentColor r g b / 0.25)
462
+ background: rgb(from currentColor r g b / 0.25);
463
463
  }
464
464
 
465
465
  @container comment-input-footer (max-width: 345px) {
@@ -467,6 +467,7 @@
467
467
  position: absolute;
468
468
  opacity: 0;
469
469
  width: 0;
470
+ pointer-events: none;
470
471
  }
471
472
  }
472
473
 
@@ -475,11 +476,12 @@
475
476
  position: absolute;
476
477
  opacity: 0;
477
478
  width: 0;
479
+ pointer-events: none;
478
480
  }
479
481
  }
480
482
  `,h=o.div`
481
- border-top-left-radius: var(--border-radius-l);
482
- border-top-right-radius: var(--border-radius-l);
483
+ border-radius: var(--border-radius-l);
484
+ margin-bottom: var(--padding-m);
483
485
  user-select: none;
484
486
  display: flex;
485
487
  gap: var(--base-gap-small);
@@ -490,21 +492,16 @@
490
492
 
491
493
  &.approve,
492
494
  &.approve .icon,
493
- &.approve .date, {
495
+ &.approve .date {
494
496
  background-color: var(--md-sys-color-tertiary);
495
497
  color: var(--md-sys-color-on-tertiary);
496
498
  }
497
499
 
498
500
  &.request_changes,
499
501
  &.request_changes .icon,
500
- &.request_changes .date, {
502
+ &.request_changes .date {
501
503
  background-color: var(--md-sys-color-error);
502
504
  color: var(--md-sys-color-on-error);
503
505
  }
504
-
505
- &.separate {
506
- border-radius: var(--border-radius-l);
507
- margin-bottom: var(--padding-m);
508
- }
509
506
  `;exports.AutoHeight=s;exports.Buttons=a;exports.Comment=l;exports.Dropzone=u;exports.Footer=d;exports.LastOwnVersionReview=h;exports.Markdown=p;exports.Placeholder=b;exports.SubmitButtons=c;exports.VersionReviewButton=v;exports.VersionReviewButtons=m;exports.VersionReviewButtonsSpacer=g;exports.categoryColorCss=i;
510
507
  //# sourceMappingURL=CommentInput.styled.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommentInput.styled.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.styled.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Button, getTextColor } from '@ynput/ayon-react-components'\n\nexport const AutoHeight = styled.div`\n /* use grid tick for auto height transition */\n display: grid;\n height: 100%;\n /* transition: translate 0.1s, margin-top 0.1s; */\n position: relative;\n\n /* when closed default */\n translate: 0 50px;\n margin-top: -50px;\n\n /* when open */\n &.isOpen {\n translate: 0 0;\n margin-top: 0;\n }\n\n padding: 0 4px 4px 4px;\n /* when editing */\n &.isEditing {\n padding: 0;\n }\n`\n\nexport type CommentProps = {\n $categoryPrimary?: string\n $categorySecondary?: string\n $categoryTertiary?: string\n}\n\n// Reusable function for category color CSS\nexport const categoryColorCss = (\n $categoryPrimary?: string,\n $categorySecondary?: string,\n $categoryTertiary?: string,\n) =>\n $categoryPrimary &&\n css`\n --background-color: ${$categoryTertiary};\n --button-color: ${$categoryPrimary};\n --button-color-secondary: ${$categorySecondary};\n --button-text-color: ${getTextColor($categoryPrimary)};\n --border-color: ${$categoryPrimary};\n `\n\nexport const Comment = styled.div<CommentProps>`\n /* VARS */\n --background-color: var(--md-sys-color-surface-container);\n --button-color: var(--md-sys-color-primary);\n --button-color-secondary: var(--md-sys-color-surface-container-highest);\n --button-text-color: var(--md-sys-color-on-primary);\n --border-color: var(--md-sys-color-outline-variant);\n\n &.category {\n /* CATEGORY */\n ${({ $categoryPrimary, $categorySecondary, $categoryTertiary }) =>\n categoryColorCss($categoryPrimary, $categorySecondary, $categoryTertiary)}\n button.comment {\n &:hover {\n background-color: var(--button-color);\n filter: brightness(1.2);\n }\n }\n }\n\n display: flex;\n flex-direction: column;\n position: relative;\n\n background-color: var(--background-color);\n border: 1px solid var(--border-color);\n &.isDropping.isOpen {\n border-color: var(--md-sys-color-primary);\n }\n\n border-radius: var(--border-radius-l);\n overflow: hidden;\n transition: opacity 250ms 250ms, background-color 250ms, border-color 250ms;\n\n &.isOpen {\n /* box shadow */\n box-shadow: 0 -3px 10px 0 rgba(0, 0, 0, 0.2);\n\n .quill {\n background-color: var(--background-color);\n }\n }\n\n .ql-editor.ql-blank::before {\n color: var(--md-sys-color-on-surface);\n opacity: 0.25;\n }\n\n .ql-editor {\n ol {\n padding-left: 0;\n }\n }\n\n /* custom mention styles */\n .ql-editor {\n .mention {\n border-radius: var(--border-radius-m);\n user-select: text;\n padding: 0 4px;\n margin-right: -2px;\n /* remove underline */\n text-decoration: none;\n\n white-space: nowrap;\n cursor: pointer;\n\n color: var(--button-color);\n background-color: var(--button-color-secondary);\n\n &:hover {\n background-color: color-mix(in srgb, var(--button-color-secondary) 85%, white);\n }\n &:active {\n background-color: color-mix(in srgb, var(--button-color-secondary) 70%, white);\n }\n }\n }\n\n /* container styles reset */\n .ql-container.ql-snow {\n border: none;\n /* takes into account the top toolbar */\n height: calc(100% - 41px);\n\n .ql-editor {\n max-height: 259px !important;\n\n /* code block */\n .ql-code-block-container {\n background-color: var(--md-sys-color-surface-container-lowest);\n padding: var(--padding-m);\n border-radius: var(--border-radius-m);\n }\n\n .ql-code-block-container .ql-code-block,\n .ql-code-block-container .ql-code-block *,\n .ql-code-block-container * {\n font-family: monospace;\n font-size: var(--md-sys-typescale-body-small-font-size);\n }\n\n a {\n &::before,\n &::after {\n display: none;\n }\n\n color: var(--md-sys-color-primary);\n }\n\n a[href^='@'] {\n text-decoration: none;\n color: var(--md-sys-color-primary);\n }\n\n strong {\n em,\n u {\n font-weight: 800;\n }\n }\n }\n\n /* link popup */\n .ql-tooltip {\n &.ql-hidden {\n display: none;\n }\n\n left: 1px !important;\n top: -29px !important;\n\n width: 100%;\n\n box-shadow: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n border-color: var(--md-sys-color-surface-container-low);\n border-radius: var(--border-radius-l);\n padding: 4px;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n .ql-preview {\n flex: 1;\n max-width: unset;\n }\n\n input {\n flex: 1;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n\n &:focus-visible {\n outline: none;\n }\n }\n\n a {\n color: var(--md-sys-color-primary);\n }\n\n /* remove before text */\n /* remove save button */\n &::before,\n .ql-action {\n display: none;\n }\n\n .ql-remove {\n color: var(--md-sys-color-on-surface-variant);\n margin-right: 4px;\n }\n }\n }\n\n /* CLOSED */\n &.isClosed {\n cursor: pointer;\n .ql-editor > * {\n cursor: pointer !important;\n }\n &:hover:not(.disabled) {\n background-color: var(--md-sys-color-surface-container-high);\n }\n\n .ql-container.ql-snow {\n padding-bottom: 0;\n height: 44px;\n\n .ql-editor {\n overflow: hidden;\n }\n }\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n height: 0;\n padding: 0;\n margin: 0;\n border-width: 0;\n opacity: 0;\n pointer-events: none;\n overflow: hidden;\n }\n }\n\n &.disabled {\n cursor: default;\n pointer-events: none;\n user-select: none;\n border-color: var(--md-sys-color-surface-container-lowest);\n background-color: var(--md-sys-color-surface-container-lowest);\n }\n\n &.isLoading,\n &.isSubmitting {\n cursor: default;\n pointer-events: none;\n user-select: none;\n }\n\n &.isSubmitting {\n opacity: 0.3;\n }\n\n /* toolbar styles */\n .ql-toolbar.ql-snow {\n border: none;\n background-color: var(--background-color);\n border-bottom: 1px solid var(--md-sys-color-surface-container-hover);\n padding: var(--padding-s);\n display: flex;\n justify-content: flex-end;\n height: unset;\n width: unset;\n\n .ql-formats {\n height: 32px;\n margin-left: 8px;\n margin-right: 0;\n padding-left: 8px;\n border-left: 1px solid var(--md-sys-color-surface-container-hover);\n display: flex;\n gap: 2px;\n\n button {\n float: none;\n padding: 6px;\n border-radius: var(--border-radius-m);\n height: 32px;\n width: 32px;\n\n /* highlight when action */\n &.ql-active {\n background-color: var(--button-color-secondary);\n .icon {\n color: var(--button-color);\n }\n }\n }\n }\n\n button:hover {\n background-color: var(--button-color-secondary);\n }\n\n /* container queries to hide buttons as the width gets smaller */\n container-type: inline-size;\n container-name: format-buttons;\n\n @container format-buttons (max-width: 432px) {\n /* hide first button */\n .ql-formats:first-child {\n button:first-child {\n display: none;\n }\n }\n }\n\n @container format-buttons (max-width: 400px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(2) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 368px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(3) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 336px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(4) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 304px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n display: none;\n button:nth-child(5) {\n display: none;\n }\n }\n }\n\n /* it should never get this small but if it does: hide all list options */\n @container format-buttons (max-width: 250px) {\n /* hide first two buttons */\n .ql-formats:nth-child(2) {\n display: none;\n }\n }\n }\n\n /* EDITING */\n &.isEditing {\n /* remove box shadow */\n box-shadow: none;\n /* remove outline */\n outline: none;\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n display: none;\n }\n\n .ql-container.ql-snow {\n height: 100%;\n\n .ql-editor {\n padding: 8px;\n padding-top: 0px;\n }\n }\n }\n`\n\nexport const Footer = styled.footer`\n display: flex;\n justify-content: space-between;\n padding: var(--padding-m);\n border-top: 1px solid var(--md-sys-color-surface-container-hover);\n background-color: var(--background-color);\n z-index: 100;\n gap: var(--base-gap-small);\n container-type: inline-size;\n container-name: comment-input-footer;\n\n /* remove save button icon */\n .comment {\n min-width: 75px;\n .icon {\n display: none;\n }\n background-color: var(--button-color);\n color: var(--button-text-color);\n }\n`\n\nexport const Buttons = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n\n button {\n &.text {\n &:hover {\n background-color: var(--button-color-secondary);\n }\n }\n }\n`\n\nexport const SubmitButtons = styled(Buttons)`\n margin-left: auto;\n flex-shrink: 1;\n overflow: hidden;\n`\n\nexport const Markdown = styled.div`\n position: fixed;\n visibility: hidden;\n`\n\nexport const Dropzone = styled.div`\n position: absolute;\n inset: 0;\n user-select: none;\n pointer-events: none;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n opacity: 0;\n transition: opacity 0.2s;\n\n &.show {\n opacity: 1;\n }\n\n background-color: rgba(0, 0, 0, 0.5);\n\n z-index: 300;\n\n .icon {\n font-size: 40px;\n }\n`\n\nexport const Placeholder = styled.span`\n padding: 12px 15px;\n /* italic */\n font-style: italic;\n opacity: 0.4;\n`\n\nexport const VersionReviewButtons = styled.div`\n display: grid;\n gap: var(--base-gap-medium);\n grid-template-columns: 1fr 1fr;\n`\n\nexport const VersionReviewButtonsSpacer = styled.div`\n margin-top: var(--padding-m);\n`\n\nexport const VersionReviewButton = styled(Button)`\n background: transparent;\n border: solid 1px currentColor;\n flex-grow: 1;\n height: 32px;\n\n &.danger {\n color: var(--md-sys-color-error);\n }\n\n &.tertiary {\n color: var(--md-sys-color-tertiary);\n }\n\n &:hover {\n background: rgb(from currentColor r g b / 0.25)\n }\n\n @container comment-input-footer (max-width: 345px) {\n .version-review-buttons.guest & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n }\n }\n\n @container comment-input-footer (max-width: 510px) {\n .version-review-buttons:not(.guest) & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n }\n }\n`\n\nexport const LastOwnVersionReview = styled.div`\n border-top-left-radius: var(--border-radius-l);\n border-top-right-radius: var(--border-radius-l);\n user-select: none;\n display: flex;\n gap: var(--base-gap-small);\n overflow: hidden;\n padding: var(--padding-m) var(--padding-s);\n align-items: center;\n line-height: 1;\n\n &.approve,\n &.approve .icon,\n &.approve .date, {\n background-color: var(--md-sys-color-tertiary);\n color: var(--md-sys-color-on-tertiary);\n }\n\n &.request_changes,\n &.request_changes .icon,\n &.request_changes .date, {\n background-color: var(--md-sys-color-error);\n color: var(--md-sys-color-on-error);\n }\n\n &.separate {\n border-radius: var(--border-radius-l);\n margin-bottom: var(--padding-m);\n }\n`\n"],"names":["AutoHeight","styled","categoryColorCss","$categoryPrimary","$categorySecondary","$categoryTertiary","css","getTextColor","Comment","Footer","Buttons","SubmitButtons","Markdown","Dropzone","Placeholder","VersionReviewButtons","VersionReviewButtonsSpacer","VersionReviewButton","Button","LastOwnVersionReview"],"mappings":"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"}
1
+ {"version":3,"file":"CommentInput.styled.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.styled.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Button, getTextColor } from '@ynput/ayon-react-components'\n\nexport const AutoHeight = styled.div`\n /* use grid tick for auto height transition */\n display: grid;\n height: 100%;\n /* transition: translate 0.1s, margin-top 0.1s; */\n position: relative;\n\n /* when closed default */\n translate: 0 50px;\n margin-top: -50px;\n\n /* when open */\n &.isOpen {\n translate: 0 0;\n margin-top: 0;\n }\n\n padding: 0 4px 4px 4px;\n /* when editing */\n &.isEditing {\n padding: 0;\n }\n`\n\nexport type CommentProps = {\n $categoryPrimary?: string\n $categorySecondary?: string\n $categoryTertiary?: string\n}\n\n// Reusable function for category color CSS\nexport const categoryColorCss = (\n $categoryPrimary?: string,\n $categorySecondary?: string,\n $categoryTertiary?: string,\n) =>\n $categoryPrimary &&\n css`\n --background-color: ${$categoryTertiary};\n --button-color: ${$categoryPrimary};\n --button-color-secondary: ${$categorySecondary};\n --button-text-color: ${getTextColor($categoryPrimary)};\n --border-color: ${$categoryPrimary};\n `\n\nexport const Comment = styled.div<CommentProps>`\n /* VARS */\n --background-color: var(--md-sys-color-surface-container);\n --button-color: var(--md-sys-color-primary);\n --button-color-secondary: var(--md-sys-color-surface-container-highest);\n --button-text-color: var(--md-sys-color-on-primary);\n --border-color: var(--md-sys-color-outline-variant);\n\n &.category {\n /* CATEGORY */\n ${({ $categoryPrimary, $categorySecondary, $categoryTertiary }) =>\n categoryColorCss($categoryPrimary, $categorySecondary, $categoryTertiary)}\n button.comment {\n &:hover {\n background-color: var(--button-color);\n filter: brightness(1.2);\n }\n }\n }\n\n display: flex;\n flex-direction: column;\n position: relative;\n\n background-color: var(--background-color);\n border: 1px solid var(--border-color);\n &.isDropping.isOpen {\n border-color: var(--md-sys-color-primary);\n }\n\n border-radius: var(--border-radius-l);\n overflow: hidden;\n transition: opacity 250ms 250ms, background-color 250ms, border-color 250ms;\n\n &.isOpen {\n /* box shadow */\n box-shadow: 0 -3px 10px 0 rgba(0, 0, 0, 0.2);\n\n .quill {\n background-color: var(--background-color);\n }\n }\n\n .ql-editor.ql-blank::before {\n color: var(--md-sys-color-on-surface);\n opacity: 0.25;\n }\n\n .ql-editor {\n ol {\n padding-left: 0;\n }\n }\n\n /* custom mention styles */\n .ql-editor {\n .mention {\n border-radius: var(--border-radius-m);\n user-select: text;\n padding: 0 4px;\n margin-right: -2px;\n /* remove underline */\n text-decoration: none;\n\n white-space: nowrap;\n cursor: pointer;\n\n color: var(--button-color);\n background-color: var(--button-color-secondary);\n\n &:hover {\n background-color: color-mix(in srgb, var(--button-color-secondary) 85%, white);\n }\n &:active {\n background-color: color-mix(in srgb, var(--button-color-secondary) 70%, white);\n }\n }\n }\n\n /* container styles reset */\n .ql-container.ql-snow {\n border: none;\n /* takes into account the top toolbar */\n height: calc(100% - 41px);\n\n .ql-editor {\n max-height: 259px !important;\n\n /* code block */\n .ql-code-block-container {\n background-color: var(--md-sys-color-surface-container-lowest);\n padding: var(--padding-m);\n border-radius: var(--border-radius-m);\n }\n\n .ql-code-block-container .ql-code-block,\n .ql-code-block-container .ql-code-block *,\n .ql-code-block-container * {\n font-family: monospace;\n font-size: var(--md-sys-typescale-body-small-font-size);\n }\n\n a {\n &::before,\n &::after {\n display: none;\n }\n\n color: var(--md-sys-color-primary);\n }\n\n a[href^='@'] {\n text-decoration: none;\n color: var(--md-sys-color-primary);\n }\n\n strong {\n em,\n u {\n font-weight: 800;\n }\n }\n }\n\n /* link popup */\n .ql-tooltip {\n &.ql-hidden {\n display: none;\n }\n\n left: 1px !important;\n top: -29px !important;\n\n width: 100%;\n\n box-shadow: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n border-color: var(--md-sys-color-surface-container-low);\n border-radius: var(--border-radius-l);\n padding: 4px;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n .ql-preview {\n flex: 1;\n max-width: unset;\n }\n\n input {\n flex: 1;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n\n &:focus-visible {\n outline: none;\n }\n }\n\n a {\n color: var(--md-sys-color-primary);\n }\n\n /* remove before text */\n /* remove save button */\n &::before,\n .ql-action {\n display: none;\n }\n\n .ql-remove {\n color: var(--md-sys-color-on-surface-variant);\n margin-right: 4px;\n }\n }\n }\n\n /* CLOSED */\n &.isClosed {\n cursor: pointer;\n .ql-editor > * {\n cursor: pointer !important;\n }\n &:hover:not(.disabled) {\n background-color: var(--md-sys-color-surface-container-high);\n }\n\n .ql-container.ql-snow {\n padding-bottom: 0;\n height: 44px;\n\n .ql-editor {\n overflow: hidden;\n }\n }\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n height: 0;\n padding: 0;\n margin: 0;\n border-width: 0;\n opacity: 0;\n pointer-events: none;\n overflow: hidden;\n }\n }\n\n &.disabled {\n cursor: default;\n pointer-events: none;\n user-select: none;\n border-color: var(--md-sys-color-surface-container-lowest);\n background-color: var(--md-sys-color-surface-container-lowest);\n }\n\n &.isLoading,\n &.isSubmitting {\n cursor: default;\n pointer-events: none;\n user-select: none;\n }\n\n &.isSubmitting {\n opacity: 0.3;\n }\n\n /* toolbar styles */\n .ql-toolbar.ql-snow {\n border: none;\n background-color: var(--background-color);\n border-bottom: 1px solid var(--md-sys-color-surface-container-hover);\n padding: var(--padding-s);\n display: flex;\n justify-content: flex-end;\n height: unset;\n width: unset;\n\n .ql-formats {\n height: 32px;\n margin-left: 8px;\n margin-right: 0;\n padding-left: 8px;\n border-left: 1px solid var(--md-sys-color-surface-container-hover);\n display: flex;\n gap: 2px;\n\n button {\n float: none;\n padding: 6px;\n border-radius: var(--border-radius-m);\n height: 32px;\n width: 32px;\n\n /* highlight when action */\n &.ql-active {\n background-color: var(--button-color-secondary);\n .icon {\n color: var(--button-color);\n }\n }\n }\n }\n\n button:hover {\n background-color: var(--button-color-secondary);\n }\n\n /* container queries to hide buttons as the width gets smaller */\n container-type: inline-size;\n container-name: format-buttons;\n\n @container format-buttons (max-width: 432px) {\n /* hide first button */\n .ql-formats:first-child {\n button:first-child {\n display: none;\n }\n }\n }\n\n @container format-buttons (max-width: 400px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(2) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 368px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(3) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 336px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(4) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 304px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n display: none;\n button:nth-child(5) {\n display: none;\n }\n }\n }\n\n /* it should never get this small but if it does: hide all list options */\n @container format-buttons (max-width: 250px) {\n /* hide first two buttons */\n .ql-formats:nth-child(2) {\n display: none;\n }\n }\n }\n\n /* EDITING */\n &.isEditing {\n /* remove box shadow */\n box-shadow: none;\n /* remove outline */\n outline: none;\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n display: none;\n }\n\n .ql-container.ql-snow {\n height: 100%;\n\n .ql-editor {\n padding: 8px;\n padding-top: 0px;\n }\n }\n }\n`\n\nexport const Footer = styled.footer`\n display: flex;\n justify-content: space-between;\n padding: var(--padding-m);\n border-top: 1px solid var(--md-sys-color-surface-container-hover);\n background-color: var(--background-color);\n z-index: 100;\n gap: var(--base-gap-small);\n container-type: inline-size;\n container-name: comment-input-footer;\n\n /* remove save button icon */\n .comment {\n min-width: 75px;\n .icon {\n display: none;\n }\n background-color: var(--button-color);\n color: var(--button-text-color);\n }\n`\n\nexport const Buttons = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n\n button {\n &.text {\n &:hover {\n background-color: var(--button-color-secondary);\n }\n }\n }\n`\n\nexport const SubmitButtons = styled(Buttons)`\n margin-left: auto;\n flex-shrink: 1;\n overflow: hidden;\n`\n\nexport const Markdown = styled.div`\n position: fixed;\n visibility: hidden;\n`\n\nexport const Dropzone = styled.div`\n position: absolute;\n inset: 0;\n user-select: none;\n pointer-events: none;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n opacity: 0;\n transition: opacity 0.2s;\n\n &.show {\n opacity: 1;\n }\n\n background-color: rgba(0, 0, 0, 0.5);\n\n z-index: 300;\n\n .icon {\n font-size: 40px;\n }\n`\n\nexport const Placeholder = styled.span`\n padding: 12px 15px;\n /* italic */\n font-style: italic;\n opacity: 0.4;\n`\n\nexport const VersionReviewButtons = styled.div`\n display: grid;\n gap: var(--base-gap-medium);\n grid-template-columns: 1fr 1fr;\n`\n\nexport const VersionReviewButtonsSpacer = styled.div`\n margin-top: var(--padding-m);\n`\n\nexport const VersionReviewButton = styled(Button)`\n background: transparent;\n border: solid 1px currentColor;\n flex-grow: 1;\n height: 32px;\n\n &.danger {\n color: var(--md-sys-color-error);\n }\n\n &.tertiary {\n color: var(--md-sys-color-tertiary);\n }\n\n &:hover {\n background: rgb(from currentColor r g b / 0.25);\n }\n\n @container comment-input-footer (max-width: 345px) {\n .version-review-buttons.guest & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n pointer-events: none;\n }\n }\n\n @container comment-input-footer (max-width: 510px) {\n .version-review-buttons:not(.guest) & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n pointer-events: none;\n }\n }\n`\n\nexport const LastOwnVersionReview = styled.div`\n border-radius: var(--border-radius-l);\n margin-bottom: var(--padding-m);\n user-select: none;\n display: flex;\n gap: var(--base-gap-small);\n overflow: hidden;\n padding: var(--padding-m) var(--padding-s);\n align-items: center;\n line-height: 1;\n\n &.approve,\n &.approve .icon,\n &.approve .date {\n background-color: var(--md-sys-color-tertiary);\n color: var(--md-sys-color-on-tertiary);\n }\n\n &.request_changes,\n &.request_changes .icon,\n &.request_changes .date {\n background-color: var(--md-sys-color-error);\n color: var(--md-sys-color-on-error);\n }\n`\n"],"names":["AutoHeight","styled","categoryColorCss","$categoryPrimary","$categorySecondary","$categoryTertiary","css","getTextColor","Comment","Footer","Buttons","SubmitButtons","Markdown","Dropzone","Placeholder","VersionReviewButtons","VersionReviewButtonsSpacer","VersionReviewButton","Button","LastOwnVersionReview"],"mappings":"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"}
@@ -393,7 +393,7 @@ const p = o.div`
393
393
  background-color: var(--button-color);
394
394
  color: var(--button-text-color);
395
395
  }
396
- `, d = o.div`
396
+ `, l = o.div`
397
397
  display: flex;
398
398
  gap: var(--base-gap-small);
399
399
 
@@ -404,7 +404,7 @@ const p = o.div`
404
404
  }
405
405
  }
406
406
  }
407
- `, m = o(d)`
407
+ `, m = o(l)`
408
408
  margin-left: auto;
409
409
  flex-shrink: 1;
410
410
  overflow: hidden;
@@ -461,7 +461,7 @@ const p = o.div`
461
461
  }
462
462
 
463
463
  &:hover {
464
- background: rgb(from currentColor r g b / 0.25)
464
+ background: rgb(from currentColor r g b / 0.25);
465
465
  }
466
466
 
467
467
  @container comment-input-footer (max-width: 345px) {
@@ -469,6 +469,7 @@ const p = o.div`
469
469
  position: absolute;
470
470
  opacity: 0;
471
471
  width: 0;
472
+ pointer-events: none;
472
473
  }
473
474
  }
474
475
 
@@ -477,11 +478,12 @@ const p = o.div`
477
478
  position: absolute;
478
479
  opacity: 0;
479
480
  width: 0;
481
+ pointer-events: none;
480
482
  }
481
483
  }
482
484
  `, w = o.div`
483
- border-top-left-radius: var(--border-radius-l);
484
- border-top-right-radius: var(--border-radius-l);
485
+ border-radius: var(--border-radius-l);
486
+ margin-bottom: var(--padding-m);
485
487
  user-select: none;
486
488
  display: flex;
487
489
  gap: var(--base-gap-small);
@@ -492,26 +494,21 @@ const p = o.div`
492
494
 
493
495
  &.approve,
494
496
  &.approve .icon,
495
- &.approve .date, {
497
+ &.approve .date {
496
498
  background-color: var(--md-sys-color-tertiary);
497
499
  color: var(--md-sys-color-on-tertiary);
498
500
  }
499
501
 
500
502
  &.request_changes,
501
503
  &.request_changes .icon,
502
- &.request_changes .date, {
504
+ &.request_changes .date {
503
505
  background-color: var(--md-sys-color-error);
504
506
  color: var(--md-sys-color-on-error);
505
507
  }
506
-
507
- &.separate {
508
- border-radius: var(--border-radius-l);
509
- margin-bottom: var(--padding-m);
510
- }
511
508
  `;
512
509
  export {
513
510
  p as AutoHeight,
514
- d as Buttons,
511
+ l as Buttons,
515
512
  u as Comment,
516
513
  h as Dropzone,
517
514
  b as Footer,
@@ -1 +1 @@
1
- {"version":3,"file":"CommentInput.styled.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.styled.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Button, getTextColor } from '@ynput/ayon-react-components'\n\nexport const AutoHeight = styled.div`\n /* use grid tick for auto height transition */\n display: grid;\n height: 100%;\n /* transition: translate 0.1s, margin-top 0.1s; */\n position: relative;\n\n /* when closed default */\n translate: 0 50px;\n margin-top: -50px;\n\n /* when open */\n &.isOpen {\n translate: 0 0;\n margin-top: 0;\n }\n\n padding: 0 4px 4px 4px;\n /* when editing */\n &.isEditing {\n padding: 0;\n }\n`\n\nexport type CommentProps = {\n $categoryPrimary?: string\n $categorySecondary?: string\n $categoryTertiary?: string\n}\n\n// Reusable function for category color CSS\nexport const categoryColorCss = (\n $categoryPrimary?: string,\n $categorySecondary?: string,\n $categoryTertiary?: string,\n) =>\n $categoryPrimary &&\n css`\n --background-color: ${$categoryTertiary};\n --button-color: ${$categoryPrimary};\n --button-color-secondary: ${$categorySecondary};\n --button-text-color: ${getTextColor($categoryPrimary)};\n --border-color: ${$categoryPrimary};\n `\n\nexport const Comment = styled.div<CommentProps>`\n /* VARS */\n --background-color: var(--md-sys-color-surface-container);\n --button-color: var(--md-sys-color-primary);\n --button-color-secondary: var(--md-sys-color-surface-container-highest);\n --button-text-color: var(--md-sys-color-on-primary);\n --border-color: var(--md-sys-color-outline-variant);\n\n &.category {\n /* CATEGORY */\n ${({ $categoryPrimary, $categorySecondary, $categoryTertiary }) =>\n categoryColorCss($categoryPrimary, $categorySecondary, $categoryTertiary)}\n button.comment {\n &:hover {\n background-color: var(--button-color);\n filter: brightness(1.2);\n }\n }\n }\n\n display: flex;\n flex-direction: column;\n position: relative;\n\n background-color: var(--background-color);\n border: 1px solid var(--border-color);\n &.isDropping.isOpen {\n border-color: var(--md-sys-color-primary);\n }\n\n border-radius: var(--border-radius-l);\n overflow: hidden;\n transition: opacity 250ms 250ms, background-color 250ms, border-color 250ms;\n\n &.isOpen {\n /* box shadow */\n box-shadow: 0 -3px 10px 0 rgba(0, 0, 0, 0.2);\n\n .quill {\n background-color: var(--background-color);\n }\n }\n\n .ql-editor.ql-blank::before {\n color: var(--md-sys-color-on-surface);\n opacity: 0.25;\n }\n\n .ql-editor {\n ol {\n padding-left: 0;\n }\n }\n\n /* custom mention styles */\n .ql-editor {\n .mention {\n border-radius: var(--border-radius-m);\n user-select: text;\n padding: 0 4px;\n margin-right: -2px;\n /* remove underline */\n text-decoration: none;\n\n white-space: nowrap;\n cursor: pointer;\n\n color: var(--button-color);\n background-color: var(--button-color-secondary);\n\n &:hover {\n background-color: color-mix(in srgb, var(--button-color-secondary) 85%, white);\n }\n &:active {\n background-color: color-mix(in srgb, var(--button-color-secondary) 70%, white);\n }\n }\n }\n\n /* container styles reset */\n .ql-container.ql-snow {\n border: none;\n /* takes into account the top toolbar */\n height: calc(100% - 41px);\n\n .ql-editor {\n max-height: 259px !important;\n\n /* code block */\n .ql-code-block-container {\n background-color: var(--md-sys-color-surface-container-lowest);\n padding: var(--padding-m);\n border-radius: var(--border-radius-m);\n }\n\n .ql-code-block-container .ql-code-block,\n .ql-code-block-container .ql-code-block *,\n .ql-code-block-container * {\n font-family: monospace;\n font-size: var(--md-sys-typescale-body-small-font-size);\n }\n\n a {\n &::before,\n &::after {\n display: none;\n }\n\n color: var(--md-sys-color-primary);\n }\n\n a[href^='@'] {\n text-decoration: none;\n color: var(--md-sys-color-primary);\n }\n\n strong {\n em,\n u {\n font-weight: 800;\n }\n }\n }\n\n /* link popup */\n .ql-tooltip {\n &.ql-hidden {\n display: none;\n }\n\n left: 1px !important;\n top: -29px !important;\n\n width: 100%;\n\n box-shadow: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n border-color: var(--md-sys-color-surface-container-low);\n border-radius: var(--border-radius-l);\n padding: 4px;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n .ql-preview {\n flex: 1;\n max-width: unset;\n }\n\n input {\n flex: 1;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n\n &:focus-visible {\n outline: none;\n }\n }\n\n a {\n color: var(--md-sys-color-primary);\n }\n\n /* remove before text */\n /* remove save button */\n &::before,\n .ql-action {\n display: none;\n }\n\n .ql-remove {\n color: var(--md-sys-color-on-surface-variant);\n margin-right: 4px;\n }\n }\n }\n\n /* CLOSED */\n &.isClosed {\n cursor: pointer;\n .ql-editor > * {\n cursor: pointer !important;\n }\n &:hover:not(.disabled) {\n background-color: var(--md-sys-color-surface-container-high);\n }\n\n .ql-container.ql-snow {\n padding-bottom: 0;\n height: 44px;\n\n .ql-editor {\n overflow: hidden;\n }\n }\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n height: 0;\n padding: 0;\n margin: 0;\n border-width: 0;\n opacity: 0;\n pointer-events: none;\n overflow: hidden;\n }\n }\n\n &.disabled {\n cursor: default;\n pointer-events: none;\n user-select: none;\n border-color: var(--md-sys-color-surface-container-lowest);\n background-color: var(--md-sys-color-surface-container-lowest);\n }\n\n &.isLoading,\n &.isSubmitting {\n cursor: default;\n pointer-events: none;\n user-select: none;\n }\n\n &.isSubmitting {\n opacity: 0.3;\n }\n\n /* toolbar styles */\n .ql-toolbar.ql-snow {\n border: none;\n background-color: var(--background-color);\n border-bottom: 1px solid var(--md-sys-color-surface-container-hover);\n padding: var(--padding-s);\n display: flex;\n justify-content: flex-end;\n height: unset;\n width: unset;\n\n .ql-formats {\n height: 32px;\n margin-left: 8px;\n margin-right: 0;\n padding-left: 8px;\n border-left: 1px solid var(--md-sys-color-surface-container-hover);\n display: flex;\n gap: 2px;\n\n button {\n float: none;\n padding: 6px;\n border-radius: var(--border-radius-m);\n height: 32px;\n width: 32px;\n\n /* highlight when action */\n &.ql-active {\n background-color: var(--button-color-secondary);\n .icon {\n color: var(--button-color);\n }\n }\n }\n }\n\n button:hover {\n background-color: var(--button-color-secondary);\n }\n\n /* container queries to hide buttons as the width gets smaller */\n container-type: inline-size;\n container-name: format-buttons;\n\n @container format-buttons (max-width: 432px) {\n /* hide first button */\n .ql-formats:first-child {\n button:first-child {\n display: none;\n }\n }\n }\n\n @container format-buttons (max-width: 400px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(2) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 368px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(3) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 336px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(4) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 304px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n display: none;\n button:nth-child(5) {\n display: none;\n }\n }\n }\n\n /* it should never get this small but if it does: hide all list options */\n @container format-buttons (max-width: 250px) {\n /* hide first two buttons */\n .ql-formats:nth-child(2) {\n display: none;\n }\n }\n }\n\n /* EDITING */\n &.isEditing {\n /* remove box shadow */\n box-shadow: none;\n /* remove outline */\n outline: none;\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n display: none;\n }\n\n .ql-container.ql-snow {\n height: 100%;\n\n .ql-editor {\n padding: 8px;\n padding-top: 0px;\n }\n }\n }\n`\n\nexport const Footer = styled.footer`\n display: flex;\n justify-content: space-between;\n padding: var(--padding-m);\n border-top: 1px solid var(--md-sys-color-surface-container-hover);\n background-color: var(--background-color);\n z-index: 100;\n gap: var(--base-gap-small);\n container-type: inline-size;\n container-name: comment-input-footer;\n\n /* remove save button icon */\n .comment {\n min-width: 75px;\n .icon {\n display: none;\n }\n background-color: var(--button-color);\n color: var(--button-text-color);\n }\n`\n\nexport const Buttons = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n\n button {\n &.text {\n &:hover {\n background-color: var(--button-color-secondary);\n }\n }\n }\n`\n\nexport const SubmitButtons = styled(Buttons)`\n margin-left: auto;\n flex-shrink: 1;\n overflow: hidden;\n`\n\nexport const Markdown = styled.div`\n position: fixed;\n visibility: hidden;\n`\n\nexport const Dropzone = styled.div`\n position: absolute;\n inset: 0;\n user-select: none;\n pointer-events: none;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n opacity: 0;\n transition: opacity 0.2s;\n\n &.show {\n opacity: 1;\n }\n\n background-color: rgba(0, 0, 0, 0.5);\n\n z-index: 300;\n\n .icon {\n font-size: 40px;\n }\n`\n\nexport const Placeholder = styled.span`\n padding: 12px 15px;\n /* italic */\n font-style: italic;\n opacity: 0.4;\n`\n\nexport const VersionReviewButtons = styled.div`\n display: grid;\n gap: var(--base-gap-medium);\n grid-template-columns: 1fr 1fr;\n`\n\nexport const VersionReviewButtonsSpacer = styled.div`\n margin-top: var(--padding-m);\n`\n\nexport const VersionReviewButton = styled(Button)`\n background: transparent;\n border: solid 1px currentColor;\n flex-grow: 1;\n height: 32px;\n\n &.danger {\n color: var(--md-sys-color-error);\n }\n\n &.tertiary {\n color: var(--md-sys-color-tertiary);\n }\n\n &:hover {\n background: rgb(from currentColor r g b / 0.25)\n }\n\n @container comment-input-footer (max-width: 345px) {\n .version-review-buttons.guest & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n }\n }\n\n @container comment-input-footer (max-width: 510px) {\n .version-review-buttons:not(.guest) & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n }\n }\n`\n\nexport const LastOwnVersionReview = styled.div`\n border-top-left-radius: var(--border-radius-l);\n border-top-right-radius: var(--border-radius-l);\n user-select: none;\n display: flex;\n gap: var(--base-gap-small);\n overflow: hidden;\n padding: var(--padding-m) var(--padding-s);\n align-items: center;\n line-height: 1;\n\n &.approve,\n &.approve .icon,\n &.approve .date, {\n background-color: var(--md-sys-color-tertiary);\n color: var(--md-sys-color-on-tertiary);\n }\n\n &.request_changes,\n &.request_changes .icon,\n &.request_changes .date, {\n background-color: var(--md-sys-color-error);\n color: var(--md-sys-color-on-error);\n }\n\n &.separate {\n border-radius: var(--border-radius-l);\n margin-bottom: var(--padding-m);\n }\n`\n"],"names":["AutoHeight","styled","categoryColorCss","$categoryPrimary","$categorySecondary","$categoryTertiary","css","getTextColor","Comment","Footer","Buttons","SubmitButtons","Markdown","Dropzone","Placeholder","VersionReviewButtons","VersionReviewButtonsSpacer","VersionReviewButton","Button","LastOwnVersionReview"],"mappings":"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"}
1
+ {"version":3,"file":"CommentInput.styled.es.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/CommentInput.styled.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Button, getTextColor } from '@ynput/ayon-react-components'\n\nexport const AutoHeight = styled.div`\n /* use grid tick for auto height transition */\n display: grid;\n height: 100%;\n /* transition: translate 0.1s, margin-top 0.1s; */\n position: relative;\n\n /* when closed default */\n translate: 0 50px;\n margin-top: -50px;\n\n /* when open */\n &.isOpen {\n translate: 0 0;\n margin-top: 0;\n }\n\n padding: 0 4px 4px 4px;\n /* when editing */\n &.isEditing {\n padding: 0;\n }\n`\n\nexport type CommentProps = {\n $categoryPrimary?: string\n $categorySecondary?: string\n $categoryTertiary?: string\n}\n\n// Reusable function for category color CSS\nexport const categoryColorCss = (\n $categoryPrimary?: string,\n $categorySecondary?: string,\n $categoryTertiary?: string,\n) =>\n $categoryPrimary &&\n css`\n --background-color: ${$categoryTertiary};\n --button-color: ${$categoryPrimary};\n --button-color-secondary: ${$categorySecondary};\n --button-text-color: ${getTextColor($categoryPrimary)};\n --border-color: ${$categoryPrimary};\n `\n\nexport const Comment = styled.div<CommentProps>`\n /* VARS */\n --background-color: var(--md-sys-color-surface-container);\n --button-color: var(--md-sys-color-primary);\n --button-color-secondary: var(--md-sys-color-surface-container-highest);\n --button-text-color: var(--md-sys-color-on-primary);\n --border-color: var(--md-sys-color-outline-variant);\n\n &.category {\n /* CATEGORY */\n ${({ $categoryPrimary, $categorySecondary, $categoryTertiary }) =>\n categoryColorCss($categoryPrimary, $categorySecondary, $categoryTertiary)}\n button.comment {\n &:hover {\n background-color: var(--button-color);\n filter: brightness(1.2);\n }\n }\n }\n\n display: flex;\n flex-direction: column;\n position: relative;\n\n background-color: var(--background-color);\n border: 1px solid var(--border-color);\n &.isDropping.isOpen {\n border-color: var(--md-sys-color-primary);\n }\n\n border-radius: var(--border-radius-l);\n overflow: hidden;\n transition: opacity 250ms 250ms, background-color 250ms, border-color 250ms;\n\n &.isOpen {\n /* box shadow */\n box-shadow: 0 -3px 10px 0 rgba(0, 0, 0, 0.2);\n\n .quill {\n background-color: var(--background-color);\n }\n }\n\n .ql-editor.ql-blank::before {\n color: var(--md-sys-color-on-surface);\n opacity: 0.25;\n }\n\n .ql-editor {\n ol {\n padding-left: 0;\n }\n }\n\n /* custom mention styles */\n .ql-editor {\n .mention {\n border-radius: var(--border-radius-m);\n user-select: text;\n padding: 0 4px;\n margin-right: -2px;\n /* remove underline */\n text-decoration: none;\n\n white-space: nowrap;\n cursor: pointer;\n\n color: var(--button-color);\n background-color: var(--button-color-secondary);\n\n &:hover {\n background-color: color-mix(in srgb, var(--button-color-secondary) 85%, white);\n }\n &:active {\n background-color: color-mix(in srgb, var(--button-color-secondary) 70%, white);\n }\n }\n }\n\n /* container styles reset */\n .ql-container.ql-snow {\n border: none;\n /* takes into account the top toolbar */\n height: calc(100% - 41px);\n\n .ql-editor {\n max-height: 259px !important;\n\n /* code block */\n .ql-code-block-container {\n background-color: var(--md-sys-color-surface-container-lowest);\n padding: var(--padding-m);\n border-radius: var(--border-radius-m);\n }\n\n .ql-code-block-container .ql-code-block,\n .ql-code-block-container .ql-code-block *,\n .ql-code-block-container * {\n font-family: monospace;\n font-size: var(--md-sys-typescale-body-small-font-size);\n }\n\n a {\n &::before,\n &::after {\n display: none;\n }\n\n color: var(--md-sys-color-primary);\n }\n\n a[href^='@'] {\n text-decoration: none;\n color: var(--md-sys-color-primary);\n }\n\n strong {\n em,\n u {\n font-weight: 800;\n }\n }\n }\n\n /* link popup */\n .ql-tooltip {\n &.ql-hidden {\n display: none;\n }\n\n left: 1px !important;\n top: -29px !important;\n\n width: 100%;\n\n box-shadow: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n border-color: var(--md-sys-color-surface-container-low);\n border-radius: var(--border-radius-l);\n padding: 4px;\n overflow: hidden;\n\n display: flex;\n align-items: center;\n\n .ql-preview {\n flex: 1;\n max-width: unset;\n }\n\n input {\n flex: 1;\n border: none;\n background-color: var(--md-sys-color-surface-container-lowest);\n\n &:focus-visible {\n outline: none;\n }\n }\n\n a {\n color: var(--md-sys-color-primary);\n }\n\n /* remove before text */\n /* remove save button */\n &::before,\n .ql-action {\n display: none;\n }\n\n .ql-remove {\n color: var(--md-sys-color-on-surface-variant);\n margin-right: 4px;\n }\n }\n }\n\n /* CLOSED */\n &.isClosed {\n cursor: pointer;\n .ql-editor > * {\n cursor: pointer !important;\n }\n &:hover:not(.disabled) {\n background-color: var(--md-sys-color-surface-container-high);\n }\n\n .ql-container.ql-snow {\n padding-bottom: 0;\n height: 44px;\n\n .ql-editor {\n overflow: hidden;\n }\n }\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n height: 0;\n padding: 0;\n margin: 0;\n border-width: 0;\n opacity: 0;\n pointer-events: none;\n overflow: hidden;\n }\n }\n\n &.disabled {\n cursor: default;\n pointer-events: none;\n user-select: none;\n border-color: var(--md-sys-color-surface-container-lowest);\n background-color: var(--md-sys-color-surface-container-lowest);\n }\n\n &.isLoading,\n &.isSubmitting {\n cursor: default;\n pointer-events: none;\n user-select: none;\n }\n\n &.isSubmitting {\n opacity: 0.3;\n }\n\n /* toolbar styles */\n .ql-toolbar.ql-snow {\n border: none;\n background-color: var(--background-color);\n border-bottom: 1px solid var(--md-sys-color-surface-container-hover);\n padding: var(--padding-s);\n display: flex;\n justify-content: flex-end;\n height: unset;\n width: unset;\n\n .ql-formats {\n height: 32px;\n margin-left: 8px;\n margin-right: 0;\n padding-left: 8px;\n border-left: 1px solid var(--md-sys-color-surface-container-hover);\n display: flex;\n gap: 2px;\n\n button {\n float: none;\n padding: 6px;\n border-radius: var(--border-radius-m);\n height: 32px;\n width: 32px;\n\n /* highlight when action */\n &.ql-active {\n background-color: var(--button-color-secondary);\n .icon {\n color: var(--button-color);\n }\n }\n }\n }\n\n button:hover {\n background-color: var(--button-color-secondary);\n }\n\n /* container queries to hide buttons as the width gets smaller */\n container-type: inline-size;\n container-name: format-buttons;\n\n @container format-buttons (max-width: 432px) {\n /* hide first button */\n .ql-formats:first-child {\n button:first-child {\n display: none;\n }\n }\n }\n\n @container format-buttons (max-width: 400px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(2) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 368px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(3) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 336px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n button:nth-child(4) {\n display: none;\n }\n }\n }\n @container format-buttons (max-width: 304px) {\n /* hide first two buttons */\n .ql-formats:first-child {\n display: none;\n button:nth-child(5) {\n display: none;\n }\n }\n }\n\n /* it should never get this small but if it does: hide all list options */\n @container format-buttons (max-width: 250px) {\n /* hide first two buttons */\n .ql-formats:nth-child(2) {\n display: none;\n }\n }\n }\n\n /* EDITING */\n &.isEditing {\n /* remove box shadow */\n box-shadow: none;\n /* remove outline */\n outline: none;\n\n /* hide toolbar */\n .ql-toolbar.ql-snow {\n display: none;\n }\n\n .ql-container.ql-snow {\n height: 100%;\n\n .ql-editor {\n padding: 8px;\n padding-top: 0px;\n }\n }\n }\n`\n\nexport const Footer = styled.footer`\n display: flex;\n justify-content: space-between;\n padding: var(--padding-m);\n border-top: 1px solid var(--md-sys-color-surface-container-hover);\n background-color: var(--background-color);\n z-index: 100;\n gap: var(--base-gap-small);\n container-type: inline-size;\n container-name: comment-input-footer;\n\n /* remove save button icon */\n .comment {\n min-width: 75px;\n .icon {\n display: none;\n }\n background-color: var(--button-color);\n color: var(--button-text-color);\n }\n`\n\nexport const Buttons = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n\n button {\n &.text {\n &:hover {\n background-color: var(--button-color-secondary);\n }\n }\n }\n`\n\nexport const SubmitButtons = styled(Buttons)`\n margin-left: auto;\n flex-shrink: 1;\n overflow: hidden;\n`\n\nexport const Markdown = styled.div`\n position: fixed;\n visibility: hidden;\n`\n\nexport const Dropzone = styled.div`\n position: absolute;\n inset: 0;\n user-select: none;\n pointer-events: none;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n opacity: 0;\n transition: opacity 0.2s;\n\n &.show {\n opacity: 1;\n }\n\n background-color: rgba(0, 0, 0, 0.5);\n\n z-index: 300;\n\n .icon {\n font-size: 40px;\n }\n`\n\nexport const Placeholder = styled.span`\n padding: 12px 15px;\n /* italic */\n font-style: italic;\n opacity: 0.4;\n`\n\nexport const VersionReviewButtons = styled.div`\n display: grid;\n gap: var(--base-gap-medium);\n grid-template-columns: 1fr 1fr;\n`\n\nexport const VersionReviewButtonsSpacer = styled.div`\n margin-top: var(--padding-m);\n`\n\nexport const VersionReviewButton = styled(Button)`\n background: transparent;\n border: solid 1px currentColor;\n flex-grow: 1;\n height: 32px;\n\n &.danger {\n color: var(--md-sys-color-error);\n }\n\n &.tertiary {\n color: var(--md-sys-color-tertiary);\n }\n\n &:hover {\n background: rgb(from currentColor r g b / 0.25);\n }\n\n @container comment-input-footer (max-width: 345px) {\n .version-review-buttons.guest & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n pointer-events: none;\n }\n }\n\n @container comment-input-footer (max-width: 510px) {\n .version-review-buttons:not(.guest) & .label {\n position: absolute;\n opacity: 0;\n width: 0;\n pointer-events: none;\n }\n }\n`\n\nexport const LastOwnVersionReview = styled.div`\n border-radius: var(--border-radius-l);\n margin-bottom: var(--padding-m);\n user-select: none;\n display: flex;\n gap: var(--base-gap-small);\n overflow: hidden;\n padding: var(--padding-m) var(--padding-s);\n align-items: center;\n line-height: 1;\n\n &.approve,\n &.approve .icon,\n &.approve .date {\n background-color: var(--md-sys-color-tertiary);\n color: var(--md-sys-color-on-tertiary);\n }\n\n &.request_changes,\n &.request_changes .icon,\n &.request_changes .date {\n background-color: var(--md-sys-color-error);\n color: var(--md-sys-color-on-error);\n }\n`\n"],"names":["AutoHeight","styled","categoryColorCss","$categoryPrimary","$categorySecondary","$categoryTertiary","css","getTextColor","Comment","Footer","Buttons","SubmitButtons","Markdown","Dropzone","Placeholder","VersionReviewButtons","VersionReviewButtonsSpacer","VersionReviewButton","Button","LastOwnVersionReview"],"mappings":";;AAGO,MAAMA,IAAaC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA+BpBC,IAAmB,CAC9BC,GACAC,GACAC,MAEAF,KACAG;AAAA,0BACwBD,CAAiB;AAAA,sBACrBF,CAAgB;AAAA,gCACNC,CAAkB;AAAA,2BACvBG,EAAaJ,CAAgB,CAAC;AAAA,sBACnCA,CAAgB;AAAA,KAGzBK,IAAUP,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUxB,CAAC,EAAE,kBAAAE,GAAkB,oBAAAC,GAAoB,mBAAAC,EAAA,MACzCH,EAAiBC,GAAkBC,GAAoBC,CAAiB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiVlEI,IAASR,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAsBhBS,IAAUT,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAajBU,IAAgBV,EAAOS,CAAO;AAAA;AAAA;AAAA;AAAA,GAM9BE,IAAWX,EAAO;AAAA;AAAA;AAAA,GAKlBY,IAAWZ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA0BlBa,IAAcb,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOrBc,IAAuBd,EAAO;AAAA;AAAA;AAAA;AAAA,GAM9Be,IAA6Bf,EAAO;AAAA;AAAA,GAIpCgB,IAAsBhB,EAAOiB,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqCnCC,IAAuBlB,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../../../_virtual/jsx-runtime.cjs.js"),t=require("react"),d=require("./CommentInput.styled.cjs.js"),o=require("../ActivityDate.cjs.js"),m=require("@ynput/ayon-react-components"),c=require("../ActivityVersionReview/ActivityVersionReview.cjs.js"),R=require("clsx"),v=({separate:a,lastOwnVersionReview:e})=>{const[i,u]=t.useState(new Date);t.useEffect(()=>{const l=setInterval(()=>u(new Date),o.REFRESH_INTERVAL_MS);return()=>clearInterval(l)},[]);const r=t.useMemo(()=>e?.activityData?.feedback,[e]),n=t.useMemo(()=>e?.createdAt?o.getFuzzyDate(new Date(e?.createdAt)).toLowerCase():"",[e?.createdAt,i]);return s.jsxRuntimeExports.jsxs(d.LastOwnVersionReview,{className:R.clsx(r,a?"separate":""),children:[s.jsxRuntimeExports.jsx(m.Icon,{icon:c.getIconForFeedback(r)}),"You last ",c.getVerbForFeedback(r)," ",n," ",n==="just now"?"":"ago"]})};exports.VersionReviewPill=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../../../../_virtual/jsx-runtime.cjs.js"),t=require("react"),l=require("./CommentInput.styled.cjs.js"),s=require("../ActivityDate.cjs.js"),d=require("@ynput/ayon-react-components"),c=require("../ActivityVersionReview/ActivityVersionReview.cjs.js"),m=require("clsx"),R=({lastOwnVersionReview:e})=>{const[a,i]=t.useState(new Date);t.useEffect(()=>{const u=setInterval(()=>i(new Date),s.REFRESH_INTERVAL_MS);return()=>clearInterval(u)},[]);const r=t.useMemo(()=>e?.activityData?.feedback,[e]),n=t.useMemo(()=>e?.createdAt?s.getFuzzyDate(new Date(e?.createdAt)).toLowerCase():"",[e?.createdAt,a]);return o.jsxRuntimeExports.jsxs(l.LastOwnVersionReview,{className:m.clsx(r),children:[o.jsxRuntimeExports.jsx(d.Icon,{icon:c.getIconForFeedback(r)}),"You last ",c.getVerbForFeedback(r)," ",n," ",n==="just now"?"":"ago"]})};exports.VersionReviewPill=R;
2
2
  //# sourceMappingURL=VersionReviewPill.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionReviewPill.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/VersionReviewPill.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\"\n\nimport * as Styled from './CommentInput.styled'\nimport { getFuzzyDate, REFRESH_INTERVAL_MS } from \"../ActivityDate\"\nimport { Icon } from \"@ynput/ayon-react-components\"\nimport { getIconForFeedback, getVerbForFeedback } from \"../ActivityVersionReview/ActivityVersionReview\"\nimport { FeedActivity } from \"@shared/api\"\nimport { clsx } from \"clsx\"\n\ntype Props = {\n separate: boolean\n lastOwnVersionReview: FeedActivity\n}\n\nexport const VersionReviewPill = ({ separate, lastOwnVersionReview }: Props) => {\n // used to update the time since last guest review\n const [now, setNow] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(\n () => setNow(new Date()),\n REFRESH_INTERVAL_MS,\n )\n\n return () => clearInterval(interval)\n }, [])\n\n const lastOwnVersionReviewFeedback = useMemo(() => {\n return lastOwnVersionReview?.activityData?.feedback\n }, [lastOwnVersionReview])\n\n const lastOwnVersionReviewDate = useMemo(\n () => {\n if (!lastOwnVersionReview?.createdAt) return \"\"\n return getFuzzyDate(new Date(lastOwnVersionReview?.createdAt)).toLowerCase()\n },\n [lastOwnVersionReview?.createdAt, now],\n )\n\n return (\n <Styled.LastOwnVersionReview className={clsx(lastOwnVersionReviewFeedback, separate ? \"separate\" : \"\")}>\n <Icon icon={getIconForFeedback(lastOwnVersionReviewFeedback)} />\n You last {\n getVerbForFeedback(lastOwnVersionReviewFeedback)\n } {\n lastOwnVersionReviewDate\n } {lastOwnVersionReviewDate === \"just now\" ? \"\" : \"ago\"}\n </Styled.LastOwnVersionReview>\n )\n}\n"],"names":["VersionReviewPill","separate","lastOwnVersionReview","now","setNow","useState","useEffect","interval","REFRESH_INTERVAL_MS","lastOwnVersionReviewFeedback","useMemo","lastOwnVersionReviewDate","getFuzzyDate","jsxs","Styled.LastOwnVersionReview","clsx","jsx","Icon","getIconForFeedback","getVerbForFeedback"],"mappings":"iXAcaA,EAAoB,CAAC,CAAE,SAAAC,EAAU,qBAAAC,KAAkC,CAE9E,KAAM,CAACC,EAAKC,CAAM,EAAIC,EAAAA,SAAS,IAAI,IAAM,EAEzCC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAW,YACf,IAAMH,EAAO,IAAI,IAAM,EACvBI,EAAAA,mBAAA,EAGF,MAAO,IAAM,cAAcD,CAAQ,CACrC,EAAG,CAAA,CAAE,EAEL,MAAME,EAA+BC,EAAAA,QAAQ,IACpCR,GAAsB,cAAc,SAC1C,CAACA,CAAoB,CAAC,EAEnBS,EAA2BD,EAAAA,QAC/B,IACOR,GAAsB,UACpBU,EAAAA,aAAa,IAAI,KAAKV,GAAsB,SAAS,CAAC,EAAE,YAAA,EADlB,GAG/C,CAACA,GAAsB,UAAWC,CAAG,CAAA,EAGvC,OACEU,yBAACC,EAAAA,qBAAA,CAA4B,UAAWC,EAAAA,KAAKN,EAA8BR,EAAW,WAAa,EAAE,EACnG,SAAA,CAAAe,EAAAA,kBAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMC,EAAAA,mBAAmBT,CAA4B,CAAA,CAAG,EAAE,YAE9DU,EAAAA,mBAAmBV,CAA4B,EAChD,IACCE,EACD,IAAEA,IAA6B,WAAa,GAAK,KAAA,EACpD,CAEJ"}
1
+ {"version":3,"file":"VersionReviewPill.cjs.js","sources":["../../../../../../../src/containers/Feed/components/CommentInput/VersionReviewPill.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\n\nimport * as Styled from './CommentInput.styled'\nimport { getFuzzyDate, REFRESH_INTERVAL_MS } from '../ActivityDate'\nimport { Icon } from '@ynput/ayon-react-components'\nimport {\n getIconForFeedback,\n getVerbForFeedback,\n} from '../ActivityVersionReview/ActivityVersionReview'\nimport { FeedActivity } from '@shared/api'\nimport { clsx } from 'clsx'\n\ntype Props = {\n lastOwnVersionReview: FeedActivity\n}\n\nexport const VersionReviewPill = ({ lastOwnVersionReview }: Props) => {\n // used to update the time since last guest review\n const [now, setNow] = useState(new Date())\n\n useEffect(() => {\n const interval = setInterval(() => setNow(new Date()), REFRESH_INTERVAL_MS)\n\n return () => clearInterval(interval)\n }, [])\n\n const lastOwnVersionReviewFeedback = useMemo(() => {\n return lastOwnVersionReview?.activityData?.feedback\n }, [lastOwnVersionReview])\n\n const lastOwnVersionReviewDate = useMemo(() => {\n if (!lastOwnVersionReview?.createdAt) return ''\n return getFuzzyDate(new Date(lastOwnVersionReview?.createdAt)).toLowerCase()\n }, [lastOwnVersionReview?.createdAt, now])\n\n return (\n <Styled.LastOwnVersionReview className={clsx(lastOwnVersionReviewFeedback)}>\n <Icon icon={getIconForFeedback(lastOwnVersionReviewFeedback)} />\n You last {getVerbForFeedback(lastOwnVersionReviewFeedback)} {lastOwnVersionReviewDate}{' '}\n {lastOwnVersionReviewDate === 'just now' ? '' : 'ago'}\n </Styled.LastOwnVersionReview>\n )\n}\n"],"names":["VersionReviewPill","lastOwnVersionReview","now","setNow","useState","useEffect","interval","REFRESH_INTERVAL_MS","lastOwnVersionReviewFeedback","useMemo","lastOwnVersionReviewDate","getFuzzyDate","Styled.LastOwnVersionReview","clsx","jsx","Icon","getIconForFeedback","getVerbForFeedback"],"mappings":"iXAgBaA,EAAoB,CAAC,CAAE,qBAAAC,KAAkC,CAEpE,KAAM,CAACC,EAAKC,CAAM,EAAIC,EAAAA,SAAS,IAAI,IAAM,EAEzCC,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAW,YAAY,IAAMH,MAAW,IAAM,EAAGI,qBAAmB,EAE1E,MAAO,IAAM,cAAcD,CAAQ,CACrC,EAAG,CAAA,CAAE,EAEL,MAAME,EAA+BC,EAAAA,QAAQ,IACpCR,GAAsB,cAAc,SAC1C,CAACA,CAAoB,CAAC,EAEnBS,EAA2BD,EAAAA,QAAQ,IAClCR,GAAsB,UACpBU,EAAAA,aAAa,IAAI,KAAKV,GAAsB,SAAS,CAAC,EAAE,YAAA,EADlB,GAE5C,CAACA,GAAsB,UAAWC,CAAG,CAAC,EAEzC,gCACGU,EAAAA,qBAAA,CAA4B,UAAWC,EAAAA,KAAKL,CAA4B,EACvE,SAAA,CAAAM,EAAAA,kBAAAA,IAACC,EAAAA,KAAA,CAAK,KAAMC,EAAAA,mBAAmBR,CAA4B,CAAA,CAAG,EAAE,YACtDS,EAAAA,mBAAmBT,CAA4B,EAAE,IAAEE,EAA0B,IACtFA,IAA6B,WAAa,GAAK,KAAA,EAClD,CAEJ"}
@@ -1,27 +1,21 @@
1
1
  import { j as o } from "../../../../../../_virtual/jsx-runtime.es.js";
2
- import { useState as i, useEffect as u, useMemo as a } from "react";
3
- import { LastOwnVersionReview as f } from "./CommentInput.styled.es.js";
4
- import { REFRESH_INTERVAL_MS as p, getFuzzyDate as d } from "../ActivityDate.es.js";
5
- import { Icon as l } from "@ynput/ayon-react-components";
6
- import { getIconForFeedback as F, getVerbForFeedback as w } from "../ActivityVersionReview/ActivityVersionReview.es.js";
7
- import { clsx as x } from "clsx";
8
- const v = ({ separate: n, lastOwnVersionReview: e }) => {
9
- const [s, c] = i(/* @__PURE__ */ new Date());
10
- u(() => {
11
- const m = setInterval(
12
- () => c(/* @__PURE__ */ new Date()),
13
- p
14
- );
15
- return () => clearInterval(m);
2
+ import { useState as m, useEffect as i, useMemo as a } from "react";
3
+ import { LastOwnVersionReview as u } from "./CommentInput.styled.es.js";
4
+ import { REFRESH_INTERVAL_MS as f, getFuzzyDate as p } from "../ActivityDate.es.js";
5
+ import { Icon as d } from "@ynput/ayon-react-components";
6
+ import { getIconForFeedback as l, getVerbForFeedback as F } from "../ActivityVersionReview/ActivityVersionReview.es.js";
7
+ import { clsx as w } from "clsx";
8
+ const k = ({ lastOwnVersionReview: e }) => {
9
+ const [n, c] = m(/* @__PURE__ */ new Date());
10
+ i(() => {
11
+ const s = setInterval(() => c(/* @__PURE__ */ new Date()), f);
12
+ return () => clearInterval(s);
16
13
  }, []);
17
- const t = a(() => e?.activityData?.feedback, [e]), r = a(
18
- () => e?.createdAt ? d(new Date(e?.createdAt)).toLowerCase() : "",
19
- [e?.createdAt, s]
20
- );
21
- return /* @__PURE__ */ o.jsxs(f, { className: x(t, n ? "separate" : ""), children: [
22
- /* @__PURE__ */ o.jsx(l, { icon: F(t) }),
14
+ const t = a(() => e?.activityData?.feedback, [e]), r = a(() => e?.createdAt ? p(new Date(e?.createdAt)).toLowerCase() : "", [e?.createdAt, n]);
15
+ return /* @__PURE__ */ o.jsxs(u, { className: w(t), children: [
16
+ /* @__PURE__ */ o.jsx(d, { icon: l(t) }),
23
17
  "You last ",
24
- w(t),
18
+ F(t),
25
19
  " ",
26
20
  r,
27
21
  " ",
@@ -29,6 +23,6 @@ const v = ({ separate: n, lastOwnVersionReview: e }) => {
29
23
  ] });
30
24
  };
31
25
  export {
32
- v as VersionReviewPill
26
+ k as VersionReviewPill
33
27
  };
34
28
  //# sourceMappingURL=VersionReviewPill.es.js.map