@drodil/backstage-plugin-qeta-react 3.36.3 → 3.37.1
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.
|
@@ -145,6 +145,13 @@ const MarkdownEditor = (props) => {
|
|
|
145
145
|
const entities = await catalogApi.queryEntities({
|
|
146
146
|
filter: { kind: enabledMentionKinds },
|
|
147
147
|
limit: 5,
|
|
148
|
+
fields: [
|
|
149
|
+
"metadata.name",
|
|
150
|
+
"metadata.namespace",
|
|
151
|
+
"kind",
|
|
152
|
+
"metadata.title",
|
|
153
|
+
"spec.profile.displayName"
|
|
154
|
+
],
|
|
148
155
|
fullTextFilter: {
|
|
149
156
|
term: text,
|
|
150
157
|
fields: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.esm.js","sources":["../../../src/components/MarkdownEditor/MarkdownEditor.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport { useState } from 'react';\nimport ReactMde from 'react-mde';\nimport 'react-mde/lib/styles/css/react-mde.css';\nimport 'react-mde/lib/styles/css/react-mde-editor.css';\nimport 'react-mde/lib/styles/css/react-mde-toolbar.css';\nimport { configApiRef, errorApiRef, useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { imageUpload } from '../../utils';\nimport { makeStyles } from '@material-ui/core';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport {\n Entity,\n GroupEntity,\n stringifyEntityRef,\n UserEntity,\n} from '@backstage/catalog-model';\nimport { findTagMentions } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nexport type QetaMarkdownEditorClassKey =\n | 'markdownEditor'\n | 'markdownEditorError'\n | 'markdownPreview'\n | 'suggestionsDropdown';\n\nexport const useStyles = makeStyles(\n theme => {\n return {\n markdownEditor: {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n border: `1px solid ${theme.palette.action.disabled}`,\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n borderColor: theme.palette.action.active,\n },\n '&:focus-within': {\n borderColor: theme.palette.primary.main,\n },\n '& .mde-header': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n borderBottom: `1px solid ${theme.palette.action.selected}`,\n '& .mde-tabs button, .mde-header-item > button': {\n color: `${theme.palette.text.primary} !important`,\n },\n },\n '& .mde-preview-content': {\n padding: '10px',\n },\n '& .mde-text, .mde-preview': {\n fontSize: theme.typography.body1.fontSize,\n fontFamily: theme.typography.body1.fontFamily,\n lineHeight: theme.typography.body1.lineHeight,\n },\n '& .mde-text': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n outline: 'none',\n },\n '& .image-tip': {\n color: theme.palette.text.primary,\n backgroundColor: 'initial',\n },\n },\n markdownEditorError: {\n border: `1px solid ${theme.palette.error.main} !important`,\n },\n markdownPreview: {\n '& *': {\n wordBreak: 'break-word',\n },\n '&.inline': {\n display: 'inline-block',\n },\n '& > :first-child': {\n marginTop: '0px !important',\n },\n '& > :last-child': {\n marginBottom: '0px !important',\n },\n },\n suggestionsDropdown: {\n position: 'absolute',\n minWidth: '180px',\n margin: '20px 0 0',\n listStyle: 'none',\n padding: '0',\n cursor: 'pointer',\n background: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n '& li': {\n width: '100%',\n padding: '0.5rem',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n hide: {\n display: 'none',\n },\n };\n },\n { name: 'QetaMarkdownEditor' },\n);\n\nexport type MarkdownEditorProps = {\n value: string;\n onChange: (value: string) => void;\n onTagsChange?: (tags: string[]) => void;\n height: number;\n name?: string;\n error?: boolean;\n placeholder?: string;\n onImageUpload?: (imageId: number) => void;\n disableToolbar?: boolean;\n disableAttachments?: boolean;\n disablePreview?: boolean;\n postId?: number;\n disabled?: boolean;\n answerId?: number;\n collectionId?: number;\n autoFocus?: boolean;\n required?: boolean;\n};\n\nconst NO_SUGGESTIONS = [{ preview: 'No suggestions', value: '' }];\n\nexport const MarkdownEditor = (props: MarkdownEditorProps) => {\n const {\n value,\n onChange,\n height,\n disabled,\n error,\n placeholder,\n disableAttachments,\n onTagsChange,\n name,\n disableToolbar,\n disablePreview,\n postId,\n answerId,\n collectionId,\n autoFocus,\n required = true,\n } = props;\n const [selectedTab, setSelectedTab] = useState<'write' | 'preview'>('write');\n const styles = useStyles();\n const errorApi = useApi(errorApiRef);\n const qetaApi = useApi(qetaApiRef);\n const catalogApi = useApi(catalogApiRef);\n const config = useApi(configApiRef);\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const supportedMentionKinds = config.getOptionalStringArray(\n 'qeta.mentions.supportedKinds',\n ) || ['user'];\n const enabledMentionKinds = supportedMentionKinds.filter(kind =>\n ['user', 'group'].includes(kind.toLowerCase()),\n );\n const maxTags = config.getOptionalNumber('qeta.tags.max') ?? 5;\n\n const suggestionChars: string[] = [];\n if (enabledMentionKinds.length > 0) {\n suggestionChars.push('@');\n }\n if (maxTags > 0) {\n suggestionChars.push('#');\n }\n\n const loadEntitySuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const entities = await catalogApi.queryEntities({\n filter: { kind: enabledMentionKinds },\n limit: 5,\n fullTextFilter: {\n term: text,\n fields: [\n 'metadata.name',\n 'metadata.title',\n 'spec.profile.displayName',\n 'spec.profile.email',\n ],\n },\n });\n\n if (entities.items.length === 0) {\n return NO_SUGGESTIONS;\n }\n\n return entities.items.map(entity => {\n const mentionEntity = entity as Entity & (UserEntity | GroupEntity);\n return {\n preview:\n mentionEntity.spec?.profile?.displayName ??\n mentionEntity.metadata.title ??\n mentionEntity.metadata.name,\n value: `@${stringifyEntityRef(entity)}`,\n };\n });\n };\n\n const loadTagSuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const tags = await qetaApi.getTags({ searchQuery: text });\n if (tags.tags.length === 0) {\n return NO_SUGGESTIONS;\n }\n return tags.tags.map(tag => {\n return {\n preview: tag.tag,\n value: `#${tag.tag}`,\n };\n });\n };\n\n const loadSuggestions = async (text: string, triggeredBy: string) => {\n if (!text || !triggeredBy) {\n return NO_SUGGESTIONS;\n }\n if (triggeredBy === '@') {\n return loadEntitySuggestions(text);\n }\n if (triggeredBy === '#') {\n return loadTagSuggestions(text);\n }\n return NO_SUGGESTIONS;\n };\n\n const isUploadDisabled =\n config?.getOptionalBoolean('qeta.storage.disabled') ||\n disableAttachments ||\n false;\n\n return (\n <ReactMde\n classes={{\n reactMde: `qetaMarkdownEditorEdit ${styles.markdownEditor}`,\n textArea: error\n ? `qetaMarkdownEditorError ${styles.markdownEditorError}`\n : undefined,\n preview: 'qetaMarkdownEditorPreview',\n toolbar: `${\n disableToolbar ? styles.hide : ''\n } qetaMarkdownEditorToolbar`,\n suggestionsDropdown: styles.suggestionsDropdown,\n }}\n disablePreview={disablePreview}\n value={value}\n onChange={onChange}\n selectedTab={selectedTab}\n onTabChange={setSelectedTab}\n minEditorHeight={height}\n l18n={{\n write: t('markdownEditor.write'),\n preview: t('markdownEditor.preview'),\n uploadingImage: t('markdownEditor.uploadingImage'),\n pasteDropSelect: t('markdownEditor.pasteDropSelect'),\n }}\n minPreviewHeight={height - 10}\n childProps={{\n textArea: {\n required,\n placeholder,\n disabled,\n autoFocus,\n name,\n onBlur: () => {\n if (onTagsChange) {\n onTagsChange(findTagMentions(value).map(tag => tag.slice(1)));\n }\n },\n },\n }}\n suggestionTriggerCharacters={suggestionChars}\n loadSuggestions={loadSuggestions}\n suggestionsAutoplace\n generateMarkdownPreview={content =>\n Promise.resolve(\n <MarkdownRenderer\n content={content}\n className={`qetaMarkdownEditorPreview ${styles.markdownPreview}`}\n useBlankLinks\n />,\n )\n }\n paste={\n isUploadDisabled\n ? undefined\n : {\n saveImage: imageUpload({\n qetaApi,\n errorApi,\n onImageUpload: props.onImageUpload,\n postId,\n answerId,\n collectionId,\n }),\n }\n }\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA4BO,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,CAAS,KAAA,KAAA;AACP,IAAO,OAAA;AAAA,MACL,cAAgB,EAAA;AAAA,QACd,eAAiB,EAAA,SAAA;AAAA,QACjB,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,OAAA;AAAA,QAC1B,MAAQ,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,QAClD,YAAA,EAAc,MAAM,KAAM,CAAA,YAAA;AAAA,QAC1B,SAAW,EAAA;AAAA,UACT,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,MAAO,CAAA;AAAA,SACpC;AAAA,QACA,gBAAkB,EAAA;AAAA,UAChB,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA;AAAA,SACrC;AAAA,QACA,eAAiB,EAAA;AAAA,UACf,eAAiB,EAAA,SAAA;AAAA,UACjB,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,OAAA;AAAA,UAC1B,YAAc,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,UACxD,+CAAiD,EAAA;AAAA,YAC/C,KAAO,EAAA,CAAA,EAAG,KAAM,CAAA,OAAA,CAAQ,KAAK,OAAO,CAAA,WAAA;AAAA;AACtC,SACF;AAAA,QACA,wBAA0B,EAAA;AAAA,UACxB,OAAS,EAAA;AAAA,SACX;AAAA,QACA,2BAA6B,EAAA;AAAA,UAC3B,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,QAAA;AAAA,UACjC,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,UAAA;AAAA,UACnC,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA;AAAA,SACrC;AAAA,QACA,aAAe,EAAA;AAAA,UACb,eAAiB,EAAA,SAAA;AAAA,UACjB,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,OAAA;AAAA,UAC1B,OAAS,EAAA;AAAA,SACX;AAAA,QACA,cAAgB,EAAA;AAAA,UACd,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,OAAA;AAAA,UAC1B,eAAiB,EAAA;AAAA;AACnB,OACF;AAAA,MACA,mBAAqB,EAAA;AAAA,QACnB,MAAQ,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,MAAM,IAAI,CAAA,WAAA;AAAA,OAC/C;AAAA,MACA,eAAiB,EAAA;AAAA,QACf,KAAO,EAAA;AAAA,UACL,SAAW,EAAA;AAAA,SACb;AAAA,QACA,UAAY,EAAA;AAAA,UACV,OAAS,EAAA;AAAA,SACX;AAAA,QACA,kBAAoB,EAAA;AAAA,UAClB,SAAW,EAAA;AAAA,SACb;AAAA,QACA,iBAAmB,EAAA;AAAA,UACjB,YAAc,EAAA;AAAA;AAChB,OACF;AAAA,MACA,mBAAqB,EAAA;AAAA,QACnB,QAAU,EAAA,UAAA;AAAA,QACV,QAAU,EAAA,OAAA;AAAA,QACV,MAAQ,EAAA,UAAA;AAAA,QACR,SAAW,EAAA,MAAA;AAAA,QACX,OAAS,EAAA,GAAA;AAAA,QACT,MAAQ,EAAA,SAAA;AAAA,QACR,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA,KAAA;AAAA,QACrC,MAAQ,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,OAAO,CAAA,CAAA;AAAA,QAC1C,YAAA,EAAc,MAAM,KAAM,CAAA,YAAA;AAAA,QAC1B,MAAQ,EAAA;AAAA,UACN,KAAO,EAAA,MAAA;AAAA,UACP,OAAS,EAAA,QAAA;AAAA,UACT,SAAW,EAAA;AAAA,YACT,eAAA,EAAiB,KAAM,CAAA,OAAA,CAAQ,MAAO,CAAA;AAAA;AACxC;AACF,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,OAAS,EAAA;AAAA;AACX,KACF;AAAA,GACF;AAAA,EACA,EAAE,MAAM,oBAAqB;AAC/B;AAsBA,MAAM,iBAAiB,CAAC,EAAE,SAAS,gBAAkB,EAAA,KAAA,EAAO,IAAI,CAAA;AAEnD,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAC5D,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAW,GAAA;AAAA,GACT,GAAA,KAAA;AACJ,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAA8B,OAAO,CAAA;AAC3E,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAM,MAAA,OAAA,GAAU,OAAO,UAAU,CAAA;AACjC,EAAM,MAAA,UAAA,GAAa,OAAO,aAAa,CAAA;AACvC,EAAM,MAAA,MAAA,GAAS,OAAO,YAAY,CAAA;AAClC,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,MAAM,wBAAwB,MAAO,CAAA,sBAAA;AAAA,IACnC;AAAA,GACF,IAAK,CAAC,MAAM,CAAA;AACZ,EAAA,MAAM,sBAAsB,qBAAsB,CAAA,MAAA;AAAA,IAAO,CAAA,IAAA,KACvD,CAAC,MAAQ,EAAA,OAAO,EAAE,QAAS,CAAA,IAAA,CAAK,aAAa;AAAA,GAC/C;AACA,EAAA,MAAM,OAAU,GAAA,MAAA,CAAO,iBAAkB,CAAA,eAAe,CAAK,IAAA,CAAA;AAE7D,EAAA,MAAM,kBAA4B,EAAC;AACnC,EAAI,IAAA,mBAAA,CAAoB,SAAS,CAAG,EAAA;AAClC,IAAA,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA;AAE1B,EAAA,IAAI,UAAU,CAAG,EAAA;AACf,IAAA,eAAA,CAAgB,KAAK,GAAG,CAAA;AAAA;AAG1B,EAAM,MAAA,qBAAA,GAAwB,OAAO,IAAiB,KAAA;AACpD,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAO,OAAA,cAAA;AAAA;AAET,IAAM,MAAA,QAAA,GAAW,MAAM,UAAA,CAAW,aAAc,CAAA;AAAA,MAC9C,MAAA,EAAQ,EAAE,IAAA,EAAM,mBAAoB,EAAA;AAAA,MACpC,KAAO,EAAA,CAAA;AAAA,MACP,cAAgB,EAAA;AAAA,QACd,IAAM,EAAA,IAAA;AAAA,QACN,MAAQ,EAAA;AAAA,UACN,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,0BAAA;AAAA,UACA;AAAA;AACF;AACF,KACD,CAAA;AAED,IAAI,IAAA,QAAA,CAAS,KAAM,CAAA,MAAA,KAAW,CAAG,EAAA;AAC/B,MAAO,OAAA,cAAA;AAAA;AAGT,IAAO,OAAA,QAAA,CAAS,KAAM,CAAA,GAAA,CAAI,CAAU,MAAA,KAAA;AAClC,MAAA,MAAM,aAAgB,GAAA,MAAA;AACtB,MAAO,OAAA;AAAA,QACL,OAAA,EACE,cAAc,IAAM,EAAA,OAAA,EAAS,eAC7B,aAAc,CAAA,QAAA,CAAS,KACvB,IAAA,aAAA,CAAc,QAAS,CAAA,IAAA;AAAA,QACzB,KAAO,EAAA,CAAA,CAAA,EAAI,kBAAmB,CAAA,MAAM,CAAC,CAAA;AAAA,OACvC;AAAA,KACD,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,kBAAA,GAAqB,OAAO,IAAiB,KAAA;AACjD,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAO,OAAA,cAAA;AAAA;AAET,IAAA,MAAM,OAAO,MAAM,OAAA,CAAQ,QAAQ,EAAE,WAAA,EAAa,MAAM,CAAA;AACxD,IAAI,IAAA,IAAA,CAAK,IAAK,CAAA,MAAA,KAAW,CAAG,EAAA;AAC1B,MAAO,OAAA,cAAA;AAAA;AAET,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,GAAA,CAAI,CAAO,GAAA,KAAA;AAC1B,MAAO,OAAA;AAAA,QACL,SAAS,GAAI,CAAA,GAAA;AAAA,QACb,KAAA,EAAO,CAAI,CAAA,EAAA,GAAA,CAAI,GAAG,CAAA;AAAA,OACpB;AAAA,KACD,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,eAAA,GAAkB,OAAO,IAAA,EAAc,WAAwB,KAAA;AACnE,IAAI,IAAA,CAAC,IAAQ,IAAA,CAAC,WAAa,EAAA;AACzB,MAAO,OAAA,cAAA;AAAA;AAET,IAAA,IAAI,gBAAgB,GAAK,EAAA;AACvB,MAAA,OAAO,sBAAsB,IAAI,CAAA;AAAA;AAEnC,IAAA,IAAI,gBAAgB,GAAK,EAAA;AACvB,MAAA,OAAO,mBAAmB,IAAI,CAAA;AAAA;AAEhC,IAAO,OAAA,cAAA;AAAA,GACT;AAEA,EAAA,MAAM,gBACJ,GAAA,MAAA,EAAQ,kBAAmB,CAAA,uBAAuB,KAClD,kBACA,IAAA,KAAA;AAEF,EACE,uBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA;AAAA,QACP,QAAA,EAAU,CAA0B,uBAAA,EAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAAA,QACzD,QAAU,EAAA,KAAA,GACN,CAA2B,wBAAA,EAAA,MAAA,CAAO,mBAAmB,CACrD,CAAA,GAAA,KAAA,CAAA;AAAA,QACJ,OAAS,EAAA,2BAAA;AAAA,QACT,OAAS,EAAA,CAAA,EACP,cAAiB,GAAA,MAAA,CAAO,OAAO,EACjC,CAAA,0BAAA,CAAA;AAAA,QACA,qBAAqB,MAAO,CAAA;AAAA,OAC9B;AAAA,MACA,cAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAa,EAAA,cAAA;AAAA,MACb,eAAiB,EAAA,MAAA;AAAA,MACjB,IAAM,EAAA;AAAA,QACJ,KAAA,EAAO,EAAE,sBAAsB,CAAA;AAAA,QAC/B,OAAA,EAAS,EAAE,wBAAwB,CAAA;AAAA,QACnC,cAAA,EAAgB,EAAE,+BAA+B,CAAA;AAAA,QACjD,eAAA,EAAiB,EAAE,gCAAgC;AAAA,OACrD;AAAA,MACA,kBAAkB,MAAS,GAAA,EAAA;AAAA,MAC3B,UAAY,EAAA;AAAA,QACV,QAAU,EAAA;AAAA,UACR,QAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAQ,MAAM;AACZ,YAAA,IAAI,YAAc,EAAA;AAChB,cAAa,YAAA,CAAA,eAAA,CAAgB,KAAK,CAAE,CAAA,GAAA,CAAI,SAAO,GAAI,CAAA,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA;AAC9D;AACF;AACF,OACF;AAAA,MACA,2BAA6B,EAAA,eAAA;AAAA,MAC7B,eAAA;AAAA,MACA,oBAAoB,EAAA,IAAA;AAAA,MACpB,uBAAA,EAAyB,aACvB,OAAQ,CAAA,OAAA;AAAA,wBACN,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,SAAA,EAAW,CAA6B,0BAAA,EAAA,MAAA,CAAO,eAAe,CAAA,CAAA;AAAA,YAC9D,aAAa,EAAA;AAAA;AAAA;AACf,OACF;AAAA,MAEF,KAAA,EACE,mBACI,KACA,CAAA,GAAA;AAAA,QACE,WAAW,WAAY,CAAA;AAAA,UACrB,OAAA;AAAA,UACA,QAAA;AAAA,UACA,eAAe,KAAM,CAAA,aAAA;AAAA,UACrB,MAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD;AAAA;AACH;AAAA,GAER;AAEJ;;;;"}
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.esm.js","sources":["../../../src/components/MarkdownEditor/MarkdownEditor.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport { useState } from 'react';\nimport ReactMde from 'react-mde';\nimport 'react-mde/lib/styles/css/react-mde.css';\nimport 'react-mde/lib/styles/css/react-mde-editor.css';\nimport 'react-mde/lib/styles/css/react-mde-toolbar.css';\nimport { configApiRef, errorApiRef, useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { imageUpload } from '../../utils';\nimport { makeStyles } from '@material-ui/core';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport {\n Entity,\n GroupEntity,\n stringifyEntityRef,\n UserEntity,\n} from '@backstage/catalog-model';\nimport { findTagMentions } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nexport type QetaMarkdownEditorClassKey =\n | 'markdownEditor'\n | 'markdownEditorError'\n | 'markdownPreview'\n | 'suggestionsDropdown';\n\nexport const useStyles = makeStyles(\n theme => {\n return {\n markdownEditor: {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n border: `1px solid ${theme.palette.action.disabled}`,\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n borderColor: theme.palette.action.active,\n },\n '&:focus-within': {\n borderColor: theme.palette.primary.main,\n },\n '& .mde-header': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n borderBottom: `1px solid ${theme.palette.action.selected}`,\n '& .mde-tabs button, .mde-header-item > button': {\n color: `${theme.palette.text.primary} !important`,\n },\n },\n '& .mde-preview-content': {\n padding: '10px',\n },\n '& .mde-text, .mde-preview': {\n fontSize: theme.typography.body1.fontSize,\n fontFamily: theme.typography.body1.fontFamily,\n lineHeight: theme.typography.body1.lineHeight,\n },\n '& .mde-text': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n outline: 'none',\n },\n '& .image-tip': {\n color: theme.palette.text.primary,\n backgroundColor: 'initial',\n },\n },\n markdownEditorError: {\n border: `1px solid ${theme.palette.error.main} !important`,\n },\n markdownPreview: {\n '& *': {\n wordBreak: 'break-word',\n },\n '&.inline': {\n display: 'inline-block',\n },\n '& > :first-child': {\n marginTop: '0px !important',\n },\n '& > :last-child': {\n marginBottom: '0px !important',\n },\n },\n suggestionsDropdown: {\n position: 'absolute',\n minWidth: '180px',\n margin: '20px 0 0',\n listStyle: 'none',\n padding: '0',\n cursor: 'pointer',\n background: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n '& li': {\n width: '100%',\n padding: '0.5rem',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n hide: {\n display: 'none',\n },\n };\n },\n { name: 'QetaMarkdownEditor' },\n);\n\nexport type MarkdownEditorProps = {\n value: string;\n onChange: (value: string) => void;\n onTagsChange?: (tags: string[]) => void;\n height: number;\n name?: string;\n error?: boolean;\n placeholder?: string;\n onImageUpload?: (imageId: number) => void;\n disableToolbar?: boolean;\n disableAttachments?: boolean;\n disablePreview?: boolean;\n postId?: number;\n disabled?: boolean;\n answerId?: number;\n collectionId?: number;\n autoFocus?: boolean;\n required?: boolean;\n};\n\nconst NO_SUGGESTIONS = [{ preview: 'No suggestions', value: '' }];\n\nexport const MarkdownEditor = (props: MarkdownEditorProps) => {\n const {\n value,\n onChange,\n height,\n disabled,\n error,\n placeholder,\n disableAttachments,\n onTagsChange,\n name,\n disableToolbar,\n disablePreview,\n postId,\n answerId,\n collectionId,\n autoFocus,\n required = true,\n } = props;\n const [selectedTab, setSelectedTab] = useState<'write' | 'preview'>('write');\n const styles = useStyles();\n const errorApi = useApi(errorApiRef);\n const qetaApi = useApi(qetaApiRef);\n const catalogApi = useApi(catalogApiRef);\n const config = useApi(configApiRef);\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const supportedMentionKinds = config.getOptionalStringArray(\n 'qeta.mentions.supportedKinds',\n ) || ['user'];\n const enabledMentionKinds = supportedMentionKinds.filter(kind =>\n ['user', 'group'].includes(kind.toLowerCase()),\n );\n const maxTags = config.getOptionalNumber('qeta.tags.max') ?? 5;\n\n const suggestionChars: string[] = [];\n if (enabledMentionKinds.length > 0) {\n suggestionChars.push('@');\n }\n if (maxTags > 0) {\n suggestionChars.push('#');\n }\n\n const loadEntitySuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const entities = await catalogApi.queryEntities({\n filter: { kind: enabledMentionKinds },\n limit: 5,\n fields: [\n 'metadata.name',\n 'metadata.namespace',\n 'kind',\n 'metadata.title',\n 'spec.profile.displayName',\n ],\n fullTextFilter: {\n term: text,\n fields: [\n 'metadata.name',\n 'metadata.title',\n 'spec.profile.displayName',\n 'spec.profile.email',\n ],\n },\n });\n\n if (entities.items.length === 0) {\n return NO_SUGGESTIONS;\n }\n\n return entities.items.map(entity => {\n const mentionEntity = entity as Entity & (UserEntity | GroupEntity);\n return {\n preview:\n mentionEntity.spec?.profile?.displayName ??\n mentionEntity.metadata.title ??\n mentionEntity.metadata.name,\n value: `@${stringifyEntityRef(entity)}`,\n };\n });\n };\n\n const loadTagSuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const tags = await qetaApi.getTags({ searchQuery: text });\n if (tags.tags.length === 0) {\n return NO_SUGGESTIONS;\n }\n return tags.tags.map(tag => {\n return {\n preview: tag.tag,\n value: `#${tag.tag}`,\n };\n });\n };\n\n const loadSuggestions = async (text: string, triggeredBy: string) => {\n if (!text || !triggeredBy) {\n return NO_SUGGESTIONS;\n }\n if (triggeredBy === '@') {\n return loadEntitySuggestions(text);\n }\n if (triggeredBy === '#') {\n return loadTagSuggestions(text);\n }\n return NO_SUGGESTIONS;\n };\n\n const isUploadDisabled =\n config?.getOptionalBoolean('qeta.storage.disabled') ||\n disableAttachments ||\n false;\n\n return (\n <ReactMde\n classes={{\n reactMde: `qetaMarkdownEditorEdit ${styles.markdownEditor}`,\n textArea: error\n ? `qetaMarkdownEditorError ${styles.markdownEditorError}`\n : undefined,\n preview: 'qetaMarkdownEditorPreview',\n toolbar: `${\n disableToolbar ? styles.hide : ''\n } qetaMarkdownEditorToolbar`,\n suggestionsDropdown: styles.suggestionsDropdown,\n }}\n disablePreview={disablePreview}\n value={value}\n onChange={onChange}\n selectedTab={selectedTab}\n onTabChange={setSelectedTab}\n minEditorHeight={height}\n l18n={{\n write: t('markdownEditor.write'),\n preview: t('markdownEditor.preview'),\n uploadingImage: t('markdownEditor.uploadingImage'),\n pasteDropSelect: t('markdownEditor.pasteDropSelect'),\n }}\n minPreviewHeight={height - 10}\n childProps={{\n textArea: {\n required,\n placeholder,\n disabled,\n autoFocus,\n name,\n onBlur: () => {\n if (onTagsChange) {\n onTagsChange(findTagMentions(value).map(tag => tag.slice(1)));\n }\n },\n },\n }}\n suggestionTriggerCharacters={suggestionChars}\n loadSuggestions={loadSuggestions}\n suggestionsAutoplace\n generateMarkdownPreview={content =>\n Promise.resolve(\n <MarkdownRenderer\n content={content}\n className={`qetaMarkdownEditorPreview ${styles.markdownPreview}`}\n useBlankLinks\n />,\n )\n }\n paste={\n isUploadDisabled\n ? undefined\n : {\n saveImage: imageUpload({\n qetaApi,\n errorApi,\n onImageUpload: props.onImageUpload,\n postId,\n answerId,\n collectionId,\n }),\n }\n }\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"frontend",
|
|
8
8
|
"backstage.io"
|
|
9
9
|
],
|
|
10
|
-
"version": "3.
|
|
10
|
+
"version": "3.37.1",
|
|
11
11
|
"main": "dist/index.esm.js",
|
|
12
12
|
"types": "dist/index.d.ts",
|
|
13
13
|
"prepublishOnly": "yarn tsc && yarn build",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@backstage/plugin-permission-common": "^0.9.1",
|
|
58
58
|
"@backstage/plugin-permission-react": "^0.4.36",
|
|
59
59
|
"@backstage/plugin-signals-react": "^0.0.15",
|
|
60
|
-
"@drodil/backstage-plugin-qeta-common": "^3.
|
|
60
|
+
"@drodil/backstage-plugin-qeta-common": "^3.37.1",
|
|
61
61
|
"@jsdevtools/rehype-toc": "^3.0.2",
|
|
62
62
|
"@material-ui/core": "^4.12.2",
|
|
63
63
|
"@material-ui/icons": "^4.11.3",
|