├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .postcssrc.js ├── .prettierrc ├── README.md ├── build ├── build.js ├── check-versions.js ├── dll │ ├── dll.dllVendor.js │ └── dll.dllVendor.manifest.json ├── logo.png ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js ├── webpack.dll.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── dist ├── index.html └── static │ ├── css │ └── app.b8009c8581a856c1f1791fed3e5b200b.css │ ├── formula │ ├── katex │ │ ├── fonts │ │ │ ├── KaTeX_AMS-Regular.woff2 │ │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ │ ├── KaTeX_Main-Bold.woff2 │ │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ │ ├── KaTeX_Main-Italic.woff2 │ │ │ ├── KaTeX_Main-Regular.woff2 │ │ │ ├── KaTeX_Math-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ │ ├── KaTeX_Script-Regular.woff2 │ │ │ ├── KaTeX_Size1-Regular.woff2 │ │ │ ├── KaTeX_Size2-Regular.woff2 │ │ │ ├── KaTeX_Size3-Regular.woff2 │ │ │ ├── KaTeX_Size4-Regular.woff2 │ │ │ └── KaTeX_Typewriter-Regular.woff2 │ │ ├── katex.css │ │ ├── katex.js │ │ └── katex.min.js │ ├── mathjax-config-cutom.js │ └── mathjax │ │ ├── MathJax.js │ │ ├── config │ │ ├── AM_CHTML-full.js │ │ ├── AM_CHTML.js │ │ ├── AM_HTMLorMML-full.js │ │ ├── AM_HTMLorMML.js │ │ ├── AM_SVG-full.js │ │ ├── AM_SVG.js │ │ ├── Accessible-full.js │ │ ├── Accessible.js │ │ ├── MML_CHTML-full.js │ │ ├── MML_CHTML.js │ │ ├── MML_HTMLorMML-full.js │ │ ├── MML_HTMLorMML.js │ │ ├── MML_SVG-full.js │ │ ├── MML_SVG.js │ │ ├── MMLorHTML.js │ │ ├── Safe.js │ │ ├── TeX-AMS-MML_HTMLorMML-full.js │ │ ├── TeX-AMS-MML_HTMLorMML.js │ │ ├── TeX-AMS-MML_SVG-full.js │ │ ├── TeX-AMS-MML_SVG.js │ │ ├── TeX-AMS_CHTML-full.js │ │ ├── TeX-AMS_CHTML.js │ │ ├── TeX-AMS_HTML-full.js │ │ ├── TeX-AMS_HTML.js │ │ ├── TeX-AMS_SVG-full.js │ │ ├── TeX-AMS_SVG.js │ │ ├── TeX-MML-AM_CHTML-full.js │ │ ├── TeX-MML-AM_CHTML.js │ │ ├── TeX-MML-AM_HTMLorMML-full.js │ │ ├── TeX-MML-AM_HTMLorMML.js │ │ ├── TeX-MML-AM_SVG-full.js │ │ ├── TeX-MML-AM_SVG.js │ │ ├── default.js │ │ └── local │ │ │ └── local.js │ │ ├── extensions │ │ ├── AssistiveMML.js │ │ ├── CHTML-preview.js │ │ ├── FontWarnings.js │ │ ├── HTML-CSS │ │ │ └── handle-floats.js │ │ ├── HelpDialog.js │ │ ├── MatchWebFonts.js │ │ ├── MathEvents.js │ │ ├── MathML │ │ │ ├── content-mathml.js │ │ │ └── mml3.js │ │ ├── MathMenu.js │ │ ├── MathZoom.js │ │ ├── Safe.js │ │ ├── TeX │ │ │ ├── AMScd.js │ │ │ ├── AMSmath.js │ │ │ ├── AMSsymbols.js │ │ │ ├── HTML.js │ │ │ ├── action.js │ │ │ ├── autobold.js │ │ │ ├── autoload-all.js │ │ │ ├── bbox.js │ │ │ ├── begingroup.js │ │ │ ├── boldsymbol.js │ │ │ ├── cancel.js │ │ │ ├── color.js │ │ │ ├── enclose.js │ │ │ ├── extpfeil.js │ │ │ ├── mathchoice.js │ │ │ ├── mediawiki-texvc.js │ │ │ ├── mhchem.js │ │ │ ├── mhchem3 │ │ │ │ └── mhchem.js │ │ │ ├── newcommand.js │ │ │ ├── noErrors.js │ │ │ ├── noUndefined.js │ │ │ ├── unicode.js │ │ │ └── verb.js │ │ ├── a11y │ │ │ ├── accessibility-menu.js │ │ │ ├── auto-collapse.js │ │ │ ├── collapsible.js │ │ │ ├── explorer.js │ │ │ ├── invalid_keypress.mp3 │ │ │ ├── invalid_keypress.ogg │ │ │ ├── mathjax-sre.js │ │ │ ├── mathmaps │ │ │ │ ├── functions │ │ │ │ │ ├── algebra.js │ │ │ │ │ ├── elementary.js │ │ │ │ │ ├── functions_spanish.js │ │ │ │ │ ├── hyperbolic.js │ │ │ │ │ └── trigonometry.js │ │ │ │ ├── mathmaps_ie.js │ │ │ │ ├── symbols │ │ │ │ │ ├── greek-capital.js │ │ │ │ │ ├── greek-mathfonts.js │ │ │ │ │ ├── greek-scripts.js │ │ │ │ │ ├── greek-small.js │ │ │ │ │ ├── greek-symbols.js │ │ │ │ │ ├── hebrew_letters.js │ │ │ │ │ ├── latin-lower-double-accent.js │ │ │ │ │ ├── latin-lower-normal.js │ │ │ │ │ ├── latin-lower-phonetic.js │ │ │ │ │ ├── latin-lower-single-accent.js │ │ │ │ │ ├── latin-mathfonts.js │ │ │ │ │ ├── latin-rest.js │ │ │ │ │ ├── latin-upper-double-accent.js │ │ │ │ │ ├── latin-upper-normal.js │ │ │ │ │ ├── latin-upper-single-accent.js │ │ │ │ │ ├── math_angles.js │ │ │ │ │ ├── math_arrows.js │ │ │ │ │ ├── math_characters.js │ │ │ │ │ ├── math_delimiters.js │ │ │ │ │ ├── math_digits.js │ │ │ │ │ ├── math_geometry.js │ │ │ │ │ ├── math_harpoons.js │ │ │ │ │ ├── math_non_characters.js │ │ │ │ │ ├── math_symbols.js │ │ │ │ │ ├── math_whitespace.js │ │ │ │ │ ├── other_stars.js │ │ │ │ │ ├── spanish.js │ │ │ │ │ └── spanish_mathfonts.js │ │ │ │ └── units │ │ │ │ │ ├── energy.js │ │ │ │ │ ├── length.js │ │ │ │ │ ├── memory.js │ │ │ │ │ ├── other.js │ │ │ │ │ ├── speed.js │ │ │ │ │ ├── temperature.js │ │ │ │ │ ├── time.js │ │ │ │ │ ├── units_spanish.js │ │ │ │ │ ├── volume.js │ │ │ │ │ └── weight.js │ │ │ ├── semantic-enrich.js │ │ │ └── wgxpath.install.js │ │ ├── asciimath2jax.js │ │ ├── fast-preview.js │ │ ├── jsMath2jax.js │ │ ├── mml2jax.js │ │ ├── tex2jax.js │ │ └── toMathML.js │ │ ├── fonts │ │ └── HTML-CSS │ │ │ └── TeX │ │ │ └── woff │ │ │ ├── MathJax_AMS-Regular.woff │ │ │ ├── MathJax_Caligraphic-Bold.woff │ │ │ ├── MathJax_Caligraphic-Regular.woff │ │ │ ├── MathJax_Fraktur-Bold.woff │ │ │ ├── MathJax_Fraktur-Regular.woff │ │ │ ├── MathJax_Main-Bold.woff │ │ │ ├── MathJax_Main-Italic.woff │ │ │ ├── MathJax_Main-Regular.woff │ │ │ ├── MathJax_Math-BoldItalic.woff │ │ │ ├── MathJax_Math-Italic.woff │ │ │ ├── MathJax_Math-Regular.woff │ │ │ ├── MathJax_SansSerif-Bold.woff │ │ │ ├── MathJax_SansSerif-Italic.woff │ │ │ ├── MathJax_SansSerif-Regular.woff │ │ │ ├── MathJax_Script-Regular.woff │ │ │ ├── MathJax_Size1-Regular.woff │ │ │ ├── MathJax_Size2-Regular.woff │ │ │ ├── MathJax_Size3-Regular.woff │ │ │ ├── MathJax_Size4-Regular.woff │ │ │ ├── MathJax_Typewriter-Regular.woff │ │ │ ├── MathJax_Vector-Bold.woff │ │ │ └── MathJax_Vector-Regular.woff │ │ ├── jax │ │ ├── element │ │ │ └── mml │ │ │ │ ├── jax.js │ │ │ │ └── optable │ │ │ │ ├── Arrows.js │ │ │ │ ├── BasicLatin.js │ │ │ │ ├── CombDiacritMarks.js │ │ │ │ ├── CombDiactForSymbols.js │ │ │ │ ├── Dingbats.js │ │ │ │ ├── GeneralPunctuation.js │ │ │ │ ├── GeometricShapes.js │ │ │ │ ├── GreekAndCoptic.js │ │ │ │ ├── Latin1Supplement.js │ │ │ │ ├── LetterlikeSymbols.js │ │ │ │ ├── MathOperators.js │ │ │ │ ├── MiscMathSymbolsA.js │ │ │ │ ├── MiscMathSymbolsB.js │ │ │ │ ├── MiscSymbolsAndArrows.js │ │ │ │ ├── MiscTechnical.js │ │ │ │ ├── SpacingModLetters.js │ │ │ │ ├── SuppMathOperators.js │ │ │ │ ├── SupplementalArrowsA.js │ │ │ │ └── SupplementalArrowsB.js │ │ ├── input │ │ │ └── TeX │ │ │ │ ├── config.js │ │ │ │ └── jax.js │ │ └── output │ │ │ └── CommonHTML │ │ │ ├── autoload │ │ │ ├── annotation-xml.js │ │ │ ├── maction.js │ │ │ ├── menclose.js │ │ │ ├── mglyph.js │ │ │ ├── mmultiscripts.js │ │ │ ├── ms.js │ │ │ ├── mtable.js │ │ │ └── multiline.js │ │ │ ├── config.js │ │ │ ├── fonts │ │ │ └── TeX │ │ │ │ ├── AMS-Regular.js │ │ │ │ ├── Caligraphic-Bold.js │ │ │ │ ├── Fraktur-Bold.js │ │ │ │ ├── Fraktur-Regular.js │ │ │ │ ├── Main-Bold.js │ │ │ │ ├── Math-BoldItalic.js │ │ │ │ ├── SansSerif-Bold.js │ │ │ │ ├── SansSerif-Italic.js │ │ │ │ ├── SansSerif-Regular.js │ │ │ │ ├── Script-Regular.js │ │ │ │ ├── Typewriter-Regular.js │ │ │ │ ├── fontdata-extra.js │ │ │ │ └── fontdata.js │ │ │ └── jax.js │ │ ├── latest.js │ │ └── localization │ │ ├── en │ │ ├── FontWarnings.js │ │ ├── HTML-CSS.js │ │ ├── HelpDialog.js │ │ ├── MathML.js │ │ ├── MathMenu.js │ │ ├── TeX.js │ │ └── en.js │ │ └── zh-hans │ │ ├── FontWarnings.js │ │ ├── HTML-CSS.js │ │ ├── HelpDialog.js │ │ ├── MathML.js │ │ ├── MathMenu.js │ │ ├── TeX.js │ │ └── zh-hans.js │ ├── img │ └── loading.8f101f7.gif │ └── js │ ├── AxiosListDetailTest.ef324b5688cfa55d3b33.js │ ├── AxiosTest.192f611579fd8f7309af.js │ ├── BetterScrollTest.a362e4f4dfd8d6289c13.js │ ├── ClickAreaExpandTest.4871f1ace13a627700b7.js │ ├── ClickOutSideTest.62139d10dfb11592970b.js │ ├── ConfirmTest.bf57121c010cb855cef2.js │ ├── DebounceThrottleTest.980bb91838eeaaf4b0a4.js │ ├── DownloaderTest.72172f0f434717696d16.js │ ├── DragTest.323857e477bec499e1a6.js │ ├── EventBusTest.fa2f39653cc56c62fd2e.js │ ├── FormulaRenderTest.4e709c78f6cce50a86ac.js │ ├── GoToTopTest.8ee4afb64fd24abd1525.js │ ├── Home.0310b791d2ea587f88f9.js │ ├── HomeChild1.4f4710af2c533eb1172e.js │ ├── HomeChild2.966bcc996a91957ec7ad.js │ ├── ImgLazyLoadTest.e67c7a70d0d8f32c53df.js │ ├── InputAutoHeightTest.318d9083aab793c20f15.js │ ├── LayoutTest.48a763290d51cedbcc39.js │ ├── ListTransitionTest.549fae4113fda71206d7.js │ ├── LoadingTest.463edfe833a7bb45c56d.js │ ├── Login.ac0bdcfae9b6ecee0107.js │ ├── ModalTest.a0f92ac5c3a2a84b0a05.js │ ├── NumberToChineseTest.d68e1f850569bafe12e9.js │ ├── PopUpTest.9e3f15bc0023d37c3566.js │ ├── PreventFastClickBtnTest.3a210513fea7ce92d82f.js │ ├── PullupTest.1f942cbfaf831580508b.js │ ├── SwiperTest.6b67aab208dda2cc1c3a.js │ ├── ToastTest.dce2d2d603319d67e78c.js │ ├── UserCenter.56a367a7b0e218630f10.js │ ├── VuexTest.3af3ffe2d78da08e1467.js │ ├── app.6723e5e9c22374747d4c.js │ ├── manifest.e8362846c76ad10ab7a8.js │ ├── vendor-async.24a65b6353da14894614.js │ └── vendor.00f437bdae987012fda2.js ├── docs ├── style │ ├── BEM.md │ ├── commit.md │ ├── javascript.md │ ├── name.md │ └── vue.md └── vuex.md ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.vue ├── api │ └── config.js ├── assets │ └── js │ │ ├── fastclick-custom.js │ │ └── flexible-custom.js ├── base │ ├── BaseBtnPreventFastClick.vue │ ├── BaseClickAreaExpand.vue │ ├── BaseConfirm.vue │ ├── BaseFormulaRender.vue │ ├── BaseLayoutHorizontal.vue │ ├── BaseLayoutVertical.vue │ ├── BaseListTransition.vue │ ├── BaseLoading.vue │ ├── BaseLoadingSpinner.vue │ ├── BaseModal.vue │ ├── BasePopUp.vue │ ├── BaseScroll.vue │ ├── BaseScrollbar.vue │ ├── BaseSwiper │ │ ├── BaseSwiper.vue │ │ └── BaseSwiperSlide.vue │ ├── BaseToast │ │ └── BaseToast.js │ └── BaseTransitionSlide.vue ├── common │ ├── img │ │ └── loading.gif │ └── js │ │ ├── axios.js │ │ ├── browser.js │ │ ├── config.js │ │ ├── const.js │ │ ├── dom.js │ │ ├── downloader.js │ │ ├── easings.js │ │ ├── event-bus.js │ │ ├── file.js │ │ ├── global-loading.js │ │ ├── mixins.js │ │ ├── num-to-chn.js │ │ ├── raf-animation.js │ │ ├── raf.js │ │ ├── saver.js │ │ ├── scrollbar-width.js │ │ ├── time-counter.js │ │ ├── type-judge.js │ │ └── utils.js ├── components │ ├── LinkList.vue │ └── TopBar.vue ├── directives │ ├── auto-height.js │ ├── click-outside.js │ ├── drag.js │ ├── go-to-top.js │ └── pull-up.js ├── main.js ├── router │ └── index.js ├── sass │ ├── base │ │ ├── _normalize.scss │ │ └── _typography.scss │ ├── common-m.scss │ ├── helpers │ │ └── _helpers.scss │ ├── layout │ │ ├── _grid.scss │ │ └── _gridNew.scss │ ├── modules │ │ ├── _animate.scss │ │ ├── _button.scss │ │ ├── _form.scss │ │ ├── _loading.scss │ │ └── _table.scss │ ├── utils │ │ ├── _function.scss │ │ ├── _mediaQuery.scss │ │ ├── _mixins.scss │ │ ├── _placeholders.scss │ │ ├── _utils.scss │ │ ├── _variables.scss │ │ ├── _variablesCustom-m.scss │ │ └── _variablesCustom.scss │ └── vendors │ │ ├── _c_imgSlider.scss │ │ └── _c_pagination.scss ├── store │ ├── actions.js │ ├── getters.js │ ├── index.js │ ├── mutation-types.js │ ├── mutations.js │ └── states.js └── views │ ├── AxiosListDetailTest │ └── AxiosListDetailTest.vue │ ├── AxiosTest │ └── AxiosTest.vue │ ├── BetterScrollTest │ └── BetterScrollTest.vue │ ├── ClickAreaExpandTest │ └── ClickAreaExpandTest.vue │ ├── ClickOutsideTest │ └── ClickOutsideTest.vue │ ├── ConfirmTest │ └── ConfirmTest.vue │ ├── DebounceThrottleTest │ └── DebounceThrottleTest.vue │ ├── DownloaderTest │ └── DownloaderTest.vue │ ├── DragTest │ └── DragTest.vue │ ├── EventBusTest │ ├── EventBusGrandson1.vue │ ├── EventBusSon1.vue │ ├── EventBusSon2.vue │ └── EventBusTest.vue │ ├── FormulaRenderTest │ ├── FormulaRenderTest.vue │ └── mock-data.js │ ├── GoToTopTest │ └── GoToTopTest.vue │ ├── ImgLazyLoadTest │ └── ImgLazyLoadTest.vue │ ├── InputAutoHeightTest │ └── InputAutoHeightTest.vue │ ├── LayoutTest │ └── LayoutTest.vue │ ├── ListTransitionTest │ └── ListTransitionTest.vue │ ├── LoadingTest │ └── LoadingTest.vue │ ├── Login │ └── Login.vue │ ├── ModalTest │ └── ModalTest.vue │ ├── NumberToChineseTest │ └── NumberToChineseTest.vue │ ├── PopUpTest │ └── PopUpTest.vue │ ├── PreventFastClickBtnTest │ └── PreventFastClickBtnTest.vue │ ├── PullupTest │ └── PullupTest.vue │ ├── ScrollbarTest │ └── ScrollbarTest.vue │ ├── SwiperTest │ └── SwiperTest.vue │ ├── TimeCounterTest │ └── TimeCounterTest.vue │ ├── ToastTest │ └── ToastTest.vue │ ├── UserCenter │ └── UserCenter.vue │ ├── VuexTest │ ├── VuexTest.vue │ └── store │ │ ├── actions.js │ │ ├── index.js │ │ ├── module-a.js │ │ └── module-b.js │ └── home │ ├── HomeChild1.vue │ ├── HomeChild2.vue │ └── home.vue └── static ├── .gitkeep └── formula ├── katex ├── fonts │ ├── KaTeX_AMS-Regular.woff2 │ ├── KaTeX_Caligraphic-Bold.woff2 │ ├── KaTeX_Caligraphic-Regular.woff2 │ ├── KaTeX_Fraktur-Bold.woff2 │ ├── KaTeX_Fraktur-Regular.woff2 │ ├── KaTeX_Main-Bold.woff2 │ ├── KaTeX_Main-BoldItalic.woff2 │ ├── KaTeX_Main-Italic.woff2 │ ├── KaTeX_Main-Regular.woff2 │ ├── KaTeX_Math-Italic.woff2 │ ├── KaTeX_SansSerif-Bold.woff2 │ ├── KaTeX_SansSerif-Italic.woff2 │ ├── KaTeX_SansSerif-Regular.woff2 │ ├── KaTeX_Script-Regular.woff2 │ ├── KaTeX_Size1-Regular.woff2 │ ├── KaTeX_Size2-Regular.woff2 │ ├── KaTeX_Size3-Regular.woff2 │ ├── KaTeX_Size4-Regular.woff2 │ └── KaTeX_Typewriter-Regular.woff2 ├── katex.css ├── katex.js └── katex.min.js ├── mathjax-config-cutom.js └── mathjax ├── MathJax.js ├── config ├── AM_CHTML-full.js ├── AM_CHTML.js ├── AM_HTMLorMML-full.js ├── AM_HTMLorMML.js ├── AM_SVG-full.js ├── AM_SVG.js ├── Accessible-full.js ├── Accessible.js ├── MML_CHTML-full.js ├── MML_CHTML.js ├── MML_HTMLorMML-full.js ├── MML_HTMLorMML.js ├── MML_SVG-full.js ├── MML_SVG.js ├── MMLorHTML.js ├── Safe.js ├── TeX-AMS-MML_HTMLorMML-full.js ├── TeX-AMS-MML_HTMLorMML.js ├── TeX-AMS-MML_SVG-full.js ├── TeX-AMS-MML_SVG.js ├── TeX-AMS_CHTML-full.js ├── TeX-AMS_CHTML.js ├── TeX-AMS_HTML-full.js ├── TeX-AMS_HTML.js ├── TeX-AMS_SVG-full.js ├── TeX-AMS_SVG.js ├── TeX-MML-AM_CHTML-full.js ├── TeX-MML-AM_CHTML.js ├── TeX-MML-AM_HTMLorMML-full.js ├── TeX-MML-AM_HTMLorMML.js ├── TeX-MML-AM_SVG-full.js ├── TeX-MML-AM_SVG.js ├── default.js └── local │ └── local.js ├── extensions ├── AssistiveMML.js ├── CHTML-preview.js ├── FontWarnings.js ├── HTML-CSS │ └── handle-floats.js ├── HelpDialog.js ├── MatchWebFonts.js ├── MathEvents.js ├── MathML │ ├── content-mathml.js │ └── mml3.js ├── MathMenu.js ├── MathZoom.js ├── Safe.js ├── TeX │ ├── AMScd.js │ ├── AMSmath.js │ ├── AMSsymbols.js │ ├── HTML.js │ ├── action.js │ ├── autobold.js │ ├── autoload-all.js │ ├── bbox.js │ ├── begingroup.js │ ├── boldsymbol.js │ ├── cancel.js │ ├── color.js │ ├── enclose.js │ ├── extpfeil.js │ ├── mathchoice.js │ ├── mediawiki-texvc.js │ ├── mhchem.js │ ├── mhchem3 │ │ └── mhchem.js │ ├── newcommand.js │ ├── noErrors.js │ ├── noUndefined.js │ ├── unicode.js │ └── verb.js ├── a11y │ ├── accessibility-menu.js │ ├── auto-collapse.js │ ├── collapsible.js │ ├── explorer.js │ ├── invalid_keypress.mp3 │ ├── invalid_keypress.ogg │ ├── mathjax-sre.js │ ├── mathmaps │ │ ├── .htaccess │ │ ├── functions │ │ │ ├── algebra.js │ │ │ ├── elementary.js │ │ │ ├── functions_spanish.js │ │ │ ├── hyperbolic.js │ │ │ └── trigonometry.js │ │ ├── mathmaps_ie.js │ │ ├── symbols │ │ │ ├── greek-capital.js │ │ │ ├── greek-mathfonts.js │ │ │ ├── greek-scripts.js │ │ │ ├── greek-small.js │ │ │ ├── greek-symbols.js │ │ │ ├── hebrew_letters.js │ │ │ ├── latin-lower-double-accent.js │ │ │ ├── latin-lower-normal.js │ │ │ ├── latin-lower-phonetic.js │ │ │ ├── latin-lower-single-accent.js │ │ │ ├── latin-mathfonts.js │ │ │ ├── latin-rest.js │ │ │ ├── latin-upper-double-accent.js │ │ │ ├── latin-upper-normal.js │ │ │ ├── latin-upper-single-accent.js │ │ │ ├── math_angles.js │ │ │ ├── math_arrows.js │ │ │ ├── math_characters.js │ │ │ ├── math_delimiters.js │ │ │ ├── math_digits.js │ │ │ ├── math_geometry.js │ │ │ ├── math_harpoons.js │ │ │ ├── math_non_characters.js │ │ │ ├── math_symbols.js │ │ │ ├── math_whitespace.js │ │ │ ├── other_stars.js │ │ │ ├── spanish.js │ │ │ └── spanish_mathfonts.js │ │ └── units │ │ │ ├── energy.js │ │ │ ├── length.js │ │ │ ├── memory.js │ │ │ ├── other.js │ │ │ ├── speed.js │ │ │ ├── temperature.js │ │ │ ├── time.js │ │ │ ├── units_spanish.js │ │ │ ├── volume.js │ │ │ └── weight.js │ ├── semantic-enrich.js │ └── wgxpath.install.js ├── asciimath2jax.js ├── fast-preview.js ├── jsMath2jax.js ├── mml2jax.js ├── tex2jax.js └── toMathML.js ├── fonts └── HTML-CSS │ └── TeX │ └── woff │ ├── MathJax_AMS-Regular.woff │ ├── MathJax_Caligraphic-Bold.woff │ ├── MathJax_Caligraphic-Regular.woff │ ├── MathJax_Fraktur-Bold.woff │ ├── MathJax_Fraktur-Regular.woff │ ├── MathJax_Main-Bold.woff │ ├── MathJax_Main-Italic.woff │ ├── MathJax_Main-Regular.woff │ ├── MathJax_Math-BoldItalic.woff │ ├── MathJax_Math-Italic.woff │ ├── MathJax_Math-Regular.woff │ ├── MathJax_SansSerif-Bold.woff │ ├── MathJax_SansSerif-Italic.woff │ ├── MathJax_SansSerif-Regular.woff │ ├── MathJax_Script-Regular.woff │ ├── MathJax_Size1-Regular.woff │ ├── MathJax_Size2-Regular.woff │ ├── MathJax_Size3-Regular.woff │ ├── MathJax_Size4-Regular.woff │ ├── MathJax_Typewriter-Regular.woff │ ├── MathJax_Vector-Bold.woff │ └── MathJax_Vector-Regular.woff ├── jax ├── element │ └── mml │ │ ├── jax.js │ │ └── optable │ │ ├── Arrows.js │ │ ├── BasicLatin.js │ │ ├── CombDiacritMarks.js │ │ ├── CombDiactForSymbols.js │ │ ├── Dingbats.js │ │ ├── GeneralPunctuation.js │ │ ├── GeometricShapes.js │ │ ├── GreekAndCoptic.js │ │ ├── Latin1Supplement.js │ │ ├── LetterlikeSymbols.js │ │ ├── MathOperators.js │ │ ├── MiscMathSymbolsA.js │ │ ├── MiscMathSymbolsB.js │ │ ├── MiscSymbolsAndArrows.js │ │ ├── MiscTechnical.js │ │ ├── SpacingModLetters.js │ │ ├── SuppMathOperators.js │ │ ├── SupplementalArrowsA.js │ │ └── SupplementalArrowsB.js ├── input │ └── TeX │ │ ├── config.js │ │ └── jax.js └── output │ └── CommonHTML │ ├── autoload │ ├── annotation-xml.js │ ├── maction.js │ ├── menclose.js │ ├── mglyph.js │ ├── mmultiscripts.js │ ├── ms.js │ ├── mtable.js │ └── multiline.js │ ├── config.js │ ├── fonts │ └── TeX │ │ ├── AMS-Regular.js │ │ ├── Caligraphic-Bold.js │ │ ├── Fraktur-Bold.js │ │ ├── Fraktur-Regular.js │ │ ├── Main-Bold.js │ │ ├── Math-BoldItalic.js │ │ ├── SansSerif-Bold.js │ │ ├── SansSerif-Italic.js │ │ ├── SansSerif-Regular.js │ │ ├── Script-Regular.js │ │ ├── Typewriter-Regular.js │ │ ├── fontdata-extra.js │ │ └── fontdata.js │ └── jax.js ├── latest.js └── localization ├── en ├── FontWarnings.js ├── HTML-CSS.js ├── HelpDialog.js ├── MathML.js ├── MathMenu.js ├── TeX.js └── en.js └── zh-hans ├── FontWarnings.js ├── HTML-CSS.js ├── HelpDialog.js ├── MathML.js ├── MathMenu.js ├── TeX.js └── zh-hans.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "env", 5 | { 6 | "modules": false, 7 | "targets": { 8 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 9 | } 10 | } 11 | ], 12 | "stage-2" 13 | ], 14 | "plugins": ["transform-vue-jsx", "transform-runtime"] 15 | } 16 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /config/ 3 | /dist/ 4 | /*.js 5 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parserOptions: { 6 | parser: 'babel-eslint' 7 | }, 8 | env: { 9 | browser: true 10 | }, 11 | extends: [ 12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention 13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 14 | // 'plugin:vue/essential', 15 | 'plugin:vue/recommended', 16 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md 17 | 'standard' 18 | ], 19 | // required to lint *.vue files 20 | plugins: ['vue'], 21 | // add your custom rules here 22 | rules: { 23 | camelcase: 'off', 24 | // 关闭attribute强制横线连接 25 | 'vue/attribute-hyphenation': 'off', 26 | // 设置缩进 27 | indent: ['error', 2, { SwitchCase: 1 }], 28 | // 关闭reject必须返回一个error 29 | 'prefer-promise-reject-errors': 'off', 30 | // 允许同一个var声明多个变量 31 | 'one-var': 'off', 32 | // 允许使用tab 33 | 'no-tabs': 'off', 34 | // 允许函数前没有空格 35 | 'space-before-function-paren': 'off', 36 | // allow async-await 37 | 'generator-star-spacing': 'off', 38 | // allow debugger during development 39 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 40 | }, 41 | globals: { 42 | // 指定全局变量并不允许改写,eslint不会报错 43 | katex: false, 44 | MathJax: false, 45 | Vconsole: false, 46 | FastClick: false 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | # /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | "postcss-import": {}, 6 | "postcss-url": {}, 7 | // to edit target browsers: use "browserslist" field in package.json 8 | "autoprefixer": {} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { "tabWidth": 2, "semi": false, "singleQuote": true } 2 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | require('./check-versions')() 3 | 4 | process.env.NODE_ENV = 'production' 5 | 6 | const ora = require('ora') 7 | const rm = require('rimraf') 8 | const path = require('path') 9 | const chalk = require('chalk') 10 | const webpack = require('webpack') 11 | const config = require('../config') 12 | const webpackConfig = require('./webpack.prod.conf') 13 | 14 | const spinner = ora('building for production...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, (err, stats) => { 20 | spinner.stop() 21 | if (err) throw err 22 | process.stdout.write(stats.toString({ 23 | colors: true, 24 | modules: false, 25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | if (stats.hasErrors()) { 31 | console.log(chalk.red(' Build failed with errors.\n')) 32 | process.exit(1) 33 | } 34 | 35 | console.log(chalk.cyan(' Build complete.\n')) 36 | console.log(chalk.yellow( 37 | ' Tip: built files are meant to be served over an HTTP server.\n' + 38 | ' Opening index.html over file:// won\'t work.\n' 39 | )) 40 | }) 41 | }) 42 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const chalk = require('chalk') 3 | const semver = require('semver') 4 | const packageConfig = require('../package.json') 5 | const shell = require('shelljs') 6 | 7 | function exec (cmd) { 8 | return require('child_process').execSync(cmd).toString().trim() 9 | } 10 | 11 | const versionRequirements = [ 12 | { 13 | name: 'node', 14 | currentVersion: semver.clean(process.version), 15 | versionRequirement: packageConfig.engines.node 16 | } 17 | ] 18 | 19 | if (shell.which('npm')) { 20 | versionRequirements.push({ 21 | name: 'npm', 22 | currentVersion: exec('npm --version'), 23 | versionRequirement: packageConfig.engines.npm 24 | }) 25 | } 26 | 27 | module.exports = function () { 28 | const warnings = [] 29 | 30 | for (let i = 0; i < versionRequirements.length; i++) { 31 | const mod = versionRequirements[i] 32 | 33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 34 | warnings.push(mod.name + ': ' + 35 | chalk.red(mod.currentVersion) + ' should be ' + 36 | chalk.green(mod.versionRequirement) 37 | ) 38 | } 39 | } 40 | 41 | if (warnings.length) { 42 | console.log('') 43 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 44 | console.log() 45 | 46 | for (let i = 0; i < warnings.length; i++) { 47 | const warning = warnings[i] 48 | console.log(' ' + warning) 49 | } 50 | 51 | console.log() 52 | process.exit(1) 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/build/logo.png -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const utils = require('./utils') 3 | const config = require('../config') 4 | const isProduction = process.env.NODE_ENV === 'production' 5 | const sourceMapEnabled = isProduction 6 | ? config.build.productionSourceMap 7 | : config.dev.cssSourceMap 8 | 9 | module.exports = { 10 | loaders: utils.cssLoaders({ 11 | sourceMap: sourceMapEnabled, 12 | extract: isProduction 13 | }), 14 | cssSourceMap: sourceMapEnabled, 15 | cacheBusting: config.dev.cacheBusting, 16 | transformToRequire: { 17 | video: ['src', 'poster'], 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /build/webpack.dll.conf.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const webpack = require('webpack') 3 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 4 | 5 | const dllWebpackConfig = { 6 | entry: { 7 | // * 将下列第三方库,打包到一个dllVender.js中 8 | dllVendor: ['vue/dist/vue.esm.js', 'axios', 'vuex', 'vue-router'] 9 | }, 10 | output: { 11 | // * 2019-0103-输出dllVendor.js到build/dll文件夹中 12 | path: path.join(__dirname, './dll'), 13 | filename: 'dll.[name].js', 14 | // * library值需要和 new webpack.DllPlugin选项中的name一致 15 | library: '[name]_[hash]' 16 | }, 17 | plugins: [ 18 | new webpack.DllPlugin({ 19 | context: __dirname, 20 | // * 2019-0103-输出dllVendor.manifest.json到build/dll文件夹中 21 | path: path.join(__dirname, './dll/dll.[name].manifest.json'), 22 | // * 需要和output中library值一致 23 | name: '[name]_[hash]' 24 | }), 25 | // * 压缩dllVendor.js文件 26 | new UglifyJsPlugin({ 27 | uglifyOptions: { 28 | compress: { 29 | warnings: false 30 | } 31 | }, 32 | sourceMap: false, 33 | parallel: true 34 | }) 35 | ] 36 | } 37 | 38 | module.exports = dllWebpackConfig 39 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/katex/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/dist/static/formula/katex/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /dist/static/formula/mathjax-config-cutom.js: -------------------------------------------------------------------------------- 1 | MathJax.Hub.Config({ 2 | showProcessingMessages: false, 3 | messageStyle: 'none', 4 | showMathMenu: false 5 | }) 6 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/config/Safe.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/config/Safe.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Register.StartupHook("End Config",function(){if(!MathJax.Hub.config.extensions){MathJax.Hub.config.extensions=[]}MathJax.Hub.config.extensions.push("Safe.js")});MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js"); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/config/local/local.js: -------------------------------------------------------------------------------- 1 | /* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */ 2 | /* vim: set ts=2 et sw=2 tw=80: */ 3 | 4 | /************************************************************* 5 | * 6 | * MathJax/config/local/local.js 7 | * 8 | * Include changes and configuration local to your installation 9 | * in this file. For example, common macros can be defined here 10 | * (see below). To use this file, add "local/local.js" to the 11 | * config array in MathJax.js or your MathJax.Hub.Config() call. 12 | * 13 | * --------------------------------------------------------------------- 14 | * 15 | * Copyright (c) 2009-2018 The MathJax Consortium 16 | * 17 | * Licensed under the Apache License, Version 2.0 (the "License"); 18 | * you may not use this file except in compliance with the License. 19 | * You may obtain a copy of the License at 20 | * 21 | * http://www.apache.org/licenses/LICENSE-2.0 22 | * 23 | * Unless required by applicable law or agreed to in writing, software 24 | * distributed under the License is distributed on an "AS IS" BASIS, 25 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 26 | * See the License for the specific language governing permissions and 27 | * limitations under the License. 28 | */ 29 | 30 | 31 | MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () { 32 | var TEX = MathJax.InputJax.TeX; 33 | 34 | // place macros here. E.g.: 35 | // TEX.Macro("R","{\\bf R}"); 36 | // TEX.Macro("op","\\mathop{\\rm #1}",1); // a macro with 1 parameter 37 | 38 | }); 39 | 40 | MathJax.Ajax.loadComplete("[MathJax]/config/local/local.js"); 41 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/extensions/CHTML-preview.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/CHTML-preview.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Callback.Queue(["Require",MathJax.Ajax,"[MathJax]/extensions/fast-preview.js"],["loadComplete",MathJax.Ajax,"[MathJax]/extensions/CHTML-preview.js"]); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/extensions/HTML-CSS/handle-floats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/HTML-CSS/handle-floats.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["HTML-CSS/handle-floats"]={version:"2.7.4"};MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready");MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js"); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/extensions/TeX/action.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/TeX/action.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["TeX/action"]={version:"2.7.4"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.InputJax.TeX,a=MathJax.ElementJax.mml;b.Definitions.Add({macros:{toggle:"Toggle",mathtip:"Mathtip",texttip:["Macro","\\mathtip{#1}{\\text{#2}}",2]}},null,true);b.Parse.Augment({Toggle:function(d){var e=[],c;while((c=this.GetArgument(d))!=="\\endtoggle"){e.push(b.Parse(c,this.stack.env).mml())}this.Push(a.maction.apply(a,e).With({actiontype:a.ACTIONTYPE.TOGGLE}))},Mathtip:function(d){var c=this.ParseArg(d),e=this.ParseArg(d);this.Push(a.maction(c,e).With({actiontype:a.ACTIONTYPE.TOOLTIP}))}});MathJax.Hub.Startup.signal.Post("TeX action Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/action.js"); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/extensions/TeX/autobold.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/TeX/autobold.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["TeX/autobold"]={version:"2.7.4"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.InputJax.TeX;a.prefilterHooks.Add(function(d){var c=d.script.parentNode.insertBefore(document.createElement("span"),d.script);c.visibility="hidden";c.style.fontFamily="Times, serif";c.appendChild(document.createTextNode("ABCXYZabcxyz"));var b=c.offsetWidth;c.style.fontWeight="bold";if(b&&c.offsetWidth===b){d.math="\\boldsymbol{"+d.math+"}"}c.parentNode.removeChild(c)});MathJax.Hub.Startup.signal.Post("TeX autobold Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/autobold.js"); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/extensions/TeX/noUndefined.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/TeX/noUndefined.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["TeX/noUndefined"]={version:"2.7.4",config:MathJax.Hub.CombineConfig("TeX.noUndefined",{disabled:false,attributes:{mathcolor:"red"}})};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var b=MathJax.Extension["TeX/noUndefined"].config;var a=MathJax.ElementJax.mml;var c=MathJax.InputJax.TeX.Parse.prototype.csUndefined;MathJax.InputJax.TeX.Parse.Augment({csUndefined:function(d){if(b.disabled){return c.apply(this,arguments)}MathJax.Hub.signal.Post(["TeX Jax - undefined control sequence",d]);this.Push(a.mtext(d).With(b.attributes))}});MathJax.Hub.Startup.signal.Post("TeX noUndefined Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noUndefined.js"); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/extensions/TeX/verb.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/extensions/TeX/verb.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Extension["TeX/verb"]={version:"2.7.4"};MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;var c=MathJax.InputJax.TeX;var b=c.Definitions;b.Add({macros:{verb:"Verb"}},null,true);c.Parse.Augment({Verb:function(d){var g=this.GetNext();var f=++this.i;if(g==""){c.Error(["MissingArgFor","Missing argument for %1",d])}while(this.i":c.BIN5,"//":[1,1,b.BIN],"/=":c.BIN4,":=":c.BIN4,"<=":c.BIN5,"<>":[1,1,b.BIN],"==":c.BIN4,">=":c.BIN5,"@":c.ORD11,"||":[2,2,b.BIN,{fence:true,stretchy:true,symmetric:true}],"|||":[2,2,b.ORD,{fence:true,stretchy:true,symmetric:true}]}}});MathJax.Ajax.loadComplete(a.optableDir+"/BasicLatin.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/CombDiacritMarks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/CombDiacritMarks.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u0311":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiacritMarks.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/CombDiactForSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/CombDiactForSymbols.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u20DB":c.ACCENT,"\u20DC":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiactForSymbols.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/Dingbats.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/Dingbats.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2772":c.OPEN},postfix:{"\u2773":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/Dingbats.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/GeneralPunctuation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/GeneralPunctuation.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2016":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2018":[0,0,b.OPEN,{fence:true}],"\u201C":[0,0,b.OPEN,{fence:true}]},postfix:{"\u2016":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2019":[0,0,b.CLOSE,{fence:true}],"\u201D":[0,0,b.CLOSE,{fence:true}]}}});MathJax.Ajax.loadComplete(a.optableDir+"/GeneralPunctuation.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/GeometricShapes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/GeometricShapes.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u25A0":c.BIN3,"\u25A1":c.BIN3,"\u25AA":c.BIN3,"\u25AB":c.BIN3,"\u25AD":c.BIN3,"\u25AE":c.BIN3,"\u25AF":c.BIN3,"\u25B0":c.BIN3,"\u25B1":c.BIN3,"\u25B2":c.BIN4,"\u25B4":c.BIN4,"\u25B6":c.BIN4,"\u25B7":c.BIN4,"\u25B8":c.BIN4,"\u25BC":c.BIN4,"\u25BE":c.BIN4,"\u25C0":c.BIN4,"\u25C1":c.BIN4,"\u25C2":c.BIN4,"\u25C4":c.BIN4,"\u25C5":c.BIN4,"\u25C6":c.BIN4,"\u25C7":c.BIN4,"\u25C8":c.BIN4,"\u25C9":c.BIN4,"\u25CC":c.BIN4,"\u25CD":c.BIN4,"\u25CE":c.BIN4,"\u25CF":c.BIN4,"\u25D6":c.BIN4,"\u25D7":c.BIN4,"\u25E6":c.BIN4}}});MathJax.Ajax.loadComplete(a.optableDir+"/GeometricShapes.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/GreekAndCoptic.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/GreekAndCoptic.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u03F6":c.REL}}});MathJax.Ajax.loadComplete(a.optableDir+"/GreekAndCoptic.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/Latin1Supplement.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/Latin1Supplement.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u00B0":c.ORD,"\u00B4":c.ACCENT,"\u00B8":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/Latin1Supplement.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/LetterlikeSymbols.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/LetterlikeSymbols.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2145":c.ORD21,"\u2146":[2,0,b.ORD]}}});MathJax.Ajax.loadComplete(a.optableDir+"/LetterlikeSymbols.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscMathSymbolsA.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u27E6":c.OPEN,"\u27EA":c.OPEN,"\u27EC":c.OPEN},postfix:{"\u27E7":c.CLOSE,"\u27EB":c.CLOSE,"\u27ED":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscMathSymbolsA.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscSymbolsAndArrows.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u2B45":c.RELSTRETCH,"\u2B46":c.RELSTRETCH}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscSymbolsAndArrows.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/MiscTechnical.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/MiscTechnical.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u23B4":c.WIDEACCENT,"\u23B5":c.WIDEACCENT,"\u23DC":c.WIDEACCENT,"\u23DD":c.WIDEACCENT,"\u23E0":c.WIDEACCENT,"\u23E1":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscTechnical.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/SpacingModLetters.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/SpacingModLetters.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u02CD":c.WIDEACCENT,"\u02DA":c.ACCENT,"\u02DD":c.ACCENT,"\u02F7":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/SpacingModLetters.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/element/mml/optable/SupplementalArrowsA.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/element/mml/optable/SupplementalArrowsA.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | (function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u27F0":c.RELSTRETCH,"\u27F1":c.RELSTRETCH,"\u27FB":c.WIDEREL,"\u27FD":c.WIDEREL,"\u27FE":c.WIDEREL,"\u27FF":c.WIDEREL}}});MathJax.Ajax.loadComplete(a.optableDir+"/SupplementalArrowsA.js")})(MathJax.ElementJax.mml); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/input/TeX/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/input/TeX/config.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.InputJax.TeX=MathJax.InputJax({id:"TeX",version:"2.7.4",directory:MathJax.InputJax.directory+"/TeX",extensionDir:MathJax.InputJax.extensionDir+"/TeX",config:{TagSide:"right",TagIndent:"0.8em",MultLineWidth:"85%",equationNumbers:{autoNumber:"none",formatNumber:function(a){return a},formatTag:function(a){return"("+a+")"},formatID:function(a){return"mjx-eqn-"+String(a).replace(/\s/g,"_")},formatURL:function(b,a){return a+"#"+encodeURIComponent(b)},useLabelIds:true}},resetEquationNumbers:function(){}});MathJax.InputJax.TeX.Register("math/tex");MathJax.InputJax.TeX.loadComplete("config.js"); 20 | -------------------------------------------------------------------------------- /dist/static/formula/mathjax/jax/output/CommonHTML/autoload/annotation-xml.js: -------------------------------------------------------------------------------- 1 | /* 2 | * /MathJax/jax/output/CommonHTML/autoload/annotation-xml.js 3 | * 4 | * Copyright (c) 2009-2018 The MathJax Consortium 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function(){var c="2.7.4";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax.CommonHTML;a["annotation-xml"].Augment({toCommonHTML:function(e){var d=this.Get("encoding");e=this.CHTMLdefaultNode(e,{childOptions:{encoding:d}});if(this.CHTML.rscale!==1){this.CHTML.rescale(1/this.CHTML.rscale)}return e}});a.xml.Augment({toCommonHTML:function(l,g){var n=this.CHTML=b.BBOX.zero();for(var j=0,d=this.data.length;j` 32 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /src/api/config.js: -------------------------------------------------------------------------------- 1 | /* 2 | config.js用来定义接口请求时的通用配置参数 3 | */ 4 | export const STATUS_OK = 1 5 | -------------------------------------------------------------------------------- /src/assets/js/flexible-custom.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | ;(function flexible(window, document) { 3 | var docEl = document.documentElement 4 | 5 | // set 1rem = viewWidth / 10 6 | function setRemUnit() { 7 | var rem = docEl.clientWidth / 10 8 | // * 最小32px 9 | rem = Math.max(32, rem) 10 | // * 最大54px 11 | rem = Math.min(54, rem) 12 | docEl.style.fontSize = rem + 'px' 13 | } 14 | 15 | setRemUnit() 16 | 17 | // reset rem unit on page resize 18 | window.addEventListener('resize', setRemUnit) 19 | window.addEventListener('pageshow', function(e) { 20 | if (e.persisted) { 21 | setRemUnit() 22 | } 23 | }) 24 | })(window, document) 25 | -------------------------------------------------------------------------------- /src/base/BaseBtnPreventFastClick.vue: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /src/base/BaseClickAreaExpand.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 39 | -------------------------------------------------------------------------------- /src/base/BaseLayoutHorizontal.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 29 | 30 | 45 | -------------------------------------------------------------------------------- /src/base/BaseLayoutVertical.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 29 | 30 | 56 | -------------------------------------------------------------------------------- /src/base/BaseListTransition.vue: -------------------------------------------------------------------------------- 1 | 60 | -------------------------------------------------------------------------------- /src/base/BaseLoading.vue: -------------------------------------------------------------------------------- 1 | 15 | 46 | 67 | -------------------------------------------------------------------------------- /src/base/BaseSwiper/BaseSwiperSlide.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | 27 | -------------------------------------------------------------------------------- /src/base/BaseTransitionSlide.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 30 | 31 | 54 | -------------------------------------------------------------------------------- /src/common/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BryanAdamss/VueTemplate/75791b9ec73d6631b111847fb37d93bf5f6c43f8/src/common/img/loading.gif -------------------------------------------------------------------------------- /src/common/js/axios.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * 封装axios 3 | */ 4 | 5 | import axios from 'axios' 6 | 7 | const AXIOS_DEFAULT_CONFIG = { 8 | timeout: 10000, 9 | maxContentLength: 2000, 10 | headers: {} 11 | } 12 | 13 | let axiosInstance = {} 14 | 15 | axiosInstance = axios.create(AXIOS_DEFAULT_CONFIG) 16 | 17 | // 注入请求拦截 18 | axiosInstance.interceptors.request.use( 19 | reqObj => { 20 | // * 自定义请求拦截逻辑,可以处理权限,请求发送监控等 21 | return reqObj 22 | }, 23 | reqErr => { 24 | // * 自定义发送请求失败逻辑,断网,请求发送监控等 25 | return Promise.reject(reqErr) 26 | } 27 | ) 28 | 29 | // 注入响应拦截 30 | axiosInstance.interceptors.response.use( 31 | resObj => { 32 | let resData = resObj.data 33 | return resData 34 | // let { code } = resData 35 | 36 | // switch (code) { 37 | // case 0: // 如果业务成功,直接进成功回调 38 | // return resData.data 39 | // case 1111: 40 | // // 如果业务失败,根据不同 code 做不同处理 41 | // // 比如最常见的授权过期跳登录 42 | // // 特定弹窗 43 | // // 跳转特定页面等 44 | // location.href = 'xxx' // 这里的路径也可以放到全局配置里 45 | // return 46 | // default: 47 | // // 业务中还会有一些特殊 code 逻辑,我们可以在这里做统一处理,也可以下方它们到业务层 48 | // return Promise.reject(resData) 49 | // } 50 | }, 51 | resErr => { 52 | // * 响应失败,可根据 resErr.message 和 resErr.response.status 来做监控处理 53 | console.log(resErr) 54 | return Promise.reject(resErr) 55 | } 56 | ) 57 | 58 | export default axiosInstance 59 | -------------------------------------------------------------------------------- /src/common/js/browser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description 浏览器判断 4 | */ 5 | 6 | export const inBrowser = typeof window !== 'undefined' 7 | 8 | const UA = inBrowser && window.navigator.userAgent.toLowerCase() 9 | 10 | export const isIE = UA && /msie|trident/.test(UA) 11 | export const isIE9 = UA && UA.indexOf('msie 9.0') > 0 12 | export const isEdge = UA && UA.indexOf('edge/') > 0 13 | export const isAndroid = UA && UA.indexOf('android') > 0 14 | export const isIOS = UA && /iphone|ipad|ipod|ios/.test(UA) 15 | export const isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge 16 | export const isPhantomJS = UA && /phantomjs/.test(UA) 17 | export const isFF = UA && UA.match(/firefox\/(\d+)/) 18 | -------------------------------------------------------------------------------- /src/common/js/config.js: -------------------------------------------------------------------------------- 1 | // config.js用来保存通用的js配置 2 | -------------------------------------------------------------------------------- /src/common/js/const.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description 常量 4 | */ 5 | 6 | export const GLOBAL_NAME_SPACE = '__CGH_VUE_TEMPALTE__' 7 | 8 | export const STATE_CODE = Object.freeze({ 9 | TOKEN_EXPIRED: 3001, 10 | TOKEN_ERROR: 3003 11 | }) 12 | 13 | export const AXIOS_TIME_OUT = 10 * 1000 14 | 15 | export const DEBUG = false 16 | -------------------------------------------------------------------------------- /src/common/js/easings.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description 常用缓动算法函数 4 | */ 5 | 6 | /** 7 | * 8 | * 匀速 9 | * @export 10 | * @param {Number} t 当前时间 11 | * @param {Number} b 开始值 12 | * @param {Number} c 变化值(结束值-开始值) 13 | * @param {Number} d 结束时间 14 | * @returns {Number} 当前时间对应的值 15 | */ 16 | export function Linear(t, b, c, d) { 17 | return (c * t) / d + b 18 | } 19 | 20 | /** 21 | * 22 | * 先慢后快 23 | * @export 24 | * @param {Number} t 当前时间 25 | * @param {Number} b 开始值 26 | * @param {Number} c 变化值(结束值-开始值) 27 | * @param {Number} d 结束时间 28 | * @returns {Number} 当前时间对应的值 29 | */ 30 | export function easeIn(t, b, c, d) { 31 | return c * (t /= d) * t + b 32 | } 33 | 34 | /** 35 | * 36 | * 先快后慢 37 | * @export 38 | * @param {Number} t 当前时间 39 | * @param {Number} b 开始值 40 | * @param {Number} c 变化值(结束值-开始值) 41 | * @param {Number} d 结束时间 42 | * @returns {Number} 当前时间对应的值 43 | */ 44 | export function easeOut(t, b, c, d) { 45 | return -c * (t /= d) * (t - 2) + b 46 | } 47 | 48 | /** 49 | * 50 | * 先慢再匀速再慢 51 | * @export 52 | * @param {Number} t 当前时间 53 | * @param {Number} b 开始值 54 | * @param {Number} c 变化值(结束值-开始值) 55 | * @param {Number} d 结束时间 56 | * @returns {Number} 当前时间对应的值 57 | */ 58 | export function easeInOut(t, b, c, d) { 59 | if ((t /= d / 2) < 1) return (c / 2) * t * t + b 60 | return (-c / 2) * (--t * (t - 2) - 1) + b 61 | } 62 | -------------------------------------------------------------------------------- /src/common/js/event-bus.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description EventBus 4 | */ 5 | 6 | import Vue from 'vue' 7 | import { GLOBAL_NAME_SPACE } from 'Config' 8 | 9 | const bus = 10 | window[GLOBAL_NAME_SPACE] && window[GLOBAL_NAME_SPACE].$bus 11 | ? window[GLOBAL_NAME_SPACE].$bus 12 | : new Vue() 13 | 14 | export default bus 15 | -------------------------------------------------------------------------------- /src/common/js/mixins.js: -------------------------------------------------------------------------------- 1 | // mixins用来保存通用的vue组件配置 2 | -------------------------------------------------------------------------------- /src/common/js/raf-animation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description requestAnimationFrame动画 4 | */ 5 | 6 | import { raf, caf } from 'Common/js/raf' 7 | /** 8 | * 9 | * requestAnimationFrame动画 10 | * @export 11 | * @param {Function} frameFn 步进函数,需要返回一个布尔值 12 | * @param {Object} context frameFn的执行上下文 13 | */ 14 | export function rafAnim(frameFn, context) { 15 | // requestAnimationFrame的递归调用的启动函数 16 | var isEnd = false, 17 | RAFId = -1 18 | ;(function rafLoop() { 19 | // 通过具名自执行函数,完成requestAnimationFrame的递归调用,frameFn需要返回动画是否完成的标志量 20 | isEnd = frameFn.call(context) 21 | RAFId = raf(rafLoop) 22 | if (isEnd) { 23 | caf(RAFId) 24 | } 25 | })() 26 | } 27 | -------------------------------------------------------------------------------- /src/common/js/raf.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description requestAnimationFrame 4 | */ 5 | 6 | const vendors = ['webkit', 'moz'] 7 | let r = window.requestAnimationFrame 8 | let c = window.cancelAnimationFrame 9 | for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { 10 | // 统一前缀 11 | r = window[vendors[x] + 'RequestAnimationFrame'] 12 | c = 13 | window[vendors[x] + 'CancelAnimationFrame'] || // Webkit中此取消方法的名字变了 14 | window[vendors[x] + 'CancelRequestAnimationFrame'] 15 | } 16 | 17 | export const raf = (function() { 18 | if (r) { 19 | return r 20 | } else { 21 | let lastTime = 0 22 | return function(callback, element) { 23 | var currTime = new Date().getTime() 24 | var timeToCall = Math.max(0, 16.7 - (currTime - lastTime)) 25 | var id = window.setTimeout(function() { 26 | // eslint-disable-next-line 27 | callback(currTime + timeToCall) 28 | }, timeToCall) 29 | lastTime = currTime + timeToCall 30 | return id 31 | } 32 | } 33 | })() 34 | 35 | export const caf = (function() { 36 | if (c) { 37 | return c 38 | } else { 39 | return function(id) { 40 | clearTimeout(id) 41 | } 42 | } 43 | })() 44 | -------------------------------------------------------------------------------- /src/common/js/scrollbar-width.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author GuangHui 3 | * @description 获取scrollbar 宽度 4 | */ 5 | 6 | let scrollBarWidth 7 | 8 | export default function() { 9 | if (scrollBarWidth != null) return scrollBarWidth 10 | 11 | const outer = document.createElement('div') 12 | outer.style.visibility = 'hidden' 13 | outer.style.width = '100px' 14 | outer.style.position = 'absolute' 15 | outer.style.top = '-9999px' 16 | document.body.appendChild(outer) 17 | 18 | const widthNoScroll = outer.offsetWidth 19 | outer.style.overflow = 'scroll' 20 | 21 | const inner = document.createElement('div') 22 | inner.style.width = '100%' 23 | outer.appendChild(inner) 24 | 25 | const widthWithScroll = inner.offsetWidth 26 | outer.parentNode.removeChild(outer) 27 | scrollBarWidth = widthNoScroll - widthWithScroll 28 | 29 | return scrollBarWidth 30 | } 31 | -------------------------------------------------------------------------------- /src/common/js/type-judge.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author ghchu 3 | * @description 常用类型判断 4 | */ 5 | 6 | /** 7 | * 判断是否为空(null、'',[],{},0) 8 | * 9 | * @export 10 | * @param {Any} obj 需要判断的对象 11 | * @returns {Boolean} 是否为空 12 | */ 13 | export function isEmpty(obj) { 14 | return ( 15 | [Object, Array].includes((obj || {}).constructor) && 16 | !Object.entries(obj || {}).length 17 | ) 18 | } 19 | 20 | /** 21 | * 判断是否是数组 22 | * @param {Any} arr 需要判断的对象 23 | */ 24 | export function isArray(arr) { 25 | return Array.isArray 26 | ? Array.isArray(arr) 27 | : Object.prototype.toString.call(arr) === '[object Array]' 28 | } 29 | 30 | /** 31 | * 判断是否为函数 32 | * @param {Any} fn 需要判断的对象 33 | */ 34 | export function isFunction(fn) { 35 | return typeof fn === 'function' 36 | } 37 | -------------------------------------------------------------------------------- /src/components/LinkList.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 47 | 48 | 59 | -------------------------------------------------------------------------------- /src/components/TopBar.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 64 | -------------------------------------------------------------------------------- /src/directives/auto-height.js: -------------------------------------------------------------------------------- 1 | export default { 2 | bind(el, binding, vnode) { 3 | // * auto-height必须应用在textarea上 4 | if (!(el instanceof HTMLTextAreaElement)) { 5 | console.warn('auto-height必须应用在textarea上') 6 | return 7 | } 8 | 9 | // * 防止产生y轴滚动条,产生宽度,导致一些问题,统一溢出隐藏 10 | el.style.overflow = 'hidden' 11 | 12 | let lastLength = 0 13 | let lastHeight = 0 14 | 15 | let borderWidth = 1 16 | let timer = setTimeout(() => { 17 | borderWidth = parseInt(getComputedStyle(el).borderWidth) 18 | clearTimeout(timer) 19 | timer = null 20 | }, 20) 21 | 22 | function onInputHandler() { 23 | const currentLength = el.value.length 24 | 25 | // * 判断字数如果比之前少了,说明内容正在减少,需要清除高度样式,重新获取 26 | if (currentLength < lastLength) { 27 | el.style.height = '' 28 | } 29 | 30 | // * 内容高度 31 | const currentHeight = el.scrollHeight 32 | 33 | // * 如果内容高度发生了变化,再去设置高度值 34 | if (lastHeight !== currentHeight || !el.style.height) { 35 | el.style.height = currentHeight + borderWidth * 2 + 'px' 36 | } 37 | 38 | lastLength = currentLength 39 | lastHeight = currentHeight 40 | } 41 | 42 | el.__vueAutoHeight__ = onInputHandler 43 | 44 | el.addEventListener('input', onInputHandler, false) 45 | }, 46 | update() {}, 47 | unbind(el, binding) { 48 | if (el.__vueAutoHeight__) { 49 | el.removeEventListener('input', el.__vueAutoHeight__) 50 | delete el.__vueAutoHeight__ 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/directives/click-outside.js: -------------------------------------------------------------------------------- 1 | export default { 2 | bind(el, binding, vnode) { 3 | function documentHandler(e) { 4 | let _target = e.target 5 | // * 点击自身及内部元素不做处理 6 | if (el.contains(_target)) return false 7 | // * 执行指令对应的表达式 8 | if (binding.expression) binding.value(e) 9 | } 10 | el.__vueClickOutside__ = documentHandler 11 | document.addEventListener('click', documentHandler) 12 | }, 13 | update() {}, 14 | unbind(el, binding) { 15 | document.removeEventListener('click', el.__vueClickOutside__) 16 | delete el.__vueClickOutside__ 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/directives/go-to-top.js: -------------------------------------------------------------------------------- 1 | export default { 2 | bind(el, binding, vnode) {}, 3 | inserted(el, binding, vnode) { 4 | // * 若有传递target,则滚动target,否则滚动window 5 | let $target = null 6 | if (binding.value && binding.value.target) { 7 | const { target } = binding.value 8 | $target = document.querySelector(target) 9 | } 10 | 11 | el.addEventListener('click', scrollToTop, false) 12 | 13 | function scrollToTop() { 14 | let top = $target 15 | ? $target.scrollTop 16 | : document.documentElement.scrollTop || document.body.scrollTop 17 | 18 | if (top > 0) { 19 | window.requestAnimationFrame(scrollToTop) 20 | let posY = top - top / 8 21 | $target ? $target.scrollTo(0, posY) : window.scrollTo(0, posY) 22 | } 23 | } 24 | 25 | el.__vueGoToTop__ = scrollToTop 26 | }, 27 | update() {}, 28 | unbind(el, binding) { 29 | if (el.__vueGoToTop__) { 30 | el.removeEventListener('click', el.__vueGoToTop__) 31 | delete el.__vueGoToTop__ 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/directives/pull-up.js: -------------------------------------------------------------------------------- 1 | import { eventListenerPassiveSupported, throttle } from 'Common/js/utils' 2 | 3 | import Vue from 'vue' 4 | import BaseLoadingSpinner from 'Base/BaseLoadingSpinner' 5 | 6 | const ExtendLoading = Vue.extend({ 7 | components: { 8 | BaseLoadingSpinner 9 | }, 10 | template: 11 | '
' 12 | }) 13 | const MyLoading = new ExtendLoading().$mount() 14 | 15 | export default { 16 | bind(el, binding, vnode, oldVnode) { 17 | let lastScrollTop = 0 18 | let isInPullup = false 19 | 20 | const pullupEnd = () => { 21 | el.removeChild(MyLoading.$el) 22 | isInPullup = false 23 | } 24 | 25 | const pullUpScrollHandler = e => { 26 | const scrollTop = el.scrollTop 27 | const scrollH = el.scrollHeight 28 | const clientH = el.clientHeight 29 | 30 | if (isInPullup || scrollTop < lastScrollTop) { 31 | return 32 | } 33 | 34 | if (scrollTop + clientH === scrollH) { 35 | isInPullup = true 36 | lastScrollTop = scrollTop 37 | 38 | el.appendChild(MyLoading.$el) 39 | 40 | binding.value(pullupEnd) 41 | } 42 | } 43 | 44 | el.__pull_up_scroll_handler__ = throttle(pullUpScrollHandler, 300) 45 | 46 | el.addEventListener( 47 | 'scroll', 48 | el.__pull_up_scroll_handler__, 49 | eventListenerPassiveSupported ? { passive: true } : false 50 | ) 51 | }, 52 | inserted(el, binding) {}, 53 | update() {}, 54 | componentUpdated() {}, 55 | unbind(el) { 56 | el.removeEventListener('scroll', el.__pull_up_scroll_handler__) 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/sass/base/_typography.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | -------------------------------------------------------------------------------- /src/sass/common-m.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | // --------------------------------------------- 9 | // common-m.scss包含默认变量、自定义变量、_mixin、_funciton、_placeholder、_mediaQuery、_normalize、_typography、_helpers以及移动端自适应需要的字体设置 10 | // --------------------------------------------- 11 | // 下面为相关变量、_mixin、_funciton、_placeholder、_mediaQuery工具的导入(前面的相关scss文件已经通过sass-resources-loader(位于build/utils.js中)导入,所以此处无需重复导入) 12 | // --------------------------------------------- 13 | // 导入自定义变量 14 | //@import "./utils/_variablesCustom-m.scss"; 15 | //// 导入工具包包含默认变量、_mixin、_funciton、_placeholder、_mediaQuery 16 | //@import "./utils/_utils.scss"; 17 | // --------------------------------------------- 18 | // 下面为直接的css(相关工具的调用)导入 19 | // --------------------------------------------- 20 | // 导入normalize 21 | @import './base/_normalize.scss'; 22 | // 导入排版样式 23 | @import './base/_typography.scss'; 24 | // 导入助手样式 25 | @import './helpers/_helpers.scss'; 26 | // --------------------------------------------- 27 | // 设置移动端字体(实现自适应) 28 | // --------------------------------------------- 29 | html { 30 | @include htmlFont(M); 31 | height: 100%; 32 | background-color: #fefefe; 33 | overflow: hidden; 34 | } 35 | 36 | body { 37 | @include bodyFontSize(M); 38 | background-color: #fff; 39 | height: 100%; 40 | box-shadow: 0 0 0 1px red; 41 | overflow: hidden; 42 | } 43 | -------------------------------------------------------------------------------- /src/sass/helpers/_helpers.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | // 通用助手样式 9 | .u-textL { 10 | text-align: left !important; 11 | } 12 | 13 | .u-textC { 14 | text-align: center !important; 15 | } 16 | 17 | .u-textR { 18 | text-align: right !important; 19 | } 20 | 21 | .u-textRtl { 22 | direction: rtl !important; 23 | } 24 | 25 | .u-textBreak { 26 | @extend %textWrap; 27 | } 28 | 29 | .u-textMainTone { 30 | color: $mainTone !important; 31 | } 32 | 33 | .u-textSubTone { 34 | color: $subTone !important; 35 | } 36 | 37 | .u-textWarn { 38 | color: $warnningColor !important; 39 | } 40 | 41 | .u-textDanger { 42 | color: $dangerColor !important; 43 | } 44 | -------------------------------------------------------------------------------- /src/sass/modules/_loading.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | .c-Loading { 9 | position: fixed; 10 | top: 0; 11 | left: 0; 12 | bottom: 0; 13 | right: 0; 14 | margin: auto; 15 | z-index: 99999999999; 16 | transition: 0.3s; 17 | text-align: center; 18 | display: block; 19 | @at-root #{&}-box { 20 | position: absolute; 21 | top: 50%; 22 | left: 50%; 23 | transform: translate3d(-50%, -50%, 0); 24 | font-size: rem(28px); 25 | color: #333; 26 | } 27 | @at-root #{&}.hasBg { 28 | @include bgAlpha(); 29 | } 30 | @at-root #{&}.is-hided { 31 | display: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/sass/modules/_table.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | -------------------------------------------------------------------------------- /src/sass/utils/_utils.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | // --------------------------------------------- 9 | // _utils.scss主要是各种工具的入口 10 | // --------------------------------------------- 11 | // 下面为默认变量、_mixin、_function、_mediaQuery、_placeholder的导入 12 | // --------------------------------------------- 13 | // 导入默认变量 14 | @import '_variables.scss'; 15 | // 导入函数 16 | @import '_function.scss'; 17 | // 导入混合宏 18 | @import '_mixins.scss'; 19 | // 导入媒体查询混合宏 20 | @import '_mediaQuery.scss'; 21 | // 导入占位样式 22 | @import '_placeholders.scss'; 23 | -------------------------------------------------------------------------------- /src/sass/utils/_variables.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | // --------------------------------------------- 9 | // 默认开关变量设置 10 | // --------------------------------------------- 11 | $lte7: true !default; //是否兼容ie6-7 12 | $filter: true !default; //是否为ie6-8开启css3滤镜兼容,常用于渐变背景 13 | $printStyleSwitch: false !default; //是否开启打印样式 14 | // --------------------------------------------- 15 | // font相关 16 | // --------------------------------------------- 17 | // html基础字体样式 18 | $baseFontPC: arial, \5b8b\4f53, 'Hiragino Sans GB', 'Microsoft YaHei', 19 | sans-serif !default; //PC端,$pageType为PC 20 | $baseFontM: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', 21 | STHeiti, 'Microsoft Yahei', Tahoma, Simsun, sans-serif !default; //$pageType为M 22 | // 常用字体 23 | $fontSong: \5b8b\4f53 !default; //宋体 24 | $fontYaHei: 'Microsoft YaHei' !default; //微软雅黑 25 | // --------------------------------------------- 26 | // 颜色 27 | // --------------------------------------------- 28 | // 页面主要色调 29 | $mainTone: #3da4fe !default; 30 | $subTone: #fe6e00 !default; 31 | // 文字颜色 32 | $mainTextColor: #666 !default; 33 | $subTextColor: #ccc !default; 34 | // 边框颜色 35 | $baseBorderColor: #c7c7c7 !default; 36 | // 按钮文字颜色 37 | $mainButtonColor: #fff !default; 38 | // 辅助颜色 39 | $dangerColor: #a94442 !default; 40 | $warnningColor: #8a6d3b !default; 41 | // --------------------------------------------- 42 | // 尺寸 43 | // --------------------------------------------- 44 | // 设计图尺寸,用于rem()和设置html的字体大小 45 | $designWidth: 750px !default; 46 | -------------------------------------------------------------------------------- /src/sass/utils/_variablesCustom-m.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | // --------------------------------------------- 9 | // 开关变量设置 10 | // --------------------------------------------- 11 | $lte7: false; //是否兼容ie6-7 12 | $filter: false; //是否为ie6-8开启css3滤镜兼容,常用于渐变背景 13 | $printStyleSwitch: false; //是否开启打印样式 14 | // --------------------------------------------- 15 | // font相关 16 | // --------------------------------------------- 17 | // html基础字体样式 18 | $baseFontPC: arial, \5b8b\4f53, 'Hiragino Sans GB', 'Microsoft YaHei', 19 | sans-serif; //PC端,$pageType为PC 20 | $baseFontM: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', 21 | STHeiti, 'Microsoft Yahei', Tahoma, Simsun, sans-serif; //$pageType为M 22 | // 常用字体 23 | $fontSong: \5b8b\4f53; //宋体 24 | $fontYaHei: 'Microsoft YaHei'; //微软雅黑 25 | // --------------------------------------------- 26 | // 颜色 27 | // --------------------------------------------- 28 | // 页面主要色调 29 | $mainTone: #3da4fe; 30 | $subTone: #fe6e00; 31 | // 文字颜色 32 | $mainTextColor: #666; 33 | $subTextColor: #ccc; 34 | // 边框颜色 35 | $baseBorderColor: #c7c7c7; 36 | // 按钮文字颜色 37 | $mainButtonColor: #fff; 38 | // 辅助颜色 39 | $dangerColor: #a94442; 40 | $warnningColor: #8a6d3b; 41 | // --------------------------------------------- 42 | // 尺寸 43 | // --------------------------------------------- 44 | // 设计图尺寸,用于rem()和设置html的字体大小 45 | $designWidth: 750px; 46 | -------------------------------------------------------------------------------- /src/sass/utils/_variablesCustom.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | // --------------------------------------------- 9 | // 开关变量设置 10 | // --------------------------------------------- 11 | $lte7: false; //是否兼容ie6-7 12 | $filter: false; //是否为ie6-8开启css3滤镜兼容,常用于渐变背景 13 | $printStyleSwitch: false; //是否开启打印样式 14 | // --------------------------------------------- 15 | // font相关 16 | // --------------------------------------------- 17 | // html基础字体样式 18 | $baseFontPC: arial, \5b8b\4f53, 'Hiragino Sans GB', 'Microsoft YaHei', 19 | sans-serif; //PC端,$pageType为PC 20 | $baseFontM: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', 21 | STHeiti, 'Microsoft Yahei', Tahoma, Simsun, sans-serif; //$pageType为M 22 | // 常用字体 23 | $fontSong: \5b8b\4f53; //宋体 24 | $fontYaHei: 'Microsoft YaHei'; //微软雅黑 25 | // --------------------------------------------- 26 | // 颜色 27 | // --------------------------------------------- 28 | // 页面主要色调 29 | $mainTone: #3da4fe; 30 | $subTone: #fe6e00; 31 | // 文字颜色 32 | $mainTextColor: #666; 33 | $subTextColor: #ccc; 34 | // 边框颜色 35 | $baseBorderColor: #c7c7c7; 36 | // 按钮文字颜色 37 | $mainButtonColor: #fff; 38 | // 辅助颜色 39 | $dangerColor: #a94442; 40 | $warnningColor: #8a6d3b; 41 | // --------------------------------------------- 42 | // 尺寸 43 | // --------------------------------------------- 44 | // 设计图尺寸,用于rem()和设置html的字体大小 45 | $designWidth: 750px; 46 | -------------------------------------------------------------------------------- /src/sass/vendors/_c_imgSlider.scss: -------------------------------------------------------------------------------- 1 | // ----------------------------------------------------- 2 | // Author:GuangHui 3 | // Date:2019-0320 4 | // ----------------------------------------------------- 5 | 6 | @charset "UTF-8"; 7 | 8 | .c-ImgSlider { 9 | position: relative; 10 | @at-root #{&}-list { 11 | margin: 0; 12 | padding: 0; 13 | list-style: none; 14 | position: relative; 15 | width: 100%; 16 | height: 100%; 17 | transform: translateZ(0px); 18 | z-index: 999; 19 | } 20 | @at-root #{&}-item { 21 | position: absolute; 22 | top: 0; 23 | left: 0; 24 | right: 0; 25 | bottom: 0; 26 | z-index: 99; 27 | background-position: center; 28 | background-repeat: no-repeat; 29 | background-size: cover; 30 | cursor: pointer; 31 | display: none; 32 | } 33 | @at-root #{&}-pagination { 34 | position: absolute; 35 | bottom: 10px; 36 | left: 50%; 37 | z-index: 9999; 38 | font-size: 0; 39 | } 40 | @at-root #{&}-paginationItem { 41 | display: inline-block; 42 | width: 50px; 43 | height: 4px; 44 | background-color: #fff; 45 | background-color: rgba(255, 255, 255, 0.6); 46 | transition: 0.3s; 47 | cursor: pointer; 48 | @at-root #{&} + #{&} { 49 | margin-left: 10px; 50 | } 51 | @at-root #{&}:hover { 52 | background-color: $mainTone; 53 | height: 8px; 54 | } 55 | @at-root #{&}.is-cur { 56 | background-color: $mainTone; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/store/actions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * actions.js用来定义全局的actions 3 | */ 4 | 5 | import * as types from './mutation-types' 6 | 7 | export const foo = function({ commit }, payload) { 8 | setTimeout(() => { 9 | console.log('SET_GLOBAL_TEST_OBJ', 'async') 10 | commit(types.SET_GLOBAL_TEST_OBJ, payload) 11 | }, 1000) 12 | // 处理一些异步或其他事情,然后提交 13 | } 14 | -------------------------------------------------------------------------------- /src/store/getters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * getters.js用来定义全局的getters 3 | */ 4 | 5 | export const globalTestObjName = state => state.globalTestObj.name 6 | 7 | // export const currentSong = (state) => { 8 | // return state.playlist[state.currentIndex] || {}; 9 | // } 10 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * vuex入口文件 3 | */ 4 | 5 | import Vue from 'vue' 6 | import Vuex from 'vuex' 7 | import * as actions from './actions' 8 | import * as getters from './getters' 9 | import states from './states' 10 | import mutations from './mutations' 11 | // log工具,方便查看每次提交前后的数据变化 12 | import createLogger from 'vuex/dist/logger' 13 | 14 | Vue.use(Vuex) 15 | 16 | const debug = process.env.NODE_ENV !== 'production' 17 | 18 | export default new Vuex.Store({ 19 | actions, 20 | getters, 21 | state: states, 22 | mutations, 23 | // 开发模式启用严格模式 24 | strict: debug, 25 | // 开发模式使用log工具 26 | plugins: debug ? [createLogger()] : [] 27 | }) 28 | -------------------------------------------------------------------------------- /src/store/mutation-types.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * mutation-types.js 用来定义所有的mutation类型,方便lint 3 | */ 4 | 5 | export const SET_GLOBAL_TEST_OBJ = 'SET_GLOBAL_TEST_OBJ' 6 | -------------------------------------------------------------------------------- /src/store/mutations.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * mutations.js用来定义全局的mutations 3 | */ 4 | 5 | import * as types from './mutation-types' 6 | 7 | const mutations = { 8 | [types.SET_GLOBAL_TEST_OBJ](state, testObj) { 9 | state.globalTestObj = testObj 10 | } 11 | } 12 | 13 | export default mutations 14 | -------------------------------------------------------------------------------- /src/store/states.js: -------------------------------------------------------------------------------- 1 | /** 2 | * * states.js用来定义需要使用vuex保存的全局状态 3 | */ 4 | 5 | const states = { 6 | globalTestObj: { 7 | name: 'test' 8 | } 9 | } 10 | 11 | export default states 12 | -------------------------------------------------------------------------------- /src/views/AxiosListDetailTest/AxiosListDetailTest.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 43 | -------------------------------------------------------------------------------- /src/views/ClickAreaExpandTest/ClickAreaExpandTest.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 32 | 33 | 40 | -------------------------------------------------------------------------------- /src/views/ClickOutsideTest/ClickOutsideTest.vue: -------------------------------------------------------------------------------- 1 | 10 | 30 | 38 | -------------------------------------------------------------------------------- /src/views/ConfirmTest/ConfirmTest.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 44 | -------------------------------------------------------------------------------- /src/views/DownloaderTest/DownloaderTest.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 34 | 35 | 39 | -------------------------------------------------------------------------------- /src/views/DragTest/DragTest.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 30 | 31 | 44 | -------------------------------------------------------------------------------- /src/views/EventBusTest/EventBusGrandson1.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 41 | -------------------------------------------------------------------------------- /src/views/EventBusTest/EventBusSon1.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 48 | 49 | 58 | -------------------------------------------------------------------------------- /src/views/EventBusTest/EventBusSon2.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 49 | 50 | 59 | -------------------------------------------------------------------------------- /src/views/EventBusTest/EventBusTest.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 40 | 41 | 70 | -------------------------------------------------------------------------------- /src/views/FormulaRenderTest/FormulaRenderTest.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 39 | 40 | 44 | -------------------------------------------------------------------------------- /src/views/ImgLazyLoadTest/ImgLazyLoadTest.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | 27 | -------------------------------------------------------------------------------- /src/views/InputAutoHeightTest/InputAutoHeightTest.vue: -------------------------------------------------------------------------------- 1 |