{"version":3,"sources":["../node_modules/markdown-it-imsize/lib/imsize/types sync /^/.//.*$","../node_modules/codemirror/mode lazy /^/.//.*/.js$/ groupOptions: {} namespace object","icon/Copy.js","icon/Down.js","icon/Environment.js","icon/GitHub.js","icon/Inbox.js","icon/More.js","icon/Rabbit.js","icon/Smile.js","icon/Mobile.js","icon/PC.js","icon/Wechat.js","icon/Zhihu.js","icon/Juejin.js","icon/Close.js","icon/FontCase.js","icon/Replace.js","icon/ReplaceAll.js","icon/User.js","icon/Issue.js","icon/index.js","utils/constant.js","component/ImageHosting/AliOSS.js","component/ImageHosting/QiniuOSS.js","component/ImageHosting/Gitee.js","component/ImageHosting/GitHub.js","store/imageHosting.js","utils/markdown-it-math.js","utils/markdown-it-span.js","utils/markdown-it-linkfoot.js","utils/markdown-it-imageflow.js","utils/markdown-it-multiquote.js","utils/langHighlight.js","utils/helper.js","utils/markdown-it-table-container.js","utils/markdown-it-li.js","utils/imageHosting.js","utils/appContext.js","component/Dialog/ImageDialog.js","component/Dialog/LinkDialog.js","component/Dialog/AboutDialog.js","component/Dialog/VersionDialog.js","component/Dialog/FormDialog.js","component/LocalHistory/index.js","component/LocalHistory/util.js","component/LocalHistory/indexdb.js","component/Dialog/HistoryDialog.js","utils/sitdownConverter.js","component/Dialog/SitDownDialog.js","component/Dialog/TutorialDialog.js","layout/Dialog.js","component/MenuLeft/File/ExportMarkdown.js","component/MenuLeft/File/ExportPdf.js","component/MenuLeft/File/ImportFile.js","component/MenuLeft/File.js","component/MenuLeft/Help/About.js","component/MenuLeft/Help/Version.js","component/MenuLeft/Help/Document.js","component/MenuLeft/Help/Question.js","component/MenuLeft/Help.js","component/MenuLeft/Tutorial.js","utils/editorKeyEvents.js","utils/hotkey.js","component/MenuLeft/Pattern/Bold.js","component/MenuLeft/Pattern/Code.js","component/MenuLeft/Pattern/Del.js","component/MenuLeft/Pattern/Italic.js","component/MenuLeft/Pattern/Link.js","component/MenuLeft/Pattern/Form.js","component/MenuLeft/Pattern/Image.js","component/MenuLeft/Pattern/Format.js","component/MenuLeft/Pattern/LinkToFoot.js","component/MenuLeft/Pattern/Font.js","component/MenuLeft/Pattern/InlineCode.js","component/MenuLeft/Pattern.js","template/index.js","template/basic.js","template/markdown/blue.js","template/markdown/blueMountain.js","template/markdown/blueCyan.js","template/markdown/normal.js","template/markdown/custom.js","template/markdown/cyan.js","template/markdown/geekBlack.js","template/markdown/green.js","template/markdown/ink.js","template/markdown/orangeHeart.js","template/markdown/purple.js","template/markdown/red.js","template/markdown/scienceBlue.js","template/markdown/shanchui.js","template/markdown/simple.js","template/markdown/wechatFormat.js","template/markdown/rose.js","template/markdown/cuteGreen.js","template/markdown/fullStackBlue.js","template/markdown/nightPurple.js","template/markdown/extremeBlack.js","template/code/atomOneDark.js","template/code/atomOneLight.js","template/code/github.js","template/code/monokai.js","template/code/vs2015.js","template/code/xcode.js","template/macCode/macAtomOneDark.js","template/macCode/macAtomOneLight.js","template/macCode/macGithub.js","template/macCode/macMonokai.js","template/macCode/macVs2015.js","template/macCode/macXcode.js","component/MenuLeft/Function/Reset.js","component/MenuLeft/Function/Search.js","component/MenuLeft/Function/History.js","component/MenuLeft/Function/SitDown.js","component/MenuLeft/Function.js","component/MenuLeft/Theme.js","component/MenuLeft/CodeTheme.js","component/MenuLeft/Setting/SyncScroll.js","component/MenuLeft/Setting/ContainImgName.js","component/MenuLeft/Setting.js","component/MenuLeft/View/FullScreen.js","component/MenuLeft/View/EditArea.js","component/MenuLeft/View/PreviewArea.js","component/MenuLeft/View/ThemeArea.js","component/MenuLeft/View.js","layout/Navbar.js","layout/Footer.js","component/Sidebar/PreviewType.js","utils/converter.js","component/Sidebar/Wechat.js","component/Sidebar/Zhihu.js","store/pinggu/threadDataStore.js","component/pinggu/ThreadDialog.js","component/Sidebar/Issue.js","component/Sidebar/Juejin.js","layout/Sidebar.js","layout/StyleEditor.js","layout/EditorMenu.js","component/SearchBox/index.js","utils/pluginCenter.js","App.js","store/content.js","store/userInfo.js","store/navbar.js","store/footer.js","store/dialog.js","store/view.js","Lib.js","serviceWorker.js","index.js"],"names":["map","./bmp","./bmp.js","./gif","./gif.js","./jpg","./jpg.js","./png","./png.js","./psd","./psd.js","./svg","./svg.js","./tiff","./tiff.js","./webp","./webp.js","webpackContext","req","id","webpackContextResolve","__webpack_require__","e","Error","code","keys","Object","resolve","module","exports","./apl/apl.js","./asciiarmor/asciiarmor.js","./asn.1/asn.1.js","./asterisk/asterisk.js","./brainfuck/brainfuck.js","./clike/clike.js","./clojure/clojure.js","./cmake/cmake.js","./cobol/cobol.js","./coffeescript/coffeescript.js","./commonlisp/commonlisp.js","./crystal/crystal.js","./css/css.js","./cypher/cypher.js","./d/d.js","./dart/dart.js","./diff/diff.js","./django/django.js","./dockerfile/dockerfile.js","./dtd/dtd.js","./dylan/dylan.js","./ebnf/ebnf.js","./ecl/ecl.js","./eiffel/eiffel.js","./elm/elm.js","./erlang/erlang.js","./factor/factor.js","./fcl/fcl.js","./forth/forth.js","./fortran/fortran.js","./gas/gas.js","./gfm/gfm.js","./gherkin/gherkin.js","./go/go.js","./groovy/groovy.js","./haml/haml.js","./handlebars/handlebars.js","./haskell-literate/haskell-literate.js","./haskell/haskell.js","./haxe/haxe.js","./htmlembedded/htmlembedded.js","./htmlmixed/htmlmixed.js","./http/http.js","./idl/idl.js","./javascript/javascript.js","./jinja2/jinja2.js","./jsx/jsx.js","./julia/julia.js","./livescript/livescript.js","./lua/lua.js","./markdown/markdown.js","./mathematica/mathematica.js","./mbox/mbox.js","./meta.js","./mirc/mirc.js","./mllike/mllike.js","./modelica/modelica.js","./mscgen/mscgen.js","./mumps/mumps.js","./nginx/nginx.js","./nsis/nsis.js","./ntriples/ntriples.js","./octave/octave.js","./oz/oz.js","./pascal/pascal.js","./pegjs/pegjs.js","./perl/perl.js","./php/php.js","./pig/pig.js","./powershell/powershell.js","./properties/properties.js","./protobuf/protobuf.js","./pug/pug.js","./puppet/puppet.js","./python/python.js","./q/q.js","./r/r.js","./rpm/rpm.js","./rst/rst.js","./ruby/ruby.js","./rust/rust.js","./sas/sas.js","./sass/sass.js","./scheme/scheme.js","./shell/shell.js","./sieve/sieve.js","./slim/slim.js","./smalltalk/smalltalk.js","./smarty/smarty.js","./solr/solr.js","./soy/soy.js","./sparql/sparql.js","./spreadsheet/spreadsheet.js","./sql/sql.js","./stex/stex.js","./stylus/stylus.js","./swift/swift.js","./tcl/tcl.js","./textile/textile.js","./tiddlywiki/tiddlywiki.js","./tiki/tiki.js","./toml/toml.js","./tornado/tornado.js","./troff/troff.js","./ttcn-cfg/ttcn-cfg.js","./ttcn/ttcn.js","./turtle/turtle.js","./twig/twig.js","./vb/vb.js","./vbscript/vbscript.js","./velocity/velocity.js","./verilog/verilog.js","./vhdl/vhdl.js","./vue/vue.js","./wast/wast.js","./webidl/webidl.js","./xml/xml.js","./xquery/xquery.js","./yacas/yacas.js","./yaml-frontmatter/yaml-frontmatter.js","./yaml/yaml.js","./z80/z80.js","webpackAsyncContext","ids","Promise","all","slice","then","t","Copy","fill","style","className","viewBox","React","createElement","xmlns","xmlnsXlink","d","p-id","Down","Environment","GitHub","Inbox","More","Rabbit","Smile","Mobile","PC","icon_Wechat","icon_Zhihu","icon_Juejin","Close","FontCase","Replace","ReplaceAll","User","icon_Issue","opacity","props","name","Wechat","Zhihu","Juejin","Issue","SM_MS_PROXY","PING_GU_API_PREFIX","IS_CONTAIN_IMG_NAME","FONT_THEME_ID","LAYOUT_ID","IMAGE_HOSTING_NAMES","smms","aliyun","qiniuyun","gitee","github","RIGHT_SYMBOL","ENTER_DELAY","LEAVE_DELAY","CODE_OPTIONS","macId","SITDOWN_OPTIONS","key","value","desc","TUTORIALS","title","content","picture","TEMPLATE_OPTIONS","author","isNew","length","formItemLayout","labelCol","xs","span","wrapperCol","AliOSS","inject","_dec","_class","observer","Component","constructor","super","this","regionChange","imageHosting","state","region","target","setState","localStorage","setItem","JSON","stringify","accessKeyIdChange","accessKeyId","accessKeySecretChange","accessKeySecret","bucketChange","bucket","parse","getItem","render","Form","Item","label","formItem","Input","onChange","placeholder","rel","href","marginBottom","Option","Select","QiniuOSS","accessKeyChange","accessKey","secretKeyChange","secretKey","linkChange","link","domain","namespaceChange","namespace","split","addonBefore","Gitee","usernameChange","username","repoChange","repo","tokenChange","token","jsdelivrChange","jsdelivr","checked","console","log","Checkbox","store","_descriptor","_applyDecoratedDescriptor","_initializerDefineProperty","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","_descriptor8","prototype","observable","configurable","enumerable","writable","initializer","action","type","url","hostingUrl","hostingName","hostingList","push","window","alioss","qiniuoss","isValidDelim","pos","prevChar","nextChar","max","posMax","can_open","can_close","src","charCodeAt","math_inline","silent","start","match","pending","indexOf","markup","math_block","end","firstLine","lastLine","next","lastPos","found","bMarks","tShift","eMarks","trim","blkIndent","lastIndexOf","line","block","getLines","slugify","s","md","spaceRegex","RegExp","utils","lib","ucmicro","Z","source","encodeURIComponent","replace","renderFootnoteAnchorName","tokens","idx","options","env","n","Number","meta","toString","prefix","docId","renderFootnoteCaption","subId","renderFootnoteWord","slf","renderFootnoteRef","rules","footnote_caption","renderFootnoteBlockOpen","renderFootnoteBlockClose","renderFootnoteOpen","footnote_anchor_name","renderFootnoteClose","isSpace","linkFoot","attrs","res","ref","footnoteContent","parseReference","oldPos","labelStart","labelEnd","helpers","parseLinkLabel","parseLinkDestination","ok","normalizeLink","str","validateLink","parseLinkTitle","references","toUpperCase","footnotes","list","footnoteId","inline","tokenize","footnoteTail","i","l","lastParagraph","current","currentLabel","insideRef","refTokens","filter","tok","Token","children","concat","pop","defaultOption","limitless","limit","imageFlowPlugin","opt","renderer","imageFlow","contents","alt","wrappedContent","forEach","ruler","before","srcLine","exec","images","highlightjs","registerLanguage","bash","clojure","cpp","cs","css","dart","dockerfile","erlang","go","gradle","groovy","haskell","java","javascript","json","julia","kotlin","lisp","lua","makefile","markdown","matlab","objectivec","perl","php","python","r","ruby","rust","scala","shell","sql","swift","tex","typescript","verilog","vhdl","xml","yaml","diff","axios","create","baseURL","headers","Accept","Content-Type","axiosMdnice","markdownParser","MarkdownIt","html","highlight","lang","undefined","getLanguage","escapeHtml","use","opts","defaults","anchorClass","addHeadingSpan","assign","core","headingInlineToken","spanTokenPre","unshift","spanTokenPost","makeRule","arr","curToken","tableContainerStart","tableContainerClose","after","latex","displayMode","error","throwOnError","katexInline","katexBlock","footnote_ref","footnote_word","footnote_block_open","footnote_block_close","footnote_open","footnote_close","at","markdownItTableOfContents","transformLink","includeLevel","markerPattern","markdownItRuby","markdownItImplicitFigures","figcaption","markdownItDeflist","list_item_open","list_item_close","markdownItImageFlow","outerQuoteToekn","count","markdownItImsize","replaceStyle","document","getElementById","innerHTML","styleSheet","cssText","getElementsByTagName","appendChild","toBlob","base64","fileType","bytes","atob","u8arr","Uint8Array","Blob","dateFormat","date","fmt","o","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","q+","Math","floor","S","getMilliseconds","k","test","$1","getFullYear","substr","isPC","userAgentInfo","navigator","userAgent","Agents","flag","v","getOSSName","originName","names","suffix","join","Date","updateMathjax","MathJax","texReset","typesetClear","typesetPromise","isPlatformWindows","showUploadNoti","message","loading","uploadError","description","hideUploadNoti","destroy","success","writeToEditor","image","text","filename","markdownEditor","cursor","getCursor","replaceSelection","setContent","getValue","aliOSSUpload","file","onSuccess","onError","config","base64Reader","FileReader","readAsDataURL","onload","urlData","result","shift","blob","bufferReader","readAsArrayBuffer","event","buffer","OSS","Buffer","aliOSSPutObject","client","OSSName","put","response","setTimeout","catch","uploadAdaptor","args","async","formData","FormData","append","postURL","post","data","encodeURI","path","customImageUpload","smmsUpload","onProgress","withCredentials","onUploadProgress","total","loaded","percent","parseInt","round","toFixed","get","conf","useCdnDomain","qiniu","imageObserver","err","complete","fname","params","mimeType","subscribe","qiniuOSSUpload","giteeUpload","size","warn","dir","dateFilename","getTime","download_url","info","githubUpload","imageUrl","appContext","createContext","Dragger","Upload","TabPane","Tabs","ImageDialog_Option","ImageDialog","_dec2","_dec3","_dec4","handleOk","navbar","isContainImgName","dialog","setImageOpen","ch","setCursor","focus","handleCancel","customRequest","abort","typeChange","setType","columns","option","index","imageHostingSwitch","width","Modal","okText","cancelText","visible","isImageOpen","onOk","onCancel","bodyStyle","paddingTop","Consumer","useImageHosting","tabBarExtraContent","tab","multiple","SvgIcon","svgIcon","isAliyunOpen","isQiniuyunOpen","isGiteeOpen","isGitHubOpen","height","LinkDialog","getSelection","setLinkOpen","handleChange","isLinkOpen","AboutDialog","setAboutOpen","handleVersion","setVersionOpen","isAboutOpen","footer","Button","onClick","headerMargin","noBorder","img","lineHeight","a","strong","display","alignItems","leftImgWidth","rightImgWidth","marginTop","color","padding","margin","marginLeft","border","VersionDialog","handleMore","open","location","handleDocs","componentDidMount","newestVersion","versionNumber","versionTimeline","recommend","specialInfo","isVersionOpen","destroyOnClose","Timeline","version","dot","fontWeight","borderBottom","mainInfo","dangerouslySetInnerHTML","__html","FormDialog","buildRow","rowNum","columnNum","appendText","buildFormFormat","formFormat","initialState","setFormOpen","isFormOpen","InputNumber","min","defaultValue","NOOP","DiffMatchPath","LocalHistory","getDiffHtml","diff_linesToChars_","lineText1","chars1","lineText2","chars2","diffs","diff_main","diff_charsToLines_","lineArray","diff_prettyHtml","selectNav","selectedKeys","Content","documents","find","doc","String","handleModeChange","mode","Menu","onSelect","SaveTime","toLocaleString","CodeMirror","readOnly","theme","lineWrapping","lineNumbers","Radio","Group","onEdit","defaultProps","saveTimeSort","b","setLocalDocuments","db","localDocuments","draftIndex","reject","transaction","objectStore","sort","add","onsuccess","onerror","setLocalDraft","draft","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","IndexDB","[object Object]","storeName","storeOptions","storeInit","request","initEvent","errorCode","onupgradeneeded","initStore","func","createObjectStore","HistoryDialog","timer","closeDialog","setHistoryOpen","editLocalDocument","autoSave","isRecent","DocumentID","documentID","setLocalDocumentMethod","overrideLocalDocuments","initIndexDB","componentWillUnmount","clearInterval","editor","indexDB","keyPath","autoIncrement","createIndex","unique","init","setInterval","on","debouce","getLocalDocuments","keyRange","IDBKeyRange","only","openCursor","continue","centered","isHistoryOpen","Empty","gfm","Sitdown","keepFilter","codeBlockStyle","juejin","bulletListMarker","hr","applyJuejinRule","wechat","applyWechatRule","zhihu","applyZhihuRule","csdn","methods","GFM","input","HTMLToMD","root","RootNode","footLinks","extraFootLinks","wechatToMD","CSDN","SitDownDialog_Option","TextArea","SitDownDialog","platform","sourceCode","sourceCodeDom","DOMParser","parseFromString","articleDom","SitDownConverter","getElementsByClassName","setSitDownOpen","handlePlatform","handleSourceCode","isSitDownOpen","rows","TutorialDialog","setTutorialOpen","tutorialContent","addEventListener","copyCall","preventDefault","clipboardData","setData","removeEventListener","execCommand","tutorialTitle","isTutorialOpen","imgWidth","tutorialPicture","Dialog","ExportMarkdown","handleClick","download","eleLink","URL","createObjectURL","body","click","removeChild","ExportPdf","print","ImportFile","files","reader","readAsText","htmlFor","accept","hidden","menu","File","Dropdown","overlay","trigger","overlayClassName","About","Version","Document","Question","Help","Tutorial","item","setTutorialTitle","setTutorialContent","setTutorialPicture","wrapChar","parseLinkToFoot","refLinkReg","newContent","lineHandler","refLinkText","lineMatch","rawLine","rawReg","_","handleReferenceLink","footReg","filterRes","val","comment","matchValue","newVal","handleWechatOuterLink","formatDoc","prettier","format","parser","plugins","prettierMarkdown","handlePrettierDoc","bold","selection","del","italic","inlineCode","handlePressHotkey","keyEvents","h1","h2","h3","editorContent","hotKeys","form","linkToFoot","search","betterTab","cm","somethingSelected","indentSelection","getOption","Array","rightClick","oncontextmenu","element","oEvent","ev","scrollTop","documentElement","top","clientY","scrollLeft","left","clientX","onclick","bindHotkeys","Ctrl-B","Ctrl-U","Ctrl-I","Ctrl-Alt-C","Ctrl-Alt-V","Ctrl-Alt-1","Ctrl-Alt-2","Ctrl-Alt-3","Ctrl-K","Ctrl-Alt-I","Ctrl-Alt-T","Ctrl-Alt-S","Ctrl-Alt-L","Ctrl-Alt-F","Ctrl-F","setSearchOpen","isSearchOpen","Cmd-B","Cmd-U","Cmd-I","Cmd-Alt-C","Cmd-Alt-V","Cmd-Alt-1","Cmd-Alt-2","Cmd-Alt-3","Cmd-K","Cmd-Alt-I","Cmd-Alt-T","Cmd-Alt-S","Cmd-Alt-L","Cmd-Alt-F","Cmd-F","Bold","Code","Del","Italic","Link","showModal","Image","Format","handleFormat","Font","toggleFont","isSerif","InlineCode","Divider","LinkToFoot","Pattern","template","basic","blue","blueMountain","blueCyan","normal","custom","cyan","geekBlack","green","ink","orangeHeart","purple","red","scienceBlue","shanchui","simple","wechatFormat","rose","cuteGreen","fullStackBlue","nightPurple","extremeBlack","atomOneDark","atomOneLight","monokai","vs2015","xcode","macAtomOneDark","macAtomOneLight","macGithub","macMonokai","macVs2015","macXcode","Reset","showConfirm","confirm","okType","TEMPLATE","setStyle","setCustomStyle","setTemplateNum","Search","History","SitDownFunction","SitDown","Function","Theme","changeTemplate","view","setStyleEditorOpen","toggleStyleEditor","isStyleEditorOpen","templateNum","mdMenu","CodeTheme","changeCodeTheme","isMacCode","codeNum","setMacCode","setCodeNum","codeMenu","SyncScroll","isSyncScroll","setSyncScroll","setContainImgName","ContainImgName","Setting","FullScreen","toggleFullScreen","docEl","requestFullScreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","cancelFullScreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","call","EditArea","isEditAreaOpen","setEditAreaOpen","PreviewArea","isPreviewAreaOpen","setPreviewAreaOpen","ThemeArea","View","Navbar","isImmersiveEditing","niceNavbarClass","classnames","nice-navbar","nice-navbar-hide","Footer","handleMessage","pasteHtml","pasteText","toMarkdown","convertContent","setPasteHtmlChecked","handleMenu","domEvent","engineDesc","stopPropagation","themeList","isPasteHtmlChecked","lineCount","wordCount","m","wordCalc","themeName","placement","PreviewType","setPreviewType","targetType","previewType","Tooltip","mouseEnterDelay","mouseLeaveDelay","solveWeChatMath","mjxs","mjx","hasAttribute","removeAttribute","svg","firstChild","getAttribute","solveZhihuMath","outerHTML","solveHtml","inner","setAttribute","basicStyle","innerText","markdownStyle","codeStyle","fontStyle","juice","inlineContent","inlinePseudoElements","preserveImportant","copySafari","position","zIndex","setSelectionRange","copyWechat","layout","copyZhihu","threadDataStore","_descriptor9","_descriptor10","_descriptor11","_descriptor12","_descriptor13","_descriptor14","_descriptor15","_descriptor16","_descriptor17","_descriptor18","_descriptor19","_descriptor20","_descriptor21","postTime","isDialogVisible","subject","allowSetPostTime","allownoticeauthor","hiddenreplies","ordertype","usesig","threadtypes","select","setSubject","setAllownoticeauthor","setHiddenreplies","setOrdertype","setUsesig","setThreadtypes","setSelect","typeid","setAllowSetPostTime","ThreadDialog_Option","ThreadDialog","handleSubjectChange","handleConfirm","onConfirm","setIsDialogVisible","DatePicker","showTime","dateString","setPostTime","locale","flex","handlePingGuSubmit","query","parseQuery","getContent","fid","tid","pid","qs","status","msg","_data","pingGuIssue","issue","currentHostname","hostname","timestamp","valueOf","callbackurl","sourceUrl","callbackUrl","decodeURIComponent","sign","md5","extend","obj","kv","Fragment","copyJuejin","solveJuejinMath","addJuejinSuffix","brMatchList","solveJuejinCode","Sidebar","niceSidebarClass","nice-sidebar","nice-sidebar-hide","StyleEditor","getStyleInstance","instance","styleEditor","keyCode","showHint","completeSingle","onStyleChange","changeStyle","handleFocus","onStyleFocus","handleBlur","onStyleBlur","keyMap","onFocus","onBlur","EditorMenu","WrappedButton","tipText","icon","SearchBox","posChange","direction","clearMarks","searchText","atOccurrence","handleCaseFold","prevState","caseFold","getSearchCursor","handleScroll","offset","getScrollInfo","scrollTo","isReplaceOpen","searchRef","setSelection","findContent","from","to","scrollIntoView","replaceText","replaceAll","searchReg","replaced","handelFoldClick","handleClose","createRef","data-replace","onPressEnter","pluginCenter","mathjax","App","_dec5","_dec6","setCustomImageHosting","isSmmsOpen","setHostingUrl","setHostingName","addImageHosting","isGitee","setEditorContent","defaultText","c","checkNeedToEdit","contenturl","sleep","ms","getPingGuContent","retryCount","initializeFromResponse","solveScreenChange","setImmersiveEditing","getInstance","origin","refresh","getSelections","replaceRange","setMarkdownEditor","cmData","editorToTop","editorScrollHeight","clientHeight","scale","previewWrap","offsetHeight","previewContainer","editorTop","onTextChange","onTextFocus","onTextBlur","handleDrop","dataTransfer","handlePaste","cbData","insertPasteContent","replaceSelections","handleThrottleChange","getData","setPasteHtml","setPasteText","handleUpdateMathjax","throttle","inlineMath","displayMath","tags","fontCache","renderActions","addMenu","addContainer","math","require","componentDidUpdate","setCurrentIndex","spanClass","cls","typesetRoot","adaptor","node","class","parseHtml","mdEditingClass","nice-md-editing","nice-md-editing-immersive","nice-md-editing-hide","styleEditingClass","nice-style-editing","nice-style-editing-hide","richTextClass","nice-marked-text","nice-marked-text-pc","nice-marked-text-hide","richTextBoxClass","nice-wx-box","nice-wx-box-pc","textContainerClass","nice-text-container","nice-text-container-immersive","defaultTitle","onMouseOver","extraKeys","Tab","RightClick","onScroll","onDrop","onPaste","data-tool","data-website","themeId","userInfo","userRepoList","userRepo","navbar_macId","navbar_id","_descriptor22","_descriptor23","_descriptor24","Lib","getWeChatHtml","getZhihuHtml","appCtx","Provider","Result","propTypes","PropTypes","string","shape","bool","isLocalhost","Boolean","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","ReactDOM","process","fetch","contentType","ready","unregister","reload","checkValidServiceWorker"],"mappings":"kGAAA,IAAAA,EAAA,CACAC,QAAA,IACAC,WAAA,IACAC,QAAA,IACAC,WAAA,IACAC,QAAA,IACAC,WAAA,IACAC,QAAA,IACAC,WAAA,IACAC,QAAA,IACAC,WAAA,IACAC,QAAA,IACAC,WAAA,IACAC,SAAA,IACAC,YAAA,IACAC,SAAA,IACAC,YAAA,KAIA,SAAAC,EAAAC,GACA,IAAAC,EAAAC,EAAAF,GACA,OAAAG,EAAAF,GAEA,SAAAC,EAAAF,GACA,IAAAC,EAAAnB,EAAAkB,GACA,KAAAC,EAAA,IACA,IAAAG,EAAA,IAAAC,MAAA,uBAAAL,EAAA,KAEA,MADAI,EAAAE,KAAA,mBACAF,EAEA,OAAAH,EAEAF,EAAAQ,KAAA,WACA,OAAAC,OAAAD,KAAAzB,IAEAiB,EAAAU,QAAAP,EACAQ,EAAAC,QAAAZ,EACAA,EAAAE,GAAA,0GCtCA,IAAAnB,EAAA,CACA8B,eAAA,CACA,IACA,IAEAC,6BAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,yBAAA,CACA,IACA,IAEAC,2BAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,GAEAC,uBAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,iCAAA,CACA,IACA,IAEAC,6BAAA,CACA,IACA,IAEAC,uBAAA,CACA,IACA,IAEAC,eAAA,CACA,KAEAC,qBAAA,CACA,IACA,IAEAC,WAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,EACA,IAEAC,iBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,uBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,EACA,IAEAC,uBAAA,CACA,IACA,IAEAC,aAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,EACA,IAEAC,6BAAA,CACA,IACA,IAEAC,yCAAA,CACA,IACA,IAEAC,uBAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,iCAAA,CACA,IACA,EACA,GAEAC,2BAAA,CACA,IACA,EACA,IAEAC,iBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,6BAAA,CACA,IACA,GAEAC,qBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,EACA,IAEAC,mBAAA,CACA,IACA,IAEAC,6BAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,yBAAA,CACA,IACA,GAEAC,+BAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,YAAA,CACA,KAEAC,iBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,yBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,yBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,aAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,EACA,IAEAC,iBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,EACA,EACA,IAEAC,eAAA,CACA,IACA,IAEAC,6BAAA,CACA,IACA,IAEAC,6BAAA,CACA,IACA,IAEAC,yBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,EACA,GAEAC,qBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,WAAA,CACA,IACA,IAEAC,WAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,eAAA,CACA,IACA,IAEAC,iBAAA,CACA,IACA,IAEAC,qBAAA,CACA,IACA,IAEAC,mBAAA,CACA,IACA,IAEAC,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","file":"static/js/main.f1952f73.chunk.js","sourcesContent":["var map = {\n\t\"./bmp\": 218,\n\t\"./bmp.js\": 218,\n\t\"./gif\": 219,\n\t\"./gif.js\": 219,\n\t\"./jpg\": 220,\n\t\"./jpg.js\": 220,\n\t\"./png\": 221,\n\t\"./png.js\": 221,\n\t\"./psd\": 222,\n\t\"./psd.js\": 222,\n\t\"./svg\": 223,\n\t\"./svg.js\": 223,\n\t\"./tiff\": 224,\n\t\"./tiff.js\": 224,\n\t\"./webp\": 225,\n\t\"./webp.js\": 225\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 217;","var map = {\n\t\"./apl/apl.js\": [\n\t\t728,\n\t\t29\n\t],\n\t\"./asciiarmor/asciiarmor.js\": [\n\t\t729,\n\t\t30\n\t],\n\t\"./asn.1/asn.1.js\": [\n\t\t730,\n\t\t31\n\t],\n\t\"./asterisk/asterisk.js\": [\n\t\t731,\n\t\t32\n\t],\n\t\"./brainfuck/brainfuck.js\": [\n\t\t732,\n\t\t33\n\t],\n\t\"./clike/clike.js\": [\n\t\t717,\n\t\t1\n\t],\n\t\"./clojure/clojure.js\": [\n\t\t733,\n\t\t34\n\t],\n\t\"./cmake/cmake.js\": [\n\t\t734,\n\t\t35\n\t],\n\t\"./cobol/cobol.js\": [\n\t\t735,\n\t\t36\n\t],\n\t\"./coffeescript/coffeescript.js\": [\n\t\t718,\n\t\t37\n\t],\n\t\"./commonlisp/commonlisp.js\": [\n\t\t736,\n\t\t38\n\t],\n\t\"./crystal/crystal.js\": [\n\t\t737,\n\t\t39\n\t],\n\t\"./css/css.js\": [\n\t\t171\n\t],\n\t\"./cypher/cypher.js\": [\n\t\t738,\n\t\t40\n\t],\n\t\"./d/d.js\": [\n\t\t739,\n\t\t41\n\t],\n\t\"./dart/dart.js\": [\n\t\t740,\n\t\t1,\n\t\t42\n\t],\n\t\"./diff/diff.js\": [\n\t\t741,\n\t\t43\n\t],\n\t\"./django/django.js\": [\n\t\t742,\n\t\t0,\n\t\t10\n\t],\n\t\"./dockerfile/dockerfile.js\": [\n\t\t743,\n\t\t20\n\t],\n\t\"./dtd/dtd.js\": [\n\t\t744,\n\t\t44\n\t],\n\t\"./dylan/dylan.js\": [\n\t\t745,\n\t\t45\n\t],\n\t\"./ebnf/ebnf.js\": [\n\t\t746,\n\t\t46\n\t],\n\t\"./ecl/ecl.js\": [\n\t\t747,\n\t\t47\n\t],\n\t\"./eiffel/eiffel.js\": [\n\t\t748,\n\t\t48\n\t],\n\t\"./elm/elm.js\": [\n\t\t749,\n\t\t49\n\t],\n\t\"./erlang/erlang.js\": [\n\t\t750,\n\t\t50\n\t],\n\t\"./factor/factor.js\": [\n\t\t751,\n\t\t21\n\t],\n\t\"./fcl/fcl.js\": [\n\t\t752,\n\t\t51\n\t],\n\t\"./forth/forth.js\": [\n\t\t753,\n\t\t52\n\t],\n\t\"./fortran/fortran.js\": [\n\t\t754,\n\t\t53\n\t],\n\t\"./gas/gas.js\": [\n\t\t755,\n\t\t54\n\t],\n\t\"./gfm/gfm.js\": [\n\t\t756,\n\t\t3,\n\t\t19\n\t],\n\t\"./gherkin/gherkin.js\": [\n\t\t757,\n\t\t55\n\t],\n\t\"./go/go.js\": [\n\t\t758,\n\t\t56\n\t],\n\t\"./groovy/groovy.js\": [\n\t\t759,\n\t\t57\n\t],\n\t\"./haml/haml.js\": [\n\t\t760,\n\t\t0,\n\t\t13\n\t],\n\t\"./handlebars/handlebars.js\": [\n\t\t719,\n\t\t15\n\t],\n\t\"./haskell-literate/haskell-literate.js\": [\n\t\t761,\n\t\t25\n\t],\n\t\"./haskell/haskell.js\": [\n\t\t720,\n\t\t58\n\t],\n\t\"./haxe/haxe.js\": [\n\t\t762,\n\t\t59\n\t],\n\t\"./htmlembedded/htmlembedded.js\": [\n\t\t763,\n\t\t0,\n\t\t9\n\t],\n\t\"./htmlmixed/htmlmixed.js\": [\n\t\t714,\n\t\t0,\n\t\t26\n\t],\n\t\"./http/http.js\": [\n\t\t764,\n\t\t60\n\t],\n\t\"./idl/idl.js\": [\n\t\t765,\n\t\t61\n\t],\n\t\"./javascript/javascript.js\": [\n\t\t715,\n\t\t0\n\t],\n\t\"./jinja2/jinja2.js\": [\n\t\t766,\n\t\t62\n\t],\n\t\"./jsx/jsx.js\": [\n\t\t767,\n\t\t0,\n\t\t27\n\t],\n\t\"./julia/julia.js\": [\n\t\t768,\n\t\t63\n\t],\n\t\"./livescript/livescript.js\": [\n\t\t769,\n\t\t64\n\t],\n\t\"./lua/lua.js\": [\n\t\t770,\n\t\t65\n\t],\n\t\"./markdown/markdown.js\": [\n\t\t725,\n\t\t3\n\t],\n\t\"./mathematica/mathematica.js\": [\n\t\t771,\n\t\t66\n\t],\n\t\"./mbox/mbox.js\": [\n\t\t772,\n\t\t67\n\t],\n\t\"./meta.js\": [\n\t\t172\n\t],\n\t\"./mirc/mirc.js\": [\n\t\t773,\n\t\t68\n\t],\n\t\"./mllike/mllike.js\": [\n\t\t774,\n\t\t69\n\t],\n\t\"./modelica/modelica.js\": [\n\t\t775,\n\t\t70\n\t],\n\t\"./mscgen/mscgen.js\": [\n\t\t776,\n\t\t71\n\t],\n\t\"./mumps/mumps.js\": [\n\t\t777,\n\t\t72\n\t],\n\t\"./nginx/nginx.js\": [\n\t\t778,\n\t\t73\n\t],\n\t\"./nsis/nsis.js\": [\n\t\t779,\n\t\t22\n\t],\n\t\"./ntriples/ntriples.js\": [\n\t\t780,\n\t\t74\n\t],\n\t\"./octave/octave.js\": [\n\t\t781,\n\t\t75\n\t],\n\t\"./oz/oz.js\": [\n\t\t782,\n\t\t76\n\t],\n\t\"./pascal/pascal.js\": [\n\t\t783,\n\t\t77\n\t],\n\t\"./pegjs/pegjs.js\": [\n\t\t784,\n\t\t0,\n\t\t78\n\t],\n\t\"./perl/perl.js\": [\n\t\t785,\n\t\t79\n\t],\n\t\"./php/php.js\": [\n\t\t786,\n\t\t0,\n\t\t1,\n\t\t16\n\t],\n\t\"./pig/pig.js\": [\n\t\t787,\n\t\t80\n\t],\n\t\"./powershell/powershell.js\": [\n\t\t788,\n\t\t81\n\t],\n\t\"./properties/properties.js\": [\n\t\t789,\n\t\t82\n\t],\n\t\"./protobuf/protobuf.js\": [\n\t\t790,\n\t\t83\n\t],\n\t\"./pug/pug.js\": [\n\t\t726,\n\t\t0,\n\t\t2\n\t],\n\t\"./puppet/puppet.js\": [\n\t\t791,\n\t\t84\n\t],\n\t\"./python/python.js\": [\n\t\t721,\n\t\t85\n\t],\n\t\"./q/q.js\": [\n\t\t792,\n\t\t86\n\t],\n\t\"./r/r.js\": [\n\t\t793,\n\t\t87\n\t],\n\t\"./rpm/rpm.js\": [\n\t\t794,\n\t\t88\n\t],\n\t\"./rst/rst.js\": [\n\t\t795,\n\t\t12\n\t],\n\t\"./ruby/ruby.js\": [\n\t\t716,\n\t\t89\n\t],\n\t\"./rust/rust.js\": [\n\t\t796,\n\t\t23\n\t],\n\t\"./sas/sas.js\": [\n\t\t797,\n\t\t90\n\t],\n\t\"./sass/sass.js\": [\n\t\t723,\n\t\t91\n\t],\n\t\"./scheme/scheme.js\": [\n\t\t798,\n\t\t92\n\t],\n\t\"./shell/shell.js\": [\n\t\t799,\n\t\t93\n\t],\n\t\"./sieve/sieve.js\": [\n\t\t800,\n\t\t94\n\t],\n\t\"./slim/slim.js\": [\n\t\t801,\n\t\t0,\n\t\t14\n\t],\n\t\"./smalltalk/smalltalk.js\": [\n\t\t802,\n\t\t95\n\t],\n\t\"./smarty/smarty.js\": [\n\t\t803,\n\t\t96\n\t],\n\t\"./solr/solr.js\": [\n\t\t804,\n\t\t97\n\t],\n\t\"./soy/soy.js\": [\n\t\t805,\n\t\t0,\n\t\t17\n\t],\n\t\"./sparql/sparql.js\": [\n\t\t806,\n\t\t98\n\t],\n\t\"./spreadsheet/spreadsheet.js\": [\n\t\t807,\n\t\t99\n\t],\n\t\"./sql/sql.js\": [\n\t\t808,\n\t\t100\n\t],\n\t\"./stex/stex.js\": [\n\t\t722,\n\t\t101\n\t],\n\t\"./stylus/stylus.js\": [\n\t\t727,\n\t\t4\n\t],\n\t\"./swift/swift.js\": [\n\t\t809,\n\t\t102\n\t],\n\t\"./tcl/tcl.js\": [\n\t\t810,\n\t\t103\n\t],\n\t\"./textile/textile.js\": [\n\t\t811,\n\t\t104\n\t],\n\t\"./tiddlywiki/tiddlywiki.js\": [\n\t\t812,\n\t\t105\n\t],\n\t\"./tiki/tiki.js\": [\n\t\t813,\n\t\t106\n\t],\n\t\"./toml/toml.js\": [\n\t\t814,\n\t\t107\n\t],\n\t\"./tornado/tornado.js\": [\n\t\t815,\n\t\t0,\n\t\t11\n\t],\n\t\"./troff/troff.js\": [\n\t\t816,\n\t\t108\n\t],\n\t\"./ttcn-cfg/ttcn-cfg.js\": [\n\t\t818,\n\t\t109\n\t],\n\t\"./ttcn/ttcn.js\": [\n\t\t817,\n\t\t110\n\t],\n\t\"./turtle/turtle.js\": [\n\t\t819,\n\t\t111\n\t],\n\t\"./twig/twig.js\": [\n\t\t820,\n\t\t18\n\t],\n\t\"./vb/vb.js\": [\n\t\t821,\n\t\t112\n\t],\n\t\"./vbscript/vbscript.js\": [\n\t\t822,\n\t\t113\n\t],\n\t\"./velocity/velocity.js\": [\n\t\t823,\n\t\t114\n\t],\n\t\"./verilog/verilog.js\": [\n\t\t824,\n\t\t115\n\t],\n\t\"./vhdl/vhdl.js\": [\n\t\t825,\n\t\t116\n\t],\n\t\"./vue/vue.js\": [\n\t\t826,\n\t\t0,\n\t\t4,\n\t\t2,\n\t\t8\n\t],\n\t\"./wast/wast.js\": [\n\t\t827,\n\t\t24\n\t],\n\t\"./webidl/webidl.js\": [\n\t\t828,\n\t\t117\n\t],\n\t\"./xml/xml.js\": [\n\t\t713,\n\t\t118\n\t],\n\t\"./xquery/xquery.js\": [\n\t\t829,\n\t\t119\n\t],\n\t\"./yacas/yacas.js\": [\n\t\t830,\n\t\t120\n\t],\n\t\"./yaml-frontmatter/yaml-frontmatter.js\": [\n\t\t831,\n\t\t28\n\t],\n\t\"./yaml/yaml.js\": [\n\t\t724,\n\t\t121\n\t],\n\t\"./z80/z80.js\": [\n\t\t832,\n\t\t122\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 354;\nmodule.exports = webpackAsyncContext;","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"#1890ff\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"#1890ff\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"#333333\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n \n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 40 40\"}) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n);\n","import React from \"react\";\nimport \"./index.css\";\n\nexport default ({fill = \"rgba(0,0,0,0.65)\", style = {}, className = \"icon\", viewBox = \"0 0 1024 1024\"}) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);","import React from \"react\";\n\nimport Copy from \"./Copy\";\nimport Down from \"./Down\";\nimport Environment from \"./Environment\";\nimport GitHub from \"./GitHub\";\nimport Inbox from \"./Inbox\";\nimport More from \"./More\";\nimport Rabbit from \"./Rabbit\";\nimport Smile from \"./Smile\";\nimport Mobile from \"./Mobile\";\nimport PC from \"./PC\";\nimport Wechat from \"./Wechat\";\nimport Zhihu from \"./Zhihu\";\nimport Juejin from \"./Juejin\";\nimport Close from \"./Close\";\nimport FontCase from \"./FontCase\";\nimport Replace from \"./Replace\";\nimport ReplaceAll from \"./ReplaceAll\";\nimport User from \"./User\";\nimport Issue from \"./Issue\";\n\nexport default (props) => {\n switch (props.name) {\n case \"copy\":\n return ;\n case \"down\":\n return ;\n case \"environment\":\n return ;\n case \"github\":\n return ;\n case \"inbox\":\n return ;\n case \"more\":\n return ;\n case \"rabbit\":\n return ;\n case \"smile\":\n return ;\n case \"pc\":\n return ;\n case \"mobile\":\n return ;\n case \"wechat\":\n return ;\n case \"zhihu\":\n return ;\n case \"juejin\":\n return ;\n case \"close\":\n return ;\n case \"fontCase\":\n return ;\n case \"replace\":\n return ;\n case \"replaceAll\":\n return ;\n case \"user\":\n return ;\n case \"issue\":\n return ;\n default:\n return ;\n }\n};\n","export const CLIENT_ID = process.env.NODE_ENV === \"development\" ? \"e791aa2a7a64b3f766a2\" : \"b3a3c46bd66318367efa\";\nexport const CLIENT_SECRET =\n process.env.NODE_ENV === \"development\"\n ? \"e80cde65c7071286086077892f3336bc2a3f4576\"\n : \"dfd9fdc1da6a6b10e473280bf0a379513f1d154d\";\n\nexport const PROXY = \"https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token\";\nexport const SM_MS_PROXY = \"https://cors-anywhere.herokuapp.com/https://sm.ms/api/upload\";\nexport const ACCESS_TOKEN = \"ACCESS_TOKEN\";\n\nexport const USERNAME = \"username\";\nexport const AVATAR = \"avatar\";\nexport const USERID = \"userId\";\nexport const EMAIL = \"email\";\nexport const TOKEN = \"token\";\nexport const PING_GU_API_PREFIX = \"https://markdown.pinggu.org\";\n\nexport const MJX_DATA_FORMULA = \"data-formula\";\nexport const MJX_DATA_FORMULA_TYPE = \"data-formula-type\";\n\nexport const CONTENT = \"content\";\nexport const STYLE = \"style\";\nexport const TEMPLATE_NUM = \"template_num\";\nexport const CODE_NUM = \"code_num\";\nexport const THEME_LIST = \"theme_list\";\nexport const PREVIEW_TYPE = \"preview_type\";\nexport const IS_SYNC_SCROLL = \"is_sync_scroll\";\nexport const IS_CONTAIN_IMG_NAME = \"is_contain_img_name\";\nexport const IS_MAC_CODE = \"is_mac_code\";\nexport const NEWEST_VERSION = \"newest_version\";\nexport const ALIOSS_IMAGE_HOSTING = \"alioss_image_hosting\";\nexport const GITEE_IMAGE_HOSTING = \"gitee_image_hosting\";\nexport const GITHUB_IMAGE_HOSTING = \"github_image_hosting\";\nexport const QINIUOSS_IMAGE_HOSTING = \"qiniuoss_image_hosting\";\nexport const IMAGE_HOSTING_TYPE = \"image_hosting_type\";\nexport const BASIC_THEME_ID = \"basic-theme\";\nexport const CODE_THEME_ID = \"code-theme\";\nexport const MARKDOWN_THEME_ID = \"markdown-theme\";\nexport const FONT_THEME_ID = \"font-theme\";\nexport const LAYOUT_ID = \"nice\";\nexport const BOX_ID = \"nice-rich-text-box\";\nexport const IMAGE_HOSTING_NAMES = {\n smms: \"SM.MS\",\n aliyun: \"阿里云\",\n qiniuyun: \"七牛云\",\n gitee: \"Gitee\",\n github: \"GitHub\",\n};\n\nexport const RIGHT_SYMBOL = \"✔️\";\nexport const EXPORT_FILENAME_SUFFIX = \".md\";\n\nexport const STYLE_LABELS = [\"basic-theme\", \"markdown-theme\", \"code-theme\", \"font-theme\"];\n\nexport const ENTER_DELAY = 0.5;\nexport const LEAVE_DELAY = 0.0;\n\nexport const MAX_MD_NUMBER = 100000;\nexport const THROTTLE_MATHJAX_TIME = 1500;\nexport const THROTTLE_MD_RENDER_TIME = 100;\n\nexport const CODE_OPTIONS = [\n {\n id: \"atomOneDark\",\n macId: \"macAtomOneDark\",\n name: \"atom-one-dark\",\n },\n {\n id: \"atomOneLight\",\n macId: \"macAtomOneLight\",\n name: \"atom-one-light\",\n },\n {\n id: \"monokai\",\n macId: \"macMonokai\",\n name: \"monokai\",\n },\n {\n id: \"github\",\n macId: \"macGithub\",\n name: \"github\",\n },\n {\n id: \"vs2015\",\n macId: \"macVs2015\",\n name: \"vs2015\",\n },\n {\n id: \"xcode\",\n macId: \"macXcode\",\n name: \"xcode\",\n },\n];\n\nexport const SITDOWN_OPTIONS = [\n {\n key: \"default\",\n value: \"默认引擎\",\n desc: \"默认引擎\",\n },\n {\n key: \"wechat\",\n value: \"微信公众号 - https://mp.weixin.qq.com/\",\n desc: \"微信引擎\",\n },\n {\n key: \"zhihu\",\n value: \"知乎专栏 - https://zhuanlan.zhihu.com/\",\n desc: \"知乎引擎\",\n },\n {\n key: \"juejin\",\n value: \"掘金 - https://juejin.im/post/\",\n desc: \"掘金引擎\",\n },\n {\n key: \"csdn\",\n value: \"CSDN - https://blog.csdn.net/\",\n desc: \"CSDN引擎\",\n },\n];\n\nexport const TUTORIALS = [\n {\n title: \"第1关:标题\",\n content: `\n# 一级标题\n\n## 二级标题\n \n### 三级标题`,\n picture: \"https://file.haoxueai.cn/haoxue/img/105e0e08-ac89-45b7-821a-8a40b669c257.png\",\n },\n {\n title: \"第2关:无序列表\",\n content: `\n- 无序列表 1\n- 无序列表 2\n - 无序列表 2.1\n - 无序列表 2.2`,\n picture: \"https://file.haoxueai.cn/haoxue/img/2bbd9a51-fe97-4e76-b1ae-2b3497715e66.png\",\n },\n {\n title: \"第3关:有序列表\",\n content: `\n1. 有序列表 1\n2. 有序列表 2\n3. 有序列表 3`,\n picture: \"https://file.haoxueai.cn/haoxue/img/67155db3-927e-4ec7-8d78-d047792d2c8c.png\",\n },\n {\n title: \"第4关:引用\",\n content: `\n一级引用如下:\n\n> ### 一级引用示例\n> \n> 读一本好书。 **——歌德**\n \n二级引用如下:\n\n>> ### 二级引用示例\n>>\n>> 读一本好书。 **——歌德**\n\n三级引用如下:\n\n>>> ### 三级引用示例\n>>>\n>>> 读一本好书。**——歌德**`,\n picture: \"https://file.haoxueai.cn/haoxue/img/b55b8684-67de-443f-8bc4-eaa62e9e55e2.png\",\n },\n {\n title: \"第5关:粗体和斜体\",\n content: `\n**这个是粗体**\n\n*这个是斜体*\n \n***这个是粗体加斜体***`,\n picture: \"https://file.haoxueai.cn/haoxue/img/6845ff92-7a23-42ba-8f81-caa915b40fc3.png\",\n },\n {\n title: \"第6关:链接\",\n content: `\n[Markdown Nice最全功能介绍](https://mp.weixin.qq.com/s/lM808MxUu6tp8zU8SBu3sg)\n\n图片还可以和链接嵌套使用,能够实现推荐卡片的效果,用法如下:\n\n[Markdown Nice 最全功能介绍](https://mp.weixin.qq.com/s/lM808MxUu6tp8zU8SBu3sg)`,\n picture: \"https://file.haoxueai.cn/haoxue/img/77ba99ab-56d3-497f-9a61-2d2e5b07c3db.png\",\n },\n {\n title: \"第7关:分割线\",\n content: `\n---`,\n picture: \"https://file.haoxueai.cn/haoxue/img/c24e646f-410a-4df1-b92e-b774645a1dcb.png\",\n },\n {\n title: \"第8关:删除线\",\n content: `\n~~这是要被删除的内容。~~`,\n picture: \"https://file.haoxueai.cn/haoxue/img/235f580d-3399-4e6f-bfd8-97e5d2871f00.png\",\n },\n {\n title: \"第9关:表格\",\n content: `\n| 姓名 | 年龄 | 工作 |\n| :--------- | :--: | -----------: |\n| 小可爱 | 18 | 吃可爱多 |\n| 小小勇敢 | 20 | 爬棵勇敢树 |\n| 小小小机智 | 22 | 看一本机智书 |`,\n picture: \"https://file.haoxueai.cn/haoxue/img/32152bfe-2c2a-410c-b50d-7c608c26e20b.png\",\n },\n {\n title: \"第10关:图片\",\n content: `\n![这里写图片描述](https://cdn.pinggu.org/static/2015/images/jg-logo.png)\n\n![同时设置宽度和高度](https://cdn.pinggu.org/static/2015/images/jg-logo.png =150x150)\n \n![只设置宽度,推荐使用百分比](https://cdn.pinggu.org/static/2015/images/jg-logo.png =40%x)`,\n picture: \"https://cdn.pinggu.org/static/2015/images/jg-logo.png\",\n },\n {\n title: \"第11关:脚注\",\n content: `\n[全栈工程师](是指掌握多种技能,并能利用多种技能独立完成产品的人。 \"什么是全栈工程师\")`,\n picture: \"https://file.haoxueai.cn/haoxue/img/4a0a8b8f-c389-41d6-80fa-e027b7bdc738.png\",\n },\n {\n title: \"第12关:代码块\",\n content: `\n\\`\\`\\`java\n// FileName: HelloWorld.java\npublic class HelloWorld {\n // Java 入口程序,程序从此入口\n public static void main(String[] args) {\n System.out.println(\"Hello,World!\"); // 向控制台打印一条语句\n }\n}\n\\`\\`\\`\n\n支持以下语言种类:\n\n\\`\\`\\`\nbash\nclojure,cpp,cs,css\ndart,dockerfile, diff\nerlang\ngo,gradle,groovy\nhaskell\njava,javascript,json,julia\nkotlin\nlisp,lua\nmakefile,markdown,matlab\nobjectivec\nperl,php,python\nr,ruby,rust\nscala,shell,sql,swift\ntex,typescript\nverilog,vhdl\nxml\nyaml\n\\`\\`\\`\n\ndiff 效果:\n\n\\`\\`\\`diff\n+ 新增项\n- 删除项\n\\`\\`\\``,\n picture: \"https://file.haoxueai.cn/haoxue/img/b01ce4db-b7cb-4f6b-838c-ae599dc0cc17.png\",\n },\n {\n title: \"第13关:数学公式\",\n content: `\n行内公式:$\\\\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$\n\n块公式:$$H(D_2) = -\\\\left(\\\\frac{2}{4}\\\\log_2 \\\\frac{2}{4} + \\\\frac{2}{4}\\\\log_2 \\\\frac{2}{4}\\\\right) = 1$$`,\n picture: \"https://file.haoxueai.cn/haoxue/img/11a9061f-4d92-4b0a-84f6-83366b8a9110.png\",\n },\n {\n title: \"第14关:TOC\",\n content: `\n[TOC]\n\n## 二级标题\n \n### 三级标题`,\n picture: \"https://file.haoxueai.cn/haoxue/img/e7a62a65-f163-48d5-b7ea-4e5bc2f14e99.png\",\n },\n {\n title: \"第15关:注音符号\",\n content: `\nMarkdown Nice 这么好用,简直是{喜大普奔|hē hē hē hē}呀!`,\n picture: \"https://file.haoxueai.cn/haoxue/img/9b45e514-4d7f-489b-9b41-ccc3f99a91e8.png\",\n },\n {\n title: \"第16关:横屏滑动幻灯片\",\n content: `\n`,\n picture: \"https://file.haoxueai.cn/haoxue/img/8b5b6abd-0a00-4a4a-a051-5e55bbe143a0.png\",\n },\n];\nexport const TEMPLATE_OPTIONS = [\n {\n id: \"normal\",\n name: \"默认主题\",\n author: \"zhning12\",\n },\n {\n id: \"shanchui\",\n name: \"山吹\",\n author: \"ElyhG\",\n },\n {\n id: \"rose\",\n name: \"蔷薇紫\",\n author: \"HeyRain\",\n },\n {\n id: \"fullStackBlue\",\n name: \"全栈蓝\",\n author: \"Nealyang\",\n },\n {\n id: \"nightPurple\",\n name: \"凝夜紫\",\n author: \"童欧巴\",\n isNew: true,\n },\n {\n id: \"cuteGreen\",\n name: \"萌绿\",\n author: \"koala\",\n },\n {\n id: \"extremeBlack\",\n name: \"极简黑\",\n author: \"小鱼\",\n isNew: true,\n },\n {\n id: \"orangeHeart\",\n name: \"橙心\",\n author: \"zhning12\",\n },\n {\n id: \"ink\",\n name: \"墨黑\",\n author: \"Mayandev\",\n },\n {\n id: \"purple\",\n name: \"姹紫\",\n author: \"djmaxwow\",\n },\n {\n id: \"green\",\n name: \"绿意\",\n author: \"夜尽天明\",\n },\n {\n id: \"cyan\",\n name: \"嫩青\",\n author: \"画手\",\n },\n {\n id: \"wechatFormat\",\n name: \"WeChat-Format\",\n author: \"画手\",\n },\n {\n id: \"blueCyan\",\n name: \"兰青\",\n author: \"Krahets\",\n },\n {\n id: \"blueMountain\",\n name: \"前端之巅同款\",\n author: \"HeyRain\",\n },\n {\n id: \"geekBlack\",\n name: \"极客黑\",\n author: \"hyper-xx\",\n },\n {\n id: \"red\",\n name: \"红绯\",\n author: \"HeyRain\",\n },\n {\n id: \"blue\",\n name: \"蓝莹\",\n author: \"谭淞宸\",\n },\n {\n id: \"scienceBlue\",\n name: \"科技蓝\",\n author: \"夜尽天明\",\n },\n {\n id: \"simple\",\n name: \"简\",\n author: \"aco\",\n },\n {\n id: \"custom\",\n name: \"自定义\",\n author: \"\",\n },\n];\n\nexport const TEMPLATE_CUSTOM_NUM = TEMPLATE_OPTIONS.length - 1;\n\nexport const THEME_API = () => {\n const currentPage = 0;\n const pageSize = 15;\n const checked = true;\n const order = \"ASC\";\n return `https://api.mdnice.com/themes?currentPage=${currentPage}&pageSize=${pageSize}&checked=${checked}&order=${order}`;\n};\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Input, Form} from \"antd\";\nimport {ALIOSS_IMAGE_HOSTING} from \"../../utils/constant\";\n\nconst formItemLayout = {\n labelCol: {\n xs: {span: 6},\n },\n wrapperCol: {\n xs: {span: 16},\n },\n};\n\n@inject(\"imageHosting\")\n@observer\nclass AliOSS extends Component {\n constructor(props) {\n super(props);\n // 从localstorage里面读取\n const imageHosting = JSON.parse(localStorage.getItem(ALIOSS_IMAGE_HOSTING));\n this.state = {\n imageHosting,\n };\n }\n\n regionChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.region = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(ALIOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n accessKeyIdChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.accessKeyId = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(ALIOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n accessKeySecretChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.accessKeySecret = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(ALIOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n bucketChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.bucket = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(ALIOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n render() {\n const {region, accessKeyId, accessKeySecret, bucket} = this.state.imageHosting;\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n 配置后请在右上角进行切换,\n \n 阿里云图床配置文档\n \n \n
\n );\n }\n}\n\nconst style = {\n formItem: {\n marginBottom: \"10px\",\n },\n};\n\nexport default AliOSS;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Input, Select, Form} from \"antd\";\nimport {QINIUOSS_IMAGE_HOSTING} from \"../../utils/constant\";\n\nconst {Option} = Select;\nconst formItemLayout = {\n labelCol: {\n xs: {span: 6},\n },\n wrapperCol: {\n xs: {span: 16},\n },\n};\n\n@inject(\"imageHosting\")\n@observer\nclass QiniuOSS extends Component {\n constructor(props) {\n super(props);\n // 从localstorage里面读取\n const imageHosting = JSON.parse(localStorage.getItem(QINIUOSS_IMAGE_HOSTING));\n const link = imageHosting.domain.split(\"://\")[1];\n this.state = {\n imageHosting,\n link,\n };\n }\n\n regionChange = (value) => {\n const {imageHosting} = this.state;\n imageHosting.region = value;\n this.setState({imageHosting});\n localStorage.setItem(QINIUOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n accessKeyChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.accessKey = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(QINIUOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n secretKeyChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.secretKey = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(QINIUOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n bucketChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.bucket = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(QINIUOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n linkChange = (e) => {\n this.setState({link: e.target.value});\n\n const {imageHosting} = this.state;\n imageHosting.domain = \"https://\" + e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(QINIUOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n namespaceChange = ({target: {value}}) => {\n const {imageHosting} = this.state;\n imageHosting.namespace = value;\n this.setState({imageHosting});\n localStorage.setItem(QINIUOSS_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n render() {\n const {region, accessKey, secretKey, bucket, namespace} = this.state.imageHosting;\n const {link} = this.state;\n return (\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\nconst style = {\n formItem: {\n marginBottom: \"10px\",\n },\n};\n\nexport default QiniuOSS;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Input, Form} from \"antd\";\nimport {GITEE_IMAGE_HOSTING} from \"../../utils/constant\";\n\nconst formItemLayout = {\n labelCol: {\n xs: {span: 6},\n },\n wrapperCol: {\n xs: {span: 16},\n },\n};\n\n@inject(\"imageHosting\")\n@observer\nclass Gitee extends Component {\n constructor(props) {\n super(props);\n // 从localstorage里面读取\n const imageHosting = JSON.parse(localStorage.getItem(GITEE_IMAGE_HOSTING));\n this.state = {\n imageHosting,\n };\n }\n\n usernameChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.username = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(GITEE_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n repoChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.repo = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(GITEE_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n tokenChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.token = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(GITEE_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n render() {\n const {username, repo, token} = this.state.imageHosting;\n return (\n
\n \n \n \n \n \n \n \n \n \n \n 配置后请在右上角进行切换,\n \n Gitee 图床配置文档\n \n \n
\n );\n }\n}\n\nconst style = {\n formItem: {\n marginBottom: \"10px\",\n },\n};\n\nexport default Gitee;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Input, Form, Checkbox} from \"antd\";\nimport {GITHUB_IMAGE_HOSTING} from \"../../utils/constant\";\n\nconst formItemLayout = {\n labelCol: {\n xs: {span: 6},\n },\n wrapperCol: {\n xs: {span: 16},\n },\n};\n\n@inject(\"imageHosting\")\n@observer\nclass Gitee extends Component {\n constructor(props) {\n super(props);\n // 从localstorage里面读取\n const imageHosting = JSON.parse(localStorage.getItem(GITHUB_IMAGE_HOSTING));\n this.state = {\n imageHosting,\n };\n }\n\n usernameChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.username = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(GITHUB_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n repoChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.repo = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(GITHUB_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n tokenChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.token = e.target.value;\n this.setState({imageHosting});\n localStorage.setItem(GITHUB_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n jsdelivrChange = (e) => {\n const {imageHosting} = this.state;\n imageHosting.jsdelivr = e.target.checked ? \"true\" : \"false\";\n console.log(imageHosting);\n this.setState({imageHosting});\n localStorage.setItem(GITHUB_IMAGE_HOSTING, JSON.stringify(imageHosting));\n };\n\n render() {\n const {username, repo, token, jsdelivr} = this.state.imageHosting;\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n (强烈建议开启,加速图片)\n \n \n \n 配置后请在右上角进行切换,\n \n GitHub图床配置文档\n \n \n
\n );\n }\n}\n\nconst style = {\n formItem: {\n marginBottom: \"10px\",\n },\n};\n\nexport default Gitee;\n","import {observable, action} from \"mobx\";\nimport {\n IMAGE_HOSTING_TYPE,\n ALIOSS_IMAGE_HOSTING,\n QINIUOSS_IMAGE_HOSTING,\n GITEE_IMAGE_HOSTING,\n GITHUB_IMAGE_HOSTING,\n} from \"../utils/constant\";\n\nclass ImageHosting {\n @observable type = \"\";\n\n @observable hostingList = [];\n\n @observable hostingUrl = \"\";\n\n @observable hostingName = \"\";\n\n @action\n setType = (type) => {\n this.type = type;\n };\n\n @action\n setHostingUrl = (url) => {\n this.hostingUrl = url;\n };\n\n @action\n setHostingName = (name) => {\n this.hostingName = name;\n };\n\n @action\n addImageHosting = (name) => {\n this.hostingList.push({\n value: name,\n label: name,\n });\n };\n}\n\nconst store = new ImageHosting();\n\n// 如果为空先把数据放进去\nif (!window.localStorage.getItem(ALIOSS_IMAGE_HOSTING)) {\n const alioss = JSON.stringify({\n region: \"\",\n accessKeyId: \"\",\n accessKeySecret: \"\",\n bucket: \"\",\n });\n window.localStorage.setItem(ALIOSS_IMAGE_HOSTING, alioss);\n}\n\n// 如果为空先把数据放进去\nif (!window.localStorage.getItem(QINIUOSS_IMAGE_HOSTING)) {\n const qiniuoss = JSON.stringify({\n region: \"\",\n accessKey: \"\",\n secretKey: \"\",\n bucket: \"\",\n domain: \"https://\",\n namespace: \"\",\n });\n window.localStorage.setItem(QINIUOSS_IMAGE_HOSTING, qiniuoss);\n}\n\n// 如果为空先把数据放进去\nif (!window.localStorage.getItem(GITEE_IMAGE_HOSTING)) {\n const gitee = JSON.stringify({\n username: \"\",\n repo: \"\",\n token: \"\",\n });\n window.localStorage.setItem(GITEE_IMAGE_HOSTING, gitee);\n}\n\n// 如果为空先把数据放进去\nif (!window.localStorage.getItem(GITHUB_IMAGE_HOSTING)) {\n const github = JSON.stringify({\n username: \"\",\n repo: \"\",\n token: \"\",\n jsdelivr: \"true\",\n });\n window.localStorage.setItem(GITHUB_IMAGE_HOSTING, github);\n}\n\nstore.type = window.localStorage.getItem(IMAGE_HOSTING_TYPE);\n\nexport default store;\n","/* Process inline math */\n/*\nLike markdown-it-simplemath, this is a stripped down, simplified version of:\nhttps://github.com/runarberg/markdown-it-math\nIt differs in that it takes (a subset of) LaTeX as input and relies on KaTeX\nfor rendering output.\n*/\n/* eslint-disable */\n// var katex = require(\"katex\");\n\n// Test if potential opening or closing delimieter\n// Assumes that there is a \"$\" at state.src[pos]\nfunction isValidDelim(state, pos) {\n var prevChar,\n nextChar,\n max = state.posMax,\n can_open = true,\n can_close = true;\n\n prevChar = pos > 0 ? state.src.charCodeAt(pos - 1) : -1;\n nextChar = pos + 1 <= max ? state.src.charCodeAt(pos + 1) : -1;\n\n // Check non-whitespace conditions for opening and closing, and\n // check that closing delimeter isn't followed by a number\n if (\n prevChar === 0x20 /* \" \" */ ||\n prevChar === 0x09 /* \\t */ ||\n (nextChar >= 0x30 /* \"0\" */ && nextChar <= 0x39) /* \"9\" */\n ) {\n can_close = false;\n }\n if (nextChar === 0x20 /* \" \" */ || nextChar === 0x09 /* \\t */) {\n can_open = false;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n };\n}\n\nfunction math_inline(state, silent) {\n var start, match, token, res, pos, esc_count;\n\n if (state.src[state.pos] !== \"$\") {\n return false;\n }\n\n res = isValidDelim(state, state.pos);\n if (!res.can_open) {\n if (!silent) {\n state.pending += \"$\";\n }\n state.pos += 1;\n return true;\n }\n\n // First check for and bypass all properly escaped delimieters\n // This loop will assume that the first leading backtick can not\n // be the first character in state.src, which is known since\n // we have found an opening delimieter already.\n start = state.pos + 1;\n match = start;\n while ((match = state.src.indexOf(\"$\", match)) !== -1) {\n // Found potential $, look for escapes, pos will point to\n // first non escape when complete\n pos = match - 1;\n while (state.src[pos] === \"\\\\\") {\n pos -= 1;\n }\n\n // Even number of escapes, potential closing delimiter found\n if ((match - pos) % 2 == 1) {\n break;\n }\n match += 1;\n }\n\n // No closing delimter found. Consume $ and continue.\n if (match === -1) {\n if (!silent) {\n state.pending += \"$\";\n }\n state.pos = start;\n return true;\n }\n\n // Check if we have empty content, ie: $$. Do not parse.\n if (match - start === 0) {\n if (!silent) {\n state.pending += \"$$\";\n }\n state.pos = start + 1;\n return true;\n }\n\n // Check for valid closing delimiter\n res = isValidDelim(state, match);\n if (!res.can_close) {\n if (!silent) {\n state.pending += \"$\";\n }\n state.pos = start;\n return true;\n }\n\n if (!silent) {\n token = state.push(\"math_inline\", \"math\", 0);\n token.markup = \"$\";\n token.content = state.src.slice(start, match);\n }\n\n state.pos = match + 1;\n return true;\n}\n\nfunction math_block(state, start, end, silent) {\n var firstLine,\n lastLine,\n next,\n lastPos,\n found = false,\n token,\n pos = state.bMarks[start] + state.tShift[start],\n max = state.eMarks[start];\n\n if (pos + 2 > max) {\n return false;\n }\n if (state.src.slice(pos, pos + 2) !== \"$$\") {\n return false;\n }\n\n pos += 2;\n firstLine = state.src.slice(pos, max);\n\n if (silent) {\n return true;\n }\n if (firstLine.trim().slice(-2) === \"$$\") {\n // Single line expression\n firstLine = firstLine.trim().slice(0, -2);\n found = true;\n }\n\n for (next = start; !found; ) {\n next++;\n\n if (next >= end) {\n break;\n }\n\n pos = state.bMarks[next] + state.tShift[next];\n max = state.eMarks[next];\n\n if (pos < max && state.tShift[next] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n break;\n }\n\n if (\n state.src\n .slice(pos, max)\n .trim()\n .slice(-2) === \"$$\"\n ) {\n lastPos = state.src.slice(0, max).lastIndexOf(\"$$\");\n lastLine = state.src.slice(pos, lastPos);\n found = true;\n }\n }\n\n state.line = next + 1;\n\n token = state.push(\"math_block\", \"math\", 0);\n token.block = true;\n token.content =\n (firstLine && firstLine.trim() ? firstLine + \"\\n\" : \"\") +\n state.getLines(start + 1, next, state.tShift[start], true) +\n (lastLine && lastLine.trim() ? lastLine : \"\");\n token.map = [start, state.line];\n token.markup = \"$$\";\n return true;\n}\n\nexport default (md, options) => {\n // Default options\n\n options = options || {};\n\n // set KaTeX as the renderer for markdown-it-simplemath\n var katexInline = function(latex) {\n options.displayMode = false;\n try {\n return \"$\" + latex + \"$\";\n // return katex.renderToString(latex, options);\n } catch (error) {\n if (options.throwOnError) {\n console.log(error);\n }\n return latex;\n }\n };\n\n var inlineRenderer = function(tokens, idx) {\n return katexInline(tokens[idx].content);\n };\n\n var katexBlock = function(latex) {\n options.displayMode = true;\n try {\n // console.log(latex);\n return \"$$\" + latex + \"$$\";\n // return \"

\" + katex.renderToString(latex, options) + \"

\";\n } catch (error) {\n if (options.throwOnError) {\n console.log(error);\n }\n return latex;\n }\n };\n\n var blockRenderer = function(tokens, idx) {\n return katexBlock(tokens[idx].content) + \"\\n\";\n };\n\n md.inline.ruler.after(\"escape\", \"math_inline\", math_inline);\n md.block.ruler.after(\"blockquote\", \"math_block\", math_block, {\n alt: [\"paragraph\", \"reference\", \"blockquote\", \"list\"],\n });\n md.renderer.rules.math_inline = inlineRenderer;\n md.renderer.rules.math_block = blockRenderer;\n};\n","function slugify(s, md) {\n // Unicode-friendly\n var spaceRegex = new RegExp(md.utils.lib.ucmicro.Z.source, \"g\");\n return encodeURIComponent(s.replace(spaceRegex, \"\"));\n}\n\nfunction makeRule(md, options) {\n return function addHeadingAnchors(state) {\n // Go to length-2 because we're going to be peeking ahead.\n for (var i = 0; i < state.tokens.length - 1; i++) {\n if (state.tokens[i].type !== \"heading_open\" || state.tokens[i + 1].type !== \"inline\") {\n continue;\n }\n\n var headingInlineToken = state.tokens[i + 1];\n\n if (!headingInlineToken.content) {\n continue;\n }\n\n if (options.addHeadingSpan) {\n var spanTokenPre = new state.Token(\"html_inline\", \"\", 0);\n spanTokenPre.content = ``;\n headingInlineToken.children.unshift(spanTokenPre);\n var spanTokenPost = new state.Token(\"html_inline\", \"\", 0);\n spanTokenPost.content = ``;\n headingInlineToken.children.push(spanTokenPost);\n }\n\n // Advance past the inline and heading_close tokens.\n i += 2;\n }\n };\n}\n\nexport default (md, opts) => {\n var defaults = {\n anchorClass: \"markdown-it-headingspan\",\n addHeadingSpan: true,\n slugify: slugify,\n };\n var options = md.utils.assign(defaults, opts);\n md.core.ruler.push(\"heading_span\", makeRule(md, options));\n};\n","function renderFootnoteAnchorName(tokens, idx, options, env) {\n const n = Number(tokens[idx].meta.id + 1).toString();\n let prefix = \"\";\n\n if (typeof env.docId === \"string\") {\n prefix = \"-\" + env.docId + \"-\";\n }\n\n return prefix + n;\n}\n\nfunction renderFootnoteCaption(tokens, idx) {\n let n = Number(tokens[idx].meta.id + 1).toString();\n\n if (tokens[idx].meta.subId > 0) {\n n += \":\" + tokens[idx].meta.subId;\n }\n\n return \"[\" + n + \"]\";\n}\n\n// eslint-disable-next-line\nfunction renderFootnoteWord(tokens, idx, options, env, slf) {\n return '' + tokens[idx].content + \"\";\n}\n\nfunction renderFootnoteRef(tokens, idx, options, env, slf) {\n // var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);\n const caption = slf.rules.footnote_caption(tokens, idx, options, env, slf);\n return '' + caption + \"\";\n}\n\n// eslint-disable-next-line\nfunction renderFootnoteBlockOpen(tokens, idx, options) {\n return '

\\n
\\n';\n}\n\nfunction renderFootnoteBlockClose() {\n return \"
\\n\";\n}\n\nfunction renderFootnoteOpen(tokens, idx, options, env, slf) {\n let id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);\n\n if (tokens[idx].meta.subId > 0) {\n id += \":\" + tokens[idx].meta.subId;\n }\n\n return '[' + id + \"] \";\n}\n\nfunction renderFootnoteClose() {\n return \"\\n\";\n}\n\n// Process [link]( \"stuff\")\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n default:\n }\n return false;\n}\n\nfunction normalizeReference(str) {\n // use .toUpperCase() instead of .toLowerCase()\n // here to avoid a conflict with Object.prototype\n // members (most notably, `__proto__`)\n return str\n .trim()\n .replace(/\\s+/g, \" \")\n .toUpperCase();\n}\n\nfunction linkFoot(state, silent) {\n let attrs,\n code,\n label,\n pos,\n res,\n ref,\n title,\n token,\n href = \"\",\n start = state.pos,\n footnoteContent,\n parseReference = true;\n const oldPos = state.pos;\n const max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x5b /* [ */) {\n return false;\n }\n\n const labelStart = state.pos + 1;\n const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28 /* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0a) {\n break;\n }\n }\n if (pos >= max) {\n return false;\n }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n footnoteContent = res.str;\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = \"\";\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0a) {\n break;\n }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0a) {\n break;\n }\n }\n } else {\n title = \"\";\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29 /* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === \"undefined\") {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5b /* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n // 如果存在标题则转成脚注\n if (title) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n let tokens;\n\n if (!state.env.footnotes) {\n state.env.footnotes = {};\n }\n if (!state.env.footnotes.list) {\n state.env.footnotes.list = [];\n }\n\n const footnoteId = state.env.footnotes.list.length;\n\n // *用来让链接倾斜\n state.md.inline.parse(`${title}: *${footnoteContent}*`, state.md, state.env, (tokens = []));\n\n token = state.push(\"footnote_word\", \"\", 0);\n token.content = state.src.slice(labelStart, labelEnd);\n\n token = state.push(\"footnote_ref\", \"\", 0);\n token.meta = {id: footnoteId};\n\n state.env.footnotes.list[footnoteId] = {tokens: tokens};\n }\n // 不存在标题则判断域名\n else {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n token = state.push(\"link_open\", \"a\", 1);\n attrs = [[\"href\", href]];\n token.attrs = attrs;\n if (title) {\n attrs.push([\"title\", title]);\n }\n\n state.md.inline.tokenize(state);\n\n token = state.push(\"link_close\", \"a\", -1);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n\n return true;\n}\n\n// Glue footnote tokens to end of token stream\nfunction footnoteTail(state) {\n var i,\n l,\n lastParagraph,\n list,\n token,\n tokens,\n current,\n currentLabel,\n insideRef = false,\n refTokens = {};\n\n if (!state.env.footnotes) {\n return;\n }\n\n state.tokens = state.tokens.filter((tok) => {\n if (tok.type === \"footnote_reference_open\") {\n insideRef = true;\n current = [];\n currentLabel = tok.meta.label;\n return false;\n }\n if (tok.type === \"footnote_reference_close\") {\n insideRef = false;\n // prepend ':' to avoid conflict with Object.prototype members\n refTokens[\":\" + currentLabel] = current;\n return false;\n }\n if (insideRef) {\n current.push(tok);\n }\n return !insideRef;\n });\n\n if (!state.env.footnotes.list) {\n return;\n }\n list = state.env.footnotes.list;\n\n token = new state.Token(\"footnote_block_open\", \"\", 1);\n state.tokens.push(token);\n\n for (i = 0, l = list.length; i < l; i++) {\n token = new state.Token(\"footnote_open\", \"\", 1);\n token.meta = {id: i, label: list[i].label};\n state.tokens.push(token);\n\n if (list[i].tokens) {\n tokens = [];\n\n token = new state.Token(\"paragraph_open\", \"p\", 1);\n token.block = true;\n tokens.push(token);\n\n token = new state.Token(\"inline\", \"\", 0);\n token.children = list[i].tokens;\n token.content = \"\";\n tokens.push(token);\n\n token = new state.Token(\"paragraph_close\", \"p\", -1);\n token.block = true;\n tokens.push(token);\n } else if (list[i].label) {\n tokens = refTokens[\":\" + list[i].label];\n }\n\n state.tokens = state.tokens.concat(tokens);\n if (state.tokens[state.tokens.length - 1].type === \"paragraph_close\") {\n lastParagraph = state.tokens.pop();\n } else {\n lastParagraph = null;\n }\n\n if (lastParagraph) {\n state.tokens.push(lastParagraph);\n }\n\n token = new state.Token(\"footnote_close\", \"\", -1);\n state.tokens.push(token);\n }\n\n token = new state.Token(\"footnote_block_close\", \"\", -1);\n state.tokens.push(token);\n}\n\nexport default (md) => {\n md.renderer.rules.footnote_ref = renderFootnoteRef;\n md.renderer.rules.footnote_word = renderFootnoteWord;\n md.renderer.rules.footnote_block_open = renderFootnoteBlockOpen;\n md.renderer.rules.footnote_block_close = renderFootnoteBlockClose;\n md.renderer.rules.footnote_open = renderFootnoteOpen;\n md.renderer.rules.footnote_close = renderFootnoteClose;\n\n // helpers (only used in other rules, no tokens are attached to those)\n md.renderer.rules.footnote_caption = renderFootnoteCaption;\n md.renderer.rules.footnote_anchor_name = renderFootnoteAnchorName;\n\n md.inline.ruler.at(\"link\", linkFoot);\n md.core.ruler.after(\"inline\", \"footnote_tail\", footnoteTail);\n};\n","const defaultOption = {\n limitless: false, // 限制图片数量\n limit: 10, // 图片数量上限\n};\n\nconst imageFlowPlugin = (md, opt) => {\n const options = opt || defaultOption;\n\n const tokenize = (state, start) => {\n let token;\n\n const matchReg = /^<((!\\[[^[\\]]*\\]\\([^()]+\\)(,?\\s*(?=>)|,\\s*(?!>)))+)>/;\n const srcLine = state.src.slice(state.bMarks[start], state.eMarks[start]);\n\n if (srcLine.charCodeAt(0) !== 0x3c /* < */) {\n return false;\n }\n const match = matchReg.exec(srcLine);\n\n if (match) {\n const images = match[1].match(/\\[[^\\]]*\\]\\([^)]+\\)/g);\n if (!options.limitless && images.length <= options.limit) {\n token = state.push(\"imageFlow\", \"\", 0);\n token.meta = images;\n token.block = true;\n\n // update line\n state.line++;\n return true;\n }\n }\n return false;\n };\n\n md.renderer.rules.imageFlow = (tokens, idx) => {\n const start = `
`;\n const end = `

<<< 左右滑动见更多 >>>

`;\n const contents = tokens[idx].meta;\n let wrappedContent = \"\";\n let alt;\n let src;\n contents.forEach((content) => {\n [, alt] = content.match(/\\[([^[\\]]*)\\]/);\n [, src] = content.match(/[^[]*\\(([^()]*)\\)[^\\]]*/);\n wrappedContent += `
\"${alt}\"
`;\n });\n\n return start + wrappedContent + end;\n };\n\n md.block.ruler.before(\"paragraph\", \"imageFlow\", tokenize);\n};\n\nexport default imageFlowPlugin;\n","function makeRule() {\n return function addTableContainer(state) {\n let count = 0;\n let outerQuoteToekn;\n for (var i = 0; i < state.tokens.length; i++) {\n const curToken = state.tokens[i];\n if (curToken.type === \"blockquote_open\") {\n if (count === 0) {\n // 最外层 blockquote 的 token\n outerQuoteToekn = curToken;\n }\n count++;\n continue;\n }\n if (count > 0) {\n outerQuoteToekn.attrs = [[\"class\", \"multiquote-\" + count]];\n count = 0;\n }\n }\n };\n}\n\nexport default (md) => {\n md.core.ruler.push(\"blockquote-class\", makeRule(md));\n};\n","// 缩小highlight包大小,按需引入,900kb->90kb\nimport highlightjs from \"highlight.js/lib/highlight\";\n\nimport bash from \"highlight.js/lib/languages/bash\";\nimport clojure from \"highlight.js/lib/languages/clojure\";\nimport cpp from \"highlight.js/lib/languages/cpp\";\nimport cs from \"highlight.js/lib/languages/cs\";\nimport css from \"highlight.js/lib/languages/css\";\nimport dart from \"highlight.js/lib/languages/dart\";\nimport dockerfile from \"highlight.js/lib/languages/dockerfile\";\nimport erlang from \"highlight.js/lib/languages/erlang\";\nimport go from \"highlight.js/lib/languages/go\";\nimport gradle from \"highlight.js/lib/languages/gradle\";\nimport groovy from \"highlight.js/lib/languages/groovy\";\nimport haskell from \"highlight.js/lib/languages/haskell\";\nimport java from \"highlight.js/lib/languages/java\";\nimport javascript from \"highlight.js/lib/languages/javascript\";\nimport json from \"highlight.js/lib/languages/json\";\nimport julia from \"highlight.js/lib/languages/julia\";\nimport kotlin from \"highlight.js/lib/languages/kotlin\";\nimport lisp from \"highlight.js/lib/languages/lisp\";\nimport lua from \"highlight.js/lib/languages/lua\";\nimport makefile from \"highlight.js/lib/languages/makefile\";\nimport markdown from \"highlight.js/lib/languages/markdown\";\nimport matlab from \"highlight.js/lib/languages/matlab\";\nimport objectivec from \"highlight.js/lib/languages/objectivec\";\nimport perl from \"highlight.js/lib/languages/perl\";\nimport php from \"highlight.js/lib/languages/php\";\nimport python from \"highlight.js/lib/languages/python\";\nimport r from \"highlight.js/lib/languages/r\";\nimport ruby from \"highlight.js/lib/languages/ruby\";\nimport rust from \"highlight.js/lib/languages/rust\";\nimport scala from \"highlight.js/lib/languages/scala\";\nimport shell from \"highlight.js/lib/languages/shell\";\nimport sql from \"highlight.js/lib/languages/sql\";\nimport swift from \"highlight.js/lib/languages/swift\";\nimport tex from \"highlight.js/lib/languages/tex\";\nimport typescript from \"highlight.js/lib/languages/typescript\";\nimport verilog from \"highlight.js/lib/languages/verilog\";\nimport vhdl from \"highlight.js/lib/languages/vhdl\";\nimport xml from \"highlight.js/lib/languages/xml\";\nimport yaml from \"highlight.js/lib/languages/yaml\";\nimport diff from \"highlight.js/lib/languages/diff\";\n\nhighlightjs.registerLanguage(\"bash\", bash);\nhighlightjs.registerLanguage(\"clojure\", clojure);\nhighlightjs.registerLanguage(\"cpp\", cpp);\nhighlightjs.registerLanguage(\"cs\", cs);\nhighlightjs.registerLanguage(\"css\", css);\nhighlightjs.registerLanguage(\"dart\", dart);\nhighlightjs.registerLanguage(\"dockerfile\", dockerfile);\nhighlightjs.registerLanguage(\"erlang\", erlang);\nhighlightjs.registerLanguage(\"go\", go);\nhighlightjs.registerLanguage(\"gradle\", gradle);\nhighlightjs.registerLanguage(\"groovy\", groovy);\nhighlightjs.registerLanguage(\"haskell\", haskell);\nhighlightjs.registerLanguage(\"java\", java);\nhighlightjs.registerLanguage(\"javascript\", javascript);\nhighlightjs.registerLanguage(\"json\", json);\nhighlightjs.registerLanguage(\"julia\", julia);\nhighlightjs.registerLanguage(\"kotlin\", kotlin);\nhighlightjs.registerLanguage(\"lisp\", lisp);\nhighlightjs.registerLanguage(\"lua\", lua);\nhighlightjs.registerLanguage(\"makefile\", makefile);\nhighlightjs.registerLanguage(\"markdown\", markdown);\nhighlightjs.registerLanguage(\"matlab\", matlab);\nhighlightjs.registerLanguage(\"objectivec\", objectivec);\nhighlightjs.registerLanguage(\"perl\", perl);\nhighlightjs.registerLanguage(\"php\", php);\nhighlightjs.registerLanguage(\"python\", python);\nhighlightjs.registerLanguage(\"r\", r);\nhighlightjs.registerLanguage(\"ruby\", ruby);\nhighlightjs.registerLanguage(\"rust\", rust);\nhighlightjs.registerLanguage(\"scala\", scala);\nhighlightjs.registerLanguage(\"shell\", shell);\nhighlightjs.registerLanguage(\"sql\", sql);\nhighlightjs.registerLanguage(\"swift\", swift);\nhighlightjs.registerLanguage(\"tex\", tex);\nhighlightjs.registerLanguage(\"typescript\", typescript);\nhighlightjs.registerLanguage(\"verilog\", verilog);\nhighlightjs.registerLanguage(\"vhdl\", vhdl);\nhighlightjs.registerLanguage(\"xml\", xml);\nhighlightjs.registerLanguage(\"yaml\", yaml);\nhighlightjs.registerLanguage(\"diff\", diff);\n\nexport default highlightjs;\n","import axios from \"axios\";\nimport MarkdownIt from \"markdown-it\";\nimport markdownItMath from \"./markdown-it-math\";\nimport markdownItDeflist from \"markdown-it-deflist\";\nimport markdownItImplicitFigures from \"markdown-it-implicit-figures\";\nimport markdownItTableOfContents from \"markdown-it-table-of-contents\";\nimport markdownItRuby from \"markdown-it-ruby\";\nimport markdownItImsize from \"markdown-it-imsize\";\n\nimport markdownItSpan from \"./markdown-it-span\";\nimport markdownItTableContainer from \"./markdown-it-table-container\";\nimport markdownItLinkfoot from \"./markdown-it-linkfoot\";\nimport markdownItImageFlow from \"./markdown-it-imageflow\";\nimport markdownItMultiquote from \"./markdown-it-multiquote\";\nimport highlightjs from \"./langHighlight\";\nimport markdownItLiReplacer from \"./markdown-it-li\";\n\nexport const axiosGithub = axios.create({\n baseURL: \"https://api.github.com\",\n headers: {\n Accept: \"application/json\",\n },\n});\n\nexport const axiosJSON = axios.create({\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n});\n\nexport const axiosMdnice = axios.create({\n // baseURL: process.env.NODE_ENV === \"development\" ? \"http://localhost:8081\" : \"https://math.mdnice.com\",\n baseURL: process.env.NODE_ENV === \"development\" ? \"https://math.mdnice.com\" : \"https://math.mdnice.com\",\n});\n\nexport const queryParse = (search = window.location.search) => {\n if (!search) return {};\n const queryString = search[0] === \"?\" ? search.substring(1) : search;\n const query = {};\n queryString.split(\"&\").forEach((queryStr) => {\n const [key, value] = queryStr.split(\"=\");\n /* istanbul ignore else */\n if (key) query[decodeURIComponent(key)] = decodeURIComponent(value);\n });\n return query;\n};\n\nexport const transCode = (str) => {\n return window.btoa(unescape(encodeURIComponent(str)));\n};\n\nexport const deCode = (str) => {\n return decodeURIComponent(escape(window.atob(str)));\n};\n\n// 普通解析器,代码高亮用highlight\nexport const markdownParser = new MarkdownIt({\n html: true,\n highlight: (str, lang) => {\n if (lang === undefined || lang === \"\") {\n lang = \"bash\";\n }\n // 加上custom则表示自定义样式,而非微信专属,避免被remove pre\n if (lang && highlightjs.getLanguage(lang)) {\n try {\n const formatted = highlightjs\n .highlight(lang, str, true)\n .value.replace(/\\n/g, \"
\") // 换行用br表示\n .replace(/\\s/g, \" \") // 用nbsp替换空格\n .replace(/span /g, \"span \"); // span标签修复\n return '
' + formatted + \"
\";\n } catch (e) {\n console.log(e);\n }\n }\n return '
' + markdownParser.utils.escapeHtml(str) + \"
\";\n },\n});\n\nmarkdownParser\n .use(markdownItSpan) // 在标题标签中添加span\n .use(markdownItTableContainer) // 在表格外部添加容器\n .use(markdownItMath) // 数学公式\n .use(markdownItLinkfoot) // 修改脚注\n .use(markdownItTableOfContents, {\n transformLink: () => \"\",\n includeLevel: [2, 3],\n markerPattern: /^\\[toc\\]/im,\n }) // TOC仅支持二级和三级标题\n .use(markdownItRuby) // 注音符号\n .use(markdownItImplicitFigures, {figcaption: true}) // 图示\n .use(markdownItDeflist) // 定义列表\n .use(markdownItLiReplacer) // li 标签中加入 p 标签\n .use(markdownItImageFlow) // 横屏移动插件\n .use(markdownItMultiquote) // 给多级引用加 class\n .use(markdownItImsize);\n\nexport const replaceStyle = (id, css) => {\n const style = document.getElementById(id);\n try {\n style.innerHTML = css;\n } catch (e) {\n console.log(e);\n style.styleSheet.cssText = css;\n }\n const head = document.getElementsByTagName(\"head\")[0];\n head.appendChild(style);\n};\n\nexport const b64toBlob = (b64Data, contentType = \"\", sliceSize = 512) => {\n const byteCharacters = atob(b64Data);\n const byteArrays = [];\n\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n const byteNumbers = new Array(slice.length);\n for (let i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n\n byteArrays.push(byteArray);\n }\n\n const blob = new Blob(byteArrays, {type: contentType});\n return blob;\n};\n\n// base64转blob\nexport const toBlob = (base64, fileType) => {\n const bytes = window.atob(base64);\n let n = bytes.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bytes.charCodeAt(n);\n }\n return new Blob([u8arr], {type: fileType});\n};\n\nexport const dateFormat = (date, fmt) => {\n var o = {\n \"M+\": date.getMonth() + 1, // 月份\n \"d+\": date.getDate(), // 日\n \"h+\": date.getHours(), // 小时\n \"m+\": date.getMinutes(), // 分\n \"s+\": date.getSeconds(), // 秒\n \"q+\": Math.floor((date.getMonth() + 3) / 3), // 季度\n S: date.getMilliseconds(), // 毫秒\n };\n if (/(y+)/.test(fmt)) {\n fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n }\n for (var k in o) {\n if (new RegExp(\"(\" + k + \")\").test(fmt)) {\n fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : (\"00\" + o[k]).substr((\"\" + o[k]).length));\n }\n }\n return fmt;\n};\n\n// export const url2Blob = (imgUrl) => {\n// window.URL = window.URL || window.webkitURL;\n// var xhr = new XMLHttpRequest();\n// xhr.open(\"get\", imgUrl, true);\n// xhr.responseType = \"blob\";\n// xhr.onload = function () {\n// if (this.status == 200) {\n// //得到一个blob对象\n// var blob = this.response;\n// console.log(\"blob\", blob)\n// }\n// }\n// xhr.send();\n// }\n\nfunction getBase64Image(img) {\n var canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, img.width, img.height);\n var dataURL = canvas.toDataURL(\"image/png\"); // 可选其他值 image/jpeg\n return dataURL;\n}\n\nexport const url2Blob = (src, cb) => {\n var image = new Image();\n image.src = src + \"?v=\" + Math.random(); // 处理缓存\n image.crossOrigin = \"Anonymous\"; // 支持跨域图片\n image.onload = () => {\n var base64 = getBase64Image(image);\n cb && cb(base64);\n };\n};\n\n// 是否为PC端\nexport const isPC = () => {\n var userAgentInfo = navigator.userAgent;\n var Agents = [\"Android\", \"iPhone\", \"SymbianOS\", \"Windows Phone\", \"iPad\", \"iPod\"];\n var flag = true;\n for (var v = 0; v < Agents.length; v++) {\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\n flag = false;\n break;\n }\n }\n return flag;\n};\n\nexport const getOSSName = (originName, namespace = \"\") => {\n const names = originName.split(\".\");\n let key = \"\";\n if (names.length > 1) {\n const suffix = names.pop();\n key = `${names.join(\".\")}_${dateFormat(new Date(), \"yyyyMMddhhmmss\")}.${suffix}`;\n } else {\n key = originName + \"_\" + dateFormat(new Date(), \"yyyyMMddhhmmss\");\n }\n return `${namespace}${key}`;\n};\n\nexport const addStyleLabel = (styleLabels) => {\n const add = (name) => {\n const style = document.createElement(\"style\");\n style.id = name;\n const head = document.getElementsByTagName(\"head\")[0];\n head.appendChild(style);\n };\n styleLabels.forEach((name) => add(name));\n};\n\nexport const updateMathjax = () => {\n window.MathJax.texReset();\n window.MathJax.typesetClear();\n window.MathJax.typesetPromise();\n};\n\nexport const download = (content, filename) => {\n const eleLink = document.createElement(\"a\");\n eleLink.download = filename;\n eleLink.style.display = \"none\";\n // 字符内容转变成blob地址\n const blob = new Blob([content]);\n eleLink.href = URL.createObjectURL(blob);\n // 触发点击\n document.body.appendChild(eleLink);\n eleLink.click();\n // 然后移除\n document.body.removeChild(eleLink);\n};\n\nexport const isPlatformWindows = /windows|win32/i.test(navigator.userAgent);\n\nexport const wordCalc = (data) => {\n const pattern = /[a-zA-Z0-9_\\u0392-\\u03c9\\u0410-\\u04F9]+|[\\u4E00-\\u9FFF\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\uac00-\\ud7af]+/g;\n const m = data.match(pattern);\n let count = 0;\n if (m === null) return count;\n for (let i = 0; i < m.length; i++) {\n if (m[i].charCodeAt(0) >= 0x4e00) {\n count += m[i].length;\n } else {\n count += 1;\n }\n }\n return count;\n};\n","function makeRule() {\n return function addTableContainer(state) {\n var arr = [];\n for (var i = 0; i < state.tokens.length; i++) {\n var curToken = state.tokens[i];\n if (curToken.type === \"table_open\") {\n var tableContainerStart = new state.Token(\"html_inline\", \"\", 0);\n tableContainerStart.content = `
`;\n arr.push(tableContainerStart);\n arr.push(curToken);\n } else if (curToken.type === \"table_close\") {\n var tableContainerClose = new state.Token(\"html_inline\", \"\", 0);\n tableContainerClose.content = `
`;\n arr.push(curToken);\n arr.push(tableContainerClose);\n } else {\n arr.push(curToken);\n }\n }\n state.tokens = arr;\n };\n}\n\nexport default (md) => {\n md.core.ruler.push(\"table-container\", makeRule(md));\n};\n","function makeRule(md) {\n return function replaceListItem() {\n md.renderer.rules.list_item_open = function replaceOpen() {\n return \"
  • \";\n };\n md.renderer.rules.list_item_close = function replaceClose() {\n return \"
  • \";\n };\n };\n}\n\nexport default (md) => {\n md.core.ruler.push(\"replace-li\", makeRule(md));\n};\n","/**\n * 图片上传\n */\nimport * as qiniu from \"qiniu-js\";\nimport {message} from \"antd\";\nimport axios from \"axios\";\nimport OSS from \"ali-oss\";\nimport imageHosting from \"../store/imageHosting\";\n\nimport {\n SM_MS_PROXY,\n ALIOSS_IMAGE_HOSTING,\n QINIUOSS_IMAGE_HOSTING,\n GITEE_IMAGE_HOSTING,\n GITHUB_IMAGE_HOSTING,\n IMAGE_HOSTING_TYPE,\n IS_CONTAIN_IMG_NAME,\n IMAGE_HOSTING_NAMES,\n} from \"./constant\";\nimport {toBlob, getOSSName, axiosMdnice} from \"./helper\";\n\nfunction showUploadNoti() {\n message.loading(\"图片上传中\", 0);\n}\n\nfunction uploadError(description = \"图片上传失败\") {\n message.error(description, 3);\n}\n\nfunction hideUploadNoti() {\n message.destroy();\n message.success(\"图片上传成功\");\n}\n\nfunction writeToEditor({content, image}) {\n const isContainImgName = window.localStorage.getItem(IS_CONTAIN_IMG_NAME) === \"true\";\n let text = \"\";\n if (isContainImgName) {\n text = `\\n![${image.filename}](${image.url})\\n`;\n } else {\n text = `\\n![](${image.url})\\n`;\n }\n const {markdownEditor} = content;\n const cursor = markdownEditor.getCursor();\n markdownEditor.replaceSelection(text, cursor);\n content.setContent(markdownEditor.getValue());\n}\n\n// 七牛云对象存储上传\nexport const qiniuOSSUpload = async ({\n file = {},\n onSuccess = () => {},\n onError = () => {},\n onProgress = () => {},\n images = [],\n content = null, // store content\n}) => {\n showUploadNoti();\n const config = JSON.parse(window.localStorage.getItem(QINIUOSS_IMAGE_HOSTING));\n try {\n let {domain} = config;\n const {namespace} = config;\n // domain可能配置时末尾没有加‘/’\n if (domain[domain.length - 1] !== \"/\") {\n domain += \"/\";\n }\n const result = await axiosMdnice.get(`/qiniu/${config.bucket}/${config.accessKey}/${config.secretKey}`);\n const token = result.data;\n\n const base64Reader = new FileReader();\n\n base64Reader.readAsDataURL(file);\n\n base64Reader.onload = (e) => {\n const urlData = e.target.result;\n const base64 = urlData.split(\",\").pop();\n const fileType = urlData\n .split(\";\")\n .shift()\n .split(\":\")\n .pop();\n\n // base64转blob\n const blob = toBlob(base64, fileType);\n\n const conf = {\n useCdnDomain: true,\n region: qiniu.region[config.region], // 区域\n };\n\n const putExtra = {\n fname: \"\",\n params: {},\n mimeType: [] || null,\n };\n\n const OSSName = getOSSName(file.name, namespace);\n\n // 这里第一个参数的形式是blob\n const imageObservable = qiniu.upload(blob, OSSName, token, putExtra, conf);\n\n // 上传成功后回调\n const complete = (response) => {\n // console.log(response);\n const names = file.name.split(\".\");\n names.pop();\n const filename = names.join(\".\");\n const image = {\n filename, // 名字不变并且去掉后缀\n url: encodeURI(`${domain}${response.key}`),\n };\n images.push(image);\n\n if (content) {\n writeToEditor({content, image});\n }\n onSuccess(response);\n setTimeout(() => {\n hideUploadNoti();\n }, 500);\n };\n\n // 上传过程回调\n const next = (response) => {\n // console.log(response);\n const percent = parseInt(Math.round(response.total.percent.toFixed(2)), 10);\n onProgress(\n {\n percent,\n },\n file,\n );\n };\n\n // 上传错误回调\n const error = (err) => {\n hideUploadNoti();\n uploadError();\n onError(err, err.toString());\n };\n\n const imageObserver = {\n next,\n error,\n complete,\n };\n // 注册 imageObserver 对象\n imageObservable.subscribe(imageObserver);\n };\n } catch (err) {\n onError(err, err.toString());\n }\n};\n\n// 用户自定义的图床上传\nexport const customImageUpload = async ({\n formData = new FormData(),\n file = {},\n onSuccess = () => {},\n onError = () => {},\n images = [],\n content = null,\n}) => {\n showUploadNoti();\n try {\n formData.append(\"file\", file);\n formData.append(\n \"token\",\n \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHAiOjAsInBhdGgiOiJoYW94dWUiLCJleHAiOjIzNzk3NTI1NTgsImlzcyI6Imhhb3h1ZS11cGxvYWQifQ.qqgSCGhpE_66KotWYMkuuT5h2QqjZoa-AbvkcMBKQ_g\",\n );\n formData.append(\"type\", 0);\n const config = {\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n };\n const postURL = imageHosting.hostingUrl;\n const result = await axios.post(postURL, formData, config);\n const names = file.name.split(\".\");\n names.pop();\n const filename = names.join(\".\");\n console.log(\"图片上传返回的数据\", result.data);\n const image = {\n filename,\n url: encodeURI(\"https://file.haoxueai.cn\" + result.data.data.path), // 这里要和外接图床规定好数据逻辑,否则会接入失败\n };\n\n if (content) {\n writeToEditor({content, image});\n }\n images.push(image);\n onSuccess(result);\n setTimeout(() => {\n hideUploadNoti();\n }, 500);\n } catch (error) {\n message.destroy();\n uploadError(error.toString());\n onError(error, error.toString());\n }\n};\n\n// SM.MS存储上传\nexport const smmsUpload = ({\n formData = new FormData(),\n file = {},\n action = SM_MS_PROXY,\n onProgress = () => {},\n onSuccess = () => {},\n onError = () => {},\n headers = {},\n withCredentials = false,\n images = [],\n content = null, // store content\n}) => {\n showUploadNoti();\n // SM.MS图床必须这里命名为smfile\n formData.append(\"smfile\", file);\n axios\n .post(action, formData, {\n withCredentials,\n headers,\n onUploadProgress: ({total, loaded}) => {\n onProgress(\n {\n percent: parseInt(Math.round((loaded / total) * 100).toFixed(2), 10),\n },\n file,\n );\n },\n })\n .then(({data: response}) => {\n if (response.code === \"exception\") {\n throw response.message;\n }\n const image = {\n filename: response.data.filename,\n url: response.data.url,\n };\n if (content) {\n writeToEditor({content, image});\n }\n images.push(image);\n onSuccess(response, file);\n setTimeout(() => {\n hideUploadNoti();\n }, 500);\n })\n .catch((error) => {\n hideUploadNoti();\n uploadError(error.toString());\n onError(error, error.toString());\n });\n};\n\n// 阿里对象存储,上传部分\nconst aliOSSPutObject = ({config, file, buffer, onSuccess, onError, images, content}) => {\n let client;\n try {\n client = new OSS(config);\n } catch (error) {\n message.error(\"OSS配置错误,请根据文档检查配置项\");\n return;\n }\n\n const OSSName = getOSSName(file.name);\n\n client\n .put(OSSName, buffer)\n .then((response) => {\n const names = file.name.split(\".\");\n names.pop();\n const filename = names.join(\".\");\n const image = {\n filename, // 名字不变并且去掉后缀\n url: response.url,\n };\n if (content) {\n writeToEditor({content, image});\n }\n images.push(image);\n onSuccess(response, file);\n setTimeout(() => {\n hideUploadNoti();\n }, 500);\n })\n .catch((error) => {\n console.log(error);\n\n hideUploadNoti();\n uploadError(\"请根据文档检查配置项\");\n onError(error, error.toString());\n });\n};\n\n// 阿里云对象存储上传,处理部分\nexport const aliOSSUpload = ({\n file = {},\n onSuccess = () => {},\n onError = () => {},\n images = [],\n content = null, // store content\n}) => {\n showUploadNoti();\n const config = JSON.parse(window.localStorage.getItem(ALIOSS_IMAGE_HOSTING));\n const base64Reader = new FileReader();\n base64Reader.readAsDataURL(file);\n base64Reader.onload = (e) => {\n const urlData = e.target.result;\n const base64 = urlData.split(\",\").pop();\n const fileType = urlData\n .split(\";\")\n .shift()\n .split(\":\")\n .pop();\n\n // base64转blob\n const blob = toBlob(base64, fileType);\n\n // blob转arrayBuffer\n const bufferReader = new FileReader();\n bufferReader.readAsArrayBuffer(blob);\n bufferReader.onload = (event) => {\n const buffer = new OSS.Buffer(event.target.result);\n aliOSSPutObject({config, file, buffer, onSuccess, onError, images, content});\n };\n };\n};\n\n// Gitee存储上传\nexport const giteeUpload = ({\n formData = new FormData(),\n file = {},\n onProgress = () => {},\n onSuccess = () => {},\n onError = () => {},\n headers = {},\n withCredentials = false,\n images = [],\n content = null, // store content\n}) => {\n showUploadNoti();\n\n if (file.size / 1024 / 1024 > 1) {\n message.warn(\"有图片超过 1 MB,无法使用\");\n }\n\n const config = JSON.parse(window.localStorage.getItem(GITEE_IMAGE_HOSTING));\n\n const base64Reader = new FileReader();\n base64Reader.readAsDataURL(file);\n base64Reader.onload = (e) => {\n const urlData = e.target.result;\n const base64 = urlData.split(\",\").pop();\n\n const date = new Date();\n const seperator = \"-\";\n const dir = date.getFullYear() + seperator + (date.getMonth() + 1) + seperator + date.getDate();\n\n const dateFilename = new Date().getTime() + \"-\" + file.name;\n const url = `https://gitee.com/api/v5/repos/${config.username}/${config.repo}/contents/${dir}/${dateFilename}`;\n\n formData.append(\"content\", base64);\n formData.append(\"access_token\", config.token);\n formData.append(\"message\", \"mdnice upload picture\");\n\n axios\n .post(url, formData, {\n withCredentials,\n headers,\n onUploadProgress: ({total, loaded}) => {\n onProgress(\n {\n percent: parseInt(Math.round((loaded / total) * 100).toFixed(2), 10),\n },\n file,\n );\n },\n })\n .then(({data: response}) => {\n if (response.code === \"exception\") {\n throw response.message;\n }\n const names = file.name.split(\".\");\n names.pop();\n const filename = names.join(\".\");\n const image = {\n filename,\n url: encodeURI(response.content.download_url),\n };\n if (content) {\n writeToEditor({content, image});\n }\n images.push(image);\n onSuccess(response, file);\n setTimeout(() => {\n hideUploadNoti();\n }, 500);\n })\n .catch((error, info) => {\n hideUploadNoti();\n uploadError(error.toString() + \" 可能存在图片名重复等问题\");\n onError(error, error.toString() + \" 可能存在图片名重复等问题\");\n });\n };\n};\n\n// GitHub存储上传\nexport const githubUpload = ({\n formData = new FormData(),\n file = {},\n onProgress = () => {},\n onSuccess = () => {},\n onError = () => {},\n headers = {},\n withCredentials = false,\n images = [],\n content = null, // store content\n}) => {\n showUploadNoti();\n\n const config = JSON.parse(window.localStorage.getItem(GITHUB_IMAGE_HOSTING));\n\n const base64Reader = new FileReader();\n base64Reader.readAsDataURL(file);\n base64Reader.onload = (e) => {\n const urlData = e.target.result;\n const base64 = urlData.split(\",\").pop();\n\n const date = new Date();\n const seperator = \"-\";\n const dir = date.getFullYear() + seperator + (date.getMonth() + 1) + seperator + date.getDate();\n\n const dateFilename = new Date().getTime() + \"-\" + file.name;\n const url = `https://api.github.com/repos/${config.username}/${config.repo}/contents/${dir}/${dateFilename}?access_token=${config.token}`;\n\n const data = {\n content: base64,\n message: \"mdnice upload picture\",\n };\n\n axios\n .put(url, data, {\n withCredentials,\n headers,\n onUploadProgress: ({total, loaded}) => {\n onProgress(\n {\n percent: parseInt(Math.round((loaded / total) * 100).toFixed(2), 10),\n },\n file,\n );\n },\n })\n .then(({data: response}) => {\n if (response.code === \"exception\") {\n throw response.message;\n }\n const names = file.name.split(\".\");\n names.pop();\n const filename = names.join(\".\");\n\n const imageUrl =\n config.jsdelivr === \"true\"\n ? `https://cdn.jsdelivr.net/gh/${config.username}/${config.repo}/${dir}/${dateFilename}`\n : response.content.download_url;\n\n const image = {\n filename,\n url: encodeURI(imageUrl),\n };\n if (content) {\n writeToEditor({content, image});\n }\n images.push(image);\n onSuccess(response, file);\n setTimeout(() => {\n hideUploadNoti();\n }, 500);\n })\n .catch((error, info) => {\n hideUploadNoti();\n uploadError(error.toString());\n onError(error, error.toString());\n });\n };\n};\n\n// 自动检测上传配置,进行上传\nexport const uploadAdaptor = (...args) => {\n const type = localStorage.getItem(IMAGE_HOSTING_TYPE); // SM.MS | 阿里云 | 七牛云 | Gitee | GitHub | 用户自定义图床\n const userType = imageHosting.hostingName;\n if (type === userType) {\n return customImageUpload(...args);\n } else if (type === IMAGE_HOSTING_NAMES.smms) {\n return smmsUpload(...args);\n } else if (type === IMAGE_HOSTING_NAMES.qiniuyun) {\n const config = JSON.parse(window.localStorage.getItem(QINIUOSS_IMAGE_HOSTING));\n if (\n !config.region.length ||\n !config.accessKey.length ||\n !config.secretKey.length ||\n !config.bucket.length ||\n !config.domain.length\n ) {\n message.error(\"请先配置七牛云图床\");\n return false;\n }\n return qiniuOSSUpload(...args);\n } else if (type === IMAGE_HOSTING_NAMES.aliyun) {\n const config = JSON.parse(window.localStorage.getItem(ALIOSS_IMAGE_HOSTING));\n if (\n !config.region.length ||\n !config.accessKeyId.length ||\n !config.accessKeySecret.length ||\n !config.bucket.length\n ) {\n message.error(\"请先配置阿里云图床\");\n return false;\n }\n return aliOSSUpload(...args);\n } else if (type === IMAGE_HOSTING_NAMES.gitee) {\n const config = JSON.parse(window.localStorage.getItem(GITEE_IMAGE_HOSTING));\n if (!config.username.length || !config.repo.length || !config.token.length) {\n message.error(\"请先配置 Gitee 图床\");\n return false;\n }\n return giteeUpload(...args);\n } else if (type === IMAGE_HOSTING_NAMES.github) {\n const config = JSON.parse(window.localStorage.getItem(GITHUB_IMAGE_HOSTING));\n if (!config.username.length || !config.repo.length || !config.token.length) {\n message.error(\"请先配置 GitHub 图床\");\n return false;\n }\n return githubUpload(...args);\n }\n return true;\n};\n","import React from \"react\";\n\nconst appContext = React.createContext(null);\n\nexport default appContext;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Upload, Tabs, Select} from \"antd\";\n\nimport SvgIcon from \"../../icon\";\n\nimport AliOSS from \"../ImageHosting/AliOSS\";\nimport QiniuOSS from \"../ImageHosting/QiniuOSS\";\nimport Gitee from \"../ImageHosting/Gitee\";\nimport GitHub from \"../ImageHosting/GitHub\";\n\nimport {uploadAdaptor} from \"../../utils/imageHosting\";\nimport {SM_MS_PROXY, IMAGE_HOSTING_TYPE, IMAGE_HOSTING_NAMES} from \"../../utils/constant\";\nimport appContext from \"../../utils/appContext\";\n\nconst {Dragger} = Upload;\nconst {TabPane} = Tabs;\nconst {Option} = Select;\n\n@inject(\"dialog\")\n@inject(\"content\")\n@inject(\"imageHosting\")\n@inject(\"navbar\")\n@observer\nclass ImageDialog extends Component {\n constructor(props) {\n super(props);\n this.images = [];\n }\n\n // 确认后将内容更新到编辑器上\n handleOk = () => {\n let text = \"\";\n // 成功后添加url\n if (this.props.navbar.isContainImgName) {\n this.images.forEach((value) => {\n text += `![${value.filename}](${value.url})\\n`;\n });\n } else {\n this.images.forEach((value) => {\n text += `![](${value.url})\\n`;\n });\n }\n // 重新初始化\n this.images = [];\n const {markdownEditor} = this.props.content;\n const cursor = markdownEditor.getCursor();\n markdownEditor.replaceSelection(text, cursor);\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n\n this.props.dialog.setImageOpen(false);\n cursor.ch += 2;\n markdownEditor.setCursor(cursor);\n markdownEditor.focus();\n };\n\n handleCancel = () => {\n this.props.dialog.setImageOpen(false);\n };\n\n customRequest = ({action, data, file, headers, onError, onProgress, onSuccess, withCredentials}) => {\n const formData = new FormData();\n const {images} = this;\n if (data) {\n Object.keys(data).forEach((key) => {\n formData.append(key, data[key]);\n });\n }\n // 使用阿里云图床\n if (this.props.imageHosting.type === \"阿里云\") {\n uploadAdaptor({file, onSuccess, onError, images});\n }\n // 使用七牛云图床\n else if (this.props.imageHosting.type === \"七牛云\") {\n uploadAdaptor({file, onSuccess, onError, onProgress, images});\n }\n // 使用SM.MS图床\n else if (this.props.imageHosting.type === \"SM.MS\") {\n uploadAdaptor({formData, file, action, onProgress, onSuccess, onError, headers, withCredentials});\n }\n // 使用Gitee图床\n else if (this.props.imageHosting.type === \"Gitee\") {\n uploadAdaptor({formData, file, action, onProgress, onSuccess, onError, headers, withCredentials, images});\n }\n // 使用GitHub图床\n else if (this.props.imageHosting.type === \"GitHub\") {\n uploadAdaptor({formData, file, action, onProgress, onSuccess, onError, headers, withCredentials, images});\n }\n // 使用用户提供的图床或是默认mdnice图床\n else {\n uploadAdaptor({formData, file, onSuccess, onError, images});\n }\n\n return {\n abort() {\n console.log(\"upload progress is aborted.\");\n },\n };\n };\n\n typeChange = (type) => {\n this.props.imageHosting.setType(type);\n window.localStorage.setItem(IMAGE_HOSTING_TYPE, type);\n };\n\n render() {\n const {hostingList, type} = this.props.imageHosting;\n\n const columns = hostingList.map((option, index) => (\n \n ));\n\n const imageHostingSwitch = (\n \n );\n\n return (\n \n \n {({useImageHosting}) => (\n \n \n \n

    \n \n

    \n

    点击或拖拽一张或多张照片上传

    \n

    {\"正在使用\" + type + \"图床\"}

    \n
    \n
    \n {useImageHosting.isAliyunOpen ? (\n \n \n \n ) : null}\n {useImageHosting.isQiniuyunOpen ? (\n \n \n \n ) : null}\n {useImageHosting.isGiteeOpen ? (\n \n \n \n ) : null}\n {useImageHosting.isGitHubOpen ? (\n \n \n \n ) : null}\n
    \n )}\n
    \n \n );\n }\n}\n\nconst style = {\n svgIcon: {\n width: \"48px\",\n height: \"48px\",\n },\n};\n\nexport default ImageDialog;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Input, Form} from \"antd\";\n\n@inject(\"dialog\")\n@inject(\"content\")\n@observer\nclass LinkDialog extends Component {\n constructor(props) {\n super(props);\n this.state = {\n link: \"\",\n };\n }\n\n handleOk = () => {\n const {markdownEditor} = this.props.content;\n const cursor = markdownEditor.getCursor();\n const selection = markdownEditor.getSelection();\n const text = `[${selection}](${this.state.link})`;\n markdownEditor.replaceSelection(text, cursor);\n\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n\n this.setState({link: \"\"});\n this.props.dialog.setLinkOpen(false);\n cursor.ch += 1;\n markdownEditor.setCursor(cursor);\n markdownEditor.focus();\n };\n\n handleCancel = () => {\n this.setState({link: \"\"});\n this.props.dialog.setLinkOpen(false);\n };\n\n handleChange = (e) => {\n this.setState({link: e.target.value});\n };\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default LinkDialog;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Button} from \"antd\";\n\n@inject(\"dialog\")\n@observer\nclass AboutDialog extends Component {\n handleOk = () => {\n this.props.dialog.setAboutOpen(false);\n };\n\n handleCancel = () => {\n this.props.dialog.setAboutOpen(false);\n };\n\n handleVersion = () => {\n this.props.dialog.setAboutOpen(false);\n this.props.dialog.setVersionOpen(true);\n };\n\n render() {\n return (\n \n 更新记录\n ,\n ,\n ]}\n bodyStyle={{\n paddingTop: \"5px\",\n }}\n >\n

    \n Markdown Nice\n \n \"\"\n \n

    \n\n

    支持自定义样式的 Markdown 编辑器;

    \n

    支持微信公众号、知乎和稀土掘金;

    \n

    我们

    \n

    \n 如果你喜欢我们的工具,欢迎关注\n \n  GitHub \n \n 、\n \n  Gitee \n \n 和新项目\n \n  Markdown 简历\n \n ,同时我们也组建了「\n 微信群\n 」,右下角关注公众号回复「排版」拉你入群,愿意\n 微信打赏\n 就更好啦。\n

    \n
    \n \"图片描述\"\n \"图片描述\"\n
    \n \n );\n }\n}\n\nconst style = {\n leftImgWidth: {\n width: \"40%\",\n height: \"100%\",\n },\n rightImgWidth: {\n width: \"60%\",\n height: \"100%\",\n },\n headerMargin: {\n marginTop: \"5px\",\n marginBottom: \"5px\",\n color: \"black\",\n },\n lineHeight: {\n lineHeight: \"26px\",\n color: \"black\",\n padding: 0,\n margin: 0,\n },\n img: {\n width: \"70px\",\n marginLeft: \"10px\",\n display: \"inline-block\",\n },\n noBorder: {\n border: \"none\",\n },\n};\n\nexport default AboutDialog;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Timeline, Button} from \"antd\";\nimport axios from \"axios\";\nimport {NEWEST_VERSION} from \"../../utils/constant\";\nimport SvgIcon from \"../../icon\";\n\nimport \"./VersionDialog.css\";\n\n@inject(\"dialog\")\n@observer\nclass VersionDialog extends Component {\n constructor(props) {\n super(props);\n this.state = {\n // eslint-disable-next-line react/no-unused-state\n versionNumber: 0,\n versionTimeline: [],\n recommend: null,\n specialInfo: \"\",\n };\n }\n\n handleOk = () => {\n this.props.dialog.setVersionOpen(false);\n };\n\n handleCancel = () => {\n this.props.dialog.setVersionOpen(false);\n };\n\n handleMore = () => {\n const w = window.open(\"about:blank\");\n w.location.href = \"https://github.com/mdnice/markdown-nice/blob/master/CHANGELOG.md\";\n };\n\n handleDocs = () => {\n const w = window.open(\"about:blank\");\n w.location.href = \"https://preview.mdnice.com/articles/\";\n };\n\n componentDidMount = async () => {\n try {\n const {\n data: response,\n data: {data},\n } = await axios.get(\"https://api.mdnice.com/versions/newest\");\n if (!response.success) {\n throw new Error();\n }\n const newestVersion = localStorage.getItem(NEWEST_VERSION);\n if (data.versionNumber !== newestVersion) {\n this.props.dialog.setVersionOpen(false);\n localStorage.setItem(NEWEST_VERSION, data.versionNumber);\n }\n this.setState({...data});\n } catch (err) {\n console.error(\"读取最新Mdnice版本信息错误\");\n }\n };\n\n render() {\n return (\n \n 确认\n ,\n ]}\n destroyOnClose\n >\n \n {this.state.versionTimeline.map((version, index) => {\n if (index === 0) {\n return (\n }>\n {version}\n \n );\n } else {\n return {version};\n }\n })}\n \n 了解更多,请查看\n \n 用户与开发者文档\n \n \n {this.state.recommend && (\n }>\n \n {this.state.recommend.mainInfo}\n \n \n )}\n \n {this.state.specialInfo && (\n \n )}\n \n );\n }\n}\n\nconst style = {\n svgIcon: {\n width: \"16px\",\n height: \"16px\",\n },\n};\n\nexport default VersionDialog;\n","import React from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, InputNumber, Form} from \"antd\";\n\n@inject(\"dialog\")\n@inject(\"content\")\n@observer\nclass FormDialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n ...initialState,\n };\n }\n\n buildRow = (rowNum, columnNum) => {\n let appendText = \"|\";\n if (rowNum === 1) {\n appendText += \" --- |\";\n for (let i = 0; i < columnNum - 1; i++) {\n appendText += \" --- |\";\n }\n } else {\n appendText += \" |\";\n for (let i = 0; i < columnNum - 1; i++) {\n appendText += \" |\";\n }\n }\n return appendText + (/windows|win32/i.test(navigator.userAgent) ? \"\\r\\n\" : \"\\n\");\n };\n\n buildFormFormat = (rowNum, columnNum) => {\n let formFormat = \"\";\n for (let i = 0; i < 3; i++) {\n formFormat += this.buildRow(i, columnNum);\n }\n for (let i = 3; i <= rowNum; i++) {\n formFormat += this.buildRow(i, columnNum);\n }\n return formFormat;\n };\n\n handleOk = () => {\n const {markdownEditor} = this.props.content;\n const cursor = markdownEditor.getCursor();\n\n const text = this.buildFormFormat(this.state.rowNum, this.state.columnNum);\n markdownEditor.replaceSelection(text, cursor);\n\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n\n this.handleCancel();\n cursor.ch += 2;\n markdownEditor.setCursor(cursor);\n markdownEditor.focus();\n };\n\n handleCancel = () => {\n this.setState(initialState);\n this.props.dialog.setFormOpen(false);\n };\n\n render() {\n return (\n \n \n this.setState({rowNum: value})}\n />\n \n \n this.setState({columnNum: value})}\n />\n \n \n );\n }\n}\n\nconst initialState = {\n columnNum: 1,\n rowNum: 2,\n};\n\nexport default FormDialog;\n","import * as React from \"react\";\nimport {Menu, Button, Radio} from \"antd\";\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport {diff_match_patch as DiffMatchPath} from \"diff-match-patch\";\n\nimport \"./localHistory.css\";\n\nconst NOOP = () => {};\nconst prefix = \"nice-md-local-history\";\n\nconst diff = new DiffMatchPath();\n\nclass LocalHistory extends React.Component {\n constructor(props) {\n super(props);\n const {documents} = this.props;\n this.state = {\n content: documents[0].Content,\n selectedKeys: String(documents[0].id),\n mode: \"all\",\n };\n }\n\n getDiffHtml = () => {\n // eslint-disable-next-line no-underscore-dangle\n var a = diff.diff_linesToChars_(this.state.content, this.props.content);\n var lineText1 = a.chars1;\n var lineText2 = a.chars2;\n var diffs = diff.diff_main(lineText1, lineText2, false);\n // eslint-disable-next-line no-underscore-dangle\n diff.diff_charsToLines_(diffs, a.lineArray);\n const html = diff\n .diff_prettyHtml(diffs)\n .replace(/¶/g, \"\")\n .replace(/
    /g, \"​
    ​\");\n return html;\n };\n\n selectNav = ({selectedKeys}) => {\n const {Content: content} = this.props.documents.find((doc) => String(doc.id) === String(selectedKeys[0])) || {};\n this.setState({\n content,\n selectedKeys,\n });\n };\n\n handleModeChange = (e) => {\n this.setState({\n mode: e.target.value,\n });\n };\n\n render() {\n const {documents} = this.props;\n\n return (\n <>\n \n {documents.map((d) => (\n {d.SaveTime.toLocaleString()}\n ))}\n \n {this.state.content && (\n
    \n {this.state.mode === \"all\" ? (\n \n ) : (\n
    \n )}\n
    \n \n 全文\n 和当前内容对比\n \n
    \n \n {\n this.props.onEdit(this.state.content);\n }}\n >\n 恢复此版本\n \n
    \n
    \n
    \n )}\n \n );\n }\n}\n\nLocalHistory.defaultProps = {\n visible: false,\n document: [{}],\n onEdit: NOOP,\n onCancel: NOOP,\n};\n\nexport default LocalHistory;\n","import {message} from \"antd\";\n\nfunction saveTimeSort(a, b) {\n return new Date(b.SaveTime).getTime() - new Date(a.SaveTime).getTime();\n}\n\nexport const MaxLocalDocumentLength = 30;\n\n// export const AutoSaveInterval = 10 * 60 * 1000;\nexport const AutoSaveInterval = 60 * 1000;\n\nexport const getLocalDocuments = (db, DocumentID) => {\n try {\n const transaction = db.transaction([\"customers\"], \"readonly\");\n const store = transaction.objectStore(\"customers\");\n const keyRange = IDBKeyRange.only(DocumentID);\n const index = store.index(\"DocumentID\");\n const req = index.openCursor(keyRange);\n\n return new Promise((resolve, reject) => {\n const result = [];\n req.onsuccess = (event) => {\n const cursor = event.target.result;\n if (cursor) {\n // Do something with the matches.\n result.push(cursor.value);\n cursor.continue();\n } else {\n // console.log('获取成功 ');\n result.sort(saveTimeSort);\n resolve(result);\n }\n };\n req.onerror = (event) => {\n console.error(\"获取失败\");\n reject(event);\n };\n });\n } catch (e) {\n console.log(\"未知错误\", DocumentID);\n return Promise.reject(e);\n }\n};\n\nexport const setLocalDocuments = (db, localDocuments, document = {}) => {\n const draftIndex = 0;\n if (localDocuments[draftIndex + 1] && localDocuments[draftIndex + 1].Content === localDocuments[draftIndex].Content) {\n // console.log(\"内容未更新,不进行本地保存。\");\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"customers\"], \"readwrite\");\n const store = transaction.objectStore(\"customers\");\n let req = {};\n\n // Info: 长度超过用 put,没超过用 add\n if (localDocuments.length >= MaxLocalDocumentLength) {\n const {id} = localDocuments.sort(saveTimeSort)[localDocuments.length - 1];\n req = store.put({\n ...document,\n id,\n });\n } else {\n req = store.add(document);\n }\n\n req.onsuccess = () => {\n // console.log(\"自动保存成功\");\n resolve();\n };\n req.onerror = (event) => {\n message.error(\"自动保存失败\");\n reject(event);\n };\n });\n};\n\nexport const setLocalDraft = (db, localDocuments, document = {}) => {\n const draft = localDocuments[0];\n if (draft && document.Content === draft.Content) {\n console.log(\"草稿未更新,不进行本地保存。\");\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n const transaction = db.transaction([\"customers\"], \"readwrite\");\n const store = transaction.objectStore(\"customers\");\n\n // Info: 更新草稿\n const {id} = draft;\n const req = store.put({\n ...document,\n id,\n });\n\n req.onsuccess = () => {\n // console.log(\"自动保存草稿成功\");\n resolve();\n };\n req.onerror = (event) => {\n message.error(\"自动保存草稿失败\");\n reject(event);\n };\n });\n};\n","import {message} from \"antd\";\n\n// In the following line, you should include the prefixes of implementations you want to test.\nconst indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n// DON'T use \"var indexedDB = ...\" if you're not in a function.\n// Moreover, you may need references to some window.IDB* objects:\n// const IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;\n// const IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;\n\n// (Mozilla has never prefixed these objects, so we don't need window.mozIDB*)\n\nexport default class IndexDB {\n constructor(options = {}) {\n this.options = options;\n }\n\n async init() {\n if (!indexedDB) {\n message.error(\"初始化 indexdb 失败!浏览器不支持\");\n throw Error(\"浏览器不支持 indexdb\");\n }\n\n const {name, storeName = \"\", storeOptions = {}, storeInit = () => {}} = this.options;\n\n this.storeName = storeName;\n this.storeOptions = storeOptions;\n this.storeInit = storeInit;\n\n const request = indexedDB.open(name);\n const result = await this.initEvent(request);\n return result;\n }\n\n initEvent(request) {\n return new Promise((resolve, reject) => {\n request.onerror = (event) => {\n // Do something with request.errorCode!\n message.error(\"初始化数据库失败!\", event.target.errorCode);\n reject(new Error(\"初始化数据库失败!\"));\n };\n\n request.onsuccess = (event) => {\n const db = event.target.result;\n console.log(\"成功初始化数据库\");\n // this.db = db;\n resolve(db);\n };\n\n // 该事件仅在较新的浏览器中被实现\n request.onupgradeneeded = (event) => {\n // 更新对象存储空间和索引 ....\n const db = event.target.result;\n this.initStore(db, this.storeName, this.storeOptions, this.storeInit);\n };\n });\n }\n\n initStore(db, name, options, func) {\n // 创建一个对象存储空间来持有信息。\n const objectStore = db.createObjectStore(name, options);\n if (func) func(objectStore);\n }\n}\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Empty, message} from \"antd\";\nimport LocalHistory from \"../LocalHistory\";\nimport {AutoSaveInterval, getLocalDocuments, setLocalDocuments, setLocalDraft} from \"../LocalHistory/util\";\nimport IndexDB from \"../LocalHistory/indexdb\";\nimport debouce from \"lodash.debounce\";\n\nconst DocumentID = 1;\n\n@inject(\"dialog\")\n@inject(\"content\")\n@observer\nclass HistoryDialog extends Component {\n timer = null;\n\n db = null;\n\n constructor(props) {\n super(props);\n this.state = {\n documents: [],\n };\n }\n\n async componentDidMount() {\n await this.initIndexDB();\n }\n\n componentWillUnmount() {\n clearInterval(this.timer);\n }\n\n get editor() {\n return this.props.content.markdownEditor;\n }\n\n //\n // async UNSAFE_componentWillReceiveProps(nextProps) {\n // // 文档 id 变更\n // if (this.props.documentID !== nextProps.documentID && nextProps.documentID != null) {\n // if (this.db) {\n // await this.overrideLocalDocuments(nextProps.documentID);\n // }\n // }\n // }\n //\n\n closeDialog = () => {\n this.props.dialog.setHistoryOpen(false);\n };\n\n editLocalDocument = (content) => {\n this.props.content.setContent(content);\n message.success(\"恢复成功!\");\n this.closeDialog();\n };\n\n autoSave = async (isRecent = false) => {\n const Content = this.props.content.markdownEditor.getValue();\n if (Content.trim() !== \"\") {\n const document = {\n Content,\n DocumentID: this.props.documentID,\n SaveTime: new Date(),\n };\n const setLocalDocumentMethod = isRecent && this.state.documents.length > 0 ? setLocalDraft : setLocalDocuments;\n await setLocalDocumentMethod(this.db, this.state.documents, document);\n await this.overrideLocalDocuments(this.props.documentID);\n }\n };\n\n async initIndexDB() {\n try {\n const indexDB = new IndexDB({\n name: \"mdnice-local-history\",\n storeName: \"customers\",\n storeOptions: {keyPath: \"id\", autoIncrement: true},\n storeInit: (objectStore) => {\n objectStore.createIndex(\"DocumentID\", \"DocumentID\", {unique: false});\n objectStore.createIndex(\"SaveTime\", \"SaveTime\", {unique: false});\n },\n });\n this.db = await indexDB.init();\n\n if (this.db && this.props.documentID) {\n await this.overrideLocalDocuments(this.props.documentID);\n }\n // 每隔一段时间自动保存\n this.timer = setInterval(async () => {\n await this.autoSave();\n }, AutoSaveInterval);\n // 每改变内容自动保存最近的一条\n this.editor.on &&\n this.editor.on(\n \"change\",\n debouce(async () => {\n await this.autoSave(true);\n }, 1000),\n );\n } catch (e) {\n console.error(e);\n }\n }\n\n // 刷新本地历史文档\n async overrideLocalDocuments(documentID) {\n const localDocuments = await getLocalDocuments(this.db, +documentID);\n // console.log('refresh local',localDocuments);\n this.setState({\n documents: localDocuments,\n });\n }\n\n render() {\n return (\n \n {this.state.documents && this.state.documents.length > 0 ? (\n \n ) : (\n \n )}\n \n );\n }\n}\n\nHistoryDialog.defaultProps = {\n documentID: DocumentID,\n};\n\nexport default HistoryDialog;\n","import {Sitdown, RootNode} from \"sitdown/dist/src.esm\";\nimport {applyJuejinRule} from \"@sitdown/juejin/dist/src.esm\";\nimport {applyWechatRule, extraFootLinks} from \"@sitdown/wechat/dist/src.esm\";\nimport {applyZhihuRule} from \"@sitdown/zhihu/dist/src.esm\";\n\nconst gfm = new Sitdown({\n keepFilter: [\"style\"],\n codeBlockStyle: \"fenced\",\n});\nconst juejin = new Sitdown({\n keepFilter: [\"style\"],\n codeBlockStyle: \"fenced\",\n bulletListMarker: \"-\",\n hr: \"---\",\n});\njuejin.use(applyJuejinRule);\nconst wechat = new Sitdown({\n keepFilter: [\"style\"],\n codeBlockStyle: \"fenced\",\n bulletListMarker: \"-\",\n hr: \"---\",\n});\nwechat.use(applyWechatRule);\nconst wechatToMD = (html) => {\n const root = new RootNode(html);\n const footLinks = extraFootLinks(root);\n return wechat.HTMLToMD(html, {footLinks});\n};\nconst zhihu = new Sitdown({\n keepFilter: [\"style\"],\n codeBlockStyle: \"fenced\",\n bulletListMarker: \"-\",\n hr: \"---\",\n});\nzhihu.use(applyZhihuRule);\nconst csdn = new Sitdown({\n keepFilter: [\"style\"],\n codeBlockStyle: \"fenced\",\n bulletListMarker: \"-\",\n hr: \"---\",\n});\nconst methods = {\n GFM: (input) => gfm.HTMLToMD(input),\n Juejin: (input) => juejin.HTMLToMD(input),\n Zhihu: (input) => zhihu.HTMLToMD(input),\n Wechat: (input) => wechatToMD(input),\n CSDN: (input) => csdn.HTMLToMD(input),\n};\n\nexport default methods;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Input, Select, message} from \"antd\";\n\nimport SitDownConverter from \"../../utils/sitdownConverter\";\nimport {SITDOWN_OPTIONS} from \"../../utils/constant\";\n\nconst {Option} = Select;\nconst {TextArea} = Input;\n\n@inject(\"dialog\")\n@inject(\"content\")\n@observer\nclass SitDownDialog extends Component {\n constructor(props) {\n super(props);\n this.state = {\n platform: \"default\",\n sourceCode: \"\",\n };\n }\n\n handleOk = () => {\n try {\n const {platform, sourceCode} = this.state;\n\n const domParser = new DOMParser();\n const sourceCodeDom = domParser.parseFromString(sourceCode, \"text/html\");\n\n let content = \"\";\n\n if (platform === \"csdn\") {\n const articleDom = sourceCodeDom.getElementById(\"content_views\");\n content = SitDownConverter.CSDN(articleDom);\n } else if (platform === \"juejin\") {\n const articleDom = sourceCodeDom.getElementsByClassName(\"article-content\");\n content = SitDownConverter.Juejin(articleDom[0]);\n } else if (platform === \"zhihu\") {\n const articleDom = sourceCodeDom.getElementsByClassName(\"Post-RichText\");\n content = SitDownConverter.Zhihu(articleDom[0]);\n } else if (platform === \"wechat\") {\n const articleDom = sourceCodeDom.getElementById(\"js_content\");\n content = SitDownConverter.Wechat(articleDom);\n } else {\n content = SitDownConverter.GFM(sourceCodeDom);\n }\n\n this.props.content.setContent(content);\n\n this.props.dialog.setSitDownOpen(false);\n\n const {markdownEditor} = this.props.content;\n // const cursor = markdownEditor.getCursor();\n // cursor.ch += 1;\n // markdownEditor.setCursor(cursor);\n markdownEditor.focus();\n } catch (e) {\n message.error(\"源代码与已选平台的文章域名不符\");\n }\n };\n\n handleCancel = () => {\n this.props.dialog.setSitDownOpen(false);\n };\n\n handlePlatform = (value) => {\n this.setState({platform: value});\n };\n\n handleSourceCode = (e) => {\n this.setState({sourceCode: e.target.value});\n };\n\n render() {\n const {sourceCode, platform} = this.state;\n return (\n \n \n\n \n 提示:右键->显示网页源代码->全选->复制粘贴。\n \n 详细文档\n \n \n );\n }\n}\n\nexport default SitDownDialog;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, Button, message} from \"antd\";\n\n@inject(\"dialog\")\n@observer\nclass TutorialDialog extends Component {\n handleOk = () => {\n this.props.dialog.setTutorialOpen(false);\n const {tutorialContent} = this.props.dialog;\n // 复制触发\n document.addEventListener(\"copy\", function copyCall(e) {\n e.preventDefault();\n e.clipboardData.setData(\"text/html\", tutorialContent);\n e.clipboardData.setData(\"text/plain\", tutorialContent);\n document.removeEventListener(\"copy\", copyCall);\n });\n document.execCommand(\"copy\");\n message.success(\"拷贝成功,请在左侧编辑器粘贴\");\n };\n\n handleCancel = () => {\n this.props.dialog.setTutorialOpen(false);\n };\n\n render() {\n return (\n \n 拷贝 Markdown 并在编辑器中实验\n ,\n ]}\n bodyStyle={{\n paddingTop: \"5px\",\n }}\n >\n

    左侧为 Markdown 可编辑文本,右侧为渲染效果

    \n
    \n \"图片描述\"\n
    \n \n );\n }\n}\n\nconst style = {\n imgWidth: {\n width: \"100%\",\n height: \"100%\",\n },\n lineHeight: {\n lineHeight: \"40px\",\n color: \"black\",\n padding: 0,\n marginBottom: 10,\n },\n};\n\nexport default TutorialDialog;\n","import React, {Component} from \"react\";\nimport ImageDialog from \"../component/Dialog/ImageDialog\";\nimport LinkDialog from \"../component/Dialog/LinkDialog\";\nimport AboutDialog from \"../component/Dialog/AboutDialog\";\nimport VersionDialog from \"../component/Dialog/VersionDialog\";\nimport FormDialog from \"../component/Dialog/FormDialog\";\nimport HistoryDialog from \"../component/Dialog/HistoryDialog\";\nimport SitDownDialog from \"../component/Dialog/SitDownDialog\";\nimport TutorialDialog from \"../component/Dialog/TutorialDialog\";\n\nclass Dialog extends Component {\n render() {\n return (\n
    \n \n \n \n \n \n \n \n \n
    \n );\n }\n}\n\nexport default Dialog;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {message} from \"antd\";\n\nimport {download, dateFormat} from \"../../../utils/helper\";\nimport {EXPORT_FILENAME_SUFFIX} from \"../../../utils/constant\";\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass ExportMarkdown extends Component {\n handleClick = () => {\n const {markdownEditor} = this.props.content;\n const content = markdownEditor.getValue();\n if (\"download\" in document.createElement(\"a\")) {\n download(content, dateFormat(new Date(), \"yyyy-MM-dd\") + EXPORT_FILENAME_SUFFIX);\n } else {\n message.warn(\"浏览器不支持\");\n }\n };\n\n render() {\n return (\n
    \n \n \n 导出 Markdown\n \n
    \n );\n }\n}\n\nexport default ExportMarkdown;\n","import React, {Component} from \"react\";\n\nimport \"../common.css\";\n\nclass ExportPdf extends Component {\n handleClick = () => {\n setTimeout(() => {\n window.print();\n }, 500);\n };\n\n render() {\n return (\n
    \n \n \n 导出 PDF\n \n
    \n );\n }\n}\n\nexport default ExportPdf;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../common.css\";\nimport {message} from \"antd\";\n\n@inject(\"content\")\n@observer\nclass ImportFile extends Component {\n handleChange = (e) => {\n const file = e.target.files[0];\n const reader = new FileReader();\n reader.onload = (event) => {\n this.props.content.setContent(event.target.result);\n message.success(\"导入文件成功!\");\n };\n reader.readAsText(file);\n };\n\n render() {\n return (\n \n );\n }\n}\n\nexport default ImportFile;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\n\nimport ExportMarkdown from \"./File/ExportMarkdown\";\nimport ExportPdf from \"./File/ExportPdf\";\nimport ImportFile from \"./File/ImportFile\";\nimport \"./common.css\";\n\nconst menu = (\n \n \n \n \n \n \n \n \n \n \n \n);\n\nclass File extends Component {\n render() {\n return (\n \n \n 文件\n \n \n );\n }\n}\n\nexport default File;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass About extends Component {\n handleClick = () => {\n this.props.dialog.setAboutOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n 关于\n \n
    \n );\n }\n}\n\nexport default About;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass Version extends Component {\n handleClick = () => {\n this.props.dialog.setVersionOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n 版本信息\n \n
    \n );\n }\n}\n\nexport default Version;\n","import React, {Component} from \"react\";\n\nimport \"../common.css\";\n\nclass Document extends Component {\n handleClick = () => {\n const w = window.open(\"about:blank\");\n w.location.href = \"https://preview.mdnice.com/articles/\";\n };\n\n render() {\n return (\n
    \n \n \n 更多文档\n \n
    \n );\n }\n}\n\nexport default Document;\n","import React, {Component} from \"react\";\n\nimport \"../common.css\";\n\nclass Question extends Component {\n handleClick = () => {\n const w = window.open(\"about:blank\");\n w.location.href = \"https://preview.mdnice.com/article/user/solve/\";\n };\n\n render() {\n return (\n
    \n \n \n 我要提问\n \n
    \n );\n }\n}\n\nexport default Question;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\n\nimport About from \"./Help/About\";\nimport Version from \"./Help/Version\";\nimport Document from \"./Help/Document\";\nimport Question from \"./Help/Question\";\n\nimport \"./common.css\";\n\nconst menu = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nclass Help extends Component {\n render() {\n return (\n \n \n 帮助\n \n \n );\n }\n}\n\nexport default Help;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"./common.css\";\nimport {TUTORIALS} from \"../../utils/constant\";\n\n@inject(\"dialog\")\n@observer\nclass Tutorial extends Component {\n handleClick = (e, item) => {\n this.props.dialog.setTutorialOpen(true);\n this.props.dialog.setTutorialTitle(item.title);\n this.props.dialog.setTutorialContent(item.content);\n this.props.dialog.setTutorialPicture(item.picture);\n };\n\n render() {\n const menu = (\n \n {TUTORIALS.map((item, index) => (\n \n {\n this.handleClick(e, item);\n }}\n >\n \n \n {item.title}\n \n
    \n \n ))}\n \n );\n return (\n \n \n 教程\n \n \n );\n }\n}\n\nexport default Tutorial;\n","import {message} from \"antd\";\nimport prettier from \"prettier/standalone\";\nimport prettierMarkdown from \"prettier/parser-markdown\";\n\nconst wrapChar = /windows|win32/i.test(navigator.userAgent) ? \"\\r\\n\" : \"\\n\";\n\nconst handleWechatOuterLink = (content) => {\n const linkImgReg = /(!)*\\[.*?\\]\\(((?!mp.weixin.qq.com).)*?\\)/g;\n const res = content.match(linkImgReg); // 匹配到图片、链接和脚注\n\n if (res === null) {\n return content;\n }\n\n const footReg = /.*?\\(.*?\"(.*?)\".*?\\)/;\n const filterRes = res.filter((val) => {\n const comment = val.match(footReg);\n if (val[0] === \"!\") {\n return false;\n }\n if (comment && comment[1] !== \"\") {\n return false;\n }\n return true;\n }); // 过滤掉图片和脚注\n\n if (filterRes.length > 0) {\n filterRes.forEach((val) => {\n const linkReg = /\\[(.*?)\\]\\((.*?)\\)/; // 匹配链接中具体的值\n const matchValue = val.match(linkReg);\n const name = matchValue[1];\n const url = matchValue[2].trim();\n\n const newVal = `[${name}](${url} \"${name}\")`;\n content = content.replace(val, newVal);\n });\n return content;\n } else {\n return content;\n }\n};\n\nconst handleReferenceLink = (content) => {\n const refLinkReg = /[\\r\\n]+(\\s{0,3}?(?:(?:\\d+\\.|-)\\s{0,3}?)?\\[(\\w+)\\]:\\s*([^\"]+)(?:\\s+\"(\\w+)\")?\\s*[\\r\\n]+)+/gi;\n let res;\n let newContent = content;\n\n const lineHandler = (refLinkText) => {\n const lineMatch = refLinkText.match(/\\s{0,3}?(?:(?:\\d+\\.|-)\\s{0,3}?)?\\[(\\w+)\\]:\\s*([^\\s]+)(?:\\s+\"(\\w+)\")?/i);\n if (!lineMatch) {\n return;\n }\n const [rawLine, ref, link, title] = lineMatch;\n if (/^https?:\\/\\/mp\\.weixin\\.qq\\.com/i.test(link)) {\n return;\n }\n\n const rawReg = new RegExp(\"\\\\[([^\\\\[\\\\]\\\\(\\\\)]+)\\\\]\\\\[\" + ref + \"\\\\]\", \"ig\");\n newContent = newContent.replace(rawReg, (_, name) => `[${name}](${link} \"${title || name}\")`).replace(rawLine, \"\");\n };\n\n // eslint-disable-next-line no-cond-assign\n while ((res = refLinkReg.exec(content)) !== null) {\n const lines = res[0].split(/[\\r\\n]+/).filter((v) => v.trim());\n lines.forEach(lineHandler);\n }\n return newContent;\n};\n\nexport const parseLinkToFoot = (content, store) => {\n content = handleWechatOuterLink(content);\n content = handleReferenceLink(content);\n content = content.replace(/([\\u4e00-\\u9fa5])\\$/g, \"$1 $\");\n content = content.replace(/\\$([\\u4e00-\\u9fa5])/g, \"$ $1\");\n store.setContent(content);\n message.success(\"微信外链转脚注完成!\");\n};\n\nconst handlePrettierDoc = (content) => {\n const prettierRes = prettier.format(content, {\n parser: \"markdown\",\n plugins: [prettierMarkdown],\n });\n return prettierRes;\n};\n\nexport const formatDoc = (content, store) => {\n content = handlePrettierDoc(content);\n content = content.replace(/([\\u4e00-\\u9fa5])\\$/g, \"$1 $\");\n content = content.replace(/\\$([\\u4e00-\\u9fa5])/g, \"$ $1\");\n store.setContent(content);\n message.success(\"格式化文档完成!\");\n};\n\nexport const bold = (editor, selection) => {\n editor.replaceSelection(`**${selection}**`);\n const cursor = editor.getCursor();\n cursor.ch -= 2;\n editor.setCursor(cursor);\n};\n\nexport const del = (editor, selection) => {\n editor.replaceSelection(`~~${selection}~~`);\n const cursor = editor.getCursor();\n cursor.ch -= 2;\n editor.setCursor(cursor);\n};\n\nexport const italic = (editor, selection) => {\n editor.replaceSelection(`*${selection}*`);\n const cursor = editor.getCursor();\n cursor.ch -= 1;\n editor.setCursor(cursor);\n};\n\nexport const code = (editor, selection) => {\n editor.replaceSelection(`${wrapChar}\\`\\`\\`${wrapChar}${selection}${wrapChar}\\`\\`\\`${wrapChar}`);\n const cursor = editor.getCursor();\n cursor.line -= 2;\n editor.setCursor(cursor);\n};\n\nexport const inlineCode = (editor, selection) => {\n editor.replaceSelection(`\\`${selection}\\``);\n const cursor = editor.getCursor();\n cursor.ch -= 1;\n editor.setCursor(cursor);\n};\n\nexport const h1 = (editor, selection) => {\n editor.replaceSelection(`# ${selection}`);\n};\n\nexport const h2 = (editor, selection) => {\n editor.replaceSelection(`## ${selection}`);\n};\n\nexport const h3 = (editor, selection) => {\n editor.replaceSelection(`### ${selection}`);\n};\n","import * as keyEvents from \"./editorKeyEvents\";\nimport {isPlatformWindows} from \"./helper\";\n\nconst handlePressHotkey = (type, content) => {\n const {markdownEditor} = content;\n const selection = markdownEditor.getSelection();\n switch (type) {\n case \"Bold\":\n keyEvents.bold(markdownEditor, selection);\n break;\n case \"Del\":\n keyEvents.del(markdownEditor, selection);\n break;\n case \"Italic\":\n keyEvents.italic(markdownEditor, selection);\n break;\n case \"Code\":\n keyEvents.code(markdownEditor, selection);\n break;\n case \"InlineCode\":\n keyEvents.inlineCode(markdownEditor, selection);\n break;\n case \"H1\":\n keyEvents.h1(markdownEditor, selection);\n break;\n case \"H2\":\n keyEvents.h2(markdownEditor, selection);\n break;\n case \"H3\":\n keyEvents.h3(markdownEditor, selection);\n break;\n default:\n return;\n }\n\n const editorContent = markdownEditor.getValue();\n content.setContent(editorContent);\n};\n\nconst bindHotkeys = (content, dialog) =>\n isPlatformWindows\n ? {\n \"Ctrl-B\": () => {\n handlePressHotkey(\"Bold\", content);\n },\n \"Ctrl-U\": () => {\n handlePressHotkey(\"Del\", content);\n },\n \"Ctrl-I\": () => {\n handlePressHotkey(\"Italic\", content);\n },\n \"Ctrl-Alt-C\": () => {\n handlePressHotkey(\"Code\", content);\n },\n \"Ctrl-Alt-V\": () => {\n handlePressHotkey(\"InlineCode\", content);\n },\n \"Ctrl-Alt-1\": () => {\n handlePressHotkey(\"H1\", content);\n },\n \"Ctrl-Alt-2\": () => {\n handlePressHotkey(\"H2\", content);\n },\n \"Ctrl-Alt-3\": () => {\n handlePressHotkey(\"H3\", content);\n },\n \"Ctrl-K\": () => {\n dialog.setLinkOpen(true);\n },\n \"Ctrl-Alt-I\": () => {\n dialog.setImageOpen(true);\n },\n \"Ctrl-Alt-T\": () => {\n dialog.setFormOpen(true);\n },\n \"Ctrl-Alt-S\": () => {\n // Converting between sans serif and serif\n },\n \"Ctrl-Alt-L\": () => {\n keyEvents.parseLinkToFoot(content.content, content);\n },\n \"Ctrl-Alt-F\": () => {\n keyEvents.formatDoc(content.content, content);\n },\n \"Ctrl-F\": () => {\n dialog.setSearchOpen(!dialog.isSearchOpen);\n },\n }\n : {\n \"Cmd-B\": () => {\n handlePressHotkey(\"Bold\", content);\n },\n \"Cmd-U\": () => {\n handlePressHotkey(\"Del\", content);\n },\n \"Cmd-I\": () => {\n handlePressHotkey(\"Italic\", content);\n },\n \"Cmd-Alt-C\": () => {\n handlePressHotkey(\"Code\", content);\n },\n \"Cmd-Alt-V\": () => {\n handlePressHotkey(\"InlineCode\", content);\n },\n \"Cmd-Alt-1\": () => {\n handlePressHotkey(\"H1\", content);\n },\n \"Cmd-Alt-2\": () => {\n handlePressHotkey(\"H2\", content);\n },\n \"Cmd-Alt-3\": () => {\n handlePressHotkey(\"H3\", content);\n },\n \"Cmd-K\": () => {\n dialog.setLinkOpen(true);\n },\n \"Cmd-Alt-I\": () => {\n dialog.setImageOpen(true);\n },\n \"Cmd-Alt-T\": () => {\n dialog.setFormOpen(true);\n },\n \"Cmd-Alt-S\": () => {\n // Converting between sans serif and serif\n },\n \"Cmd-Alt-L\": () => {\n keyEvents.parseLinkToFoot(content.content, content);\n },\n \"Cmd-Alt-F\": () => {\n keyEvents.formatDoc(content.content, content);\n },\n \"Cmd-F\": () => {\n dialog.setSearchOpen(!dialog.isSearchOpen);\n },\n };\n\nexport const hotKeys = isPlatformWindows\n ? {\n bold: \"Ctrl+B\",\n del: \"Ctrl+U\",\n italic: \"Ctrl+I\",\n code: \"Ctrl+Alt+C\",\n inlineCode: \"Ctrl+Alt+V\",\n link: \"Ctrl+K\",\n image: \"Ctrl+Alt+I\",\n form: \"Ctrl+Alt+T\",\n format: \"Ctrl+Alt+F\",\n linkToFoot: \"Ctrl+Alt+L\",\n search: \"Ctrl+F\",\n }\n : {\n bold: \"⌘B\",\n del: \"⌘U\",\n italic: \"⌘I\",\n code: \"⌥⌘C\",\n inlineCode: \"⌥⌘V\",\n link: \"⌘K\",\n image: \"⌥⌘I\",\n form: \"⌥⌘T\",\n format: \"⌥⌘F\",\n linkToFoot: \"⌥⌘L\",\n search: \"⌘F\",\n };\n\nexport const betterTab = (cm) => {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.replaceSelection(\n cm.getOption(\"indentWithTabs\") ? \"\\t\" : Array(cm.getOption(\"indentUnit\") + 1).join(\" \"),\n \"end\",\n \"+input\",\n );\n }\n};\n\nexport const rightClick = (cm) => {\n const ele = document.getElementById(\"nice-md-editor\");\n ele.oncontextmenu = (e) => {\n const element = document.getElementById(\"nice-editor-menu\");\n element.style.display = \"block\";\n // event--ie ev--其他浏览器\n const oEvent = window.event || window.ev;\n // documentElement--其他游览器 body--谷歌\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n // 菜单的style样式跟随鼠标的位置\n element.style.top = oEvent.clientY + scrollTop + \"px\";\n const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n element.style.left = oEvent.clientX + scrollLeft + \"px\";\n return false;\n };\n window.onclick = (e) => {\n const element = document.getElementById(\"nice-editor-menu\");\n element.style.display = \"none\";\n };\n};\nexport default bindHotkeys;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {bold} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass Bold extends Component {\n handleClick = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n bold(markdownEditor, selection);\n\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n markdownEditor.focus();\n };\n\n render() {\n return (\n
    \n \n \n 加粗\n \n\n {hotKeys.bold}\n
    \n );\n }\n}\n\nexport default Bold;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {code} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass Code extends Component {\n handleClick = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n code(markdownEditor, selection);\n\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n markdownEditor.focus();\n };\n\n render() {\n return (\n
    \n \n \n 代码\n \n {hotKeys.code}\n
    \n );\n }\n}\n\nexport default Code;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {del} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass Del extends Component {\n handleClick = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n del(markdownEditor, selection);\n\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n markdownEditor.focus();\n };\n\n render() {\n return (\n
    \n \n \n 删除线\n \n {hotKeys.del}\n
    \n );\n }\n}\n\nexport default Del;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {italic} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass Italic extends Component {\n handleClick = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n italic(markdownEditor, selection);\n\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n markdownEditor.focus();\n };\n\n render() {\n return (\n
    \n \n \n 倾斜\n \n {hotKeys.italic}\n
    \n );\n }\n}\n\nexport default Italic;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass Link extends Component {\n showModal = () => {\n this.props.dialog.setLinkOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n 链接\n \n {hotKeys.link}\n
    \n );\n }\n}\n\nexport default Link;\n","import React, {Component} from \"react\";\nimport {inject, observer} from \"mobx-react\";\n\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass Form extends Component {\n showModal = () => {\n this.props.dialog.setFormOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n 表格\n \n {hotKeys.form}\n
    \n );\n }\n}\n\nexport default Form;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass Image extends Component {\n showModal = () => {\n this.props.dialog.setImageOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n 图片\n \n {hotKeys.image}\n
    \n );\n }\n}\n\nexport default Image;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {formatDoc} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass Format extends Component {\n handleFormat = () => {\n const {content} = this.props.content;\n formatDoc(content, this.props.content);\n };\n\n render() {\n return (\n
    \n \n \n 格式化文档\n \n {hotKeys.format}\n
    \n );\n }\n}\n\nexport default Format;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {parseLinkToFoot} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass Format extends Component {\n handleFormat = () => {\n const {content} = this.props.content;\n parseLinkToFoot(content, this.props.content);\n };\n\n render() {\n return (\n \n );\n }\n}\n\nexport default Format;\n","import React, {Component} from \"react\";\nimport {message} from \"antd\";\n\nimport {FONT_THEME_ID, RIGHT_SYMBOL} from \"../../../utils/constant\";\nimport {replaceStyle} from \"../../../utils/helper\";\nimport \"../common.css\";\n\nclass Font extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isSerif: false,\n };\n }\n\n // 衬线字体 和 非衬线字体 切换\n toggleFont = () => {\n const {isSerif} = this.state;\n const serif = `#nice { \n font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\n }`;\n const sansSerif = `#nice { \n font-family: Roboto, Oxygen, Ubuntu, Cantarell, PingFangSC-light, PingFangTC-light, 'Open Sans', 'Helvetica Neue', sans-serif;\n }`;\n const choosen = isSerif ? serif : sansSerif;\n replaceStyle(FONT_THEME_ID, choosen);\n message.success(\"字体切换成功!\");\n this.setState({isSerif: !isSerif});\n };\n\n render() {\n return (\n
    \n \n {!this.state.isSerif && {RIGHT_SYMBOL}}\n 衬线字体\n \n
    \n );\n }\n}\n\nexport default Font;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {inlineCode} from \"../../../utils/editorKeyEvents\";\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"content\")\n@observer\nclass InlineCode extends Component {\n handleClick = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n inlineCode(markdownEditor, selection);\n\n // 上传后实时更新内容\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n markdownEditor.focus();\n };\n\n render() {\n return (\n
    \n \n \n 行内代码\n \n {hotKeys.inlineCode}\n
    \n );\n }\n}\n\nexport default InlineCode;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\n\nimport Bold from \"./Pattern/Bold\";\nimport Code from \"./Pattern/Code\";\nimport Del from \"./Pattern/Del\";\nimport Italic from \"./Pattern/Italic\";\nimport Link from \"./Pattern/Link\";\nimport Form from \"./Pattern/Form\";\nimport Image from \"./Pattern/Image\";\nimport Format from \"./Pattern/Format\";\nimport LinkToFoot from \"./Pattern/LinkToFoot\";\nimport Font from \"./Pattern/Font\";\nimport InlineCode from \"./Pattern/InlineCode\";\n\nimport \"./common.css\";\n\nconst menu = (\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 \n \n\n \n\n \n \n \n \n \n \n
    \n);\n\nclass Pattern extends Component {\n render() {\n return (\n \n \n 格式\n \n \n );\n }\n}\n\nexport default Pattern;\n","import blue from \"./markdown/blue\";\nimport blueCyan from \"./markdown/blueCyan\";\nimport blueMountain from \"./markdown/blueMountain\";\nimport custom from \"./markdown/custom\";\nimport cyan from \"./markdown/cyan\";\nimport geekBlack from \"./markdown/geekBlack\";\nimport green from \"./markdown/green\";\nimport ink from \"./markdown/ink\";\nimport normal from \"./markdown/normal\";\nimport orangeHeart from \"./markdown/orangeHeart\";\nimport red from \"./markdown/red\";\nimport purple from \"./markdown/purple\";\nimport scienceBlue from \"./markdown/scienceBlue\";\nimport shanchui from \"./markdown/shanchui\";\nimport simple from \"./markdown/simple\";\nimport wechatFormat from \"./markdown/wechatFormat\";\nimport rose from \"./markdown/rose\";\nimport cuteGreen from \"./markdown/cuteGreen\";\nimport fullStackBlue from \"./markdown/fullStackBlue\";\n\nimport nightPurple from \"./markdown/nightPurple\";\nimport extremeBlack from \"./markdown/extremeBlack\";\n\nimport content from \"./content.md\";\n\nimport atomOneDark from \"./code/atomOneDark\";\nimport atomOneLight from \"./code/atomOneLight\";\nimport github from \"./code/github\";\nimport monokai from \"./code/monokai\";\nimport vs2015 from \"./code/vs2015\";\nimport xcode from \"./code/xcode\";\n\nimport macAtomOneDark from \"./macCode/macAtomOneDark\";\nimport macAtomOneLight from \"./macCode/macAtomOneLight\";\nimport macGithub from \"./macCode/macGithub\";\nimport macMonokai from \"./macCode/macMonokai\";\nimport macVs2015 from \"./macCode/macVs2015\";\nimport macXcode from \"./macCode/macXcode\";\n\nimport basic from \"./basic\";\n\nexport default {\n basic,\n style: {\n blue,\n blueMountain,\n blueCyan,\n normal,\n custom,\n cyan,\n geekBlack,\n green,\n ink,\n orangeHeart,\n purple,\n red,\n scienceBlue,\n shanchui,\n simple,\n wechatFormat,\n rose,\n cuteGreen,\n fullStackBlue,\n nightPurple,\n extremeBlack,\n },\n code: {\n atomOneDark,\n atomOneLight,\n github,\n monokai,\n vs2015,\n xcode,\n macAtomOneDark,\n macAtomOneLight,\n macGithub,\n macMonokai,\n macVs2015,\n macXcode,\n },\n content,\n};\n","export default `/*默认样式,最佳实践*/\n\n/*全局属性*/\n#nice {\n font-size: 16px;\n color: black;\n padding: 0 10px;\n line-height: 1.6;\n word-spacing: 0px;\n letter-spacing: 0px;\n word-break: break-word;\n word-wrap: break-word;\n text-align: left;\n font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\n /* margin-top: -10px; 解决开头空隙过大问题*/\n}\n\n/*段落*/\n#nice p {\n font-size: 16px;\n padding-top: 8px;\n padding-bottom: 8px;\n margin: 0;\n line-height: 26px;\n color: black;\n}\n\n/*标题*/\n#nice h1,\n#nice h2,\n#nice h3,\n#nice h4,\n#nice h5,\n#nice h6 {\n margin-top: 30px;\n margin-bottom: 15px;\n padding: 0px;\n font-weight: bold;\n color: black;\n}\n#nice h1 {\n font-size: 24px;\n}\n#nice h2 {\n font-size: 22px;\n}\n#nice h3 {\n font-size: 20px;\n}\n#nice h4 {\n font-size: 18px;\n}\n#nice h5 {\n font-size: 16px;\n}\n#nice h6 {\n font-size: 16px;\n}\n\n#nice h1 .prefix,\n#nice h2 .prefix,\n#nice h3 .prefix,\n#nice h4 .prefix,\n#nice h5 .prefix,\n#nice h6 .prefix {\n display: none;\n}\n\n#nice h1 .suffix\n#nice h2 .suffix,\n#nice h3 .suffix,\n#nice h4 .suffix,\n#nice h5 .suffix,\n#nice h6 .suffix {\n display: none;\n}\n\n/*列表*/\n#nice ul,\n#nice ol {\n margin-top: 8px;\n margin-bottom: 8px;\n padding-left: 25px;\n color: black;\n}\n#nice ul {\n list-style-type: disc;\n}\n#nice ul ul {\n list-style-type: square;\n}\n\n#nice ol {\n list-style-type: decimal;\n}\n\n#nice li section {\n margin-top: 5px;\n margin-bottom: 5px;\n line-height: 26px;\n text-align: left;\n color: rgb(1,1,1); /* 只要是纯黑色微信编辑器就会把color这个属性吞掉。。。*/\n font-weight: 500;\n}\n\n/*引用*/\n#nice blockquote {\n border: none;\n}\n\n#nice .multiquote-1 {\n display: block;\n font-size: 0.9em;\n overflow: auto;\n overflow-scrolling: touch;\n border-left: 3px solid rgba(0, 0, 0, 0.4);\n background: rgba(0, 0, 0, 0.05);\n color: #6a737d;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-left: 20px;\n padding-right: 10px;\n margin-bottom: 20px;\n margin-top: 20px;\n}\n\n#nice .multiquote-1 p {\n margin: 0px;\n color: black;\n line-height: 26px;\n}\n\n#nice .multiquote-2 {\n box-shadow: 1px 1px 10px rgba(0,0,0,0.2);\n padding: 20px;\n margin-bottom: 20px;\n margin-top: 20px;\n}\n\n#nice .multiquote-3 {\n box-shadow: 1px 1px 10px rgba(0,0,0,0.2);\n padding: 20px;\n margin-bottom: 20px;\n margin-top: 20px;\n}\n\n#nice .multiquote-3 p {\n text-align: center;\n}\n\n#nice .multiquote-3 h3 {\n text-align: center;\n}\n\n#nice .table-of-contents a {\n border: none;\n color: black;\n font-weight: normal;\n}\n\n/*链接*/\n#nice a {\n text-decoration: none;\n color: #1e6bb8;\n word-wrap: break-word;\n font-weight: bold;\n border-bottom: 1px solid #1e6bb8;\n}\n\n/*加粗*/\n#nice strong {\n font-weight: bold;\n color: black;\n}\n\n/*斜体*/\n#nice em {\n font-style: italic;\n color: black;\n}\n\n/*加粗斜体*/\n#nice em strong {\n font-weight: bold;\n color: black;\n}\n\n/*删除线*/\n#nice del {\n font-style: italic;\n color: black;\n}\n\n/*分隔线*/\n#nice hr {\n height: 1px;\n margin: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n border: none;\n border-top: 1px solid black;\n}\n\n/*代码块*/\n#nice pre {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n#nice pre code {\n display: -webkit-box;\n font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;\n border-radius: 0px;\n font-size: 12px;\n -webkit-overflow-scrolling: touch;\n}\n#nice pre code span {\n line-height: 26px;\n}\n\n/*行内代码*/\n#nice p code,\n#nice li code {\n font-size: 14px;\n word-wrap: break-word;\n padding: 2px 4px;\n border-radius: 4px;\n margin: 0 2px;\n color: #1e6bb8;\n background-color: rgba(27,31,35,.05);\n font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;\n word-break: break-all;\n}\n\n/*图片*/\n#nice img {\n display: block;\n margin: 0 auto;\n max-width: 100%;\n}\n\n/*图片*/\n#nice figure {\n margin: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n/*图片描述文字*/\n#nice figcaption {\n margin-top: 5px;\n text-align: center;\n color: #888;\n font-size: 14px;\n}\n\n\n/*表格容器 */\n#nice .table-container{\n overflow-x: auto;\n}\n\n/*表格*/\n#nice table {\n display: table;\n text-align: left;\n}\n#nice tbody {\n border: 0;\n}\n\n#nice table tr {\n border: 0;\n border-top: 1px solid #ccc;\n background-color: white;\n}\n\n#nice table tr:nth-child(2n) {\n background-color: #F8F8F8;\n}\n\n#nice table tr th,\n#nice table tr td {\n font-size: 16px;\n border: 1px solid #ccc;\n padding: 5px 10px;\n text-align: left;\n}\n\n#nice table tr th {\n font-weight: bold;\n background-color: #f0f0f0;\n}\n\n/* 表格最小列宽4个汉字 */\n#nice table tr th:nth-of-type(n),\n#nice table tr td:nth-of-type(n){\n min-width:85px;\n}\n\n#nice .footnote-word {\n color: #1e6bb8;\n font-weight: bold;\n}\n\n#nice .footnote-ref {\n color: #1e6bb8;\n font-weight: bold;\n}\n\n#nice .footnote-item {\n display: flex;\n}\n\n#nice .footnote-num {\n display: inline;\n width: 10%; /*神奇,50px就不可以*/\n background: none;\n font-size: 80%;\n opacity: 0.6;\n line-height: 26px;\n font-family: ptima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\n}\n\n#nice .footnote-item p {\n display: inline;\n font-size: 14px;\n width: 90%;\n padding: 0px;\n margin: 0;\n line-height: 26px;\n color: black;\n word-break:break-all;\n width: calc(100%-50)\n}\n\n#nice sub, sup {\n line-height: 0;\n}\n\n#nice .footnotes-sep:before {\n content: \"参考资料\";\n display: block;\n}\n\n/* 解决公式问题 */\n#nice .block-equation {\n display:block;\n text-align: center;\n overflow: auto;\n display: block;\n -webkit-overflow-scrolling: touch;\n}\n\n#nice .block-equation svg {\n max-width: 300% !important;\n -webkit-overflow-scrolling: touch;\n}\n\n#nice .inline-equation {\n}\n\n#nice .inline-equation svg {\n}\n\n#nice .imageflow-layer1 {\n margin-top: 1em;\n margin-bottom: 0.5em;\n white-space: normal;\n border: 0px none;\n padding: 0px;\n overflow: hidden;\n}\n\n#nice .imageflow-layer2 {\n white-space: nowrap;\n width: 100%;\n overflow-x: scroll;\n}\n\n#nice .imageflow-layer3 {\n display: inline-block;\n word-wrap: break-word;\n white-space: normal;\n vertical-align: middle;\n width: 100%;\n}\n\n#nice .imageflow-img {\n display: inline-block;\n}\n\n#nice .imageflow-caption {\n text-align: center;\n margin-top: 0px;\n padding-top: 0px;\n color: #888;\n}\n\n#nice .nice-suffix-juejin-container {\n margin-top: 20px !important;\n}\n\n#nice figure a {\n border: none;\n}\n\n#nice figure a img {\n margin: 0px;\n}\n\n#nice figure {\n display:flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n/* 图片链接嵌套 */\n#nice figure a {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n/* 图片链接嵌套,图片解释 */\n#nice figure a + figcaption {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n margin-top: -35px;\n background: rgba(0,0,0,0.7);\n color: white;\n line-height: 35px;\n z-index: 20;\n}\n`;\n","export default `/* 全局属性 */\n\n#nice {\n font-family: \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n word-break: break-all;\n}\n\n/* 标题 */\n#nice h1 {\n font-size: 1.7em;\n font-weight: normal;\n border-bottom: 2px solid hsl(216, 100%, 68%);\n}\n\n#nice h1 .content {\n background: hsl(216, 100%, 68%);\n color: white;\n padding: 3px 10px;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n margin-right: 3px;\n}\n\n#nice h2 {\n font-weight: normal;\n color: #333;\n font-size: 1.4em;\n border-bottom: 1px solid hsl(216, 100%, 68%);\n}\n\n#nice h2 .content {\n border-bottom: 1px solid hsl(216, 100%, 68%);\n}\n\n#nice h3 {\n font-weight: normal;\n color: #333;\n font-size: 1.2em;\n}\n\n/* 特殊规定:\n * h4 → 摘要\n * h5 → 强调\n * h6 → 序号\n * em → 高亮\n */\n\n#nice h4 {\n font-weight: normal;\n font-size: 1em;\n width: 80%;\n border: 1px solid hsl(216, 100%, 68%);\n border-top: 4px solid hsl(216, 100%, 68%);\n padding: 10px;\n margin: 30px auto;\n color: #333;\n}\n\n#nice h5 {\n font-weight: normal;\n font-size: 1.3em;\n text-align: center;\n background: hsl(216, 100%, 68%);\n border: 3px double #fff;\n width: 80%;\n padding: 10px;\n margin: 30px auto;\n color: #fff;\n}\n\n#nice h6 {\n font-size: 1.5em;\n font-weight: normal;\n color: hsl(216, 100%, 68%);\n border-bottom: 1px solid hsl(216, 100%, 68%);\n}\n\n#nice em {\n font-style: normal;\n font-weight: normal;\n color: white;\n background: hsl(244, 100%, 75%);\n padding: 2px 4px;\n\tmargin: 0px 2px;\n}\n\n/* 其他块元素 */\n\n#nice ol,\n#nice ul {\n padding-left: 2em;\n}\n\n#nice hr {\n width: 90%;\n margin: 1.5em auto;\n border-top: 2px dashed hsl(216, 100%, 68%);\n}\n\n#nice table {\n margin: 1.5em auto;\n width: auto;\n}\n\n#nice img {\n width: 90%;\n margin: 0 auto;\n box-shadow: #CCC 0 10px 15px;\n}\n\n#nice blockquote {\n background: #f9f9f9;\n border-left-color: hsl(216, 100%, 68%);\n}\n\n#nice blockquote p {\n color: #999;\n padding: 3px 0;\n}\n\n#nice a {\n color: hsl(187, 100%, 45%);\n font-weight: normal;\n border-bottom-color: hsl(187, 100%, 45%);\n}\n\n#nice strong {\n color: hsl(216, 80%, 44%);\n}\n\n#nice s,\n#nice del {\n color: #999;\n}\n\n#nice p,\n#nice li,\n#nice li span,\n#nice h4,\n#nice table tr td {\n color: #666;\n}\n\n#nice table tr th {\n color: #333;\n font-weight: normal;\n}\n\n#nice p code,\n#nice li code {\n color: hsl(216, 100%, 68%);\n}\n\n#nice sup {\n line-height: 0;\n}\n\n#nice .footnote-word,\n.footnote-ref {\n font-weight: normal;\n color: hsl(187, 100%, 45%);\n}\n\n#nice .footnotes-sep {\n font-family: inherit;\n}\n\n#nice .footnote-num {\n font-family: inherit;\n}\n\n#nice .footnote-item p {\n color: #666;\n}\n\n#nice .footnote-item p em {\n color: #999;\n background: transparent;\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/*初始化格式*/\n\n#nice {\n line-height: 1.6;\n letter-spacing: .034em;\n color: rgb(63, 63, 63);\n font-size: 16px;\n word-break:all;\n}\n\n#nice p {\n padding-top: 23px;\n color: rgb(74,74,74);\n line-height: 1.75em;\n}\n\n/* 一级标题 */\n#nice h1 {\n text-align:center;\n background-image: url(https://s2.loli.net/2022/01/14/X3gJHmQsAeStUFW.png); \n background-position: center top;\n background-repeat: no-repeat;\n background-size: 95px;\n line-height:95px;\n margin-top: 38px;\n margin-bottom: 10px;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n font-size: 20px;\n color: rgb(60, 112, 198);\n border-bottom:2px solid #3C7076;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n \n/* 二级标题 */\n#nice h2 {\n display:block;\n text-align:center;\n background-image: url(https://s2.loli.net/2022/01/14/X3gJHmQsAeStUFW.png); \n background-position: center center;\n background-repeat: no-repeat;\n background-attachment: initial;\n background-origin: initial;\n background-clip: initial;\n background-size: 63px;\n margin-top: 38px;\n margin-bottom: 10px;\n}\n\n/*二级标题伪元素*/\n#nice h2:before {\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n text-align:center;\n display: inline-block;\n height: 38px;\n line-height: 42px;\n color: rgb(60, 112, 198);\n background-position: left center;\n background-repeat: no-repeat;\n background-attachment: initial;\n background-origin: initial;\n background-clip: initial;\n background-size: 63px;\n margin-top: 38px;\n font-size:18px;\n margin-bottom: 10px;\n}\n\n/* 三级标题 */\n#nice h3:before {\n content: \"\";\n background-image:url(https://my-wechat.mdnice.com/mdnice/mountain_1_20191028221337.png);\n background-size:15px 15px;\n display: inline-block;\n width: 15px;\n height: 15px;\n line-height:15px;\n margin-bottom:-1px;\n}\n\n#nice h3 {\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n font-size:16px;\n font-weight:bold;\n display:inline-block;\n margin-left:8px;\n color:rgb(60,112,198);\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 列表内容 */\n#nice li {\n}\n\n/* 引用\n * 左边缘颜色 border-left-color:black;\n * 背景色 background:gray;\n */\n#nice blockquote {\n padding: 15px 20px;\n line-height: 27px;\n background-color: rgb(239, 239, 239);\n border-left:none;\n display:block;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n padding: 0px;\n font-size:15px;\n color:rgb(89,89,89);\n}\n\n/* 链接 */\n#nice a {\n color: rgb(60, 112, 198);\n text-decoration:none;\n border-bottom: 1px solid rgb(60, 112, 198);\n}\n\n/* 加粗 */\n#nice strong {\n line-height: 1.75em;\n color: rgb(74,74,74);\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color:rgb(248,57,41);\n letter-spacing:0.3em;\n}\n\n/* 删除线 */\n#nice del {\n}\n \n/* 分割线 */\n#nice hr {\n height:1px;\n padding:0;\n border:none;\n text-align:center;\n background-image:linear-gradient(to right,rgba(60,122,198,0),rgba(60,122,198,0.75),rgba(60,122,198,0));\n}\n\n/* 图片 */\n#nice img {\n border-radius:4px;\n margin-bottom:25px;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n display:block;\n font-size:12px;\n font-family:PingFangSC-Light;\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n\tcolor: rgb(60, 112, 198);;\n}\n\n/* 非微信代码块\n * 代码块不换行 display:-webkit-box !important;\n * 代码块换行 display:block;\n */\n#nice pre code {\n}\n\n/* 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n font-size: 14px;\n}\n\n#nice .footnotes{\n padding-top: 8px;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: rgb(60, 112, 198);\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: rgb(60, 112, 198);\n}\n\n/* 脚注超链接样式 */\n#nice .footnote-item em {\n color: rgb(60, 112, 198);\n font-size:13px;\n font-style:normal;\n border-bottom-color:1px dashed rgb(60, 112, 198); \n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n background-image: none;\n background-size: none;\n display: block;\n width: auto;\n height: auto;\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n color: rgb(60, 112, 198);\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p {\n color: rgb(60, 112, 198);\n font-weight:bold;\n}\n\n/* 参考资料超链接 */\n#nice .footnote-item a {\n color:rgb(60, 112, 198);\n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n font-size:14px;\n font-weight:normal;\n border-bottom:1px dashed rgb(60, 112, 198);\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n \n}\n\n/* 行内公式*/\n#nice .inline-equation svg { \n}`;\n","export default `/*自定义样式,实时生效*/\n\n/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n text-align: justify;\n}\n\n/* 一级标题 */\n#nice h1 {\n font-size: 1.8em;\n color: #009688;\n \tmargin: 1.2em auto;\n text-align: center;\n border-bottom: 1px solid #009688;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n color: #009688;\n padding-left: 10px;\n margin: 1em auto;\n border-left: 3px solid #009688;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n margin: 0.6em auto;\n padding-left: 10px;\n border-left: 2px solid #009688;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 四级标题 */\n#nice h4 {\n margin: 0.6em auto;\n font-size: 1.2em;\n padding-left: 10px;\n border-left: 2px dashed #009688;\n}\n\n/* 五级标题 */\n#nice h5 {\n margin: 0.6em auto;\n font-size: 1.1em;\n padding-left: 10px;\n border-left: 1px dashed #009688;\n}\n\n/* 六级标题 */\n#nice h6 {\n margin: 0.6em auto;\n font-size: 1em;\n padding-left: 10px;\n border-left: 1px dotted #009688;\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice blockquote {\n border-left: 2px solid #888;\n border-right: 2px solid #888;\n padding-left: 1em;\n color: #777;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: #009688;\n border-bottom: 1px solid #009688;\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n * border-top: 1px solid #3e3e3e;\n */\n#nice hr {\n margin: 20px 0;\n}\n\n/* 图片\n * 宽度 width: 80%;\n * 居中 margin: 0 auto;\n * 居左 margin: 0 0;\n */\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: #009688;\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/* 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th {\n border: 1px solid #009688;\n background-color: #009688;\n color: #f8f8f8;\n border-bottom: 0;\n}\n\n#nice table tr td {\n border: 1px solid #009688;\n}\n\n#nice table tr:nth-child(2n) {\n background-color: #f8f8f8;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #009688;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #009688;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n}\n\n/* 一级标题 */\n#nice h1 {\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题前缀 */\n#nice h1 .prefix {\n}\n\n/* 一级标题后缀 */\n#nice h1 .suffix {\n}\n\n/* 二级标题 */\n#nice h2 {\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n}\n\n/* 二级标题前缀 */\n#nice h2 .prefix {\n}\n\n/* 二级标题后缀 */\n#nice h2 .suffix {\n}\n\n/* 三级标题 */\n#nice h3 {\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题前缀 */\n#nice h3 .prefix {\n}\n\n/* 三级标题后缀 */\n#nice h3 .suffix {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 一级引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice .multiquote-1 {\n}\n\n/* 一级引用文字 */\n#nice .multiquote-1 p {\n}\n\n/* 二级引用\n */\n#nice .multiquote-2 {\n}\n\n/* 二级引用文字 */\n#nice .multiquote-2 p {\n}\n\n/* 三级引用\n */\n#nice .multiquote-3 {\n}\n\n/* 三级引用文字 */\n#nice .multiquote-3 p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top: 1px solid #3e3e3e;\n*/\n#nice hr {\n}\n\n/* 图片\n* 宽度 width: 80%;\n* 居中 margin: 0 auto;\n* 居左 margin: 0 0;\n*/\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n}\n\n/* \n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* \n * 某一列表格列宽控制\n * n 可以修改为具体数字,不修改时表示所有列\n * 最小列宽 min-width: 85px;\n */\n#nice table tr th:nth-of-type(n),\n#nice table tr td:nth-of-type(n){\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 自定义样式,实时生效,浏览器实时缓存 */\n\n/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n}\n\n/* 一级标题 */\n#nice h1 {\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题前缀 */\n#nice h1 .prefix {\n}\n\n/* 一级标题后缀 */\n#nice h1 .suffix {\n}\n\n/* 二级标题 */\n#nice h2 {\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n}\n\n/* 二级标题前缀 */\n#nice h2 .prefix {\n}\n\n/* 二级标题后缀 */\n#nice h2 .suffix {\n}\n\n/* 三级标题 */\n#nice h3 {\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题前缀 */\n#nice h3 .prefix {\n}\n\n/* 三级标题后缀 */\n#nice h3 .suffix {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 一级引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice .multiquote-1 {\n}\n\n/* 一级引用文字 */\n#nice .multiquote-1 p {\n}\n\n/* 二级引用\n */\n#nice .multiquote-2 {\n}\n\n/* 二级引用文字 */\n#nice .multiquote-2 p {\n}\n\n/* 三级引用\n */\n#nice .multiquote-3 {\n}\n\n/* 三级引用文字 */\n#nice .multiquote-3 p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n * border-top: 1px solid #3e3e3e;\n */\n#nice hr {\n}\n\n/* 图片\n * 宽度 width: 80%;\n * 居中 margin: 0 auto;\n * 居左 margin: 0 0;\n */\n#nice img {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n}\n\n/* \n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* \n * 某一列表格列宽控制\n * n 可以修改为具体数字,不修改时表示所有列\n * 最小列宽 min-width: 85px;\n */\n#nice table tr th:nth-of-type(n),\n#nice table tr td:nth-of-type(n){\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n color: rgb(89,89,89);\n}\n\n/* 一级标题 */\n#nice h1 {\n color: rgb(89,89,89);\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n border-bottom: 2px solid rgb(89,89,89);\n margin-bottom: 30px;\n color: rgb(89,89,89);\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n font-size: 22px;\n display: inline-block;\n border-bottom: 2px solid rgb(89,89,89);\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n color: rgb(89,89,89);\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 引用\n* 左边缘颜色 border-left-color: black;\n* 背景色 background: gray;\n*/\n#nice blockquote {\n font-style: normal;\n padding: 10px;\n position: relative;\n line-height: 1.8;\n text-indent: 0;\n border: none;\n color: #888;\n}\n\n#nice blockquote:before {\n content: \"“\";\n display: inline;\n color: #555555;\n font-size: 4em;\n font-family: Arial, serif;\n line-height: 1em;\n font-weight: 700;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n display: inline;\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: rgb(71, 193, 168);\n border-bottom: 1px solid rgb(71, 193, 168);\n}\n\n/* 加粗 */\n#nice strong {\n color: rgb(71, 193, 168);\n}\n\n/* 斜体 */\n#nice em {\n color: rgb(71, 193, 168);\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color: rgb(71, 193, 168);\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top: 1px solid #3e3e3e;\n*/\n#nice hr {\n}\n\n/* 图片\n* 宽度 width: 80%;\n* 居中 margin: 0 auto;\n* 居左 margin: 0 0;\n*/\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: rgb(71, 193, 168);\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: rgb(71, 193, 168);\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: rgb(71, 193, 168);\n}\n\n#nice .footnote-item em {\n color: black;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/*自定义样式,实时生效*/\n\n/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n box-sizing: border-box;\n margin-bottom: 16px;\n font-family: \"Helvetica Neue\", Helvetica, \"Segoe UI\", Arial, freesans, sans-serif;\n font-size: 15px;\n text-align: start;\n white-space: normal;\n text-size-adjust: auto;\n line-height: 1.75em;\n}\n\n/* 一级标题 */\n#nice h1 {\n margin-top: -0.46em;\n margin-bottom: 0.1em;\n border-bottom: 2px solid rgb(198, 196, 196);\n box-sizing: border-box;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n padding-top: 5px;\n padding-bottom: 5px;\n color: rgb(160, 160, 160);\n font-size: 13px;\n line-height: 2;\n box-sizing: border-box;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n margin: 10px auto;\n height: 40px;\n background-color: rgb(251, 251, 251);\n border-bottom: 1px solid rgb(246, 246, 246);\n overflow: hidden;\n box-sizing: border-box;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n margin-left: -10px;\n display: inline-block;\n width: auto;\n height: 40px;\n background-color: rgb(33, 33, 34);\n border-bottom-right-radius:100px;\n color: rgb(255, 255, 255);\n padding-right: 30px;\n padding-left: 30px;\n line-height: 40px;\n font-size: 16px;\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n margin: 20px auto 5px;\n border-top: 1px solid rgb(221, 221, 221);\n box-sizing: border-box;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n margin-top: -1px;\n padding-top: 6px;\n padding-right: 5px;\n padding-left: 5px;\n font-size: 17px;\n border-top: 2px solid rgb(33, 33, 34);\n display: inline-block;\n line-height: 1.1;\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n#nice h4 {\n margin: 10px auto -1px;\n border-top: 1px solid rgb(221, 221, 221);\n box-sizing: border-box;\n}\n\n#nice h4 .content {\n margin-top: -1px;\n padding-top: 6px;\n padding-right: 5px;\n padding-left: 5px;\n font-size: 16px;\n border-top: 2px solid rgb(33, 33, 34);\n display: inline-block;\n line-height: 1.1;\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n font-size: 15px;\n font-family: \"Helvetica Neue\", Helvetica, \"Segoe UI\", Arial, freesans, sans-serif;\n}\n\n/* 引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice blockquote {\n border-left-color: rgb(221, 221, 221);\n margin-top: 1.2em;\n margin-bottom: 1.2em;\n padding-right: 1em;\n padding-left: 1em;\n border-left-width: 4px;\n color: rgb(119, 119, 119);\n quotes: none;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n font-size: 15px;\n font-family: -apple-system-font, BlinkMacSystemFont, \"Helvetica Neue\", \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei UI\", \"Microsoft YaHei\", Arial, sans-serif;\n color: rgb(119, 119, 119);\n line-height: 1.75em;\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: rgb(239, 112, 96);\n border-bottom: 1px solid rgb(239, 112, 96);\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n * border-top: 1px solid #3e3e3e;\n */\n#nice hr {\n}\n\n/* 图片\n * 宽度 width: 80%;\n * 居中 margin: 0 auto;\n * 居左 margin: 0 0;\n */\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: rgb(239, 112, 96);\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #ff3502;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: rgb(239, 112, 96);\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n font-size: 15px;\n letter-spacing: 0.05em;\n color:#595959\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n margin: 1em 4px;\n}\n\n/* 一级标题 */\n#nice h1 {\n margin: 1.2em 0 1em;\n padding: 0;\n font-weight: bold;\n color:#35b378;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n bmin-height: 32px;\n line-height: 32px;\n border-bottom: solid 1px #000000;\n color: #35b378;\n display: inline-block;\n border-bottom-width: 0px;\n border-bottom-style: solid;\n border-color: #35b378;\n padding-top: 5px;\n padding-right: 0.5em;\n padding-left: 0.5em;\n font-size: 23px;\n margin: 1em 0 0rem 0;\n padding: 0.5em 0;\n text-align: leftt;\n font-weight: bold;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n margin: 1.2em 0 1em;\n padding: 0;\n font-weight: bold;\n color: #35b378;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n margin: 10px 0;\n}\n\n/* 引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice blockquote {\n margin: 10px 5px;\n border-left: 3px solid #35b378;\n border-right: 0px solid #35b378;\n color: #616161;\n quotes: none;\n background: #FBF9FD\n}\n\n/* 引用文字 */\n#nice blockquote p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: #35b378;\n border-bottom: 1px solid #35b378;\n}\n\n/* 加粗 */\n#nice strong {\n color:#35b378;\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n * border-top: 1px solid #3e3e3e;\n */\n#nice hr {\n border: 1px solid #35b378;\n margin: 1.5em auto;\n}\n\n/* 图片\n * 宽度 width: 80%;\n * 居中 margin: 0 auto;\n * 居左 margin: 0 0;\n */\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: #35b378;\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #35b378;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #35b378;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n font-size: 17px;\n word-spacing: 3px;\n letter-spacing: 1px\n}\n\n/* 一级标题 */\n#nice h1 {\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n background-color: #5c5c5c;\n color: white;\n padding: 5px 15px;\n border-radius: 1px;\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 引用\n* 左边缘颜色 border-left-color: black;\n* 背景色 background: gray;\n*/\n#nice blockquote {\n}\n\n/* 引用文字 */\n#nice blockquote p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del { \n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top: 1px solid #3e3e3e;\n*/\n#nice hr {\n border-top: 1px dashed #dddddd;\n}\n\n/* 图片\n* 宽度 width: 80%;\n* 居中 margin: 0 auto;\n* 居左 margin: 0 0;\n*/\n#nice img {\n border-radius: 5px;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n}\n\n/* 一级标题 */\n#nice h1 {\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n border-bottom: 2px solid rgb(239, 112, 96);\n font-size: 1.3em;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n display: inline-block;\n font-weight: bold;\n background: rgb(239, 112, 96);\n color: #ffffff;\n padding: 3px 10px 1px;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n margin-right: 3px;\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n display: inline-block;\n content: \" \";\n vertical-align: bottom;\n border-bottom: 36px solid #efebe9;\n border-right: 20px solid transparent;\n}\n\n/* 三级标题 */\n#nice h3 {\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice blockquote {\n border-left-color: rgb(239, 112, 96);\n background: #fff9f9;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: rgb(239, 112, 96);\n border-bottom: 1px solid rgb(239, 112, 96);\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n * border-top: 1px solid #3e3e3e;\n */\n#nice hr {\n}\n\n/* 图片\n * 宽度 width: 80%;\n * 居中 margin: 0 auto;\n * 居左 margin: 0 0;\n */\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: rgb(239, 112, 96);\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #ff3502;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: rgb(239, 112, 96);\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n font-size: 15px;\n letter-spacing: 0.05em;\n color:#595959\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n margin: 1em 4px;\n}\n\n/* 一级标题 */\n#nice h1 {\n margin: 1.2em 0 1em;\n padding: 0;\n font-weight: bold;\n color:#773098;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n min-height: 32px;\n line-height: 28px;\n border-bottom: solid 1px #000000;\n color: #773098;\n display: inline-block;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-color: #773098;\n padding-top: 5px;\n padding-right: 0.5em;\n padding-left: 0.5em;\n margin-bottom: -3px;\n font-size: 22px;\n margin:1em auto;\n padding: 0.5em 0;\n text-align: center;\n width: 85%;\n font-weight: bold;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n margin: 1.2em 0 1em;\n padding: 0;\n font-weight: bold;\n color:#773098;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n margin: 10px 0;\n}\n\n/* 引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice blockquote {\n margin: 10px 5px;\n border-left: 3px solid #9654B5;\n border-right: 1px solid #9654B5;\n color: #616161;\n quotes: none;\n background:#FBF9FD\n}\n\n/* 引用文字 */\n#nice blockquote p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: #773098;\n border-bottom: 1px solid #773098;\n}\n\n/* 加粗 */\n#nice strong {\n color:#773098;\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top: 1px solid #3e3e3e;\n*/\n#nice hr {\n border: 1px solid #773098;\n margin: 1.5em auto;\n}\n\n/* 图片\n* 宽度 width: 80%;\n* 居中 margin: 0 auto;\n* 居左 margin: 0 0;\n*/\n#nice img {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: #9654B5;\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #773098;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #773098;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n * 页边距 padding:30px;\n * 全文字体 font-family:ptima-Regular;\n * 英文换行 word-break:break-all;\n */\n#nice {\n font-family:PingFangSC-Light;\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top:5px;\n * 下边距 margin-bottom:5px;\n * 行高 line-height:26px;\n * 词间距 word-spacing:3px;\n * 字间距 letter-spacing:3px;\n * 对齐 text-align:left;\n * 颜色 color:#3e3e3e;\n * 字体大小 font-size:16px;\n * 首行缩进 text-indent:2em;\n */\n#nice p {\n margin:10px 10px;\n line-height:1.75;\n letter-spacing:0.2em;\n font-size:14px;\n word-spacing:0.1em;\n}\n\n/* 一级标题 */\n#nice h1 {\n border-bottom:2px solid rgb(248,57,41);\n font-size:1.3em;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n display:inline-block;\n font-weight:normal;\n background:rgb(248,57,41);\n color:#ffffff;\n padding:3px 10px 1px;\n border-top-right-radius:3px;\n border-top-left-radius:3px;\n margin-right:3px;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n \n/* 二级标题 */\n#nice h2 {\n text-align:left;\n margin:20px 10px 0px 0px;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n font-family:STHeitiSC-Light;\n font-size:18px;\n font-weight:bolder;\n display:inline-block;\n padding-left:10px;\n border-left:5px solid rgb(248,57,41);\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n font-size:14px;\n color:rgb(165,213,93);\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n font-size: 14px;\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n font-size: 14px;\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n font-size:13px;\n}\n\n/* 引用\n * 左边缘颜色 border-left-color:black;\n * 背景色 background:gray;\n */\n#nice blockquote {\n font-style:normal;\n border-left:none;\n padding:10px;\n position:relative;\n line-height:1.8;\n border-radius:0px 0px 10px 10px;\n color:#FEEEED;\n background:#000;\n box-shadow:#84A1A8 0px 10px 15px;\n}\n#nice blockquote:before {\n content:\" \";\n display:inline;\n color:#FFF;\n font-size:4em;\n font-family:Arial,serif;\n line-height:1em;\n font-weight:700;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n color:#FEEEED;\n font-size:13px;\n display:inline;\n}\n#nice blockquote:after {\n content:\"”\";\n float:right;\n display:inline;\n color:#FFF;\n font-size:3em;\n line-height:1em;\n font-weight:500;\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color:rgb(248,57,41);\n border-bottom: 1px solid #ff3502;\n font-family:STHeitiSC-Light;\n}\n\n/* 加粗 */\n#nice strong {\n font-weight:border;\n color:rgb(248,57,41);\n}\n\n/* 斜体 */\n#nice em {\n color:rgb(248,57,41);\n letter-spacing:0.3em;\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color:rgb(248,57,41);\n letter-spacing:0.3em;\n}\n\n/* 删除线 */\n#nice del {\n}\n \n/* 分隔线\n * 粗细、样式和颜色\n * border-top:1px solid #3e3e3e;\n */\n#nice hr {\n height:1px;\n padding:0;\n border:none;\n border-top:medium solidid #333;\n text-align:center;\n background-image:linear-gradient(to right,rgba(248,57,41,0),rgba(248,57,41,0.75),rgba(248,57,41,0));\n}\n\n/* 图片\n * 宽度 width:80%;\n * 居中 margin:0 auto;\n * 居左 margin:0 0;\n */\n#nice img {\n border-radius:0px 0px 5px 5px;\n display:block;\n margin:20px auto;\n width:85%;\n height:100%;\n object-fit:contain;\n box-shadow:#84A1A8 0px 10px 15px;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n display:block;\n font-size:12px;\n font-family:PingFangSC-Light;\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color:rgb(271,93,108);\n}\n\n/* 非微信代码块\n * 代码块不换行 display:-webkit-box !important;\n * 代码块换行 display:block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n font-size: 14px;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color:rgb(248,57,41);\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color:rgb(248,57,41);\n}\n\n/*脚注链接样式*/\n#nice .footnote-item em {\n color:#6E1E51;\n font-size:12px;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/*自定义样式,实时生效*/\n\n/* 全局属性\n * 页边距 padding:30px;\n * 全文字体 font-family:ptima-Regular;\n * 英文换行 word-break:break-all;\n */\n#nice {\n font-family:PingFangSC-Light;\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top:5px;\n * 下边距 margin-bottom:5px;\n * 行高 line-height:26px;\n * 词间距 word-spacing:3px;\n * 字间距 letter-spacing:3px;\n * 对齐 text-align:left;\n * 颜色 color:#3e3e3e;\n * 字体大小 font-size:16px;\n * 首行缩进 text-indent:2em;\n */\n#nice p {\n margin:10px 10px;\n line-height:1.75;\n letter-spacing:0.2em;\n font-size: 15px;\n word-spacing:0.1em;\n}\n\n/* 一级标题 */\n#nice h1 {\n border-bottom: 2px solid #0e88eb;\n font-size: 1.4em;\n text-align: center;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n font-size: 1.4em;\n display:inline-block;\n font-weight: bold;\n //background: #0e88eb;\n color:#ffffff;\n color: #0e88eb;\n padding:3px 10px 1px;\n border-top-right-radius:3px;\n border-top-left-radius:3px;\n margin-right:3px;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n \n/* 二级标题 */\n#nice h2 {\n text-align:left;\n margin:20px 10px 0px 0px;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n font-family:STHeitiSC-Light;\n font-size: 22px;\n color:#0e88eb;\n font-weight:bolder;\n display:inline-block;\n padding-left:10px;\n border-left:5px solid #0e88eb;\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n\tfont-size: 18px;\n \tcolor: #0e88eb;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n font-size: 18px;\n color: #0e88eb;\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n font-size: 15px;\n}\n\n/* 引用\n * 左边缘颜色 border-left-color:black;\n * 背景色 background:gray;\n */\n#nice blockquote {\n font-style:normal;\n border-left:none;\n padding:10px;\n position:relative;\n line-height:1.8;\n border-radius:0px 0px 10px 10px;\n color: #0e88eb;\n background:#fff;\n box-shadow:#84A1A8 0px 10px 15px;\n}\n#nice blockquote:before {\n content:\"★ \";\n display:inline;\n color: #0e88eb;\n font-size:4em;\n font-family:Arial,serif;\n line-height:1em;\n font-weight:700;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n color: #0e88eb;\n font-size:15px;\n display:inline;\n}\n#nice blockquote:after {\n content:\"”\";\n float:right;\n display:inline;\n color:#0e88eb;\n font-size:3em;\n line-height:1em;\n font-weight:500;\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: #0e88eb;\n border-bottom: 0px solid #ff3502;\n font-family:STHeitiSC-Light;\n}\n\n/* 加粗 */\n#nice strong {\n font-weight: border;\n color: #0e88eb;\n}\n\n/* 斜体 */\n#nice em {\n color: #0e88eb;\n letter-spacing:0.3em;\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color: #0e88eb;\n letter-spacing:0.3em;\n}\n\n/* 删除线 */\n#nice del {\n}\n \n/* 分隔线\n * 粗细、样式和颜色\n * border-top:1px solid #3e3e3e;\n */\n#nice hr {\n height:1px;\n padding:0;\n border:none;\n border-top:medium solidid #333;\n text-align:center;\n background-image:linear-gradient(to right,rgba(248,57,41,0),#0e88eb,rgba(248,57,41,0));\n}\n\n/* 图片\n * 宽度 width:80%;\n * 居中 margin:0 auto;\n * 居左 margin:0 0;\n */\n#nice img {\n border-radius:0px 0px 5px 5px;\n display:block;\n margin:20px auto;\n width:85%;\n height:100%;\n object-fit:contain;\n box-shadow:#84A1A8 0px 10px 15px;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n display:block;\n font-size:12px;\n font-family:PingFangSC-Light;\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color:/*自定义样式,实时生效*/\n}\n\n/* 非微信代码块\n * 代码块不换行 display:-webkit-box !important;\n * 代码块换行 display:block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n font-size: 15px;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #2d59b3;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #6a88c5;\n}\n\n/* 非微信代码块\n * 代码块不换行 display:-webkit-box !important;\n * 代码块换行 display:block;\n */\n#nice pre code {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #0e88eb;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #0e88eb;\n}\n\n/*脚注链接样式*/\n#nice .footnote-item em {\n color: #082a71;\n font-size:12px;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/*自定义样式,实时生效*/\n#nice {\n}\n\n#nice p {\n\tmargin: 0 0 20px;\n\tpadding: 0;\n\tline-height: 1.8em;\n\tcolor: #3a3a3a;\n}\n\n/* 一级标题 */\n#nice h1 {\n font-size: 2.1em;\n\tline-height: 1.1em;\n\tpadding-top: 16px;\n padding-bottom: 10px;\n margin-bottom: 4px;\n border-bottom: 1px solid #c99833;\n}\n/* 一级标题内容 */\n#nice h1 .content {\n color: #515151;\n font-weight: 700;\n}\n\n#nice h2, h3, h4, h5, h6 {\n line-height: 1.5em;\n margin-top: 2.2em;\n margin-bottom: 4px;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {}\n\n/* 二级标题 */\n#nice h2 {\n margin-bottom: 35px;\n}\n\n/* 二级标题内容 */\n\n#nice h2 .content {\n display: inline-block;\n font-weight: bold;\n background: linear-gradient(#fff 60%, #ffb11b 40%);\n color: #515151;\n padding: 2px 13px 2px;\n margin-right: 3px;\n height: 50%;\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {}\n\n/* 三级标题 */\n#nice h3 {\n line-height: 1.4;\n padding-top: 10px;\n margin: 10px 0 5px;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n color: #515151;\n font-weight: 700;\n font-size: 1.0em;\n padding-left: 20px;\n border-left: 3px solid #f9bf45;\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {}\n\n/* 引用\n* 左边缘颜色 border-left-color: black;\n* 背景色 background: gray;\n*/\n#nice blockquote {\n border-left-color: #ffb11b;\n background: #fff5e3;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n color: #595959;\n}\n\n/* 链接 */\n#nice a {\n border: none;\n text-decoration: none;\n color: #dda52d;\n}\n\n#nice a:hover {\n color: #f9bf45;\n text-decoration: underline;\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 加粗 */\n#nice strong {}\n\n/* 斜体 */\n#nice em {}\n\n/* 加粗斜体 */\n#nice em strong {}\n\n/* 删除线 */\n#nice del {\n color: #d19826;\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top: 1px solid #3e3e3e;\n*/\n#nice hr {\n border-top: 1px solid #f9bf45;\n margin: 20px 0px;\n}\n\n/* 图片\n* 宽度 width: 80%;\n* 居中 margin: 0 auto;\n* 居左 margin: 0 0;\n*/\n#nice img {\n width: 100%;\n border-radius: 5px;\n display: block;\n margin-bottom: 15px;\n height: auto;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n color: #dda52d;\n font-size: 14px;\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n color: #9b6e23;\n background-color: #fff5e3;\n padding: 3px;\n margin: 3px;\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n text-align: center;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #ffb11b;\n padding: 3px;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #dda52d;\n margin: 2px;\n padding: 3px;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n margin: 30px 0px 15px 0px;\n font-weight: 800;\n}\n\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 根据该字体大小,统一调整文章整体大小 */\n/* 间距,其他字体,代码块以及注脚 */\n/* 不会控制微信代码块 */\n#nice {\n font-size: 16px;\n}\n\n/* 颜色管理 */\n#nice a {\n color: #3e64ff;\n}\n#nice p code {\n color: #e46918;\n background-color: #efefef;\n}\n#nice .footnote-word,\n#nice .footnote-ref {\n color: #004a7c;\n}\n#nice .footnote-item em {\n color: #004a7c;\n}\n\n/* 统一间距 */\n#nice p,\n#nice section,\n#nice h1,\n#nice h2,\n#nice h3,\n#nice h4,\n#nice h5,\n#nice h6,\n#nice pre,\n#nice figure,\n#nice ul,\n#nice hr {\n margin: 1em 0;\n color: #333;\n}\n\n#nice {\n margin-top: -1em;\n color: #333;\n padding-top: 0;\n padding-bottom: 0;\n font-family: -apple-system,system-ui,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;\n}\n#nice * {\n line-height: 1.6 !important;\n}\n\n#nice hr {\n border-top: 1px solid #dfe2e5\n}\n\n/* 标题调整 */\n#nice h1 {\n font-size: 1.4em;\n}\n#nice h2 {\n font-size: 1.3em;\n}\n#nice h1,\n#nice h2 {\n padding-bottom: .3em;\n border-bottom: 1px solid #dfe2e5;\n}\n#nice h3 {\n font-size: 1.2em;\n}\n#nice h4 {\n font-size: 1.1em;\n}\n#nice h5 {\n font-size: 1em;\n}\n#nice h6 {\n font-size: 1em;\n}\n\n/* 段落调整 */\n#nice p {\n padding: 0;\n font-size: inherit;\n color: #333;\n}\n#nice blockquote {\n background: none;\n border-left: 4px solid #ddd;\n padding: 0 1em;\n}\n#nice blockquote p {\n margin: 0;\n color: #666;\n}\n#nice strong {\n color: #333;\n}\n\n#nice a {\n font-weight: normal;\n border-color: inherit;\n}\n\n/* 列表调整 */\n#nice li section {\n margin-top: .3em;\n margin-bottom: .3em;\n font-weight: normal;\n}\n#nice li ul {\n margin: 0;\n}\n\n/* 代码块调整 */\n#nice pre {\n border-radius: 4px;\n}\n#nice section pre {\n margin: 0;\n padding-top: 0;\n padding-bottom: 0;\n}\n#nice p code {\n font-size: .875em;\n}\n#nice pre code {\n font-size: .875em;\n}\n\n#nice figure img {\n max-width: 100%;\n width: auto;\n margin: 0 auto;\n}\n\n/* table 调整 */\n#nice table tr th,\n#nice table tr td {\n font-size: 1em;\n}\n\n/* 注脚调整 */\n#nice .footnotes-sep {\n font-size: 1.3em;\n}\n#nice .footnote-item {\n margin: .4em 0;\n}\n#nice .footnote-item * {\n line-height: 1.4 !important;\n}\n#nice .footnote-item p {\n margin: 0;\n font-size: .9em;\n}\n#nice .footnote-item em {\n font-style: normal;\n padding-left: .5em;\n}\n#nice .footnote-item span {\n flex: 0 0 1.5em;\n margin-right: 10px;\n font-size: .9em;\n}\n\n/* 微信默认样式修复 */\n/* 微信代码块固定为 14px */\n#nice pre.code-snippet__js {\n padding: 16px 0;\n}\n\n#nice pre.code-snippet__js code {\n font-size: 14px;\n}`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n#nice {\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n line-height: 1.6;\n color: #3f3f3f;\n font-size: 16px;\n margin: 10px 0px;\n}\n\n/* 一级标题 */\n#nice h1 {\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n\n/* 二级标题 */\n#nice h2 {\n margin: 80px 10px 40px 10px;\n text-align: center;\n font-weight: normal;\n color: #3f3f3f;\n font-size: 140%;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {\n}\n\n/* 三级标题 */\n#nice h3 {\n margin: 40px 0px 20px 0px;\n font-weight: bold;\n line-height: 1.5;\n color: #3f3f3f;\n font-size: 120%;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 引用\n* 左边缘颜色 border-left-color: black;\n* 背景色 background: gray;\n*/\n#nice blockquote {\n color: rgb(91,91,91);\n border-left: 3px solid rgb(158,158,158);\n background: rgba(158, 158, 158, 0.1);\n padding: 1px 0 1px 10px;\n margin: 20px 0px;\n}\n\n/* 引用文字 */\n#nice blockquote p {\n color: #3f3f3f;\n line-height: 1.5;\n font-size: 16px;\n margin: 10px;\n padding: 0px;\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: #ff3502;\n border-bottom: 1px solid #ff3502;\n}\n\n/* 加粗 */\n#nice strong {\n color: #ff3502;\n line-height: 1.5;\n font-size: 16px;\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top: 1px solid #3e3e3e;\n*/\n#nice hr {\n}\n\n/* 图片\n* 宽度 width: 80%;\n* 居中 margin: 0 auto;\n* 居左 margin: 0 0;\n*/\n#nice img {\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n}\n\n/* 行内代码 */\n#nice p code, #nice li code {\n background: #f8f5ec;\n color: #ff3502;\n line-height: 1.5;\n font-size: 90%;\n padding: 3px 5px;\n border-radius: 2px;\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n color: #ff3502;\n font-size: 16px;\n line-height: 1.5;\n font-weight: normal;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n color: #ff3502;\n font-weight: normal;\n}\n\n/* \"参考资料\"四个字 */\n#nice .footnotes-sep {\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}`;\n","export default `/* 全局属性\n* 页边距 padding:30px;\n* 全文字体 font-family:optima-Regular;\n* 英文换行 word-break:break-all;\ncolor:#595959;\n*/\n#nice {\n line-height: 1.75;\n color: #595959;\n font-family: Optima-Regular, Optima, PingFangTC-Light, PingFangSC-light, PingFangTC-light;\n letter-spacing: 2px;\n background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%);\n background-size: 20px 20px;\n background-position: center center;\n}\n\n/* 段落,下方未标注标签参数均同此处\n* 上边距 margin-top:5px;\n* 下边距 margin-bottom:5px;\n* 行高 line-height:26px;\n* 词间距 word-spacing:3px;\n* 字间距 letter-spacing:3px;\n* 对齐 text-align:left;\n* 颜色 color:#3e3e3e;\n* 字体大小 font-size:16px;\n* 首行缩进 text-indent:2em;\n*/\n#nice p {\n color: #595959;\n margin: 10px 0px;\n letter-spacing: 2px;\n font-size: 14px;\n word-spacing: 2px;\n}\n\n/* 一级标题 */\n#nice h1 {\n font-size: 25px;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n display: inline-block;\n font-weight: bold;\n color: #595959;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {}\n\n/* 二级标题 */\n#nice h2 {\n text-align: left;\n margin: 20px 10px 0px 0px;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n font-size: 18px;\n font-weight: bold;\n display: inline-block;\n padding-left: 10px;\n border-left: 5px solid #DEC6FB;\n color: #595959;\n\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {}\n\n/* 三级标题 */\n#nice h3 {\n font-size: 16px;\n font-weight: bold;\n text-align: center;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n border-bottom: 2px solid #DEC6FB;\n color: #595959;\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {}\n\n/* 无序列表整体样式\n* list-style-type: square|circle|disc;\n*/\n#nice ul {\n font-size: 15px; /*神奇逻辑,必须比li section的字体大才会在二级中生效*/\n color: #595959;\n list-style-type: circle;\n}\n\n\n/* 有序列表整体样式\n* list-style-type: upper-roman|lower-greek|lower-alpha;\n*/\n#nice ol {\n font-size: 15px;\n color: #595959;\n}\n\n/* 列表内容,不要设置li\n*/\n#nice li section {\n font-size: 14px;\n font-weight: normal;\n color: #595959;\n}\n\n/* 引用\n* 左边缘颜色 border-left-color:black;\n* 背景色 background:gray;\n*/\n#nice blockquote::before {\n content: \"❝\";\n /* color: #d9b8fa;*/\n color: #DEC6FB;\n font-size: 34px;\n line-height: 1;\n font-weight: 700;\n}\n\n#nice blockquote {\n text-size-adjust: 100%;\n line-height: 1.55em;\n font-weight: 400;\n border-radius: 6px;\n color: #595959;\n font-style: normal;\n text-align: left;\n box-sizing: inherit;\n border-left: none;\n border: 1px solid #DEC6FB;\n background: #F6EEFF;\n\n}\n\n#nice blockquote p {\n color: #595959;\n}\n\n#nice blockquote::after {\n content: \"❞\";\n float: right;\n /* color: #d9b8fa; */\n color: #DEC6FB;\n}\n\n/* 链接 \n* border-bottom: 1px solid #009688;\n*/\n#nice a {\n color: #664D9D;\n font-weight: normal;\n border-bottom: 1px solid #664D9D;\n}\n\n#nice strong::before {\n content: '「';\n}\n\n/* 加粗 */\n#nice strong {\n color: #595959;\n font-weight: bold;\n}\n\n#nice strong::after {\n content: '」';\n}\n\n/* 斜体 */\n#nice em {\n font-style: normal;\n color: #595959;\n background: #F6EEFF;\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color: #595959;\n}\n\n/* 删除线 */\n#nice del {\n color: #595959;\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top:1px solid #3e3e3e;\n*/\n#nice hr {\n height: 1px;\n padding: 0;\n border: none;\n border-top: 2px solid #d9b8fa;\n}\n\n/* 图片\n* 宽度 width:80%;\n* 居中 margin:0 auto;\n* 居左 margin:0 0;\n*/\n#nice img {\n border-radius: 6px;\n display: block;\n margin: 20px auto;\n object-fit: contain;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n display: block;\n font-size: 13px;\n color: #595959;\n}\n\n/* 行内代码 */\n#nice p code,\n#nice li code {\n color: #595959;\n}\n\n/* 非微信代码块\n* 代码块不换行 display:-webkit-box !important;\n* 代码块换行 display:block;\n*/\n#nice .code-snippet__fix {\n background: #f7f7f7;\n border-radius: 2px;\n}\n\n#nice pre code {\n /* background: #f7f7f7; */\n}\n\n/*\n* 表格内的单元格\n* 字体大小 font-size: 16px;\n* 边框 border: 1px solid #ccc;\n* 内边距 padding: 5px 10px;\n*/\n#nice table tr th,\n#nice table tr td {\n font-size: 14px;\n color: #595959;\n}\n\n#nice .footnotes {\n background: #F6EEFF;\n padding: 20px 20px 20px 20px;\n font-size: 14px;\n border: 0.8px solid #DEC6FB;\n border-radius: 6px;\n border: 1px solid #DEC6FB;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n font-weight: normal;\n color: #595959;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n font-weight: normal;\n color: #595959;\n}\n\n/*脚注链接样式*/\n#nice .footnote-item em {\n background: #F6EEFF;\n font-size: 14px;\n color: #595959;\n display: block;\n}\n\n/* \"参考资料\"四个字 \n* 内容 content: \"参考资料\";\n*/\n#nice .footnotes-sep:before {\n content: 'Reference';\n color: #595959;\n letter-spacing: 1px;\n border-bottom: 2px solid #DEC6FB;\n display: inline;\n background: linear-gradient(white 60%, #F6EEFF 40%);\n font-size: 20px;\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {}\n\n/* 参考资料文字 */\n#nice .footnote-item p {\n color: #595959;\n font-weight: bold;\n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n font-weight: normal;\n}\n\n/* 行间公式\n* 最大宽度 max-width: 300% !important;\n*/\n#nice .block-equation svg {}\n\n/* 行内公式\n*/\n#nice .inline-equation svg {}`;\n","export default `#nice {\n line-height: 1.6;\n letter-spacing: .034em;\n color: rgb(63, 63, 63);\n font-size: 16px;\n word-break:all;\n}\n#nice p {\n padding-top: 1em;\n color: rgb(74,74,74);\n line-height: 1.75em;\n}\n/* 一级标题 */\n#nice h1 {\n text-align:center;\n background-image: \turl(http://img.xiaogangzai.cn/title_h1.png); \n background-position: center top;\n background-repeat: no-repeat;\n background-size: 75px;\n line-height:95px;\n margin-top: 38px;\n margin-bottom: 10px;\n}\n/* 一级标题内容 */\n#nice h1 .content {\n font-size: 20px;\n color: #48b378;;\n border-bottom:2px solid #2e7950;\n}\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {\n}\n \n/* 二级标题 */\n#nice h2 {\n display:block;\n text-align:center;\n background-image: \turl(http://img.xiaogangzai.cn/title.png); \n background-position: center center;\n background-repeat: no-repeat;\n background-attachment: initial;\n background-origin: initial;\n background-clip: initial;\n background-size: 50px;\n margin-top: 1em;\n margin-bottom: 10px;\n}\n/*二级标题伪元素*/\n#nice h2:before {\n}\n/* 二级标题内容 */\n#nice h2 .content {\n text-align:center;\n display: inline-block;\n height: 38px;\n line-height: 42px;\n color: #48b378;\n background-position: left center;\n background-repeat: no-repeat;\n background-attachment: initial;\n background-origin: initial;\n background-clip: initial;\n background-size: 63px;\n margin-top: 38px;\n font-size:18px;\n margin-bottom: 10px;\n}\n/* 三级标题 */\n#nice h3:before {\n content: \"\";\n background-image:url(http://img.xiaogangzai.cn/title_h2.png);\n background-size:100% 100%;\n background-repeat:no-repeat;\n display: inline-block;\n width: 16px;\n height: 15px;\n line-height:15px;\n margin-bottom:-1px;\n}\n#nice h3 {\n margin-top:1.2em;\n}\n#nice h4 {\n margin-top: 30px;\n}\n/* 三级标题内容 */\n#nice h3 .content {\n font-size:17px;\n font-weight:bold;\n display:inline-block;\n margin-left:8px;\n color:#48b378;\n}\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {\n}\n/* 列表内容 */\n#nice li {\n}\n/* 引用\n * 左边缘颜色 border-left-color:black;\n * 背景色 background:gray;\n */\n#nice blockquote {\n padding: 15px 20px;\n line-height: 27px;\n background-color:#FBF9FD;\n border-left:3px solid #35b378;\n display:block;\n}\n/* 引用文字 */\n#nice blockquote p {\n padding: 0px;\n font-size:15px;\n color:rgb(89,89,89);\n}\n/* 链接 */\n#nice a {\n color: #48b378;\n text-decoration:none;\n border-bottom: 1px solid #48b378;\n}\n/* 加粗 */\n#nice strong {\n line-height: 1.75em;\n color: rgb(74,74,74);\n}\n/* 斜体 */\n#nice em {\n}\n/* 加粗斜体 */\n#nice em strong {\n color:rgb(248,57,41);\n letter-spacing:0.3em;\n}\n/* 删除线 */\n#nice del {\n}\n \n/* 分割线 */\n#nice hr {\n height:1px;\n padding:0;\n border:none;\n text-align:center;\n background-image:linear-gradient(to right,rgba(93, 186, 133,0),rgba(93, 186, 133,0.75),rgba(93, 186, 133,0));\n}\n/* 图片 */\n#nice img {\n border-radius:4px;\n margin-bottom:25px;\n}\n/* 图片描述文字 */\n#nice figcaption {\n display:block;\n font-size:12px;\n font-family:PingFangSC-Light;\n}\n/* 行内代码 */\n#nice p code, #nice li code {\n\tcolor: #28ca71;\n}\n/* 非微信代码块\n * 代码块不换行 display:-webkit-box !important;\n * 代码块换行 display:block;\n */\n#nice pre code {\n}\n/* 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n font-size: 14px;\n}\n#nice .footnotes{\n padding-top: 8px;\n}\n/* 脚注文字 */\n#nice .footnote-word {\n color: rgb(90, 185, 131);\n}\n/* 脚注上标 */\n#nice .footnote-ref {\n color: rgb(90, 185, 131);\n}\n/* 脚注超链接样式 */\n#nice .footnote-item em {\n color: rgb(90, 185, 131);\n font-size:13px;\n font-style:normal;\n border-bottom-color:1px dashed rgb(90, 185, 131); \n}\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n background-image: none;\n background-size: none;\n display: block;\n width: auto;\n height: auto;\n}\n/* 参考资料编号 */\n#nice .footnote-num {\n color: rgb(90, 185, 131);\n}\n/* 参考资料文字 */\n#nice .footnote-item p {\n color: rgb(90, 185, 131);\n font-weight:bold;\n}\n/* 参考资料超链接 */\n#nice .footnote-item a {\n color:rgb(93, 186, 133);\n}\n/* 参考资料解释 */\n#nice .footnote-item p em {\n font-size:14px;\n font-weight:normal;\n border-bottom:1px dashed rgb(93, 186, 133);\n}\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n/* 行内公式*/\n#nice .inline-equation svg { \n}`;\n","export default `/*自定义样式,实时生效*/\n\n/* 全局属性\n* 页边距 padding:30px;\n* 全文字体 font-family:optima-Regular;\n* 英文换行 word-break:break-all;\ncolor:#595959;\n*/\n#nice {\n line-height: 1.25;\n color: #595959;\n font-family: Optima-Regular, Optima, PingFangTC-Light, PingFangSC-light, PingFangTC-light;\n letter-spacing: 2px;\n background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%);\n background-size: 20px 20px;\n background-position: center center;\n}\n\n/* 段落,下方未标注标签参数均同此处\n* 上边距 margin-top:5px;\n* 下边距 margin-bottom:5px;\n* 行高 line-height:26px;\n* 词间距 word-spacing:3px;\n* 字间距 letter-spacing:3px;\n* 对齐 text-align:left;\n* 颜色 color:#3e3e3e;\n* 字体大小 font-size:16px;\n* 首行缩进 text-indent:2em;\n*/\n#nice p {\n color: #595959;\n margin: 10px 0px;\n letter-spacing: 2px;\n font-size: 14px;\n word-spacing: 2px;\n}\n\n/* 一级标题 */\n#nice h1 {\n font-size: 25px;\n}\n\n/* 一级标题内容 */\n#nice h1 span {\n display: inline-block;\n font-weight: bold;\n color: #40B8FA;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {}\n\n/* 二级标题 */\n#nice h2 {\n display:block;\n border-bottom: 4px solid #40B8FA;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n display: flex;\n color: #40B8FA;\n font-size: 20px;\n margin-left: 25px;\n}\n\n/* 二级标题前缀 */\n#nice h2 .prefix {\n display: flex;\n width: 20px;\n height: 20px;\n background-size: 20px 20px;\n background-image:url(https://img.alicdn.com/tfs/TB1iq.pypY7gK0jSZKzXXaikpXa-32-32.png);\n margin-bottom: -22px;\n}\n\n/* 二级标题后缀 */\n#nice h2 .suffix {\n display: flex;\n box-sizing: border-box;\n width: 200px;\n height: 10px;\n border-top-left-radius: 20px;\n background: RGBA(64, 184, 250, .5);\n color: rgb(255, 255, 255);\n font-size: 16px;\n letter-spacing: 0.544px;\n justify-content: flex-end;\n box-sizing: border-box !important;\n overflow-wrap: break-word !important;\n float: right;\n margin-top: -10px;\n}\n\n/* 三级标题 */\n#nice h3 {\n font-size: 16px;\n font-weight: bold;\n text-align: center;\n position:relative;\n margin-top: 50px;\n margin-bottom: 20px;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n border-bottom: 2px solid RGBA(79, 177, 249, .65);\n color: #595959;\n padding-bottom:2px\n}\n\n#nice h3 .content:before{\n content:'';\n width:30px;\n height:30px;\n display:block;\n background-image:url(https://img.alicdn.com/tfs/TB1Hm.xyEz1gK0jSZLeXXb9kVXa-153-153.png);\n position:absolute;\n background-position:center;\n background-size:30px;\n\tleft:0;\n right:0;\n margin:auto;\n opacity:1;\n background-repeat:no-repeat;\n bottom:17px;\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {}\n\n#nice h4 .content {\n font-size: 14px;\n}\n\n#nice h4 .content:before{\n content:'';\n background-image:url(https://img.alicdn.com/tfs/TB1Lc.uyuL2gK0jSZFmXXc7iXXa-32-32.png);\n display:inline-block;\n width:16px;\n height:16px;\n background-size:16px;\n background-position:center;\n background-repeat:no-repeat;\n margin-right:6px;\n margin-bottom: -4px;\n}\n\n/* 无序列表整体样式\n* list-style-type: square|circle|disc;\n*/\n#nice ul {\n font-size: 15px; /*神奇逻辑,必须比li section的字体大才会在二级中生效*/\n color: #595959;\n list-style-type: circle;\n}\n\n\n/* 有序列表整体样式\n* list-style-type: upper-roman|lower-greek|lower-alpha;\n*/\n#nice ol {\n font-size: 15px;\n color: #595959;\n}\n\n/* 列表内容,不要设置li\n*/\n#nice li section {\n font-size: 14px;\n font-weight: normal;\n color: #595959;\n}\n\n/* 引用\n* 左边缘颜色 border-left-color:black;\n* 背景色 background:gray;\n*/\n#nice blockquote::before {\n content: \"❝\";\n color: RGBA(64, 184, 250, .5);\n font-size: 34px;\n line-height: 1;\n font-weight: 700;\n}\n\n#nice blockquote {\n text-size-adjust: 100%;\n line-height: 1.55em;\n font-weight: 400;\n border-radius: 6px;\n color: #595959;\n font-style: normal;\n text-align: left;\n box-sizing: inherit;\n border-left: none;\n border: 1px solid RGBA(64, 184, 250, .4);\n background: RGBA(64, 184, 250, .1);\n\n}\n\n#nice blockquote p {\n color: #595959;\n}\n\n#nice blockquote::after {\n content: \"❞\";\n float: right;\n color: RGBA(64, 184, 250, .5);\n}\n\n/* 链接\n* border-bottom: 1px solid #009688;\n*/\n#nice a {\n color: #40B8FA;\n font-weight: normal;\n border-bottom: 1px solid #3BAAFA;\n}\n\n#nice strong::before {\n content: '「';\n}\n\n/* 加粗 */\n#nice strong {\n color: #3594F7;\n font-weight: bold;\n}\n\n#nice strong::after {\n content: '」';\n}\n\n/* 斜体 */\n#nice em {\n font-style: normal;\n color: #3594F7;\n font-weight:bold;\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color: #3594F7;\n}\n\n/* 删除线 */\n#nice del {\n color: #3594F7;\n}\n\n/* 分隔线\n* 粗细、样式和颜色\n* border-top:1px solid #3e3e3e;\n*/\n#nice hr {\n height: 1px;\n padding: 0;\n border: none;\n border-top: 2px solid #3BAAFA;\n}\n\n/* 图片\n* 宽度 width:80%;\n* 居中 margin:0 auto;\n* 居左 margin:0 0;\n*/\n#nice img {\n border-radius: 6px;\n display: block;\n margin: 20px auto;\n object-fit: contain;\n box-shadow:2px 4px 7px #999;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n display: block;\n font-size: 13px;\n color: #595959;\n}\n\n#nice figcaption:before{\n content:'';\n\tbackground-image:url(https://img.alicdn.com/tfs/TB1Yycwyrj1gK0jSZFuXXcrHpXa-32-32.png);\n display:inline-block;\n width:18px;\n height:18px;\n background-size:18px;\n\tbackground-repeat:no-repeat;\n background-position:center;\n margin-right:5px;\n margin-bottom:-5px;\n}\n\n/* 行内代码 */\n#nice p code,\n#nice li code {\n color: #3594F7;\n background: RGBA(59, 170, 250, .1);\n display:inline-block;\n padding:0 2px;\n border-radius:2px\n}\n\n/* 非微信代码块\n* 代码块不换行 display:-webkit-box !important;\n* 代码块换行 display:block;\n*/\n#nice .code-snippet__fix {\n background: #f7f7f7;\n border-radius: 2px;\n}\n\n#nice pre code {\n letter-spacing: 0px;\n}\n\n/*\n* 表格内的单元格\n* 字体大小 font-size: 16px;\n* 边框 border: 1px solid #ccc;\n* 内边距 padding: 5px 10px;\n*/\n#nice table tr th,\n#nice table tr td {\n font-size: 14px;\n color: #595959;\n}\n\n#nice .footnotes {\n background: #F6EEFF;\n padding: 20px 20px 20px 20px;\n font-size: 14px;\n border: 0.8px solid #DEC6FB;\n border-radius: 6px;\n border: 1px solid #DEC6FB;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n font-weight: normal;\n color: #595959;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n font-weight: normal;\n color: #595959;\n}\n\n/*脚注链接样式*/\n#nice .footnote-item em {\n font-size: 14px;\n color: #595959;\n display: block;\n}\n\n#nice .footnotes{\n background: RGBA(53, 148, 247, .4);\n padding: 20px 20px 20px 20px;\n font-size: 14px;\n border-radius: 6px;\n border: 1px solid RGBA(53, 148, 247, 1);\n}\n\n/* \"参考资料\"四个字\n* 内容 content: \"参考资料\";\n*/\n#nice .footnotes-sep:before {\n content: 'Reference';\n color: #595959;\n letter-spacing: 1px;\n border-bottom: 2px solid RGBA(64, 184, 250, 1);\n display: inline;\n background: linear-gradient(white 60%, RGBA(64, 184, 250, .4) 40%);\n font-size: 20px;\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {}\n\n/* 参考资料文字 */\n#nice .footnote-item p {\n color: #595959;\n font-weight: bold;\n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n font-weight: normal;\n}\n\n/* 行间公式\n* 最大宽度 max-width: 300% !important;\n*/\n#nice .block-equation svg {}\n\n/* 行内公式\n*/\n#nice .inline-equation svg {}`;\n","export default `/* 全局属性\n* 页边距 padding:30px;\n* 全文字体 font-family:optima-Regular;\n* 英文换行 word-break:break-all;\n*/\n#nice {\n line-height: 1.25;\n font-family: Optima-Regular, Optima, PingFangTC-Light, PingFangSC-light, PingFangTC-light;\n letter-spacing: 2px;\n background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%);\n background-size: 20px 20px;\n background-position: center center;\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top:5px;\n * 下边距 margin-bottom:5px;\n * 行高 line-height:26px;\n * 词间距 word-spacing:3px;\n * 字间距 letter-spacing:3px;\n * 对齐 text-align:left;\n * 颜色 color:#3e3e3e;\n * 字体大小 font-size:16px;\n * 首行缩进 text-indent:2em;\n */\n#nice p {\n margin: 10px 0px;\n letter-spacing: 2px;\n font-size: 14px;\n word-spacing: 2px;\n}\n\n/* 一级标题 */\n#nice h1 {\n font-size: 25px;\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n display: inline-block;\n font-weight: bold;\n color: #773098;\n}\n\n/* 一级标题修饰 请参考有实例的主题 */\n#nice h1:after {}\n\n/* 二级标题 */\n#nice h2 {\n text-align: left;\n margin: 20px 10px 0px 0px;\n}\n\n/* 二级标题内容 */\n#nice h2 .content {\n font-size: 18px;\n font-weight: bold;\n display: inline-block;\n padding-left: 10px;\n border-left: 5px solid #916dd5;\n}\n\n/* 二级标题修饰 请参考有实例的主题 */\n#nice h2:after {}\n\n/* 三级标题 */\n#nice h3 {\n font-size: 16px;\n font-weight: bold;\n text-align: center;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n border-bottom: 2px solid #d89cf6;\n}\n\n/* 三级标题修饰 请参考有实例的主题 */\n#nice h3:after {}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n font-size: 15px;\n /*神奇逻辑,必须比li section的字体大才会在二级中生效*/\n list-style-type: circle;\n}\n\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n font-size: 15px;\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n font-size: 14px;\n font-weight: normal;\n}\n\n/* 引用\n * 左边缘颜色 border-left-color:black;\n * 背景色 background:gray;\n */\n#nice .multiquote-1 {\n border-left-color: #d89cf6;\n background: #f4eeff;\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n color: #916dd5;\n font-weight: bolder;\n border-bottom: 1px solid #916dd5;\n}\n\n#nice strong::before {\n content: '「';\n}\n\n/* 加粗 */\n#nice strong {\n color: #916dd5;\n font-weight: bold;\n}\n\n#nice strong::after {\n content: '」';\n}\n\n/* 斜体 */\n#nice em {\n font-style: normal;\n color: #916dd5;\n}\n\n/* 加粗斜体 */\n#nice em strong {\n color: #916dd5;\n}\n\n/* 删除线 */\n#nice del {\n color: #916dd5;\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n */\n#nice hr {\n height: 1px;\n padding: 0;\n border: none;\n border-top: 2px solid #d9b8fa;\n}\n\n/* 图片\n * 宽度 width:80%;\n * 居中 margin:0 auto;\n * 居左 margin:0 0;\n */\n#nice img {\n border-radius: 6px;\n display: block;\n margin: 20px auto;\n object-fit: contain;\n box-shadow: 2px 4px 7px #999;\n}\n\n/* 图片描述文字 */\n#nice figcaption {\n display: block;\n font-size: 13px;\n}\n\n/* 行内代码 */\n#nice p code,\n#nice li code {\n color: #916dd5;\n font-weight: bolder;\n background: none;\n}\n\n/* 非微信代码块\n * 代码块不换行 display:-webkit-box !important;\n * 代码块换行 display:block;\n */\n#nice .code-snippet__fix {\n background: #f7f7f7;\n border-radius: 2px;\n}\n\n#nice pre code {}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n font-size: 14px;\n}\n\n#nice .footnotes {\n font-size: 14px;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n font-weight: normal;\n color: #916dd5;\n font-weight: bold;\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n font-weight: normal;\n color: #916dd5;\n}\n\n/*脚注链接样式*/\n#nice .footnote-item em {\n font-size: 14px;\n color: #916dd5;\n display: block;\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep:before {\n font-size: 20px;\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n color: #916dd5;\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p {\n color: #916dd5;\n font-weight: bold;\n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n font-weight: normal;\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {}\n\n/* 行内公式\n */\n#nice .inline-equation svg {}\n`;\n","export default `/* 全局属性\n * 页边距 padding: 30px;\n * 全文字体 font-family: ptima-Regular;\n * 英文换行 word-break: break-all;\n */\n #nice {\n font-size:14px;\n padding:10px;\n}\n\n/*图片下提示*/\n#nice figcaption{\n font-size:12px;\n}\n#nice .imageflow-caption{\n font-size:12px;\n}\n\n/* 段落,下方未标注标签参数均同此处\n * 上边距 margin-top: 5px;\n * 下边距 margin-bottom: 5px;\n * 行高 line-height: 26px;\n * 词间距 word-spacing: 3px;\n * 字间距 letter-spacing: 3px;\n * 对齐 text-align: left;\n * 颜色 color: #3e3e3e;\n * 字体大小 font-size: 16px;\n * 首行缩进 text-indent: 2em;\n */\n#nice p {\n font-size:14px;\n}\n\n/* 一级标题 */\n#nice h1 {\n}\n\n/* 一级标题内容 */\n#nice h1 .content {\n}\n\n/* 一级标题前缀 */\n#nice h1 .prefix {\n}\n\n/* 一级标题后缀 */\n#nice h1 .suffix{\n}\n\n/* 二级标题 */\n#nice h2 {\n \ttext-align:center;\n \tposition:relative;\n font-weight: bold;\n color: black;\n line-height: 1.1em;\n padding-top: 12px;\n padding-bottom: 12px;\n margin:70px 30px 30px;\n border: 1px solid #000;\n}\n\n#nice h2:before{\n content: ' ';\n float: left;\n display: block;\n width: 90%;\n border-top: 1px solid #000;\n height: 1px;\n line-height: 1px;\n margin-left: -5px;\n margin-top: -17px;\n}\n#nice h2:after{\n content: ' ';\n float: right;\n display: block;\n width: 90%;\n border-bottom: 1px solid #000;\n height: 1px;\n line-height: 1px;\n margin-right: -5px;\n margin-top: 16px;\n}\n/* 二级标题内容 */\n#nice h2 .content {\n display: block;\n -webkit-box-reflect: below 0em -webkit-gradient(linear,left top,left bottom, from(rgba(0,0,0,0)),to(rgba(255,255,255,0.1)));\n}\n#nice h2 strong {\n}\n/* 二级标题前缀 */\n#nice h2 .prefix {\n display: block;\n width: 3px;\n margin: 0 0 0 5%;\n height: 3px;\n line-height: 3px;\n overflow: hidden;\n background-color: #000;\n box-shadow:3px 0 #000,\n 0 3px #000,\n -3px 0 #000,\n 0 -3px #000;\n}\n\n/* 二级标题后缀 */\n#nice h2 .suffix {\n display: block;\n width: 3px;\n margin: 0 0 0 95%;\n height: 3px;\n line-height: 3px;\n overflow: hidden;\n background-color: #000;\n box-shadow:3px 0 #000,\n 0 3px #000,\n -3px 0 #000,\n 0 -3px #000;\n}\n\n/* 三级标题 */\n#nice h3 {\n background-color:#000;\n color:#fff;\n padding:2px 10px;\n width:fit-content;\n font-size:17px;\n margin:60px auto 10px;\n}\n#nice h3 strong {\n color:#fff;\n}\n\n/* 三级标题内容 */\n#nice h3 .content {\n}\n\n/* 三级标题前缀 */\n#nice h3 .prefix {\n}\n\n/* 三级标题后缀 */\n#nice h3 .suffix {\n}\n\n/* 无序列表整体样式\n * list-style-type: square|circle|disc;\n */\n#nice ul {\n list-style-type: square;\n}\n/* 无序二级列表\n */\n#nice ul li ul li{\n list-style-type: circle;\n}\n\n/* 有序列表整体样式\n * list-style-type: upper-roman|lower-greek|lower-alpha;\n */\n#nice ol {\n}\n\n/* 列表内容,不要设置li\n */\n#nice li section {\n}\n\n/* 引用\n * 左边缘颜色 border-left-color: black;\n * 背景色 background: gray;\n */\n#nice .multiquote-1 {\n border-left: 3px solid rgba(0, 0, 0, 0.65);\n border-right: 1px solid rgba(0, 0, 0, 0.65);\n background: rgb(249, 249, 249);\n}\n\n/* 引用文字 */\n#nice .multiquote-1 p {\n}\n\n/* 链接 \n * border-bottom: 1px solid #009688;\n */\n#nice a {\n}\n\n/* 加粗 */\n#nice strong {\n}\n\n/* 斜体 */\n#nice em {\n}\n\n/* 加粗斜体 */\n#nice em strong {\n}\n\n/* 删除线 */\n#nice del {\n}\n\n/* 分隔线\n * 粗细、样式和颜色\n * border-top: 1px solid #3e3e3e;\n */\n#nice hr {\n}\n\n/* 图片\n * 宽度 width: 80%;\n * 居中 margin: 0 auto;\n * 居左 margin: 0 0;\n */\n#nice img {\n box-shadow: rgba(170, 170, 170, 0.48) 0px 0px 6px 0px;\n border-radius:4px;\n margin-top:10px;\n}\n/* 行内代码 */\n#nice p code, #nice li code {\n color:#ff6441;\n}\n\n/* 非微信代码块\n * 代码块不换行 display: -webkit-box !important;\n * 代码块换行 display: block;\n */\n#nice pre.custom {\n box-shadow: rgba(170, 170, 170, 0.48) 0px 0px 6px 0px;\n max-width: 100%;\n border-radius:4px;\n margin: 10px auto 0 auto;\n}\n#nice pre code {\n}\n\n/*\n * 表格内的单元格\n * 字体大小 font-size: 16px;\n * 边框 border: 1px solid #ccc;\n * 内边距 padding: 5px 10px;\n */\n#nice table tr th,\n#nice table tr td {\n font-size:14px;\n}\n\n/* 脚注文字 */\n#nice .footnote-word {\n}\n\n/* 脚注上标 */\n#nice .footnote-ref {\n}\n\n/* \"参考资料\"四个字 \n * 内容 content: \"参考资料\";\n */\n#nice .footnotes-sep {\n font-size: 14px;\n color: #888;\n border-top: 1px solid #eee;\n padding: 30px 0 10px 0px;\n background-color: transparent;\n margin: 0;\n width: 100%;\n}\n#nice .footnotes-sep:before {\n content:'参考资料';\n}\n#nice .footnotes{\n border-left:5px solid #eee;\n padding-left:10px;\n}\n\n/* 参考资料编号 */\n#nice .footnote-num {\n font-size:14px;\n color:#999;\n}\n\n/* 参考资料文字 */\n#nice .footnote-item p { \n font-size:14px;\n color:#999;\n}\n\n/* 参考资料解释 */\n#nice .footnote-item p em {\n font-size:14px;\n color:#999;\n}\n\n/* 行间公式\n * 最大宽度 max-width: 300% !important;\n */\n#nice .block-equation svg {\n}\n\n/* 行内公式\n */\n#nice .inline-equation svg { \n}\n/* 文章结尾 */\n#nice:after{\n content:'- END -';\n font-size:15px;\n display:block;\n text-align:center;\n margin-top:50px;\n color:#999;\n border-bottom:1px solid #eee;\n}\n\n/*滑动幻灯片*/\n#nice .imageflow-layer1 img{\n margin:0;\n box-shadow: none;\n border-radius: 0;\n}\n`;\n","export default `/*\n\nAtom One Dark by Daniel Gamage\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\nbase: #282c34\nmono-1: #abb2bf\nmono-2: #818896\nmono-3: #5c6370\nhue-1: #56b6c2\nhue-2: #61aeee\nhue-3: #c678dd\nhue-4: #98c379\nhue-5: #e06c75\nhue-5-2: #be5046\nhue-6: #d19a66\nhue-6-2: #e6c07b\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n color: #abb2bf;\n background: #282c34;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #5c6370;\n font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n color: #c678dd;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n color: #e06c75;\n}\n\n.hljs-literal {\n color: #56b6c2;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n color: #98c379;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n color: #e6c07b;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n color: #d19a66;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n color: #61aeee;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-link {\n text-decoration: underline;\n}`;\n","export default `/*\n\nAtom One Light by Daniel Gamage\nOriginal One Light Syntax theme from https://github.com/atom/one-light-syntax\n\nbase: #fafafa\nmono-1: #383a42\nmono-2: #686b77\nmono-3: #a0a1a7\nhue-1: #0184bb\nhue-2: #4078f2\nhue-3: #a626a4\nhue-4: #50a14f\nhue-5: #e45649\nhue-5-2: #c91243\nhue-6: #986801\nhue-6-2: #c18401\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n color: #383a42;\n background: #fafafa;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #a0a1a7;\n font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n color: #a626a4;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n color: #e45649;\n}\n\n.hljs-literal {\n color: #0184bb;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n color: #50a14f;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n color: #c18401;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n color: #986801;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n color: #4078f2;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-link {\n text-decoration: underline;\n}`;\n","export default `/*\n\ngithub.com style (c) Vasily Polovnyov \n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n color: #333;\n background: #f8f8f8;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #998;\n font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-subst {\n color: #333;\n font-weight: bold;\n}\n\n.hljs-number,\n.hljs-literal,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag .hljs-attr {\n color: #008080;\n}\n\n.hljs-string,\n.hljs-doctag {\n color: #d14;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-selector-id {\n color: #900;\n font-weight: bold;\n}\n\n.hljs-subst {\n font-weight: normal;\n}\n\n.hljs-type,\n.hljs-class .hljs-title {\n color: #458;\n font-weight: bold;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-attribute {\n color: #000080;\n font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-link {\n color: #009926;\n}\n\n.hljs-symbol,\n.hljs-bullet {\n color: #990073;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n color: #0086b3;\n}\n\n.hljs-meta {\n color: #999;\n font-weight: bold;\n}\n\n.hljs-deletion {\n background: #fdd;\n}\n\n.hljs-addition {\n background: #dfd;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}`;\n","export default `/*\nMonokai style - ported by Luigi Maselli - http://grigio.org\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n background: #272822; color: #ddd;\n}\n\n.hljs-tag,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-strong,\n.hljs-name {\n color: #f92672;\n}\n\n.hljs-code {\n color: #66d9ef;\n}\n\n.hljs-class .hljs-title {\n color: white;\n}\n\n.hljs-attribute,\n.hljs-symbol,\n.hljs-regexp,\n.hljs-link {\n color: #bf79db;\n}\n\n.hljs-string,\n.hljs-bullet,\n.hljs-subst,\n.hljs-title,\n.hljs-section,\n.hljs-emphasis,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n color: #a6e22e;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n color: #75715e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-selector-id {\n font-weight: bold;\n}`;\n","export default `/*\n * Visual Studio 2015 dark style\n * Author: Nicolas LLOBERA \n */\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n background: #1E1E1E;\n color: #DCDCDC;\n}\n\n.hljs-keyword,\n.hljs-literal,\n.hljs-symbol,\n.hljs-name {\n color: #569CD6;\n}\n.hljs-link {\n color: #569CD6;\n text-decoration: underline;\n}\n\n.hljs-built_in,\n.hljs-type {\n color: #4EC9B0;\n}\n\n.hljs-number,\n.hljs-class {\n color: #B8D7A3;\n}\n\n.hljs-string,\n.hljs-meta-string {\n color: #D69D85;\n}\n\n.hljs-regexp,\n.hljs-template-tag {\n color: #9A5334;\n}\n\n.hljs-subst,\n.hljs-function,\n.hljs-title,\n.hljs-params,\n.hljs-formula {\n color: #DCDCDC;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #57A64A;\n font-style: italic;\n}\n\n.hljs-doctag {\n color: #608B4E;\n}\n\n.hljs-meta,\n.hljs-meta-keyword,\n.hljs-tag {\n color: #9B9B9B;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n color: #BD63C5;\n}\n\n.hljs-attr,\n.hljs-attribute,\n.hljs-builtin-name {\n color: #9CDCFE;\n}\n\n.hljs-section {\n color: gold;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n/*.hljs-code {\n font-family:'Monospace';\n}*/\n\n.hljs-bullet,\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n color: #D7BA7D;\n}\n\n.hljs-addition {\n background-color: #144212;\n display: inline-block;\n width: 100%;\n}\n\n.hljs-deletion {\n background-color: #600;\n display: inline-block;\n width: 100%;\n}`;\n","export default `/*\n\nXCode style (c) Angel Garcia \n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n background: #fff;\n color: black;\n}\n\n/* Gray DOCTYPE selectors like WebKit */\n.xml .hljs-meta {\n color: #c0c0c0;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #007400;\n}\n\n.hljs-tag,\n.hljs-attribute,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-name {\n color: #aa0d91;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n color: #3F6E74;\n}\n\n.hljs-code,\n.hljs-string,\n.hljs-meta-string {\n color: #c41a16;\n}\n\n.hljs-regexp,\n.hljs-link {\n color: #0E0EFF;\n}\n\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-number {\n color: #1c00cf;\n}\n\n.hljs-section,\n.hljs-meta {\n color: #643820;\n}\n\n\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-params {\n color: #5c2699;\n}\n\n.hljs-attr {\n color: #836C28;\n}\n\n.hljs-subst {\n color: #000;\n}\n\n.hljs-formula {\n background-color: #eee;\n font-style: italic;\n}\n\n.hljs-addition {\n background-color: #baeeba;\n}\n\n.hljs-deletion {\n background-color: #ffc8bd;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n color: #9b703f;\n}\n\n.hljs-doctag,\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}`;\n","export default `/*\n\nAtom One Dark by Daniel Gamage\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\nbase: #282c34\nmono-1: #abb2bf\nmono-2: #818896\nmono-3: #5c6370\nhue-1: #56b6c2\nhue-2: #61aeee\nhue-3: #c678dd\nhue-4: #98c379\nhue-5: #e06c75\nhue-5-2: #be5046\nhue-6: #d19a66\nhue-6-2: #e6c07b\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n color: #abb2bf;\n background: #282c34;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #5c6370;\n font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n color: #c678dd;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n color: #e06c75;\n}\n\n.hljs-literal {\n color: #56b6c2;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n color: #98c379;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n color: #e6c07b;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n color: #d19a66;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n color: #61aeee;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-link {\n text-decoration: underline;\n}\n\n#nice .custom code {\n padding-top: 15px;\n background: #282c34;\n border-radius: 5px;\n}\n\n#nice .custom:before {\n content: '';\n display:block;\n background: url(https://my-wechat.mdnice.com/point.png);\n height: 30px;\n width: 100%;\n background-size:40px;\n background-repeat: no-repeat;\n background-color: #282c34;\n margin-bottom: -7px;\n border-radius: 5px;\n background-position: 10px 10px;\n}\n\n#nice .custom {\n border-radius: 5px;\n box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\n}`;\n","export default `/*\n\nAtom One Light by Daniel Gamage\nOriginal One Light Syntax theme from https://github.com/atom/one-light-syntax\n\nbase: #fafafa\nmono-1: #383a42\nmono-2: #686b77\nmono-3: #a0a1a7\nhue-1: #0184bb\nhue-2: #4078f2\nhue-3: #a626a4\nhue-4: #50a14f\nhue-5: #e45649\nhue-5-2: #c91243\nhue-6: #986801\nhue-6-2: #c18401\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n color: #383a42;\n background: #fafafa;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #a0a1a7;\n font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n color: #a626a4;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n color: #e45649;\n}\n\n.hljs-literal {\n color: #0184bb;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n color: #50a14f;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n color: #c18401;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n color: #986801;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n color: #4078f2;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-link {\n text-decoration: underline;\n}\n\n#nice .custom code {\n padding-top: 15px;\n background: #fafafa;\n border-radius: 5px;\n}\n\n#nice .custom:before {\n content: '';\n display:block;\n background: url(https://my-wechat.mdnice.com/point.png);\n height: 30px;\n width: 100%;\n background-size:40px;\n background-repeat: no-repeat;\n background-color: #fafafa;\n margin-bottom: -7px;\n border-radius: 5px;\n background-position: 10px 10px;\n}\n\n#nice .custom {\n border-radius: 5px;\n box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\n}`;\n","export default `/*\n\ngithub.com style (c) Vasily Polovnyov \n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n color: #333;\n background: #f8f8f8;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #998;\n font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-subst {\n color: #333;\n font-weight: bold;\n}\n\n.hljs-number,\n.hljs-literal,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag .hljs-attr {\n color: #008080;\n}\n\n.hljs-string,\n.hljs-doctag {\n color: #d14;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-selector-id {\n color: #900;\n font-weight: bold;\n}\n\n.hljs-subst {\n font-weight: normal;\n}\n\n.hljs-type,\n.hljs-class .hljs-title {\n color: #458;\n font-weight: bold;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-attribute {\n color: #000080;\n font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-link {\n color: #009926;\n}\n\n.hljs-symbol,\n.hljs-bullet {\n color: #990073;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n color: #0086b3;\n}\n\n.hljs-meta {\n color: #999;\n font-weight: bold;\n}\n\n.hljs-deletion {\n background: #fdd;\n}\n\n.hljs-addition {\n background: #dfd;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n#nice .custom code {\n padding-top: 15px;\n background: #f8f8f8;\n border-radius: 5px;\n}\n\n#nice .custom:before {\n content: '';\n display:block;\n background: url(https://my-wechat.mdnice.com/point.png);\n height: 30px;\n width: 100%;\n background-size:40px;\n background-repeat: no-repeat;\n background-color: #f8f8f8;\n margin-bottom: -7px;\n border-radius: 5px;\n background-position: 10px 10px;\n}\n\n#nice .custom {\n border-radius: 5px;\n box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\n}`;\n","export default `/*\nMonokai style - ported by Luigi Maselli - http://grigio.org\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n background: #272822; color: #ddd;\n}\n\n.hljs-tag,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-strong,\n.hljs-name {\n color: #f92672;\n}\n\n.hljs-code {\n color: #66d9ef;\n}\n\n.hljs-class .hljs-title {\n color: white;\n}\n\n.hljs-attribute,\n.hljs-symbol,\n.hljs-regexp,\n.hljs-link {\n color: #bf79db;\n}\n\n.hljs-string,\n.hljs-bullet,\n.hljs-subst,\n.hljs-title,\n.hljs-section,\n.hljs-emphasis,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n color: #a6e22e;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n color: #75715e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-selector-id {\n font-weight: bold;\n}\n\n#nice .custom code {\n padding-top: 15px;\n background: #272822;\n border-radius: 5px;\n}\n\n#nice .custom:before {\n content: '';\n display:block;\n background: url(https://my-wechat.mdnice.com/point.png);\n height: 30px;\n width: 100%;\n background-size:40px;\n background-repeat: no-repeat;\n background-color: #272822;\n margin-bottom: -7px;\n border-radius: 5px;\n background-position: 10px 10px;\n}\n\n#nice .custom {\n border-radius: 5px;\n box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\n}`;\n","export default `/*\n * Visual Studio 2015 dark style\n * Author: Nicolas LLOBERA \n */\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n background: #1E1E1E;\n color: #DCDCDC;\n}\n\n.hljs-keyword,\n.hljs-literal,\n.hljs-symbol,\n.hljs-name {\n color: #569CD6;\n}\n.hljs-link {\n color: #569CD6;\n text-decoration: underline;\n}\n\n.hljs-built_in,\n.hljs-type {\n color: #4EC9B0;\n}\n\n.hljs-number,\n.hljs-class {\n color: #B8D7A3;\n}\n\n.hljs-string,\n.hljs-meta-string {\n color: #D69D85;\n}\n\n.hljs-regexp,\n.hljs-template-tag {\n color: #9A5334;\n}\n\n.hljs-subst,\n.hljs-function,\n.hljs-title,\n.hljs-params,\n.hljs-formula {\n color: #DCDCDC;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #57A64A;\n font-style: italic;\n}\n\n.hljs-doctag {\n color: #608B4E;\n}\n\n.hljs-meta,\n.hljs-meta-keyword,\n.hljs-tag {\n color: #9B9B9B;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n color: #BD63C5;\n}\n\n.hljs-attr,\n.hljs-attribute,\n.hljs-builtin-name {\n color: #9CDCFE;\n}\n\n.hljs-section {\n color: gold;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n/*.hljs-code {\n font-family:'Monospace';\n}*/\n\n.hljs-bullet,\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n color: #D7BA7D;\n}\n\n.hljs-addition {\n background-color: #144212;\n display: inline-block;\n width: 100%;\n}\n\n.hljs-deletion {\n background-color: #600;\n display: inline-block;\n width: 100%;\n}\n\n#nice .custom code {\n padding-top: 15px;\n background: #1E1E1E;\n border-radius: 5px;\n}\n\n#nice .custom:before {\n content: '';\n display:block;\n background: url(https://my-wechat.mdnice.com/point.png);\n height: 30px;\n width: 100%;\n background-size:40px;\n background-repeat: no-repeat;\n background-color: #1E1E1E;\n margin-bottom: -7px;\n border-radius: 5px;\n background-position: 10px 10px;\n}\n\n#nice .custom {\n border-radius: 5px;\n box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\n}`;\n","export default `/*\n\nXCode style (c) Angel Garcia \n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 16px;\n background: #fff;\n color: black;\n}\n\n/* Gray DOCTYPE selectors like WebKit */\n.xml .hljs-meta {\n color: #c0c0c0;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #007400;\n}\n\n.hljs-tag,\n.hljs-attribute,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-name {\n color: #aa0d91;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n color: #3F6E74;\n}\n\n.hljs-code,\n.hljs-string,\n.hljs-meta-string {\n color: #c41a16;\n}\n\n.hljs-regexp,\n.hljs-link {\n color: #0E0EFF;\n}\n\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-number {\n color: #1c00cf;\n}\n\n.hljs-section,\n.hljs-meta {\n color: #643820;\n}\n\n\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-params {\n color: #5c2699;\n}\n\n.hljs-attr {\n color: #836C28;\n}\n\n.hljs-subst {\n color: #000;\n}\n\n.hljs-formula {\n background-color: #eee;\n font-style: italic;\n}\n\n.hljs-addition {\n background-color: #baeeba;\n}\n\n.hljs-deletion {\n background-color: #ffc8bd;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n color: #9b703f;\n}\n\n.hljs-doctag,\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n#nice .custom code {\n padding-top: 15px;\n background: #fff;\n border-radius: 5px;\n}\n\n#nice .custom:before {\n content: '';\n display:block;\n background: url(https://my-wechat.mdnice.com/point.png);\n height: 30px;\n width: 100%;\n background-size:40px;\n background-repeat: no-repeat;\n background-color: #fff;\n margin-bottom: -7px;\n border-radius: 5px;\n background-position: 10px 10px;\n}\n\n#nice .custom {\n border-radius: 5px;\n box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\n}`;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Modal, message} from \"antd\";\n\nimport TEMPLATE from \"../../../template/index\";\nimport \"../common.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@observer\nclass Reset extends Component {\n showConfirm = () => {\n Modal.confirm({\n title: \"确认重置么?\",\n content: \"重置后将丢失本地保存的文本和自定义样式\",\n okText: \"确定\",\n okType: \"danger\",\n cancelText: \"取消\",\n onOk: () => {\n this.props.content.setContent(TEMPLATE.content);\n this.props.content.setStyle(TEMPLATE.normal);\n this.props.content.setCustomStyle(TEMPLATE.custom);\n this.props.navbar.setTemplateNum(0);\n message.success(\"重置成功!\");\n },\n onCancel() {},\n });\n };\n\n render() {\n return (\n
    \n \n \n 重置\n \n
    \n );\n }\n}\n\nexport default Reset;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {hotKeys} from \"../../../utils/hotkey\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass Search extends Component {\n handleClick = () => {\n this.props.dialog.setSearchOpen(!this.props.dialog.isSearchOpen);\n };\n\n render() {\n return (\n
    \n \n \n 查找\n \n {hotKeys.search}\n
    \n );\n }\n}\n\nexport default Search;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass History extends Component {\n handleClick = () => {\n this.props.dialog.setHistoryOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n 本地历史\n \n
    \n );\n }\n}\n\nexport default History;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../common.css\";\n\n@inject(\"dialog\")\n@observer\nclass SitDownFunction extends Component {\n handleClick = () => {\n this.props.dialog.setSitDownOpen(true);\n };\n\n render() {\n return (\n
    \n \n \n SitDown\n \n
    \n );\n }\n}\n\nexport default SitDownFunction;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\n\nimport Reset from \"./Function/Reset\";\nimport Search from \"./Function/Search\";\nimport History from \"./Function/History\";\nimport SitDown from \"./Function/SitDown\";\n\nimport \"./common.css\";\n\nconst menu = (\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n);\n\nclass Function extends Component {\n render() {\n return (\n \n \n 功能\n \n \n );\n }\n}\n\nexport default Function;\n","import React from \"react\";\nimport {Menu, Dropdown} from \"antd\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {TEMPLATE_OPTIONS, RIGHT_SYMBOL} from \"../../utils/constant\";\nimport TEMPLATE from \"../../template/index\";\nimport \"./Theme.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"view\")\n@observer\nclass Theme extends React.Component {\n changeTemplate = (item) => {\n const index = parseInt(item.key, 10);\n const {id} = TEMPLATE_OPTIONS[index];\n this.props.navbar.setTemplateNum(index);\n\n // 更新style编辑器\n if (id === \"custom\") {\n this.props.content.setCustomStyle();\n // 切换自定义自动打开css编辑\n this.props.view.setStyleEditorOpen(true);\n } else {\n this.props.content.setStyle(TEMPLATE.style[id]);\n }\n };\n\n toggleStyleEditor = () => {\n const {isStyleEditorOpen} = this.props.view;\n this.props.view.setStyleEditorOpen(!isStyleEditorOpen);\n };\n\n render() {\n const {templateNum} = this.props.navbar;\n\n const mdMenu = (\n \n {TEMPLATE_OPTIONS.map((option, index) => (\n \n
    \n \n \n {templateNum === index && {RIGHT_SYMBOL}}\n \n {option.name}\n {option.isNew && new}\n \n {option.author}\n
    \n
    \n ))}\n \n
  • \n
    \n \n \n {this.props.view.isStyleEditorOpen && {RIGHT_SYMBOL}}\n \n 查看主题 CSS\n \n
    \n
  • \n
    \n );\n return (\n \n \n 主题\n \n \n );\n }\n}\n\nexport default Theme;\n","import React from \"react\";\nimport {Menu, Dropdown} from \"antd\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {CODE_OPTIONS, RIGHT_SYMBOL, IS_MAC_CODE} from \"../../utils/constant\";\nimport \"./CodeTheme.css\";\n\n@inject(\"navbar\")\n@observer\nclass CodeTheme extends React.Component {\n changeCodeTheme = (item) => {\n // 是否为 Mac 风格代码\n if (item.key === IS_MAC_CODE) {\n const {isMacCode, codeNum} = this.props.navbar;\n if (isMacCode) {\n this.props.navbar.setMacCode(false);\n this.props.navbar.setCodeNum(codeNum, false);\n } else {\n this.props.navbar.setMacCode(true);\n this.props.navbar.setCodeNum(codeNum, true);\n }\n } else {\n const {isMacCode} = this.props.navbar;\n const codeNum = parseInt(item.key, 10);\n this.props.navbar.setCodeNum(codeNum, isMacCode);\n }\n };\n\n render() {\n const {codeNum, isMacCode} = this.props.navbar;\n\n const codeMenu = (\n \n {CODE_OPTIONS.map((option, index) => (\n \n
    \n \n {codeNum === index && {RIGHT_SYMBOL}}\n {option.name}\n \n
    \n
    \n ))}\n \n \n
    \n \n {isMacCode && {RIGHT_SYMBOL}}\n Mac 风格\n \n
    \n
    \n
    \n );\n\n return (\n \n \n 代码主题\n \n \n );\n }\n}\n\nexport default CodeTheme;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {RIGHT_SYMBOL} from \"../../../utils/constant\";\nimport \"../common.css\";\n\n@inject(\"navbar\")\n@observer\nclass SyncScroll extends Component {\n handleClick = () => {\n const {isSyncScroll} = this.props.navbar;\n this.props.navbar.setSyncScroll(!isSyncScroll);\n };\n\n render() {\n return (\n
    \n \n {this.props.navbar.isSyncScroll && {RIGHT_SYMBOL}}\n 同步滚动\n \n
    \n );\n }\n}\n\nexport default SyncScroll;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {RIGHT_SYMBOL} from \"../../../utils/constant\";\nimport \"../common.css\";\n\n@inject(\"navbar\")\n@observer\nclass SyncScroll extends Component {\n handleClick = () => {\n const {isContainImgName} = this.props.navbar;\n this.props.navbar.setContainImgName(!isContainImgName);\n };\n\n render() {\n return (\n
    \n \n {this.props.navbar.isContainImgName && {RIGHT_SYMBOL}}\n 上传图片时包含名称\n \n
    \n );\n }\n}\n\nexport default SyncScroll;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\n\nimport SyncScroll from \"./Setting/SyncScroll\";\nimport ContainImgName from \"./Setting/ContainImgName\";\n\nimport \"./common.css\";\n\nconst menu = (\n \n \n \n \n \n \n \n \n);\n\nclass Setting extends Component {\n render() {\n return (\n \n \n 设置\n \n \n );\n }\n}\n\nexport default Setting;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../common.css\";\n\n@inject(\"navbar\")\n@observer\nclass FullScreen extends Component {\n // fullScreen or !fullScreen\n toggleFullScreen = () => {\n const doc = window.document;\n const docEl = doc.documentElement;\n\n const requestFullScreen =\n docEl.requestFullscreen ||\n docEl.mozRequestFullScreen ||\n docEl.webkitRequestFullScreen ||\n docEl.msRequestFullscreen;\n const cancelFullScreen =\n doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;\n\n if (\n !doc.fullscreenElement &&\n !doc.mozFullScreenElement &&\n !doc.webkitFullscreenElement &&\n !doc.msFullscreenElement\n ) {\n requestFullScreen.call(docEl);\n } else {\n cancelFullScreen.call(doc);\n }\n };\n\n render() {\n return (\n
    \n \n \n 全屏\n \n
    \n );\n }\n}\n\nexport default FullScreen;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {RIGHT_SYMBOL} from \"../../../utils/constant\";\nimport \"../common.css\";\n\n@inject(\"view\")\n@observer\nclass EditArea extends Component {\n handleClick = () => {\n const {isEditAreaOpen} = this.props.view;\n this.props.view.setEditAreaOpen(!isEditAreaOpen);\n };\n\n render() {\n return (\n
    \n \n {this.props.view.isEditAreaOpen && {RIGHT_SYMBOL}}\n 编辑区域\n \n
    \n );\n }\n}\n\nexport default EditArea;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {RIGHT_SYMBOL} from \"../../../utils/constant\";\nimport \"../common.css\";\n\n@inject(\"view\")\n@observer\nclass PreviewArea extends Component {\n handleClick = () => {\n const {isPreviewAreaOpen} = this.props.view;\n this.props.view.setPreviewAreaOpen(!isPreviewAreaOpen);\n };\n\n render() {\n return (\n
    \n \n {this.props.view.isPreviewAreaOpen && {RIGHT_SYMBOL}}\n 预览区域\n \n
    \n );\n }\n}\n\nexport default PreviewArea;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\n\nimport {RIGHT_SYMBOL} from \"../../../utils/constant\";\nimport \"../common.css\";\n\n@inject(\"view\")\n@observer\nclass ThemeArea extends Component {\n handleClick = () => {\n const {isStyleEditorOpen} = this.props.view;\n this.props.view.setStyleEditorOpen(!isStyleEditorOpen);\n };\n\n render() {\n return (\n
    \n \n {this.props.view.isStyleEditorOpen && {RIGHT_SYMBOL}}\n 主题CSS区域\n \n
    \n );\n }\n}\n\nexport default ThemeArea;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown} from \"antd\";\n\nimport FullScreen from \"./View/FullScreen\";\nimport EditArea from \"./View/EditArea\";\nimport PreviewArea from \"./View/PreviewArea\";\nimport ThemeArea from \"./View/ThemeArea\";\n\nimport \"./common.css\";\n\nconst menu = (\n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n);\n\nclass View extends Component {\n render() {\n return (\n \n \n 查看\n \n \n );\n }\n}\n\nexport default View;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport classnames from \"classnames\";\n\nimport File from \"../component/MenuLeft/File\";\nimport Help from \"../component/MenuLeft/Help\";\nimport Tutorial from \"../component/MenuLeft/Tutorial\";\nimport Pattern from \"../component/MenuLeft/Pattern\";\nimport Function from \"../component/MenuLeft/Function\";\nimport Theme from \"../component/MenuLeft/Theme\";\nimport CodeTheme from \"../component/MenuLeft/CodeTheme\";\nimport Setting from \"../component/MenuLeft/Setting\";\nimport View from \"../component/MenuLeft/View\";\n\nimport \"./Navbar.css\";\n\n@inject(\"view\")\n@observer\nclass Navbar extends Component {\n render() {\n const {title, token} = this.props;\n const {isImmersiveEditing} = this.props.view;\n const niceNavbarClass = classnames({\n \"nice-navbar\": true,\n \"nice-navbar-hide\": isImmersiveEditing,\n });\n return (\n
    \n
    \n {title === \"\" ? null : (\n
    \n {title}\n
    \n )}\n \n \n \n \n \n \n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default Navbar;\n","import React, {Component} from \"react\";\nimport {Menu, Dropdown, message} from \"antd\";\nimport {observer, inject} from \"mobx-react\";\nimport {wordCalc} from \"../utils/helper\";\nimport SitDownConverter from \"../utils/sitdownConverter\";\nimport {SITDOWN_OPTIONS} from \"../utils/constant\";\nimport SvgIcon from \"../icon\";\n\nimport \"./Footer.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"footer\")\n@observer\nclass Footer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n engineDesc: SITDOWN_OPTIONS[0].desc,\n };\n }\n\n handleMessage = () => {\n const {pasteHtml, pasteText} = this.props.footer;\n let toMarkdown = SitDownConverter.GFM;\n switch (this.state.platform) {\n case \"csdn\":\n toMarkdown = SitDownConverter.CSDN;\n break;\n case \"wechat\":\n toMarkdown = SitDownConverter.Wechat;\n break;\n case \"juejin\":\n toMarkdown = SitDownConverter.Juejin;\n break;\n case \"zhihu\":\n toMarkdown = SitDownConverter.Zhihu;\n break;\n default:\n toMarkdown = SitDownConverter.Wechat;\n break;\n }\n const markdown = toMarkdown(pasteHtml);\n const {content} = this.props.content;\n const convertContent = content.replace(pasteText, markdown);\n this.props.content.setContent(convertContent);\n\n // 设置粘贴检测为 false\n this.props.footer.setPasteHtmlChecked(false);\n\n message.success(\"转换成功!\");\n };\n\n handleMenu = ({key, domEvent}) => {\n if (key === \"thanks\") {\n const w = window.open(\"about:blank\");\n w.location.href = \"https://github.com/mdnice/sitdown\";\n } else {\n this.setState({engineDesc: key});\n }\n domEvent.stopPropagation();\n };\n\n render() {\n const menu = (\n \n {SITDOWN_OPTIONS.map((option) => (\n \n
    {option.value}
    \n
    \n ))}\n \n \n SitDown 引擎提供支持\n \n
    \n );\n\n const {content, themeList} = this.props.content;\n const {templateNum} = this.props.navbar;\n const {isPasteHtmlChecked} = this.props.footer;\n\n const lineCount = content.split(\"\\n\").length;\n const wordCount = wordCalc(content);\n const themeName = themeList[templateNum] && themeList[templateNum].name;\n return (\n
    \n

    \n 行数:\n {lineCount}\n

    \n

    \n 字数:\n {wordCount}\n

    \n

    \n 主题:\n {themeName}\n

    \n {isPasteHtmlChecked && (\n
    \n 点击使用\n \n {\n e.stopPropagation();\n }}\n >\n {this.state.engineDesc}\n \n \n \n 将粘贴的富文本转换为 markdown\n
    \n )}\n
    \n );\n }\n}\n\nconst style = {\n svgIcon: {\n width: \"12px\",\n height: \"12px\",\n },\n};\n\nexport default Footer;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Tooltip} from \"antd\";\n\nimport {ENTER_DELAY, LEAVE_DELAY} from \"../../utils/constant\";\nimport SvgIcon from \"../../icon\";\nimport \"./PreviewType.css\";\n\n@inject(\"navbar\")\n@observer\nclass PreviewType extends Component {\n handleClick = (key) => {\n this.props.navbar.setPreviewType(key);\n };\n\n render() {\n const targetType = this.props.navbar.previewType === \"pc\" ? \"mobile\" : \"pc\";\n\n return (\n \n this.handleClick(targetType)}>\n \n \n \n );\n }\n}\n\nexport default PreviewType;\n","import juice from \"juice\";\nimport {message} from \"antd\";\nimport {\n BASIC_THEME_ID,\n CODE_THEME_ID,\n MARKDOWN_THEME_ID,\n LAYOUT_ID,\n BOX_ID,\n FONT_THEME_ID,\n MJX_DATA_FORMULA,\n} from \"./constant\";\n\nexport const solveWeChatMath = () => {\n const layout = document.getElementById(LAYOUT_ID);\n const mjxs = layout.getElementsByTagName(\"mjx-container\");\n for (let i = 0; i < mjxs.length; i++) {\n const mjx = mjxs[i];\n if (!mjx.hasAttribute(\"jax\")) {\n break;\n }\n\n // mjx.removeAttribute(\"data\");\n mjx.removeAttribute(\"jax\");\n mjx.removeAttribute(\"display\");\n mjx.removeAttribute(\"tabindex\");\n mjx.removeAttribute(\"ctxtmenu_counter\");\n const svg = mjx.firstChild;\n const width = svg.getAttribute(\"width\");\n const height = svg.getAttribute(\"height\");\n svg.removeAttribute(\"width\");\n svg.removeAttribute(\"height\");\n svg.style.width = width;\n svg.style.height = height;\n }\n};\n\nexport const solveZhihuMath = () => {\n const layout = document.getElementById(LAYOUT_ID);\n const mjxs = layout.getElementsByTagName(\"mjx-container\");\n while (mjxs.length > 0) {\n const mjx = mjxs[0];\n let data = mjx.getAttribute(MJX_DATA_FORMULA);\n if (!data) {\n continue;\n }\n\n if (mjx.hasAttribute(\"display\") && data.indexOf(\"\\\\tag\") === -1) {\n data += \"\\\\\\\\\";\n }\n\n mjx.outerHTML = '\"'';\n }\n};\n\nexport const solveJuejinMath = () => {\n const layout = document.getElementById(LAYOUT_ID);\n const mjxs = layout.getElementsByTagName(\"mjx-container\");\n while (mjxs.length > 0) {\n const mjx = mjxs[0];\n const data = mjx.getAttribute(MJX_DATA_FORMULA);\n if (!data) {\n continue;\n }\n\n // 行间公式\n if (mjx.hasAttribute(\"display\")) {\n mjx.outerHTML = `
    \"\"/
    `;\n }\n // 行内公式\n else {\n mjx.outerHTML = `\"\"/`;\n }\n }\n};\n\n// 掘金单独处理代码块\nexport const solveJuejinCode = (html) => {\n // 掘金代码不换行问题\n const brReg = /])*class=\"custom\"([^>])*>(.*?)<\\/pre>/g;\n const brMatchList = html.match(brReg);\n if (brMatchList) {\n for (const item of brMatchList) {\n const content = item\n .replace(/display: -webkit-box;/g, \"display: block;\") // -webkit-box替换为block\n .replace(/
    /g, \"\\n\") //
    替换为\\n\n .replace(/ /g, \" \"); // 空格转回,不转回遇到 \"$ \" 情况会出现问题\n\n html = html.replace(item, content);\n }\n }\n return html;\n};\n\nexport const addJuejinSuffix = () => {\n const suffix = document.createElement(\"p\");\n suffix.id = \"nice-suffix-juejin-container\";\n suffix.className = \"nice-suffix-juejin-container\";\n suffix.innerHTML = `本文使用 mdnice 排版`;\n\n const element = document.getElementById(LAYOUT_ID);\n element.appendChild(suffix);\n};\n\nexport const solveHtml = () => {\n const element = document.getElementById(BOX_ID);\n\n const inner = element.children[0].children;\n for (const item of inner) {\n item.setAttribute(\"data-tool\", \"mdnice编辑器\");\n }\n let html = element.innerHTML;\n html = html.replace(//g, \"\");\n html = html.replace(/\\s<\\/span>\\s/g, \"svg> \");\n html = html.replace(/mjx-container/g, \"section\");\n html = html.replace(/class=\"mjx-solid\"/g, 'fill=\"none\" stroke-width=\"70\"');\n html = html.replace(//g, \"\");\n const basicStyle = document.getElementById(BASIC_THEME_ID).innerText;\n const markdownStyle = document.getElementById(MARKDOWN_THEME_ID).innerText;\n const codeStyle = document.getElementById(CODE_THEME_ID).innerText;\n const fontStyle = document.getElementById(FONT_THEME_ID).innerText;\n let res = \"\";\n try {\n res = juice.inlineContent(html, basicStyle + markdownStyle + codeStyle + fontStyle, {\n inlinePseudoElements: true,\n preserveImportant: true,\n });\n } catch (e) {\n message.error(\"请检查 CSS 文件是否编写正确!\");\n }\n\n return res;\n};\n\nexport const copySafari = (text) => {\n // 获取 input\n let input = document.getElementById(\"copy-input\");\n if (!input) {\n // input 不能用 CSS 隐藏,必须在页面内存在。\n input = document.createElement(\"input\");\n input.id = \"copy-input\";\n input.style.position = \"absolute\";\n input.style.left = \"-1000px\";\n input.style.zIndex = \"-1000\";\n document.body.appendChild(input);\n }\n // 让 input 选中一个字符,无所谓那个字符\n input.value = \"NOTHING\";\n input.setSelectionRange(0, 1);\n input.focus();\n\n // 复制触发\n document.addEventListener(\"copy\", function copyCall(e) {\n e.preventDefault();\n e.clipboardData.setData(\"text/html\", text);\n e.clipboardData.setData(\"text/plain\", text);\n document.removeEventListener(\"copy\", copyCall);\n });\n document.execCommand(\"copy\");\n};\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {message, Tooltip} from \"antd\";\n\nimport {solveWeChatMath, solveHtml, copySafari} from \"../../utils/converter\";\nimport {LAYOUT_ID, ENTER_DELAY, LEAVE_DELAY} from \"../../utils/constant\";\nimport SvgIcon from \"../../icon\";\nimport \"./Wechat.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"imageHosting\")\n@inject(\"dialog\")\n@observer\nclass Wechat extends Component {\n constructor(props) {\n super(props);\n this.html = \"\";\n }\n\n copyWechat = () => {\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n solveWeChatMath();\n this.html = solveHtml();\n copySafari(this.html);\n message.success(\"已复制,请到微信公众平台粘贴\");\n layout.innerHTML = html; // 恢复现场\n };\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default Wechat;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {message, Tooltip} from \"antd\";\n\nimport {solveHtml, solveZhihuMath, copySafari} from \"../../utils/converter\";\nimport {LAYOUT_ID, ENTER_DELAY, LEAVE_DELAY} from \"../../utils/constant\";\nimport SvgIcon from \"../../icon\";\nimport \"./Zhihu.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"imageHosting\")\n@inject(\"dialog\")\n@observer\nclass Zhihu extends Component {\n constructor(props) {\n super(props);\n this.html = \"\";\n }\n\n copyZhihu = () => {\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n solveZhihuMath();\n this.html = solveHtml();\n copySafari(this.html);\n message.success(\"已复制,请到知乎粘贴\");\n layout.innerHTML = html; // 恢复现场\n };\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default Zhihu;\n","import {observable, action} from \"mobx\";\n\nclass ThreadDataStore {\n @observable subject = \"\";\n\n @observable allownoticeauthor = false;\n\n @observable hiddenreplies = false;\n\n @observable ordertype = false;\n\n @observable usesig = false;\n\n @observable threadtypes = []; // 帖子内容\n\n @observable select = undefined;\n\n @observable allowSetPostTime = \"\";\n\n @observable postTime = \"\";\n\n @observable isDialogVisible = false; // 是否打开主题选择弹窗\n\n @action\n setPostTime = (postTime) => {\n this.postTime = postTime;\n };\n\n @action\n setIsDialogVisible = (visible) => {\n this.isDialogVisible = visible;\n };\n\n @action\n setSubject = (subject) => {\n this.subject = subject;\n };\n\n @action\n setAllowSetPostTime = (allowSetPostTime) => {\n this.allowSetPostTime = allowSetPostTime;\n };\n\n @action\n setAllownoticeauthor = (allownoticeauthor) => {\n this.allownoticeauthor = allownoticeauthor === \"1\";\n };\n\n @action\n setHiddenreplies = (hiddenreplies) => {\n this.hiddenreplies = hiddenreplies === \"1\";\n };\n\n @action\n setOrdertype = (ordertype) => {\n this.ordertype = ordertype === \"1\";\n };\n\n @action\n setUsesig = (usesig) => {\n this.usesig = usesig === \"1\";\n };\n\n @action\n setThreadtypes = (threadtypes) => {\n this.threadtypes = threadtypes;\n };\n\n @action\n setSelect = (select) => {\n this.select = select;\n };\n\n // 初始化时设置所有字段\n @action\n initializeFromResponse = (response) => {\n this.setSubject(response.data.subject);\n this.setAllownoticeauthor(response.data.allownoticeauthor);\n this.setHiddenreplies(response.data.hiddenreplies);\n this.setOrdertype(response.data.ordertype);\n this.setUsesig(response.data.usesig);\n this.setThreadtypes(response.data.threadtypes);\n this.setSelect(response.data.typeid);\n this.setAllowSetPostTime(response.data.allowSetPostTime);\n };\n}\n\n// 创建实例导出\nconst threadDataStore = new ThreadDataStore();\nexport default threadDataStore;\n","import React, {Component} from \"react\";\nimport {observer} from \"mobx-react\";\nimport {Modal, Input, Select, Checkbox, Button, DatePicker} from \"antd\";\nimport threadDataStore from \"../../store/pinggu/threadDataStore\";\nimport locale from \"antd/es/date-picker/locale/zh_CN\";\n\nconst {Option} = Select;\n\n@observer\nclass ThreadDialog extends Component {\n constructor(props) {\n super(props);\n // 在构造函数中初始化状态\n this.state = {\n loading: false, // 添加 loading 状态\n };\n }\n\n handleSubjectChange = (e) => {\n threadDataStore.setSubject(e.target.value); // 更新帖子标题\n };\n\n handleConfirm = () => {\n // 点击确定时,调用父组件传递的回调函数\n this.setState({loading: true});\n try {\n const {onConfirm} = this.props;\n if (onConfirm) {\n const data = {\n subject: threadDataStore.subject,\n select: threadDataStore.select,\n usesig: threadDataStore.usesig,\n hiddenreplies: threadDataStore.hiddenreplies,\n ordertype: threadDataStore.ordertype,\n allownoticeauthor: threadDataStore.allownoticeauthor,\n postTime: threadDataStore.postTime,\n };\n onConfirm(data); // 回传数据到父组件\n }\n\n threadDataStore.setIsDialogVisible(false); // 关闭对话框\n } catch (e) {\n console.error(e);\n } finally {\n this.setState({loading: false});\n }\n };\n\n render() {\n const {\n subject,\n threadtypes,\n select,\n usesig,\n hiddenreplies,\n ordertype,\n allownoticeauthor,\n allowSetPostTime,\n isDialogVisible,\n } = threadDataStore;\n const {loading} = this.state;\n console.log(\"是否允许定时发布\", allowSetPostTime);\n return (\n {\n threadDataStore.setIsDialogVisible(false);\n }}\n footer={[\n {\n threadDataStore.setIsDialogVisible(false);\n }}\n >\n 取消\n ,\n ,\n ]}\n >\n \n\n {threadtypes && threadtypes.length > 0 && (\n threadDataStore.setSelect(value)}\n style={{width: \"100%\", marginTop: 20}}\n placeholder=\"请选择主题\"\n >\n {threadtypes.map((item) => (\n \n ))}\n \n )}\n\n {allowSetPostTime === \"1\" && (\n
    \n {\n threadDataStore.setPostTime(dateString);\n }}\n locale={locale} // 设置中文提示\n placeholder=\"请选择定时发布的时间\"\n style={{flex: 1}}\n />\n
    \n )}\n\n
    \n
    \n threadDataStore.setUsesig(e.target.checked ? \"1\" : \"0\")}>\n 使用个人签名\n \n
    \n\n
    \n threadDataStore.setHiddenreplies(e.target.checked ? \"1\" : \"0\")}\n >\n 回帖仅作者可见\n \n
    \n\n
    \n threadDataStore.setOrdertype(e.target.checked ? \"1\" : \"0\")}>\n 回帖倒序排列\n \n
    \n\n
    \n threadDataStore.setAllownoticeauthor(e.target.checked ? \"1\" : \"0\")}\n >\n 接收回复通知\n \n
    \n
    \n \n );\n }\n}\n\nexport default ThreadDialog;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport md5 from \"js-md5\";\nimport {message, Tooltip} from \"antd\";\nimport axios from \"axios\";\nimport {solveHtml} from \"../../utils/converter\";\nimport {LAYOUT_ID, ENTER_DELAY, LEAVE_DELAY, PING_GU_API_PREFIX} from \"../../utils/constant\";\nimport SvgIcon from \"../../icon\";\nimport ThreadDialog from \"../pinggu/ThreadDialog\";\nimport \"./Issue.css\";\nimport qs from \"qs\";\nimport threadDataStore from \"../../store/pinggu/threadDataStore\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"imageHosting\")\n@inject(\"dialog\")\n@observer\nclass Issue extends Component {\n constructor(props) {\n super(props);\n this.html = \"\";\n console.log(this.props);\n }\n\n handlePingGuSubmit = () => {\n if (!window) {\n message.error(\"window不可用\");\n return;\n }\n\n const query = this.parseQuery(window.location.search.slice(1));\n\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n this.html = solveHtml();\n const content = this.props.content.getContent();\n\n let data = {\n fid: query.fid * 1,\n subject: threadDataStore.subject,\n message: this.html,\n markdown: content,\n hiddenreplies: threadDataStore.hiddenreplies, // 回帖仅作者可见\n ordertype: threadDataStore.ordertype, // 回帖倒序排列\n usesig: threadDataStore.usesig, // 使用个人签名\n allownoticeauthor: threadDataStore.allownoticeauthor, // 接收回复通知\n };\n\n // 如果 select 不为空,加入 typeid\n if (threadDataStore.select !== null && threadDataStore.select !== undefined) {\n data = {...data, typeid: threadDataStore.select};\n }\n\n if (threadDataStore.postTime && threadDataStore.allowSetPostTime === \"1\") {\n data = {...data, postTime: threadDataStore.postTime};\n }\n\n // 根据不同的 action 设置不同的 URL\n let url = `${PING_GU_API_PREFIX}/markdown.php?action=newthread&op=post`;\n if (query.action === \"edit\") {\n url = `${PING_GU_API_PREFIX}/markdown.php?action=edit&page=1&op=post`;\n data = {...data, tid: query.tid * 1, pid: query.pid * 1};\n } else if (query.action === \"reply\") {\n url = `${PING_GU_API_PREFIX}/markdown.php?action=reply&page=1&op=post`;\n data = {...data, tid: query.tid * 1};\n }\n\n // 发起请求,显示 loading\n message.loading(\"发布中...\", 0);\n axios\n .post(url, qs.stringify(data), {\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded;charset=UTF-8\",\n },\n })\n .then((response) => {\n message.destroy(); // 移除 loading 提示\n if (response.status === 200) {\n if (response.data.code === \"success\") {\n message.success(\"发布成功\");\n window.location.href = response.data.url; // 跳转到发布后的页面\n } else {\n message.error(response.data.msg || \"发布失败\");\n }\n } else if (response.status === 500 || response.status === 504) {\n message.error(\"发布错误或帖子内容过长\");\n } else {\n message.error(\"发布失败,请稍后再试\");\n }\n })\n .catch((error) => {\n message.destroy(); // 移除 loading 提示\n if (error.response && (error.response.status === 500 || error.response.status === 504)) {\n message.error(\"发布错误或帖子内容过长\");\n } else {\n message.error(\"发布失败,请稍后再试\");\n }\n });\n };\n\n handleConfirm = (_data) => {\n console.log(\"父组件接收到的数据:\", _data);\n this.handlePingGuSubmit();\n };\n\n pingGuIssue = () => {\n // 论坛发表\n const query = this.parseQuery(window.location.search.slice(1));\n if (query.action === \"reply\") {\n this.handlePingGuSubmit();\n return;\n }\n threadDataStore.setIsDialogVisible(true);\n };\n\n issue = () => {\n if (!window) {\n message.error(\"window不可用\");\n return;\n }\n const currentHostname = window.location.hostname;\n if (currentHostname === \"markdown.pinggu.org\" || currentHostname === \"newmd.pinggu.org\") {\n this.pingGuIssue();\n return;\n }\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n this.html = solveHtml();\n console.log(\"页面内容是\", this.html);\n const content = this.props.content.getContent();\n const query = this.parseQuery(window.location.search.slice(1));\n var timestamp = new Date().valueOf();\n if (!query.callbackurl) {\n message.error(\"回调地址不能为空\");\n return;\n }\n if (!query.sourceUrl) {\n message.error(\"sourceUrl不能为空\");\n return;\n }\n const callbackUrl = decodeURIComponent(query.callbackurl);\n const salt = \"oH4!0I%26a5@+kmC\";\n const sign = md5(salt + callbackUrl + timestamp);\n const sourceUrl = decodeURIComponent(query.sourceUrl);\n const data = {\n html: this.html,\n content: content,\n extend: query.extend,\n t: timestamp,\n sign: sign,\n };\n message.loading(\"上传中..\", 0);\n axios.post(callbackUrl, qs.stringify(data)).then((res) => {\n message.destroy();\n if (res.status !== 200) {\n message.error(\"发布失败,请稍后再试\");\n } else {\n if (res.data.code === 0) {\n window.location.href = sourceUrl;\n message.success(res.data.msg || \"发布成功\");\n } else {\n message.error(res.data.msg || \"发布失败\");\n }\n }\n layout.innerHTML = html; // 恢复现场\n });\n };\n\n parseQuery = (query) => {\n const obj = {};\n if (!query) {\n return obj;\n }\n const arr = query.split(\"&\");\n for (let i = 0; i < arr.length; i++) {\n const kv = arr[i].split(\"=\");\n if (kv.length > 1) {\n // eslint-disable-next-line prefer-destructuring\n obj[kv[0]] = kv[1];\n } else if (kv.length > 0) {\n obj[kv[0]] = \"\";\n }\n }\n return obj;\n };\n\n render() {\n return (\n <>\n \n \n \n \n \n\n \n \n );\n }\n}\n\nexport default Issue;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {message, Tooltip} from \"antd\";\n\nimport {solveHtml, solveJuejinMath, solveJuejinCode, addJuejinSuffix, copySafari} from \"../../utils/converter\";\nimport {LAYOUT_ID, ENTER_DELAY, LEAVE_DELAY} from \"../../utils/constant\";\nimport SvgIcon from \"../../icon\";\nimport \"./Juejin.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"imageHosting\")\n@inject(\"dialog\")\n@observer\nclass Juejin extends Component {\n constructor(props) {\n super(props);\n this.html = \"\";\n }\n\n copyJuejin = () => {\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n solveJuejinMath();\n addJuejinSuffix();\n this.html = solveHtml();\n this.html = solveJuejinCode(this.html);\n copySafari(this.html);\n if (this.html.length > 60000) {\n message.error(\"超过 60000 字符,无法上传稀土掘金\");\n } else {\n message.success(\"已复制且添加 mdnice 排版后缀,感谢宣传,请到稀土掘金粘贴\");\n }\n layout.innerHTML = html; // 恢复现场\n };\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default Juejin;\n","import React, {Component} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport classnames from \"classnames\";\n\nimport PreviewType from \"../component/Sidebar/PreviewType\";\nimport Wechat from \"../component/Sidebar/Wechat\";\nimport Zhihu from \"../component/Sidebar/Zhihu\";\nimport Issue from \"../component/Sidebar/Issue\";\nimport Juejin from \"../component/Sidebar/Juejin\";\nimport \"./Sidebar.css\";\n\n// @inject(\"userInfo\")\n@inject(\"view\")\n@observer\nclass Sidebar extends Component {\n render() {\n const {isImmersiveEditing} = this.props.view;\n const niceSidebarClass = classnames({\n \"nice-sidebar\": true,\n \"nice-sidebar-hide\": isImmersiveEditing,\n });\n return (\n
    \n \n \n \n \n \n
    \n );\n }\n}\n\nexport default Sidebar;\n","import React, {Component} from \"react\";\nimport {Modal} from \"antd\";\n\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport \"codemirror/keymap/sublime\";\nimport \"codemirror/addon/edit/closebrackets\";\nimport \"codemirror/addon/hint/show-hint\";\nimport \"codemirror/addon/hint/show-hint.css\";\nimport \"codemirror/addon/hint/css-hint\";\nimport \"antd/dist/antd.css\";\nimport {observer, inject} from \"mobx-react\";\n\nimport \"../utils/styleMirror.css\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@observer\nclass StyleEditor extends Component {\n constructor(props) {\n super(props);\n this.focus = false;\n }\n\n getStyleInstance = (instance) => {\n if (instance) {\n this.styleEditor = instance.editor;\n this.styleEditor.on(\"keyup\", (cm, event) => {\n if ((event.keyCode >= 65 && event.keyCode <= 90) || event.keyCode === 189) {\n cm.showHint({completeSingle: false});\n }\n });\n }\n };\n\n showConfirm = () => {\n Modal.confirm({\n title: \"是否想使用该模板?\",\n content: \"确定后将复制当前内容和样式并切换为自定义\",\n cancelText: \"取消\",\n okText: \"确定\",\n onOk: () => {\n const {templateNum} = this.props.navbar;\n const {themeList} = this.props.content;\n const {css} = themeList[templateNum];\n const style = `/*自定义样式,实时生效*/\\n\\n` + css;\n this.props.content.setCustomStyle(style);\n this.props.onStyleChange && this.props.onStyleChange(style);\n this.props.navbar.setTemplateNum(themeList.length - 1);\n },\n onCancel: () => {},\n });\n };\n\n changeStyle = (editor) => {\n const {templateNum} = this.props.navbar;\n const {themeList} = this.props.content;\n // focus状态很重要,初始化时被调用则不会进入条件\n if (this.focus) {\n if (templateNum !== themeList.length - 1) {\n this.showConfirm();\n } else {\n const style = editor.getValue();\n this.props.content.setCustomStyle(style);\n this.props.onStyleChange && this.props.onStyleChange(style);\n }\n }\n };\n\n handleFocus = (editor) => {\n this.focus = true;\n this.props.onStyleFocus && this.props.onStyleFocus(editor.getValue());\n };\n\n handleBlur = (editor) => {\n this.focus = false;\n this.props.onStyleBlur && this.props.onStyleBlur(editor.getValue());\n };\n\n render() {\n return (\n \n );\n }\n}\n\nexport default StyleEditor;\n","import React, {Component} from \"react\";\nimport {Menu} from \"antd\";\n\nimport LinkToFoot from \"../component/MenuLeft/Pattern/LinkToFoot\";\nimport Format from \"../component/MenuLeft/Pattern/Format\";\nimport Image from \"../component/MenuLeft/Pattern/Image\";\nimport \"./EditorMenu.css\";\n\nclass EditorMenu extends Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default EditorMenu;\n","/* eslint-disable react/no-did-update-set-state */\n/* eslint-disable react/no-unused-state */\nimport React, {createRef} from \"react\";\nimport {observer, inject} from \"mobx-react\";\nimport {Input, Tooltip} from \"antd\";\n\nimport {ENTER_DELAY, LEAVE_DELAY} from \"../../utils/constant\";\n\nimport SvgIcon from \"../../icon\";\n\nimport \"./SearchBox.css\";\n\nfunction WrappedButton(props) {\n const className = props.className === undefined ? \"\" : props.className;\n return (\n \n \n \n );\n}\n\n@inject(\"content\")\n@inject(\"dialog\")\n@observer\nclass SearchBox extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n replaceText: \"\",\n searchText: \"\",\n isReplaceOpen: false,\n cursor: null,\n caseFold: true,\n };\n this.searchRef = createRef();\n }\n\n /** false means next, true means previous */\n posChange = (direction) => {\n this.clearMarks();\n if (typeof direction !== \"boolean\") {\n return;\n }\n const {cursor, searchText} = this.state;\n if (searchText && cursor) {\n cursor.find(direction);\n if (cursor.atOccurrence) {\n this.highlight();\n } else {\n while (cursor.find(!direction)) {\n // 从头开始寻找\n }\n cursor.find(direction);\n this.highlight();\n }\n }\n };\n\n handleCaseFold = () => {\n const {markdownEditor} = this.props.content;\n this.clearMarks();\n this.setState(\n (prevState) => {\n const caseFold = !prevState.caseFold;\n const cursor = prevState.searchText\n ? markdownEditor.getSearchCursor(prevState.searchText, null, {caseFold: caseFold})\n : null;\n return {caseFold, cursor};\n },\n () => this.posChange(false),\n );\n };\n\n handleScroll = (offset) => {\n const {markdownEditor} = this.props.content;\n const {top} = markdownEditor.getScrollInfo(offset);\n console.log(offset);\n markdownEditor.scrollTo(null, top + offset);\n };\n\n componentWillUnmount = () => {\n this.handleScroll(this.state.isReplaceOpen ? -72 : -40);\n };\n\n componentDidMount = () => {\n this.searchRef.current.focus();\n this.handleScroll(40);\n };\n\n clearMarks = () => {\n const {markdownEditor} = this.props.content;\n // const markers = markdownEditor.getAllMarks();\n // markers.forEach((marker) => marker.clear());\n const cursor = markdownEditor.getCursor();\n markdownEditor.setSelection(cursor);\n };\n\n findContent = (value) => {\n const {markdownEditor} = this.props.content;\n this.setState(\n (prevState) => {\n const cursor = value ? markdownEditor.getSearchCursor(value, null, {caseFold: prevState.caseFold}) : null;\n return {searchText: value, cursor};\n },\n () => this.posChange(false),\n );\n };\n\n highlight = () => {\n // 高亮前需检测是否有匹配\n if (this.state.cursor.atOccurrence) {\n const {markdownEditor} = this.props.content;\n const from = this.state.cursor.from();\n const to = this.state.cursor.to();\n\n // markdownEditor.markText(from, to, {\n // className: \"searchbox-text-highlight\",\n // });\n markdownEditor.setSelection(from, to);\n // 防止搜索框挡住文字\n markdownEditor.scrollIntoView(from, 200);\n }\n };\n\n replace = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n if (selection) {\n // 未选中不进行替换\n markdownEditor.replaceSelection(this.state.replaceText);\n\n const content = markdownEditor.getValue();\n this.props.content.setContent(content);\n this.posChange(false);\n }\n };\n\n replaceAll = () => {\n const {markdownEditor} = this.props.content;\n const selection = markdownEditor.getSelection();\n if (selection && this.state.searchText) {\n const content = markdownEditor.getValue();\n const searchReg = new RegExp(this.state.searchText, \"g\");\n const replaced = content.replace(searchReg, this.state.replaceText);\n\n this.props.content.setContent(replaced);\n }\n };\n\n handelFoldClick = () => {\n this.setState((prevState) => {\n const {isReplaceOpen} = prevState;\n this.handleScroll(isReplaceOpen ? -32 : 32);\n return {isReplaceOpen: !isReplaceOpen};\n });\n };\n\n handleClose = () => {\n this.props.dialog.setSearchOpen(false);\n this.clearMarks();\n };\n\n render() {\n const {isReplaceOpen} = this.state;\n\n return (\n
    \n
    \n \n this.findContent(e.target.value)}\n onPressEnter={() => this.posChange(false)}\n ref={this.searchRef}\n />\n \n this.posChange(true)}\n tipText=\"上一个\"\n />\n this.posChange(false)} tipText=\"下一个\" />\n \n
    \n
    \n {\n this.setState({replaceText: e.target.value});\n }}\n onPressEnter={this.replace}\n />\n \n \n
    \n
    \n );\n }\n}\n\nexport default SearchBox;\n","// 检测插件是否安装\nexport default {\n mathjax: false,\n};\n","import React, {Component} from \"react\";\nimport axios from \"axios\";\nimport CodeMirror from \"@uiw/react-codemirror\";\nimport \"codemirror/addon/search/searchcursor\";\nimport \"codemirror/keymap/sublime\";\nimport \"antd/dist/antd.css\";\nimport {observer, inject} from \"mobx-react\";\nimport classnames from \"classnames\";\nimport throttle from \"lodash.throttle\";\n\nimport Dialog from \"./layout/Dialog\";\nimport Navbar from \"./layout/Navbar\";\nimport Footer from \"./layout/Footer\";\nimport Sidebar from \"./layout/Sidebar\";\nimport StyleEditor from \"./layout/StyleEditor\";\nimport EditorMenu from \"./layout/EditorMenu\";\nimport SearchBox from \"./component/SearchBox\";\nimport threadDataStore from \"./store/pinggu/threadDataStore\";\n\nimport {default as contentDefault} from \"./template/content.md\";\n\nimport \"./App.css\";\nimport \"./utils/mdMirror.css\";\n\nimport {\n LAYOUT_ID,\n BOX_ID,\n IMAGE_HOSTING_NAMES,\n IMAGE_HOSTING_TYPE,\n MJX_DATA_FORMULA,\n MJX_DATA_FORMULA_TYPE,\n MAX_MD_NUMBER,\n THROTTLE_MATHJAX_TIME,\n THROTTLE_MD_RENDER_TIME, PING_GU_API_PREFIX,\n} from \"./utils/constant\";\nimport {markdownParser, updateMathjax} from \"./utils/helper\";\nimport pluginCenter from \"./utils/pluginCenter\";\nimport appContext from \"./utils/appContext\";\nimport {uploadAdaptor} from \"./utils/imageHosting\";\nimport bindHotkeys, {betterTab, rightClick} from \"./utils/hotkey\";\nimport {message} from \"antd\";\nimport json from \"highlight.js/lib/languages/json\";\n\n@inject(\"content\")\n@inject(\"navbar\")\n@inject(\"footer\")\n@inject(\"view\")\n@inject(\"dialog\")\n@inject(\"imageHosting\")\n@observer\nclass App extends Component {\n constructor(props) {\n super(props);\n this.scale = 1;\n this.handleUpdateMathjax = throttle(updateMathjax, THROTTLE_MATHJAX_TIME);\n this.handleThrottleChange = throttle(this.handleChange, THROTTLE_MD_RENDER_TIME);\n this.state = {\n focus: false,\n };\n }\n\n componentDidMount() {\n document.addEventListener(\"fullscreenchange\", this.solveScreenChange);\n document.addEventListener(\"webkitfullscreenchange\", this.solveScreenChange);\n document.addEventListener(\"mozfullscreenchange\", this.solveScreenChange);\n document.addEventListener(\"MSFullscreenChange\", this.solveScreenChange);\n try {\n window.MathJax = {\n tex: {\n inlineMath: [[\"$\", \"$\"]],\n displayMath: [[\"$$\", \"$$\"]],\n tags: \"ams\",\n },\n svg: {\n fontCache: \"none\",\n },\n options: {\n renderActions: {\n addMenu: [0, \"\", \"\"],\n addContainer: [\n 190,\n (doc) => {\n for (const math of doc.math) {\n this.addContainer(math, doc);\n }\n },\n this.addContainer,\n ],\n },\n },\n };\n // eslint-disable-next-line\n require(\"mathjax/es5/tex-svg-full\");\n pluginCenter.mathjax = true;\n } catch (e) {\n console.log(e);\n }\n if (!this.checkNeedToEdit()) {\n this.setEditorContent();\n }\n this.getPingGuContent();\n this.setCustomImageHosting();\n }\n\n componentDidUpdate() {\n if (pluginCenter.mathjax) {\n this.handleUpdateMathjax();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"fullscreenchange\", this.solveScreenChange);\n document.removeEventListener(\"webkitfullscreenchange\", this.solveScreenChange);\n document.removeEventListener(\"mozfullscreenchange\", this.solveScreenChange);\n document.removeEventListener(\"MSFullscreenChange\", this.solveScreenChange);\n }\n\n setCustomImageHosting = () => {\n if (this.props.useImageHosting === undefined) {\n return;\n }\n const {url, name, isSmmsOpen, isQiniuyunOpen, isAliyunOpen, isGiteeOpen, isGitHubOpen} = this.props.useImageHosting;\n console.log(\"图片\", url, name, isSmmsOpen, isQiniuyunOpen, isAliyunOpen, isGiteeOpen, isGitHubOpen);\n if (name) {\n this.props.imageHosting.setHostingUrl(url);\n this.props.imageHosting.setHostingName(name);\n this.props.imageHosting.addImageHosting(name);\n }\n if (isSmmsOpen) {\n this.props.imageHosting.addImageHosting(IMAGE_HOSTING_NAMES.smms);\n }\n if (isAliyunOpen) {\n this.props.imageHosting.addImageHosting(IMAGE_HOSTING_NAMES.aliyun);\n }\n if (isQiniuyunOpen) {\n this.props.imageHosting.addImageHosting(IMAGE_HOSTING_NAMES.qiniuyun);\n }\n if (isGiteeOpen) {\n this.props.imageHosting.addImageHosting(IMAGE_HOSTING_NAMES.gitee);\n }\n if (isGitHubOpen) {\n this.props.imageHosting.addImageHosting(IMAGE_HOSTING_NAMES.github);\n }\n\n // 第一次进入没有默认图床时\n if (window.localStorage.getItem(IMAGE_HOSTING_TYPE) === null) {\n let type;\n if (name) {\n type = name;\n } else if (isSmmsOpen) {\n type = IMAGE_HOSTING_NAMES.smms;\n } else if (isAliyunOpen) {\n type = IMAGE_HOSTING_NAMES.aliyun;\n } else if (isQiniuyunOpen) {\n type = IMAGE_HOSTING_NAMES.qiniuyun;\n } else if (isGiteeOpen) {\n type = IMAGE_HOSTING_NAMES.isGitee;\n }\n this.props.imageHosting.setType(type);\n window.localStorage.setItem(IMAGE_HOSTING_TYPE, type);\n }\n };\n\n setEditorContent = () => {\n console.log(\"当前内容是\", this.props.content.getContent());\n const {defaultText} = this.props;\n const c = this.props.content.getContent();\n if (c && c.indexOf(\"![](https://my-wechat.mdnice.com/logo.svg)\") !== -1) {\n this.props.content.setContent(contentDefault);\n } else if (defaultText) {\n this.props.content.setContent(defaultText);\n }\n };\n\n // eslint-disable-next-line react/sort-comp\n checkNeedToEdit = () => {\n if (!window) {\n return false;\n }\n const query = this.parseQuery(window.location.search.slice(1));\n if (!query.contenturl) {\n return false;\n }\n const contenturl = decodeURIComponent(query.contenturl);\n return this.getContent(contenturl);\n };\n\n sleep = (ms) => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n };\n\n // eslint-disable-next-line react/sort-comp,consistent-return\n getPingGuContent = async (retryCount = 3) => {\n // 获取论坛markdown要编辑的内容\n if (!window) {\n return false;\n }\n const currentHostname = window.location.hostname;\n if (currentHostname !== \"markdown.pinggu.org\" && currentHostname !== \"newmd.pinggu.org\") {\n console.log(\"域名不是论坛,不获取论坛内容\");\n return false;\n }\n const query = this.parseQuery(window.location.search.slice(1));\n if (!query.action) {\n window.location.href = \"http://bbs.pinggu.org\";\n return false;\n }\n if (query.action === \"newthread\") {\n // 发新帖,获取帖子相关参数\n const response = await axios.get(`${PING_GU_API_PREFIX}/markdown.php?action=newthread&op=init&fid=${query.fid}`);\n if (response.status !== 200 || response.data.code !== \"success\") {\n if (retryCount > 0) {\n await this.sleep(500);\n return this.getPingGuContent(retryCount - 1);\n }\n window.location.href = \"http://bbs.pinggu.org\";\n return false;\n }\n threadDataStore.setThreadtypes(response.data.threadtypes);\n threadDataStore.setAllowSetPostTime(response.data.allowSetPostTime);\n return false;\n }\n\n if (query.action === \"reply\") {\n // 回复帖子,获取相关参数\n try {\n const response = await axios.get(\n `${PING_GU_API_PREFIX}/markdown.php?action=reply&op=init&fid=${query.fid}&tid=${query.tid}`,\n );\n\n if (response.status !== 200 || response.data.code !== \"success\") {\n message.error(response.data.msg);\n return false;\n }\n return false;\n } catch (e) {\n console.log(e);\n return false;\n }\n }\n\n // 编辑的话就获取帖子内容\n if (query.action !== \"edit\") {\n return false;\n }\n\n // 编辑内容,获取帖子内容\n const response = await axios.get(\n `${PING_GU_API_PREFIX}/markdown.php?action=edit&fid=${query.fid}&tid=${query.tid}&pid=${query.pid}&op=init`,\n );\n if (response.status !== 200 || response.data.code !== \"success\") {\n if (retryCount > 0) {\n await this.sleep(500);\n return this.getPingGuContent(retryCount - 1);\n }\n window.location.href = \"http://bbs.pinggu.org\";\n return false;\n }\n threadDataStore.initializeFromResponse(response);\n\n if (!response.data.markdown) {\n return false;\n }\n // 处理\n try {\n console.log(\"开始解析\");\n const data = JSON.parse(response.data.markdown);\n console.log(\"解析的内容是\", data);\n if (data.text) {\n this.props.content.setContent(data.text);\n return true;\n }\n } catch (e) {\n console.log(\"内容解析错误\", e);\n }\n // json.load(response.data.markdown);\n this.props.content.setContent(response.data.markdown);\n // this.props.content.setContent(\"\");\n return true;\n };\n\n getContent = async (contenturl) => {\n const response = await axios.get(contenturl);\n if (response.status !== 200) {\n return false;\n }\n if (response.data.code !== 0) {\n return false;\n }\n if (response.data.data) {\n this.props.content.setContent(response.data.data);\n return true;\n }\n return false;\n };\n\n parseQuery = (query) => {\n const obj = {};\n if (!query) {\n return obj;\n }\n const arr = query.split(\"&\");\n for (let i = 0; i < arr.length; i++) {\n const kv = arr[i].split(\"=\");\n if (kv.length > 1) {\n // eslint-disable-next-line prefer-destructuring\n obj[kv[0]] = kv[1];\n } else if (kv.length > 0) {\n obj[kv[0]] = \"\";\n }\n }\n return obj;\n };\n\n setCurrentIndex(index) {\n this.index = index;\n }\n\n solveScreenChange = () => {\n const {isImmersiveEditing} = this.props.view;\n this.props.view.setImmersiveEditing(!isImmersiveEditing);\n };\n\n getInstance = (instance) => {\n instance.editor.on(\"inputRead\", function(cm, event) {\n if (event.origin === \"paste\") {\n var text = event.text[0]; // pasted string\n var new_text = \"\"; // any operations here\n cm.refresh();\n const {length} = cm.getSelections();\n // my first idea was\n // note: for multiline strings may need more complex calculations\n cm.replaceRange(new_text, event.from, {line: event.from.line, ch: event.from.ch + text.length});\n // first solution did'nt work (before i guess to call refresh) so i tried that way, works too\n if (length === 1) {\n cm.execCommand(\"undo\");\n }\n // cm.setCursor(event.from);\n cm.replaceSelection(new_text);\n }\n });\n if (instance) {\n this.props.content.setMarkdownEditor(instance.editor);\n }\n };\n\n handleScroll = () => {\n if (this.props.navbar.isSyncScroll) {\n const {markdownEditor} = this.props.content;\n const cmData = markdownEditor.getScrollInfo();\n const editorToTop = cmData.top;\n const editorScrollHeight = cmData.height - cmData.clientHeight;\n this.scale = (this.previewWrap.offsetHeight - this.previewContainer.offsetHeight + 55) / editorScrollHeight;\n if (this.index === 1) {\n this.previewContainer.scrollTop = editorToTop * this.scale;\n } else {\n this.editorTop = this.previewContainer.scrollTop / this.scale;\n markdownEditor.scrollTo(null, this.editorTop);\n }\n }\n };\n\n handleChange = (editor) => {\n if (this.state.focus) {\n const content = editor.getValue();\n if (content.length > MAX_MD_NUMBER) {\n message.error(`字符数超过 ${MAX_MD_NUMBER}`);\n return;\n }\n this.props.content.setContent(content);\n this.props.onTextChange && this.props.onTextChange(content);\n }\n };\n\n handleFocus = (editor) => {\n this.setState({\n focus: true,\n });\n this.props.onTextFocus && this.props.onTextFocus(editor.getValue());\n };\n\n handleBlur = (editor) => {\n this.setState({\n focus: false,\n });\n this.props.onTextBlur && this.props.onTextBlur(editor.getValue());\n };\n\n getStyleInstance = (instance) => {\n if (instance) {\n this.styleEditor = instance.editor;\n this.styleEditor.on(\"keyup\", (cm, e) => {\n if ((e.keyCode >= 65 && e.keyCode <= 90) || e.keyCode === 189) {\n cm.showHint(e);\n }\n });\n }\n };\n\n handleDrop = (instance, e) => {\n // e.preventDefault();\n // console.log(e.dataTransfer.files[0]);\n if (!(e.dataTransfer && e.dataTransfer.files)) {\n return;\n }\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\n // console.log(e.dataTransfer.files[i]);\n uploadAdaptor({file: e.dataTransfer.files[i], content: this.props.content});\n }\n };\n\n handlePaste = (instance, e) => {\n const cbData = e.clipboardData;\n\n const insertPasteContent = (cm, content) => {\n const {length} = cm.getSelections();\n cm.replaceSelections(Array(length).fill(content));\n this.setState(\n {\n focus: true,\n },\n () => {\n this.handleThrottleChange(cm);\n },\n );\n };\n\n if (e.clipboardData && e.clipboardData.files) {\n for (let i = 0; i < e.clipboardData.files.length; i++) {\n uploadAdaptor({file: e.clipboardData.files[i], content: this.props.content});\n }\n }\n\n if (cbData) {\n const html = cbData.getData(\"text/html\");\n const text = cbData.getData(\"TEXT\");\n insertPasteContent(instance, text);\n if (html) {\n this.props.footer.setPasteHtmlChecked(true);\n this.props.footer.setPasteHtml(html);\n this.props.footer.setPasteText(text);\n } else {\n this.props.footer.setPasteHtmlChecked(false);\n }\n }\n };\n\n addContainer(math, doc) {\n const tag = \"span\";\n const spanClass = math.display ? \"span-block-equation\" : \"span-inline-equation\";\n const cls = math.display ? \"block-equation\" : \"inline-equation\";\n math.typesetRoot.className = cls;\n math.typesetRoot.setAttribute(MJX_DATA_FORMULA, math.math);\n math.typesetRoot.setAttribute(MJX_DATA_FORMULA_TYPE, cls);\n math.typesetRoot = doc.adaptor.node(tag, {class: spanClass, style: \"cursor:pointer\"}, [math.typesetRoot]);\n }\n\n render() {\n const {previewType} = this.props.navbar;\n const {isEditAreaOpen, isPreviewAreaOpen, isStyleEditorOpen, isImmersiveEditing} = this.props.view;\n const {isSearchOpen} = this.props.dialog;\n\n const parseHtml = markdownParser.render(this.props.content.content);\n\n const mdEditingClass = classnames({\n \"nice-md-editing\": !isImmersiveEditing,\n \"nice-md-editing-immersive\": isImmersiveEditing,\n \"nice-md-editing-hide\": !isEditAreaOpen,\n });\n\n const styleEditingClass = classnames({\n \"nice-style-editing\": true,\n \"nice-style-editing-hide\": isImmersiveEditing,\n });\n\n const richTextClass = classnames({\n \"nice-marked-text\": true,\n \"nice-marked-text-pc\": previewType === \"pc\",\n \"nice-marked-text-hide\": isImmersiveEditing || !isPreviewAreaOpen,\n });\n\n const richTextBoxClass = classnames({\n \"nice-wx-box\": true,\n \"nice-wx-box-pc\": previewType === \"pc\",\n });\n\n const textContainerClass = classnames({\n \"nice-text-container\": !isImmersiveEditing,\n \"nice-text-container-immersive\": isImmersiveEditing,\n });\n\n return (\n \n {({defaultTitle, onStyleChange, onStyleBlur, onStyleFocus, token}) => (\n
    \n \n
    \n
    this.setCurrentIndex(1, e)}>\n {isSearchOpen && }\n \n
    \n
    this.setCurrentIndex(2, e)}>\n \n {\n this.previewContainer = node;\n }}\n >\n {\n this.previewWrap = node;\n }}\n />\n
    \n
    \n\n {isStyleEditorOpen && (\n
    \n \n
    \n )}\n\n \n \n
    \n
    \n
    \n )}\n \n );\n }\n}\n\nexport default App;\n","import {observable, action} from \"mobx\";\nimport {CONTENT, STYLE, MARKDOWN_THEME_ID, BASIC_THEME_ID, STYLE_LABELS, THEME_LIST} from \"../utils/constant\";\nimport {replaceStyle, addStyleLabel} from \"../utils/helper\";\nimport TEMPLATE from \"../template/index\";\n\nclass Content {\n @observable content;\n\n @observable style;\n\n @observable themeList;\n\n @observable markdownEditor;\n\n @action\n setThemeList = (themeList) => {\n this.themeList = themeList;\n window.localStorage.setItem(THEME_LIST, JSON.stringify(themeList));\n };\n\n @action\n setMarkdownEditor = (markdownEditor) => {\n this.markdownEditor = markdownEditor;\n };\n\n @action\n setContent = (content) => {\n this.content = content;\n window.localStorage.setItem(CONTENT, content);\n };\n\n @action\n getContent = () => {\n if (this.content) {\n return this.content;\n }\n return window.localStorage.getItem(CONTENT);\n };\n\n @action\n setStyle = (style) => {\n this.style = style;\n replaceStyle(MARKDOWN_THEME_ID, style);\n };\n\n // 自定义样式\n @action\n setCustomStyle = (style = \"\") => {\n // 如果传入则更新\n if (style) {\n window.localStorage.setItem(STYLE, style);\n }\n this.style = window.localStorage.getItem(STYLE);\n replaceStyle(MARKDOWN_THEME_ID, this.style);\n };\n}\n\nconst store = new Content();\n\n// 如果为空先把数据放进去\nif (window.localStorage.getItem(CONTENT) === null) {\n window.localStorage.setItem(CONTENT, TEMPLATE.content);\n}\nif (!window.localStorage.getItem(STYLE)) {\n window.localStorage.setItem(STYLE, TEMPLATE.custom);\n}\nif (!window.localStorage.getItem(THEME_LIST)) {\n window.localStorage.setItem(\n THEME_LIST,\n JSON.stringify([\n {themeId: \"normal\", name: \"默认主题\", css: TEMPLATE.normal},\n {themeId: \"custom\", name: \"自定义\", css: TEMPLATE.custom},\n ]),\n );\n}\n\nstore.themeList = JSON.parse(window.localStorage.getItem(THEME_LIST));\n\n// 在head中添加style标签\naddStyleLabel(STYLE_LABELS);\n\n// 初始化整体主题\nreplaceStyle(BASIC_THEME_ID, TEMPLATE.basic);\n\nstore.content = window.localStorage.getItem(CONTENT);\n\nexport default store;\n","// mobx\nimport {observable, action} from \"mobx\";\n\nclass UserInfo {\n // 观察值\n @observable userInfo = {};\n\n @observable userRepo = [];\n\n @action\n setUserInfo = (userInfo) => {\n this.userInfo = userInfo;\n };\n\n @action\n setUserRepo = (userRepoList) => {\n this.userRepo = userRepoList;\n };\n}\n\nconst userInfo = new UserInfo();\n\nexport default userInfo;\n","import {observable, action} from \"mobx\";\nimport {\n TEMPLATE_NUM,\n CODE_NUM,\n CODE_THEME_ID,\n CODE_OPTIONS,\n PREVIEW_TYPE,\n IS_SYNC_SCROLL,\n IS_CONTAIN_IMG_NAME,\n IS_MAC_CODE,\n} from \"../utils/constant\";\nimport TEMPLATE from \"../template/index\";\nimport {replaceStyle} from \"../utils/helper\";\n\nclass Navbar {\n // 是否同步滚动\n @observable isSyncScroll = true;\n\n // 是否保留图片名称\n @observable isContainImgName = false;\n\n // 主题序号\n @observable templateNum;\n\n // 代码主题序号\n @observable codeNum;\n\n // 是否为 Mac 风格代码\n @observable isMacCode = true;\n\n // 预览类型\n @observable previewType;\n\n @action\n setSyncScroll = (isSyncScroll) => {\n this.isSyncScroll = isSyncScroll;\n window.localStorage.setItem(IS_SYNC_SCROLL, isSyncScroll);\n };\n\n @action\n setContainImgName = (isContainImgName) => {\n this.isContainImgName = isContainImgName;\n window.localStorage.setItem(IS_CONTAIN_IMG_NAME, isContainImgName);\n };\n\n @action\n setTemplateNum = (templateNum) => {\n this.templateNum = templateNum;\n window.localStorage.setItem(TEMPLATE_NUM, templateNum);\n };\n\n @action\n setCodeNum = (codeNum, isMacCode) => {\n this.codeNum = codeNum;\n window.localStorage.setItem(CODE_NUM, codeNum);\n // 更新style\n const {id, macId} = CODE_OPTIONS[codeNum];\n // Mac 风格代码\n if (isMacCode) {\n replaceStyle(CODE_THEME_ID, TEMPLATE.code[macId]);\n } else {\n replaceStyle(CODE_THEME_ID, TEMPLATE.code[id]);\n }\n };\n\n @action\n setMacCode = (isMacCode) => {\n this.isMacCode = isMacCode;\n window.localStorage.setItem(IS_MAC_CODE, isMacCode);\n };\n\n @action\n setPreviewType = (previewType) => {\n this.previewType = previewType;\n window.localStorage.setItem(PREVIEW_TYPE, previewType);\n };\n}\n\nconst store = new Navbar();\n\n// 如果为空先把数据放进去\nif (!window.localStorage.getItem(TEMPLATE_NUM)) {\n window.localStorage.setItem(TEMPLATE_NUM, 0);\n}\n\n// 如果为空先把数据放进去\nif (!window.localStorage.getItem(CODE_NUM)) {\n window.localStorage.setItem(CODE_NUM, 0);\n}\n\nif (!window.localStorage.getItem(PREVIEW_TYPE)) {\n window.localStorage.setItem(PREVIEW_TYPE, \"pc\");\n}\n\nif (!window.localStorage.getItem(IS_SYNC_SCROLL)) {\n window.localStorage.setItem(IS_SYNC_SCROLL, true);\n}\n\nif (!window.localStorage.getItem(IS_CONTAIN_IMG_NAME)) {\n window.localStorage.setItem(IS_CONTAIN_IMG_NAME, false);\n}\n\nif (!window.localStorage.getItem(IS_MAC_CODE)) {\n window.localStorage.setItem(IS_MAC_CODE, false);\n}\n\n// 获取之前选择的主题状态\nstore.templateNum = parseInt(window.localStorage.getItem(TEMPLATE_NUM), 10);\n\nif (parseInt(window.localStorage.getItem(CODE_NUM), 10) >= CODE_OPTIONS.length) {\n window.localStorage.setItem(CODE_NUM, 0);\n}\nstore.codeNum = parseInt(window.localStorage.getItem(CODE_NUM), 10);\n\nstore.previewType = window.localStorage.getItem(PREVIEW_TYPE);\nstore.isSyncScroll = window.localStorage.getItem(IS_SYNC_SCROLL) === \"true\";\nstore.isContainImgName = window.localStorage.getItem(IS_CONTAIN_IMG_NAME) === \"true\";\nstore.isMacCode = window.localStorage.getItem(IS_MAC_CODE) === \"true\";\n\n// 初始化代码主题\nconst {macId, id} = CODE_OPTIONS[store.codeNum];\nif (store.isMacCode) {\n replaceStyle(CODE_THEME_ID, TEMPLATE.code[macId]);\n} else {\n replaceStyle(CODE_THEME_ID, TEMPLATE.code[id]);\n}\n\nexport default store;\n","import {observable, action} from \"mobx\";\n\nclass Footer {\n // 是否检测到富文本粘贴\n @observable isPasteHtmlChecked = false;\n\n // 粘贴的富文本\n @observable pasteHtml = \"\";\n\n // 粘贴的普通文本\n @observable pasteText = \"\";\n\n @action\n setPasteHtmlChecked = (isPasteHtmlChecked) => {\n this.isPasteHtmlChecked = isPasteHtmlChecked;\n };\n\n @action\n setPasteHtml = (pasteHtml) => {\n this.pasteHtml = pasteHtml;\n };\n\n @action\n setPasteText = (pasteText) => {\n this.pasteText = pasteText;\n };\n}\n\nconst store = new Footer();\n\nexport default store;\n","import {observable, action} from \"mobx\";\n\nclass Dialog {\n @observable isImageOpen = false;\n\n @observable isLinkOpen = false;\n\n @observable isAboutOpen = false;\n\n @observable isVersionOpen = false;\n\n @observable isFormOpen = false;\n\n @observable isHistoryOpen = false;\n\n @observable isSearchOpen = false;\n\n @observable isSitDownOpen = false;\n\n @observable isTutorialOpen = false;\n\n @observable tutorialTitle;\n\n @observable tutorialContent;\n\n @observable tutorialPicture;\n\n @action\n setImageOpen = (isImageOpen) => {\n this.isImageOpen = isImageOpen;\n };\n\n @action\n setLinkOpen = (isLinkOpen) => {\n this.isLinkOpen = isLinkOpen;\n };\n\n @action\n setAboutOpen = (isAboutOpen) => {\n this.isAboutOpen = isAboutOpen;\n };\n\n @action\n setVersionOpen = (isVersionOpen) => {\n this.isVersionOpen = isVersionOpen;\n };\n\n @action\n setFormOpen = (isFormOpen) => {\n this.isFormOpen = isFormOpen;\n };\n\n @action\n setHistoryOpen = (isHistoryOpen) => {\n this.isHistoryOpen = isHistoryOpen;\n };\n\n @action\n setSearchOpen = (isSearchOpen) => {\n this.isSearchOpen = isSearchOpen;\n };\n\n @action\n setSitDownOpen = (isSitDownOpen) => {\n this.isSitDownOpen = isSitDownOpen;\n };\n\n @action\n setTutorialOpen = (isTutorialOpen) => {\n this.isTutorialOpen = isTutorialOpen;\n };\n\n @action\n setTutorialTitle = (tutorialTitle) => {\n this.tutorialTitle = tutorialTitle;\n };\n\n @action\n setTutorialContent = (tutorialContent) => {\n this.tutorialContent = tutorialContent;\n };\n\n @action\n setTutorialPicture = (tutorialPicture) => {\n this.tutorialPicture = tutorialPicture;\n };\n}\n\nconst store = new Dialog();\n\nexport default store;\n","import {observable, action} from \"mobx\";\n\nclass View {\n @observable isEditAreaOpen = true;\n\n @observable isPreviewAreaOpen = true;\n\n @observable isStyleEditorOpen = false;\n\n @observable isImmersiveEditing = false;\n\n @action\n setEditAreaOpen = (isEditAreaOpen) => {\n this.isEditAreaOpen = isEditAreaOpen;\n };\n\n @action\n setPreviewAreaOpen = (isPreviewAreaOpen) => {\n this.isPreviewAreaOpen = isPreviewAreaOpen;\n };\n\n @action\n setStyleEditorOpen = (isStyleEditorOpen) => {\n this.isStyleEditorOpen = isStyleEditorOpen;\n };\n\n @action\n setImmersiveEditing = (isImmersiveEditing) => {\n this.isImmersiveEditing = isImmersiveEditing;\n };\n}\n\nconst store = new View();\n\nexport default store;\n","import React, {Component} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {Result} from \"antd\";\nimport {Provider} from \"mobx-react\";\n\nimport \"./index.css\";\n\nimport App from \"./App\";\n\nimport content from \"./store/content\";\nimport userInfo from \"./store/userInfo\";\nimport navbar from \"./store/navbar\";\nimport footer from \"./store/footer\";\nimport dialog from \"./store/dialog\";\nimport imageHosting from \"./store/imageHosting\";\nimport view from \"./store/view\";\n\nimport {isPC} from \"./utils/helper\";\nimport appContext from \"./utils/appContext\";\nimport SvgIcon from \"./icon\";\nimport {solveWeChatMath, solveZhihuMath, solveHtml} from \"./utils/converter\";\nimport {LAYOUT_ID} from \"./utils/constant\";\n\nclass Lib extends Component {\n getWeChatHtml() {\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n solveWeChatMath();\n const res = solveHtml();\n layout.innerHTML = html; // 恢复现场\n return res;\n }\n\n getZhihuHtml() {\n const layout = document.getElementById(LAYOUT_ID); // 保护现场\n const html = layout.innerHTML;\n solveZhihuMath();\n const res = solveHtml();\n layout.innerHTML = html; // 恢复现场\n return res;\n }\n\n render() {\n const {\n defaultTitle,\n defaultText,\n onTextChange,\n onTextBlur,\n onTextFocus,\n onStyleChange,\n onStyleBlur,\n onStyleFocus,\n token,\n useImageHosting,\n } = this.props;\n const appCtx = {\n defaultTitle,\n defaultText,\n onTextChange,\n onTextBlur,\n onTextFocus,\n onStyleChange,\n onStyleBlur,\n onStyleFocus,\n token,\n useImageHosting,\n };\n return (\n \n {isPC() ? (\n \n \n \n ) : (\n } title=\"请使用 PC 端打开编辑器工具\" />\n )}\n \n );\n }\n}\n\nconst style = {\n svgIcon: {\n width: \"72px\",\n height: \"72px\",\n },\n};\n\nLib.defaultProps = {\n defaultTitle: \"\",\n defaultText: \"\",\n onTextChange: () => {},\n onTextBlur: () => {},\n onTextFocus: () => {},\n onStyleChange: () => {},\n onStyleBlur: () => {},\n onStyleFocus: () => {},\n token: \"\",\n // eslint-disable-next-line react/default-props-match-prop-types\n useImageHosting: {\n url: \"\",\n name: \"\",\n isSmmsOpen: true,\n isQiniuyunOpen: true,\n isAliyunOpen: true,\n isGiteeOpen: true,\n isGitHubOpen: true,\n },\n};\nLib.propTypes = {\n defaultTitle: PropTypes.string,\n defaultText: PropTypes.string,\n onTextChange: PropTypes.func,\n onTextBlur: PropTypes.func,\n onTextFocus: PropTypes.func,\n onStyleChange: PropTypes.func,\n onStyleBlur: PropTypes.func,\n onStyleFocus: PropTypes.func,\n token: PropTypes.string,\n // eslint-disable-next-line react/require-default-props\n useImageHosting: PropTypes.shape({\n url: PropTypes.string,\n name: PropTypes.string,\n isSmmsOpen: PropTypes.bool,\n isQiniuyunOpen: PropTypes.bool,\n isAliyunOpen: PropTypes.bool,\n isGiteeOpen: PropTypes.bool,\n isGitHubOpen: PropTypes.bool,\n }),\n};\n\nexport default Lib;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit http://bit.ly/CRA-PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See http://bit.ly/CRA-PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport Lib from \"./Lib\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n ,\n document.getElementById(\"root\"),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.register();\n"],"sourceRoot":""}