{"version":3,"file":"static/js/components.958ac53a.js","mappings":"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,IACrB,MAAM,QAAEkS,GAAYlS,EAWpB,GATgB,KAAZkS,GAAkBJ,EAAS,IAC7B9R,EAAEgL,iBACF+G,EAAUD,EAAS,IAEL,KAAZI,GAAkBJ,EAASjN,EAAQ7H,OAAS,IAC9CgD,EAAEgL,iBAEF+G,EAAUD,EAAS,IAEL,KAAZI,GAAkBJ,GAAU,GAAKA,GAAUjN,EAAQ7H,OAAS,EAAG,CACjE,MAAMmV,EAAOtN,EAAQiE,QAAQkJ,IAC3BzW,GAA+B,IAAvByW,EAAI7E,QAAQ5R,KACpBuW,GAEFD,GAAc,GACdF,EAASQ,EACV,GAQD,WACE,SAACC,EAAA,EAAD,CACE9W,KAAK,SACLC,MAAOA,EACP0J,YAAaA,EACbzJ,SAAWwE,IACT6R,GAAc,GACVrW,aAAoB2O,UACtB3O,EAASwE,EACV,IAGJ0K,EAAO1N,OAAS,IACf,SAAC,SAAD,CACE8B,KAAMvD,GAASqW,EACfhW,UAAU,4BACVwJ,MAAO,CAAEiN,UAAW,OAAQC,UAAW,SAHzC,SAIG5H,EAAOzN,KAAI,CAAC+U,EAAK/N,KAEd,SAAC,SAAD,CAEErI,UAAY,IAAEkW,IAAW7N,EAAQ,SAAW,IAC5CzH,QAAUwD,IACRA,EAAEgL,iBACF6G,GAAc,GACdF,EAASK,EAAT,EANJ,SAQGA,GAPIA,SArBnB,ECzCIO,EAAmB,CACvB,OACA,KACA,MACA,IACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,SACA,KACA,SACA,KACA,UACA,MACA,SACA,eACA,OACA,OACA,MACA,OACA,MACA,SACA,KACA,SACA,KACA,UACA,OACA,MACA,MACA,QACA,MACA,OACA,MACA,MACA,QACA,MACA,MACA,OACA,QACA,MACA,OACA,OACA,MACA,KACA,aACA,MACA,MACA,MACA,OACA,SACA,KACA,QACA,MACA,OACA,OACA,MACA,WACA,KACA,MACA,WACA,KACA,SACA,MACA,SACA,aACA,KACA,OACA,QACA,QACA,KACA,SACA,SACA,MACA,MACA,MACA,aACA,UACA,MACA,MACA,KACA,OACA,KACA,MACA,OACA,OACA,OACA,OACA,O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","sources":["components/BrandUpload/index.tsx","components/HotQuestions/index.tsx","components/Modal/Modal.tsx","components/Modal/Confirm.tsx","components/Modal/LoginToContinueModal.tsx","components/Modal/index.tsx","components/QuestionList/index.tsx","components/SchemaForm/components/Legend.tsx","components/SchemaForm/components/Select.tsx","components/SchemaForm/components/Check.tsx","components/SchemaForm/components/Switch.tsx","components/TimeZonePicker/index.tsx","components/SchemaForm/components/Timezone.tsx","components/SchemaForm/components/Upload.tsx","components/SchemaForm/components/Textarea.tsx","components/SchemaForm/components/Input.tsx","components/SchemaForm/components/Button.tsx","components/SchemaForm/components/InputGroup.tsx","components/SchemaForm/index.tsx","components/Avatar/index.tsx","components/PluginRender/index.tsx","components/Editor/EditorContext.ts","components/Editor/toolItem.tsx","components/Editor/ToolBars/table.tsx","components/Editor/ToolBars/ol.tsx","components/Editor/ToolBars/ul.tsx","components/Editor/ToolBars/indent.tsx","components/Editor/ToolBars/outdent.tsx","components/Editor/ToolBars/hr.tsx","components/Editor/ToolBars/heading.tsx","components/Editor/ToolBars/bold.tsx","components/Editor/ToolBars/italic.tsx","components/Editor/Select/index.tsx","components/Editor/ToolBars/code.tsx","components/Editor/ToolBars/link.tsx","components/Editor/ToolBars/blockquote.tsx","components/Editor/ToolBars/image.tsx","components/Editor/ToolBars/help.tsx","components/Editor/utils/index.ts","components/ImgViewer/index.tsx","components/Editor/Viewer.tsx","components/Editor/index.tsx","components/Header/components/NavItems/index.tsx","components/Header/index.tsx","components/Footer/index.tsx","components/Icon/index.tsx","components/Icon/svg.tsx","components/TagSelector/index.tsx","components/Unactivate/index.tsx","components/UploadImg/index.tsx","components/Actions/index.tsx","components/Tag/index.tsx","components/Share/index.tsx","components/Operate/index.tsx","components/UserCard/index.tsx","components/Pagination/index.tsx","components/Comment/components/Form/index.tsx","components/Comment/components/ActionBar/index.tsx","components/Comment/components/Reply/index.tsx","components/Comment/index.tsx","components/TextArea/index.tsx","components/Mentions/index.tsx","components/FormatTime/index.tsx","components/Toast/index.tsx","components/AccordionNav/index.tsx","components/Empty/index.tsx","components/BaseUserCard/index.tsx","components/FollowingTags/index.tsx","components/QueryGroup/index.tsx","components/DiffContent/index.tsx","components/Customize/index.tsx","components/CustomizeTheme/index.tsx","components/PageTags/index.tsx","components/QuestionListLoader/index.tsx","components/TagsLoader/index.tsx","components/WelcomeTitle/index.tsx","components/Counts/index.tsx","components/HttpErrorContent/index.tsx","components/CustomSidebar/index.tsx","components/SideNav/index.tsx","components/HighlightText/index.tsx"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\nimport { ButtonGroup, Button } from 'react-bootstrap';\n\nimport classNames from 'classnames';\n\nimport { Icon, UploadImg } from '@/components';\nimport { UploadType } from '@/common/interface';\n\ninterface Props {\n type: UploadType;\n value: string;\n onChange: (value: string) => void;\n acceptType?: string;\n readOnly?: boolean;\n imgClassNames?: classNames.Argument;\n}\n\nconst Index: FC = ({\n type = 'post',\n value,\n onChange,\n acceptType,\n readOnly = false,\n imgClassNames = '',\n}) => {\n const onUpload = (imgPath: string) => {\n onChange(imgPath);\n };\n\n const onRemove = () => {\n onChange('');\n };\n return (\n
\n
\n \n
\n \n \n \n \n\n \n \n \n \n
\n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\nimport { Card, ListGroup, ListGroupItem } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport { pathFactory } from '@/router/pathFactory';\nimport { Icon } from '@/components';\nimport { useHotQuestions } from '@/services';\n\nconst HotQuestions: FC = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'question' });\n const { data: questionRes } = useHotQuestions();\n if (!questionRes?.list?.length) {\n return null;\n }\n return (\n \n \n {t('hot_questions')}\n \n \n {questionRes?.list?.map((li) => {\n return (\n \n
{li.title}
\n {li.answer_count > 0 ? (\n 0\n ? 'link-success'\n : 'link-secondary'\n }`}>\n {li.accepted_answer_id >= 1 ? (\n \n ) : (\n \n )}\n \n {t('x_answers', { count: li.answer_count })}\n \n \n ) : null}\n \n );\n })}\n
\n
\n );\n};\nexport default HotQuestions;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Button, Modal } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nexport interface Props {\n /** header title */\n title?: string;\n children?: React.ReactNode;\n /** visible */\n visible?: boolean;\n centered?: boolean;\n onCancel?: () => void;\n onConfirm?: (event: any) => void;\n cancelText?: string;\n showCancel?: boolean;\n cancelBtnVariant?: string;\n confirmText?: string;\n showConfirm?: boolean;\n confirmBtnDisabled?: boolean;\n confirmBtnVariant?: string;\n /** body style */\n bodyClass?: string;\n scrollable?: boolean;\n className?: string;\n}\nconst Index: FC = ({\n title = 'title',\n visible = false,\n centered = true,\n onCancel,\n children,\n onConfirm,\n cancelText = '',\n showCancel = true,\n cancelBtnVariant = 'primary',\n confirmText = '',\n showConfirm = true,\n confirmBtnVariant = 'link',\n confirmBtnDisabled = false,\n bodyClass = '',\n scrollable = false,\n className = '',\n}) => {\n const { t } = useTranslation();\n return (\n \n \n \n {title || t('title', { keyPrefix: 'modal_confirm' })}\n \n \n {children}\n {(showCancel || showConfirm) && (\n \n {showCancel && (\n \n )}\n {showConfirm && (\n {\n onConfirm?.(event);\n }}\n id=\"ok_button\"\n disabled={confirmBtnDisabled}>\n {confirmText === 'OK'\n ? t('btns.ok')\n : confirmText || t('btns.confirm')}\n \n )}\n \n )}\n \n );\n};\n\nexport default React.memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\n\nimport ReactDOM from 'react-dom/client';\n\nimport Modal from './Modal';\nimport type { Props } from './Modal';\n\nconst div = document.createElement('div');\n\nconst root = ReactDOM.createRoot(div);\n\nexport interface Config extends Props {\n content: string;\n}\n\nconst Index = ({\n title = '',\n confirmText = '',\n content,\n onCancel: onClose,\n onConfirm,\n cancelBtnVariant = 'link',\n confirmBtnVariant = 'primary',\n ...props\n}: Config) => {\n const onCancel = () => {\n if (typeof onClose === 'function') {\n onClose();\n }\n render({ visible: false });\n div.remove();\n };\n const onOk = (e) => {\n if (typeof onConfirm === 'function') {\n onConfirm(e);\n }\n onCancel();\n };\n function render({ visible }: { visible: boolean }) {\n root.render(\n \n

\n ,\n );\n }\n render({ visible: true });\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\n\nimport { loginToContinueStore, siteInfoStore } from '@/stores';\nimport { floppyNavigation } from '@/utils';\nimport { WelcomeTitle } from '@/components';\n\ninterface IProps {\n visible: boolean;\n}\n\nconst Index: React.FC = ({ visible = false }) => {\n const { t } = useTranslation('translation', { keyPrefix: 'login' });\n const { update: updateStore } = loginToContinueStore();\n const { siteInfo } = siteInfoStore((_) => _);\n const closeModal = () => {\n updateStore({ show: false });\n };\n const linkClick = (evt) => {\n evt.stopPropagation();\n floppyNavigation.storageLoginRedirect();\n closeModal();\n };\n return (\n \n \n {t('login_to_continue')}\n \n \n

\n \n

{siteInfo.description}

\n
\n
\n \n {t('login', { keyPrefix: 'btns' })}\n \n \n {t('signup', { keyPrefix: 'btns' })}\n \n
\n \n \n );\n};\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport DefaultModal from './Modal';\nimport confirm, { Config } from './Confirm';\nimport LoginToContinueModal from './LoginToContinueModal';\n\ntype ModalType = typeof DefaultModal & {\n confirm: (config: Config) => void;\n};\nconst Modal = DefaultModal as ModalType;\n\nModal.confirm = function (props: Config) {\n return confirm(props);\n};\n\nexport default Modal;\n\nexport { LoginToContinueModal };\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\nimport { ListGroup } from 'react-bootstrap';\nimport { NavLink, useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport type { QuestionOrderBy } from '@/common/interface';\nimport { pathFactory } from '@/router/pathFactory';\nimport {\n Tag,\n Pagination,\n FormatTime,\n Empty,\n BaseUserCard,\n QueryGroup,\n QuestionListLoader,\n Counts,\n Icon,\n} from '@/components';\nimport * as Type from '@/common/interface';\nimport { useSkeletonControl } from '@/hooks';\n\nexport const QUESTION_ORDER_KEYS: Type.QuestionOrderBy[] = [\n 'active',\n 'newest',\n 'frequent',\n 'score',\n 'unanswered',\n];\ninterface Props {\n source: 'questions' | 'tag';\n order?: QuestionOrderBy;\n data;\n isLoading: boolean;\n}\n\nconst QuestionList: FC = ({\n source,\n order,\n data,\n isLoading = false,\n}) => {\n const { t } = useTranslation('translation', { keyPrefix: 'question' });\n const [urlSearchParams] = useSearchParams();\n const { isSkeletonShow } = useSkeletonControl(isLoading);\n const curOrder =\n order || urlSearchParams.get('order') || QUESTION_ORDER_KEYS[0];\n const curPage = Number(urlSearchParams.get('page')) || 1;\n const pageSize = 20;\n const count = data?.count || 0;\n\n return (\n
\n
\n
\n {source === 'questions'\n ? t('all_questions')\n : t('x_questions', { count })}\n
\n \n
\n \n {isSkeletonShow ? (\n \n ) : (\n data?.list?.map((li) => {\n return (\n \n
\n {li.pin === 2 && (\n \n )}\n \n {li.title}\n {li.status === 2 ? ` [${t('closed')}]` : ''}\n \n
\n
\n
\n \n •\n \n
\n = 1}\n className=\"mt-2 mt-md-0\"\n />\n
\n
\n {Array.isArray(li.tags)\n ? li.tags.map((tag) => {\n return (\n \n );\n })\n : null}\n
\n \n );\n })\n )}\n
\n {count <= 0 && !isLoading && }\n
\n \n
\n
\n );\n};\nexport default QuestionList;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\nimport { Form } from 'react-bootstrap';\n\ninterface Props {\n title: string;\n className?: string | undefined;\n}\nconst Index: FC = ({ title, className }) => {\n return {title};\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport type * as Type from '@/common/interface';\n\ninterface Props {\n desc: string | undefined;\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n enumValues: (string | boolean | number)[];\n enumNames: string[];\n formData: Type.FormDataType;\n readOnly: boolean;\n}\nconst Index: FC = ({\n desc,\n fieldName,\n onChange,\n enumValues,\n enumNames,\n formData,\n readOnly = false,\n}) => {\n const fieldObject = formData[fieldName];\n const handleChange = (evt: React.ChangeEvent) => {\n const { name, value } = evt.currentTarget;\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value,\n isInvalid: false,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n return (\n \n {enumValues?.map((item, index) => {\n return (\n \n );\n })}\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Form, Stack } from 'react-bootstrap';\n\nimport type * as Type from '@/common/interface';\n\ninterface Props {\n type: 'radio' | 'checkbox';\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n enumValues: (string | boolean | number)[];\n enumNames: string[];\n formData: Type.FormDataType;\n readOnly?: boolean;\n}\nconst Index: FC = ({\n type = 'radio',\n fieldName,\n onChange,\n enumValues,\n enumNames,\n formData,\n readOnly = false,\n}) => {\n const fieldObject = formData[fieldName];\n const handleCheck = (\n evt: React.ChangeEvent,\n index: number,\n ) => {\n const { name, checked } = evt.currentTarget;\n enumValues[index] = checked;\n\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value: enumValues,\n isInvalid: false,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n return (\n \n {enumValues?.map((item, index) => {\n return (\n handleCheck(evt, index)}\n />\n );\n })}\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport type * as Type from '@/common/interface';\n\ninterface Props {\n title: string;\n label: string | undefined;\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n formData: Type.FormDataType;\n readOnly?: boolean;\n}\nconst Index: FC = ({\n title,\n fieldName,\n onChange,\n label,\n formData,\n readOnly = false,\n}) => {\n const fieldObject = formData[fieldName];\n const handleChange = (evt: React.ChangeEvent) => {\n const { name, checked } = evt.currentTarget;\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value: checked,\n isInvalid: false,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n return (\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { Form } from 'react-bootstrap';\n\nimport { TIMEZONES } from '@/common/constants';\n\nconst TimeZonePicker = (props) => {\n return (\n \n {TIMEZONES?.map((item) => {\n return (\n \n {item.options.map((option) => {\n return (\n \n );\n })}\n \n );\n })}\n \n );\n};\n\nexport default TimeZonePicker;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\n\nimport type * as Type from '@/common/interface';\nimport TimeZonePicker from '@/components/TimeZonePicker';\n\ninterface Props {\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n formData: Type.FormDataType;\n readOnly?: boolean;\n}\nconst Index: FC = ({\n fieldName,\n onChange,\n formData,\n readOnly = false,\n}) => {\n const fieldObject = formData[fieldName];\n const handleChange = (evt: React.ChangeEvent) => {\n const { name, value } = evt.currentTarget;\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value,\n isInvalid: false,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n return (\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport classNames from 'classnames';\n\nimport type * as Type from '@/common/interface';\nimport BrandUpload from '@/components/BrandUpload';\n\ninterface Props {\n type: Type.UploadType | undefined;\n acceptType: string | undefined;\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n formData: Type.FormDataType;\n readOnly?: boolean;\n imgClassNames?: classNames.Argument;\n}\nconst Index: FC = ({\n type = 'avatar',\n acceptType = '',\n fieldName,\n onChange,\n formData,\n readOnly = false,\n imgClassNames = '',\n}) => {\n const fieldObject = formData[fieldName];\n const handleChange = (name: string, value: string) => {\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n return (\n <>\n handleChange(fieldName, value)}\n imgClassNames={imgClassNames}\n />\n \n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport classnames from 'classnames';\n\nimport type * as Type from '@/common/interface';\n\ninterface Props {\n placeholder: string | undefined;\n rows: number | undefined;\n className: classnames.Argument;\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n formData: Type.FormDataType;\n readOnly: boolean;\n}\nconst Index: FC = ({\n placeholder = '',\n rows = 3,\n className,\n fieldName,\n onChange,\n formData,\n readOnly = false,\n}) => {\n const fieldObject = formData[fieldName];\n const handleChange = (evt: React.ChangeEvent) => {\n const { name, value } = evt.currentTarget;\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value,\n isInvalid: false,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n\n return (\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC } from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport type * as Type from '@/common/interface';\n\ninterface Props {\n type: string | undefined;\n placeholder: string | undefined;\n fieldName: string;\n onChange?: (fd: Type.FormDataType) => void;\n formData: Type.FormDataType;\n readOnly: boolean;\n}\nconst Index: FC = ({\n type = 'text',\n placeholder = '',\n fieldName,\n onChange,\n formData,\n readOnly = false,\n}) => {\n const fieldObject = formData[fieldName];\n const handleChange = (evt: React.ChangeEvent) => {\n const { name, value } = evt.currentTarget;\n const state = {\n ...formData,\n [name]: {\n ...formData[name],\n value,\n isInvalid: false,\n },\n };\n if (typeof onChange === 'function') {\n onChange(state);\n }\n };\n\n return (\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, useEffect, useState } from 'react';\nimport { Button, ButtonProps, Spinner } from 'react-bootstrap';\n\nimport { request } from '@/utils';\nimport type { UIAction, FormKit } from '../types';\nimport { useToast } from '@/hooks';\nimport { Icon } from '@/components';\n\ninterface Props {\n fieldName: string;\n text: string;\n action: UIAction | undefined;\n actionType?: 'submit' | 'click';\n clickCallback?: () => void;\n formKit: FormKit;\n readOnly: boolean;\n variant?: ButtonProps['variant'];\n size?: ButtonProps['size'];\n iconName?: string;\n nowrap?: boolean;\n title?: string;\n}\nconst Index: FC = ({\n fieldName,\n action,\n actionType = 'submit',\n formKit,\n text = '',\n readOnly = false,\n variant = 'primary',\n size,\n iconName = '',\n nowrap = false,\n clickCallback,\n title,\n}) => {\n console.log('Button.tsx: action:', title);\n const Toast = useToast();\n const [isLoading, setLoading] = useState(false);\n const handleToast = (msg, type: 'success' | 'danger' = 'success') => {\n const tm = action?.on_complete?.toast_return_message;\n if (tm === false || !msg) {\n return;\n }\n Toast.onShow({\n msg,\n variant: type,\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const handleCallback = (resp) => {\n const callback = action?.on_complete;\n if (callback?.refresh_form_config) {\n formKit.refreshConfig();\n }\n };\n const handleAction = () => {\n if (actionType === 'click') {\n if (typeof clickCallback === 'function') {\n clickCallback();\n }\n return;\n }\n if (!action) {\n return;\n }\n setLoading(true);\n request\n .request({\n method: action.method,\n url: action.url,\n timeout: 0,\n })\n .then((resp) => {\n if ('message' in resp) {\n handleToast(resp.message, 'success');\n }\n handleCallback(resp);\n })\n .catch((ex) => {\n if (ex && 'msg' in ex) {\n handleToast(ex.msg, 'danger');\n }\n })\n .finally(() => {\n setLoading(false);\n });\n };\n useEffect(() => {\n if (action?.loading?.state === 'pending') {\n setLoading(true);\n }\n }, []);\n const loadingText = action?.loading?.text || text;\n const disabled = isLoading || readOnly;\n if (nowrap) {\n return (\n \n {isLoading ? (\n <>\n \n {loadingText}\n \n ) : (\n text\n )}\n {iconName && }\n \n );\n }\n\n return (\n
\n \n {isLoading ? (\n <>\n \n {loadingText}\n \n ) : (\n text\n )}\n {iconName && }\n \n
\n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\nimport { InputGroup } from 'react-bootstrap';\n\nimport type { FormKit, InputGroupOptions } from '../types';\n\nimport Button from './Button';\n\ninterface Props {\n formKitWithContext: FormKit;\n uiOpt: InputGroupOptions;\n prefixText?: string;\n suffixText?: string;\n children: React.ReactNode;\n}\n\nconst InputGroupBtn = ({\n formKitWithContext,\n uiOpt,\n}: {\n formKitWithContext: FormKit;\n uiOpt:\n | InputGroupOptions['prefixBtnOptions']\n | InputGroupOptions['suffixBtnOptions'];\n}) => {\n return (\n \n );\n};\n\nconst Index: FC = ({\n formKitWithContext,\n uiOpt,\n prefixText = null,\n suffixText = null,\n children,\n}) => {\n return (\n \n {prefixText && {prefixText}}\n {uiOpt && 'prefixBtnOptions' in uiOpt && (\n \n )}\n {children}\n {uiOpt && 'suffixBtnOptions' in uiOpt && (\n \n )}\n {suffixText ? {suffixText} : null}\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, {\n ForwardRefRenderFunction,\n forwardRef,\n useImperativeHandle,\n useEffect,\n} from 'react';\nimport { Form, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport isEmpty from 'lodash/isEmpty';\nimport classnames from 'classnames';\n\nimport type * as Type from '@/common/interface';\n\nimport type {\n JSONSchema,\n FormProps,\n FormRef,\n BaseUIOptions,\n FormKit,\n InputGroupOptions,\n} from './types';\nimport {\n Legend,\n Select,\n Check,\n Switch,\n Timezone,\n Upload,\n Textarea,\n Input,\n Button as SfButton,\n InputGroup,\n} from './components';\n\nexport * from './types';\n\n/**\n * TODO:\n * - [!] Standardised `Admin/Plugins/Config/index.tsx` method for generating dynamic form configurations.\n * - Normalize and document `formData[key].hidden && 'd-none'`\n * - Normalize and document `hiddenSubmit`\n * - Improving field hints for `formData`\n * - Optimise form data updates\n * * Automatic field type conversion\n * * Dynamic field generation\n */\n\n/**\n * json schema form\n * @param schema json schema\n * @param uiSchema ui schema\n * @param formData form data\n * @param onChange change event\n * @param onSubmit submit event\n */\nconst SchemaForm: ForwardRefRenderFunction = (\n {\n schema,\n uiSchema = {},\n refreshConfig,\n formData,\n onChange,\n onSubmit,\n hiddenSubmit = false,\n },\n ref,\n) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'form',\n });\n const { required = [], properties = {} } = schema || {};\n // check required field\n const excludes = required.filter((key) => !properties[key]);\n if (excludes.length > 0) {\n console.error(t('not_found_props', { key: excludes.join(', ') }));\n }\n formData ||= {};\n const keys = Object.keys(properties);\n /**\n * Prevent components such as `select` from having default values,\n * which are not generated on `formData`\n */\n const setDefaultValueAsDomBehaviour = () => {\n keys.forEach((k) => {\n const fieldVal = formData![k]?.value;\n const metaProp = properties[k];\n const uiCtrl = uiSchema[k]?.['ui:widget'];\n if (!metaProp || !uiCtrl || fieldVal !== undefined) {\n return;\n }\n if (uiCtrl === 'select' && metaProp.enum?.[0] !== undefined) {\n formData![k] = {\n errorMsg: '',\n isInvalid: false,\n value: metaProp.enum?.[0],\n };\n }\n });\n };\n useEffect(() => {\n setDefaultValueAsDomBehaviour();\n }, [formData]);\n\n const formKitWithContext: FormKit = {\n refreshConfig() {\n if (typeof refreshConfig === 'function') {\n refreshConfig();\n }\n },\n };\n\n /**\n * Form validation\n * - Currently only dynamic forms are in use, the business form validation has been handed over to the server\n */\n const requiredValidator = () => {\n const errors: string[] = [];\n required.forEach((key) => {\n if (!formData![key] || !formData![key].value) {\n errors.push(key);\n }\n });\n return errors;\n };\n\n const syncValidator = () => {\n const errors: Array<{ key: string; msg: string }> = [];\n const promises: Array<{\n key: string;\n promise;\n }> = [];\n keys.forEach((key) => {\n const { validator } = uiSchema[key]?.['ui:options'] || {};\n if (validator instanceof Function) {\n const value = formData![key]?.value;\n promises.push({\n key,\n promise: validator(value, formData),\n });\n }\n });\n return Promise.allSettled(promises.map((item) => item.promise)).then(\n (results) => {\n results.forEach((result, index) => {\n const { key } = promises[index];\n if (result.status === 'rejected') {\n errors.push({\n key,\n msg: result.reason.message,\n });\n }\n\n if (result.status === 'fulfilled') {\n const msg = result.value;\n if (typeof msg === 'string') {\n errors.push({\n key,\n msg,\n });\n }\n }\n });\n return errors;\n },\n );\n };\n\n const validator = async (): Promise => {\n const errors = requiredValidator();\n if (errors.length > 0) {\n formData = errors.reduce((acc, cur) => {\n acc[cur] = {\n ...formData![cur],\n isInvalid: true,\n errorMsg:\n uiSchema[cur]?.['ui:options']?.empty ||\n `${properties[cur]?.title} ${t('empty')}`,\n };\n return acc;\n }, formData || {});\n if (onChange instanceof Function) {\n onChange({ ...formData });\n }\n return false;\n }\n const syncErrors = await syncValidator();\n if (syncErrors.length > 0) {\n formData = syncErrors.reduce((acc, cur) => {\n acc[cur.key] = {\n ...formData![cur.key],\n isInvalid: true,\n errorMsg: cur.msg || `${properties[cur.key].title} ${t('invalid')}`,\n };\n return acc;\n }, formData || {});\n if (onChange instanceof Function) {\n onChange({ ...formData });\n }\n return false;\n }\n return true;\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n const isValid = await validator();\n if (!isValid) {\n return;\n }\n\n Object.keys(formData!).forEach((key) => {\n formData![key].isInvalid = false;\n formData![key].errorMsg = '';\n });\n if (onChange instanceof Function) {\n onChange(formData!);\n }\n if (onSubmit instanceof Function) {\n onSubmit(e);\n }\n };\n\n useImperativeHandle(ref, () => ({\n validator,\n }));\n if (!formData || !schema || isEmpty(schema.properties)) {\n return null;\n }\n\n return (\n
\n {keys.map((key) => {\n const {\n title,\n description,\n enum: enumValues = [],\n enumNames = [],\n } = properties[key];\n const { 'ui:widget': widget = 'input', 'ui:options': uiOpt } =\n uiSchema?.[key] || {};\n formData ||= {};\n const fieldState = formData[key];\n if (uiOpt?.class_name) {\n uiOpt.className = uiOpt.class_name;\n }\n\n const uiSimplify = widget === 'legend' || uiOpt?.simplify;\n let groupClassName: BaseUIOptions['field_class_name'] = uiOpt?.simplify\n ? 'mb-2'\n : 'mb-3';\n if (widget === 'legend') {\n groupClassName = 'mb-0';\n }\n if (uiOpt?.field_class_name) {\n groupClassName = uiOpt.field_class_name;\n }\n\n const readOnly = uiOpt?.readOnly || false;\n\n return (\n \n {/* Uniform processing `label` */}\n {title && !uiSimplify ? {title} : null}\n {/* Handling of individual specific controls */}\n {widget === 'legend' ? (\n \n ) : null}\n {widget === 'select' ? (\n \n ) : null}\n {widget === 'radio' || widget === 'checkbox' ? (\n \n ) : null}\n {widget === 'switch' ? (\n \n ) : null}\n {widget === 'timezone' ? (\n \n ) : null}\n {widget === 'upload' ? (\n \n ) : null}\n {widget === 'textarea' ? (\n \n ) : null}\n {widget === 'input' ? (\n \n ) : null}\n {widget === 'button' ? (\n \n ) : null}\n {widget === 'input_group' ? (\n \n \n \n ) : null}\n {/* Unified handling of `Feedback` and `Text` */}\n \n {fieldState?.errorMsg}\n \n {description ? (\n \n ) : null}\n \n );\n })}\n {!hiddenSubmit && (\n \n )}\n \n );\n};\n\nexport const initFormData = (schema: JSONSchema): Type.FormDataType => {\n const formData: Type.FormDataType = {};\n const props: JSONSchema['properties'] = schema?.properties || {};\n Object.keys(props).forEach((key) => {\n const prop = props[key];\n let defaultVal: any = '';\n if (Array.isArray(prop.default) && prop.enum && prop.enum.length > 0) {\n // for checkbox default values\n defaultVal = prop.enum;\n } else {\n defaultVal = prop?.default;\n }\n formData[key] = {\n value: defaultVal,\n isInvalid: false,\n errorMsg: '',\n };\n });\n return formData;\n};\n\nexport const mergeFormData = (\n target: Type.FormDataType | null,\n origin: Type.FormDataType | null,\n) => {\n if (!target) {\n return origin;\n }\n if (!origin) {\n return target;\n }\n Object.keys(target).forEach((k) => {\n const oi = origin[k];\n if (oi && oi.value !== undefined) {\n target[k] = {\n value: oi.value,\n isInvalid: false,\n errorMsg: '',\n };\n }\n });\n return target;\n};\n\nexport default forwardRef(SchemaForm);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC } from 'react';\n\nimport classNames from 'classnames';\n\nimport DefaultAvatar from '@/assets/images/default-avatar.svg';\n\ninterface IProps {\n /** avatar url */\n avatar: string | { type: string; gravatar: string; custom: string };\n /** size 48 96 128 256 */\n size: string;\n searchStr?: string;\n className?: string;\n alt: string;\n}\n\nconst Index: FC = ({\n avatar,\n size,\n className,\n searchStr = '',\n alt,\n}) => {\n let url = '';\n if (typeof avatar === 'string') {\n if (avatar.length > 1) {\n url = `${avatar}?${searchStr}${\n avatar?.includes('gravatar') ? '&d=identicon' : ''\n }`;\n }\n } else if (avatar?.type === 'gravatar' && avatar.gravatar) {\n url = `${avatar.gravatar}?${searchStr}&d=identicon`;\n } else if (avatar?.type === 'custom' && avatar.custom) {\n url = `${avatar.custom}?${searchStr}`;\n }\n\n const roundedCls =\n className && className.indexOf('rounded') !== -1 ? '' : 'rounded';\n\n return (\n <>\n {/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role,jsx-a11y/control-has-associated-label */}\n \n \n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { FC, ReactNode } from 'react';\n\nimport PluginKit, { Plugin, PluginType } from '@/utils/pluginKit';\n/**\n * Note:Please set at least either of the `slug_name` and `type` attributes, otherwise no plugins will be rendered.\n *\n * @field slug_name: The `slug_name` of the plugin needs to be rendered.\n * If this property is set, `PluginRender` will use it first (regardless of whether `type` is set)\n * to find the corresponding plugin and render it.\n * @field type: Used to formulate the rendering of all plugins of this type.\n * (if the `slug_name` attribute is set, it will be ignored)\n * @field prop: Any attribute you want to configure, e.g. `className`\n */\n\ninterface Props {\n slug_name?: string;\n type?: PluginType;\n children?: ReactNode;\n [prop: string]: any;\n}\n\nconst Index: FC = ({\n slug_name,\n type,\n children = null,\n className,\n ...props\n}) => {\n const pluginSlice: Plugin[] = [];\n const plugins = PluginKit.getPlugins().filter((plugin) => plugin.activated);\n\n plugins.forEach((plugin) => {\n if (type && slug_name) {\n if (plugin.info.slug_name === slug_name && plugin.info.type === type) {\n pluginSlice.push(plugin);\n }\n } else if (type) {\n if (plugin.info.type === type) {\n pluginSlice.push(plugin);\n }\n } else if (slug_name) {\n if (plugin.info.slug_name === slug_name) {\n pluginSlice.push(plugin);\n }\n }\n });\n\n /**\n * TODO: Rendering control for non-builtin plug-ins\n * ps: Logic such as version compatibility determination can be placed here\n */\n if (pluginSlice.length === 0) {\n if (type === 'editor') {\n return
{children}
;\n }\n return null;\n }\n\n if (type === 'editor') {\n const nodes = React.Children.map(children, (child, index) => {\n if (index === 15) {\n return (\n <>\n {child}\n {pluginSlice.map((ps) => {\n const PluginFC = ps.component;\n return (\n // @ts-ignore\n \n );\n })}\n
\n \n );\n }\n return child;\n });\n\n return
{nodes}
;\n }\n\n return (\n <>\n {pluginSlice.map((ps) => {\n const PluginFC = ps.component;\n return (\n // @ts-ignore\n \n );\n })}\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\n\nimport { IEditorContext } from './types';\n\nexport const EditorContext = React.createContext({});\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, useContext, useEffect } from 'react';\nimport { Dropdown, Button } from 'react-bootstrap';\n\nimport { EditorContext } from './EditorContext';\nimport { IEditorContext } from './types';\n\ninterface IProps {\n keyMap?: string[];\n onClick?: ({\n editor,\n wrapText,\n replaceLines,\n appendBlock,\n }: IEditorContext) => void;\n tip?: string;\n className?: string;\n as?: any;\n children?;\n label?: string;\n disable?: boolean;\n isShow?: boolean;\n onBlur?: ({\n editor,\n wrapText,\n replaceLines,\n appendBlock,\n }: IEditorContext) => void;\n}\nconst ToolItem: FC = (props) => {\n const editor = useContext(EditorContext);\n\n const {\n label,\n tip,\n disable = false,\n isShow,\n keyMap,\n onClick,\n className,\n as,\n children,\n onBlur,\n } = props;\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n if (!keyMap) {\n return;\n }\n\n keyMap.forEach((key) => {\n editor?.addKeyMap({\n [key]: () => {\n onClick?.({\n editor,\n wrapText: editor?.wrapText,\n replaceLines: editor?.replaceLines,\n appendBlock: editor?.appendBlock,\n });\n },\n });\n });\n }, [editor]);\n\n const btnRender = () => (\n {\n e.preventDefault();\n onClick?.({\n editor,\n wrapText: editor?.wrapText,\n replaceLines: editor?.replaceLines,\n appendBlock: editor?.appendBlock,\n });\n }}\n onBlur={(e) => {\n e.preventDefault();\n onBlur?.({\n editor,\n wrapText: editor?.wrapText,\n replaceLines: editor?.replaceLines,\n appendBlock: editor?.appendBlock,\n });\n }}\n />\n );\n\n if (!editor) {\n return null;\n }\n return (\n
\n {as === 'dropdown' ? (\n \n \n {btnRender()}\n \n {children}\n \n ) : (\n <>\n {btnRender()}\n {children}\n \n )}\n
\n );\n};\n\nexport default ToolItem;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Table = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'table',\n tip: t('table.text'),\n };\n const tableData = [\n [`${t('table.heading')} A`],\n [`${t('table.heading')} B`],\n [`${t('table.cell')} 1`],\n [`${t('table.cell')} 2`],\n [`${t('table.cell')} 3`],\n [`${t('table.cell')} 4`],\n ];\n\n const makeHeader = (col, data) => {\n let header = '|';\n let border = '|';\n let index = 0;\n\n while (col) {\n if (data) {\n header += ` ${data[index]} |`;\n index += 1;\n } else {\n header += ' |';\n }\n\n border += ' ----- |';\n\n col -= 1;\n }\n\n return `${header}\\n${border}\\n`;\n };\n\n const makeBody = (col, row, data) => {\n let body = '';\n let index = col;\n\n for (let irow = 0; irow < row; irow += 1) {\n body += '|';\n\n for (let icol = 0; icol < col; icol += 1) {\n if (data) {\n body += ` ${data[index]} |`;\n index += 1;\n } else {\n body += ' |';\n }\n }\n\n body += '\\n';\n }\n\n body = body.replace(/\\n$/g, '');\n\n return body;\n };\n const handleClick = (ctx) => {\n context = ctx;\n const { editor } = context;\n let table = '\\n';\n\n table += makeHeader(2, tableData);\n table += makeBody(2, 2, tableData);\n editor?.replaceSelection(table);\n editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(Table);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst OL = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'orderedList',\n keyMap: ['Ctrl-O'],\n tip: `${t('ordered_list.text')} (Ctrl+O)`,\n };\n\n const handleClick = (ctx) => {\n context = ctx;\n const { editor, replaceLines } = context;\n\n replaceLines((line, i) => {\n const FIND_OL_RX = /^(\\s{0,})(\\d+)\\.\\s/;\n\n if (line.match(FIND_OL_RX)) {\n line = line.replace(FIND_OL_RX, '');\n } else {\n line = `${i + 1}. ${line}`;\n }\n return line;\n });\n editor.focus();\n };\n\n return ;\n};\n\nexport default memo(OL);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst UL = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'unorderedList',\n keyMap: ['Ctrl-U'],\n tip: `${t('unordered_list.text')} (Ctrl+U)`,\n };\n\n const handleClick = (ctx) => {\n context = ctx;\n const { editor, replaceLines } = context;\n\n replaceLines((line) => {\n const FIND_UL_RX = /^(\\s{0,})(-|\\*)\\s/;\n\n if (line.match(FIND_UL_RX)) {\n line = line.replace(FIND_UL_RX, '');\n } else {\n line = `* ${line}`;\n }\n return line;\n });\n editor.focus();\n };\n\n return ;\n};\n\nexport default memo(UL);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Indent = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'indent',\n tip: t('indent.text'),\n };\n const handleClick = (ctx) => {\n context = ctx;\n const { editor, replaceLines } = context;\n\n replaceLines((line) => {\n line = ` ${line}`;\n return line;\n });\n editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(Indent);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Outdent = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'outdent',\n keyMap: ['Shift-Tab'],\n tip: t('outdent.text'),\n };\n const handleClick = (ctx) => {\n context = ctx;\n const { editor, replaceLines } = context;\n replaceLines((line) => {\n line = line.replace(/^(\\s{0,})/, (_1, $1) => {\n return $1.length > 4 ? $1.substring(4) : '';\n });\n return line;\n });\n editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(Outdent);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Hr = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'hr',\n keyMap: ['Ctrl-R'],\n tip: `${t('hr.text')} (Ctrl+R)`,\n };\n const handleClick = (ctx) => {\n context = ctx;\n const { appendBlock, editor } = context;\n appendBlock('----------\\n');\n editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(Hr);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useState, memo } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Heading = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const headerList = [\n {\n text: `

${t('heading.options.h1')}

`,\n level: 1,\n label: t('heading.options.h1'),\n },\n {\n text: `

${t('heading.options.h2')}

`,\n level: 2,\n label: t('heading.options.h2'),\n },\n {\n text: `

${t('heading.options.h3')}

`,\n level: 3,\n label: t('heading.options.h3'),\n },\n {\n text: `

${t('heading.options.h4')}

`,\n level: 4,\n label: t('heading.options.h4'),\n },\n {\n text: `
${t('heading.options.h5')}
`,\n level: 5,\n label: t('heading.options.h5'),\n },\n {\n text: `
${t('heading.options.h6')}
`,\n level: 6,\n label: t('heading.options.h6'),\n },\n ];\n const item = {\n label: 'heading',\n keyMap: ['Ctrl-H'],\n tip: `${t('heading.text')} (Ctrl+H)`,\n };\n const [isShow, setShowState] = useState(false);\n const [isLocked, setLockState] = useState(false);\n\n const handleClick = (level = 2, label = '大标题') => {\n const { replaceLines } = context;\n\n replaceLines((line) => {\n line = line.trim().replace(/^#*/, '').trim();\n line = `${'#'.repeat(level)} ${line || label}`;\n return line;\n }, level + 1);\n setShowState(false);\n };\n const onAddHeader = (ctx) => {\n context = ctx;\n if (isLocked) {\n return;\n }\n setShowState(!isShow);\n };\n\n const handleMouseEnter = () => {\n setLockState(true);\n };\n\n const handleMouseLeave = () => {\n setLockState(false);\n };\n return (\n \n \n {headerList.map((header) => {\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n handleClick(header.level, header.label);\n }}\n dangerouslySetInnerHTML={{ __html: header.text }}\n />\n );\n })}\n \n
\n );\n};\n\nexport default memo(Heading);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Bold = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'bold',\n keyMap: ['Ctrl-B'],\n tip: `${t('bold.text')} (Ctrl+B)`,\n };\n const DEFAULTTEXT = t('bold.text');\n\n const handleClick = (ctx) => {\n context = ctx;\n context.wrapText('**', '**', DEFAULTTEXT);\n context.editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(Bold);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Italic = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'italic',\n keyMap: ['Ctrl-I'],\n tip: `${t('italic.text')} (Ctrl+I)`,\n };\n const DEFAULTTEXT = t('italic.text');\n\n const handleClick = (ctx) => {\n context = ctx;\n const { editor, wrapText } = context;\n wrapText('*', '*', DEFAULTTEXT);\n editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(Italic);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, useEffect, useState } from 'react';\nimport { Dropdown, FormControl } from 'react-bootstrap';\n\ninterface IProps {\n options;\n value?;\n onChange?;\n placeholder?;\n onSelect?;\n}\nconst Select: FC = ({\n options = [],\n value = '',\n onChange,\n placeholder = '',\n onSelect,\n}) => {\n const [isFocus, setFocusState] = useState(false);\n const [cursor, setCursor] = useState(0);\n\n useEffect(() => {\n setCursor(0);\n }, [value]);\n const handleKeyDown = (e) => {\n const { keyCode } = e;\n\n if (keyCode === 38 && cursor > 0) {\n e.preventDefault();\n setCursor(cursor - 1);\n }\n if (keyCode === 40 && cursor < options.length - 1) {\n e.preventDefault();\n\n setCursor(cursor + 1);\n }\n if (keyCode === 13 && cursor > -1 && cursor <= options.length - 1) {\n const lang = options.filter((opt) =>\n value ? opt.indexOf(value) === 0 : true,\n )[cursor];\n\n setFocusState(false);\n onSelect(lang);\n }\n };\n\n const result = options.filter((opt) =>\n value ? opt.indexOf(value) === 0 : true,\n );\n\n return (\n
\n {\n setFocusState(true);\n if (onChange instanceof Function) {\n onChange(e);\n }\n }}\n />\n {result.length > 0 && (\n \n {result.map((opt, index) => {\n return (\n {\n e.preventDefault();\n setFocusState(false);\n onSelect(opt);\n }}>\n {opt}\n \n );\n })}\n \n )}\n
\n );\n};\n\nexport default Select;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useRef, useState, memo } from 'react';\nimport { Button, Form, Modal } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport Select from '../Select';\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nconst codeLanguageType = [\n 'bash',\n 'sh',\n 'zsh',\n 'c',\n 'h',\n 'cpp',\n 'hpp',\n 'c++',\n 'h++',\n 'cc',\n 'hh',\n 'cxx',\n 'hxx',\n 'c-like',\n 'cs',\n 'csharp',\n 'c#',\n 'clojure',\n 'clj',\n 'coffee',\n 'coffeescript',\n 'cson',\n 'iced',\n 'css',\n 'dart',\n 'erl',\n 'erlang',\n 'go',\n 'golang',\n 'hs',\n 'haskell',\n 'html',\n 'xml',\n 'xsl',\n 'xhtml',\n 'rss',\n 'atom',\n 'xjb',\n 'xsd',\n 'plist',\n 'wsf',\n 'svg',\n 'http',\n 'https',\n 'ini',\n 'toml',\n 'java',\n 'jsp',\n 'js',\n 'javascript',\n 'jsx',\n 'mjs',\n 'cjs',\n 'json',\n 'kotlin',\n 'kt',\n 'latex',\n 'tex',\n 'less',\n 'lisp',\n 'lua',\n 'makefile',\n 'mk',\n 'mak',\n 'markdown',\n 'md',\n 'mkdown',\n 'mkd',\n 'matlab',\n 'objectivec',\n 'mm',\n 'objc',\n 'obj-c',\n 'ocaml',\n 'ml',\n 'pascal',\n 'delphi',\n 'dpr',\n 'dfm',\n 'pas',\n 'freepascal',\n 'lazarus',\n 'lpr',\n 'lfm',\n 'pl',\n 'perl',\n 'pm',\n 'php',\n 'php3',\n 'php4',\n 'php5',\n 'php6',\n 'php7',\n 'php-template',\n 'protobuf',\n 'py',\n 'python',\n 'gyp',\n 'ipython',\n 'r',\n 'rb',\n 'ruby',\n 'gemspec',\n 'podspec',\n 'thor',\n 'irb',\n 'rs',\n 'rust',\n 'scala',\n 'scheme',\n 'scss',\n 'shell',\n 'console',\n 'sql',\n 'swift',\n 'typescript',\n 'ts',\n 'vhdl',\n 'vbnet',\n 'vb',\n 'yaml',\n 'yml',\n];\n\nlet context: IEditorContext;\nconst Code = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n\n const item = {\n label: 'code',\n keyMap: ['Ctrl-K'],\n tip: `${t('code.text')} (Ctrl+K)`,\n };\n\n const [code, setCode] = useState({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n const [visible, setVisible] = useState(false);\n const [lang, setLang] = useState('');\n const inputRef = useRef(null);\n\n const SINGLELINEMAXLENGTH = 40;\n const addCode = (ctx) => {\n context = ctx;\n\n const { wrapText, editor } = context;\n\n const text = context.editor.getSelection();\n\n if (!text) {\n setVisible(true);\n\n return;\n }\n if (text.length > SINGLELINEMAXLENGTH) {\n context.wrapText('```\\n', '\\n```');\n } else {\n wrapText('`', '`');\n }\n editor.focus();\n };\n\n useEffect(() => {\n if (visible && inputRef.current) {\n inputRef.current.focus();\n }\n }, [visible]);\n\n const handleClick = () => {\n if (!code.value.trim()) {\n setCode({\n ...code,\n errorMsg: t('code.form.fields.code.msg.empty'),\n isInvalid: true,\n });\n return;\n }\n\n let value;\n\n if (\n code.value.split('\\n').length > 1 ||\n code.value.length >= SINGLELINEMAXLENGTH\n ) {\n value = `\\n\\`\\`\\`${lang}\\n${code.value}\\n\\`\\`\\`\\n`;\n } else {\n value = `\\`${code.value}\\``;\n }\n context.editor.replaceSelection(value);\n setCode({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n setLang('');\n setVisible(false);\n };\n const onHide = () => setVisible(false);\n const onExited = () => context.editor?.focus();\n\n return (\n \n \n \n
{t('code.add_code')}
\n
\n \n \n {t('code.form.fields.code.label')}\n setCode({ ...code, value: e.target.value })}\n />\n {code.isInvalid && (\n \n {code.errorMsg}\n \n )}\n \n \n {`${t('code.form.fields.language.label')} ${t(\n 'optional',\n {\n keyPrefix: 'form',\n },\n )}`}\n setLang(e.target.value)}\n onSelect={(val) => setLang(val)}\n placeholder={t('code.form.fields.language.placeholder')}\n />\n \n \n \n {\n setVisible(false);\n setCode({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n }}>\n {t('code.btn_cancel')}\n \n \n \n \n
\n );\n};\n\nexport default memo(Code);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useRef, useState, memo } from 'react';\nimport { Button, Form, Modal } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst Link = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n const item = {\n label: 'link',\n keyMap: ['Ctrl-L'],\n tip: `${t('link.text')} (Ctrl+L)`,\n };\n const [visible, setVisible] = useState(false);\n const [link, setLink] = useState({\n value: 'https://',\n isInvalid: false,\n errorMsg: '',\n });\n const [name, setName] = useState({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n const inputRef = useRef(null);\n\n useEffect(() => {\n if (visible && inputRef.current) {\n inputRef.current.setSelectionRange(0, inputRef.current.value.length);\n inputRef.current.focus();\n }\n }, [visible]);\n\n const addLink = (ctx) => {\n context = ctx;\n const { editor } = context;\n\n const text = editor.getSelection();\n\n setName({ ...name, value: text });\n\n setVisible(true);\n };\n const handleClick = () => {\n const { editor } = context;\n\n if (!link.value) {\n setLink({ ...link, isInvalid: true });\n return;\n }\n const newStr = name.value\n ? `[${name.value}](${link.value})`\n : `<${link.value}>`;\n\n editor.replaceSelection(newStr);\n\n setVisible(false);\n\n editor.focus();\n setLink({ ...link, value: '' });\n setName({ ...name, value: '' });\n };\n const onHide = () => setVisible(false);\n const onExited = () => {\n const { editor } = context;\n editor.focus();\n };\n\n return (\n <>\n \n \n \n
{t('link.add_link')}
\n
\n \n
\n \n {t('link.form.fields.url.label')}\n setLink({ ...link, value: e.target.value })}\n isInvalid={link.isInvalid}\n />\n \n\n \n {`${t('link.form.fields.name.label')} ${t(\n 'optional',\n {\n keyPrefix: 'form',\n },\n )}`}\n setName({ ...name, value: e.target.value })}\n isInvalid={name.isInvalid}\n />\n \n
\n
\n \n \n \n \n \n \n );\n};\n\nexport default memo(Link);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\n\nlet context: IEditorContext;\nconst BlockQuote = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n\n const item = {\n label: 'blockquote',\n keyMap: ['Ctrl-Q'],\n tip: `${t('blockquote.text')} (Ctrl+Q)`,\n };\n\n const handleClick = (ctx) => {\n context = ctx;\n context.replaceLines((line) => {\n const FIND_BLOCKQUOTE_RX = /^>\\s+?/g;\n\n if (line === `> ${t('blockquote.text')}`) {\n line = '';\n } else if (line.match(FIND_BLOCKQUOTE_RX)) {\n line = line.replace(FIND_BLOCKQUOTE_RX, '');\n } else {\n line = `> ${line || t('blockquote.text')}`;\n }\n return line;\n }, 2);\n context.editor?.focus();\n };\n\n return ;\n};\n\nexport default memo(BlockQuote);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useState, memo } from 'react';\nimport { Button, Form, Modal, Tab, Tabs } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Editor } from 'codemirror';\n\nimport { Modal as AnswerModal } from '@/components';\nimport ToolItem from '../toolItem';\nimport { IEditorContext } from '../types';\nimport { uploadImage } from '@/services';\n\nlet context: IEditorContext;\nconst Image = ({ editorInstance }) => {\n const [editor, setEditor] = useState(editorInstance);\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n\n const loadingText = `![${t('image.uploading')}...]()`;\n\n const item = {\n label: 'image',\n keyMap: ['Ctrl-G'],\n tip: `${t('image.text')} (Ctrl+G)`,\n };\n const [currentTab, setCurrentTab] = useState('localImage');\n const [visible, setVisible] = useState(false);\n const [link, setLink] = useState({\n value: '',\n isInvalid: false,\n errorMsg: '',\n type: '',\n });\n\n const [imageName, setImageName] = useState({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n const verifyImageSize = (files: FileList) => {\n if (files.length === 0) {\n return false;\n }\n const filteredFiles = Array.from(files).filter(\n (file) => file.type.indexOf('image') === -1,\n );\n\n if (filteredFiles.length > 0) {\n AnswerModal.confirm({\n content: t('image.form_image.fields.file.msg.only_image'),\n });\n return false;\n }\n const filteredImages = Array.from(files).filter(\n (file) => file.size / 1024 / 1024 > 4,\n );\n\n if (filteredImages.length > 0) {\n AnswerModal.confirm({\n content: t('image.form_image.fields.file.msg.max_size'),\n });\n return false;\n }\n return true;\n };\n const upload = (\n files: FileList,\n ): Promise<{ url: string; name: string }[]> => {\n const promises = Array.from(files).map(async (file) => {\n const url = await uploadImage({ file, type: 'post' });\n\n return {\n name: file.name,\n url,\n };\n });\n\n return Promise.all(promises);\n };\n function dragenter(_, e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n function dragover(_, e) {\n e.stopPropagation();\n e.preventDefault();\n }\n const drop = async (_, e) => {\n const fileList = e.dataTransfer.files;\n\n const bool = verifyImageSize(fileList);\n\n if (!bool) {\n return;\n }\n\n const startPos = editor.getCursor();\n const endPos = { ...startPos, ch: startPos.ch + loadingText.length };\n\n editor.replaceSelection(loadingText);\n const urls = await upload(fileList).catch((ex) => {\n console.error('upload file error: ', ex);\n });\n\n const text: string[] = [];\n if (Array.isArray(urls)) {\n urls.forEach(({ name, url }) => {\n if (name && url) {\n text.push(`![${name}](${url})`);\n }\n });\n }\n if (text.length) {\n editor.replaceRange(text.join('\\n'), startPos, endPos);\n } else {\n // Clear loading text\n editor.replaceRange('', startPos, endPos);\n }\n };\n\n const paste = async (_, event) => {\n const clipboard = event.clipboardData;\n\n const bool = verifyImageSize(clipboard.files);\n\n if (bool) {\n event.preventDefault();\n editor.setOption('readOnly', true);\n const startPos = editor.getCursor('');\n const endPos = { ...startPos, ch: startPos.ch + loadingText.length };\n\n editor.replaceSelection(loadingText);\n const urls = await upload(clipboard.files);\n const text = urls.map(({ name, url }) => {\n return `![${name}](${url})`;\n });\n\n editor.replaceRange(text.join('\\n'), startPos, endPos);\n\n editor.setOption('readOnly', false);\n return;\n }\n\n const htmlStr = clipboard.getData('text/html');\n const imgRegex = /]*)>/;\n\n if (!htmlStr.match(imgRegex)) {\n return;\n }\n event.preventDefault();\n\n let innerText = '';\n const allPTag = new DOMParser()\n .parseFromString(\n htmlStr.replace(\n /]*)>/gi,\n `

![${t('image.text')}]($3)\\n\\n

`,\n ),\n 'text/html',\n )\n .querySelectorAll('body p');\n\n allPTag.forEach((p, index) => {\n const text = p.textContent || '';\n if (text !== '') {\n if (index === allPTag.length - 1) {\n innerText += `${p.textContent}`;\n } else {\n innerText += `${p.textContent}${text.endsWith('\\n') ? '' : '\\n\\n'}`;\n }\n }\n });\n\n editor.replaceSelection(innerText);\n };\n const handleClick = () => {\n if (!link.value) {\n setLink({ ...link, isInvalid: true });\n return;\n }\n setLink({ ...link, type: '' });\n\n const text = `![${imageName.value}](${link.value})`;\n\n editor.replaceSelection(text);\n\n setVisible(false);\n\n editor.focus();\n setLink({ ...link, value: '' });\n setImageName({ ...imageName, value: '' });\n };\n useEffect(() => {\n editor?.on('dragenter', dragenter);\n editor?.on('dragover', dragover);\n editor?.on('drop', drop);\n editor?.on('paste', paste);\n return () => {\n editor?.off('dragenter', dragenter);\n editor?.off('dragover', dragover);\n editor?.off('drop', drop);\n editor?.off('paste', paste);\n };\n }, [editor]);\n\n useEffect(() => {\n if (link.value && link.type === 'drop') {\n handleClick();\n }\n }, [link.value]);\n\n const addLink = (ctx) => {\n context = ctx;\n setEditor(context.editor);\n const text = context.editor?.getSelection();\n\n setImageName({ ...imageName, value: text });\n\n setVisible(true);\n };\n\n const onUpload = async (e) => {\n if (!editor) {\n return;\n }\n const files = e.target?.files || [];\n const bool = verifyImageSize(files);\n\n if (!bool) {\n return;\n }\n\n uploadImage({ file: e.target.files[0], type: 'post' }).then((url) => {\n setLink({ ...link, value: url });\n });\n };\n\n const onHide = () => setVisible(false);\n const onExited = () => editor?.focus();\n\n const handleSelect = (tab) => {\n setCurrentTab(tab);\n };\n return (\n \n \n \n
{t('image.add_image')}
\n
\n \n \n \n
\n \n \n {t('image.form_image.fields.file.label')}\n \n \n\n \n {t('image.form_image.fields.file.msg.empty')}\n \n \n\n \n \n {`${t('image.form_image.fields.desc.label')} ${t(\n 'optional',\n {\n keyPrefix: 'form',\n },\n )}`}\n \n \n setImageName({ ...imageName, value: e.target.value })\n }\n isInvalid={imageName.isInvalid}\n />\n \n
\n
\n \n
\n \n \n {t('image.form_url.fields.url.label')}\n \n \n setLink({ ...link, value: e.target.value })\n }\n isInvalid={currentTab === 'remoteImage' && link.isInvalid}\n />\n \n {t('image.form_url.fields.url.msg.empty')}\n \n \n\n \n \n {`${t('image.form_url.fields.name.label')} ${t('optional', {\n keyPrefix: 'form',\n })}`}\n \n \n setImageName({ ...imageName, value: e.target.value })\n }\n isInvalid={imageName.isInvalid}\n />\n \n
\n
\n
\n
\n \n \n \n \n \n
\n );\n};\n\nexport default memo(Image);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ToolItem from '../toolItem';\n\nconst Help = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'editor' });\n\n const item = {\n label: 'help',\n tip: t('help.text'),\n };\n const handleClick = () => {\n window.open('https://commonmark.org/help/');\n };\n\n return ;\n};\n\nexport default memo(Help);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useState, useRef } from 'react';\n\nimport type { Editor, Position } from 'codemirror';\nimport type CodeMirror from 'codemirror';\nimport 'codemirror/lib/codemirror.css';\n\nexport function createEditorUtils(\n codemirror: typeof CodeMirror,\n editor: Editor,\n) {\n editor.wrapText = (before: string, after = before, defaultText) => {\n const range = editor.somethingSelected()\n ? editor.listSelections()[0]\n : editor.findWordAt(editor.getCursor());\n\n const from = range.from();\n const to = range.to();\n const text = editor.getRange(from, to) || defaultText;\n const fromBefore = codemirror.Pos(from.line, from.ch - before.length);\n const toAfter = codemirror.Pos(to.line, to.ch + after.length);\n\n if (\n editor.getRange(fromBefore, from) === before &&\n editor.getRange(to, toAfter) === after\n ) {\n editor.replaceRange(text, fromBefore, toAfter);\n editor.setSelection(\n fromBefore,\n codemirror.Pos(fromBefore.line, fromBefore.ch + text.length),\n );\n } else {\n editor.replaceRange(before + text + after, from, to);\n const cursor = editor.getCursor();\n\n editor.setSelection(\n codemirror.Pos(cursor.line, cursor.ch - after.length - text.length),\n codemirror.Pos(cursor.line, cursor.ch - after.length),\n );\n }\n };\n editor.replaceLines = (\n replace: Parameters['map']>[0],\n symbolLen = 0,\n ) => {\n const [selection] = editor.listSelections();\n\n const range = [\n codemirror.Pos(selection.from().line, 0),\n codemirror.Pos(selection.to().line),\n ] as const;\n const lines = editor.getRange(...range).split('\\n');\n\n editor.replaceRange(lines.map(replace).join('\\n'), ...range);\n const newRange = range;\n\n if (symbolLen > 0) {\n newRange[0].ch = symbolLen;\n }\n editor.setSelection(...newRange);\n };\n editor.appendBlock = (content: string): Position => {\n const cursor = editor.getCursor();\n\n let emptyLine = -1;\n\n for (let i = cursor.line; i < editor.lineCount(); i += 1) {\n if (!editor.getLine(i).trim()) {\n emptyLine = i;\n break;\n }\n }\n if (emptyLine === -1) {\n editor.replaceRange('\\n', codemirror.Pos(editor.lineCount()));\n emptyLine = editor.lineCount();\n }\n\n editor.replaceRange(`\\n${content}`, codemirror.Pos(emptyLine));\n return codemirror.Pos(emptyLine + 1, 0);\n };\n}\n\nexport function htmlRender(el: HTMLElement | null) {\n if (!el) return;\n // Replace all br tags with newlines\n // Fixed an issue where the BR tag in the editor block formula HTML caused rendering errors.\n el.querySelectorAll('p').forEach((p) => {\n if (p.innerHTML.startsWith('$$') && p.innerHTML.endsWith('$$')) {\n const str = p.innerHTML.replace(/
/g, '\\n');\n p.innerHTML = str;\n }\n });\n\n // change table style\n\n el.querySelectorAll('table').forEach((table) => {\n if (\n (table.parentNode as HTMLDivElement)?.classList.contains(\n 'table-responsive',\n )\n ) {\n return;\n }\n\n table.classList.add('table', 'table-bordered');\n const div = document.createElement('div');\n div.className = 'table-responsive';\n table.parentNode?.replaceChild(div, table);\n div.appendChild(table);\n });\n\n // add rel nofollow for link not inlcludes domain\n el.querySelectorAll('a').forEach((a) => {\n const base = window.location.origin;\n const targetUrl = new URL(a.href, base);\n\n if (targetUrl.origin !== base) {\n a.rel = 'nofollow';\n }\n });\n}\n\nexport const useEditor = ({\n editorRef,\n placeholder,\n autoFocus,\n onChange,\n onFocus,\n onBlur,\n}) => {\n const [editor, setEditor] = useState(null);\n const [value, setValue] = useState('');\n const isMountedRef = useRef(false);\n\n const onEnter = (cm) => {\n const cursor = cm.getCursor();\n const text = cm.getLine(cursor.line);\n const doc = cm.getDoc();\n\n const olRegexData = text.match(/^(\\s{0,})(\\d+)\\.\\s/);\n const ulRegexData = text.match(/^(\\s{0,})(-|\\*)\\s/);\n const blockquoteData = text.match(/^>\\s+?/g);\n\n if (olRegexData && text !== olRegexData[0]) {\n const num = olRegexData[2];\n\n doc.replaceSelection(`\\n${olRegexData[1]}${Number(num) + 1}. `);\n } else if (ulRegexData && text !== ulRegexData[0]) {\n doc.replaceSelection(`\\n${ulRegexData[1]}${ulRegexData[2]} `);\n } else if (blockquoteData && text !== blockquoteData[0]) {\n doc.replaceSelection(`\\n> `);\n } else if (\n text.trim() === '>' ||\n text.trim().match(/^\\d{1,}\\.$/) ||\n text.trim().match(/^(\\*|-)$/)\n ) {\n doc.replaceRange(`\\n`, { ...cursor, ch: 0 }, cursor);\n } else {\n doc.replaceSelection(`\\n`);\n }\n };\n\n const init = async () => {\n if (isMountedRef.current) {\n return false;\n }\n isMountedRef.current = true;\n\n const { default: codeMirror } = await import('codemirror');\n await import('codemirror/mode/markdown/markdown');\n await import('codemirror/addon/display/placeholder');\n\n const cm = codeMirror(editorRef?.current, {\n mode: 'markdown',\n lineWrapping: true,\n placeholder,\n });\n\n if (autoFocus) {\n setTimeout(() => {\n cm.focus();\n }, 10);\n }\n\n cm.on('change', (e) => {\n const newValue = e.getValue();\n setValue(newValue);\n });\n\n cm.on('focus', () => {\n onFocus?.();\n });\n cm.on('blur', () => {\n onBlur?.();\n });\n\n setEditor(cm);\n createEditorUtils(codeMirror, cm);\n\n cm.setSize('100%', '100%');\n cm.addKeyMap({\n Enter: onEnter,\n });\n return cm;\n };\n\n useEffect(() => {\n onChange?.(value);\n }, [value]);\n\n useEffect(() => {\n if (!(editorRef.current instanceof HTMLElement)) {\n return;\n }\n init();\n }, [editorRef]);\n\n return editor;\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, MouseEvent, ReactNode, useEffect, useState } from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport './index.css';\nimport classnames from 'classnames';\n\nconst Index: FC<{\n children: ReactNode;\n className?: classnames.Argument;\n}> = ({ children, className }) => {\n const [visible, setVisible] = useState(false);\n const [imgSrc, setImgSrc] = useState('');\n const onClose = () => {\n setVisible(false);\n setImgSrc('');\n };\n\n const checkIfInLink = (target) => {\n let ret = false;\n let el = target.parentElement;\n while (el) {\n if (el.nodeName.toLowerCase() === 'a') {\n ret = true;\n break;\n }\n el = el.parentElement;\n }\n return ret;\n };\n\n const checkClickForImgView = (evt: MouseEvent) => {\n const { target } = evt;\n // @ts-ignore\n if (target.nodeName.toLowerCase() !== 'img') {\n return;\n }\n const img = target as HTMLImageElement;\n if (!img.naturalWidth || !img.naturalHeight) {\n img.classList.add('broken');\n return;\n }\n const src = img.currentSrc || img.src;\n if (src && checkIfInLink(img) === false) {\n setImgSrc(src);\n setVisible(true);\n }\n };\n\n useEffect(() => {\n return () => {\n onClose();\n };\n }, []);\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n \n {children}\n \n \n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions */}\n {\n evt.stopPropagation();\n onClose();\n }}\n src={imgSrc}\n alt={imgSrc}\n />\n \n \n
\n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n forwardRef,\n useEffect,\n useRef,\n useState,\n memo,\n useImperativeHandle,\n} from 'react';\n\nimport { markdownToHtml } from '@/services';\nimport ImgViewer from '@/components/ImgViewer';\n\nimport { htmlRender } from './utils';\n\nlet scrollTop = 0;\nlet renderTimer;\n\nconst Index = ({ value }, ref) => {\n const [html, setHtml] = useState('');\n const previewRef = useRef(null);\n\n const renderMarkdown = (markdown) => {\n clearTimeout(renderTimer);\n const timeout = renderTimer ? 1000 : 0;\n renderTimer = setTimeout(() => {\n markdownToHtml(markdown).then((resp) => {\n scrollTop = previewRef.current?.scrollTop || 0;\n setHtml(resp);\n });\n }, timeout);\n };\n useEffect(() => {\n renderMarkdown(value);\n }, [value]);\n\n useEffect(() => {\n if (!html) {\n return;\n }\n\n previewRef.current?.scrollTo(0, scrollTop);\n\n htmlRender(previewRef.current);\n }, [html]);\n\n useImperativeHandle(ref, () => {\n return {\n getHtml: () => html,\n element: previewRef.current,\n };\n });\n\n return (\n \n \n \n );\n};\n\nexport default memo(forwardRef(Index));\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n useEffect,\n useRef,\n ForwardRefRenderFunction,\n forwardRef,\n useImperativeHandle,\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport PluginRender from '../PluginRender';\n\nimport {\n BlockQuote,\n Bold,\n Code,\n Heading,\n Help,\n Hr,\n Image,\n Indent,\n Italice,\n Link as LinkItem,\n OL,\n Outdent,\n Table,\n UL,\n} from './ToolBars';\nimport { htmlRender, useEditor } from './utils';\nimport Viewer from './Viewer';\nimport { EditorContext } from './EditorContext';\n\nimport './index.scss';\n\nexport interface EditorRef {\n getHtml: () => string;\n}\n\ninterface EventRef {\n onChange?(value: string): void;\n onFocus?(): void;\n onBlur?(): void;\n}\n\ninterface Props extends EventRef {\n editorPlaceholder?;\n className?;\n value;\n autoFocus?: boolean;\n}\n\nconst MDEditor: ForwardRefRenderFunction = (\n {\n editorPlaceholder = '',\n className = '',\n value,\n onChange,\n onFocus,\n onBlur,\n autoFocus = false,\n },\n ref,\n) => {\n const editorRef = useRef(null);\n const previewRef = useRef<{ getHtml; element } | null>(null);\n\n const editor = useEditor({\n editorRef,\n onChange,\n onFocus,\n onBlur,\n placeholder: editorPlaceholder,\n autoFocus,\n });\n\n const getHtml = () => {\n return previewRef.current?.getHtml();\n };\n\n useImperativeHandle(ref, () => ({\n getHtml,\n }));\n\n useEffect(() => {\n if (!editor) {\n return;\n }\n if (editor.getValue() !== value) {\n editor.setValue(value || '');\n }\n }, [editor, value]);\n\n return (\n <>\n
\n \n {editor && (\n \n \n \n \n
\n \n \n
\n \n \n
\n
    \n
      \n \n \n
      \n
      \n \n \n )}\n \n\n
      \n \n
      \n
      \n \n \n );\n};\nexport { htmlRender };\nexport default forwardRef(MDEditor);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, memo } from 'react';\nimport { Nav, Dropdown } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport { NavLink, useNavigate } from 'react-router-dom';\n\nimport type * as Type from '@/common/interface';\nimport { Avatar, Icon } from '@/components';\nimport { floppyNavigation } from '@/utils';\nimport { userCenterStore } from '@/stores';\n\ninterface Props {\n redDot: Type.NotificationStatus | undefined;\n userInfo: Type.UserInfoRes;\n logOut: (e) => void;\n}\n\nconst Index: FC = ({ redDot, userInfo, logOut }) => {\n const { t } = useTranslation();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const navigate = useNavigate();\n const { agent: ucAgent } = userCenterStore();\n const handleLinkClick = (evt) => {\n if (floppyNavigation.shouldProcessLinkClick(evt)) {\n evt.preventDefault();\n const href = evt.currentTarget.getAttribute('href');\n navigate(href);\n }\n };\n return (\n <>\n \n\n \n \n \n \n\n \n \n {t('header.nav.profile')}\n \n \n {t('header.nav.bookmark')}\n \n \n {t('header.nav.setting')}\n \n \n logOut(e)}>\n {t('header.nav.logout')}\n \n \n \n {/* Dropdown for user center agent info */}\n {ucAgent?.enabled &&\n (ucAgent?.agent_info?.url ||\n ucAgent?.agent_info?.control_center?.length) ? (\n \n \n \n \n\n \n {ucAgent.agent_info.url ? (\n \n {ucAgent.agent_info.name}\n \n ) : null}\n {ucAgent.agent_info.url &&\n ucAgent.agent_info.control_center?.length ? (\n \n ) : null}\n {ucAgent.agent_info.control_center?.map((ctrl) => {\n return (\n \n {ctrl.label}\n \n );\n })}\n \n \n ) : null}\n \n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, memo, useState, useEffect } from 'react';\nimport {\n Navbar,\n Container,\n Nav,\n Form,\n FormControl,\n Button,\n Col,\n} from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport {\n useSearchParams,\n Link,\n useNavigate,\n useLocation,\n useMatch,\n} from 'react-router-dom';\n\nimport classnames from 'classnames';\n\nimport { userCenter, floppyNavigation } from '@/utils';\nimport {\n loggedUserInfoStore,\n siteInfoStore,\n brandingStore,\n loginSettingStore,\n themeSettingStore,\n sideNavStore,\n} from '@/stores';\nimport { logout, useQueryNotificationStatus } from '@/services';\n\nimport NavItems from './components/NavItems';\n\nimport './index.scss';\n\nconst Header: FC = () => {\n const navigate = useNavigate();\n const location = useLocation();\n const [urlSearch] = useSearchParams();\n const q = urlSearch.get('q');\n const { user, clear: clearUserStore } = loggedUserInfoStore();\n const { t } = useTranslation();\n const [searchStr, setSearch] = useState('');\n const siteInfo = siteInfoStore((state) => state.siteInfo);\n const brandingInfo = brandingStore((state) => state.branding);\n const loginSetting = loginSettingStore((state) => state.login);\n const { updateReview, updateVisible } = sideNavStore();\n const { data: redDot } = useQueryNotificationStatus();\n /**\n * Automatically append `tag` information when creating a question\n */\n const tagMatch = useMatch('/tags/:slugName');\n let askUrl = '/questions/ask';\n if (tagMatch && tagMatch.params.slugName) {\n askUrl = `${askUrl}?tags=${encodeURIComponent(tagMatch.params.slugName)}`;\n }\n\n useEffect(() => {\n updateReview({\n can_revision: Boolean(redDot?.can_revision),\n revision: Number(redDot?.revision),\n });\n }, [redDot]);\n\n const handleInput = (val) => {\n setSearch(val);\n };\n const handleSearch = (evt) => {\n evt.preventDefault();\n if (!searchStr) {\n return;\n }\n const searchUrl = `/search?q=${encodeURIComponent(searchStr)}`;\n navigate(searchUrl);\n };\n\n const handleLogout = async (evt) => {\n evt.preventDefault();\n await logout();\n clearUserStore();\n window.location.replace(window.location.href);\n };\n\n useEffect(() => {\n if (q && location.pathname === '/search') {\n handleInput(q);\n }\n }, [q]);\n\n useEffect(() => {\n const collapse = document.querySelector('#navBarContent');\n if (collapse && collapse.classList.contains('show')) {\n const toggle = document.querySelector('#navBarToggle') as HTMLElement;\n if (toggle) {\n toggle?.click();\n }\n }\n\n // clear search input when navigate to other page\n if (location.pathname !== '/search' && searchStr) {\n setSearch('');\n }\n }, [location.pathname]);\n\n let navbarStyle = 'theme-colored';\n const { theme, theme_config } = themeSettingStore((_) => _);\n if (theme_config?.[theme]?.navbar_style) {\n navbarStyle = `theme-${theme_config[theme].navbar_style}`;\n }\n\n return (\n \n \n {\n updateVisible();\n }}\n />\n\n
      \n \n {brandingInfo.logo ? (\n <>\n \n\n \n \n ) : (\n {siteInfo.name}\n )}\n \n\n {/* mobile nav */}\n
      \n {user?.username ? (\n handleLogout(e)}\n />\n ) : (\n <>\n floppyNavigation.storageLoginRedirect()}\n href={userCenter.getLoginUrl()}>\n {t('btns.login')}\n \n {loginSetting.allow_new_registrations && (\n \n {t('btns.signup')}\n \n )}\n \n )}\n
      \n
      \n\n \n
      \n
\n \n handleInput(e.target.value)}\n />\n \n \n\n \n \n {t('btns.add_question')}\n \n \n {/* pc nav */}\n \n {user?.username ? (\n \n ) : (\n <>\n floppyNavigation.storageLoginRedirect()}\n href={userCenter.getLoginUrl()}>\n {t('btns.login')}\n \n {loginSetting.allow_new_registrations && (\n \n {t('btns.signup')}\n \n )}\n \n )}\n \n \n \n \n );\n};\n\nexport default memo(Header);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport { Container } from 'react-bootstrap';\nimport { Trans } from 'react-i18next';\n\nimport dayjs from 'dayjs';\n\nimport { siteInfoStore } from '@/stores';\n\nconst Index = () => {\n const fullYear = dayjs().format('YYYY');\n const siteName = siteInfoStore((state) => state.siteInfo.name);\n const cc = `${fullYear} ${siteName}`;\n return (\n
\n \n

\n \n Powered by\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Apache Answer\n \n - the open-source software that powers Q&A communities.\n
\n Made with love. © 2022 Answer.\n
\n

\n
\n
\n );\n};\n\nexport default React.memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\n\nimport classNames from 'classnames';\n\ninterface IProps {\n type?: 'br' | 'bi';\n /** icon name */\n name: string;\n className?: string;\n size?: string;\n title?: string;\n onClick?: () => void;\n}\nconst Icon: FC = ({\n type = 'br',\n name,\n className,\n size,\n onClick,\n title,\n}) => {\n return (\n \n );\n};\n\nexport default Icon;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\n\nimport { base64ToSvg } from '@/utils';\n\ninterface IProps {\n svgClassName?: string;\n base64: string | undefined;\n}\nconst Icon: FC = ({ base64 = '', svgClassName = '' }) => {\n return base64 ? (\n \n ) : null;\n};\n\nexport default Icon;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n/* eslint-disable no-nested-ternary */\nimport { FC, useState, useEffect, useRef } from 'react';\nimport { Dropdown, Button, Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport { marked } from 'marked';\nimport classNames from 'classnames';\n\nimport { useTagModal, useToast } from '@/hooks';\nimport type * as Type from '@/common/interface';\nimport { queryTags, useUserPermission } from '@/services';\n// import { OutsideClickListener } from '@/components';\n\nimport './index.scss';\n\ninterface IProps {\n value?: Type.Tag[];\n onChange?: (tags: Type.Tag[]) => void;\n hiddenDescription?: boolean;\n hiddenCreateBtn?: boolean;\n maxTagLength?: number;\n showRequiredTag?: boolean;\n autoFocus?: boolean;\n}\n\nlet timer;\n\nconst TagSelector: FC = ({\n value = [],\n onChange,\n hiddenDescription = false,\n hiddenCreateBtn = false,\n maxTagLength = 0,\n showRequiredTag = false,\n autoFocus = false,\n}) => {\n const containerRef = useRef(null);\n const inputRef = useRef(null);\n const [initialized, setInitialized] = useState(false);\n const [focusState, setFocusState] = useState(autoFocus);\n const [showMenu, setShowMenu] = useState(false);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [repeatIndex, setRepeatIndex] = useState(-1);\n const [searchValue, setSearchValue] = useState('');\n const [tags, setTags] = useState(null);\n const [requiredTags, setRequiredTags] = useState(null);\n const { t } = useTranslation('translation', { keyPrefix: 'tag_selector' });\n const { data: userPermission } = useUserPermission('tag.add');\n const canAddTag =\n (maxTagLength > 0 && value?.length < maxTagLength) || maxTagLength === 0;\n const toast = useToast();\n const tagModal = useTagModal({\n onConfirm: (data) => {\n if (!(onChange instanceof Function)) {\n return;\n }\n const findIndex = value.findIndex(\n (item) => item.slug_name.toLowerCase() === data.slug_name.toLowerCase(),\n );\n if (findIndex === -1) {\n onChange([\n ...value,\n {\n ...data,\n parsed_text: marked(data.original_text),\n },\n ]);\n setSearchValue('');\n } else {\n setRepeatIndex(findIndex);\n clearTimeout(timer);\n timer = setTimeout(() => {\n setRepeatIndex(-1);\n }, 2000);\n }\n },\n });\n\n const filterTags = (result) => {\n const tagArray: Type.Tag[] = [];\n result?.forEach((item) => {\n const findIndex = value.findIndex((v) => {\n const tagName1 = v.slug_name.toLowerCase();\n const tagName2 =\n typeof item === 'string'\n ? item.toLowerCase()\n : item.slug_name.toLowerCase();\n\n return tagName1 === tagName2;\n });\n\n if (findIndex === -1) {\n tagArray.push(typeof item === 'string' ? { slug_name: item } : item);\n }\n });\n return tagArray;\n };\n\n const handleMenuShow = (bol: boolean) => {\n setShowMenu(bol);\n const ele = document.getElementById('a-dropdown-menu');\n if (ele) {\n if (bol) {\n ele.classList.add('show');\n } else {\n ele.classList.remove('show');\n }\n }\n };\n\n const handleTagSelectorFocus = () => {\n setFocusState(true);\n inputRef.current?.focus();\n };\n\n const handleTagSelectorBlur = () => {\n setFocusState(false);\n setCurrentIndex(0);\n handleMenuShow(false);\n };\n\n const fetchTags = (str) => {\n if (!showRequiredTag && !str) {\n setTags([]);\n return;\n }\n queryTags(str).then((res) => {\n const tagArray: Type.Tag[] = filterTags(res || []);\n if (str === '') {\n setRequiredTags(res?.length > 5 ? res.slice(0, 5) : res);\n }\n handleMenuShow(tagArray.length > 0);\n setTags(tagArray?.length > 5 ? tagArray.slice(0, 5) : tagArray);\n });\n };\n\n const resetSearch = () => {\n setCurrentIndex(0);\n setSearchValue('');\n if (canAddTag) {\n const tagArray: Type.Tag[] = filterTags(requiredTags);\n setTags(tagArray.length > 0 ? tagArray : []);\n } else {\n setTags([]);\n }\n };\n const handleClick = (val: Type.Tag) => {\n const findIndex = value.findIndex(\n (item) => item.slug_name.toLowerCase() === val.slug_name.toLowerCase(),\n );\n if (onChange instanceof Function && findIndex === -1) {\n onChange([\n ...value,\n {\n original_text: '',\n parsed_text: '',\n ...val,\n },\n ]);\n } else {\n setRepeatIndex(findIndex);\n clearTimeout(timer);\n timer = setTimeout(() => {\n setRepeatIndex(-1);\n }, 2000);\n }\n resetSearch();\n };\n\n const handleRemove = (val: Type.Tag) => {\n if (onChange instanceof Function) {\n onChange(\n value.filter((v) => {\n if (v instanceof Object) {\n return v.slug_name.toLowerCase() !== val.slug_name.toLowerCase();\n }\n return v !== val;\n }),\n );\n }\n };\n\n const handleSearch = async (e: React.ChangeEvent) => {\n const searchStr = e.currentTarget.value.replace(';', '');\n setSearchValue(searchStr);\n fetchTags(searchStr);\n };\n\n const handleKeyDown = (e) => {\n e.stopPropagation();\n const { keyCode } = e;\n if (keyCode === 9) {\n handleTagSelectorBlur();\n return;\n }\n if (value.length > 0 && keyCode === 8 && !searchValue) {\n handleRemove(value[value.length - 1]);\n }\n\n if (!tags) {\n return;\n }\n\n if (keyCode === 38 && currentIndex > 0) {\n setCurrentIndex(currentIndex - 1);\n }\n if (keyCode === 40 && currentIndex < tags.length - 1) {\n setCurrentIndex(currentIndex + 1);\n }\n\n if (keyCode === 13 && currentIndex > -1) {\n e.preventDefault();\n if (tags.length === 0 && searchValue) {\n tagModal.onShow(searchValue);\n return;\n }\n if (currentIndex <= tags.length - 1) {\n handleClick(tags[currentIndex]);\n // if (currentIndex === tags.length - 1 && currentIndex > 0) {\n // setCurrentIndex(currentIndex - 1);\n // }\n }\n }\n };\n\n const handleCreate = () => {\n const tagAddPermission = userPermission?.['tag.add'];\n if (!tagAddPermission || tagAddPermission?.has_permission) {\n tagModal.onShow(searchValue);\n } else if (tagAddPermission?.no_permission_tip) {\n toast.onShow({\n msg: tagAddPermission.no_permission_tip,\n variant: 'danger',\n });\n }\n };\n\n const handleClickToggle = () => {\n const menuHasContent =\n (tags && tags?.length > 0) ||\n (searchValue && tags?.length === 0) ||\n (searchValue && !hiddenCreateBtn);\n if (canAddTag && menuHasContent) {\n handleMenuShow(true);\n } else {\n handleMenuShow(false);\n }\n };\n\n useEffect(() => {\n if (canAddTag) {\n const tagArray: Type.Tag[] = filterTags(requiredTags);\n setTags(tagArray.length > 0 ? tagArray : []);\n } else {\n setTags([]);\n }\n }, [value]);\n\n useEffect(() => {\n if (focusState && showRequiredTag) {\n fetchTags(searchValue);\n inputRef.current?.focus();\n }\n }, [focusState]);\n\n useEffect(() => {\n setInitialized(true);\n }, []);\n\n useEffect(() => {\n const handleOutsideClick = (event) => {\n if (\n initialized &&\n containerRef.current &&\n !containerRef.current?.contains(event.target)\n ) {\n handleTagSelectorBlur();\n }\n };\n document.addEventListener('click', handleOutsideClick);\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n };\n }, [initialized]);\n\n useEffect(() => {\n // menu show\n const menuHasContent =\n (tags && tags?.length > 0) ||\n (searchValue && tags?.length === 0) ||\n (searchValue && !hiddenCreateBtn);\n if (focusState) {\n if (canAddTag && menuHasContent) {\n handleMenuShow(true);\n } else {\n handleMenuShow(false);\n }\n\n if ((tags && tags?.length < 5) || maxTagLength === 0) {\n inputRef.current?.focus();\n }\n }\n }, [focusState, tags, hiddenCreateBtn, searchValue, maxTagLength]);\n\n useEffect(() => {\n // set width of tag Form.Control\n const ele = document.querySelector('.a-input-width') as HTMLElement;\n if (ele.offsetWidth > 60) {\n inputRef.current?.setAttribute(\n 'style',\n `width:${ele.offsetWidth + 16}px`,\n );\n } else {\n inputRef.current?.setAttribute('style', 'width: 60px');\n }\n }, [searchValue]);\n\n return (\n
\n \n
\n \n {value?.map((item, index) => {\n return (\n \n {item.display_name}\n handleRemove(item)}>\n ×\n \n \n );\n })}\n {canAddTag ? (\n \n ) : (\n \n )}\n {searchValue}\n
\n
\n \n {!searchValue &&\n showRequiredTag &&\n tags &&\n tags.filter((v) => v.recommend)?.length > 0 && (\n
{t('tag_required_text')}
\n )}\n\n {tags?.map((item, index) => {\n return (\n handleClick(item)}>\n {item.display_name}\n \n );\n })}\n {searchValue && tags?.length === 0 && (\n \n {t('no_result')}\n \n )}\n {!hiddenCreateBtn && searchValue && (\n \n + {t('create_btn')}\n \n )}\n
\n \n {!hiddenDescription && {t('hint')}}\n \n );\n};\n\nexport default TagSelector;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { useState } from 'react';\nimport { Button, Col } from 'react-bootstrap';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\n\nimport type { ImgCodeReq, FormDataType } from '@/common/interface';\nimport { loggedUserInfoStore } from '@/stores';\nimport { resendEmail } from '@/services';\nimport { handleFormError } from '@/utils';\nimport { useCaptchaModal } from '@/hooks';\n\ninterface IProps {\n visible?: boolean;\n}\n\nconst Index: React.FC = () => {\n const { t } = useTranslation('translation', { keyPrefix: 'inactive' });\n const [isSuccess, setSuccess] = useState(false);\n const { e_mail } = loggedUserInfoStore((state) => state.user);\n const [formData, setFormData] = useState({\n captcha_code: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n });\n\n const emailCaptcha = useCaptchaModal('email');\n\n const submit = () => {\n let req: ImgCodeReq = {};\n const imgCode = emailCaptcha.getCaptcha();\n if (imgCode.verify) {\n req = {\n captcha_code: imgCode.captcha_code,\n captcha_id: imgCode.captcha_id,\n };\n }\n resendEmail(req)\n .then(async () => {\n await emailCaptcha.close();\n setSuccess(true);\n })\n .catch((err) => {\n if (err.isError) {\n emailCaptcha.handleCaptchaError(err.list);\n const data = handleFormError(err, formData);\n setFormData({ ...data });\n }\n });\n };\n\n const onSentEmail = (evt) => {\n evt.preventDefault();\n emailCaptcha.check(() => {\n submit();\n });\n };\n\n return (\n
\n {isSuccess ? (\n

\n }}\n />\n

\n ) : (\n <>\n

\n }}\n />\n

\n

{t('info')}

\n \n \n {t('change_btn_name')}\n \n \n )}\n \n );\n};\n\nexport default React.memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport classnames from 'classnames';\n\nimport { uploadImage } from '@/services';\nimport * as Type from '@/common/interface';\n\ninterface IProps {\n type: Type.UploadType;\n className?: classnames.Argument;\n children?: React.ReactNode;\n acceptType?: string;\n disabled?: boolean;\n uploadCallback: (img: string) => void;\n}\n\nconst Index: React.FC = ({\n type,\n uploadCallback,\n children,\n acceptType = '',\n className,\n disabled = false,\n}) => {\n const { t } = useTranslation();\n const [status, setStatus] = useState(false);\n\n const onChange = (e: any) => {\n if (status) {\n return;\n }\n if (e.target.files[0]) {\n // const fileSize = e.target.files[0].size || 0;\n\n // if (maxSize && fileSize / 1024 / 1024 > 2) {\n // Modal.confirm({\n // content: '请上传小于 2M 的图片',\n // });\n // return;\n // }\n setStatus(true);\n uploadImage({ file: e.target.files[0], type })\n .then((res) => {\n uploadCallback(res);\n })\n .finally(() => {\n setStatus(false);\n });\n }\n };\n\n return (\n \n {children || (status ? t('upload_img.loading') : t('upload_img.name'))}\n \n \n );\n};\n\nexport default React.memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC, useState, useEffect } from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport classNames from 'classnames';\n\nimport { Icon } from '@/components';\nimport { loggedUserInfoStore } from '@/stores';\nimport { useToast, useCaptchaModal } from '@/hooks';\nimport { tryNormalLogged } from '@/utils/guard';\nimport { bookmark, postVote } from '@/services';\nimport * as Types from '@/common/interface';\n\ninterface Props {\n className?: string;\n source: 'question' | 'answer';\n data: {\n id: string;\n votesCount: number;\n isLike: boolean;\n isHate: boolean;\n hideCollect?: boolean;\n collected: boolean;\n collectCount: number;\n username: string;\n };\n}\n\nconst Index: FC = ({ className, data, source }) => {\n const [votes, setVotes] = useState(0);\n const [like, setLike] = useState(false);\n const [hate, setHated] = useState(false);\n const [bookmarkState, setBookmark] = useState({\n state: data?.collected,\n count: data?.collectCount,\n });\n const { username = '' } = loggedUserInfoStore((state) => state.user);\n const toast = useToast();\n const { t } = useTranslation();\n const vCaptcha = useCaptchaModal('vote');\n\n useEffect(() => {\n if (data) {\n setVotes(data.votesCount);\n setLike(data.isLike);\n setHated(data.isHate);\n setBookmark({\n state: data?.collected,\n count: data?.collectCount,\n });\n }\n }, []);\n\n const handleVote = (type: 'up' | 'down') => {\n if (!tryNormalLogged(true)) {\n return;\n }\n\n if (data.username === username) {\n toast.onShow({\n msg: t('cannot_vote_for_self'),\n variant: 'danger',\n });\n return;\n }\n const isCancel = (type === 'up' && like) || (type === 'down' && hate);\n vCaptcha.check(() => {\n const imgCode: Types.ImgCodeReq = {\n captcha_id: undefined,\n captcha_code: undefined,\n };\n vCaptcha.resolveCaptchaReq(imgCode);\n postVote(\n {\n object_id: data?.id,\n is_cancel: isCancel,\n ...imgCode,\n },\n type,\n )\n .then(async (res) => {\n await vCaptcha.close();\n setVotes(res.votes);\n setLike(res.vote_status === 'vote_up');\n setHated(res.vote_status === 'vote_down');\n })\n .catch((err) => {\n if (err?.isError) {\n vCaptcha.handleCaptchaError(err.list);\n }\n const errMsg = err?.value;\n if (errMsg) {\n toast.onShow({\n msg: errMsg,\n variant: 'danger',\n });\n }\n });\n });\n };\n\n const handleBookmark = () => {\n if (!tryNormalLogged(true)) {\n return;\n }\n bookmark({\n group_id: '0',\n object_id: data?.id,\n bookmark: !bookmarkState.state,\n }).then((res) => {\n setBookmark({\n state: !bookmarkState.state,\n count: res.object_collection_count,\n });\n });\n };\n\n return (\n
\n \n handleVote('up')}>\n \n \n \n handleVote('down')}>\n \n \n \n {!data?.hideCollect && (\n \n \n {bookmarkState.count}\n \n )}\n
\n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { memo, FC } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport classNames from 'classnames';\n\nimport { Tag } from '@/common/interface';\nimport { pathFactory } from '@/router/pathFactory';\n\ninterface IProps {\n data: Tag;\n href?: string;\n className?: string;\n textClassName?: string;\n}\n\nconst Index: FC = ({\n data,\n href,\n className = '',\n textClassName = '',\n}) => {\n href ||= pathFactory.tagLanding(encodeURIComponent(data.slug_name));\n\n return (\n \n \n {data.display_name || data.slug_name}\n \n \n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC, useState, useEffect } from 'react';\nimport { Dropdown, OverlayTrigger, Tooltip } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport { FacebookShareButton, TwitterShareButton } from 'next-share';\nimport copy from 'copy-to-clipboard';\n\nimport { loggedUserInfoStore } from '@/stores';\n\ninterface IProps {\n type: 'answer' | 'question';\n qid: any;\n aid?: any;\n title: string;\n // slugTitle: string;\n}\n\nconst Index: FC = ({ type, qid, aid, title }) => {\n const user = loggedUserInfoStore((state) => state.user);\n const [show, setShow] = useState(false);\n const [showTip, setShowTip] = useState(false);\n const [canSystemShare, setSystemShareState] = useState(false);\n const { t } = useTranslation();\n let baseUrl =\n type === 'question'\n ? `${window.location.origin}/questions/${qid}`\n : `${window.location.origin}/questions/${qid}/${aid}`;\n if (user.id) {\n baseUrl = `${baseUrl}?shareUserId=${user.username}`;\n }\n\n const closeShare = () => {\n setShowTip(false);\n setShow(false);\n };\n\n const handleCopy = (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n let copyText = baseUrl;\n if (title) {\n copyText = `${title} ${baseUrl}`;\n }\n copy(copyText);\n setShowTip(true);\n setTimeout(closeShare, 1000);\n };\n\n const systemShare = () => {\n navigator.share({\n title,\n text: `${title} - Answer:`,\n url: baseUrl,\n });\n };\n useEffect(() => {\n if (window.navigator?.canShare?.({ text: 'can_share' })) {\n setSystemShareState(true);\n }\n }, []);\n return (\n \n setShow(true)}\n style={{ lineHeight: '23px' }}>\n {t('share.name')}\n \n \n {t('share.copied')}}>\n \n {t('share.copy')}\n \n \n \n \n {t('share.facebook')}\n \n \n \n \n {t('share.twitter')}\n \n \n {canSystemShare && (\n {t('share.via')}\n )}\n \n \n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC } from 'react';\nimport { Button, Dropdown } from 'react-bootstrap';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\nimport { Modal } from '@/components';\nimport { useReportModal, useToast, useCaptchaModal } from '@/hooks';\nimport { QuestionOperationReq } from '@/common/interface';\nimport Share from '../Share';\nimport {\n deleteQuestion,\n deleteAnswer,\n editCheck,\n reopenQuestion,\n questionOperation,\n unDeleteAnswer,\n unDeleteQuestion,\n} from '@/services';\nimport { tryNormalLogged } from '@/utils/guard';\nimport { floppyNavigation } from '@/utils';\nimport { toastStore } from '@/stores';\n\ninterface IProps {\n type: 'answer' | 'question';\n qid: string;\n aid?: string;\n title: string;\n hasAnswer?: boolean;\n isAccepted: boolean;\n callback: (type: string) => void;\n memberActions;\n}\nconst Index: FC = ({\n type,\n qid,\n aid = '',\n title,\n isAccepted = false,\n hasAnswer = false,\n memberActions = [],\n callback,\n}) => {\n const { t } = useTranslation('translation', { keyPrefix: 'delete' });\n const toast = useToast();\n const navigate = useNavigate();\n const reportModal = useReportModal();\n const dCaptcha = useCaptchaModal('delete');\n\n const refreshQuestion = () => {\n callback?.('default');\n };\n const closeModal = useReportModal(refreshQuestion);\n const editUrl =\n type === 'answer' ? `/posts/${qid}/${aid}/edit` : `/posts/${qid}/edit`;\n\n const handleReport = () => {\n reportModal.onShow({\n type,\n id: type === 'answer' ? aid : qid,\n action: 'flag',\n });\n };\n\n const handleClose = () => {\n closeModal.onShow({\n type,\n id: qid,\n action: 'close',\n });\n };\n\n const handleDelete = () => {\n if (type === 'question') {\n Modal.confirm({\n title: t('title'),\n content: hasAnswer ? t('question') : t('other'),\n cancelBtnVariant: 'link',\n confirmBtnVariant: 'danger',\n confirmText: t('delete', { keyPrefix: 'btns' }),\n onConfirm: () => {\n dCaptcha.check(() => {\n const req = {\n id: qid,\n captcha_code: undefined,\n captcha_id: undefined,\n };\n dCaptcha.resolveCaptchaReq(req);\n\n deleteQuestion(req)\n .then(async () => {\n await dCaptcha.close();\n toast.onShow({\n msg: t('post_deleted', { keyPrefix: 'messages' }),\n variant: 'success',\n });\n callback?.('delete_question');\n })\n .catch((ex) => {\n if (ex.isError) {\n dCaptcha.handleCaptchaError(ex.list);\n }\n });\n });\n },\n });\n }\n\n if (type === 'answer' && aid) {\n Modal.confirm({\n title: t('title'),\n content: isAccepted ? t('answer_accepted') : t('other'),\n cancelBtnVariant: 'link',\n confirmBtnVariant: 'danger',\n confirmText: t('delete', { keyPrefix: 'btns' }),\n onConfirm: () => {\n dCaptcha.check(() => {\n const req = {\n id: aid,\n captcha_code: undefined,\n captcha_id: undefined,\n };\n dCaptcha.resolveCaptchaReq(req);\n\n deleteAnswer(req)\n .then(async () => {\n await dCaptcha.close();\n // refresh page\n toast.onShow({\n msg: t('tip_answer_deleted'),\n variant: 'success',\n });\n callback?.('delete_answer');\n })\n .catch((ex) => {\n if (ex.isError) {\n dCaptcha.handleCaptchaError(ex.list);\n }\n });\n });\n },\n });\n }\n };\n\n const handleUndelete = () => {\n Modal.confirm({\n title: t('undelete_title'),\n content: t('undelete_desc'),\n cancelBtnVariant: 'link',\n confirmBtnVariant: 'danger',\n confirmText: t('undelete', { keyPrefix: 'btns' }),\n onConfirm: () => {\n if (type === 'question') {\n unDeleteQuestion(qid).then(() => {\n callback?.('default');\n });\n }\n\n if (type === 'answer') {\n unDeleteAnswer(aid).then(() => {\n callback?.('all');\n });\n }\n },\n });\n };\n\n const handleEdit = (evt, targetUrl) => {\n if (!floppyNavigation.shouldProcessLinkClick(evt)) {\n return;\n }\n evt.preventDefault();\n let checkObjectId = qid;\n if (type === 'answer') {\n checkObjectId = aid;\n }\n editCheck(checkObjectId).then(() => {\n navigate(targetUrl);\n });\n };\n\n const handleReopen = () => {\n Modal.confirm({\n title: t('title', { keyPrefix: 'question_detail.reopen' }),\n content: t('content', { keyPrefix: 'question_detail.reopen' }),\n cancelBtnVariant: 'link',\n confirmText: t('confirm_btn', { keyPrefix: 'question_detail.reopen' }),\n onConfirm: () => {\n reopenQuestion({\n question_id: qid,\n }).then(() => {\n toast.onShow({\n msg: t('post_reopen', { keyPrefix: 'messages' }),\n variant: 'success',\n });\n refreshQuestion();\n });\n },\n });\n };\n\n const handleCommon = async (params) => {\n await questionOperation(params);\n let msg = '';\n if (params.operation === 'pin') {\n msg = t('post_pin', { keyPrefix: 'messages' });\n }\n if (params.operation === 'unpin') {\n msg = t('post_unpin', { keyPrefix: 'messages' });\n }\n if (params.operation === 'hide') {\n msg = t('post_hide_list', { keyPrefix: 'messages' });\n }\n if (params.operation === 'show') {\n msg = t('post_show_list', { keyPrefix: 'messages' });\n }\n toastStore.getState().show({\n msg,\n variant: 'success',\n });\n setTimeout(() => {\n refreshQuestion();\n }, 100);\n };\n\n const handlOtherActions = (action) => {\n const params: QuestionOperationReq = {\n id: qid,\n operation: action,\n };\n\n if (action === 'pin') {\n Modal.confirm({\n title: t('title', { keyPrefix: 'question_detail.pin' }),\n content: t('content', { keyPrefix: 'question_detail.pin' }),\n cancelBtnVariant: 'link',\n confirmText: t('confirm_btn', { keyPrefix: 'question_detail.pin' }),\n onConfirm: () => {\n handleCommon(params);\n },\n });\n } else {\n handleCommon(params);\n }\n };\n\n const handleAction = (action) => {\n if (!tryNormalLogged(true)) {\n return;\n }\n if (action === 'delete') {\n handleDelete();\n }\n\n if (action === 'undelete') {\n handleUndelete();\n }\n\n if (action === 'report') {\n handleReport();\n }\n\n if (action === 'close') {\n handleClose();\n }\n\n if (action === 'reopen') {\n handleReopen();\n }\n\n if (\n action === 'pin' ||\n action === 'unpin' ||\n action === 'hide' ||\n action === 'show'\n ) {\n handlOtherActions(action);\n }\n };\n\n const firstAction =\n memberActions?.filter(\n (v) =>\n v.action === 'report' ||\n v.action === 'edit' ||\n v.action === 'delete' ||\n v.action === 'undelete',\n ) || [];\n const secondAction =\n memberActions?.filter(\n (v) =>\n v.action === 'close' ||\n v.action === 'reopen' ||\n v.action === 'pin' ||\n v.action === 'unpin' ||\n v.action === 'hide' ||\n v.action === 'show',\n ) || [];\n\n return (\n
\n \n {firstAction?.map((item) => {\n if (item.action === 'edit') {\n return (\n handleEdit(evt, editUrl)}\n style={{ lineHeight: '23px' }}>\n {item.name}\n \n );\n }\n return (\n handleAction(item.action)}>\n {item.name}\n \n );\n })}\n {secondAction.length > 0 && (\n \n \n {t('action', { keyPrefix: 'question_detail' })}\n \n \n {secondAction.map((item) => {\n return (\n handleAction(item.action)}>\n {item.name}\n \n );\n })}\n \n \n )}\n
\n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport classnames from 'classnames';\n\nimport { Avatar, FormatTime } from '@/components';\nimport { formatCount } from '@/utils';\n\ninterface Props {\n data: any;\n time: number;\n preFix: string;\n isLogged: boolean;\n timelinePath: string;\n className?: string;\n}\n\nconst Index: FC = ({\n data,\n time,\n preFix,\n isLogged,\n timelinePath,\n className = '',\n}) => {\n return (\n
\n {data?.status !== 'deleted' ? (\n \n \n\n \n \n ) : (\n <>\n \n\n \n \n )}\n
\n
\n {data?.status !== 'deleted' ? (\n \n {data?.display_name}\n \n ) : (\n {data?.display_name}\n )}\n \n {formatCount(data?.rank)}\n \n
\n {time &&\n (isLogged ? (\n \n \n \n ) : (\n \n ))}\n
\n
\n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC } from 'react';\nimport { Pagination } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport { useSearchParams, useNavigate, useLocation } from 'react-router-dom';\n\nimport { scrollToDocTop, floppyNavigation } from '@/utils';\n\ninterface Props {\n currentPage: number;\n pageSize: number;\n totalSize: number;\n pathname?: string;\n}\n\ninterface PageItemProps {\n page: number;\n currentPage: number;\n path: string;\n}\n\nconst pageArr = [\n {\n href: '1',\n page: 1,\n },\n {\n href: '#!',\n page: 2,\n },\n {\n href: '#!',\n page: 3,\n },\n {\n href: '#!',\n page: 4,\n },\n {\n href: '#!',\n page: 5,\n },\n];\n\nconst PageItem = ({ page, currentPage, path }: PageItemProps) => {\n const navigate = useNavigate();\n return (\n {\n if (floppyNavigation.shouldProcessLinkClick(e)) {\n e.preventDefault();\n e.stopPropagation();\n navigate(path);\n scrollToDocTop();\n }\n }}>\n {page}\n \n );\n};\n\nconst Index: FC = ({\n currentPage = 1,\n pageSize = 15,\n totalSize = 0,\n pathname = '',\n}) => {\n const { t } = useTranslation('translation', { keyPrefix: 'pagination' });\n const location = useLocation();\n if (!pathname) {\n pathname = location.pathname;\n }\n const [searchParams] = useSearchParams();\n const navigate = useNavigate();\n const totalPage = Math.ceil(totalSize / pageSize);\n const realPage = currentPage > totalPage ? totalPage : currentPage;\n\n const mapPage = pageArr.filter((i) => i.page <= totalPage);\n\n if (totalPage <= 1) {\n return null;\n }\n\n const handleParams = (pageNum): string => {\n searchParams.set('page', String(pageNum));\n const searchStr = searchParams.toString();\n return `${pathname}?${searchStr}`;\n };\n return (\n \n {currentPage > 1 && (\n {\n if (floppyNavigation.shouldProcessLinkClick(e)) {\n e.preventDefault();\n navigate(handleParams(currentPage - 1));\n scrollToDocTop();\n }\n }}>\n {t('prev')}\n \n )}\n {currentPage >= 1 && currentPage <= 4 && (\n <>\n {mapPage.map((item) => {\n return (\n \n );\n })}\n \n )}\n {currentPage === 4 && totalPage > 6 && (\n \n )}\n\n {currentPage > 4 && (\n <>\n \n\n \n \n )}\n {currentPage >= 5 && (\n <>\n \n \n \n )}\n\n {currentPage > totalPage && (\n \n )}\n\n {currentPage >= 5 &&\n totalPage >= currentPage &&\n new Array(\n totalPage <= 3\n ? totalPage - currentPage + 1\n : Math.min(totalPage - currentPage + 1, 3),\n )\n .fill('')\n .map((v, i) => {\n return (\n \n );\n })}\n {totalPage > 5 && realPage + 2 < totalPage && (\n \n )}\n\n {totalPage > 0 && currentPage < totalPage && (\n {\n if (floppyNavigation.shouldProcessLinkClick(e)) {\n e.preventDefault();\n navigate(handleParams(currentPage + 1));\n scrollToDocTop();\n }\n }}>\n {t('next')}\n \n )}\n \n );\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useState, useEffect, memo } from 'react';\nimport { Button, Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport classNames from 'classnames';\n\nimport { TextArea, Mentions } from '@/components';\nimport { usePageUsers, usePromptWithUnload } from '@/hooks';\nimport { parseEditMentionUser } from '@/utils';\n\nconst Index = ({\n className = '',\n value: initialValue = '',\n onSendReply,\n type = '',\n onCancel,\n mode,\n}) => {\n const [value, setValue] = useState('');\n const [immData, setImmData] = useState('');\n const pageUsers = usePageUsers();\n const { t } = useTranslation('translation', { keyPrefix: 'comment' });\n const [validationErrorMsg, setValidationErrorMsg] = useState('');\n\n usePromptWithUnload({\n when: type === 'edit' ? immData !== value : Boolean(value),\n });\n useEffect(() => {\n if (!initialValue) {\n return;\n }\n setImmData(initialValue);\n setValue(initialValue);\n }, [initialValue]);\n\n const handleChange = (e) => {\n setValue(e.target.value);\n };\n const handleSelected = (val) => {\n setValue(val);\n };\n const handleSendReply = () => {\n onSendReply(value).catch((ex) => {\n if (ex.isError) {\n setValidationErrorMsg(ex.msg);\n }\n });\n };\n return (\n \n
\n \n \n \n \n
{t(`tip_${mode}`)}
\n
\n \n {validationErrorMsg}\n \n \n {type === 'edit' ? (\n
\n handleSendReply()}>\n {t('btn_save_edits')}\n \n \n {t('btn_cancel')}\n \n
\n ) : (\n handleSendReply()}>\n {t('btn_add_comment')}\n \n )}\n \n );\n};\n\nexport default memo(Index);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo } from 'react';\nimport { Button, Dropdown } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\n\nimport classNames from 'classnames';\n\nimport { Icon, FormatTime } from '@/components';\n\nconst ActionBar = ({\n nickName,\n username,\n createdAt,\n isVote,\n voteCount = 0,\n memberActions,\n onReply,\n onVote,\n onAction,\n userStatus = '',\n}) => {\n const { t } = useTranslation('translation', { keyPrefix: 'comment' });\n\n return (\n
\n
\n {userStatus !== 'deleted' ? (\n \n {nickName}\n \n ) : (\n {nickName}\n )}\n \n \n \n \n {voteCount > 0 && {voteCount}}\n \n \n {t('btn_reply')}\n \n
\n
\n {memberActions.map((action, index) => {\n return (\n 0 && 'ms-3',\n )}\n onClick={() => onAction(action)}>\n {action.name}\n \n );\n })}\n
\n \n \n \n \n\n \n {memberActions.map((action) => {\n return (\n onAction(action)}>\n {action.name}\n \n );\n })}\n \n \n
\n );\n};\n\nexport default memo(ActionBar);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useState, memo } from 'react';\nimport { Button, Form } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport classNames from 'classnames';\n\nimport { TextArea, Mentions } from '@/components';\nimport { usePageUsers, usePromptWithUnload } from '@/hooks';\n\nconst Index = ({ userName, onSendReply, onCancel, mode }) => {\n const [value, setValue] = useState('');\n const pageUsers = usePageUsers();\n const { t } = useTranslation('translation', { keyPrefix: 'comment' });\n const [validationErrorMsg, setValidationErrorMsg] = useState('');\n\n usePromptWithUnload({\n when: Boolean(value),\n });\n\n const handleChange = (e) => {\n setValue(e.target.value);\n };\n const handleSelected = (val) => {\n setValue(val);\n };\n const handleSendReply = () => {\n onSendReply(value).catch((ex) => {\n if (ex.isError) {\n setValidationErrorMsg(ex.msg);\n }\n });\n };\n\n return (\n
\n
\n {t('reply_to')} {userName}\n
\n
\n
\n \n \n