/* eslint-disable no-useless-escape */ import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { createSubscribedElement } from '../../UnstatedUtils'; import { toastSuccess, toastError } from '../../../util/apiNotification'; import AppContainer from '../../../services/AppContainer'; import AdminCustomizeContainer from '../../../services/AdminCustomizeContainer'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; class CustomizeHighlightSetting extends React.Component { constructor(props) { super(props); this.onClickSubmit = this.onClickSubmit.bind(this); } async onClickSubmit() { const { t, adminCustomizeContainer } = this.props; try { await adminCustomizeContainer.updateHighlightJsStyle(); toastSuccess(t('toaster.update_successed', { target: t('admin:customize_setting.code_highlight') })); } catch (err) { toastError(err); } } renderHljsDemo() { const { adminCustomizeContainer } = this.props; /* eslint-disable max-len */ const html = `function MersenneTwister(seed) { if (arguments.length == 0) { seed = new Date().getTime(); } this._mt = new Array(624); this.setSeed(seed); }`; /* eslint-enable max-len */ return (
        {/* eslint-disable-next-line react/no-danger */}
        
      
); } render() { const { t, adminCustomizeContainer } = this.props; const options = adminCustomizeContainer.state.highlightJsCssSelectorOptions; const menuItem = []; Object.entries(options).forEach((option) => { const styleId = option[0]; const styleName = option[1].name; const isBorderEnable = option[1].border; menuItem.push(
  • adminCustomizeContainer.switchHighlightJsStyle(styleId, styleName, isBorderEnable)}> {styleName}
  • , ); }); return (

    {t('admin:customize_setting.code_highlight')}

    {/* TODO adjust dropdown after BS4 */}
      {menuItem}
    {/* eslint-disable-next-line react/no-danger */}

    { adminCustomizeContainer.switchHighlightJsStyleBorder() }} />
    {this.renderHljsDemo()}
    ); } } const CustomizeHighlightSettingWrapper = (props) => { return createSubscribedElement(CustomizeHighlightSetting, props, [AppContainer, AdminCustomizeContainer]); }; CustomizeHighlightSetting.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, adminCustomizeContainer: PropTypes.instanceOf(AdminCustomizeContainer).isRequired, }; export default withTranslation()(CustomizeHighlightSettingWrapper);